@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.
Files changed (677) hide show
  1. package/.agents/plugins/marketplace.json +1 -1
  2. package/.claude/commands/i3-build.md +1 -0
  3. package/.claude/commands/i3-code-simplify.md +1 -0
  4. package/.claude/commands/i3-constraints.md +1 -0
  5. package/.claude/commands/i3-plan.md +1 -0
  6. package/.claude/commands/i3-review.md +1 -0
  7. package/.claude/commands/i3-ship.md +1 -0
  8. package/.claude/commands/i3-sop.md +3 -3
  9. package/.claude/commands/i3-spec.md +1 -0
  10. package/.claude/commands/i3-test.md +1 -0
  11. package/.claude/commands/i3-webperf.md +1 -0
  12. package/.claude-plugin/marketplace.json +1 -1
  13. package/.claude-plugin/plugin.json +1 -1
  14. package/.codex-plugin/plugin.json +2 -2
  15. package/.gemini/commands/i3-sop.toml +3 -3
  16. package/README.md +44 -43
  17. package/bin/i3-composer-agent.cjs +4 -59
  18. package/bin/install.cjs +6 -14
  19. package/bin/native-layout.cjs +11 -2
  20. package/bin/native-migration.cjs +68 -28
  21. package/bin/retired-custom-fingerprints.json +1597 -0
  22. package/bin/wizard.cjs +2 -13
  23. package/commands/i3-sop.toml +3 -3
  24. package/docs/antigravity-setup.md +3 -1
  25. package/docs/codebuddy-setup.md +19 -76
  26. package/docs/codex-setup.md +10 -4
  27. package/docs/comparison.md +1 -1
  28. package/docs/copilot-cli-setup.md +4 -4
  29. package/docs/cursor-setup.md +1 -1
  30. package/docs/gemini-cli-setup.md +1 -1
  31. package/docs/other-hosts.md +2 -2
  32. package/docs/windsurf-setup.md +2 -2
  33. package/docs/workbuddy-setup.md +9 -16
  34. package/evals/README.md +10 -0
  35. package/evals/cases/i3-code-simplification.json +8 -0
  36. package/evals/cases/i3-documentation-and-adrs.json +4 -0
  37. package/evals/cases/i3-enterprise-sop.json +70 -32
  38. package/evals/cases/i3-frontend-ui-engineering.json +1 -1
  39. package/evals/cases/i3-security-and-hardening.json +4 -0
  40. package/evals/cases/i3-ui-demo.json +2 -2
  41. package/evals/cases/i3-using-agent-skills.json +5 -5
  42. package/evals/plugin/simplify-fires-on-pasted-function/graders/behavior-kept-and-explained.md +7 -0
  43. package/evals/plugin/simplify-fires-on-pasted-function/graders/skill-fired.md +5 -0
  44. package/evals/plugin/simplify-fires-on-pasted-function/prompt.md +30 -0
  45. package/evals/plugin/simplify-stays-quiet-on-make-it-fast/graders/not-fired.md +8 -0
  46. package/evals/plugin/simplify-stays-quiet-on-make-it-fast/prompt.md +20 -0
  47. package/evals/zh-CN/cases/i3-code-simplification.json +8 -0
  48. package/evals/zh-CN/cases/i3-documentation-and-adrs.json +4 -0
  49. package/evals/zh-CN/cases/i3-enterprise-sop.json +77 -31
  50. package/evals/zh-CN/cases/i3-frontend-ui-engineering.json +2 -2
  51. package/evals/zh-CN/cases/i3-security-and-hardening.json +4 -0
  52. package/evals/zh-CN/cases/i3-ui-demo.json +2 -2
  53. package/evals/zh-CN/cases/i3-using-agent-skills.json +6 -6
  54. package/hooks/SDD-CACHE.md +1 -1
  55. package/package.json +13 -102
  56. package/plugin.json +15 -2
  57. package/references/accessibility-checklist.md +4 -4
  58. package/references/performance-checklist.md +5 -4
  59. package/references/testing-patterns.md +2 -1
  60. package/scripts/floor-guard-reference-test.js +32 -0
  61. package/scripts/lib/execution-status.js +44 -0
  62. package/scripts/run-evals-test.js +157 -7
  63. package/scripts/run-evals.js +59 -12
  64. package/scripts/ui-demo-test.js +2 -2
  65. package/scripts/validate-artifact-paths-test.js +14 -0
  66. package/scripts/validate-artifact-paths.js +4 -2
  67. package/skills/i3-api-and-interface-design/SKILL.md +3 -1
  68. package/skills/i3-ci-cd-and-automation/SKILL.md +7 -4
  69. package/skills/i3-code-simplification/SKILL.md +3 -3
  70. package/skills/i3-constraint-driven-development/SKILL.md +4 -4
  71. package/skills/i3-constraint-driven-development/references/floor-guard.md +2 -2
  72. package/skills/i3-context-engineering/SKILL.md +1 -1
  73. package/skills/i3-debugging-and-error-recovery/SKILL.md +1 -1
  74. package/skills/i3-deprecation-and-migration/SKILL.md +6 -1
  75. package/skills/i3-documentation-and-adrs/SKILL.md +3 -2
  76. package/skills/i3-enterprise-sop/SKILL.md +121 -94
  77. package/skills/i3-enterprise-sop/references/engineering-skeleton/directory-standard.md +31 -17
  78. package/skills/i3-enterprise-sop/references/handoff.py +235 -135
  79. package/skills/i3-enterprise-sop/references/read_text.py +60 -0
  80. package/skills/i3-enterprise-sop/references/technical-baseline/baselines/enterprise-application-technical-baseline-v0-0-4.md +47 -47
  81. package/skills/i3-enterprise-sop/references/technical-baseline/readme.md +9 -118
  82. package/skills/i3-enterprise-sop/references/technical-baseline/templates/technical-baseline.md +8 -8
  83. package/skills/i3-enterprise-sop/references/{ad/templates → templates}/ad.md +57 -50
  84. package/skills/i3-enterprise-sop/references/{brd/templates → templates}/brd.md +23 -12
  85. package/skills/i3-enterprise-sop/references/{prd/templates → templates}/prd.md +84 -51
  86. package/skills/i3-enterprise-sop/references/{testcase/templates → templates}/testcase.md +49 -39
  87. package/skills/i3-frontend-ui-engineering/SKILL.md +6 -10
  88. package/skills/i3-idea-refine/SKILL.md +4 -2
  89. package/skills/i3-incremental-implementation/SKILL.md +0 -4
  90. package/skills/i3-performance-optimization/SKILL.md +2 -2
  91. package/skills/i3-security-and-hardening/references/hardening-patterns.md +5 -0
  92. package/skills/i3-source-driven-development/SKILL.md +3 -2
  93. package/skills/i3-spec-driven-development/SKILL.md +1 -1
  94. package/skills/i3-ui-demo/SKILL.md +3 -1
  95. package/skills/i3-ui-demo/references/dependencies.md +1 -1
  96. package/skills/i3-ui-demo/references/resources.md +1 -1
  97. package/skills/i3-ui-demo/scripts/dependencies.cjs +0 -3
  98. package/skills/i3-using-agent-skills/SKILL.md +2 -2
  99. package/.claude/commands/i3-prototype.md +0 -23
  100. package/.gemini/commands/i3-prototype.toml +0 -23
  101. package/commands/i3-prototype.toml +0 -23
  102. package/docs/upstream-repository/AGENTS.md +0 -92
  103. package/docs/upstream-repository/CLAUDE.md +0 -60
  104. package/docs/upstream-repository/CONTRIBUTING.md +0 -137
  105. package/docs/upstream-repository/README.md +0 -8
  106. package/docs/upstream-repository/gitattributes.txt +0 -1
  107. package/docs/upstream-repository/gitignore.txt +0 -10
  108. package/docs/upstream-repository/manifest.json +0 -71
  109. package/docs/upstream-repository/opencode-skills.link +0 -1
  110. package/docs/upstream-repository/skill-gap.yml +0 -80
  111. package/docs/upstream-repository/skills-contributing.md +0 -15
  112. package/docs/upstream-repository/test-plugin-install.yml +0 -167
  113. package/evals/cases/i3-ui-prototype.json +0 -158
  114. package/evals/fixtures/i3-ui-prototype/admin-list/assets/reference.css +0 -3
  115. package/evals/fixtures/i3-ui-prototype/admin-list/assets/reference.js +0 -8
  116. package/evals/fixtures/i3-ui-prototype/admin-list/capability-definition.json +0 -67
  117. package/evals/fixtures/i3-ui-prototype/admin-list/index.html +0 -89
  118. package/evals/fixtures/i3-ui-prototype/admin-list/readme.md +0 -52
  119. package/evals/fixtures/i3-ui-prototype/admin-list/template.json +0 -8
  120. package/evals/fixtures/i3-ui-prototype/business-brief.md +0 -7
  121. package/evals/zh-CN/cases/i3-ui-prototype.json +0 -165
  122. package/hooks/PROTOTYPE.md +0 -31
  123. package/hooks/codebuddy-upstream.cjs +0 -93
  124. package/hooks/i3-prototype.cjs +0 -7
  125. package/hooks/manage.cjs +0 -169
  126. package/scripts/design-provider-discovery-test.js +0 -190
  127. package/scripts/design-provider-test.js +0 -75
  128. package/scripts/enterprise-template-test.js +0 -205
  129. package/scripts/lib/prototype-fixture.cjs +0 -17
  130. package/scripts/prototype-cache-test.js +0 -55
  131. package/scripts/prototype-generation-entry-test.js +0 -6
  132. package/scripts/prototype-generation-evidence-test.js +0 -10
  133. package/scripts/prototype-generation-native-test.js +0 -78
  134. package/scripts/prototype-generation-test.js +0 -99
  135. package/scripts/prototype-inventory-test.js +0 -43
  136. package/scripts/prototype-locations-test.js +0 -79
  137. package/scripts/prototype-project-test.js +0 -183
  138. package/scripts/template-adapter-test.js +0 -155
  139. package/scripts/ui-prototype-binding-recovery-test.js +0 -84
  140. package/scripts/ui-prototype-buddy-lifecycle-test.js +0 -102
  141. package/scripts/ui-prototype-codebuddy-hook-test.js +0 -112
  142. package/scripts/ui-prototype-content-test.js +0 -123
  143. package/scripts/ui-prototype-dependencies-test.js +0 -226
  144. package/scripts/ui-prototype-devtools-test.js +0 -53
  145. package/scripts/ui-prototype-execution-evidence-test.js +0 -62
  146. package/scripts/ui-prototype-execution-gates-test.js +0 -91
  147. package/scripts/ui-prototype-execution-policy-test.js +0 -53
  148. package/scripts/ui-prototype-execution-runtime-test.js +0 -27
  149. package/scripts/ui-prototype-ide-source-test.js +0 -73
  150. package/scripts/ui-prototype-native-test.js +0 -526
  151. package/scripts/ui-prototype-recovery-test.js +0 -81
  152. package/scripts/ui-prototype-registration-test.js +0 -53
  153. package/scripts/ui-prototype-template-test.js +0 -261
  154. package/scripts/ui-prototype-test.js +0 -124
  155. package/scripts/ui-prototype-transcript-auto-test.js +0 -67
  156. package/skills/i3-enterprise-sop/references/ad/assets-manifest.json +0 -86
  157. package/skills/i3-enterprise-sop/references/ad/prompts/01-generate.md +0 -58
  158. package/skills/i3-enterprise-sop/references/ad/prompts/02-review.md +0 -54
  159. package/skills/i3-enterprise-sop/references/ad/prompts/03-revise.md +0 -54
  160. package/skills/i3-enterprise-sop/references/ad/prompts/04-recheck.md +0 -54
  161. package/skills/i3-enterprise-sop/references/ad/readme.md +0 -70
  162. package/skills/i3-enterprise-sop/references/assets-manifest.json +0 -230
  163. package/skills/i3-enterprise-sop/references/brd/assets-manifest.json +0 -83
  164. package/skills/i3-enterprise-sop/references/brd/prompts/01-generate.md +0 -51
  165. package/skills/i3-enterprise-sop/references/brd/prompts/02-review.md +0 -47
  166. package/skills/i3-enterprise-sop/references/brd/prompts/03-revise.md +0 -47
  167. package/skills/i3-enterprise-sop/references/brd/prompts/04-recheck.md +0 -47
  168. package/skills/i3-enterprise-sop/references/brd/readme.md +0 -50
  169. package/skills/i3-enterprise-sop/references/codebuddy-project-guide.md +0 -34
  170. package/skills/i3-enterprise-sop/references/controlled-handoff.md +0 -41
  171. package/skills/i3-enterprise-sop/references/controlled_handoff.py +0 -379
  172. package/skills/i3-enterprise-sop/references/engineering-skeleton/adoption.md +0 -200
  173. package/skills/i3-enterprise-sop/references/engineering-skeleton/catalog.json +0 -17
  174. package/skills/i3-enterprise-sop/references/engineering-skeleton/readme.md +0 -52
  175. package/skills/i3-enterprise-sop/references/handoff-contract.md +0 -196
  176. package/skills/i3-enterprise-sop/references/lifecycle-contract.md +0 -91
  177. package/skills/i3-enterprise-sop/references/plan-handoff.md +0 -73
  178. package/skills/i3-enterprise-sop/references/prd/assets-manifest.json +0 -109
  179. package/skills/i3-enterprise-sop/references/prd/prompts/01-generate.md +0 -64
  180. package/skills/i3-enterprise-sop/references/prd/prompts/02-review.md +0 -49
  181. package/skills/i3-enterprise-sop/references/prd/prompts/03-revise.md +0 -48
  182. package/skills/i3-enterprise-sop/references/prd/prompts/04-recheck.md +0 -47
  183. package/skills/i3-enterprise-sop/references/prd/readme.md +0 -137
  184. package/skills/i3-enterprise-sop/references/prd/template-contracts.md +0 -39
  185. package/skills/i3-enterprise-sop/references/prd/templates/ad.md +0 -17
  186. package/skills/i3-enterprise-sop/references/readme.md +0 -167
  187. package/skills/i3-enterprise-sop/references/recovery-contract.md +0 -65
  188. package/skills/i3-enterprise-sop/references/review-handoff.md +0 -105
  189. package/skills/i3-enterprise-sop/references/selection-handoff.md +0 -55
  190. package/skills/i3-enterprise-sop/references/selection_handoff.py +0 -225
  191. package/skills/i3-enterprise-sop/references/stages.json +0 -271
  192. package/skills/i3-enterprise-sop/references/technical-baseline/assets-manifest.json +0 -84
  193. package/skills/i3-enterprise-sop/references/template-contracts.md +0 -142
  194. package/skills/i3-enterprise-sop/references/testcase/assets-manifest.json +0 -91
  195. package/skills/i3-enterprise-sop/references/testcase/prompts/01-generate.md +0 -53
  196. package/skills/i3-enterprise-sop/references/testcase/prompts/02-review.md +0 -51
  197. package/skills/i3-enterprise-sop/references/testcase/prompts/03-revise.md +0 -49
  198. package/skills/i3-enterprise-sop/references/testcase/prompts/04-recheck.md +0 -51
  199. package/skills/i3-enterprise-sop/references/testcase/readme.md +0 -61
  200. package/skills/i3-enterprise-sop/references/verification/check_execution.py +0 -185
  201. package/skills/i3-enterprise-sop/references/verification/check_native_execution.py +0 -282
  202. package/skills/i3-enterprise-sop/references/verification/check_reads.py +0 -348
  203. package/skills/i3-enterprise-sop/references/verification/readme.md +0 -149
  204. package/skills/i3-enterprise-sop/references/verification/review-output.schema.json +0 -155
  205. package/skills/i3-enterprise-sop/references/verification/review_handoff.py +0 -329
  206. package/skills/i3-ui-prototype/SKILL.md +0 -256
  207. package/skills/i3-ui-prototype/assets/capabilities/generation.json +0 -833
  208. package/skills/i3-ui-prototype/assets/capabilities/management.json +0 -294
  209. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/acceptance.json +0 -51
  210. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/component-map.json +0 -13
  211. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/generation-component-map.json +0 -300
  212. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/index.html +0 -11
  213. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/package-lock.json +0 -2298
  214. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/package.json +0 -22
  215. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/public/prototype-config.json +0 -6
  216. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/App.vue +0 -136
  217. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/components/DeviceEditor.vue +0 -111
  218. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/config.ts +0 -19
  219. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/content.ts +0 -28
  220. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/domain/devices.ts +0 -50
  221. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/domain/theme.ts +0 -25
  222. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/main.ts +0 -18
  223. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/style.css +0 -50
  224. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/useDevices.ts +0 -66
  225. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tests/devices.test.ts +0 -44
  226. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tests/theme.test.ts +0 -26
  227. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tsconfig.json +0 -15
  228. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/vite.config.ts +0 -4
  229. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/profile.json +0 -174
  230. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/readme.md +0 -61
  231. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/index.html +0 -11
  232. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/package-lock.json +0 -2298
  233. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/package.json +0 -22
  234. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/public/prototype-config.json +0 -21
  235. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/App.vue +0 -62
  236. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/PrototypeShell.vue +0 -59
  237. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/config.ts +0 -23
  238. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/domain/presentation.ts +0 -29
  239. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/domain/theme.ts +0 -25
  240. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/main.ts +0 -18
  241. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/style.css +0 -26
  242. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tests/presentation.test.ts +0 -23
  243. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tests/theme.test.ts +0 -26
  244. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tsconfig.json +0 -15
  245. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/vite.config.ts +0 -4
  246. package/skills/i3-ui-prototype/assets/hosts/codebuddy/profile.json +0 -17
  247. package/skills/i3-ui-prototype/assets/optional-skills/host-targets.json +0 -739
  248. package/skills/i3-ui-prototype/assets/optional-skills/sources.json +0 -27
  249. package/skills/i3-ui-prototype/assets/templates/catalog.js +0 -149
  250. package/skills/i3-ui-prototype/assets/templates/catalog.json +0 -149
  251. package/skills/i3-ui-prototype/assets/templates/classic-admin/manifest.json +0 -9
  252. package/skills/i3-ui-prototype/assets/templates/classic-admin/preset.json +0 -6
  253. package/skills/i3-ui-prototype/assets/templates/common/app/app.mjs +0 -89
  254. package/skills/i3-ui-prototype/assets/templates/common/app/config.json +0 -1
  255. package/skills/i3-ui-prototype/assets/templates/common/app/domain.mjs +0 -20
  256. package/skills/i3-ui-prototype/assets/templates/common/app/index.html +0 -17
  257. package/skills/i3-ui-prototype/assets/templates/common/app/serve.cjs +0 -16
  258. package/skills/i3-ui-prototype/assets/templates/common/app/styles.css +0 -670
  259. package/skills/i3-ui-prototype/assets/templates/common/app/tokens.css +0 -19
  260. package/skills/i3-ui-prototype/assets/templates/common/design-system/master.md +0 -20
  261. package/skills/i3-ui-prototype/assets/templates/common/gallery.html +0 -2
  262. package/skills/i3-ui-prototype/assets/templates/common/mocks/applications.json +0 -5
  263. package/skills/i3-ui-prototype/assets/templates/common/requirements-map.json +0 -8
  264. package/skills/i3-ui-prototype/assets/templates/common/serve-gallery.cjs +0 -16
  265. package/skills/i3-ui-prototype/assets/templates/credits.md +0 -17
  266. package/skills/i3-ui-prototype/assets/templates/data-operations/manifest.json +0 -9
  267. package/skills/i3-ui-prototype/assets/templates/data-operations/preset.json +0 -6
  268. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/capability-definition.json +0 -294
  269. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/component-inventory.json +0 -707
  270. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/design-system.md +0 -32
  271. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/generation.json +0 -49
  272. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/index.html +0 -534
  273. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/manifest.json +0 -9
  274. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/offline-build.json +0 -265
  275. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/offline.js +0 -8888
  276. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/origin.json +0 -344
  277. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/preset.json +0 -928
  278. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/app.js +0 -22
  279. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/empty.svg +0 -1
  280. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/reference-styles.json +0 -1
  281. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/result-403.svg +0 -1
  282. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/result-404.svg +0 -1
  283. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets-manifest.json +0 -334
  284. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/baseline.json +0 -173
  285. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/conversion.md +0 -30
  286. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/credits.md +0 -17
  287. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/design-tokens.json +0 -881
  288. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/index.html +0 -28
  289. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/licenses/@qin-ui-antdv-next-pro.txt +0 -9
  290. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/licenses/ant-design-icons.txt +0 -22
  291. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/licenses/antdv-next.txt +0 -21
  292. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/package.json +0 -12
  293. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/browser-routes.json +0 -298
  294. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/coverage.json +0 -180
  295. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/integrity.json +0 -13
  296. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/keyboard.json +0 -11
  297. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/responsive.json +0 -125
  298. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/review.md +0 -51
  299. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/rules.log +0 -150
  300. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/flow-editor-html.png +0 -0
  301. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/flow-editor-original.png +0 -0
  302. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/intent-create-html.png +0 -0
  303. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/intent-create-original.png +0 -0
  304. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/models-html.png +0 -0
  305. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/models-original.png +0 -0
  306. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/workbench-html.png +0 -0
  307. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/workbench-original.png +0 -0
  308. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/selection.json +0 -9
  309. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/visual-comparison.json +0 -342
  310. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/readme.md +0 -73
  311. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/reference.md +0 -59
  312. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/routes.json +0 -178
  313. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/controls.js +0 -99
  314. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/dialogs.js +0 -54
  315. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/dom.js +0 -264
  316. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/forms.js +0 -47
  317. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/icons.js +0 -41
  318. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/layout.js +0 -47
  319. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/router.js +0 -63
  320. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/state.js +0 -90
  321. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/table.js +0 -41
  322. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/widgets.js +0 -8
  323. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentDetail.html +0 -3
  324. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentDetail.js +0 -36
  325. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentEditor.html +0 -2
  326. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentEditor.js +0 -51
  327. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentsPage.html +0 -3
  328. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentsPage.js +0 -48
  329. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/CheckResults.html +0 -2
  330. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/CheckResults.js +0 -6
  331. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/ResourcePicker.html +0 -2
  332. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/ResourcePicker.js +0 -13
  333. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/data.js +0 -24
  334. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/domain.js +0 -32
  335. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/registry.js +0 -25
  336. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/store.js +0 -85
  337. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentClose.html +0 -2
  338. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentClose.js +0 -17
  339. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentCreate.html +0 -2
  340. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentCreate.js +0 -66
  341. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDecisions.html +0 -3
  342. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDecisions.js +0 -38
  343. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDetail.html +0 -2
  344. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDetail.js +0 -66
  345. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDocument.html +0 -2
  346. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDocument.js +0 -5
  347. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHeader.html +0 -2
  348. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHeader.js +0 -12
  349. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHistory.html +0 -2
  350. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHistory.js +0 -11
  351. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentList.html +0 -2
  352. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentList.js +0 -116
  353. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentReplan.html +0 -2
  354. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentReplan.js +0 -32
  355. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentRevision.html +0 -2
  356. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentRevision.js +0 -49
  357. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentSummary.html +0 -2
  358. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentSummary.js +0 -10
  359. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentWorkspace.html +0 -2
  360. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentWorkspace.js +0 -77
  361. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/data.js +0 -60
  362. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/domain.js +0 -105
  363. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/store.js +0 -212
  364. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/AuditPanel.html +0 -2
  365. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/AuditPanel.js +0 -18
  366. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelDetail.html +0 -2
  367. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelDetail.js +0 -23
  368. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelEditor.html +0 -2
  369. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelEditor.js +0 -78
  370. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelGrant.html +0 -2
  371. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelGrant.js +0 -55
  372. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelReferences.html +0 -2
  373. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelReferences.js +0 -26
  374. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelRelease.html +0 -2
  375. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelRelease.js +0 -38
  376. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelStatus.html +0 -2
  377. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelStatus.js +0 -7
  378. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTable.html +0 -2
  379. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTable.js +0 -72
  380. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTester.html +0 -2
  381. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTester.js +0 -46
  382. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelsPage.html +0 -2
  383. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelsPage.js +0 -52
  384. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/RowActions.html +0 -2
  385. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/RowActions.js +0 -19
  386. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/UsagePanel.html +0 -2
  387. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/UsagePanel.js +0 -30
  388. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/data.js +0 -48
  389. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/domain.js +0 -39
  390. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/store.js +0 -129
  391. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IncidentDetail.html +0 -4
  392. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IncidentDetail.js +0 -21
  393. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IntentSource.html +0 -2
  394. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IntentSource.js +0 -8
  395. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationActionDialog.html +0 -2
  396. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationActionDialog.js +0 -37
  397. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationEntry.html +0 -2
  398. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationEntry.js +0 -10
  399. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationsPage.html +0 -2
  400. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationsPage.js +0 -37
  401. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RepairTrack.html +0 -2
  402. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RepairTrack.js +0 -49
  403. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RunDetail.html +0 -4
  404. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RunDetail.js +0 -22
  405. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/SourceSummary.html +0 -2
  406. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/SourceSummary.js +0 -9
  407. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/commands.js +0 -82
  408. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/examples.js +0 -47
  409. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/model.js +0 -61
  410. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/repair.js +0 -68
  411. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/store.js +0 -55
  412. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/types.js +0 -1
  413. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/workbench.js +0 -18
  414. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ManagementTable.html +0 -3
  415. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ManagementTable.js +0 -28
  416. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcCreateEntry.html +0 -2
  417. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcCreateEntry.js +0 -18
  418. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcDetail.html +0 -2
  419. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcDetail.js +0 -31
  420. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcEditor.html +0 -2
  421. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcEditor.js +0 -27
  422. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcLifecycle.html +0 -2
  423. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcLifecycle.js +0 -16
  424. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPage.html +0 -2
  425. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPage.js +0 -43
  426. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPicker.html +0 -4
  427. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPicker.js +0 -34
  428. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcProgress.html +0 -2
  429. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcProgress.js +0 -30
  430. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWizard.html +0 -3
  431. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWizard.js +0 -67
  432. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWorkspace.html +0 -2
  433. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWorkspace.js +0 -41
  434. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcsPage.html +0 -2
  435. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcsPage.js +0 -31
  436. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceEditor.html +0 -2
  437. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceEditor.js +0 -26
  438. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceList.html +0 -2
  439. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceList.js +0 -70
  440. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/data.js +0 -8
  441. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/domain.js +0 -62
  442. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/management.js +0 -36
  443. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/managementStore.js +0 -49
  444. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/store.js +0 -132
  445. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/AdminList.html +0 -2
  446. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/AdminList.js +0 -38
  447. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/EffectiveGrants.html +0 -2
  448. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/EffectiveGrants.js +0 -11
  449. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/GrantEditor.html +0 -2
  450. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/GrantEditor.js +0 -45
  451. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MemberEditor.html +0 -2
  452. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MemberEditor.js +0 -54
  453. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MembersPage.html +0 -3
  454. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MembersPage.js +0 -27
  455. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RecordsPage.html +0 -2
  456. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RecordsPage.js +0 -12
  457. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RoleEditor.html +0 -2
  458. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RoleEditor.js +0 -45
  459. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RolesPage.html +0 -3
  460. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RolesPage.js +0 -38
  461. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/domain.js +0 -61
  462. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/state.js +0 -51
  463. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/store.js +0 -116
  464. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseActionDialog.html +0 -2
  465. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseActionDialog.js +0 -45
  466. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseDetail.html +0 -4
  467. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseDetail.js +0 -30
  468. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseEditor.html +0 -2
  469. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseEditor.js +0 -67
  470. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseExecution.html +0 -2
  471. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseExecution.js +0 -5
  472. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleasesPage.html +0 -4
  473. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleasesPage.js +0 -60
  474. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/commands.js +0 -157
  475. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/model.js +0 -136
  476. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/store.js +0 -76
  477. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewDetail.html +0 -3
  478. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewDetail.js +0 -26
  479. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewEvidence.html +0 -2
  480. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewEvidence.js +0 -14
  481. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewProcess.html +0 -2
  482. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewProcess.js +0 -113
  483. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewsPage.html +0 -3
  484. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewsPage.js +0 -62
  485. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/commands.js +0 -97
  486. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/model.js +0 -147
  487. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/store.js +0 -13
  488. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ColumnSettings.html +0 -2
  489. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ColumnSettings.js +0 -9
  490. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListBatchBar.html +0 -2
  491. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListBatchBar.js +0 -8
  492. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListDeleteDialog.html +0 -2
  493. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListDeleteDialog.js +0 -37
  494. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListMore.html +0 -2
  495. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListMore.js +0 -8
  496. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/RecordMetadata.html +0 -2
  497. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/RecordMetadata.js +0 -17
  498. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/columns.js +0 -32
  499. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/deliveryGuide.js +0 -49
  500. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/deliveryView.js +0 -12
  501. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/listBatch.js +0 -15
  502. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/listSelection.js +0 -37
  503. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/policy.js +0 -68
  504. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/session.js +0 -44
  505. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConfirmationDialog.html +0 -2
  506. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConfirmationDialog.js +0 -25
  507. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConsoleShell.html +0 -2
  508. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConsoleShell.js +0 -53
  509. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/PrototypeGuide.html +0 -10
  510. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/PrototypeGuide.js +0 -30
  511. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ScopePage.html +0 -2
  512. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ScopePage.js +0 -10
  513. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/SessionDialog.html +0 -2
  514. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/SessionDialog.js +0 -9
  515. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/confirmation.js +0 -3
  516. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/navigation.js +0 -19
  517. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecDocument.html +0 -2
  518. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecDocument.js +0 -8
  519. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecEdit.html +0 -2
  520. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecEdit.js +0 -32
  521. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHeader.html +0 -2
  522. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHeader.js +0 -15
  523. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHistory.html +0 -2
  524. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHistory.js +0 -11
  525. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecReview.html +0 -2
  526. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecReview.js +0 -57
  527. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecWorkspace.html +0 -2
  528. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecWorkspace.js +0 -37
  529. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/data.js +0 -20
  530. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/domain.js +0 -55
  531. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/store.js +0 -151
  532. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/ArtifactDetail.html +0 -3
  533. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/ArtifactDetail.js +0 -18
  534. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskCreate.html +0 -2
  535. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskCreate.js +0 -40
  536. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskDetail.html +0 -2
  537. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskDetail.js +0 -51
  538. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskLaunch.html +0 -2
  539. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskLaunch.js +0 -9
  540. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TasksPage.html +0 -5
  541. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TasksPage.js +0 -48
  542. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/domain.js +0 -204
  543. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/exampleSource.js +0 -22
  544. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/registry.js +0 -135
  545. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/store.js +0 -137
  546. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/WorkbenchPage.html +0 -3
  547. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/WorkbenchPage.js +0 -36
  548. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/model.js +0 -56
  549. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/store.js +0 -15
  550. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowCanvas.html +0 -2
  551. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowCanvas.js +0 -27
  552. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowDetail.html +0 -4
  553. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowDetail.js +0 -31
  554. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowEditor.html +0 -2
  555. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowEditor.js +0 -68
  556. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/WorkflowsPage.html +0 -5
  557. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/WorkflowsPage.js +0 -55
  558. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/data.js +0 -16
  559. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/domain.js +0 -83
  560. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/registry.js +0 -18
  561. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/store.js +0 -61
  562. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/admin.css +0 -60
  563. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/agents.css +0 -46
  564. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/antdv.css +0 -295
  565. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/app.css +0 -102
  566. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/delivery.css +0 -4
  567. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/intents.css +0 -37
  568. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/native.css +0 -22
  569. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/operations.css +0 -2
  570. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/pbc.css +0 -3
  571. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/permissions.css +0 -22
  572. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/pro.css +0 -1
  573. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/releases.css +0 -4
  574. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/reset.css +0 -246
  575. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/reviews.css +0 -8
  576. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/tasks.css +0 -6
  577. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/tokens.css +0 -15
  578. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/workbench.css +0 -61
  579. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/workflows.css +0 -1
  580. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/admin-rules.test.js +0 -96
  581. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/agents.test.js +0 -14
  582. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/intent-state.test.js +0 -37
  583. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/list-batch.test.js +0 -44
  584. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/operation-fixtures.js +0 -19
  585. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/operation-repair.test.js +0 -14
  586. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/operations.test.js +0 -25
  587. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/pbc-management.test.js +0 -17
  588. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/pbc-state.test.js +0 -24
  589. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/permission-config.test.js +0 -23
  590. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/permissions.test.js +0 -24
  591. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/releases.test.js +0 -50
  592. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/reviews.test.js +0 -36
  593. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/runtime-forms-router.test.js +0 -28
  594. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/runtime-state.test.js +0 -42
  595. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/runtime-stores.test.js +0 -16
  596. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/spec-state.test.js +0 -11
  597. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/tasks.test.js +0 -27
  598. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/workbench.test.js +0 -34
  599. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/workflows.test.js +0 -16
  600. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/convert.mjs +0 -168
  601. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/serve.mjs +0 -7
  602. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/styles.mjs +0 -11
  603. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/verify.mjs +0 -24
  604. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/serve.cjs +0 -16
  605. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/template-inventory.json +0 -28791
  606. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/template.json +0 -9
  607. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/usability.css +0 -44
  608. package/skills/i3-ui-prototype/assets/templates/gallery/index.html +0 -40
  609. package/skills/i3-ui-prototype/assets/templates/generation-options.js +0 -42
  610. package/skills/i3-ui-prototype/assets/templates/index.html +0 -3
  611. package/skills/i3-ui-prototype/assets/templates/modern-workspace/manifest.json +0 -9
  612. package/skills/i3-ui-prototype/assets/templates/modern-workspace/preset.json +0 -6
  613. package/skills/i3-ui-prototype/assets/templates/presentation.html +0 -17
  614. package/skills/i3-ui-prototype/assets/templates/serve-gallery.cjs +0 -23
  615. package/skills/i3-ui-prototype/references/artifact-contract.md +0 -66
  616. package/skills/i3-ui-prototype/references/content-template.md +0 -81
  617. package/skills/i3-ui-prototype/references/enterprise-admin.md +0 -44
  618. package/skills/i3-ui-prototype/references/entry-contract.md +0 -71
  619. package/skills/i3-ui-prototype/references/execution-evidence.md +0 -51
  620. package/skills/i3-ui-prototype/references/expert-adapter.md +0 -76
  621. package/skills/i3-ui-prototype/references/framework-contract.md +0 -76
  622. package/skills/i3-ui-prototype/references/generation-contract.md +0 -122
  623. package/skills/i3-ui-prototype/references/interaction-acceptance.md +0 -169
  624. package/skills/i3-ui-prototype/references/legacy-native.md +0 -58
  625. package/skills/i3-ui-prototype/references/optional-skills.md +0 -63
  626. package/skills/i3-ui-prototype/references/project-layout.md +0 -92
  627. package/skills/i3-ui-prototype/references/template-adapters.md +0 -63
  628. package/skills/i3-ui-prototype/references/workflow-contract.md +0 -77
  629. package/skills/i3-ui-prototype/scripts/adapters/easel-html.cjs +0 -30
  630. package/skills/i3-ui-prototype/scripts/adapters/legacy-html.cjs +0 -28
  631. package/skills/i3-ui-prototype/scripts/browser-workspace.cjs +0 -72
  632. package/skills/i3-ui-prototype/scripts/buddy-host.cjs +0 -40
  633. package/skills/i3-ui-prototype/scripts/check-design-provider.cjs +0 -9
  634. package/skills/i3-ui-prototype/scripts/check-prototype.cjs +0 -14
  635. package/skills/i3-ui-prototype/scripts/codebuddy-context.cjs +0 -92
  636. package/skills/i3-ui-prototype/scripts/codebuddy-hook.cjs +0 -298
  637. package/skills/i3-ui-prototype/scripts/codebuddy-ide-source.cjs +0 -69
  638. package/skills/i3-ui-prototype/scripts/codebuddy-registration.cjs +0 -125
  639. package/skills/i3-ui-prototype/scripts/content-template.cjs +0 -98
  640. package/skills/i3-ui-prototype/scripts/design-provider-discovery.cjs +0 -128
  641. package/skills/i3-ui-prototype/scripts/enterprise-template.cjs +0 -104
  642. package/skills/i3-ui-prototype/scripts/execution-assertions.cjs +0 -43
  643. package/skills/i3-ui-prototype/scripts/execution-diagnostics.cjs +0 -91
  644. package/skills/i3-ui-prototype/scripts/execution-evidence.cjs +0 -177
  645. package/skills/i3-ui-prototype/scripts/execution-gates.cjs +0 -216
  646. package/skills/i3-ui-prototype/scripts/execution-policy.cjs +0 -62
  647. package/skills/i3-ui-prototype/scripts/execution-recovery.cjs +0 -58
  648. package/skills/i3-ui-prototype/scripts/execution-runtime.cjs +0 -69
  649. package/skills/i3-ui-prototype/scripts/generation-assets.cjs +0 -18
  650. package/skills/i3-ui-prototype/scripts/generation-contract.cjs +0 -214
  651. package/skills/i3-ui-prototype/scripts/generation-evidence.cjs +0 -50
  652. package/skills/i3-ui-prototype/scripts/generation-replan.cjs +0 -34
  653. package/skills/i3-ui-prototype/scripts/hosts/codebuddy.cjs +0 -21
  654. package/skills/i3-ui-prototype/scripts/init-prototype.cjs +0 -8
  655. package/skills/i3-ui-prototype/scripts/manage-baseline.cjs +0 -11
  656. package/skills/i3-ui-prototype/scripts/native-browser.cjs +0 -785
  657. package/skills/i3-ui-prototype/scripts/native-build.cjs +0 -91
  658. package/skills/i3-ui-prototype/scripts/native-command.cjs +0 -35
  659. package/skills/i3-ui-prototype/scripts/native-delivery.cjs +0 -104
  660. package/skills/i3-ui-prototype/scripts/native-devtools.cjs +0 -92
  661. package/skills/i3-ui-prototype/scripts/native-files.cjs +0 -44
  662. package/skills/i3-ui-prototype/scripts/native-pilot-lib.cjs +0 -290
  663. package/skills/i3-ui-prototype/scripts/native-pilot.cjs +0 -59
  664. package/skills/i3-ui-prototype/scripts/native-tool-name.cjs +0 -5
  665. package/skills/i3-ui-prototype/scripts/native-tool-result.cjs +0 -14
  666. package/skills/i3-ui-prototype/scripts/optional-skill-install.cjs +0 -203
  667. package/skills/i3-ui-prototype/scripts/project-registry.cjs +0 -126
  668. package/skills/i3-ui-prototype/scripts/prototype-dependencies.cjs +0 -103
  669. package/skills/i3-ui-prototype/scripts/prototype-hooks.cjs +0 -94
  670. package/skills/i3-ui-prototype/scripts/prototype-lib.cjs +0 -277
  671. package/skills/i3-ui-prototype/scripts/prototype-locations.cjs +0 -69
  672. package/skills/i3-ui-prototype/scripts/ptc-callbacks.cjs +0 -131
  673. package/skills/i3-ui-prototype/scripts/sync-template.cjs +0 -19
  674. package/skills/i3-ui-prototype/scripts/template-adapters.cjs +0 -89
  675. package/skills/i3-ui-prototype/scripts/template-contract.cjs +0 -407
  676. package/skills/i3-ui-prototype/scripts/template-inventory.cjs +0 -78
  677. package/skills/i3-ui-prototype/scripts/validate-result.cjs +0 -117
