@givolt/i3-composer-agent 3.1.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/plugins/marketplace.json +1 -1
- package/.claude/commands/i3-build.md +1 -0
- package/.claude/commands/i3-code-simplify.md +1 -0
- package/.claude/commands/i3-constraints.md +1 -0
- package/.claude/commands/i3-plan.md +1 -0
- package/.claude/commands/i3-review.md +1 -0
- package/.claude/commands/i3-ship.md +1 -0
- package/.claude/commands/i3-sop.md +3 -3
- package/.claude/commands/i3-spec.md +1 -0
- package/.claude/commands/i3-test.md +1 -0
- package/.claude/commands/i3-webperf.md +1 -0
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +2 -2
- package/.gemini/commands/i3-sop.toml +3 -3
- package/README.md +44 -43
- package/bin/i3-composer-agent.cjs +4 -59
- package/bin/install.cjs +6 -14
- package/bin/native-layout.cjs +11 -2
- package/bin/native-migration.cjs +68 -28
- package/bin/retired-custom-fingerprints.json +1597 -0
- package/bin/wizard.cjs +2 -13
- package/commands/i3-sop.toml +3 -3
- package/docs/antigravity-setup.md +3 -1
- package/docs/codebuddy-setup.md +19 -76
- package/docs/codex-setup.md +10 -4
- package/docs/comparison.md +1 -1
- package/docs/copilot-cli-setup.md +4 -4
- package/docs/cursor-setup.md +1 -1
- package/docs/gemini-cli-setup.md +1 -1
- package/docs/other-hosts.md +2 -2
- package/docs/windsurf-setup.md +2 -2
- package/docs/workbuddy-setup.md +9 -16
- package/evals/README.md +10 -0
- package/evals/cases/i3-code-simplification.json +8 -0
- package/evals/cases/i3-documentation-and-adrs.json +4 -0
- package/evals/cases/i3-enterprise-sop.json +70 -32
- package/evals/cases/i3-frontend-ui-engineering.json +1 -1
- package/evals/cases/i3-security-and-hardening.json +4 -0
- package/evals/cases/i3-ui-demo.json +2 -2
- package/evals/cases/i3-using-agent-skills.json +5 -5
- package/evals/plugin/simplify-fires-on-pasted-function/graders/behavior-kept-and-explained.md +7 -0
- package/evals/plugin/simplify-fires-on-pasted-function/graders/skill-fired.md +5 -0
- package/evals/plugin/simplify-fires-on-pasted-function/prompt.md +30 -0
- package/evals/plugin/simplify-stays-quiet-on-make-it-fast/graders/not-fired.md +8 -0
- package/evals/plugin/simplify-stays-quiet-on-make-it-fast/prompt.md +20 -0
- package/evals/zh-CN/cases/i3-code-simplification.json +8 -0
- package/evals/zh-CN/cases/i3-documentation-and-adrs.json +4 -0
- package/evals/zh-CN/cases/i3-enterprise-sop.json +77 -31
- package/evals/zh-CN/cases/i3-frontend-ui-engineering.json +2 -2
- package/evals/zh-CN/cases/i3-security-and-hardening.json +4 -0
- package/evals/zh-CN/cases/i3-ui-demo.json +2 -2
- package/evals/zh-CN/cases/i3-using-agent-skills.json +6 -6
- package/hooks/SDD-CACHE.md +1 -1
- package/package.json +13 -102
- package/plugin.json +15 -2
- package/references/accessibility-checklist.md +4 -4
- package/references/performance-checklist.md +5 -4
- package/references/testing-patterns.md +2 -1
- package/scripts/floor-guard-reference-test.js +32 -0
- package/scripts/lib/execution-status.js +44 -0
- package/scripts/run-evals-test.js +157 -7
- package/scripts/run-evals.js +59 -12
- package/scripts/ui-demo-test.js +2 -2
- package/scripts/validate-artifact-paths-test.js +14 -0
- package/scripts/validate-artifact-paths.js +4 -2
- package/skills/i3-api-and-interface-design/SKILL.md +3 -1
- package/skills/i3-ci-cd-and-automation/SKILL.md +7 -4
- package/skills/i3-code-simplification/SKILL.md +3 -3
- package/skills/i3-constraint-driven-development/SKILL.md +4 -4
- package/skills/i3-constraint-driven-development/references/floor-guard.md +2 -2
- package/skills/i3-context-engineering/SKILL.md +1 -1
- package/skills/i3-debugging-and-error-recovery/SKILL.md +1 -1
- package/skills/i3-deprecation-and-migration/SKILL.md +6 -1
- package/skills/i3-documentation-and-adrs/SKILL.md +3 -2
- package/skills/i3-enterprise-sop/SKILL.md +121 -94
- package/skills/i3-enterprise-sop/references/engineering-skeleton/directory-standard.md +31 -17
- package/skills/i3-enterprise-sop/references/handoff.py +235 -135
- package/skills/i3-enterprise-sop/references/read_text.py +60 -0
- package/skills/i3-enterprise-sop/references/technical-baseline/baselines/enterprise-application-technical-baseline-v0-0-4.md +47 -47
- package/skills/i3-enterprise-sop/references/technical-baseline/readme.md +9 -118
- package/skills/i3-enterprise-sop/references/technical-baseline/templates/technical-baseline.md +8 -8
- package/skills/i3-enterprise-sop/references/{ad/templates → templates}/ad.md +57 -50
- package/skills/i3-enterprise-sop/references/{brd/templates → templates}/brd.md +23 -12
- package/skills/i3-enterprise-sop/references/{prd/templates → templates}/prd.md +84 -51
- package/skills/i3-enterprise-sop/references/{testcase/templates → templates}/testcase.md +49 -39
- package/skills/i3-frontend-ui-engineering/SKILL.md +6 -10
- package/skills/i3-idea-refine/SKILL.md +4 -2
- package/skills/i3-incremental-implementation/SKILL.md +0 -4
- package/skills/i3-performance-optimization/SKILL.md +2 -2
- package/skills/i3-security-and-hardening/references/hardening-patterns.md +5 -0
- package/skills/i3-source-driven-development/SKILL.md +3 -2
- package/skills/i3-spec-driven-development/SKILL.md +1 -1
- package/skills/i3-ui-demo/SKILL.md +3 -1
- package/skills/i3-ui-demo/references/dependencies.md +1 -1
- package/skills/i3-ui-demo/references/resources.md +1 -1
- package/skills/i3-ui-demo/scripts/dependencies.cjs +0 -3
- package/skills/i3-using-agent-skills/SKILL.md +2 -2
- package/.claude/commands/i3-prototype.md +0 -23
- package/.gemini/commands/i3-prototype.toml +0 -23
- package/commands/i3-prototype.toml +0 -23
- package/docs/upstream-repository/AGENTS.md +0 -92
- package/docs/upstream-repository/CLAUDE.md +0 -60
- package/docs/upstream-repository/CONTRIBUTING.md +0 -137
- package/docs/upstream-repository/README.md +0 -8
- package/docs/upstream-repository/gitattributes.txt +0 -1
- package/docs/upstream-repository/gitignore.txt +0 -10
- package/docs/upstream-repository/manifest.json +0 -71
- package/docs/upstream-repository/opencode-skills.link +0 -1
- package/docs/upstream-repository/skill-gap.yml +0 -80
- package/docs/upstream-repository/skills-contributing.md +0 -15
- package/docs/upstream-repository/test-plugin-install.yml +0 -167
- package/evals/cases/i3-ui-prototype.json +0 -158
- package/evals/fixtures/i3-ui-prototype/admin-list/assets/reference.css +0 -3
- package/evals/fixtures/i3-ui-prototype/admin-list/assets/reference.js +0 -8
- package/evals/fixtures/i3-ui-prototype/admin-list/capability-definition.json +0 -67
- package/evals/fixtures/i3-ui-prototype/admin-list/index.html +0 -89
- package/evals/fixtures/i3-ui-prototype/admin-list/readme.md +0 -52
- package/evals/fixtures/i3-ui-prototype/admin-list/template.json +0 -8
- package/evals/fixtures/i3-ui-prototype/business-brief.md +0 -7
- package/evals/zh-CN/cases/i3-ui-prototype.json +0 -165
- package/hooks/PROTOTYPE.md +0 -31
- package/hooks/codebuddy-upstream.cjs +0 -93
- package/hooks/i3-prototype.cjs +0 -7
- package/hooks/manage.cjs +0 -169
- package/scripts/design-provider-discovery-test.js +0 -190
- package/scripts/design-provider-test.js +0 -75
- package/scripts/enterprise-template-test.js +0 -205
- package/scripts/lib/prototype-fixture.cjs +0 -17
- package/scripts/prototype-cache-test.js +0 -55
- package/scripts/prototype-generation-entry-test.js +0 -6
- package/scripts/prototype-generation-evidence-test.js +0 -10
- package/scripts/prototype-generation-native-test.js +0 -78
- package/scripts/prototype-generation-test.js +0 -99
- package/scripts/prototype-inventory-test.js +0 -43
- package/scripts/prototype-locations-test.js +0 -79
- package/scripts/prototype-project-test.js +0 -183
- package/scripts/template-adapter-test.js +0 -155
- package/scripts/ui-prototype-binding-recovery-test.js +0 -84
- package/scripts/ui-prototype-buddy-lifecycle-test.js +0 -102
- package/scripts/ui-prototype-codebuddy-hook-test.js +0 -112
- package/scripts/ui-prototype-content-test.js +0 -123
- package/scripts/ui-prototype-dependencies-test.js +0 -226
- package/scripts/ui-prototype-devtools-test.js +0 -53
- package/scripts/ui-prototype-execution-evidence-test.js +0 -62
- package/scripts/ui-prototype-execution-gates-test.js +0 -91
- package/scripts/ui-prototype-execution-policy-test.js +0 -53
- package/scripts/ui-prototype-execution-runtime-test.js +0 -27
- package/scripts/ui-prototype-ide-source-test.js +0 -73
- package/scripts/ui-prototype-native-test.js +0 -526
- package/scripts/ui-prototype-recovery-test.js +0 -81
- package/scripts/ui-prototype-registration-test.js +0 -53
- package/scripts/ui-prototype-template-test.js +0 -261
- package/scripts/ui-prototype-test.js +0 -124
- package/scripts/ui-prototype-transcript-auto-test.js +0 -67
- package/skills/i3-enterprise-sop/references/ad/assets-manifest.json +0 -86
- package/skills/i3-enterprise-sop/references/ad/prompts/01-generate.md +0 -58
- package/skills/i3-enterprise-sop/references/ad/prompts/02-review.md +0 -54
- package/skills/i3-enterprise-sop/references/ad/prompts/03-revise.md +0 -54
- package/skills/i3-enterprise-sop/references/ad/prompts/04-recheck.md +0 -54
- package/skills/i3-enterprise-sop/references/ad/readme.md +0 -70
- package/skills/i3-enterprise-sop/references/assets-manifest.json +0 -230
- package/skills/i3-enterprise-sop/references/brd/assets-manifest.json +0 -83
- package/skills/i3-enterprise-sop/references/brd/prompts/01-generate.md +0 -51
- package/skills/i3-enterprise-sop/references/brd/prompts/02-review.md +0 -47
- package/skills/i3-enterprise-sop/references/brd/prompts/03-revise.md +0 -47
- package/skills/i3-enterprise-sop/references/brd/prompts/04-recheck.md +0 -47
- package/skills/i3-enterprise-sop/references/brd/readme.md +0 -50
- package/skills/i3-enterprise-sop/references/codebuddy-project-guide.md +0 -34
- package/skills/i3-enterprise-sop/references/controlled-handoff.md +0 -41
- package/skills/i3-enterprise-sop/references/controlled_handoff.py +0 -379
- package/skills/i3-enterprise-sop/references/engineering-skeleton/adoption.md +0 -200
- package/skills/i3-enterprise-sop/references/engineering-skeleton/catalog.json +0 -17
- package/skills/i3-enterprise-sop/references/engineering-skeleton/readme.md +0 -52
- package/skills/i3-enterprise-sop/references/handoff-contract.md +0 -196
- package/skills/i3-enterprise-sop/references/lifecycle-contract.md +0 -91
- package/skills/i3-enterprise-sop/references/plan-handoff.md +0 -73
- package/skills/i3-enterprise-sop/references/prd/assets-manifest.json +0 -109
- package/skills/i3-enterprise-sop/references/prd/prompts/01-generate.md +0 -64
- package/skills/i3-enterprise-sop/references/prd/prompts/02-review.md +0 -49
- package/skills/i3-enterprise-sop/references/prd/prompts/03-revise.md +0 -48
- package/skills/i3-enterprise-sop/references/prd/prompts/04-recheck.md +0 -47
- package/skills/i3-enterprise-sop/references/prd/readme.md +0 -137
- package/skills/i3-enterprise-sop/references/prd/template-contracts.md +0 -39
- package/skills/i3-enterprise-sop/references/prd/templates/ad.md +0 -17
- package/skills/i3-enterprise-sop/references/readme.md +0 -167
- package/skills/i3-enterprise-sop/references/recovery-contract.md +0 -65
- package/skills/i3-enterprise-sop/references/review-handoff.md +0 -105
- package/skills/i3-enterprise-sop/references/selection-handoff.md +0 -55
- package/skills/i3-enterprise-sop/references/selection_handoff.py +0 -225
- package/skills/i3-enterprise-sop/references/stages.json +0 -271
- package/skills/i3-enterprise-sop/references/technical-baseline/assets-manifest.json +0 -84
- package/skills/i3-enterprise-sop/references/template-contracts.md +0 -142
- package/skills/i3-enterprise-sop/references/testcase/assets-manifest.json +0 -91
- package/skills/i3-enterprise-sop/references/testcase/prompts/01-generate.md +0 -53
- package/skills/i3-enterprise-sop/references/testcase/prompts/02-review.md +0 -51
- package/skills/i3-enterprise-sop/references/testcase/prompts/03-revise.md +0 -49
- package/skills/i3-enterprise-sop/references/testcase/prompts/04-recheck.md +0 -51
- package/skills/i3-enterprise-sop/references/testcase/readme.md +0 -61
- package/skills/i3-enterprise-sop/references/verification/check_execution.py +0 -185
- package/skills/i3-enterprise-sop/references/verification/check_native_execution.py +0 -282
- package/skills/i3-enterprise-sop/references/verification/check_reads.py +0 -348
- package/skills/i3-enterprise-sop/references/verification/readme.md +0 -149
- package/skills/i3-enterprise-sop/references/verification/review-output.schema.json +0 -155
- package/skills/i3-enterprise-sop/references/verification/review_handoff.py +0 -329
- package/skills/i3-ui-prototype/SKILL.md +0 -256
- package/skills/i3-ui-prototype/assets/capabilities/generation.json +0 -833
- package/skills/i3-ui-prototype/assets/capabilities/management.json +0 -294
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/acceptance.json +0 -51
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/component-map.json +0 -13
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/generation-component-map.json +0 -300
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/index.html +0 -11
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/package-lock.json +0 -2298
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/package.json +0 -22
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/public/prototype-config.json +0 -6
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/App.vue +0 -136
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/components/DeviceEditor.vue +0 -111
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/config.ts +0 -19
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/content.ts +0 -28
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/domain/devices.ts +0 -50
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/domain/theme.ts +0 -25
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/main.ts +0 -18
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/style.css +0 -50
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/useDevices.ts +0 -66
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tests/devices.test.ts +0 -44
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tests/theme.test.ts +0 -26
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tsconfig.json +0 -15
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/vite.config.ts +0 -4
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/profile.json +0 -174
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/readme.md +0 -61
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/index.html +0 -11
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/package-lock.json +0 -2298
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/package.json +0 -22
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/public/prototype-config.json +0 -21
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/App.vue +0 -62
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/PrototypeShell.vue +0 -59
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/config.ts +0 -23
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/domain/presentation.ts +0 -29
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/domain/theme.ts +0 -25
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/main.ts +0 -18
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/style.css +0 -26
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tests/presentation.test.ts +0 -23
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tests/theme.test.ts +0 -26
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tsconfig.json +0 -15
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/vite.config.ts +0 -4
- package/skills/i3-ui-prototype/assets/hosts/codebuddy/profile.json +0 -17
- package/skills/i3-ui-prototype/assets/optional-skills/host-targets.json +0 -739
- package/skills/i3-ui-prototype/assets/optional-skills/sources.json +0 -27
- package/skills/i3-ui-prototype/assets/templates/catalog.js +0 -149
- package/skills/i3-ui-prototype/assets/templates/catalog.json +0 -149
- package/skills/i3-ui-prototype/assets/templates/classic-admin/manifest.json +0 -9
- package/skills/i3-ui-prototype/assets/templates/classic-admin/preset.json +0 -6
- package/skills/i3-ui-prototype/assets/templates/common/app/app.mjs +0 -89
- package/skills/i3-ui-prototype/assets/templates/common/app/config.json +0 -1
- package/skills/i3-ui-prototype/assets/templates/common/app/domain.mjs +0 -20
- package/skills/i3-ui-prototype/assets/templates/common/app/index.html +0 -17
- package/skills/i3-ui-prototype/assets/templates/common/app/serve.cjs +0 -16
- package/skills/i3-ui-prototype/assets/templates/common/app/styles.css +0 -670
- package/skills/i3-ui-prototype/assets/templates/common/app/tokens.css +0 -19
- package/skills/i3-ui-prototype/assets/templates/common/design-system/master.md +0 -20
- package/skills/i3-ui-prototype/assets/templates/common/gallery.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/common/mocks/applications.json +0 -5
- package/skills/i3-ui-prototype/assets/templates/common/requirements-map.json +0 -8
- package/skills/i3-ui-prototype/assets/templates/common/serve-gallery.cjs +0 -16
- package/skills/i3-ui-prototype/assets/templates/credits.md +0 -17
- package/skills/i3-ui-prototype/assets/templates/data-operations/manifest.json +0 -9
- package/skills/i3-ui-prototype/assets/templates/data-operations/preset.json +0 -6
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/capability-definition.json +0 -294
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/component-inventory.json +0 -707
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/design-system.md +0 -32
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/generation.json +0 -49
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/index.html +0 -534
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/manifest.json +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/offline-build.json +0 -265
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/offline.js +0 -8888
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/origin.json +0 -344
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/preset.json +0 -928
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/app.js +0 -22
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/empty.svg +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/reference-styles.json +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/result-403.svg +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/result-404.svg +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets-manifest.json +0 -334
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/baseline.json +0 -173
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/conversion.md +0 -30
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/credits.md +0 -17
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/design-tokens.json +0 -881
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/index.html +0 -28
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/licenses/@qin-ui-antdv-next-pro.txt +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/licenses/ant-design-icons.txt +0 -22
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/licenses/antdv-next.txt +0 -21
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/package.json +0 -12
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/browser-routes.json +0 -298
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/coverage.json +0 -180
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/integrity.json +0 -13
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/keyboard.json +0 -11
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/responsive.json +0 -125
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/review.md +0 -51
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/rules.log +0 -150
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/flow-editor-html.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/flow-editor-original.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/intent-create-html.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/intent-create-original.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/models-html.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/models-original.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/workbench-html.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/workbench-original.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/selection.json +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/visual-comparison.json +0 -342
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/readme.md +0 -73
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/reference.md +0 -59
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/routes.json +0 -178
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/controls.js +0 -99
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/dialogs.js +0 -54
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/dom.js +0 -264
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/forms.js +0 -47
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/icons.js +0 -41
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/layout.js +0 -47
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/router.js +0 -63
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/state.js +0 -90
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/table.js +0 -41
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/widgets.js +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentDetail.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentDetail.js +0 -36
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentEditor.js +0 -51
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentsPage.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentsPage.js +0 -48
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/CheckResults.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/CheckResults.js +0 -6
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/ResourcePicker.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/ResourcePicker.js +0 -13
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/data.js +0 -24
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/domain.js +0 -32
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/registry.js +0 -25
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/store.js +0 -85
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentClose.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentClose.js +0 -17
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentCreate.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentCreate.js +0 -66
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDecisions.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDecisions.js +0 -38
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDetail.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDetail.js +0 -66
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDocument.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDocument.js +0 -5
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHeader.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHeader.js +0 -12
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHistory.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHistory.js +0 -11
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentList.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentList.js +0 -116
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentReplan.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentReplan.js +0 -32
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentRevision.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentRevision.js +0 -49
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentSummary.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentSummary.js +0 -10
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentWorkspace.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentWorkspace.js +0 -77
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/data.js +0 -60
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/domain.js +0 -105
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/store.js +0 -212
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/AuditPanel.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/AuditPanel.js +0 -18
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelDetail.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelDetail.js +0 -23
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelEditor.js +0 -78
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelGrant.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelGrant.js +0 -55
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelReferences.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelReferences.js +0 -26
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelRelease.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelRelease.js +0 -38
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelStatus.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelStatus.js +0 -7
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTable.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTable.js +0 -72
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTester.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTester.js +0 -46
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelsPage.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelsPage.js +0 -52
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/RowActions.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/RowActions.js +0 -19
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/UsagePanel.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/UsagePanel.js +0 -30
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/data.js +0 -48
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/domain.js +0 -39
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/store.js +0 -129
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IncidentDetail.html +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IncidentDetail.js +0 -21
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IntentSource.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IntentSource.js +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationActionDialog.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationActionDialog.js +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationEntry.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationEntry.js +0 -10
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationsPage.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationsPage.js +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RepairTrack.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RepairTrack.js +0 -49
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RunDetail.html +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RunDetail.js +0 -22
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/SourceSummary.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/SourceSummary.js +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/commands.js +0 -82
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/examples.js +0 -47
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/model.js +0 -61
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/repair.js +0 -68
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/store.js +0 -55
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/types.js +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/workbench.js +0 -18
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ManagementTable.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ManagementTable.js +0 -28
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcCreateEntry.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcCreateEntry.js +0 -18
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcDetail.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcDetail.js +0 -31
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcEditor.js +0 -27
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcLifecycle.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcLifecycle.js +0 -16
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPage.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPage.js +0 -43
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPicker.html +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPicker.js +0 -34
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcProgress.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcProgress.js +0 -30
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWizard.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWizard.js +0 -67
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWorkspace.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWorkspace.js +0 -41
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcsPage.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcsPage.js +0 -31
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceEditor.js +0 -26
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceList.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceList.js +0 -70
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/data.js +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/domain.js +0 -62
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/management.js +0 -36
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/managementStore.js +0 -49
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/store.js +0 -132
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/AdminList.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/AdminList.js +0 -38
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/EffectiveGrants.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/EffectiveGrants.js +0 -11
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/GrantEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/GrantEditor.js +0 -45
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MemberEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MemberEditor.js +0 -54
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MembersPage.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MembersPage.js +0 -27
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RecordsPage.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RecordsPage.js +0 -12
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RoleEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RoleEditor.js +0 -45
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RolesPage.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RolesPage.js +0 -38
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/domain.js +0 -61
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/state.js +0 -51
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/store.js +0 -116
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseActionDialog.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseActionDialog.js +0 -45
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseDetail.html +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseDetail.js +0 -30
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseEditor.js +0 -67
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseExecution.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseExecution.js +0 -5
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleasesPage.html +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleasesPage.js +0 -60
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/commands.js +0 -157
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/model.js +0 -136
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/store.js +0 -76
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewDetail.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewDetail.js +0 -26
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewEvidence.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewEvidence.js +0 -14
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewProcess.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewProcess.js +0 -113
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewsPage.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewsPage.js +0 -62
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/commands.js +0 -97
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/model.js +0 -147
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/store.js +0 -13
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ColumnSettings.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ColumnSettings.js +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListBatchBar.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListBatchBar.js +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListDeleteDialog.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListDeleteDialog.js +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListMore.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListMore.js +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/RecordMetadata.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/RecordMetadata.js +0 -17
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/columns.js +0 -32
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/deliveryGuide.js +0 -49
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/deliveryView.js +0 -12
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/listBatch.js +0 -15
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/listSelection.js +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/policy.js +0 -68
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/session.js +0 -44
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConfirmationDialog.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConfirmationDialog.js +0 -25
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConsoleShell.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConsoleShell.js +0 -53
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/PrototypeGuide.html +0 -10
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/PrototypeGuide.js +0 -30
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ScopePage.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ScopePage.js +0 -10
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/SessionDialog.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/SessionDialog.js +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/confirmation.js +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/navigation.js +0 -19
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecDocument.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecDocument.js +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecEdit.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecEdit.js +0 -32
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHeader.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHeader.js +0 -15
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHistory.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHistory.js +0 -11
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecReview.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecReview.js +0 -57
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecWorkspace.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecWorkspace.js +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/data.js +0 -20
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/domain.js +0 -55
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/store.js +0 -151
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/ArtifactDetail.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/ArtifactDetail.js +0 -18
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskCreate.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskCreate.js +0 -40
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskDetail.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskDetail.js +0 -51
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskLaunch.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskLaunch.js +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TasksPage.html +0 -5
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TasksPage.js +0 -48
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/domain.js +0 -204
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/exampleSource.js +0 -22
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/registry.js +0 -135
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/store.js +0 -137
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/WorkbenchPage.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/WorkbenchPage.js +0 -36
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/model.js +0 -56
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/store.js +0 -15
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowCanvas.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowCanvas.js +0 -27
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowDetail.html +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowDetail.js +0 -31
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowEditor.js +0 -68
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/WorkflowsPage.html +0 -5
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/WorkflowsPage.js +0 -55
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/data.js +0 -16
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/domain.js +0 -83
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/registry.js +0 -18
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/store.js +0 -61
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/admin.css +0 -60
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/agents.css +0 -46
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/antdv.css +0 -295
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/app.css +0 -102
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/delivery.css +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/intents.css +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/native.css +0 -22
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/operations.css +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/pbc.css +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/permissions.css +0 -22
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/pro.css +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/releases.css +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/reset.css +0 -246
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/reviews.css +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/tasks.css +0 -6
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/tokens.css +0 -15
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/workbench.css +0 -61
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/workflows.css +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/admin-rules.test.js +0 -96
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/agents.test.js +0 -14
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/intent-state.test.js +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/list-batch.test.js +0 -44
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/operation-fixtures.js +0 -19
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/operation-repair.test.js +0 -14
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/operations.test.js +0 -25
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/pbc-management.test.js +0 -17
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/pbc-state.test.js +0 -24
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/permission-config.test.js +0 -23
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/permissions.test.js +0 -24
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/releases.test.js +0 -50
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/reviews.test.js +0 -36
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/runtime-forms-router.test.js +0 -28
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/runtime-state.test.js +0 -42
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/runtime-stores.test.js +0 -16
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/spec-state.test.js +0 -11
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/tasks.test.js +0 -27
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/workbench.test.js +0 -34
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/workflows.test.js +0 -16
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/convert.mjs +0 -168
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/serve.mjs +0 -7
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/styles.mjs +0 -11
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/verify.mjs +0 -24
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/serve.cjs +0 -16
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/template-inventory.json +0 -28791
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/template.json +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/usability.css +0 -44
- package/skills/i3-ui-prototype/assets/templates/gallery/index.html +0 -40
- package/skills/i3-ui-prototype/assets/templates/generation-options.js +0 -42
- package/skills/i3-ui-prototype/assets/templates/index.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/modern-workspace/manifest.json +0 -9
- package/skills/i3-ui-prototype/assets/templates/modern-workspace/preset.json +0 -6
- package/skills/i3-ui-prototype/assets/templates/presentation.html +0 -17
- package/skills/i3-ui-prototype/assets/templates/serve-gallery.cjs +0 -23
- package/skills/i3-ui-prototype/references/artifact-contract.md +0 -66
- package/skills/i3-ui-prototype/references/content-template.md +0 -81
- package/skills/i3-ui-prototype/references/enterprise-admin.md +0 -44
- package/skills/i3-ui-prototype/references/entry-contract.md +0 -71
- package/skills/i3-ui-prototype/references/execution-evidence.md +0 -51
- package/skills/i3-ui-prototype/references/expert-adapter.md +0 -76
- package/skills/i3-ui-prototype/references/framework-contract.md +0 -76
- package/skills/i3-ui-prototype/references/generation-contract.md +0 -122
- package/skills/i3-ui-prototype/references/interaction-acceptance.md +0 -169
- package/skills/i3-ui-prototype/references/legacy-native.md +0 -58
- package/skills/i3-ui-prototype/references/optional-skills.md +0 -63
- package/skills/i3-ui-prototype/references/project-layout.md +0 -92
- package/skills/i3-ui-prototype/references/template-adapters.md +0 -63
- package/skills/i3-ui-prototype/references/workflow-contract.md +0 -77
- package/skills/i3-ui-prototype/scripts/adapters/easel-html.cjs +0 -30
- package/skills/i3-ui-prototype/scripts/adapters/legacy-html.cjs +0 -28
- package/skills/i3-ui-prototype/scripts/browser-workspace.cjs +0 -72
- package/skills/i3-ui-prototype/scripts/buddy-host.cjs +0 -40
- package/skills/i3-ui-prototype/scripts/check-design-provider.cjs +0 -9
- package/skills/i3-ui-prototype/scripts/check-prototype.cjs +0 -14
- package/skills/i3-ui-prototype/scripts/codebuddy-context.cjs +0 -92
- package/skills/i3-ui-prototype/scripts/codebuddy-hook.cjs +0 -298
- package/skills/i3-ui-prototype/scripts/codebuddy-ide-source.cjs +0 -69
- package/skills/i3-ui-prototype/scripts/codebuddy-registration.cjs +0 -125
- package/skills/i3-ui-prototype/scripts/content-template.cjs +0 -98
- package/skills/i3-ui-prototype/scripts/design-provider-discovery.cjs +0 -128
- package/skills/i3-ui-prototype/scripts/enterprise-template.cjs +0 -104
- package/skills/i3-ui-prototype/scripts/execution-assertions.cjs +0 -43
- package/skills/i3-ui-prototype/scripts/execution-diagnostics.cjs +0 -91
- package/skills/i3-ui-prototype/scripts/execution-evidence.cjs +0 -177
- package/skills/i3-ui-prototype/scripts/execution-gates.cjs +0 -216
- package/skills/i3-ui-prototype/scripts/execution-policy.cjs +0 -62
- package/skills/i3-ui-prototype/scripts/execution-recovery.cjs +0 -58
- package/skills/i3-ui-prototype/scripts/execution-runtime.cjs +0 -69
- package/skills/i3-ui-prototype/scripts/generation-assets.cjs +0 -18
- package/skills/i3-ui-prototype/scripts/generation-contract.cjs +0 -214
- package/skills/i3-ui-prototype/scripts/generation-evidence.cjs +0 -50
- package/skills/i3-ui-prototype/scripts/generation-replan.cjs +0 -34
- package/skills/i3-ui-prototype/scripts/hosts/codebuddy.cjs +0 -21
- package/skills/i3-ui-prototype/scripts/init-prototype.cjs +0 -8
- package/skills/i3-ui-prototype/scripts/manage-baseline.cjs +0 -11
- package/skills/i3-ui-prototype/scripts/native-browser.cjs +0 -785
- package/skills/i3-ui-prototype/scripts/native-build.cjs +0 -91
- package/skills/i3-ui-prototype/scripts/native-command.cjs +0 -35
- package/skills/i3-ui-prototype/scripts/native-delivery.cjs +0 -104
- package/skills/i3-ui-prototype/scripts/native-devtools.cjs +0 -92
- package/skills/i3-ui-prototype/scripts/native-files.cjs +0 -44
- package/skills/i3-ui-prototype/scripts/native-pilot-lib.cjs +0 -290
- package/skills/i3-ui-prototype/scripts/native-pilot.cjs +0 -59
- package/skills/i3-ui-prototype/scripts/native-tool-name.cjs +0 -5
- package/skills/i3-ui-prototype/scripts/native-tool-result.cjs +0 -14
- package/skills/i3-ui-prototype/scripts/optional-skill-install.cjs +0 -203
- package/skills/i3-ui-prototype/scripts/project-registry.cjs +0 -126
- package/skills/i3-ui-prototype/scripts/prototype-dependencies.cjs +0 -103
- package/skills/i3-ui-prototype/scripts/prototype-hooks.cjs +0 -94
- package/skills/i3-ui-prototype/scripts/prototype-lib.cjs +0 -277
- package/skills/i3-ui-prototype/scripts/prototype-locations.cjs +0 -69
- package/skills/i3-ui-prototype/scripts/ptc-callbacks.cjs +0 -131
- package/skills/i3-ui-prototype/scripts/sync-template.cjs +0 -19
- package/skills/i3-ui-prototype/scripts/template-adapters.cjs +0 -89
- package/skills/i3-ui-prototype/scripts/template-contract.cjs +0 -407
- package/skills/i3-ui-prototype/scripts/template-inventory.cjs +0 -78
- package/skills/i3-ui-prototype/scripts/validate-result.cjs +0 -117
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TasksPage.html
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
<!-- 来源:src/tasks/TasksPage.vue;HTML / 原生 DOM 绑定,不含 Vue 运行时。 -->
|
|
2
|
-
<div class="page-heading"><div><h1>交付任务</h1><p>从一份已确认的需求,追踪到研发阶段、产物和待处理事项。</p></div><template data-component="Space" wrap=""><template data-component="Segmented" data-model-value="(view)" data-bind-options="(['列表', '看板'])" aria-label="任务展示方式"></template><template data-component="Button" type="primary" data-bind-disabled="(!session.can('task:create'))" data-on-click="(router.push('/tasks/new'))">发起交付</template></template></div><div class="task-metrics"><article><span>全部任务</span><strong>{{ (store.records.length) }}</strong></article><article><span>正在执行</span><strong>{{ (store.records.filter(t => t.status === 'running').length) }}</strong></article><article><span>等待或需处理</span><strong>{{ (store.records.filter(t => ['waiting', 'failed', 'paused', 'manual'].includes(t.status)).length) }}</strong></article><article><span>待质量 / 发布处理</span><strong>{{ (store.records.filter(t => t.status === 'ready' && hasPendingRelease(t)).length) }}</strong></article></div><section class="auth-list"><div class="auth-filters"><template data-component="Input" data-model-value="(query)" aria-label="搜索交付任务" placeholder="搜索任务、需求或阻塞原因" allow-clear=""></template><template data-component="Select" data-model-value="(project)" aria-label="任务 PBC 筛选" data-bind-options="([{ value: 'all', label: '全部可见 PBC' }, ...[...new Set(store.records.map(r => r.binding.project))].map(v => ({ value: v, label: v }))])"></template><template data-component="Select" data-model-value="(state)" aria-label="任务状态筛选" data-bind-options="([{ value: 'all', label: '全部任务状态' }, ...Object.entries(statusLabels).map(([value, label]) => ({ value, label }))])"></template><template data-component="Button" data-on-click="query = '';
|
|
3
|
-
state = 'all';
|
|
4
|
-
project = 'all';">重置</template></div><div class="auth-tools"><template data-component="ListBatchBar" data-if="(view === '列表')" data-bind-count="(selection.selected.value.length)" data-bind-allowed="(canDelete)" data-on-remove="(targets = selection.selected.value)" data-on-clear="(selection.clear)"></template><p data-else="" class="muted">{{ (filtered.length) }} 项任务 · 切换列表可选择并批量处理</p><template data-component="Space" wrap=""><template data-component="Button" data-on-click="(desc = !desc)">时间{{ (desc ? '倒序' : '正序') }}</template><template data-component="Button" data-bind-loading="(refreshing)" data-on-click="(refresh)">刷新</template><template data-component="ColumnSettings" data-if="(view === '列表')" data-bind-preferences="(prefs)"></template></template></div><template data-component="Alert" data-if="(store.notice)" type="warning" show-icon="" data-bind-title="(store.notice)"></template><template data-component="Alert" data-if="(store.scene === 'error')" type="error" show-icon="" title="交付任务加载失败" description="任务记录保留,重试不会重新创建任务。"><template data-slot="action"><template data-component="Button" data-on-click="(refresh)">重试</template></template></template><template data-else=""><template data-component="ProTable" data-if="(view === '列表')" data-bind-table="(table)" data-bind-search="(async () => { })" data-bind-control="(false)" data-bind-table-container="(false)" row-key="id" data-bind-loading="(refreshing)" 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><div data-else="" class="task-board"><section data-each="lane in (lanes)" data-bind-key="(lane.name)" class="task-lane"><h2>{{ (lane.name) }} <small>{{ (filtered.filter(t => lane.states.includes(t.status)).length) }}</small></h2><article data-each="t in (filtered.filter(t => lane.states.includes(t.status)))" data-bind-key="(t.id)" class="task-card"><div><template data-component="Tag" data-bind-color="(statusColors[t.status])">{{ (taskLabel(t)) }}</template><template data-component="ListMore" data-bind-name="(t.name)" data-bind-items="(more(t))" data-on-action="(action($event, t))"></template></div><template data-component="Button" type="link" class="task-card-name" data-on-click="(router.push('/tasks/' + t.id))">{{ (t.name) }}</template><small>{{ (t.binding.project) }} · {{ (t.code) }}</small><p>{{ (currentNode(t)?.name || '尚未启动') }} · {{ (taskProgress(t)) }}%</p><div class="task-progress-bar"><i data-bind-style="({ width: taskProgress(t) + '%' })"></i></div><p class="task-card-reason">{{ (t.reason) }}</p><small>{{ (t.owner) }} · {{ (formatDate(t.updatedAt)) }}</small></article><p data-if="(!filtered.some(t => lane.states.includes(t.status)))" class="muted">暂无任务</p></section></div><p data-if="(!filtered.length)" class="muted">没有符合条件的交付任务,可调整筛选或发起交付。</p></template><p class="muted task-list-note">仅未启动的草稿可以删除。已启动任务保留阶段与产物;发布状态由对应发布单汇总,真实运行验收仍待后续设计。</p></section><template data-component="ListDeleteDialog" data-if="(targets.length)" data-model-targets="(targets)" label="交付任务" data-bind-check="(store.checkRemove)" data-bind-submit="(store.removeMany)" data-on-close="(targets = [])" data-on-deleted="targets = [];
|
|
5
|
-
selection.clear();"></template>
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TasksPage.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { computed, ref, watch } from '../../runtime/state.js';
|
|
2
|
-
import { h } from '../../runtime/dom.js';
|
|
3
|
-
import { useRouter } from "../../runtime/router.js";
|
|
4
|
-
import { Alert, Button, Input, Select, Space, Tag, Segmented } from "../../runtime/widgets.js";
|
|
5
|
-
import { ProTable, useTable } from "../../runtime/widgets.js";
|
|
6
|
-
import { actionableReview, canReadReview, reviewStatus, stateLabels, reviewUrl } from "../reviews/model.js";
|
|
7
|
-
import { taskReleaseLabel, hasPendingRelease } from "../releases/model.js";
|
|
8
|
-
import { useTasks } from "./store.js";
|
|
9
|
-
import { statusLabels, statusColors, currentNode, taskProgress } from "./domain.js";
|
|
10
|
-
import { useSession } from "../shared/session.js";
|
|
11
|
-
import { formatDate, tenantLabel } from "../shared/policy.js";
|
|
12
|
-
import { useColumns } from "../shared/columns.js";
|
|
13
|
-
import { useListSelection } from "../shared/listSelection.js";
|
|
14
|
-
import ListMore from "../shared/ListMore.js";
|
|
15
|
-
import ColumnSettings from "../shared/ColumnSettings.js";
|
|
16
|
-
import ListBatchBar from "../shared/ListBatchBar.js";
|
|
17
|
-
import ListDeleteDialog from "../shared/ListDeleteDialog.js";
|
|
18
|
-
import { createComponent } from '../../runtime/dom.js';
|
|
19
|
-
export default createComponent({ name: 'TasksPage', propKeys: [], template: new URL('./TasksPage.html', import.meta.url).href, setup(__props, __emit) {
|
|
20
|
-
const store = useTasks(), session = useSession(), router = useRouter(), query = ref(''), state = ref('all'), project = ref('all'), desc = ref(true), refreshing = ref(false), targets = ref([]), view = ref('列表');
|
|
21
|
-
const prefs = useColumns('tasks', [{ key: 'name', label: '任务名称', locked: true }, { key: 'project', label: '所属 PBC', defaultVisible: true }, { key: 'status', label: '任务状态', defaultVisible: true }, { key: 'stage', label: '当前阶段', defaultVisible: true }, { key: 'owner', label: '负责人', defaultVisible: true }, { key: 'createdBy', label: '创建人', defaultVisible: true }, { key: 'createdAt', label: '创建时间', defaultVisible: true }, { key: 'reason', label: '等待/阻塞原因' }, { key: 'code', label: '任务编号' }, { key: 'source', label: '来源规格' }, { key: 'tenantId', label: '所属租户' }, { key: 'createdDept', label: '创建部门' }, { key: 'updatedBy', label: '修改人' }, { key: 'updatedAt', label: '修改时间' }, { key: 'recordVersion', label: '记录版本' }, { key: 'actions', label: '操作', locked: true }]);
|
|
22
|
-
const canDelete = computed(() => session.can('task:delete'));
|
|
23
|
-
function remove(r) { targets.value = [{ id: r.id, name: r.name, recordVersion: r.recordVersion }]; }
|
|
24
|
-
const currentReview = (t) => canReadReview(session.actor, t) ? actionableReview(t) : undefined;
|
|
25
|
-
const taskLabel = (t) => { const r = currentReview(t); return taskReleaseLabel(t, session.actor) || (r ? stateLabels[reviewStatus(t, r)] : statusLabels[t.status]); };
|
|
26
|
-
function more(r) { return [{ key: 'release', label: '门禁与发布记录', disabled: !canReadReview(session.actor, r) }, { key: 'review', label: '质量与评审记录', disabled: !canReadReview(session.actor, r) }, { key: 'detail', label: '查看详情' }, { key: 'artifacts', label: '查看产物', disabled: !session.can('artifact:view', r.tenantId, r.binding.pbcId) || !r.artifacts.length }, { key: 'records', label: '操作记录', disabled: !session.can('task:audit', r.tenantId, r.binding.pbcId) }, { key: 'delete', label: '删除草稿', danger: true, disabled: !session.can('task:delete', r.tenantId, r.binding.pbcId) }]; }
|
|
27
|
-
function action(key, r) { if (key === 'release') {
|
|
28
|
-
router.push('/releases?task=' + r.id);
|
|
29
|
-
return;
|
|
30
|
-
} if (key === 'delete')
|
|
31
|
-
remove(r);
|
|
32
|
-
else if (key === 'review')
|
|
33
|
-
router.push(currentReview(r) ? reviewUrl(r.id, currentReview(r).id) : '/reviews?task=' + r.id);
|
|
34
|
-
else
|
|
35
|
-
router.push('/tasks/' + r.id + (key === 'artifacts' ? '?tab=artifacts' : key === 'records' ? '?tab=records' : '')); }
|
|
36
|
-
function actions(r) { return h('div', { class: 'row-actions' }, [h(Button, { type: 'link', disabled: r.status === 'draft' && !session.can('task:edit', r.tenantId, r.binding.pbcId), onClick: () => router.push('/tasks/' + r.id + (r.status === 'draft' ? '/edit' : '')) }, () => r.status === 'draft' ? '编辑' : '进度'), h(ListMore, { name: r.name, items: more(r), onAction: (k) => action(k, r) })]); }
|
|
37
|
-
const table = useTable({ pageParam: { current: 1, pageSize: 5, total: 0 }, columns: prefs.choices.map(c => ({ key: c.key, title: c.label, dataIndex: c.key, width: c.key === 'name' ? 240 : c.key === 'stage' ? 160 : c.key === 'actions' ? 130 : c.key.endsWith('At') ? 165 : c.key === 'reason' ? 250 : 110, fixed: c.key === 'actions' ? 'right' : undefined, ...(c.key === 'name' ? { render: (_, row) => { const r = row; return h('div', [h(Button, { type: 'link', class: 'agent-name', onClick: () => router.push('/tasks/' + r.id) }, () => r.name), h('small', { class: 'agent-code' }, () => r.code + (r.example ? ' · 预置样例' : ''))]); } } : c.key === 'actions' ? { render: (_, r) => actions(r) } : c.key === 'status' ? { render: (_, r) => h(Tag, { color: statusColors[r.status] }, () => taskLabel(r)) } : c.key === 'stage' ? { render: (_, r) => currentNode(r)?.name || '尚未启动' } : c.key === 'project' ? { render: (_, r) => r.binding.project } : c.key === 'source' ? { render: (_, r) => r.binding.spec.source.code + ' · 规格 v' + r.binding.spec.number } : c.key === 'tenantId' ? { render: (v) => tenantLabel(String(v)) } : c.key.endsWith('At') ? { render: (v) => formatDate(String(v)) } : {}) })) });
|
|
38
|
-
const columns = new Map(table.columns.value.map(c => [c.key, c]));
|
|
39
|
-
watch(prefs.keys, keys => table.columns.value = keys.map(k => columns.get(k)).filter(Boolean), { immediate: true });
|
|
40
|
-
const filtered = computed(() => store.scene === 'empty' ? [] : store.records.filter(r => (r.name + r.code + r.binding.spec.source.title + r.reason).toLowerCase().includes(query.value.trim().toLowerCase()) && (state.value === 'all' || r.status === state.value) && (project.value === 'all' || r.binding.project === project.value)).sort((a, b) => desc.value ? b.createdAt.localeCompare(a.createdAt) : a.createdAt.localeCompare(b.createdAt)));
|
|
41
|
-
watch([filtered, () => table.pageParam.current, () => table.pageParam.pageSize], () => { const size = table.pageParam.pageSize || 5, max = Math.max(1, Math.ceil(filtered.value.length / size)); if ((table.pageParam.current || 1) > max)
|
|
42
|
-
table.setPageParam({ current: max }); const start = ((table.pageParam.current || 1) - 1) * size; table.dataSource.value = filtered.value.slice(start, start + size); table.setPageParam({ total: filtered.value.length }); }, { immediate: true });
|
|
43
|
-
const selection = useListSelection(table.dataSource, computed(() => JSON.stringify([session.key, query.value, state.value, project.value, desc.value, view.value, table.pageParam.current, table.pageParam.pageSize])), canDelete, r => r.name);
|
|
44
|
-
watch([query, state, project], () => table.setPageParam({ current: 1 }));
|
|
45
|
-
const lanes = [{ name: '待开始 / 确认', states: ['draft', 'waiting'] }, { name: '执行中', states: ['running'] }, { name: '需要处理', states: ['failed', 'paused', 'manual'] }, { name: '质量与发布', states: ['ready'] }];
|
|
46
|
-
async function refresh() { selection.clear(); refreshing.value = true; await new Promise(r => setTimeout(r, 200)); store.scene = 'normal'; refreshing.value = false; }
|
|
47
|
-
return { computed, ref, watch, h, useRouter, Alert, Button, Input, Select, Space, Tag, Segmented, ProTable, useTable, actionableReview, canReadReview, reviewStatus, stateLabels, reviewUrl, taskReleaseLabel, hasPendingRelease, useTasks, statusLabels, statusColors, currentNode, taskProgress, useSession, formatDate, tenantLabel, useColumns, useListSelection, ListMore, ColumnSettings, ListBatchBar, ListDeleteDialog, store, session, router, query, state, project, desc, refreshing, targets, view, prefs, canDelete, remove, currentReview, taskLabel, more, action, actions, table, columns, filtered, selection, lanes, refresh };
|
|
48
|
-
} });
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/domain.js
DELETED
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
import { metadata } from "../shared/policy.js";
|
|
2
|
-
import { sections } from "../specs/domain.js";
|
|
3
|
-
export const clone = (v) => JSON.parse(JSON.stringify(v));
|
|
4
|
-
export const statusLabels = { draft: '草稿', running: '进行中', waiting: '待人工确认', failed: '需处理', paused: '已暂停', manual: '人工接管中', ready: '待后续发布确认' };
|
|
5
|
-
export const statusColors = { draft: 'default', running: 'blue', waiting: 'orange', failed: 'red', paused: 'default', manual: 'purple', ready: 'cyan' };
|
|
6
|
-
export const currentStage = (t) => t.stages.find(s => s.nodeId === t.currentId);
|
|
7
|
-
export const currentNode = (t) => t.binding.flow.body.nodes.find(n => n.id === t.currentId);
|
|
8
|
-
export const latestArtifact = (t, kind) => t.artifacts.find(a => a.kind === kind)?.versions.at(-1);
|
|
9
|
-
export function taskProgress(t) { const stages = t.stages.filter(s => !(t.releases?.some(r => !r.isDeleted) ? ['archive'] : ['publish', 'archive']).includes(t.binding.flow.body.nodes.find(n => n.id === s.nodeId).kind)); return Math.round(stages.filter(s => s.state === 'done' || s.state === 'skipped').length / stages.length * 100); }
|
|
10
|
-
export function taskEvent(t, actor, action, detail, at = new Date().toISOString()) { t.events.push({ id: crypto.randomUUID(), at, actor, action, detail, stageId: t.currentId, iteration: t.reworks }); }
|
|
11
|
-
export function newTask(binding, actor, name, note = '', at = new Date().toISOString()) {
|
|
12
|
-
if (!name.trim() || name.length > 80)
|
|
13
|
-
throw Error('请填写 1–80 字的任务名称。');
|
|
14
|
-
if (note.length > 1000)
|
|
15
|
-
throw Error('交付说明最多 1000 字。');
|
|
16
|
-
const id = crypto.randomUUID(), t = { ...metadata(actor, at, binding.tenantId), id, name: name.trim(), code: 'DEL-' + id.slice(0, 8).toUpperCase(), owner: actor.name, note, binding: clone(binding), status: 'draft', currentId: '', stages: binding.flow.body.nodes.map(n => ({ nodeId: n.id, state: 'pending', attempts: 0, detail: '尚未执行' })), artifacts: [], events: [], reason: '草稿尚未启动', reworks: 0, retryLimit: 2, prototypeApproved: false, checksPassed: false, reviewApproved: false, example: false };
|
|
17
|
-
taskEvent(t, actor.name, '创建草稿', '已保留来源与所选流程,启动前再次核对。', at);
|
|
18
|
-
return t;
|
|
19
|
-
}
|
|
20
|
-
export function artifact(t, kind, name, content, result = 'info', by = '交付引擎(模拟)') {
|
|
21
|
-
let a = t.artifacts.find(a => a.kind === kind);
|
|
22
|
-
if (!a) {
|
|
23
|
-
a = { id: kind, name, kind, versions: [] };
|
|
24
|
-
t.artifacts.push(a);
|
|
25
|
-
}
|
|
26
|
-
const inputs = t.artifacts.filter(x => x !== a && x.versions.length).map(x => ({ id: x.id, version: x.versions.at(-1).number }));
|
|
27
|
-
a.versions.push({ number: (a.versions.at(-1)?.number || 0) + 1, stageId: t.currentId || 'source', taskId: t.id, at: new Date().toISOString(), by, content, result, iteration: t.reworks, inputs });
|
|
28
|
-
}
|
|
29
|
-
export function enter(t, id) {
|
|
30
|
-
const node = t.binding.flow.body.nodes.find(n => n.id === id), stage = t.stages.find(s => s.nodeId === id);
|
|
31
|
-
if (!node || !stage)
|
|
32
|
-
throw Error('流程连线没有有效的目标节点。');
|
|
33
|
-
t.currentId = id;
|
|
34
|
-
stage.state = 'active';
|
|
35
|
-
stage.startedAt = new Date().toISOString();
|
|
36
|
-
stage.detail = '等待模拟事件';
|
|
37
|
-
t.status = 'running';
|
|
38
|
-
t.reason = '等待执行:' + node.name;
|
|
39
|
-
if (node.gate === 'production' || node.kind === 'publish') {
|
|
40
|
-
const v = latestArtifact(t, 'verify'), code = latestArtifact(t, 'code');
|
|
41
|
-
if (!t.prototypeApproved || !t.checksPassed || v?.result !== 'pass' || v.iteration !== t.reworks || !v.inputs.some(i => i.id === 'code' && i.version === code?.number))
|
|
42
|
-
throw Error('缺少针对本轮产物的有效独立验证,不能进入发布确认。');
|
|
43
|
-
}
|
|
44
|
-
if (node.kind === 'human') {
|
|
45
|
-
t.status = node.gate === 'production' ? 'ready' : 'waiting';
|
|
46
|
-
t.reason = node.gate === 'production' ? '本包演示至此:产物待后续质量与发布确认,尚未发布。' : '请核对绑定规格和交互原型,再由获授权的人确认。';
|
|
47
|
-
stage.detail = t.reason;
|
|
48
|
-
}
|
|
49
|
-
if (node.kind === 'publish' || node.kind === 'archive') {
|
|
50
|
-
t.status = 'ready';
|
|
51
|
-
t.reason = '生产发布与交付归档在后续原型中处理;当前未执行。';
|
|
52
|
-
stage.detail = t.reason;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
function next(t, n) {
|
|
56
|
-
const edges = t.binding.flow.body.edges.filter(e => e.from === n.id);
|
|
57
|
-
const condition = n.condition === 'checks.passed' ? t.checksPassed : t.reviewApproved;
|
|
58
|
-
const edge = n.kind === 'branch' ? edges.find(e => e.label === (condition ? '满足' : '不满足')) : edges[0];
|
|
59
|
-
if (!edge)
|
|
60
|
-
throw Error('流程缺少下一阶段连线,不能继续。');
|
|
61
|
-
if (n.kind === 'branch') {
|
|
62
|
-
taskEvent(t, '交付引擎(模拟)', '条件分支', `${n.condition} = ${condition};选择「${edge.label}」。`);
|
|
63
|
-
const reachable = (id, seen = new Set()) => { if (seen.has(id))
|
|
64
|
-
return seen; seen.add(id); t.binding.flow.body.edges.filter(e => e.from === id).forEach(e => reachable(e.to, seen)); return seen; };
|
|
65
|
-
const chosen = reachable(edge.to);
|
|
66
|
-
for (const other of edges.filter(e => e !== edge))
|
|
67
|
-
for (const id of reachable(other.to))
|
|
68
|
-
if (!chosen.has(id)) {
|
|
69
|
-
const stage = t.stages.find(s => s.nodeId === id);
|
|
70
|
-
if (stage?.state === 'pending') {
|
|
71
|
-
stage.state = 'skipped';
|
|
72
|
-
stage.detail = '未命中本次分支';
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
enter(t, edge.to);
|
|
77
|
-
}
|
|
78
|
-
export function startTask(t, actor) {
|
|
79
|
-
if (t.status !== 'draft')
|
|
80
|
-
throw Error('该任务已经启动,请查看原任务,避免重复发起。');
|
|
81
|
-
const start = t.binding.flow.body.nodes.find(n => n.kind === 'start');
|
|
82
|
-
if (!start)
|
|
83
|
-
throw Error('缺少开始节点。');
|
|
84
|
-
t.startedAt = new Date().toISOString();
|
|
85
|
-
t.currentId = 'source';
|
|
86
|
-
artifact(t, 'spec', '需求规格', sections.map(section => section.label + '\n' + t.binding.spec.content[section.key]).join('\n\n'), 'info', t.binding.spec.confirmedBy || '演示样例');
|
|
87
|
-
artifact(t, 'prototype', '交互原型评审包', '交互样例 v1(仅本地预览)\n\n报修受理 → 核对地址和描述 → 获取建议及依据 → 获授权的人确认派单。\n\n必须展示:信息不足、缺少依据、无权限、建议版本变化与重复确认。\n页面参考绑定规格 pages / acceptance;此文本只是评审输入,确认前须阅读任务中的交互示意。');
|
|
88
|
-
taskEvent(t, actor, '启动任务', '固定规格 v' + t.binding.spec.number + ' / 交付流程 v' + t.binding.flow.number + ' / Agent 与模型引用版本。');
|
|
89
|
-
enter(t, start.id);
|
|
90
|
-
}
|
|
91
|
-
export function approveTask(t, actor, artifactVersion, note) {
|
|
92
|
-
const n = currentNode(t);
|
|
93
|
-
if (t.status !== 'waiting' || n?.kind !== 'human' || n.gate === 'production')
|
|
94
|
-
throw Error('当前阶段不接受此确认。');
|
|
95
|
-
if (!note.trim())
|
|
96
|
-
throw Error('请填写核对说明。');
|
|
97
|
-
if (latestArtifact(t, 'prototype')?.number !== artifactVersion)
|
|
98
|
-
throw Error('原型产物已变化,请重新核对后确认。');
|
|
99
|
-
t.prototypeApproved = true;
|
|
100
|
-
t.reviewApproved = true;
|
|
101
|
-
const s = currentStage(t);
|
|
102
|
-
s.state = 'done';
|
|
103
|
-
s.finishedAt = new Date().toISOString();
|
|
104
|
-
s.detail = actor + ' 已确认原型 v' + artifactVersion;
|
|
105
|
-
taskEvent(t, actor, '确认交互原型', '规格 v' + t.binding.spec.number + ' / 原型 v' + artifactVersion + ':' + note);
|
|
106
|
-
next(t, n);
|
|
107
|
-
}
|
|
108
|
-
export function advanceTask(t, outcome = 'pass') {
|
|
109
|
-
if (t.status !== 'running')
|
|
110
|
-
throw Error('当前任务不在可推进状态。');
|
|
111
|
-
const n = currentNode(t), s = currentStage(t);
|
|
112
|
-
if (!n || !s)
|
|
113
|
-
throw Error('当前阶段不存在。');
|
|
114
|
-
if (['human', 'publish', 'archive'].includes(n.kind))
|
|
115
|
-
throw Error('人工确认和生产发布不能由演示推进绕过。');
|
|
116
|
-
if (['agent', 'loop', 'tool', 'verify'].includes(n.kind) && !t.prototypeApproved)
|
|
117
|
-
throw Error('尚未确认交互原型,不能执行实现或验证。');
|
|
118
|
-
s.attempts++;
|
|
119
|
-
const agent = t.binding.agents.find(a => a.config.id === n.agentId), by = agent?.config.name + '(模拟)';
|
|
120
|
-
if (n.kind === 'agent' || n.kind === 'loop') {
|
|
121
|
-
if (t.approvedDesignVersion !== latestArtifact(t, 'design')?.number || !t.approvedDesignVersion)
|
|
122
|
-
artifact(t, 'design', '实现设计说明', `设计示例 · 第 ${t.reworks + 1} 轮\n绑定规格 v${t.binding.spec.number}\n\n输入:居民报修文本;输出:分类、建议班组、证据引用。\n模型仅生成建议;确认与派单由带权限、租户和幂等控制的业务服务处理。\nFR-004 → 主管确认接口必须绑定建议版本。\nFR-005 → 重复操作先查询已有派单结果。\n实际实现、接口契约与测试尚未开发。`, 'info', by);
|
|
123
|
-
artifact(t, 'code', '代码变更', `变更示例 · 第 ${t.reworks + 1} 轮(未提交仓库)\n\n+ requirePermission("workorder:confirm", tenant, building);\n+ assertSuggestionVersion(request.suggestionVersion);\n${t.reworks ? '+ return dispatchOnce(request.idempotencyKey, confirmedSuggestion);' : '- return dispatch(confirmedSuggestion);\n+ // 待验证:重复确认与响应丢失的处理。'}\n\n示意片段仅用于原型评审,不能直接投产。`, outcome === 'fail' ? 'fail' : 'info', by);
|
|
124
|
-
}
|
|
125
|
-
if (n.kind === 'loop' && outcome === 'pass') {
|
|
126
|
-
t.checksPassed = true;
|
|
127
|
-
artifact(t, 'test', '质量检查报告', '有限修复子流程内的复检(模拟)\n代码 v' + latestArtifact(t, 'code')?.number + '\n示例通过,仍须独立验证。', 'pass', by);
|
|
128
|
-
}
|
|
129
|
-
if (n.kind === 'tool') {
|
|
130
|
-
t.checksPassed = outcome === 'pass';
|
|
131
|
-
artifact(t, n.tool === 'ci-check' ? 'test' : 'tool', n.tool === 'ci-check' ? '质量检查报告' : '工具结果', `工具执行示例:${n.tool}\n代码 v${latestArtifact(t, 'code')?.number || '—'}\n${outcome === 'pass' ? '示例检查通过;并非真实 CI 运行结果。' : '模拟失败:检查服务超时;已有输入和产物仍保留。'}\n验收映射:AC-001.1 信息不足;AC-002.1 授权范围;AC-003.1/2 确认版本与重复请求。`, outcome, '项目工具(模拟)');
|
|
132
|
-
}
|
|
133
|
-
if (n.kind === 'verify') {
|
|
134
|
-
if (!t.checksPassed)
|
|
135
|
-
throw Error('需要本轮质量检查通过后再独立验证。');
|
|
136
|
-
if (t.binding.flow.body.nodes.some(x => ['agent', 'loop'].includes(x.kind) && x.agentId === n.agentId))
|
|
137
|
-
throw Error('验证 Agent 不能同时实现或修复本任务。');
|
|
138
|
-
artifact(t, 'verify', '独立验证报告', `独立验证示例 · 代码 v${latestArtifact(t, 'code')?.number}\n规格 v${t.binding.spec.number} / 第 ${t.reworks + 1} 轮\n${outcome === 'pass' ? '示例结论:本轮证据已对照,等待后续人工质量与发布确认。' : '示例问题:AC-003.2 响应丢失后重复确认,仍可能重复派单。修复后须重新运行质量检查与独立验证。'}\n执行者:${agent?.config.name},与实现 Agent 分离。此处没有启动真实独立上下文。`, outcome, by);
|
|
139
|
-
}
|
|
140
|
-
s.finishedAt = new Date().toISOString();
|
|
141
|
-
const handlesCheckResult = n.kind === 'tool' && n.tool === 'ci-check' && t.binding.flow.body.edges.some(e => e.from === n.id && t.binding.flow.body.nodes.some(x => x.id === e.to && x.kind === 'branch' && x.condition === 'checks.passed'));
|
|
142
|
-
if (outcome === 'fail' && !handlesCheckResult && !['start', 'branch'].includes(n.kind)) {
|
|
143
|
-
s.state = 'failed';
|
|
144
|
-
s.detail = n.kind === 'verify' ? '独立验证发现重复派单问题(模拟)' : '阶段执行失败(模拟),可在原任务处理';
|
|
145
|
-
t.status = 'failed';
|
|
146
|
-
t.reason = s.detail;
|
|
147
|
-
taskEvent(t, '交付引擎(模拟)', '阶段失败', s.detail);
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
s.state = 'done';
|
|
151
|
-
s.detail = outcome === 'fail' ? '检查未通过,转条件分支处理(模拟)' : '已完成(模拟)';
|
|
152
|
-
taskEvent(t, '交付引擎(模拟)', '阶段完成', n.name);
|
|
153
|
-
next(t, n);
|
|
154
|
-
}
|
|
155
|
-
export const retryBudget = (t) => currentNode(t)?.kind === 'loop' ? Math.min(t.retryLimit, currentNode(t)?.limit || 1) : t.retryLimit;
|
|
156
|
-
export function retryTask(t, actor, note) {
|
|
157
|
-
if (t.status !== 'failed')
|
|
158
|
-
throw Error('只有失败阶段可以重试或返工。');
|
|
159
|
-
if (!note.trim())
|
|
160
|
-
throw Error('请填写处理说明。');
|
|
161
|
-
const n = currentNode(t), limit = retryBudget(t);
|
|
162
|
-
if (t.reworks >= limit)
|
|
163
|
-
throw Error('已达到本原型的有限处理次数,请人工接管。');
|
|
164
|
-
t.reworks++;
|
|
165
|
-
if (n.kind === 'verify') {
|
|
166
|
-
const build = t.binding.flow.body.nodes.find(x => ['agent', 'loop'].includes(x.kind));
|
|
167
|
-
if (!build)
|
|
168
|
-
throw Error('没有可返工的实现阶段。');
|
|
169
|
-
const reset = (id, seen = new Set()) => { if (seen.has(id))
|
|
170
|
-
return; seen.add(id); const s = t.stages.find(s => s.nodeId === id); s.state = 'pending'; s.detail = '待本轮重新执行'; delete s.finishedAt; t.binding.flow.body.edges.filter(e => e.from === id).forEach(e => reset(e.to, seen)); };
|
|
171
|
-
reset(build.id);
|
|
172
|
-
t.checksPassed = false;
|
|
173
|
-
enter(t, build.id);
|
|
174
|
-
}
|
|
175
|
-
else
|
|
176
|
-
enter(t, n.id);
|
|
177
|
-
taskEvent(t, actor, n.kind === 'verify' ? '发起返工' : '重试阶段', `第 ${t.reworks}/${limit} 次:${note};旧产物保留。`);
|
|
178
|
-
}
|
|
179
|
-
export function controlTask(t, action, actor, note) {
|
|
180
|
-
if (t.releases?.some(r => !r.isDeleted && r.startedAt))
|
|
181
|
-
throw Error('此任务已进入发布,请从门禁与发布处理暂停、恢复或回滚。');
|
|
182
|
-
if (!note.trim())
|
|
183
|
-
throw Error('请填写操作原因。');
|
|
184
|
-
if (action === 'resume') {
|
|
185
|
-
if (!['paused', 'manual'].includes(t.status) || !t.previousStatus)
|
|
186
|
-
throw Error('当前任务无需恢复。');
|
|
187
|
-
t.status = t.previousStatus;
|
|
188
|
-
delete t.previousStatus;
|
|
189
|
-
t.reason = currentStage(t)?.detail || '继续当前阶段';
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
if (t.status === 'draft' || (t.status === 'ready' && action !== 'takeover') || (action === 'pause' && !['running', 'waiting'].includes(t.status)) || (action === 'takeover' && t.status === 'manual'))
|
|
193
|
-
throw Error('当前状态不能执行此操作。');
|
|
194
|
-
if (t.status !== 'paused')
|
|
195
|
-
t.previousStatus = t.status;
|
|
196
|
-
t.status = action === 'pause' ? 'paused' : 'manual';
|
|
197
|
-
if (action === 'takeover')
|
|
198
|
-
t.owner = actor;
|
|
199
|
-
t.reason = note;
|
|
200
|
-
}
|
|
201
|
-
taskEvent(t, actor, { pause: '暂停任务', resume: '恢复任务', takeover: '人工接管' }[action], note + ';保留阶段和产物,不代替验证或批准。');
|
|
202
|
-
}
|
|
203
|
-
export function assertTaskRemovable(t) { if (t.startedAt || t.status !== 'draft')
|
|
204
|
-
throw Error('任务已启动,执行记录与产物须保留;仅草稿可删除。'); }
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { actors } from "../shared/policy.js";
|
|
2
|
-
import { seedIntents } from "../intents/data.js";
|
|
3
|
-
import { generatedContent, generatedDecisions } from "../specs/data.js";
|
|
4
|
-
import { newSpec, appendVersion, sourceOf } from "../specs/domain.js";
|
|
5
|
-
import { seedPbcs } from "../pbc/data.js";
|
|
6
|
-
import { makeJob } from "../pbc/domain.js";
|
|
7
|
-
export function exampleSource(intentId = 'seed-spec-heating') {
|
|
8
|
-
const intent = seedIntents().find(i => i.id === intentId), actor = actors.find(a => a.id === 'complete'), at = '2026-09-11T10:00:00.000Z';
|
|
9
|
-
let spec = newSpec(intent, actor, at);
|
|
10
|
-
const decisions = generatedDecisions().map(d => ({ ...d, answer: d.options[0], reason: '预置演示样例:仅用隔离样本,不代表真实用户决定。', resolvedBy: '演示样例', resolvedAt: at }));
|
|
11
|
-
spec = appendVersion(spec, sourceOf(intent), generatedContent(intent), decisions, 'PT-04 预置样例', actor, at);
|
|
12
|
-
spec.id = 'example-spec-heating';
|
|
13
|
-
Object.assign(spec.versions[0], { confirmedBy: '演示样例(预置)', confirmedAt: at });
|
|
14
|
-
const job = makeJob(intent, spec, actor, seedPbcs()[0]);
|
|
15
|
-
job.id = 'example-pbc-heating';
|
|
16
|
-
job.status = 'done';
|
|
17
|
-
job.steps.forEach(s => { s.state = 'done'; s.detail = '预置归属演示,未创建真实工程'; });
|
|
18
|
-
job.events = [{ at, actor: '演示样例', text: '预置供热工单 PBC 归属,供任务主线评审使用' }];
|
|
19
|
-
return { intent, spec, job };
|
|
20
|
-
}
|
|
21
|
-
export const seedTaskSpecs = () => { const created = exampleSource('seed-pbc-create').spec; created.id = 'example-spec-pbc-create'; return [exampleSource().spec, created]; };
|
|
22
|
-
export const seedTaskJobs = () => [exampleSource().job];
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/registry.js
DELETED
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import { ref } from '../../runtime/state.js';
|
|
2
|
-
import { actors } from "../shared/policy.js";
|
|
3
|
-
import { seedFlows } from "../workflows/data.js";
|
|
4
|
-
import { seedAgents } from "../agents/data.js";
|
|
5
|
-
import { exampleSource } from "./exampleSource.js";
|
|
6
|
-
import { newTask, startTask, advanceTask, approveTask, controlTask } from "./domain.js";
|
|
7
|
-
const storage = 'i3-prototype-antdv-tasks-v010';
|
|
8
|
-
export function seedTasks() {
|
|
9
|
-
const { spec, job } = exampleSource(), flow = seedFlows()[0], actor = actors[0];
|
|
10
|
-
const binding = { intentId: spec.intentId, spec: spec.versions[0], specRecordVersion: spec.recordVersion, pbcId: job.pbc.id, project: job.pbc.name, tenantId: job.tenantId, flowId: flow.id, flowRecordVersion: flow.recordVersion, flow: flow.versions[0], agents: seedAgents().filter(a => ['agent-1', 'agent-2'].includes(a.id)).map(config => ({ config, model: { id: 'demo-1', name: '通用对话模型', version: 1 } })) };
|
|
11
|
-
return ['AI 智能分诊 · 原型待确认', 'AI 智能分诊 · 验证问题处理', 'AI 智能分诊 · 暂停检查', 'AI 智能分诊 · 待后续确认', 'AI 智能分诊 · 交付草稿', 'AI 智能分诊 · 备用草稿', 'AI 智能分诊 · A 档机器检查', 'AI 智能分诊 · 敏感停点处理'].map((name, i) => {
|
|
12
|
-
const t = newTask(binding, actor, name, '预置任务样例;所有阶段和产物均为模拟。', `2026-09-11T10:0${i}:00.000Z`);
|
|
13
|
-
t.id = 'task-example-' + i;
|
|
14
|
-
t.code = 'DEL-20260911-00' + (i + 1);
|
|
15
|
-
t.example = true;
|
|
16
|
-
t.reviewPolicy = { grade: i === 6 ? 'A' : i === 7 ? 'C' : 'B', humanQuality: i !== 6, veto: i === 7, reason: i === 6 ? '预置A档样例:当前质量点无额外人工批准;生产发布仍需人工。' : i === 7 ? '预置C档样例:存在敏感停点,不能自动或人工一键跳过。' : '预置B档交付验收样例:保留当前人工确认点;不据此配置其他任务。' };
|
|
17
|
-
if (i === 4 || i === 5)
|
|
18
|
-
return t;
|
|
19
|
-
startTask(t, '演示样例');
|
|
20
|
-
advanceTask(t);
|
|
21
|
-
if (i === 0)
|
|
22
|
-
return t;
|
|
23
|
-
approveTask(t, '演示样例', 1, '预置确认,用于演示后续阶段,不代表用户已认可原型。');
|
|
24
|
-
advanceTask(t);
|
|
25
|
-
if (i === 2) {
|
|
26
|
-
controlTask(t, 'pause', '陈敏', '等待检查窗口(预置演示)');
|
|
27
|
-
return t;
|
|
28
|
-
}
|
|
29
|
-
advanceTask(t);
|
|
30
|
-
advanceTask(t, i === 1 ? 'fail' : 'pass');
|
|
31
|
-
return t;
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
export const taskRecords = ref(seedTasks());
|
|
35
|
-
export const taskReadError = ref('');
|
|
36
|
-
try {
|
|
37
|
-
const saved = localStorage.getItem(storage);
|
|
38
|
-
if (saved) {
|
|
39
|
-
const rows = JSON.parse(saved);
|
|
40
|
-
if (!Array.isArray(rows))
|
|
41
|
-
throw Error();
|
|
42
|
-
taskRecords.value = rows;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
catch {
|
|
46
|
-
taskReadError.value = '交付任务本地数据读取失败,已加载预置样例;不会自动覆盖原数据。';
|
|
47
|
-
}
|
|
48
|
-
export function commitTasks(rows, expected) {
|
|
49
|
-
let next = rows;
|
|
50
|
-
try {
|
|
51
|
-
if (expected) {
|
|
52
|
-
const raw = localStorage.getItem(storage);
|
|
53
|
-
if (raw) {
|
|
54
|
-
const fresh = JSON.parse(raw);
|
|
55
|
-
if (!Array.isArray(fresh))
|
|
56
|
-
throw Error('本地任务数据无法解析,请先重新加载核对。');
|
|
57
|
-
const before = fresh.find(t => t.id === expected.id);
|
|
58
|
-
if (!before || before.isDeleted || before.recordVersion !== expected.version) {
|
|
59
|
-
taskRecords.value = fresh;
|
|
60
|
-
throw Error('任务已在其他页面更新,请核对最新版本;本次输入保留。');
|
|
61
|
-
}
|
|
62
|
-
const changed = rows.find(t => t.id === expected.id);
|
|
63
|
-
next = [changed, ...fresh.filter(t => t.id !== expected.id)];
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
localStorage.setItem(storage, JSON.stringify(next));
|
|
67
|
-
}
|
|
68
|
-
catch (error) {
|
|
69
|
-
throw Error(error instanceof Error && /更新|解析/.test(error.message) ? error.message : '浏览器保存失败,操作未提交;请保留输入并重试。');
|
|
70
|
-
}
|
|
71
|
-
taskRecords.value = next;
|
|
72
|
-
taskReadError.value = '';
|
|
73
|
-
}
|
|
74
|
-
if (typeof window !== 'undefined')
|
|
75
|
-
window.addEventListener('storage', event => { if (event.key === storage && event.newValue) {
|
|
76
|
-
try {
|
|
77
|
-
const rows = JSON.parse(event.newValue);
|
|
78
|
-
if (Array.isArray(rows)) {
|
|
79
|
-
taskRecords.value = rows;
|
|
80
|
-
taskReadError.value = '';
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
taskReadError.value = '其他页面写入的任务记录无法读取,请重新加载核对。';
|
|
85
|
-
}
|
|
86
|
-
} });
|
|
87
|
-
export function taskFlowReferenced(id) { return taskRecords.value.some(t => !t.isDeleted && t.binding.flowId === id); }
|
|
88
|
-
export function taskAgentReferences(id) { return taskRecords.value.filter(t => !t.isDeleted && t.binding.agents.some(a => a.config.id === id)).map(t => ({ name: t.name, version: '交付任务 ' + t.code })); }
|
|
89
|
-
// One local write for all parent tasks; retain unrelated changes from another tab.
|
|
90
|
-
export function commitTaskChanges(changes, expected) {
|
|
91
|
-
if (taskReadError.value)
|
|
92
|
-
throw Error(taskReadError.value);
|
|
93
|
-
let fresh;
|
|
94
|
-
try {
|
|
95
|
-
const raw = localStorage.getItem(storage);
|
|
96
|
-
fresh = raw ? JSON.parse(raw) : taskRecords.value;
|
|
97
|
-
if (!Array.isArray(fresh))
|
|
98
|
-
throw Error();
|
|
99
|
-
}
|
|
100
|
-
catch {
|
|
101
|
-
throw Error('本地任务数据无法读取,本次未提交。');
|
|
102
|
-
}
|
|
103
|
-
for (const e of expected) {
|
|
104
|
-
const before = fresh.find(t => t.id === e.id);
|
|
105
|
-
if (e.version === undefined ? !!before : !before || before.isDeleted || before.recordVersion !== e.version) {
|
|
106
|
-
taskRecords.value = fresh;
|
|
107
|
-
throw Error('任务已在其他页面更新,请核对最新版本;本次输入保留。');
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
const ids = new Set(changes.map(t => t.id)), next = [...changes, ...fresh.filter(t => !ids.has(t.id))];
|
|
111
|
-
try {
|
|
112
|
-
localStorage.setItem(storage, JSON.stringify(next));
|
|
113
|
-
}
|
|
114
|
-
catch {
|
|
115
|
-
throw Error('浏览器保存失败,操作未提交,请保留输入并重试。');
|
|
116
|
-
}
|
|
117
|
-
taskRecords.value = next;
|
|
118
|
-
}
|
|
119
|
-
export function refreshTaskRecords() {
|
|
120
|
-
try {
|
|
121
|
-
const raw = localStorage.getItem(storage);
|
|
122
|
-
if (raw) {
|
|
123
|
-
const fresh = JSON.parse(raw);
|
|
124
|
-
if (!Array.isArray(fresh))
|
|
125
|
-
throw Error();
|
|
126
|
-
taskRecords.value = fresh;
|
|
127
|
-
}
|
|
128
|
-
if (taskReadError.value)
|
|
129
|
-
throw Error(taskReadError.value);
|
|
130
|
-
}
|
|
131
|
-
catch {
|
|
132
|
-
throw Error('任务数据无法读取,请先刷新核对;本次未保存。');
|
|
133
|
-
}
|
|
134
|
-
return taskRecords.value;
|
|
135
|
-
}
|
package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/store.js
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import { reviewsForTask, retainReviews, sameRequest, actionPermission } from "../reviews/model.js";
|
|
2
|
-
import { decideReview, validateDesign } from "../reviews/commands.js";
|
|
3
|
-
import { stateOf } from "../pbc/management.js";
|
|
4
|
-
import { computed, ref } from '../../runtime/state.js';
|
|
5
|
-
import { defineStore } from "../../runtime/state.js";
|
|
6
|
-
import { useSession } from "../shared/session.js";
|
|
7
|
-
import { assertBatch } from "../shared/listBatch.js";
|
|
8
|
-
import { useSpecs } from "../specs/store.js";
|
|
9
|
-
import { useIntents } from "../intents/store.js";
|
|
10
|
-
import { usePbcs } from "../pbc/store.js";
|
|
11
|
-
import { useWorkflows } from "../workflows/store.js";
|
|
12
|
-
import { useAgents } from "../agents/store.js";
|
|
13
|
-
import { currentVersion, sourceOf, specBusy } from "../specs/domain.js";
|
|
14
|
-
import { taskRecords, taskReadError, commitTasks, seedTasks } from "./registry.js";
|
|
15
|
-
import { clone, newTask, startTask, advanceTask, approveTask, retryTask, controlTask, assertTaskRemovable, taskEvent, currentNode } from "./domain.js";
|
|
16
|
-
export const useTasks = defineStore('tasks', () => {
|
|
17
|
-
const session = useSession(), specs = useSpecs(), intents = useIntents(), pbcs = usePbcs(), flows = useWorkflows(), agents = useAgents(), scene = ref('normal');
|
|
18
|
-
const records = computed(() => taskRecords.value.filter(t => !t.isDeleted && session.can('task:view', t.tenantId, t.binding.pbcId))), item = (id) => records.value.find(t => t.id === id);
|
|
19
|
-
const sources = computed(() => specs.items.map(s => { const i = intents.get(s.intentId), v = currentVersion(s), job = pbcs.job(s.intentId); let reason = ''; try {
|
|
20
|
-
if (!i || !v?.confirmedAt)
|
|
21
|
-
throw Error('需求规格尚未确认');
|
|
22
|
-
if (specBusy(s))
|
|
23
|
-
throw Error('规格正在更新或确认结果待核实');
|
|
24
|
-
if (sourceOf(i).version !== v.source.version)
|
|
25
|
-
throw Error('来源意图已有新版本');
|
|
26
|
-
if (!job || job.status !== 'done')
|
|
27
|
-
throw Error('PBC 归属尚未完成');
|
|
28
|
-
if (!pbcs.items.some(p => p.id === job.pbc.id && p.tenantId === s.tenantId && stateOf(p) === 'active'))
|
|
29
|
-
throw Error('PBC 已不可用或超出授权范围');
|
|
30
|
-
if (job.specVersion !== v.number || job.sourceVersion !== v.source.version)
|
|
31
|
-
throw Error('规格与既有 PBC 归属版本不一致');
|
|
32
|
-
if (!session.can('task:create', s.tenantId, job.pbc.id))
|
|
33
|
-
throw Error('没有此 PBC 的创建任务权限');
|
|
34
|
-
}
|
|
35
|
-
catch (e) {
|
|
36
|
-
reason = e.message;
|
|
37
|
-
} return { id: s.intentId, title: v?.source.title || '尚无规格', spec: s, version: v, job, reason }; }));
|
|
38
|
-
function flowChoices(intentId) { const s = sources.value.find(s => s.id === intentId); return flows.records.filter(f => f.enabled && f.versions.length && s?.job?.pbc.id === f.pbcId && f.tenantId === s.spec.tenantId && session.can('workflow:use', f.tenantId, f.pbcId)); }
|
|
39
|
-
function binding(intentId, flowId, number) {
|
|
40
|
-
const s = sources.value.find(s => s.id === intentId);
|
|
41
|
-
if (!s || s.reason || !s.version || !s.job)
|
|
42
|
-
throw Error(s?.reason || '没有可用的规格与 PBC 归属,请先完成确认。');
|
|
43
|
-
const f = flowChoices(intentId).find(f => f.id === flowId), version = f?.versions.find(v => v.number === number);
|
|
44
|
-
if (!f || !version)
|
|
45
|
-
throw Error('请选择同一 PBC 下可用的已发布交付流程版本。');
|
|
46
|
-
const failed = flows.checks(f, version.body).filter(c => !c.ok);
|
|
47
|
-
if (failed.length)
|
|
48
|
-
throw Error(failed.map(c => c.title + ':' + c.detail).join(';'));
|
|
49
|
-
const bindings = [...new Set(version.body.nodes.map(n => n.agentId).filter(Boolean))].map(id => { const a = agents.item(id); if (!a || !a.enabled)
|
|
50
|
-
throw Error('流程引用的 Agent 不可用或无权查看'); const m = agents.choices(a).find(m => m.id === a.modelRef); if (!m?.version)
|
|
51
|
-
throw Error('模型没有可用发布版本'); return { config: { ...clone(a), references: [] }, model: { id: m.id, name: m.name, version: m.version } }; });
|
|
52
|
-
return clone({ intentId, spec: s.version, specRecordVersion: s.spec.recordVersion, pbcId: s.job.pbc.id, project: pbcs.items.find(p => p.id === s.job.pbc.id).name, tenantId: s.spec.tenantId, flowId, flowRecordVersion: f.recordVersion, flow: version, agents: bindings });
|
|
53
|
-
}
|
|
54
|
-
function current(id, action, expected) { const t = item(id); if (!t)
|
|
55
|
-
throw Error('任务不存在或无权访问。'); session.require(action, t.tenantId, t.binding.pbcId); if (expected !== t.recordVersion)
|
|
56
|
-
throw Error('任务记录已更新,请重新打开核对后操作。'); return clone(t); }
|
|
57
|
-
function persist(t, action, detail) { const old = taskRecords.value.find(x => x.id === t.id); retainReviews(old, t); t.recordVersion = (old?.recordVersion || 0) + 1; t.updatedBy = session.actor.name; t.updatedAt = new Date().toISOString(); taskEvent(t, session.actor.name, action, detail); commitTasks([t, ...taskRecords.value.filter(x => x.id !== t.id)], old ? { id: old.id, version: old.recordVersion } : undefined); return t; }
|
|
58
|
-
function sourceCheck(b) { const fresh = binding(b.intentId, b.flowId, b.flow.number); if (JSON.stringify(fresh) !== JSON.stringify(b))
|
|
59
|
-
throw Error('来源、流程或资源版本已变化,请返回创建页重新核对。'); }
|
|
60
|
-
function resources(t) { for (const b of t.binding.agents) {
|
|
61
|
-
const a = agents.item(b.config.id);
|
|
62
|
-
if (!a || !a.enabled)
|
|
63
|
-
throw Error('任务引用的 Agent 已停用或不可访问,请先处理资源配置。');
|
|
64
|
-
const failures = agents.checks(b.config).filter(c => !c.ok);
|
|
65
|
-
if (failures.length)
|
|
66
|
-
throw Error('绑定资源暂不可用:' + failures.map(c => c.detail).join(';'));
|
|
67
|
-
} return true; }
|
|
68
|
-
function create(b, name, note, start, requestId) {
|
|
69
|
-
session.require('task:create', b.tenantId, b.pbcId);
|
|
70
|
-
session.require('task:view', b.tenantId, b.pbcId);
|
|
71
|
-
if (start)
|
|
72
|
-
session.require('task:operate', b.tenantId, b.pbcId);
|
|
73
|
-
const existing = taskRecords.value.find(t => t.id === requestId);
|
|
74
|
-
if (existing) {
|
|
75
|
-
if (existing.isDeleted || existing.name !== name.trim() || existing.note !== note || JSON.stringify(existing.binding) !== JSON.stringify(b))
|
|
76
|
-
throw Error('此提交编号已使用,请重新核对后创建。');
|
|
77
|
-
return existing;
|
|
78
|
-
}
|
|
79
|
-
sourceCheck(b);
|
|
80
|
-
session.writeCheck();
|
|
81
|
-
const t = newTask(b, session.actor, name, note);
|
|
82
|
-
t.id = requestId;
|
|
83
|
-
t.code = 'DEL-' + requestId.slice(0, 8).toUpperCase();
|
|
84
|
-
if (start)
|
|
85
|
-
startTask(t, session.actor.name);
|
|
86
|
-
return persist(t, start ? '创建并启动' : '保存草稿', '来源 ' + b.spec.source.code + ' / 规格 v' + b.spec.number + ' / 流程 v' + b.flow.number);
|
|
87
|
-
}
|
|
88
|
-
function edit(id, expected, b, name, note) { const t = current(id, 'task:edit', expected); assertTaskRemovable(t); if (b.pbcId !== t.binding.pbcId || b.tenantId !== t.tenantId)
|
|
89
|
-
throw Error('草稿不能跨 PBC 改绑,请另建任务。'); sourceCheck(b); newTask(b, session.actor, name, note); session.writeCheck(); t.name = name.trim(); t.note = note; t.binding = clone(b); t.stages = b.flow.body.nodes.map(n => ({ nodeId: n.id, state: 'pending', attempts: 0, detail: '尚未执行' })); return persist(t, '修改草稿', '重新核对所选来源和流程版本。'); }
|
|
90
|
-
function start(id, expected) { const t = current(id, 'task:operate', expected); sourceCheck(t.binding); session.writeCheck(); startTask(t, session.actor.name); return persist(t, '开始交付', '仅启动本地交互演示。'); }
|
|
91
|
-
function advance(id, expected, result) { const t = current(id, 'task:operate', expected); if (currentNode(t)?.agentId || currentNode(t)?.kind === 'tool')
|
|
92
|
-
resources(t); session.writeCheck(); advanceTask(t, result); return persist(t, '接收模拟事件', '未调用真实 Agent、工具或 CI。'); }
|
|
93
|
-
function approve(id, expected, version, note) { const t = current(id, 'workflow:approve', expected); session.writeCheck(); approveTask(t, session.actor.name, version, note); return persist(t, '保留确认凭据', '此确认属于本地任务演示。'); }
|
|
94
|
-
function retry(id, expected, note) { const t = current(id, 'task:operate', expected); resources(t); session.writeCheck(); retryTask(t, session.actor.name, note); return persist(t, '保存处理结果', '继续使用原任务和绑定版本。'); }
|
|
95
|
-
function control(id, expected, action, note) { const t = current(id, action === 'takeover' ? 'task:takeover' : 'task:operate', expected); if (action === 'resume')
|
|
96
|
-
resources(t); session.writeCheck(); controlTask(t, action, session.actor.name, note); return persist(t, '保存任务控制', action); }
|
|
97
|
-
function checkRemove(target) { assertTaskRemovable(current(target.id, 'task:delete', target.recordVersion)); }
|
|
98
|
-
function removeMany(targets) { const selected = assertBatch(taskRecords.value, targets, t => { session.require('task:view', t.tenantId, t.binding.pbcId); session.require('task:delete', t.tenantId, t.binding.pbcId); assertTaskRemovable(t); }); session.writeCheck(); const ids = new Set(selected.map(t => t.id)), at = new Date().toISOString(); const next = taskRecords.value.map(old => { const t = clone(old); if (ids.has(t.id)) {
|
|
99
|
-
t.isDeleted = true;
|
|
100
|
-
t.recordVersion++;
|
|
101
|
-
t.updatedBy = session.actor.name;
|
|
102
|
-
t.updatedAt = at;
|
|
103
|
-
taskEvent(t, session.actor.name, '删除草稿', '逻辑删除;本批 ' + ids.size + ' 项');
|
|
104
|
-
} return t; }); commitTasks(next); }
|
|
105
|
-
function review(id, expected, reviewId, payload) {
|
|
106
|
-
session.require(actionPermission[payload.action]);
|
|
107
|
-
const existing = item(id);
|
|
108
|
-
if (!existing)
|
|
109
|
-
throw Error('任务不存在或无权访问。');
|
|
110
|
-
session.require('artifact:view', existing.tenantId, existing.binding.pbcId);
|
|
111
|
-
session.require(actionPermission[payload.action], existing.tenantId, existing.binding.pbcId);
|
|
112
|
-
const prior = sameRequest(existing, reviewId, payload);
|
|
113
|
-
if (prior)
|
|
114
|
-
return { receipt: prior, unknown: false, replayed: true };
|
|
115
|
-
const t = current(id, actionPermission[payload.action], expected);
|
|
116
|
-
session.writeCheck();
|
|
117
|
-
const result = session.confirmResult;
|
|
118
|
-
session.confirmResult = 'success';
|
|
119
|
-
if (result === 'failure')
|
|
120
|
-
throw Error('提交未保存(模拟服务失败),请保留输入重试。');
|
|
121
|
-
const receipt = decideReview(t, reviewId, session.actor, payload);
|
|
122
|
-
persist(t, '保存评审处理', '处理结果与原任务一次提交,原型未调用真实服务。');
|
|
123
|
-
return { receipt, unknown: result === 'unknown', replayed: false };
|
|
124
|
-
}
|
|
125
|
-
function reviewValidation(id, expected, reviewId, result) {
|
|
126
|
-
const t = current(id, 'task:operate', expected);
|
|
127
|
-
session.require('artifact:view', t.tenantId, t.binding.pbcId);
|
|
128
|
-
resources(t);
|
|
129
|
-
session.writeCheck();
|
|
130
|
-
validateDesign(t, reviewId, result);
|
|
131
|
-
return persist(t, '接收模拟复核', '仅对当前设计版本模拟检查,不改写历史结果。');
|
|
132
|
-
}
|
|
133
|
-
function reviewReceipt(id, requestId) { const t = item(id); if (!t)
|
|
134
|
-
throw Error('任务不存在或无权访问。'); session.require('artifact:view', t.tenantId, t.binding.pbcId); return reviewsForTask(t).find(r => r.decision?.requestId === requestId)?.decision; }
|
|
135
|
-
function reset() { commitTasks(seedTasks()); scene.value = 'normal'; }
|
|
136
|
-
return { records, item, sources, flowChoices, binding, scene, notice: taskReadError, create, edit, start, advance, approve, retry, control, review, reviewValidation, reviewReceipt, checkRemove, removeMany, reset };
|
|
137
|
-
});
|