@@ -1,32 +0,0 @@
1
- export const duties = [{ value: 'planner', label: '需求规划' }, { value: 'designer', label: '方案设计' }, { value: 'coder', label: '研发编码' }, { value: 'tester', label: '测试验证' }, { value: 'reviewer', label: '质量评审' }, { value: 'ops', label: '运行运维' }, { value: 'security', label: '安全检查' }];
2
- export function validateBasics(a) {
3
- if (!a.name.trim() || a.name.length > 60)
4
- throw Error('请填写 1–60 字的 Agent 名称。');
5
- if (!/^[a-z][a-z0-9-]{2,47}$/.test(a.code))
6
- throw Error('标识须为 3–48 位小写字母、数字或短横线,并以字母开头。');
7
- if (!a.pbcId || !a.project || !duties.some(d => d.value === a.duty))
8
- throw Error('请选择项目和 Agent 职责。');
9
- if (!Number.isInteger(a.memoryLimit) || a.memoryLimit < 1 || a.memoryLimit > 200 || !Number.isInteger(a.toolLimit) || a.toolLimit < 1 || a.toolLimit > 50)
10
- throw Error('请检查记忆消息数(1–200)和工具调用上限(1–50)。');
11
- }
12
- export function checkConfiguration(a, models, resources) {
13
- const m = models.find(m => m.id === a.modelRef), prompt = resources.find(r => r.id === a.promptRef && r.kind === 'prompt');
14
- const usable = (r) => !!r && r.state === 'ready' && (r.tenantIds.includes('*') || r.tenantIds.includes(a.tenantId));
15
- const skills = a.skillRefs.map(id => resources.find(r => r.id === id && r.kind === 'skill'));
16
- const tools = a.tools.map(t => resources.find(r => r.id === t.ref && r.kind === 'tool' && r.type === t.type));
17
- return [
18
- { key: 'model', label: '模型可用性', ok: !!m && !m.deleted && m.enabled && !!m.version && m.kind === 'chat', detail: !m ? '请选择模型' : m.deleted ? '模型已被删除' : !m.version ? '模型尚未发布' : !m.enabled ? '模型已停用' : m.kind !== 'chat' ? '向量模型不能作为 Agent 的对话模型' : '使用已发布配置 v' + m.version },
19
- { key: 'grant', label: '模型使用授权', ok: !!m?.authorized, detail: m?.authorized ? '租户、项目与 Agent 使用授权匹配' : '当前租户、项目、Agent 的模型使用授权不完整;保存后可由有权成员在模型管理中配置' },
20
- { key: 'prompt', label: '提示词预设', ok: usable(prompt), detail: usable(prompt) ? prompt.name + ' · ' + prompt.version : '请选择可用且在授权范围内的提示词预设' },
21
- { key: 'skills', label: '技能引用', ok: skills.every(usable), detail: skills.every(usable) ? skills.length + ' 项技能可用;可不绑定技能' : '存在停用、失效或超出范围的技能' },
22
- { key: 'tools', label: '工具白名单', ok: tools.every(r => usable(r) && !!r.allow?.length && !r.allow.includes('*')) && new Set(a.tools.map(t => t.type + ':' + t.ref)).size === a.tools.length, detail: tools.every(r => usable(r) && !!r.allow?.length && !r.allow.includes('*')) ? '仅允许已选工具声明的操作;未绑定工具不能调用' : '存在无效工具、类型不匹配或过宽的白名单' },
23
- { key: 'capability', label: '工具调用能力', ok: !a.tools.length || !!m?.capabilities.includes('工具调用'), detail: !a.tools.length ? '未绑定工具,无需工具调用能力' : m?.capabilities.includes('工具调用') ? '模型支持工具调用' : '所选模型不支持工具调用,请更换模型或移除工具' },
24
- { key: 'limits', label: '运行边界', ok: Number.isInteger(a.memoryLimit) && a.memoryLimit > 0 && a.memoryLimit <= 200 && Number.isInteger(a.toolLimit) && a.toolLimit > 0 && a.toolLimit <= 50, detail: '记忆窗口 ' + a.memoryLimit + ' 条;单次连续工具调用上限 ' + a.toolLimit + ' 次' },
25
- ];
26
- }
27
- export function assertRemovable(a) {
28
- if (a.enabled)
29
- throw Error('请先停用 Agent,再删除。');
30
- if (a.references.length)
31
- throw Error('仍被 ' + a.references.length + ' 个流程或任务引用,请先处理引用。');
32
- }
@@ -1,25 +0,0 @@
1
- import { ref } from '../../runtime/state.js';
2
- import { seedAgents } from "./data.js";
3
- export const registryKey = 'i3-prototype-antdv-agents-v010';
4
- let initial = { schema: 1, records: seedAgents(), audit: [] };
5
- try {
6
- const saved = JSON.parse(localStorage.getItem(registryKey) || 'null');
7
- if (saved?.schema === 1 && saved.records?.every((a) => a.id && a.recordVersion && Array.isArray(a.tools)) && Array.isArray(saved.audit))
8
- initial = saved;
9
- }
10
- catch { /* Local prototype can be reset. */ }
11
- export const agentRecords = ref(initial.records), agentAudit = ref(initial.audit);
12
- export const modelAgentEntries = () => agentRecords.value.filter(a => !a.isDeleted).map(a => ({ value: a.grantKey, label: a.name, projects: [a.project] }));
13
- export const modelProjectEntries = () => agentRecords.value.filter(a => !a.isDeleted).map(a => ({ value: a.project, tenantId: a.tenantId }));
14
- export const modelAgentLabel = (key) => agentRecords.value.find(a => a.grantKey === key)?.name || key;
15
- export const agentModelReferences = (modelId) => agentRecords.value.filter(a => !a.isDeleted && a.modelRef === modelId).map(a => ({ name: a.name, kind: 'Agent', version: '记录 v' + a.recordVersion }));
16
- export function commitAgents(records, audit) {
17
- try {
18
- localStorage.setItem(registryKey, JSON.stringify({ schema: 1, records, audit }));
19
- }
20
- catch {
21
- throw Error('浏览器无法保存 Agent,本次操作未提交,请保留输入后重试。');
22
- }
23
- agentRecords.value = records;
24
- agentAudit.value = audit;
25
- }
@@ -1,85 +0,0 @@
1
- import { stateOf } from "../pbc/management.js";
2
- import { taskAgentReferences } from "../tasks/registry.js";
3
- import { workflowAgentReferences } from "../workflows/registry.js";
4
- import { defineStore } from "../../runtime/state.js";
5
- import { computed, ref } from '../../runtime/state.js';
6
- import { useModels } from "../models/store.js";
7
- import { usePbcs } from "../pbc/store.js";
8
- import { useSession } from "../shared/session.js";
9
- import { metadata } from "../shared/policy.js";
10
- import { assertBatch } from "../shared/listBatch.js";
11
- import { resourceCatalog, seedAgents } from "./data.js";
12
- import { checkConfiguration, validateBasics, assertRemovable } from "./domain.js";
13
- import { agentRecords, agentAudit, commitAgents } from "./registry.js";
14
- const clone = (x) => JSON.parse(JSON.stringify(x));
15
- export const useAgents = defineStore('agents', () => {
16
- const session = useSession(), models = useModels(), pbcs = usePbcs(), scene = ref('normal');
17
- const records = computed(() => agentRecords.value.filter(a => !a.isDeleted && session.can('agent:view', a.tenantId, a.pbcId)).map(a => ({ ...a, references: [...a.references, ...workflowAgentReferences(a.id), ...taskAgentReferences(a.id)] })));
18
- const projects = computed(() => pbcs.items.filter(p => stateOf(p) === 'active' && session.can('agent:edit', p.tenantId, p.id)));
19
- const resources = computed(() => resourceCatalog.filter(r => r.tenantIds.includes('*') || session.actor.grants.some(g => g.actions.includes('agent:view') && (g.tenantIds.includes('*') || r.tenantIds.some(t => g.tenantIds.includes(t))))));
20
- const item = (id) => records.value.find(a => a.id === id);
21
- const choices = (a) => models.agentChoices(a.tenantId, a.project, a.grantKey);
22
- const checks = (a) => { const p = pbcs.items.find(p => p.id === a.pbcId && p.tenantId === a.tenantId), ok = !!p && stateOf(p) === 'active'; return [{ key: 'pbc', label: '所属 PBC 状态', ok, detail: ok ? 'PBC 可继续使用' : 'PBC 已归档或不可访问,不能启用新的配置' }, ...checkConfiguration(a, choices(a), resources.value)]; };
23
- const audit = (a) => session.can('agent:audit', a.tenantId, a.pbcId) ? agentAudit.value.filter(e => e.agentId === a.id) : [];
24
- function commit(next, affected, action, detail) {
25
- const at = new Date().toISOString();
26
- commitAgents(next, [...affected.map(a => ({ id: crypto.randomUUID(), agentId: a.id, name: a.name, actor: session.actor.name, at, action, detail, tenantId: a.tenantId, pbcId: a.pbcId })), ...agentAudit.value]);
27
- }
28
- function current(id, action, expected) {
29
- const a = agentRecords.value.find(a => a.id === id && !a.isDeleted);
30
- if (!a)
31
- throw Error('Agent 不存在或无权访问。');
32
- session.require(action, a.tenantId, a.pbcId);
33
- session.require('agent:view', a.tenantId, a.pbcId);
34
- if (a.recordVersion !== expected)
35
- throw Error('记录已被更新,请重新打开并核对。');
36
- return a;
37
- }
38
- function blank() {
39
- const p = projects.value[0], id = crypto.randomUUID();
40
- return { ...metadata(session.actor, new Date().toISOString(), p?.tenantId || session.actor.tenantId), id, name: '', code: '', description: '', duty: 'planner', pbcId: p?.id || '', project: p?.resourceKey || p?.name || '', grantKey: id, modelRef: '', promptRef: '', skillRefs: [], tools: [], memoryLimit: 40, toolLimit: 10, enabled: false, references: [] };
41
- }
42
- function save(input, isNew) {
43
- session.require('agent:view', input.tenantId, input.pbcId);
44
- session.require('agent:edit', input.tenantId, input.pbcId);
45
- validateBasics(input);
46
- const p = projects.value.find(p => p.id === input.pbcId && p.tenantId === input.tenantId);
47
- if (!p || (p.resourceKey || p.name) !== input.project)
48
- throw Error('项目已失效或不在可配置范围。');
49
- if (agentRecords.value.some(a => !a.isDeleted && a.id !== input.id && a.tenantId === input.tenantId && a.code === input.code))
50
- throw Error('该租户下的 Agent 标识已存在。');
51
- const old = isNew ? undefined : current(input.id, 'agent:edit', input.recordVersion);
52
- if (old?.enabled)
53
- throw Error('请先停用 Agent,再编辑配置。');
54
- if (old && (input.code !== old.code || input.pbcId !== old.pbcId || input.tenantId !== old.tenantId))
55
- throw Error('已有 Agent 的标识和所属项目不可修改。');
56
- const at = new Date().toISOString();
57
- const a = { ...clone(input), ...(old ? { ...metadata(session.actor, at, old.tenantId), createdById: old.createdById, createdBy: old.createdBy, createdDept: old.createdDept, createdAt: old.createdAt, recordVersion: old.recordVersion + 1 } : metadata(session.actor, at, input.tenantId)), enabled: false, grantKey: old?.grantKey || input.id, references: old?.references || [] };
58
- session.writeCheck();
59
- commit(isNew ? [a, ...agentRecords.value] : agentRecords.value.map(r => r.id === a.id ? a : r), [a], isNew ? '创建 Agent' : '保存配置', '保存为停用配置;记录 v' + a.recordVersion);
60
- scene.value = 'normal';
61
- return a.id;
62
- }
63
- function toggle(id, expected) {
64
- const old = current(id, 'agent:status', expected);
65
- if (!old.enabled && checks(old).some(c => !c.ok))
66
- throw Error('存在配置或授权问题,请处理检查结果后启用。');
67
- const a = { ...old, enabled: !old.enabled, recordVersion: old.recordVersion + 1, updatedBy: session.actor.name, updatedAt: new Date().toISOString() };
68
- session.writeCheck();
69
- commit(agentRecords.value.map(r => r.id === id ? a : r), [a], a.enabled ? '启用 Agent' : '停用 Agent', '记录 v' + a.recordVersion + ';在途任务生效规则待正式实现');
70
- }
71
- function check(id, expected) {
72
- const a = current(id, 'agent:check', expected), result = checks(a);
73
- commit(agentRecords.value, [a], '检查配置', result.filter(c => !c.ok).length + ' 项待处理;仅本地引用与配置检查');
74
- return result;
75
- }
76
- function checkRemove(target) { const a = current(target.id, 'agent:delete', target.recordVersion); assertRemovable({ ...a, references: [...a.references, ...workflowAgentReferences(a.id), ...taskAgentReferences(a.id)] }); }
77
- function removeMany(targets) {
78
- const selected = assertBatch(agentRecords.value, targets, a => { session.require('agent:view', a.tenantId, a.pbcId); session.require('agent:delete', a.tenantId, a.pbcId); assertRemovable({ ...a, references: [...a.references, ...workflowAgentReferences(a.id), ...taskAgentReferences(a.id)] }); });
79
- const ids = new Set(selected.map(a => a.id)), at = new Date().toISOString();
80
- session.writeCheck();
81
- commit(agentRecords.value.map(a => ids.has(a.id) ? { ...a, isDeleted: true, updatedBy: session.actor.name, updatedAt: at, recordVersion: a.recordVersion + 1 } : a), selected, '删除 Agent', '逻辑删除;本批 ' + selected.length + ' 项');
82
- }
83
- function reset() { commitAgents(seedAgents(), []); scene.value = 'normal'; }
84
- return { records, projects, resources, scene, item, choices, checks, audit, blank, save, toggle, check, checkRemove, removeMany, reset };
85
- });
@@ -1,2 +0,0 @@
1
- <!-- 来源:src/intents/IntentClose.vue;HTML / 原生 DOM 绑定,不含 Vue 运行时。 -->
2
- <template data-component="Modal" data-bind-open="(true)" title="关闭未确认意图" ok-text="确认关闭" cancel-text="继续保留" data-bind-ok-button-props="({ danger: true, disabled: !store.canClose })" data-bind-mask="({ closable: false })" data-on-ok="(submit)" data-on-cancel="(emit('close'))"><template data-component="Alert" class="form-intro" type="warning" show-icon="" data-bind-title="(intent.title)" description="关闭后停止澄清和确认,保留原文、版本与操作记录;本轮不提供重新打开。"></template><label for="close-intent-reason">关闭原因</label><template data-component="Input.TextArea" id="close-intent-reason" data-model-value="(reason)" data-bind-rows="(4)" data-bind-maxlength="(500)" placeholder="说明为何不再继续这条意图"></template><template data-component="Alert" data-if="(error)" class="intent-error" type="error" data-bind-title="(error)" show-icon=""></template></template>
@@ -1,17 +0,0 @@
1
- import { ref } from '../../runtime/state.js';
2
- import { Alert, Input, Modal, message } from "../../runtime/widgets.js";
3
- import { useIntents } from "./store.js";
4
- import { createComponent } from '../../runtime/dom.js';
5
- export default createComponent({ name: 'IntentClose', propKeys: ["intent"], template: new URL('./IntentClose.html', import.meta.url).href, setup(__props, __emit) {
6
- const props = __props, emit = __emit;
7
- const store = useIntents(), reason = ref(''), error = ref(''), expected = props.intent.recordVersion;
8
- function submit() { try {
9
- store.close(props.intent.id, reason.value, expected);
10
- message.success('意图已关闭,内容与历史保留');
11
- emit('close');
12
- }
13
- catch (e) {
14
- error.value = e.message;
15
- } }
16
- return { ref, Alert, Input, Modal, message, useIntents, props, emit, store, reason, error, expected, submit };
17
- } });
@@ -1,2 +0,0 @@
1
- <!-- 来源:src/intents/IntentCreate.vue;HTML / 原生 DOM 绑定,不含 Vue 运行时。 -->
2
- <template data-component="IntentHeader" data-bind-step="(0)"><template data-component="Button" data-bind-disabled="(!store.canEdit)" data-bind-loading="(saving)" data-on-click="(save(false))">保存草稿</template></template><template data-component="Alert" data-if="(!store.canEdit)" type="info" show-icon="" class="page-alert" title="当前为只读成员,不能发起意图。"></template><div class="intent-grid"><section class="panel intent-main"><div class="section-heading"><h2>描述业务目标</h2><template data-component="Button" data-bind-disabled="(!store.canEdit)" data-on-click="(example)"><template data-component="EditOutlined"></template>填入供热示例</template></div><p class="muted form-intro">先说清楚你想做什么,接下来逐项补充使用者、处理流程和验收标准。</p><template data-component="ProForm" name="intent-create" data-bind-form="(form)" layout="vertical" data-bind-disabled="(!store.canEdit || saving)" class="intent-form"></template><div class="intent-actions"><span class="muted">{{ (dirty ? '有尚未保存的输入' : '保存后可随时回来继续') }}</span><template data-component="Space"><template data-component="Button" data-bind-disabled="(!store.canEdit)" data-bind-loading="(saving)" data-on-click="(save(false))">保存草稿</template><template data-component="Button" type="primary" data-bind-disabled="(!store.canEdit)" data-bind-loading="(saving)" data-on-click="(save(true))">开始澄清</template></template></div></section><template data-component="IntentSummary"></template></div>
@@ -1,66 +0,0 @@
1
- import { confirmAction } from "../shell/confirmation.js";
2
- import { computed, onBeforeUnmount, onMounted, ref } from '../../runtime/state.js';
3
- import { onBeforeRouteLeave, useRouter } from "../../runtime/router.js";
4
- import { Alert, Button, Space, message } from "../../runtime/widgets.js";
5
- import { EditOutlined } from "../../runtime/icons.js";
6
- import { ProForm, useForm } from "../../runtime/widgets.js";
7
- import { contexts, heatingExample } from "./data.js";
8
- import { useIntents } from "./store.js";
9
- import IntentHeader from "./IntentHeader.js";
10
- import IntentSummary from "./IntentSummary.js";
11
- import { createComponent } from '../../runtime/dom.js';
12
- export default createComponent({ name: 'IntentCreate', propKeys: [], template: new URL('./IntentCreate.html', import.meta.url).href, setup(__props, __emit) {
13
- const store = useIntents(), router = useRouter(), saved = ref(false), saving = ref(false);
14
- const initialReset = store.resetTick;
15
- const initial = { title: '', request: '', outcome: '', context: contexts[0] };
16
- const form = useForm({ ...initial }, [
17
- { path: 'title', label: '意图名称', component: 'input', placeholder: '用一句话概括要解决的问题', span: 24, maxlength: 80, showCount: true, rules: [{ required: true, whitespace: true, message: '请输入意图名称' }] },
18
- { path: 'request', label: '我的需求', component: 'textarea', placeholder: '描述业务目标、当前问题,以及你期待的结果。', span: 24, autoSize: { minRows: 6, maxRows: 10 }, maxlength: 2000, showCount: true, rules: [{ required: true, whitespace: true, message: '请描述你的需求' }] },
19
- { path: 'outcome', label: '预期结果', component: 'textarea', placeholder: '完成后,用户能得到什么可观察的结果?', span: 24, autoSize: { minRows: 3, maxRows: 6 }, maxlength: 1000, rules: [{ required: true, whitespace: true, message: '请填写预期结果' }] },
20
- { path: 'context', label: '拟归属', component: 'select', options: contexts.map(value => ({ label: value, value })), allowClear: false, span: 24, extra: '尚未确定所属 PBC 时,可先保存在意图池。拟归属不会变更当前租户。' },
21
- ]);
22
- const dirty = computed(() => !saved.value && store.resetTick === initialReset && JSON.stringify(form.formData) !== JSON.stringify(initial));
23
- function example() {
24
- if (!store.canEdit)
25
- return;
26
- const fill = () => form.setFormData({ ...heatingExample });
27
- if (dirty.value)
28
- confirmAction({ title: '替换当前输入为示例?', content: '只替换本页尚未保存的内容。', okText: '填入示例', cancelText: '保留输入', onOk: fill });
29
- else
30
- fill();
31
- }
32
- async function save(start) {
33
- if (!store.canEdit)
34
- return;
35
- try {
36
- await form.formRef.value?.validate();
37
- }
38
- catch {
39
- return;
40
- }
41
- saving.value = true;
42
- try {
43
- const id = store.create({ ...form.formData });
44
- if (start)
45
- store.start(id);
46
- saved.value = true;
47
- store.scene = 'normal';
48
- message.success(start ? '已保存,开始补充需求' : '草稿已保存');
49
- await router.push(start ? '/intents/' + id + '/workspace' : '/intents');
50
- }
51
- catch (e) {
52
- message.error(e.message);
53
- }
54
- finally {
55
- saving.value = false;
56
- }
57
- }
58
- onBeforeRouteLeave(() => !dirty.value || new Promise(resolve => confirmAction({ title: '离开前尚有内容未保存', content: '可继续填写并保存草稿,或放弃本次输入。', okText: '放弃并离开', cancelText: '继续填写', onOk: () => resolve(true), onCancel: () => resolve(false) })));
59
- function beforeUnload(event) { if (dirty.value) {
60
- event.preventDefault();
61
- event.returnValue = '';
62
- } }
63
- onMounted(() => window.addEventListener('beforeunload', beforeUnload));
64
- onBeforeUnmount(() => window.removeEventListener('beforeunload', beforeUnload));
65
- return { confirmAction, computed, onBeforeUnmount, onMounted, ref, onBeforeRouteLeave, useRouter, Alert, Button, Space, message, EditOutlined, ProForm, useForm, contexts, heatingExample, useIntents, IntentHeader, IntentSummary, store, router, saved, saving, initialReset, initial, form, dirty, example, save, beforeUnload };
66
- } });
@@ -1,3 +0,0 @@
1
- <!-- 来源:src/intents/IntentDecisions.vue;HTML / 原生 DOM 绑定,不含 Vue 运行时。 -->
2
- <section class="decision-register" aria-label="决策登记"><div class="section-heading"><h2>未决问题与决策登记</h2><template data-component="Tag" data-bind-color="(decisions.some(d =&gt; !d.answer) ? 'orange' : 'green')">{{ (decisions.filter(d =&gt; !d.answer).length) }} 项待确认</template></div><p class="muted">澄清回答与未决问题分别核对。{{ (newVersion ? '保存变更会形成新的意图版本。' : '仍有未决问题时,意图不能确认。') }}</p><template data-component="Empty" data-if="(!decisions.length)" data-bind-image="(Empty.PRESENTED_IMAGE_SIMPLE)" description="暂无登记的未决问题,请确认没有遗漏。"></template><div data-each="d in (decisions)" data-bind-key="(d.id)" class="decision-row"><div class="section-heading"><strong>{{ (d.question) }}</strong><template data-component="Tag" data-bind-color="(d.answer ? 'green' : 'orange')">{{ (d.answer ? '已登记结论' : '待确认') }}</template></div><p data-if="(d.answer)">{{ (d.answer) }}</p><small data-if="(d.resolvedAt)" class="muted">{{ (d.resolvedBy) }} · {{ (formatDate(d.resolvedAt)) }}</small><template data-if="(selected === d.id)"><label data-bind-for="('conclusion-' + d.id)">决策结论</label><template data-component="Input.TextArea" data-bind-id="('conclusion-' + d.id)" data-model-value="(conclusion)" data-bind-maxlength="(1000)" data-bind-rows="(3)"></template><div class="decision-actions"><template data-component="Button" data-on-click="(selected = '')">取消</template><template data-component="Button" type="primary" data-on-click="(resolve)">保存结论</template></div></template><template data-component="Button" data-else-if="(editable)" type="link" data-on-click="selected = d.id;
3
- conclusion = d.answer;">{{ (d.answer ? '修订结论' : '登记结论') }}</template></div><div data-if="(editable)" class="decision-add"><label for="new-decision">补充待确认问题</label><template data-component="Input.TextArea" id="new-decision" data-model-value="(question)" data-bind-maxlength="(500)" data-bind-rows="(2)" placeholder="例如:超时后由哪个岗位复核?"></template><template data-component="Button" data-on-click="(add)">登记问题</template></div><template data-component="Alert" data-if="(error)" type="error" data-bind-title="(error)" show-icon=""></template></section>
@@ -1,38 +0,0 @@
1
- import { ref } from '../../runtime/state.js';
2
- import { Alert, Button, Empty, Input, Tag } from "../../runtime/widgets.js";
3
- import { useSession } from "../shared/session.js";
4
- import { formatDate } from "../shared/policy.js";
5
- import { createComponent } from '../../runtime/dom.js';
6
- export default createComponent({ name: 'IntentDecisions', propKeys: ["decisions", "editable", "newVersion", "commit"], template: new URL('./IntentDecisions.html', import.meta.url).href, setup(__props, __emit) {
7
- const props = __props;
8
- const emit = __emit, session = useSession();
9
- const question = ref(''), selected = ref(''), conclusion = ref(''), error = ref('');
10
- function dispatch(decisions) { if (props.commit)
11
- return props.commit(decisions); emit('change', decisions); return true; }
12
- function add() {
13
- if (!props.editable)
14
- return;
15
- if (!question.value.trim()) {
16
- error.value = '请填写需要确认的问题。';
17
- return;
18
- }
19
- if (!dispatch([...props.decisions, { id: crypto.randomUUID(), question: question.value.trim(), answer: '' }]))
20
- return;
21
- question.value = '';
22
- error.value = '';
23
- }
24
- function resolve() {
25
- if (!props.editable)
26
- return;
27
- if (!conclusion.value.trim()) {
28
- error.value = '请填写明确结论。';
29
- return;
30
- }
31
- if (!dispatch(props.decisions.map(d => d.id === selected.value ? { ...d, answer: conclusion.value.trim(), resolvedBy: session.actor.name, resolvedAt: new Date().toISOString() } : d)))
32
- return;
33
- selected.value = '';
34
- conclusion.value = '';
35
- error.value = '';
36
- }
37
- return { ref, Alert, Button, Empty, Input, Tag, useSession, formatDate, props, emit, session, question, selected, conclusion, error, dispatch, add, resolve };
38
- } });
@@ -1,2 +0,0 @@
1
- <!-- 来源:src/intents/IntentDetail.vue;HTML / 原生 DOM 绑定,不含 Vue 运行时。 -->
2
- <template data-component="Result" data-if="(!intent)" status="403" title="记录不存在或当前身份无权访问"><template data-slot="extra"><template data-component="Button" type="primary" data-on-click="(router.push('/intents'))">返回意图池</template></template></template><template data-else=""><template data-component="IntentSource" data-bind-intent="(intent)"></template><template data-component="IntentHeader" data-bind-intent="(intent)" data-bind-step="(intent.status === 'confirmed' ? 3 : 2)"><template data-component="Space" wrap=""><template data-component="Button" data-if="(store.canClose &amp;&amp; !closed &amp;&amp; intent.status !== 'confirmed')" danger="" data-bind-disabled="(busy)" data-on-click="(closing = true)">关闭意图</template><template data-component="Button" data-on-click="(history = true)"><template data-component="HistoryOutlined"></template>版本记录</template></template></template><template data-component="Alert" data-if="(store.notice || error)" class="page-alert" type="error" show-icon="" data-bind-title="(error || store.notice)"></template><template data-component="Alert" data-if="(intent.confirmation === 'pending')" class="page-alert" type="info" show-icon="" title="正在提交确认,请稍候…"></template><template data-component="Alert" data-if="(intent.confirmation === 'unknown')" class="page-alert" type="warning" show-icon="" title="确认结果待核实,请勿重复提交" description="本演示模拟确认请求已被接受、响应丢失。先核实这一次请求的结果,再决定后续操作。"><template data-slot="action"><template data-component="Button" data-bind-disabled="(!canConfirm)" data-on-click="(reconcile)">核实确认结果</template></template></template><template data-component="Alert" data-if="(intent.confirmation === 'failed')" class="page-alert" type="error" show-icon="" data-bind-title="(intent.error)"></template><template data-component="Alert" data-if="(intent.status === 'confirmed')" class="page-alert" type="success" show-icon="" data-bind-title="('意图 v' + version?.number + ' 已确认')" description="进入需求规格工作区,完善需求与验收后确认版本。"><template data-slot="action"><template data-component="Button" data-bind-disabled="(!session.can('spec:view', intent.tenantId))" data-on-click="(router.push('/intents/' + intent.id + '/spec'))">查看需求规格</template></template></template><template data-component="Alert" data-if="(closed)" class="page-alert" type="warning" show-icon="" title="意图已关闭" data-bind-description="(intent.closedBy + ' · ' + dateText(intent.closedAt) + ';原因:' + intent.closedReason)"></template><template data-component="Alert" data-if="(!canConfirm &amp;&amp; intent.status === 'ready')" class="page-alert" type="info" show-icon="" title="当前没有意图确认权限" description="未决问题为零仍需确认权限。请在独立的权限管理中配置当前租户的“确认意图”权限,或联系业务管理员。"></template><template data-component="Alert" data-if="(intent.status === 'ready' &amp;&amp; unresolved(intent.decisions).length)" class="page-alert" type="warning" show-icon="" data-bind-title="('还有 ' + unresolved(intent.decisions).length + ' 项决策未处理,暂不能确认意图')" description="在下方决策登记填写结论并保存为新版本,再确认。"></template><div class="intent-grid"><section class="panel intent-main"><div class="section-heading"><h2>意图内容</h2><template data-component="Tag" color="blue" data-bind-bordered="(false)">{{ (version ? 'v' + version.number : '未形成版本') }}</template></div><template data-component="IntentDocument" data-bind-value="(version || intent)"></template><template data-component="IntentDecisions" data-bind-decisions="(intent.decisions)" data-bind-editable="(store.canEdit &amp;&amp; !closed &amp;&amp; !busy &amp;&amp; intent.status !== 'confirmed')" data-bind-new-version="(!!version)" data-bind-commit="(saveDecisions)"></template><div data-if="(!closed)" class="intent-actions"><span class="muted">{{ (unresolved(intent.decisions).length ? '请先处理未决问题' : '内容变更将形成新版本') }}</span><template data-component="Space" wrap=""><template data-component="Button" data-bind-disabled="(!store.canEdit || busy)" data-on-click="(replan = true)">重新规划</template><template data-component="Button" data-bind-disabled="(!store.canEdit || busy)" data-on-click="(edit = true)">修改</template><template data-component="Button" data-if="(intent.status === 'ready')" type="primary" data-bind-loading="(intent.confirmation === 'pending')" data-bind-disabled="(!canConfirm || busy || !!unresolved(intent.decisions).length)" data-on-click="(confirm)">{{ (intent.confirmation === 'failed' ? '重试确认' : '确认意图') }}</template></template></div></section><aside class="panel intent-summary" aria-label="确认信息"><h2>确认信息</h2><dl class="intent-info"><dt>当前版本</dt><dd>{{ (version ? '意图 v' + version.number : '草稿') }}</dd><dt>PBC 归属</dt><dd>{{ (affiliationOf(intent).label) }}</dd><dt>发起人</dt><dd>{{ (intent.owner) }}</dd></dl><div class="summary-context"><h3>{{ (version?.confirmedAt ? '确认记录' : '确认前请核对') }}</h3><p data-if="(version?.confirmedAt)"><template data-component="CheckCircleOutlined" class="answered"></template> {{ (version.confirmedBy) }} · {{ (dateText(version.confirmedAt)) }}</p><ul data-else="" class="confirmation-checks"><li>问题、预期结果与范围一致</li><li>未决问题已有明确结论</li><li>以有权身份确认当前版本</li></ul></div><div class="summary-context"><template data-component="RecordMetadata" data-bind-record="(intent)" compact=""></template></div></aside></div><template data-component="IntentRevision" data-if="(edit)" data-bind-intent="(intent)" data-on-close="(edit = false)"></template><template data-component="IntentReplan" data-if="(replan)" data-bind-intent="(intent)" data-on-close="(replan = false)"></template><template data-component="IntentHistory" data-if="(history)" data-bind-intent="(intent)" data-on-close="(history = false)"></template><template data-component="IntentClose" data-if="(closing)" data-bind-intent="(intent)" data-on-close="(closing = false)"></template></template>
@@ -1,66 +0,0 @@
1
- import IntentSource from "../operations/IntentSource.js";
2
- import { useDeliveryView } from "../shared/deliveryView.js";
3
- import { confirmAction } from "../shell/confirmation.js";
4
- import { computed, ref, watch } from '../../runtime/state.js';
5
- import { useRoute, useRouter } from "../../runtime/router.js";
6
- import { Alert, Button, Result, Space, Tag, message } from "../../runtime/widgets.js";
7
- import { HistoryOutlined, CheckCircleOutlined } from "../../runtime/icons.js";
8
- import { useIntents } from "./store.js";
9
- import { lastVersion, unresolved, confirmationBusy } from "./domain.js";
10
- import { dateText } from "./data.js";
11
- import IntentHeader from "./IntentHeader.js";
12
- import IntentDocument from "./IntentDocument.js";
13
- import IntentRevision from "./IntentRevision.js";
14
- import IntentReplan from "./IntentReplan.js";
15
- import IntentHistory from "./IntentHistory.js";
16
- import IntentDecisions from "./IntentDecisions.js";
17
- import IntentClose from "./IntentClose.js";
18
- import RecordMetadata from "../shared/RecordMetadata.js";
19
- import { useSession } from "../shared/session.js";
20
- import { createComponent } from '../../runtime/dom.js';
21
- export default createComponent({ name: 'IntentDetail', propKeys: [], template: new URL('./IntentDetail.html', import.meta.url).href, setup(__props, __emit) {
22
- const { affiliationOf } = useDeliveryView();
23
- const session = useSession();
24
- const route = useRoute(), router = useRouter(), store = useIntents(), edit = ref(false), replan = ref(false), history = ref(false), closing = ref(false), error = ref('');
25
- const intent = computed(() => store.get(String(route.params.id))), version = computed(() => intent.value && lastVersion(intent.value));
26
- const busy = computed(() => !!intent.value && confirmationBusy(intent.value)), closed = computed(() => intent.value?.status === 'closed');
27
- watch(() => intent.value?.status, status => { if (status === 'draft' || status === 'clarifying')
28
- router.replace('/intents/' + intent.value.id + '/workspace'); }, { immediate: true });
29
- const canConfirm = computed(() => !!intent.value && session.can('intent:confirm', intent.value.tenantId));
30
- function confirm() {
31
- if (!intent.value || !version.value || !canConfirm || busy.value)
32
- return;
33
- const id = intent.value.id, number = version.value.number, expected = intent.value.recordVersion;
34
- confirmAction({ title: '确认意图 v' + number + '?', content: '确认当前展示的问题、预期结果、范围和决策结论。确认记录绑定此版本及当前身份;本轮不创建 PBC 或启动开发。', okText: '确认此版本', cancelText: '继续查看', onOk: async () => {
35
- try {
36
- const result = await store.confirm(id, number, expected);
37
- if (result === 'confirmed')
38
- message.success('意图 v' + number + ' 已确认');
39
- else if (result === 'unknown')
40
- message.warning('响应未收到,请先核实确认结果');
41
- }
42
- catch (e) {
43
- error.value = e.message;
44
- }
45
- } });
46
- }
47
- function saveDecisions(decisions) { if (!intent.value)
48
- return false; try {
49
- store.setDecisions(intent.value.id, decisions, intent.value.recordVersion);
50
- error.value = '';
51
- return true;
52
- }
53
- catch (e) {
54
- error.value = e.message;
55
- return false;
56
- } }
57
- function reconcile() { try {
58
- store.reconcile(intent.value.id);
59
- message.success('已核实:该版本确认成功,未重复提交');
60
- error.value = '';
61
- }
62
- catch (e) {
63
- error.value = e.message;
64
- } }
65
- return { IntentSource, useDeliveryView, affiliationOf, confirmAction, computed, ref, watch, useRoute, useRouter, Alert, Button, Result, Space, Tag, message, HistoryOutlined, CheckCircleOutlined, useIntents, lastVersion, unresolved, confirmationBusy, dateText, IntentHeader, IntentDocument, IntentRevision, IntentReplan, IntentHistory, IntentDecisions, IntentClose, RecordMetadata, useSession, session, route, router, store, edit, replan, history, closing, error, intent, version, busy, closed, canConfirm, confirm, saveDecisions, reconcile };
66
- } });
@@ -1,2 +0,0 @@
1
- <!-- 来源:src/intents/IntentDocument.vue;HTML / 原生 DOM 绑定,不含 Vue 运行时。 -->
2
- <div class="intent-document"><section><h3>1. 要解决的问题</h3><p>{{ (value.request) }}</p></section><section><h3>2. 预期结果</h3><p>{{ (value.outcome || '待补充') }}</p><h4>验收标准</h4><p>{{ (value.answers.acceptance || '待补充') }}</p></section><section><h3>3. 影响的用户与系统</h3><p>{{ (value.answers.audience || '待补充') }}</p><h4>处理流程与系统边界</h4><p>{{ (value.answers.process || '待补充') }}</p></section><section><h3>4. 约束与限制</h3><p>{{ (value.answers.boundary || '待补充') }}</p></section><section><h3>5. 未决问题</h3><p data-if="(!value.decisions?.length)">暂无登记的未决问题。</p><div data-each="d in (value.decisions || [])" data-bind-key="(d.id)" class="document-decision"><strong>{{ (d.question) }}</strong><p>{{ (d.answer || '待确认,阻断意图确认') }}</p></div></section></div>
@@ -1,5 +0,0 @@
1
- import { createComponent } from '../../runtime/dom.js';
2
- export default createComponent({ name: 'IntentDocument', propKeys: ["value"], template: new URL('./IntentDocument.html', import.meta.url).href, setup(__props, __emit) {
3
- __props;
4
- return {};
5
- } });
@@ -1,2 +0,0 @@
1
- <!-- 来源:src/intents/IntentHeader.vue;HTML / 原生 DOM 绑定,不含 Vue 运行时。 -->
2
- <template data-component="RouterLink" to="/intents" class="text-button intent-back"><template data-component="LeftOutlined"></template>返回意图池</template><div class="page-heading intent-heading"><div><h1>{{ (intent?.title || '发起意图') }}</h1><p data-if="(intent)" class="intent-meta"><span class="mono">{{ (intent.code) }}</span><template data-component="Tag" data-bind-color="(statusMeta[intent.status].color)" data-bind-bordered="(false)">{{ (statusMeta[intent.status].label) }}</template><span>{{ (affiliationOf(intent).label) }}</span></p><p data-else="">描述你想解决的问题,先把业务目标说清楚。</p></div><div class="intent-header-actions"><slot><template data-component="Button" data-on-click="(router.push('/intents'))">返回列表</template></slot></div></div><template data-component="Steps" class="intent-steps" title-placement="vertical" data-bind-current="(step)" data-bind-items="([{ title: '发起需求' }, { title: '澄清范围' }, { title: '确认意图' }])"></template>
@@ -1,12 +0,0 @@
1
- import { useDeliveryView } from "../shared/deliveryView.js";
2
- import { Button, Tag, Steps } from "../../runtime/widgets.js";
3
- import { LeftOutlined } from "../../runtime/icons.js";
4
- import { useRouter } from "../../runtime/router.js";
5
- import { statusMeta } from "./data.js";
6
- import { createComponent } from '../../runtime/dom.js';
7
- export default createComponent({ name: 'IntentHeader', propKeys: ["intent", "step"], template: new URL('./IntentHeader.html', import.meta.url).href, setup(__props, __emit) {
8
- const { affiliationOf } = useDeliveryView();
9
- __props;
10
- const router = useRouter();
11
- return { useDeliveryView, affiliationOf, Button, Tag, Steps, LeftOutlined, useRouter, statusMeta, router };
12
- } });
@@ -1,2 +0,0 @@
1
- <!-- 来源:src/intents/IntentHistory.vue;HTML / 原生 DOM 绑定,不含 Vue 运行时。 -->
2
- <template data-component="Drawer" data-bind-open="(true)" title="版本与操作记录" data-bind-size="(720)" data-on-close="(emit('close'))"><template data-component="Tabs" data-model-active-key="(tab)" data-bind-items="([{ key: 'versions', label: '意图版本' }, { key: 'events', label: '操作记录' }])"></template><template data-if="(tab === 'versions')"><div class="version-toolbar"><label for="intent-history-version">版本</label><template data-component="Select" id="intent-history-version" data-model-value="(number)" data-bind-options="(intent.versions.map(v =&gt; ({ label: '意图 v' + v.number, value: v.number })))"></template><template data-component="Tag" data-if="(version)" data-bind-color="(version.confirmedAt ? 'green' : 'default')">{{ (version.confirmedAt ? '已确认版本' : '未确认版本') }}</template></div><template data-if="(version)"><template data-component="Alert" type="info" show-icon="" data-bind-title="(version.title)" data-bind-description="(version.reason + ' · ' + dateText(version.createdAt))"></template><p data-if="(version.confirmedAt)" class="version-confirmed">{{ (version.confirmedBy) }} · {{ (dateText(version.confirmedAt)) }} 确认</p><template data-component="IntentDocument" data-bind-value="(version)"></template></template></template><ol data-else="" class="intent-events"><li data-each="(event, index) in ([...intent.events].reverse())" data-bind-key="(index)"><p>{{ (event.label) }}</p><span class="muted">{{ (event.actor || intent.createdBy) }} · {{ (dateText(event.at)) }}</span></li></ol></template>
@@ -1,11 +0,0 @@
1
- import { computed, ref } from '../../runtime/state.js';
2
- import { Alert, Drawer, Select, Tabs, Tag } from "../../runtime/widgets.js";
3
- import { dateText } from "./data.js";
4
- import IntentDocument from "./IntentDocument.js";
5
- import { createComponent } from '../../runtime/dom.js';
6
- export default createComponent({ name: 'IntentHistory', propKeys: ["intent"], template: new URL('./IntentHistory.html', import.meta.url).href, setup(__props, __emit) {
7
- const props = __props, emit = __emit;
8
- const tab = ref(props.intent.versions.length ? 'versions' : 'events'), number = ref(props.intent.versions.at(-1)?.number);
9
- const version = computed(() => props.intent.versions.find(v => v.number === number.value));
10
- return { computed, ref, Alert, Drawer, Select, Tabs, Tag, dateText, IntentDocument, props, emit, tab, number, version };
11
- } });
@@ -1,2 +0,0 @@
1
- <!-- 来源:src/intents/IntentList.vue;HTML / 原生 DOM 绑定,不含 Vue 运行时。 -->
2
- <div class="page-heading"><div><h1>意图与需求</h1><p>从业务问题开始,形成可以核对和确认的意图。</p></div><template data-component="Button" type="primary" data-bind-disabled="(!store.canEdit)" data-on-click="(router.push('/intents/new'))"><template data-component="PlusOutlined"></template>发起意图</template></div><template data-component="Alert" data-if="(store.notice)" class="page-alert" type="warning" show-icon="" data-bind-title="(store.notice)"></template><template data-component="Alert" data-if="(!store.canEdit)" class="page-alert" type="info" show-icon="" title="当前身份仅可查看意图和版本。"></template><template data-component="Tabs" data-model-active-key="(tab)" data-bind-items="(tabs)" class="model-tabs"></template><section class="filter-panel panel" aria-label="意图筛选"><template data-component="ProForm" name="intent-search" data-bind-form="(form)" class="filter-form" data-bind-grid="({ gutter: 24 })" data-on-keydown.enter.prevent="(search)"></template><div class="filter-actions"><template data-component="Button" data-on-click="(search)">查询</template><template data-component="Button" data-on-click="(reset)">重置</template></div></section><section class="panel model-table-panel" aria-label="意图池列表"><template data-component="Result" data-if="(store.scene === 'error')" status="warning" title="意图池加载失败"><template data-slot="extra"><template data-component="Button" type="primary" data-on-click="(retry)">重试</template></template></template><template data-component="ProTable" data-else="" data-bind-table="(table)" data-bind-search="(async () =&gt; { })" data-bind-control="(false)" data-bind-table-container="(false)" data-bind-loading="(loading)" data-bind-row-selection="(selection.rowSelection.value)" row-key="id" size="middle" data-bind-scroll="({ x: 'max-content' })" data-bind-pagination="({ showTotal: (n) =&gt; '共 ' + n + ' 条', showSizeChanger: true, pageSizeOptions: [10, 20, 50, 100] })" data-bind-locale="({ emptyText: h(Empty, { description: store.scene === 'empty' ? '还没有意图,从一个业务目标开始' : '没有符合条件的意图' }, { default: () =&gt; h(Button, { disabled: store.scene === 'empty' &amp;&amp; !store.canEdit, onClick: store.scene === 'empty' ? () =&gt; router.push('/intents/new') : reset }, () =&gt; store.scene === 'empty' ? '发起第一个意图' : '清除筛选') }) })"><template data-slot="button-bar"><div class="list-heading"><h2>意图池 · {{ (visible.length) }}</h2><template data-component="ListBatchBar" data-bind-count="(selection.keys.value.length)" data-bind-allowed="(session.can('intent:delete'))" data-on-remove="(batchDelete)" data-on-clear="(selection.clear)"></template></div></template><template data-slot="toolbar"><div class="table-tools"><template data-component="Select" data-model-value="(scope)" aria-label="意图可见范围" data-bind-options="([{ label: '全部可见', value: 'visible' }, { label: '我发起的', value: 'mine' }])"></template><template data-component="Select" data-model-value="(sort)" aria-label="意图排序" data-bind-options="([{ label: '创建时间倒序', value: 'created' }, { label: '修改时间倒序', value: 'updated' }, { label: '名称排序', value: 'name' }])"></template><template data-component="ColumnSettings" data-bind-preferences="(prefs)"></template><template data-component="Button" aria-label="刷新意图池" data-bind-loading="(loading)" data-on-click="(refresh)"><template data-component="ReloadOutlined"></template></template></div> <template data-component="IntentHistory" data-if="(selected &amp;&amp; overlay === 'history')" data-bind-intent="(selected)" data-on-close="(overlay = '')"></template><template data-component="IntentRevision" data-if="(selected &amp;&amp; overlay === 'edit')" data-bind-intent="(selected)" data-on-close="(overlay = '')"></template><template data-component="IntentReplan" data-if="(selected &amp;&amp; overlay === 'replan')" data-bind-intent="(selected)" data-on-close="(replanned)"></template><template data-component="ListDeleteDialog" data-if="(deleteTargets.length)" data-model-targets="(deleteTargets)" label="意图" data-bind-check="(store.checkRemove)" data-bind-submit="(store.removeMany)" data-on-close="(deleteTargets = [])" data-on-deleted="(deleted)"></template></template></template></section><p class="intent-list-note muted">“全部可见”受当前身份与租户范围限制。删除移出列表并保留操作痕迹,已确认版本受保护。</p><template data-component="IntentClose" data-if="(closing)" data-bind-intent="(closing)" data-on-close="(closingId = '')"></template>
@@ -1,116 +0,0 @@
1
- import { useDeliveryView } from "../shared/deliveryView.js";
2
- import { computed, ref, watch, onMounted } from '../../runtime/state.js';
3
- import { h } from '../../runtime/dom.js';
4
- import { useRouter } from "../../runtime/router.js";
5
- import { Alert, Button, Empty, Result, Tabs, Tag, Select } from "../../runtime/widgets.js";
6
- import { PlusOutlined, ReloadOutlined } from "../../runtime/icons.js";
7
- import { ProForm, ProTable, useForm, useTable } from "../../runtime/widgets.js";
8
- import { useIntents } from "./store.js";
9
- import { useSession } from "../shared/session.js";
10
- import { tenantLabel } from "../shared/policy.js";
11
- import { useColumns } from "../shared/columns.js";
12
- import ColumnSettings from "../shared/ColumnSettings.js";
13
- import { useListSelection } from "../shared/listSelection.js";
14
- import ListBatchBar from "../shared/ListBatchBar.js";
15
- import ListDeleteDialog from "../shared/ListDeleteDialog.js";
16
- import ListMore from "../shared/ListMore.js";
17
- import IntentHistory from "./IntentHistory.js";
18
- import IntentRevision from "./IntentRevision.js";
19
- import IntentReplan from "./IntentReplan.js";
20
- import IntentClose from "./IntentClose.js";
21
- import { contexts, statusMeta, dateText } from "./data.js";
22
- import { lastVersion, questionKeys, confirmationBusy } from "./domain.js";
23
- import { createComponent } from '../../runtime/dom.js';
24
- export default createComponent({ name: 'IntentList', propKeys: [], template: new URL('./IntentList.html', import.meta.url).href, setup(__props, __emit) {
25
- const { affiliationOf } = useDeliveryView();
26
- const store = useIntents(), session = useSession(), router = useRouter(), tab = ref('all'), loading = ref(false), scope = ref('visible'), sort = ref('created');
27
- const closingId = ref(''), closing = computed(() => store.get(closingId.value));
28
- const selectedId = ref(''), overlay = ref(''), selected = computed(() => store.get(selectedId.value)), deleteTargets = ref([]);
29
- function menuItems(i) {
30
- return [
31
- { key: 'detail', label: '查看详情' },
32
- { key: 'edit', label: ['draft', 'clarifying'].includes(i.status) ? '编辑与澄清' : '修改意图', disabled: !session.can('intent:edit', i.tenantId) || i.status === 'closed' || confirmationBusy(i) || i.generating },
33
- { key: 'history', label: '版本与操作记录' },
34
- { key: 'spec', label: '需求规格', disabled: i.status !== 'confirmed' || !session.can('spec:view', i.tenantId) },
35
- { key: 'replan', label: '重新规划', disabled: !session.can('intent:edit', i.tenantId) || !['ready', 'confirmed'].includes(i.status) || confirmationBusy(i) || i.generating },
36
- { type: 'divider' },
37
- { key: 'close', label: '关闭意图', disabled: !session.can('intent:close', i.tenantId) || ['confirmed', 'closed'].includes(i.status) || confirmationBusy(i) || i.generating },
38
- { key: 'delete', label: '删除意图', danger: true, disabled: !session.can('intent:delete', i.tenantId) },
39
- ];
40
- }
41
- function rowAction(action, i) {
42
- if (action === 'spec') {
43
- router.push('/intents/' + i.id + '/spec');
44
- return;
45
- }
46
- if (action === 'detail' || (action === 'edit' && ['draft', 'clarifying'].includes(i.status))) {
47
- open(i);
48
- return;
49
- }
50
- if (action === 'close') {
51
- closingId.value = i.id;
52
- return;
53
- }
54
- if (action === 'delete') {
55
- deleteTargets.value = [{ id: i.id, name: i.title, recordVersion: i.recordVersion }];
56
- return;
57
- }
58
- selectedId.value = i.id;
59
- overlay.value = action;
60
- }
61
- function replanned() { overlay.value = ''; if (selected.value?.status === 'clarifying')
62
- open(selected.value); }
63
- const applied = ref({ keyword: '', context: '' });
64
- const form = useForm({ keyword: '', context: '' }, [
65
- { path: 'keyword', label: '意图名称', component: 'input', placeholder: '搜索名称或编号', span: 12, xs: 24, md: 12 },
66
- { path: 'context', label: 'PBC 归属', component: 'select', placeholder: '全部归属', options: contexts.map(value => ({ label: value, value })), span: 12, xs: 24, md: 12 },
67
- ]);
68
- watch(() => store.items.map(i => affiliationOf(i)), values => { const field = form.fields.value.find(f => f.path === 'context'); if (field && field.component === 'select')
69
- field.options = Array.from(new Map(values.map(v => [v.key, { label: v.label, value: v.key }])).values()); }, { immediate: true, deep: true });
70
- const visible = computed(() => store.scene === 'empty' ? [] : store.items.filter(i => (scope.value !== 'mine' || i.createdById === session.actor.id) && (tab.value === 'all' || i.status === tab.value) &&
71
- (!applied.value.context || affiliationOf(i).key === applied.value.context) && (!applied.value.keyword.trim() || (i.title + i.code).toLowerCase().includes(applied.value.keyword.trim().toLowerCase())))
72
- .sort((a, b) => sort.value === 'name' ? a.title.localeCompare(b.title, 'zh-CN') : ((sort.value === 'created' ? b.createdAt : b.updatedAt).localeCompare(sort.value === 'created' ? a.createdAt : a.updatedAt) || a.id.localeCompare(b.id))));
73
- const tabs = computed(() => [{ key: 'all', label: '全部状态' }, ...Object.entries(statusMeta).map(([key, meta]) => ({ key, label: meta.label }))]);
74
- function open(i) { router.push('/intents/' + i.id + (['draft', 'clarifying'].includes(i.status) ? '/workspace' : '')); }
75
- const render = (f) => (_, i) => f(i);
76
- const prefs = useColumns('intents', [
77
- { key: 'title', label: '意图', locked: true }, { key: 'status', label: '状态', defaultVisible: true }, { key: 'context', label: 'PBC 归属', defaultVisible: true },
78
- { key: 'version', label: '澄清 / 版本', defaultVisible: true }, { key: 'createdBy', label: '创建人', defaultVisible: true }, { key: 'createdAt', label: '创建时间', defaultVisible: true },
79
- { key: 'createdDept', label: '创建部门' }, { key: 'tenant', label: '所属租户' }, { key: 'updatedBy', label: '修改人' }, { key: 'updatedAt', label: '修改时间' }, { key: 'actions', label: '操作', locked: true },
80
- ]);
81
- const table = useTable({ pageParam: { current: 1, pageSize: 10, total: 0 }, columns: [
82
- { title: '意图', key: 'title', dataIndex: 'title', width: 300, render: render(i => h('div', { class: 'model-name-cell' }, [h('button', { class: 'text-button model-link', onClick: () => open(i) }, i.title), h('span', { class: 'mono muted' }, i.code)])) },
83
- { title: '状态', key: 'status', width: 120, render: render(i => h(Tag, { color: confirmationBusy(i) ? 'orange' : statusMeta[i.status].color, bordered: false }, () => confirmationBusy(i) ? '确认待核实' : statusMeta[i.status].label)) },
84
- { title: 'PBC 归属', key: 'context', width: 240, render: render(i => h('span', affiliationOf(i).label)) },
85
- { title: '澄清 / 版本', key: 'version', width: 130, render: render(i => h('span', { class: 'muted' }, i.versions.length ? '意图 v' + lastVersion(i)?.number : questionKeys.filter(q => i.answers[q].trim()).length + ' / 4 项已补充')) },
86
- { title: '创建人', key: 'createdBy', dataIndex: 'createdBy', width: 100 },
87
- { title: '创建时间', key: 'createdAt', dataIndex: 'createdAt', width: 180, render: (v) => dateText(String(v)) },
88
- { title: '创建部门', key: 'createdDept', dataIndex: 'createdDept', width: 140 },
89
- { title: '所属租户', key: 'tenant', dataIndex: 'tenantId', width: 140, render: (v) => tenantLabel(String(v)) },
90
- { title: '修改人', key: 'updatedBy', dataIndex: 'updatedBy', width: 100 },
91
- { title: '修改时间', key: 'updatedAt', dataIndex: 'updatedAt', width: 180, render: (v) => dateText(String(v)) },
92
- { title: '操作', key: 'actions', width: 190, fixed: 'right', render: render(i => h('div', { class: 'row-actions' }, [
93
- h(Button, { type: 'text', class: 'link-button', onClick: () => open(i) }, () => ['draft', 'clarifying'].includes(i.status) && store.canEdit ? '继续完善' : '查看详情'),
94
- h(ListMore, { name: i.title, items: menuItems(i), onAction: (action) => rowAction(action, i) }),
95
- ])) },
96
- ] });
97
- const selection = useListSelection(table.dataSource, computed(() => JSON.stringify([applied.value, tab.value, scope.value, sort.value, session.key, store.scene, table.pageParam.current, table.pageParam.pageSize])), computed(() => session.can('intent:delete')), i => i.title);
98
- function batchDelete() { deleteTargets.value = selection.selected.value.map(i => ({ id: i.id, name: i.title, recordVersion: i.recordVersion })); }
99
- function deleted() { deleteTargets.value = []; selection.clear(); }
100
- const catalog = new Map(table.columns.value.map(c => [c.key, c]));
101
- watch(prefs.keys, keys => { table.columns.value = keys.map(k => catalog.get(k)).filter(Boolean); }, { immediate: true });
102
- watch([visible, () => table.pageParam.current, () => table.pageParam.pageSize], () => {
103
- const size = table.pageParam.pageSize || 10, max = Math.max(1, Math.ceil(visible.value.length / size));
104
- if ((table.pageParam.current || 1) > max)
105
- table.setPageParam({ current: max });
106
- const start = ((table.pageParam.current || 1) - 1) * size;
107
- table.dataSource.value = visible.value.slice(start, start + size);
108
- table.setPageParam({ total: visible.value.length });
109
- }, { immediate: true });
110
- function search() { applied.value = { keyword: form.formData.keyword || '', context: form.formData.context || '' }; table.setPageParam({ current: 1 }); }
111
- function reset() { form.setFormData({ keyword: '', context: '' }); tab.value = 'all'; scope.value = 'visible'; search(); }
112
- async function refresh() { selection.clear(); loading.value = true; await new Promise(r => setTimeout(r, 300)); loading.value = false; }
113
- function retry() { store.scene = 'normal'; refresh(); }
114
- onMounted(refresh);
115
- return { useDeliveryView, affiliationOf, computed, ref, watch, onMounted, h, useRouter, Alert, Button, Empty, Result, Tabs, Tag, Select, PlusOutlined, ReloadOutlined, ProForm, ProTable, useForm, useTable, useIntents, useSession, tenantLabel, useColumns, ColumnSettings, useListSelection, ListBatchBar, ListDeleteDialog, ListMore, IntentHistory, IntentRevision, IntentReplan, IntentClose, contexts, statusMeta, dateText, lastVersion, questionKeys, confirmationBusy, store, session, router, tab, loading, scope, sort, closingId, closing, selectedId, overlay, selected, deleteTargets, menuItems, rowAction, replanned, applied, form, visible, tabs, open, render, prefs, table, selection, batchDelete, deleted, catalog, search, reset, refresh, retry };
116
- } });
@@ -1,2 +0,0 @@
1
- <!-- 来源:src/intents/IntentReplan.vue;HTML / 原生 DOM 绑定,不含 Vue 运行时。 -->
2
- <template data-component="Modal" data-bind-open="(true)" title="重新规划" data-bind-width="(600)" ok-text="返回澄清" cancel-text="取消" data-bind-mask="({ closable: false })" data-bind-ok-button-props="({ disabled: !store.canEdit })" data-on-cancel="(emit('close'))" data-on-ok="(save)"><template data-component="Alert" class="form-intro" type="info" show-icon="" title="保留当前意图和确认记录" description="仅清空选中的澄清回答,其他内容保留。补充后再整理为新版本并确认。"></template><template data-component="ProForm" name="intent-replan" data-bind-form="(form)" layout="vertical" data-bind-disabled="(!store.canEdit)"></template></template>