@givolt/i3-composer-agent 3.2.1 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/plugins/marketplace.json +1 -1
- package/.claude/commands/i3-build.md +1 -0
- package/.claude/commands/i3-code-simplify.md +1 -0
- package/.claude/commands/i3-constraints.md +1 -0
- package/.claude/commands/i3-plan.md +1 -0
- package/.claude/commands/i3-review.md +1 -0
- package/.claude/commands/i3-ship.md +1 -0
- package/.claude/commands/i3-spec.md +1 -0
- package/.claude/commands/i3-test.md +1 -0
- package/.claude/commands/i3-webperf.md +1 -0
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +2 -2
- package/README.md +31 -25
- package/bin/i3-composer-agent.cjs +4 -59
- package/bin/install.cjs +6 -14
- package/bin/native-layout.cjs +11 -2
- package/bin/native-migration.cjs +68 -28
- package/bin/retired-custom-fingerprints.json +1597 -0
- package/bin/wizard.cjs +2 -13
- package/docs/antigravity-setup.md +3 -1
- package/docs/codebuddy-setup.md +19 -76
- package/docs/codex-setup.md +10 -4
- package/docs/comparison.md +1 -1
- package/docs/copilot-cli-setup.md +4 -4
- package/docs/cursor-setup.md +1 -1
- package/docs/gemini-cli-setup.md +1 -1
- package/docs/other-hosts.md +2 -2
- package/docs/windsurf-setup.md +2 -2
- package/docs/workbuddy-setup.md +9 -16
- package/evals/README.md +10 -0
- package/evals/cases/i3-code-simplification.json +8 -0
- package/evals/cases/i3-documentation-and-adrs.json +4 -0
- package/evals/cases/i3-enterprise-sop.json +1 -1
- package/evals/cases/i3-frontend-ui-engineering.json +1 -1
- package/evals/cases/i3-security-and-hardening.json +4 -0
- package/evals/cases/i3-ui-demo.json +2 -2
- package/evals/cases/i3-using-agent-skills.json +5 -5
- package/evals/plugin/simplify-fires-on-pasted-function/graders/behavior-kept-and-explained.md +7 -0
- package/evals/plugin/simplify-fires-on-pasted-function/graders/skill-fired.md +5 -0
- package/evals/plugin/simplify-fires-on-pasted-function/prompt.md +30 -0
- package/evals/plugin/simplify-stays-quiet-on-make-it-fast/graders/not-fired.md +8 -0
- package/evals/plugin/simplify-stays-quiet-on-make-it-fast/prompt.md +20 -0
- package/evals/zh-CN/cases/i3-code-simplification.json +8 -0
- package/evals/zh-CN/cases/i3-documentation-and-adrs.json +4 -0
- package/evals/zh-CN/cases/i3-enterprise-sop.json +1 -1
- package/evals/zh-CN/cases/i3-frontend-ui-engineering.json +2 -2
- package/evals/zh-CN/cases/i3-security-and-hardening.json +4 -0
- package/evals/zh-CN/cases/i3-ui-demo.json +2 -2
- package/evals/zh-CN/cases/i3-using-agent-skills.json +6 -6
- package/hooks/SDD-CACHE.md +1 -1
- package/package.json +13 -80
- package/plugin.json +15 -2
- package/references/accessibility-checklist.md +4 -4
- package/references/performance-checklist.md +5 -4
- package/references/testing-patterns.md +2 -1
- package/scripts/floor-guard-reference-test.js +32 -0
- package/scripts/lib/execution-status.js +44 -0
- package/scripts/run-evals-test.js +157 -7
- package/scripts/run-evals.js +59 -12
- package/scripts/ui-demo-test.js +2 -2
- package/scripts/validate-artifact-paths-test.js +14 -0
- package/scripts/validate-artifact-paths.js +4 -2
- package/skills/i3-api-and-interface-design/SKILL.md +3 -1
- package/skills/i3-ci-cd-and-automation/SKILL.md +7 -4
- package/skills/i3-code-simplification/SKILL.md +3 -3
- package/skills/i3-constraint-driven-development/SKILL.md +4 -4
- package/skills/i3-constraint-driven-development/references/floor-guard.md +2 -2
- package/skills/i3-context-engineering/SKILL.md +1 -1
- package/skills/i3-debugging-and-error-recovery/SKILL.md +1 -1
- package/skills/i3-deprecation-and-migration/SKILL.md +6 -1
- package/skills/i3-documentation-and-adrs/SKILL.md +3 -2
- package/skills/i3-enterprise-sop/SKILL.md +38 -71
- package/skills/i3-enterprise-sop/references/engineering-skeleton/directory-standard.md +7 -7
- package/skills/i3-enterprise-sop/references/handoff.py +149 -120
- package/skills/i3-enterprise-sop/references/technical-baseline/baselines/enterprise-application-technical-baseline-v0-0-4.md +24 -24
- package/skills/i3-enterprise-sop/references/technical-baseline/templates/technical-baseline.md +8 -8
- package/skills/i3-enterprise-sop/references/templates/ad.md +31 -31
- package/skills/i3-enterprise-sop/references/templates/brd.md +6 -6
- package/skills/i3-enterprise-sop/references/templates/prd.md +37 -37
- package/skills/i3-enterprise-sop/references/templates/testcase.md +25 -25
- package/skills/i3-frontend-ui-engineering/SKILL.md +6 -10
- package/skills/i3-idea-refine/SKILL.md +4 -2
- package/skills/i3-incremental-implementation/SKILL.md +0 -4
- package/skills/i3-performance-optimization/SKILL.md +2 -2
- package/skills/i3-security-and-hardening/references/hardening-patterns.md +5 -0
- package/skills/i3-source-driven-development/SKILL.md +3 -2
- package/skills/i3-spec-driven-development/SKILL.md +1 -1
- package/skills/i3-ui-demo/SKILL.md +3 -1
- package/skills/i3-ui-demo/references/dependencies.md +1 -1
- package/skills/i3-ui-demo/references/resources.md +1 -1
- package/skills/i3-ui-demo/scripts/dependencies.cjs +0 -3
- package/skills/i3-using-agent-skills/SKILL.md +2 -2
- package/.claude/commands/i3-prototype.md +0 -23
- package/.gemini/commands/i3-prototype.toml +0 -23
- package/commands/i3-prototype.toml +0 -23
- package/evals/cases/i3-ui-prototype.json +0 -158
- package/evals/fixtures/i3-ui-prototype/admin-list/assets/reference.css +0 -3
- package/evals/fixtures/i3-ui-prototype/admin-list/assets/reference.js +0 -8
- package/evals/fixtures/i3-ui-prototype/admin-list/capability-definition.json +0 -67
- package/evals/fixtures/i3-ui-prototype/admin-list/index.html +0 -89
- package/evals/fixtures/i3-ui-prototype/admin-list/readme.md +0 -52
- package/evals/fixtures/i3-ui-prototype/admin-list/template.json +0 -8
- package/evals/fixtures/i3-ui-prototype/business-brief.md +0 -7
- package/evals/zh-CN/cases/i3-ui-prototype.json +0 -165
- package/hooks/PROTOTYPE.md +0 -31
- package/hooks/codebuddy-upstream.cjs +0 -93
- package/hooks/i3-prototype.cjs +0 -7
- package/hooks/manage.cjs +0 -169
- package/scripts/design-provider-discovery-test.js +0 -190
- package/scripts/design-provider-test.js +0 -75
- package/scripts/enterprise-template-test.js +0 -205
- package/scripts/lib/prototype-fixture.cjs +0 -17
- package/scripts/prototype-cache-test.js +0 -55
- package/scripts/prototype-generation-entry-test.js +0 -6
- package/scripts/prototype-generation-evidence-test.js +0 -10
- package/scripts/prototype-generation-native-test.js +0 -78
- package/scripts/prototype-generation-test.js +0 -99
- package/scripts/prototype-inventory-test.js +0 -43
- package/scripts/prototype-locations-test.js +0 -79
- package/scripts/prototype-project-test.js +0 -183
- package/scripts/template-adapter-test.js +0 -155
- package/scripts/ui-prototype-binding-recovery-test.js +0 -84
- package/scripts/ui-prototype-buddy-lifecycle-test.js +0 -102
- package/scripts/ui-prototype-codebuddy-hook-test.js +0 -112
- package/scripts/ui-prototype-content-test.js +0 -123
- package/scripts/ui-prototype-dependencies-test.js +0 -226
- package/scripts/ui-prototype-devtools-test.js +0 -53
- package/scripts/ui-prototype-execution-evidence-test.js +0 -62
- package/scripts/ui-prototype-execution-gates-test.js +0 -91
- package/scripts/ui-prototype-execution-policy-test.js +0 -53
- package/scripts/ui-prototype-execution-runtime-test.js +0 -27
- package/scripts/ui-prototype-ide-source-test.js +0 -73
- package/scripts/ui-prototype-native-test.js +0 -526
- package/scripts/ui-prototype-recovery-test.js +0 -81
- package/scripts/ui-prototype-registration-test.js +0 -53
- package/scripts/ui-prototype-template-test.js +0 -261
- package/scripts/ui-prototype-test.js +0 -124
- package/scripts/ui-prototype-transcript-auto-test.js +0 -67
- package/skills/i3-ui-prototype/SKILL.md +0 -256
- package/skills/i3-ui-prototype/assets/capabilities/generation.json +0 -833
- package/skills/i3-ui-prototype/assets/capabilities/management.json +0 -294
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/acceptance.json +0 -51
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/component-map.json +0 -13
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/generation-component-map.json +0 -300
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/index.html +0 -11
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/package-lock.json +0 -2298
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/package.json +0 -22
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/public/prototype-config.json +0 -6
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/App.vue +0 -136
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/components/DeviceEditor.vue +0 -111
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/config.ts +0 -19
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/content.ts +0 -28
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/domain/devices.ts +0 -50
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/domain/theme.ts +0 -25
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/main.ts +0 -18
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/style.css +0 -50
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/useDevices.ts +0 -66
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tests/devices.test.ts +0 -44
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tests/theme.test.ts +0 -26
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tsconfig.json +0 -15
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/vite.config.ts +0 -4
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/profile.json +0 -174
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/readme.md +0 -61
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/index.html +0 -11
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/package-lock.json +0 -2298
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/package.json +0 -22
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/public/prototype-config.json +0 -21
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/App.vue +0 -62
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/PrototypeShell.vue +0 -59
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/config.ts +0 -23
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/domain/presentation.ts +0 -29
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/domain/theme.ts +0 -25
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/main.ts +0 -18
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/style.css +0 -26
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tests/presentation.test.ts +0 -23
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tests/theme.test.ts +0 -26
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tsconfig.json +0 -15
- package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/vite.config.ts +0 -4
- package/skills/i3-ui-prototype/assets/hosts/codebuddy/profile.json +0 -17
- package/skills/i3-ui-prototype/assets/optional-skills/host-targets.json +0 -739
- package/skills/i3-ui-prototype/assets/optional-skills/sources.json +0 -27
- package/skills/i3-ui-prototype/assets/templates/catalog.js +0 -149
- package/skills/i3-ui-prototype/assets/templates/catalog.json +0 -149
- package/skills/i3-ui-prototype/assets/templates/classic-admin/manifest.json +0 -9
- package/skills/i3-ui-prototype/assets/templates/classic-admin/preset.json +0 -6
- package/skills/i3-ui-prototype/assets/templates/common/app/app.mjs +0 -89
- package/skills/i3-ui-prototype/assets/templates/common/app/config.json +0 -1
- package/skills/i3-ui-prototype/assets/templates/common/app/domain.mjs +0 -20
- package/skills/i3-ui-prototype/assets/templates/common/app/index.html +0 -17
- package/skills/i3-ui-prototype/assets/templates/common/app/serve.cjs +0 -16
- package/skills/i3-ui-prototype/assets/templates/common/app/styles.css +0 -670
- package/skills/i3-ui-prototype/assets/templates/common/app/tokens.css +0 -19
- package/skills/i3-ui-prototype/assets/templates/common/design-system/master.md +0 -20
- package/skills/i3-ui-prototype/assets/templates/common/gallery.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/common/mocks/applications.json +0 -5
- package/skills/i3-ui-prototype/assets/templates/common/requirements-map.json +0 -8
- package/skills/i3-ui-prototype/assets/templates/common/serve-gallery.cjs +0 -16
- package/skills/i3-ui-prototype/assets/templates/credits.md +0 -17
- package/skills/i3-ui-prototype/assets/templates/data-operations/manifest.json +0 -9
- package/skills/i3-ui-prototype/assets/templates/data-operations/preset.json +0 -6
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/capability-definition.json +0 -294
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/component-inventory.json +0 -707
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/design-system.md +0 -32
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/generation.json +0 -49
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/index.html +0 -534
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/manifest.json +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/offline-build.json +0 -265
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/offline.js +0 -8888
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/origin.json +0 -344
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/preset.json +0 -928
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/app.js +0 -22
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/empty.svg +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/reference-styles.json +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/result-403.svg +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/result-404.svg +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets-manifest.json +0 -334
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/baseline.json +0 -173
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/conversion.md +0 -30
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/credits.md +0 -17
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/design-tokens.json +0 -881
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/index.html +0 -28
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/licenses/@qin-ui-antdv-next-pro.txt +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/licenses/ant-design-icons.txt +0 -22
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/licenses/antdv-next.txt +0 -21
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/package.json +0 -12
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/browser-routes.json +0 -298
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/coverage.json +0 -180
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/integrity.json +0 -13
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/keyboard.json +0 -11
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/responsive.json +0 -125
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/review.md +0 -51
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/rules.log +0 -150
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/flow-editor-html.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/flow-editor-original.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/intent-create-html.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/intent-create-original.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/models-html.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/models-original.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/workbench-html.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/workbench-original.png +0 -0
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/selection.json +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/visual-comparison.json +0 -342
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/readme.md +0 -73
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/reference.md +0 -59
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/routes.json +0 -178
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/controls.js +0 -99
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/dialogs.js +0 -54
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/dom.js +0 -264
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/forms.js +0 -47
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/icons.js +0 -41
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/layout.js +0 -47
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/router.js +0 -63
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/state.js +0 -90
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/table.js +0 -41
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/widgets.js +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentDetail.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentDetail.js +0 -36
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentEditor.js +0 -51
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentsPage.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentsPage.js +0 -48
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/CheckResults.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/CheckResults.js +0 -6
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/ResourcePicker.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/ResourcePicker.js +0 -13
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/data.js +0 -24
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/domain.js +0 -32
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/registry.js +0 -25
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/store.js +0 -85
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentClose.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentClose.js +0 -17
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentCreate.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentCreate.js +0 -66
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDecisions.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDecisions.js +0 -38
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDetail.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDetail.js +0 -66
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDocument.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDocument.js +0 -5
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHeader.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHeader.js +0 -12
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHistory.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHistory.js +0 -11
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentList.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentList.js +0 -116
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentReplan.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentReplan.js +0 -32
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentRevision.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentRevision.js +0 -49
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentSummary.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentSummary.js +0 -10
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentWorkspace.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentWorkspace.js +0 -77
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/data.js +0 -60
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/domain.js +0 -105
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/store.js +0 -212
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/AuditPanel.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/AuditPanel.js +0 -18
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelDetail.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelDetail.js +0 -23
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelEditor.js +0 -78
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelGrant.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelGrant.js +0 -55
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelReferences.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelReferences.js +0 -26
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelRelease.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelRelease.js +0 -38
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelStatus.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelStatus.js +0 -7
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTable.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTable.js +0 -72
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTester.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTester.js +0 -46
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelsPage.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelsPage.js +0 -52
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/RowActions.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/RowActions.js +0 -19
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/UsagePanel.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/UsagePanel.js +0 -30
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/data.js +0 -48
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/domain.js +0 -39
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/store.js +0 -129
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IncidentDetail.html +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IncidentDetail.js +0 -21
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IntentSource.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IntentSource.js +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationActionDialog.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationActionDialog.js +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationEntry.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationEntry.js +0 -10
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationsPage.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationsPage.js +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RepairTrack.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RepairTrack.js +0 -49
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RunDetail.html +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RunDetail.js +0 -22
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/SourceSummary.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/SourceSummary.js +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/commands.js +0 -82
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/examples.js +0 -47
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/model.js +0 -61
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/repair.js +0 -68
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/store.js +0 -55
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/types.js +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/workbench.js +0 -18
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ManagementTable.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ManagementTable.js +0 -28
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcCreateEntry.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcCreateEntry.js +0 -18
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcDetail.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcDetail.js +0 -31
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcEditor.js +0 -27
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcLifecycle.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcLifecycle.js +0 -16
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPage.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPage.js +0 -43
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPicker.html +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPicker.js +0 -34
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcProgress.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcProgress.js +0 -30
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWizard.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWizard.js +0 -67
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWorkspace.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWorkspace.js +0 -41
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcsPage.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcsPage.js +0 -31
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceEditor.js +0 -26
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceList.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceList.js +0 -70
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/data.js +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/domain.js +0 -62
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/management.js +0 -36
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/managementStore.js +0 -49
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/store.js +0 -132
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/AdminList.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/AdminList.js +0 -38
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/EffectiveGrants.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/EffectiveGrants.js +0 -11
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/GrantEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/GrantEditor.js +0 -45
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MemberEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MemberEditor.js +0 -54
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MembersPage.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MembersPage.js +0 -27
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RecordsPage.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RecordsPage.js +0 -12
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RoleEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RoleEditor.js +0 -45
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RolesPage.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RolesPage.js +0 -38
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/domain.js +0 -61
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/state.js +0 -51
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/store.js +0 -116
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseActionDialog.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseActionDialog.js +0 -45
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseDetail.html +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseDetail.js +0 -30
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseEditor.js +0 -67
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseExecution.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseExecution.js +0 -5
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleasesPage.html +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleasesPage.js +0 -60
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/commands.js +0 -157
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/model.js +0 -136
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/store.js +0 -76
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewDetail.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewDetail.js +0 -26
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewEvidence.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewEvidence.js +0 -14
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewProcess.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewProcess.js +0 -113
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewsPage.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewsPage.js +0 -62
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/commands.js +0 -97
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/model.js +0 -147
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/store.js +0 -13
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ColumnSettings.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ColumnSettings.js +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListBatchBar.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListBatchBar.js +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListDeleteDialog.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListDeleteDialog.js +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListMore.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListMore.js +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/RecordMetadata.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/RecordMetadata.js +0 -17
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/columns.js +0 -32
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/deliveryGuide.js +0 -49
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/deliveryView.js +0 -12
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/listBatch.js +0 -15
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/listSelection.js +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/policy.js +0 -68
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/session.js +0 -44
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConfirmationDialog.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConfirmationDialog.js +0 -25
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConsoleShell.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConsoleShell.js +0 -53
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/PrototypeGuide.html +0 -10
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/PrototypeGuide.js +0 -30
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ScopePage.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ScopePage.js +0 -10
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/SessionDialog.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/SessionDialog.js +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/confirmation.js +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/navigation.js +0 -19
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecDocument.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecDocument.js +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecEdit.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecEdit.js +0 -32
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHeader.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHeader.js +0 -15
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHistory.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHistory.js +0 -11
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecReview.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecReview.js +0 -57
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecWorkspace.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecWorkspace.js +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/data.js +0 -20
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/domain.js +0 -55
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/store.js +0 -151
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/ArtifactDetail.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/ArtifactDetail.js +0 -18
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskCreate.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskCreate.js +0 -40
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskDetail.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskDetail.js +0 -51
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskLaunch.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskLaunch.js +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TasksPage.html +0 -5
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TasksPage.js +0 -48
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/domain.js +0 -204
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/exampleSource.js +0 -22
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/registry.js +0 -135
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/store.js +0 -137
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/WorkbenchPage.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/WorkbenchPage.js +0 -36
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/model.js +0 -56
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/store.js +0 -15
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowCanvas.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowCanvas.js +0 -27
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowDetail.html +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowDetail.js +0 -31
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowEditor.html +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowEditor.js +0 -68
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/WorkflowsPage.html +0 -5
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/WorkflowsPage.js +0 -55
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/data.js +0 -16
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/domain.js +0 -83
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/registry.js +0 -18
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/store.js +0 -61
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/admin.css +0 -60
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/agents.css +0 -46
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/antdv.css +0 -295
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/app.css +0 -102
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/delivery.css +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/intents.css +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/native.css +0 -22
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/operations.css +0 -2
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/pbc.css +0 -3
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/permissions.css +0 -22
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/pro.css +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/releases.css +0 -4
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/reset.css +0 -246
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/reviews.css +0 -8
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/tasks.css +0 -6
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/tokens.css +0 -15
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/workbench.css +0 -61
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/workflows.css +0 -1
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/admin-rules.test.js +0 -96
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/agents.test.js +0 -14
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/intent-state.test.js +0 -37
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/list-batch.test.js +0 -44
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/operation-fixtures.js +0 -19
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/operation-repair.test.js +0 -14
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/operations.test.js +0 -25
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/pbc-management.test.js +0 -17
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/pbc-state.test.js +0 -24
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/permission-config.test.js +0 -23
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/permissions.test.js +0 -24
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/releases.test.js +0 -50
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/reviews.test.js +0 -36
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/runtime-forms-router.test.js +0 -28
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/runtime-state.test.js +0 -42
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/runtime-stores.test.js +0 -16
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/spec-state.test.js +0 -11
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/tasks.test.js +0 -27
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/workbench.test.js +0 -34
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/workflows.test.js +0 -16
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/convert.mjs +0 -168
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/serve.mjs +0 -7
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/styles.mjs +0 -11
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/verify.mjs +0 -24
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/serve.cjs +0 -16
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/template-inventory.json +0 -28791
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/template.json +0 -9
- package/skills/i3-ui-prototype/assets/templates/enterprise-admin/usability.css +0 -44
- package/skills/i3-ui-prototype/assets/templates/gallery/index.html +0 -40
- package/skills/i3-ui-prototype/assets/templates/generation-options.js +0 -42
- package/skills/i3-ui-prototype/assets/templates/index.html +0 -3
- package/skills/i3-ui-prototype/assets/templates/modern-workspace/manifest.json +0 -9
- package/skills/i3-ui-prototype/assets/templates/modern-workspace/preset.json +0 -6
- package/skills/i3-ui-prototype/assets/templates/presentation.html +0 -17
- package/skills/i3-ui-prototype/assets/templates/serve-gallery.cjs +0 -23
- package/skills/i3-ui-prototype/references/artifact-contract.md +0 -66
- package/skills/i3-ui-prototype/references/content-template.md +0 -81
- package/skills/i3-ui-prototype/references/enterprise-admin.md +0 -44
- package/skills/i3-ui-prototype/references/entry-contract.md +0 -71
- package/skills/i3-ui-prototype/references/execution-evidence.md +0 -51
- package/skills/i3-ui-prototype/references/expert-adapter.md +0 -76
- package/skills/i3-ui-prototype/references/framework-contract.md +0 -76
- package/skills/i3-ui-prototype/references/generation-contract.md +0 -122
- package/skills/i3-ui-prototype/references/interaction-acceptance.md +0 -169
- package/skills/i3-ui-prototype/references/legacy-native.md +0 -58
- package/skills/i3-ui-prototype/references/optional-skills.md +0 -63
- package/skills/i3-ui-prototype/references/project-layout.md +0 -92
- package/skills/i3-ui-prototype/references/template-adapters.md +0 -63
- package/skills/i3-ui-prototype/references/workflow-contract.md +0 -77
- package/skills/i3-ui-prototype/scripts/adapters/easel-html.cjs +0 -30
- package/skills/i3-ui-prototype/scripts/adapters/legacy-html.cjs +0 -28
- package/skills/i3-ui-prototype/scripts/browser-workspace.cjs +0 -72
- package/skills/i3-ui-prototype/scripts/buddy-host.cjs +0 -40
- package/skills/i3-ui-prototype/scripts/check-design-provider.cjs +0 -9
- package/skills/i3-ui-prototype/scripts/check-prototype.cjs +0 -14
- package/skills/i3-ui-prototype/scripts/codebuddy-context.cjs +0 -92
- package/skills/i3-ui-prototype/scripts/codebuddy-hook.cjs +0 -298
- package/skills/i3-ui-prototype/scripts/codebuddy-ide-source.cjs +0 -69
- package/skills/i3-ui-prototype/scripts/codebuddy-registration.cjs +0 -125
- package/skills/i3-ui-prototype/scripts/content-template.cjs +0 -98
- package/skills/i3-ui-prototype/scripts/design-provider-discovery.cjs +0 -128
- package/skills/i3-ui-prototype/scripts/enterprise-template.cjs +0 -104
- package/skills/i3-ui-prototype/scripts/execution-assertions.cjs +0 -43
- package/skills/i3-ui-prototype/scripts/execution-diagnostics.cjs +0 -91
- package/skills/i3-ui-prototype/scripts/execution-evidence.cjs +0 -177
- package/skills/i3-ui-prototype/scripts/execution-gates.cjs +0 -216
- package/skills/i3-ui-prototype/scripts/execution-policy.cjs +0 -62
- package/skills/i3-ui-prototype/scripts/execution-recovery.cjs +0 -58
- package/skills/i3-ui-prototype/scripts/execution-runtime.cjs +0 -69
- package/skills/i3-ui-prototype/scripts/generation-assets.cjs +0 -18
- package/skills/i3-ui-prototype/scripts/generation-contract.cjs +0 -214
- package/skills/i3-ui-prototype/scripts/generation-evidence.cjs +0 -50
- package/skills/i3-ui-prototype/scripts/generation-replan.cjs +0 -34
- package/skills/i3-ui-prototype/scripts/hosts/codebuddy.cjs +0 -21
- package/skills/i3-ui-prototype/scripts/init-prototype.cjs +0 -8
- package/skills/i3-ui-prototype/scripts/manage-baseline.cjs +0 -11
- package/skills/i3-ui-prototype/scripts/native-browser.cjs +0 -785
- package/skills/i3-ui-prototype/scripts/native-build.cjs +0 -91
- package/skills/i3-ui-prototype/scripts/native-command.cjs +0 -35
- package/skills/i3-ui-prototype/scripts/native-delivery.cjs +0 -104
- package/skills/i3-ui-prototype/scripts/native-devtools.cjs +0 -92
- package/skills/i3-ui-prototype/scripts/native-files.cjs +0 -44
- package/skills/i3-ui-prototype/scripts/native-pilot-lib.cjs +0 -290
- package/skills/i3-ui-prototype/scripts/native-pilot.cjs +0 -59
- package/skills/i3-ui-prototype/scripts/native-tool-name.cjs +0 -5
- package/skills/i3-ui-prototype/scripts/native-tool-result.cjs +0 -14
- package/skills/i3-ui-prototype/scripts/optional-skill-install.cjs +0 -203
- package/skills/i3-ui-prototype/scripts/project-registry.cjs +0 -126
- package/skills/i3-ui-prototype/scripts/prototype-dependencies.cjs +0 -103
- package/skills/i3-ui-prototype/scripts/prototype-hooks.cjs +0 -94
- package/skills/i3-ui-prototype/scripts/prototype-lib.cjs +0 -277
- package/skills/i3-ui-prototype/scripts/prototype-locations.cjs +0 -69
- package/skills/i3-ui-prototype/scripts/ptc-callbacks.cjs +0 -131
- package/skills/i3-ui-prototype/scripts/sync-template.cjs +0 -19
- package/skills/i3-ui-prototype/scripts/template-adapters.cjs +0 -89
- package/skills/i3-ui-prototype/scripts/template-contract.cjs +0 -407
- package/skills/i3-ui-prototype/scripts/template-inventory.cjs +0 -78
- package/skills/i3-ui-prototype/scripts/validate-result.cjs +0 -117
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
const fs = require('node:fs');
|
|
3
|
-
const path = require('node:path');
|
|
4
|
-
const os = require('node:os');
|
|
5
|
-
const { spawnSync } = require('node:child_process');
|
|
6
|
-
|
|
7
|
-
const PROVIDER = 'ui-ux-pro-max';
|
|
8
|
-
const MARKETPLACE = 'ui-ux-pro-max-skill';
|
|
9
|
-
const json = file => JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
10
|
-
const object = value => value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
11
|
-
const safeSegment = value => typeof value === 'string' && /^[a-zA-Z0-9][a-zA-Z0-9._+-]*$/.test(value) && !value.includes('..');
|
|
12
|
-
function ensure(condition, message) { if (!condition) throw new Error(message); }
|
|
13
|
-
function canonical(file) { return fs.existsSync(file) ? fs.realpathSync(file) : path.resolve(file); }
|
|
14
|
-
|
|
15
|
-
function pluginRoot(installation, manifests, fallback) {
|
|
16
|
-
ensure(typeof installation.installPath === 'string' && path.isAbsolute(installation.installPath), 'Plugin installPath must be absolute');
|
|
17
|
-
ensure(safeSegment(installation.version), 'Installed plugin version is invalid');
|
|
18
|
-
const root = installation.installPath;
|
|
19
|
-
const manifestFile = manifests.map(name => path.join(root, name)).find(file => fs.existsSync(file));
|
|
20
|
-
ensure(manifestFile, 'Installed plugin manifest is missing');
|
|
21
|
-
const manifest = json(manifestFile);
|
|
22
|
-
ensure(manifest.name === PROVIDER && manifest.version === installation.version, 'Installed plugin manifest name or version does not match its registration');
|
|
23
|
-
const declared = manifest.skills === undefined ? fallback : manifest.skills;
|
|
24
|
-
ensure(typeof declared === 'string' && declared && !path.isAbsolute(declared) && !declared.includes('\\'), 'Plugin skills declaration is missing or invalid');
|
|
25
|
-
const folder = path.resolve(root, declared), relative = path.relative(path.resolve(root), folder);
|
|
26
|
-
ensure(relative !== '..' && !relative.startsWith(`..${path.sep}`) && !path.isAbsolute(relative), 'Plugin skills declaration escapes its root');
|
|
27
|
-
if (fs.existsSync(folder)) {
|
|
28
|
-
const realRelative = path.relative(canonical(root), canonical(folder));
|
|
29
|
-
ensure(realRelative !== '..' && !realRelative.startsWith(`..${path.sep}`) && !path.isAbsolute(realRelative), 'Plugin skills path escapes its root');
|
|
30
|
-
}
|
|
31
|
-
const skill = path.join(folder, PROVIDER);
|
|
32
|
-
ensure(fs.existsSync(path.join(skill, 'SKILL.md')), 'Installed plugin skill entrypoint is missing');
|
|
33
|
-
const skillRelative = path.relative(canonical(root), canonical(skill));
|
|
34
|
-
ensure(skillRelative !== '..' && !skillRelative.startsWith(`..${path.sep}`) && !path.isAbsolute(skillRelative), 'Plugin skill path escapes its root');
|
|
35
|
-
return skill;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function codexCandidates(config, project, env, add, report) {
|
|
39
|
-
const source = 'codex-plugin';
|
|
40
|
-
try {
|
|
41
|
-
const run = spawnSync('codex', ['plugin', 'list', '--marketplace', MARKETPLACE, '--json'], { cwd: project, env, encoding: 'utf8', timeout: 10000, maxBuffer: 1024 * 1024, shell: false });
|
|
42
|
-
ensure(!run.error && run.status === 0, `Codex plugin discovery failed${run.error?.code ? ` (${run.error.code})` : ''}`);
|
|
43
|
-
const data = JSON.parse(run.stdout);
|
|
44
|
-
ensure(object(data) && Array.isArray(data.installed), 'Codex plugin discovery returned invalid metadata');
|
|
45
|
-
const records = data.installed.filter(record => record?.pluginId === `${PROVIDER}@${MARKETPLACE}`);
|
|
46
|
-
if (!records.length) { report(source, 'missing', 'Current Codex host has no registered UI/UX Pro Max plugin'); return; }
|
|
47
|
-
ensure(records.every(record => record.name === PROVIDER && record.marketplaceName === MARKETPLACE && typeof record.enabled === 'boolean' && typeof record.installed === 'boolean'), 'Codex plugin registration is invalid');
|
|
48
|
-
const active = records.filter(record => record.installed && record.enabled);
|
|
49
|
-
if (!active.length) { report(source, records.some(record => record.installed) ? 'disabled' : 'missing', 'UI/UX Pro Max is not enabled in the current Codex host'); return; }
|
|
50
|
-
if (active.length !== 1) { report(source, 'ambiguous', 'Multiple active Codex UI/UX Pro Max registrations require an explicit provider path'); return; }
|
|
51
|
-
const record = active[0];
|
|
52
|
-
ensure(safeSegment(record.version), 'Codex plugin version is invalid');
|
|
53
|
-
const installPath = path.join(config, 'plugins/cache', MARKETPLACE, PROVIDER, record.version);
|
|
54
|
-
add(pluginRoot({ installPath, version: record.version }, ['.codex-plugin/plugin.json', '.claude-plugin/plugin.json']), source);
|
|
55
|
-
} catch (error) { report(source, 'discovery-error', error.message); }
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function registeredCandidates(host, config, project, add, report) {
|
|
59
|
-
const source = `${host}-plugin`, registryFile = path.join(config, 'plugins/installed_plugins.json'), settingsFile = path.join(config, 'settings.json');
|
|
60
|
-
try {
|
|
61
|
-
if (!fs.existsSync(registryFile)) { report(source, 'missing', 'Optional host plugin installation registry is absent'); return; }
|
|
62
|
-
const registry = json(registryFile);
|
|
63
|
-
ensure(registry.version === 2 && object(registry.plugins), 'Host plugin installation registry has an unsupported or invalid schema');
|
|
64
|
-
const entries = Object.entries(registry.plugins).filter(([id]) => id.startsWith(`${PROVIDER}@`));
|
|
65
|
-
if (!entries.length) { report(source, 'missing', 'Current host has no registered UI/UX Pro Max plugin'); return; }
|
|
66
|
-
ensure(fs.existsSync(settingsFile), 'Registered plugin enablement metadata is missing');
|
|
67
|
-
const settings = json(settingsFile);
|
|
68
|
-
ensure(object(settings) && object(settings.enabledPlugins), 'Host plugin enablement metadata is invalid');
|
|
69
|
-
const active = [];
|
|
70
|
-
let disabled = false;
|
|
71
|
-
for (const [id, records] of entries) {
|
|
72
|
-
ensure(Array.isArray(records), 'Host plugin registration must contain an installation array');
|
|
73
|
-
if (settings.enabledPlugins[id] !== true) { disabled = true; continue; }
|
|
74
|
-
for (const record of records) {
|
|
75
|
-
ensure(object(record), 'Host plugin installation entry is invalid');
|
|
76
|
-
if (record.scope === 'user') active.push(record);
|
|
77
|
-
else if (record.scope === 'project') {
|
|
78
|
-
ensure(typeof record.projectPath === 'string' && path.isAbsolute(record.projectPath), 'Project-scoped plugin requires an absolute projectPath');
|
|
79
|
-
if (canonical(record.projectPath) === canonical(project)) active.push(record);
|
|
80
|
-
} else throw new Error('Host plugin installation scope is unsupported');
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
if (!active.length) { report(source, disabled ? 'disabled' : 'missing', 'No enabled UI/UX Pro Max installation applies to the current project'); return; }
|
|
84
|
-
if (active.length !== 1) { report(source, 'ambiguous', 'Multiple applicable plugin installations require an explicit provider path'); return; }
|
|
85
|
-
const fallback = host === 'workbuddy' || host === 'codebuddy' ? './skills/' : undefined;
|
|
86
|
-
const manifests = host === 'claude' ? ['.claude-plugin/plugin.json'] : ['.codebuddy-plugin/plugin.json', '.claude-plugin/plugin.json'];
|
|
87
|
-
add(pluginRoot(active[0], manifests, fallback), source);
|
|
88
|
-
} catch (error) { report(source, 'discovery-error', error.message); }
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
function discoverProviderCandidates(options = {}) {
|
|
92
|
-
const result = { candidates: [], diagnostics: [] }, seen = new Set();
|
|
93
|
-
const report = (source, availability, reason) => result.diagnostics.push({ source, availability, reason });
|
|
94
|
-
const add = (root, source) => {
|
|
95
|
-
ensure(typeof root === 'string' && root, 'Provider root must be a nonempty path');
|
|
96
|
-
root = path.resolve(root);
|
|
97
|
-
if (!seen.has(root)) { seen.add(root); result.candidates.push({ root, source }); }
|
|
98
|
-
};
|
|
99
|
-
if (options.provider !== undefined) {
|
|
100
|
-
try { add(options.provider, 'explicit'); } catch (error) { report('explicit', 'discovery-error', error.message); }
|
|
101
|
-
return result;
|
|
102
|
-
}
|
|
103
|
-
if (options.providerRoots !== undefined) {
|
|
104
|
-
try {
|
|
105
|
-
ensure(Array.isArray(options.providerRoots), 'Host-exposed providerRoots must be an array');
|
|
106
|
-
for (const root of options.providerRoots) add(root, 'host-exposed');
|
|
107
|
-
} catch (error) { report('host-exposed', 'discovery-error', error.message); }
|
|
108
|
-
return result;
|
|
109
|
-
}
|
|
110
|
-
if (options.discover === false) return { ...result, contextRequired: true };
|
|
111
|
-
const host = options.host === 'claude-code' ? 'claude' : options.host;
|
|
112
|
-
if (!['codex', 'claude', 'workbuddy', 'codebuddy', 'gemini', 'cursor'].includes(host)) return { ...result, contextRequired: true };
|
|
113
|
-
const home = options.home || os.homedir(), env = options.env === undefined ? process.env : options.env, project = path.resolve(options.project || '.');
|
|
114
|
-
const configName = host === 'claude' ? 'CLAUDE_CONFIG_DIR' : `${host.toUpperCase()}_${host === 'codex' ? 'HOME' : 'CONFIG_DIR'}`;
|
|
115
|
-
const config = path.resolve(env[configName] || path.join(home, `.${host}`));
|
|
116
|
-
const projectFolder = host === 'codex' ? '.agents' : host === 'workbuddy' ? '.codebuddy' : `.${host}`;
|
|
117
|
-
const locations = [
|
|
118
|
-
[path.join(project, projectFolder, 'skills', PROVIDER), 'project-skill'],
|
|
119
|
-
...(host === 'codex' ? [[path.join(home, '.agents/skills', PROVIDER), 'global-skill']] : []),
|
|
120
|
-
[path.join(config, 'skills', PROVIDER), 'global-skill'],
|
|
121
|
-
];
|
|
122
|
-
for (const [root, source] of locations) if (fs.existsSync(path.join(root, 'SKILL.md'))) add(root, source);
|
|
123
|
-
if (host === 'codex') codexCandidates(config, project, env, add, report);
|
|
124
|
-
else if (['claude', 'workbuddy', 'codebuddy'].includes(host)) registeredCandidates(host, config, project, add, report);
|
|
125
|
-
return result;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
module.exports = { discoverProviderCandidates };
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
const fs = require('node:fs');
|
|
3
|
-
const path = require('node:path');
|
|
4
|
-
const crypto = require('node:crypto');
|
|
5
|
-
const assert = require('node:assert/strict');
|
|
6
|
-
const assetRoot = path.resolve(__dirname, '../assets/templates/enterprise-admin');
|
|
7
|
-
const hash = bytes => crypto.createHash('sha256').update(bytes).digest('hex');
|
|
8
|
-
function inventory(root, prefix = '') {
|
|
9
|
-
return fs.readdirSync(path.join(root, prefix), { withFileTypes: true }).flatMap(entry => {
|
|
10
|
-
const file = prefix ? prefix + '/' + entry.name : entry.name;
|
|
11
|
-
assert.ok(!entry.isSymbolicLink(), 'Refusing reference symlink: ' + file);
|
|
12
|
-
return entry.isDirectory() ? inventory(root, file) : [file];
|
|
13
|
-
}).sort();
|
|
14
|
-
}
|
|
15
|
-
function verifyReference(root = assetRoot) {
|
|
16
|
-
const origin = JSON.parse(fs.readFileSync(path.join(root, 'origin.json'), 'utf8'));
|
|
17
|
-
assert.equal(origin.schemaVersion, 1, 'Invalid enterprise source record');
|
|
18
|
-
const reference = path.join(root, 'reference');
|
|
19
|
-
const storedPaths = Object.keys(origin.files).map(file => origin.storagePaths?.[file] || file);
|
|
20
|
-
assert.equal(new Set(storedPaths).size, storedPaths.length, 'Duplicate enterprise asset mapping');
|
|
21
|
-
assert.deepEqual(inventory(reference), storedPaths.sort(), 'Enterprise source inventory changed');
|
|
22
|
-
assert.equal(origin.fileCount, Object.keys(origin.files).length, 'Enterprise source file count changed');
|
|
23
|
-
for (const [file, expected] of Object.entries(origin.files)) {
|
|
24
|
-
assert.ok(!path.isAbsolute(file) && !file.split(/[\\/]/).some(part => !part || part === '..'), 'Invalid source path');
|
|
25
|
-
const stored = origin.storagePaths?.[file] || file;
|
|
26
|
-
assert.ok(!path.isAbsolute(stored) && !stored.split(/[\\/]/).some(part => !part || part === '..'), 'Invalid mapped source path');
|
|
27
|
-
assert.equal(hash(fs.readFileSync(path.join(reference, stored))), expected, 'Enterprise source integrity / 来源完整性: ' + file);
|
|
28
|
-
}
|
|
29
|
-
assert.equal(hash(fs.readFileSync(path.join(reference, 'assets-manifest.json'))), origin.sourceManifestDigest, 'Invalid source manifest digest');
|
|
30
|
-
return origin;
|
|
31
|
-
}
|
|
32
|
-
function brandRuntimeResource(file, content) {
|
|
33
|
-
if (file !== 'index.html' && !/^src\/(?:[^/.][^/]*\/)*[^/]+\.(?:js|mjs|html)$/.test(file)) return content;
|
|
34
|
-
const text = Buffer.isBuffer(content) ? content.toString('utf8') : content;
|
|
35
|
-
const branded = text.replaceAll('EASEL', 'i3-Composer');
|
|
36
|
-
return branded === text ? content : Buffer.isBuffer(content) ? Buffer.from(branded, 'utf8') : branded;
|
|
37
|
-
}
|
|
38
|
-
const mapping = {
|
|
39
|
-
schemaVersion: 1,
|
|
40
|
-
scope: 'i3-Composer 企业后台完整示例;模板审查范围,不代表其他业务已适配',
|
|
41
|
-
requirements: [
|
|
42
|
-
{ id: 'ENT-01', pages: ['#/workbench'], roles: ['演示身份'], actions: ['查看工作台和导航'], scenarios: ['enterprise-navigation'] },
|
|
43
|
-
{ id: 'ENT-02', pages: ['#/models'], roles: ['有模型编辑权限的演示身份'], actions: ['新增模型', '校验和保存草稿'], scenarios: ['enterprise-form'] },
|
|
44
|
-
{ id: 'ENT-03', pages: ['#/models', '#/permissions'], roles: ['演示身份', '只读身份'], actions: ['切换身份并检查动作权限'], scenarios: ['enterprise-permissions'] },
|
|
45
|
-
{ id: 'ENT-04', pages: ['#/workflows'], roles: ['演示身份'], actions: ['查看和编辑流程'], scenarios: ['enterprise-workflow'] },
|
|
46
|
-
{ id: 'ENT-05', pages: ['#/pbcs'], roles: ['演示身份'], actions: ['查看 PBC 并操作业务向导'], scenarios: ['enterprise-pbc'] },
|
|
47
|
-
{ id: 'ENT-06', pages: ['#/workbench', '#/models', '#/intents/new'], roles: ['演示身份'], actions: ['窄屏导航', '键盘开关菜单', '保留未保存输入'], scenarios: ['enterprise-responsive', 'enterprise-keyboard'] },
|
|
48
|
-
{ id: 'ENT-07', pages: ['#/models'], roles: ['演示身份'], actions: ['查看空、失败等演示反馈'], scenarios: ['enterprise-feedback'] },
|
|
49
|
-
{ id: 'ENT-08', pages: ['app/routes.json'], roles: ['演示身份'], actions: ['打开原版已提供的全部页面入口'], scenarios: ['enterprise-routes'] },
|
|
50
|
-
],
|
|
51
|
-
openQuestions: ['新项目的模块、字段、状态、权限及接口需按实际需求替换。原有 i3-Composer 示例不自动成为新业务规格。'],
|
|
52
|
-
};
|
|
53
|
-
function initialize(directory, { id, title, purpose, templateRoot = assetRoot }) {
|
|
54
|
-
const origin = verifyReference(templateRoot);
|
|
55
|
-
assert.ok(['template-review', 'business-prototype'].includes(purpose), 'Invalid enterprise prototype purpose');
|
|
56
|
-
const app = path.join(directory, 'app');
|
|
57
|
-
const instanceId = crypto.randomUUID();
|
|
58
|
-
const storagePrefix = 'i3-enterprise-' + id + '-' + instanceId + '-';
|
|
59
|
-
fs.cpSync(path.join(templateRoot, 'reference'), app, { recursive: true });
|
|
60
|
-
// Skill-supporting Markdown follows the repository naming convention. The
|
|
61
|
-
// source name and bytes are recorded, then restored in each runnable copy.
|
|
62
|
-
for (const [original, stored] of Object.entries(origin.storagePaths || {})) {
|
|
63
|
-
fs.renameSync(path.join(app, stored), path.join(app, original));
|
|
64
|
-
}
|
|
65
|
-
const adaptations = [];
|
|
66
|
-
for (const file of inventory(app).filter(name => name !== 'index.html' && /\.(?:js|mjs|html)$/.test(name))) {
|
|
67
|
-
const location = path.join(app, file), old = fs.readFileSync(location, 'utf8');
|
|
68
|
-
const reasons = [], branded = brandRuntimeResource(file, old);
|
|
69
|
-
if (branded !== old) reasons.push('运行时可见品牌与示例数据统一为 i3-Composer');
|
|
70
|
-
const next = /\.(?:js|mjs)$/.test(file) ? branded.replaceAll('i3-prototype-antdv-', storagePrefix) : branded;
|
|
71
|
-
if (next !== branded) reasons.push('替换本地演示存储前缀,隔离不同原型实例');
|
|
72
|
-
if (next !== old) {
|
|
73
|
-
fs.writeFileSync(location, next);
|
|
74
|
-
adaptations.push({ file, reason: reasons.join(';'), source: origin.files[file], generated: hash(next) });
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
const index = path.join(app, 'index.html');
|
|
78
|
-
const portable = fs.readFileSync(path.join(templateRoot, 'index.html'), 'utf8');
|
|
79
|
-
assert.ok(portable.includes('src="offline.js"') && !portable.includes('type="module"'), 'Offline enterprise entry required');
|
|
80
|
-
const adapted = portable.replaceAll('href="reference/', 'href="').replaceAll('data-source="reference/', 'data-source="')
|
|
81
|
-
.replace('</head>', ' <link rel="stylesheet" href="tokens.css">\n</head>')
|
|
82
|
-
.replace(/(<script type="application\/json" id="prototype-offline-config">)[\s\S]*?(<\/script>)/,
|
|
83
|
-
(_, start, end) => start + JSON.stringify({ title }).replaceAll('<', '\\u003c') + end);
|
|
84
|
-
fs.writeFileSync(index, adapted);
|
|
85
|
-
const offline = fs.readFileSync(path.join(templateRoot, 'offline.js'), 'utf8')
|
|
86
|
-
.replaceAll('new URL("reference/', 'new URL("').replaceAll('i3-prototype-antdv-', storagePrefix);
|
|
87
|
-
fs.writeFileSync(path.join(app, 'offline.js'), offline);
|
|
88
|
-
adaptations.push({ file: 'index.html', reason: 'i3-Composer 完整可编辑 HTML 片段、路由和实例配置内嵌;经典脚本支持 file://;保留全部内容与本地样式', source: origin.files['index.html'], generated: hash(adapted) });
|
|
89
|
-
adaptations.push({ file: 'offline.js', reason: '来源模块的离线运行适配,实例存储前缀隔离;原始模块仍保留', generated: hash(offline) });
|
|
90
|
-
fs.copyFileSync(path.join(templateRoot, 'usability.css'), path.join(app, 'usability.css'));
|
|
91
|
-
fs.writeFileSync(path.join(app, 'enterprise-bootstrap.mjs'), "const response = await fetch(new URL('./config.json', import.meta.url));\nif (!response.ok) throw new Error('无法读取企业后台实例配置');\nconst config = await response.json();\ndocument.title = config.title;\nawait import('./app.js');\n");
|
|
92
|
-
fs.copyFileSync(path.join(templateRoot, 'serve.cjs'), path.join(app, 'serve.cjs'));
|
|
93
|
-
fs.mkdirSync(path.join(directory, 'design-system'), { recursive: true });
|
|
94
|
-
fs.writeFileSync(path.join(directory, 'design-system/MASTER.md'), fs.readFileSync(path.join(templateRoot, 'design-system.md')));
|
|
95
|
-
fs.writeFileSync(path.join(directory, 'design-system/source.json'), JSON.stringify({
|
|
96
|
-
schemaVersion: 1, source: origin.source, sourceVersion: origin.sourceVersion, sourceManifestDigest: origin.sourceManifestDigest,
|
|
97
|
-
sourceFileCount: origin.fileCount, adaptations, purpose, description: '所有来源文件已复制;运行时统一使用 i3-Composer 品牌,并保留初始化接入和存储隔离记录。app/qa 是历史来源证据,当前验收使用原型根 qa/。',
|
|
98
|
-
}, null, 2) + '\n');
|
|
99
|
-
fs.mkdirSync(path.join(directory, 'mocks'), { recursive: true });
|
|
100
|
-
fs.writeFileSync(path.join(directory, 'mocks/README.md'), '# 演示数据\n\n完整 i3-Composer 示例的数据与规则保留在 app/src/ 各模块中,并使用实例独立的本地存储。它们用于模板审查;新业务需要按需求替换,不能当作真实服务或已完成业务适配。\n');
|
|
101
|
-
fs.writeFileSync(path.join(directory, 'requirements-map.json'), JSON.stringify(mapping, null, 2) + '\n');
|
|
102
|
-
return { kind: 'easel-html', entry: 'app/index.html', sourceVersion: origin.sourceVersion, instanceId, storagePrefix, offlineVersion: 1 };
|
|
103
|
-
}
|
|
104
|
-
module.exports = { verifyReference, initialize, brandRuntimeResource };
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
const assert=require('node:assert/strict'),E=require('./execution-evidence.cjs');
|
|
3
|
-
const METHODS=['evaluate_script','take_snapshot','list_console_messages','list_network_requests','performance_stop_trace'];
|
|
4
|
-
function validate(value,scenarioIds) {
|
|
5
|
-
assert.equal(value?.schemaVersion,1,'Fixed native assertions schema required');assert.ok(Array.isArray(value.scenarios),'Fixed native assertion scenarios required');
|
|
6
|
-
assert.deepEqual(value.scenarios.map(s=>s.scenarioId).sort(),[...scenarioIds].sort(),'Fixed native assertion scenario coverage differs');
|
|
7
|
-
for(const scenario of value.scenarios) {
|
|
8
|
-
assert.ok(scenario.checks?.length,'Each fixed scenario needs actual result assertions before implementation');
|
|
9
|
-
for(const check of scenario.checks) {
|
|
10
|
-
assert.ok(METHODS.includes(check.method),'Unsupported native assertion method');
|
|
11
|
-
assert.ok(typeof check.pointer==='string'&&/^\/(?:[^~]|~[01])*$/.test(check.pointer)&&!/(?:__proto__|constructor|prototype)/.test(check.pointer),'Safe JSON pointer required');
|
|
12
|
-
assert.ok(['equals','includes','gte','lte'].includes(check.operator),'Unsupported native assertion operator');
|
|
13
|
-
assert.ok(Object.hasOwn(check,'expected')&&check.expected!==null,'Explicit fixed expected fact required');
|
|
14
|
-
if(['gte','lte'].includes(check.operator))assert.equal(typeof check.expected,'number','Numeric fixed expectation required');
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
return value;
|
|
18
|
-
}
|
|
19
|
-
function resultData(result) {
|
|
20
|
-
const text=E.resultText(result).trim();let value;
|
|
21
|
-
try{value=JSON.parse(text);}catch{const blocks=[...text.matchAll(/```(?:json)?\s*\n([\s\S]*?)\n```/g)];assert.equal(blocks.length,1,'One actual JSON result or JSON code block required');value=JSON.parse(blocks[0][1]);}
|
|
22
|
-
assert.ok(value&&typeof value==='object','Native JSON fact result required');return value;
|
|
23
|
-
}
|
|
24
|
-
function extract(value,pointer) {
|
|
25
|
-
for(const part of pointer.slice(1).split('/').map(p=>p.replaceAll('~1','/').replaceAll('~0','~'))) {assert.ok(value&&Object.hasOwn(value,part),'Native expected fact is absent');value=value[part];}return value;
|
|
26
|
-
}
|
|
27
|
-
function compare(actual,check) {
|
|
28
|
-
if(check.operator==='equals')assert.deepEqual(actual,check.expected,'Native fact differs from fixed expectation');
|
|
29
|
-
else if(check.operator==='includes')assert.ok((typeof actual==='string'||Array.isArray(actual))&&actual.includes(check.expected),'Native fact does not include fixed expectation');
|
|
30
|
-
else {assert.equal(typeof actual,'number','Native numeric fact required');assert.ok(check.operator==='gte'?actual>=check.expected:actual<=check.expected,'Native numeric fact differs from fixed expectation');}
|
|
31
|
-
}
|
|
32
|
-
function template(options) {
|
|
33
|
-
const fs=require('node:fs'),path=require('node:path'),T=require('./template-contract.cjs');
|
|
34
|
-
assert.ok(options.scope,'Sourced scope file required');const scope=JSON.parse(fs.readFileSync(path.resolve(options.scope),'utf8'));
|
|
35
|
-
const snapshot=options.templateRoot?T.loadTemplate(path.resolve(options.templateRoot)):T.loadBundledTemplate(options.template);
|
|
36
|
-
const selection=snapshot.kind==='content-reference'?require('./content-template.cjs').scopeInputs(snapshot,scope,T):null;
|
|
37
|
-
const generation=scope.schemaVersion===3?require('./generation-contract.cjs').compile(snapshot,scope):null;
|
|
38
|
-
const scenarios=[...(selection?.result.requiredScenarios||snapshot.index.requiredScenarios),...(generation?.scenarios||[])];
|
|
39
|
-
const drawer=selection&&(selection.fixed.regions.some(r=>r.mode==='edit-form')||generation?.bindings.some(b=>b.capabilityId==='dialog'&&b.parameters.presentation==='drawer'));
|
|
40
|
-
const framework=selection?['framework-responsive','framework-instance-isolation','template-content-projection',...(drawer?['framework-drawer-motion','framework-mask-blur','framework-focus-scroll']:[])]:['framework-drawer-motion','framework-mask-blur','framework-focus-scroll','framework-states','framework-responsive','framework-instance-isolation','template-content-projection'];
|
|
41
|
-
return {schemaVersion:1,scopeDigest:E.sha(JSON.stringify(scope)),templateDigest:snapshot.digest,scenarios:[...scenarios.map(s=>({scenarioId:typeof s==='string'?s:s.id,expectedSummary:s.expected||null,checks:[]})),...framework.map(scenarioId=>({scenarioId,checks:[]}))]};
|
|
42
|
-
}
|
|
43
|
-
module.exports={validate,resultData,extract,compare,template};
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
// Protocol failures exist before a run binding. Never turn them into invocation proof.
|
|
3
|
-
const fs=require('node:fs'),path=require('node:path');
|
|
4
|
-
const F=require('./native-files.cjs'),C=require('./codebuddy-context.cjs'),E=require('./execution-evidence.cjs'),H=require('./buddy-host.cjs');
|
|
5
|
-
const read=file=>fs.existsSync(file)?JSON.parse(C.read(file)):null;
|
|
6
|
-
function location(payload,options){
|
|
7
|
-
if(!payload.session_id||!path.isAbsolute(options.base||''))return null;
|
|
8
|
-
const installation=read(path.join(options.base,'state/i3-prototype/installation.json'));if(!installation)return null;
|
|
9
|
-
const identity=H.identify(payload,installation,options),pointer=`state/i3-prototype/tasks/${E.sha(identity.host+':'+identity.product+':'+payload.session_id).slice(0,24)}.json`;
|
|
10
|
-
const previous=read(F.inside(options.base,pointer));
|
|
11
|
-
let project=options.scope==='project'?path.dirname(options.base):previous?.project;
|
|
12
|
-
if(!project)project=H.isIDE(payload)&&payload.cwd==='/'?E.ideWorkspace(payload.transcript_path,payload.session_id):payload.cwd;
|
|
13
|
-
if(!project||!path.isAbsolute(project))return null;project=fs.realpathSync(project);
|
|
14
|
-
if(payload.cwd&&payload.cwd!=='/'){
|
|
15
|
-
const relative=path.relative(project,fs.realpathSync(payload.cwd));if(relative==='..'||relative.startsWith('..'+path.sep)||path.isAbsolute(relative))return null;
|
|
16
|
-
}
|
|
17
|
-
const record={...installation,...identity,base:options.base,registrationDigest:E.sha(JSON.stringify(installation)),settingsDigest:E.sha(C.read(path.join(options.base,'settings.json')))};
|
|
18
|
-
return {project,record,identity,pointer,previous,directory:C.sessionDirectory(record,project,payload.session_id)};
|
|
19
|
-
}
|
|
20
|
-
function context(payload,options,{source}={}){
|
|
21
|
-
const where=location(payload,options);if(!where)return null;
|
|
22
|
-
let native=source;if(!native)try{native=C.source(payload,where.record,where.project);}catch{/* Failure diagnostics must survive unreadable native history. */}
|
|
23
|
-
// Diagnostics identify a session/context, never the wording of the last user
|
|
24
|
-
// message. UserPromptSubmit can precede persistence: do not combine its text
|
|
25
|
-
// with the preceding native prompt's cursor or digest.
|
|
26
|
-
const contextLine=native?.contextLine??where.previous?.contextLine??0;
|
|
27
|
-
const taskKey=E.sha(JSON.stringify([where.project,where.identity.host,where.identity.product,payload.session_id,contextLine]));
|
|
28
|
-
const task={schemaVersion:2,taskKey,sessionId:payload.session_id,project:where.project,host:where.identity.host,product:where.identity.product,contextLine,
|
|
29
|
-
restriction:C.restriction(native?.prompts,where.previous?.restriction)};
|
|
30
|
-
return {...where,source:native,task};
|
|
31
|
-
}
|
|
32
|
-
function remember(payload,options){
|
|
33
|
-
const value=context(payload,options);if(!value)return;
|
|
34
|
-
const id=payload.prompt_id||payload.generation_id;
|
|
35
|
-
const submission=id?E.sha(JSON.stringify([id,payload.prompt||''])):null;
|
|
36
|
-
const previous=value.previous?.submissions||[];
|
|
37
|
-
if(submission&&previous.includes(submission))return;
|
|
38
|
-
const control=C.userRestriction(payload.prompt||'');
|
|
39
|
-
// Restrict immediately. Releasing permission waits for the corresponding
|
|
40
|
-
// native user message, so a stale or unpersisted resume cannot grant writes.
|
|
41
|
-
if(control===true)value.task.restriction.blocked=true;
|
|
42
|
-
value.task.submissions=submission?[...previous.slice(-63),submission]:previous;
|
|
43
|
-
F.write(options.base,value.pointer,value.task);
|
|
44
|
-
}
|
|
45
|
-
function state(value){return read(path.join(value.directory,'diagnostics.json'))||{schemaVersion:1,tasks:{}};}
|
|
46
|
-
function message(failure){return `原型 Hook 无法核验当前操作${failure.status==='blocked'?',已停止重复提示':''}:${failure.reason}。请简要报告未验收项,由维护入口处理;不要在原型任务中修复 Hook 或重复绑定,也不能宣称已验证。`;}
|
|
47
|
-
function failure(value,payload,error){
|
|
48
|
-
if(!value)return {continue:true};
|
|
49
|
-
return F.withLock(value.directory,'.diagnostics.lock',()=>{
|
|
50
|
-
const store=state(value),key=value.task.taskKey;
|
|
51
|
-
const phase=/JSON|transcript|source|history|日志/i.test(error.message)?'native-source':'native-request';
|
|
52
|
-
const eventKey=E.sha(JSON.stringify([key,payload.tool_use_id||payload.call_id||payload.hook_event_name,payload.tool_name||null,payload.tool_input||null,phase]));
|
|
53
|
-
const item=store.tasks[key]||{schemaVersion:1,taskKey:key,total:0,counts:{},events:{},status:'required'};
|
|
54
|
-
if(!item.events[eventKey]&&item.status!=='blocked'){
|
|
55
|
-
if(item.total>=6||(item.counts[phase]||0)>=2)item.status='blocked';
|
|
56
|
-
else {item.total++;item.counts[phase]=(item.counts[phase]||0)+1;item.status='required';}
|
|
57
|
-
Object.assign(item,{eventKey,reason:String(error.message).slice(0,2000),phase,at:new Date().toISOString(),host:value.identity.host,product:value.identity.product,productVersion:value.identity.productVersion,
|
|
58
|
-
callMode:payload.agent_type==='ptc'||value.source?.calls.some(c=>c.name==='REPL')?'ptc-repl':value.identity.product==='ide'?'native-ide':'direct',sessionId:payload.session_id,project:value.project,
|
|
59
|
-
registrationDigest:value.record.registrationDigest,settingsDigest:value.record.settingsDigest,transcriptPath:payload.transcript_path});
|
|
60
|
-
item.events[eventKey]=true;store.tasks[key]=item;F.write(value.directory,'diagnostics.json',store);
|
|
61
|
-
}
|
|
62
|
-
const result={reason:message(item),failure:item};
|
|
63
|
-
return payload.hook_event_name==='PreToolUse'?{...result,deny:true}:{continue:true,failure:item,...(item.status!=='blocked'?{context:result.reason}:{})};
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
function recover(value){
|
|
67
|
-
if(!value)return;
|
|
68
|
-
return F.withLock(value.directory,'.diagnostics.lock',()=>{const store=state(value),item=store.tasks[value.task.taskKey];
|
|
69
|
-
if(item&&item.status!=='recovered'){item.status='recovered';item.recoveredAt=new Date().toISOString();F.write(value.directory,'diagnostics.json',store);}
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
function observed(value,payload){
|
|
73
|
-
if(!value)return;
|
|
74
|
-
const source=C.source(payload,value.record,value.project),at=new Date().toISOString();
|
|
75
|
-
const entry={schemaVersion:1,sessionId:payload.session_id,taskKey:value.task.taskKey,project:value.project,projectKey:C.projectKey(value.project),host:value.identity.host,product:value.identity.product,
|
|
76
|
-
productVersion:value.identity.productVersion,identitySource:value.identity.identitySource,registrationDigest:value.record.registrationDigest,settingsDigest:value.record.settingsDigest,
|
|
77
|
-
source:{path:source.path,bytes:source.bytes,digest:source.digest},callMode:source.callMode||'direct',skills:Object.fromEntries(['prototype','frontend','antdv','uiux','browser'].map(key=>[key,E.loaded(source.calls,key).length])),
|
|
78
|
-
lastHook:{event:payload.hook_event_name,at}};
|
|
79
|
-
F.write(value.directory,'observation.json',entry);
|
|
80
|
-
}
|
|
81
|
-
function latest({base,project,host,record}){
|
|
82
|
-
const parent=path.join(base,'state/i3-prototype',C.projectKey(project));let found=null;
|
|
83
|
-
if(!fs.existsSync(parent))return null;
|
|
84
|
-
for(const name of fs.readdirSync(parent)){
|
|
85
|
-
if(!/^[a-f0-9]{24}$/.test(name))continue;
|
|
86
|
-
const data=read(path.join(parent,name,'diagnostics.json'));if(!data)continue;
|
|
87
|
-
for(const item of Object.values(data.tasks||{}))if(item.host===host&&item.project===project&&item.registrationDigest===record.registrationDigest&&item.settingsDigest===record.settingsDigest&&item.status!=='recovered'&&(!found||item.at>found.at))found=item;
|
|
88
|
-
}
|
|
89
|
-
if(!found)return null;const {events,...summary}=found;return summary;
|
|
90
|
-
}
|
|
91
|
-
module.exports={context,remember,failure,recover,observed,latest};
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
const assert = require('node:assert/strict');
|
|
3
|
-
const crypto = require('node:crypto');
|
|
4
|
-
const fs = require('node:fs');
|
|
5
|
-
const path = require('node:path');
|
|
6
|
-
const P = require('./execution-policy.cjs');
|
|
7
|
-
const {toolName}=require('./native-tool-name.cjs');
|
|
8
|
-
const sha = value => crypto.createHash('sha256').update(value).digest('hex');
|
|
9
|
-
function contentText(content) {
|
|
10
|
-
if (typeof content === 'string') return content;
|
|
11
|
-
if (content?.type === 'text' && typeof content.text === 'string') return content.text;
|
|
12
|
-
if (Array.isArray(content)) return content.map(item => item?.type === 'text' ? item.text || '' : item?.type === 'image' ? '[native image result]' : '').join('\n');
|
|
13
|
-
return content === undefined ? '' : JSON.stringify(content);
|
|
14
|
-
}
|
|
15
|
-
// CodeBuddy Code 2.169 serializes flat message/function_call rows. Keep the
|
|
16
|
-
// original line cursor and session identity while adapting only observed shapes.
|
|
17
|
-
// Legacy assistant/user + tool_use/tool_result JSONL remains supported.
|
|
18
|
-
function nativeEvent(event) {
|
|
19
|
-
if (event.type === 'message' && ['assistant', 'user'].includes(event.role)) {
|
|
20
|
-
const content = Array.isArray(event.content) ? event.content.map(block =>
|
|
21
|
-
['input_text', 'output_text'].includes(block?.type) ? { ...block, type: 'text' } : block) : event.content;
|
|
22
|
-
return { ...event, type: event.role, isMeta:event.isMeta===true||event.providerData?.isMeta===true, message: { content } };
|
|
23
|
-
}
|
|
24
|
-
if (event.type === 'function_call') {
|
|
25
|
-
let input;
|
|
26
|
-
try { input = typeof event.arguments === 'string' ? JSON.parse(event.arguments) : event.arguments; }
|
|
27
|
-
catch { throw new Error('Invalid native function arguments JSON'); }
|
|
28
|
-
assert.ok(input && typeof input === 'object' && !Array.isArray(input), 'Invalid native function arguments');
|
|
29
|
-
return { ...event, type: 'assistant', message: { content: [{ type: 'tool_use', id: event.callId, name: event.name, input }] } };
|
|
30
|
-
}
|
|
31
|
-
if (event.type === 'function_call_result') {
|
|
32
|
-
return { ...event, type: 'user', message: { content: [{ type: 'tool_result', tool_use_id: event.callId,
|
|
33
|
-
tool_name: event.name, content: event.output, is_error: event.status !== 'completed' }] } };
|
|
34
|
-
}
|
|
35
|
-
return event;
|
|
36
|
-
}
|
|
37
|
-
function successful(block) {
|
|
38
|
-
if (block.is_error || block.isError || block.success === false || block.error) return false;
|
|
39
|
-
const text = contentText(block.content ?? block.result ?? block.tool_response);
|
|
40
|
-
if (!text.trim()) return false;
|
|
41
|
-
function failed(value,depth=0) {
|
|
42
|
-
if(depth>8)return true;
|
|
43
|
-
if(typeof value==='string'){
|
|
44
|
-
if(/^\s*(?:Error:|Error\b|错误[::]|Unknown skill\b|Skill[^\n]*not (?:found|available))/i.test(value))return true;
|
|
45
|
-
try{return failed(JSON.parse(value),depth+1);}catch{return false;}
|
|
46
|
-
}
|
|
47
|
-
if(!value||typeof value!=='object')return false;
|
|
48
|
-
if(value.type==='text')return failed(value.text,depth+1);
|
|
49
|
-
if(value.isError||value.is_error||value.success===false||value.error||['failed','error','cancelled'].includes(value.status))return true;
|
|
50
|
-
if(typeof value.exitCode==='number'&&value.exitCode!==0)return true;
|
|
51
|
-
if(typeof value.stdout==='string'&&failed(value.stdout,depth+1))return true;
|
|
52
|
-
// Only descend through native execution envelopes, not arbitrary observed
|
|
53
|
-
// application data such as {result:{status:'failed'}} from a browser check.
|
|
54
|
-
const envelope=typeof value.success==='boolean'||['success','error'].includes(value.status)||value.type==='execute_command_result';
|
|
55
|
-
return !!(envelope&&value.result!==undefined&&failed(value.result,depth+1));
|
|
56
|
-
}
|
|
57
|
-
return !failed(text);
|
|
58
|
-
}
|
|
59
|
-
function resultContent(content){
|
|
60
|
-
let value=content;
|
|
61
|
-
for(let depth=0;depth<8;depth++){
|
|
62
|
-
if(typeof value==='string'){
|
|
63
|
-
try{const parsed=JSON.parse(value);if(parsed&&typeof parsed==='object'&&(parsed.type==='text'||parsed.type==='execute_command_result'||typeof parsed.success==='boolean')){value=parsed;continue;}}catch{/* Plain text and fenced MCP facts remain text. */}
|
|
64
|
-
return value;
|
|
65
|
-
}
|
|
66
|
-
if(Array.isArray(value)){value=contentText(value);continue;}
|
|
67
|
-
if(value?.type==='text'){value=value.text;continue;}
|
|
68
|
-
if(!value||typeof value!=='object')return value;
|
|
69
|
-
if((typeof value.success==='boolean'||['success','error'].includes(value.status)||value.type==='execute_command_result')&&value.result!==undefined){value=value.result;continue;}
|
|
70
|
-
if(typeof value.stdout==='string'){value=value.stdout;continue;}
|
|
71
|
-
return value;
|
|
72
|
-
}
|
|
73
|
-
return null;
|
|
74
|
-
}
|
|
75
|
-
function resultValue(content){
|
|
76
|
-
const value=resultContent(content);
|
|
77
|
-
if(typeof value==='string'){try{return JSON.parse(value);}catch{return null;}}
|
|
78
|
-
return value;
|
|
79
|
-
}
|
|
80
|
-
const resultText=content=>contentText(resultContent(content));
|
|
81
|
-
function parse(text) {
|
|
82
|
-
assert.ok(typeof text === 'string' && Buffer.byteLength(text) <= 64 * 1024 * 1024, 'Native transcript is too large');
|
|
83
|
-
const calls = [], requests = new Map(); let nativeMessages = 0, contextLine = 0, promptLine = 0;
|
|
84
|
-
for (const [lineIndex, line] of text.split('\n').entries()) {
|
|
85
|
-
if (!line.trim()) continue;
|
|
86
|
-
let event; try { event = JSON.parse(line); } catch { throw new Error(`Invalid native JSONL at line ${lineIndex + 1}`); }
|
|
87
|
-
event = nativeEvent(event);
|
|
88
|
-
if (event.type === 'system' && ['compact_boundary','compact'].includes(event.subtype)) contextLine = lineIndex + 1;
|
|
89
|
-
const message = event.message;
|
|
90
|
-
if (!message || !['assistant', 'user'].includes(event.type)) continue;
|
|
91
|
-
const content = typeof message.content === 'string' ? [{type:'text',text:message.content}] : message.content;
|
|
92
|
-
if (!Array.isArray(content)) continue;
|
|
93
|
-
nativeMessages++;
|
|
94
|
-
if (event.type === 'user' && !event.isMeta && !event.isSidechain && content.some(block=>block.type==='text') && !content.some(block=>block.type==='tool_result')) promptLine = lineIndex + 1;
|
|
95
|
-
for (const block of content) {
|
|
96
|
-
if (event.type === 'assistant' && block.type === 'tool_use') {
|
|
97
|
-
assert.ok(typeof block.id === 'string' && block.id && typeof block.name === 'string', 'Native request identity missing');
|
|
98
|
-
assert.ok(!requests.has(block.id), 'Duplicate native tool call ID');
|
|
99
|
-
const name=toolName(block.name),input = block.input || {}, skillName = name==='Skill' ? input.skill || input.name || input.command : null;
|
|
100
|
-
const normalized = typeof skillName === 'string' ? skillName.replace(/^i3-composer-agent:/, '') : null;
|
|
101
|
-
const call = { toolCallId: block.id, name, ...(name!==block.name?{rawName:block.name}:{}), input, skillName: normalized, skill: P.skillKey(normalized),
|
|
102
|
-
sessionId:event.sessionId||event.session_id||null, cwd:event.cwd||null, nativeRequestId:event.nativeRequestId||null, contextLine, promptLine,
|
|
103
|
-
requestLine: lineIndex + 1, requestDigest: sha(JSON.stringify(block)), success: false };
|
|
104
|
-
requests.set(block.id, call); calls.push(call);
|
|
105
|
-
} else if (event.type === 'user' && block.type === 'tool_result') {
|
|
106
|
-
const call = requests.get(block.tool_use_id);
|
|
107
|
-
assert.ok(call && !call.resultLine, 'Unmatched or duplicate native tool result');
|
|
108
|
-
if (block.tool_name !== undefined) assert.equal(toolName(block.tool_name), call.name, 'Native tool result name differs');
|
|
109
|
-
if (call.sessionId && (event.sessionId||event.session_id)) assert.equal(call.sessionId,event.sessionId||event.session_id,'Cross-session native result');
|
|
110
|
-
Object.assign(call, { resultLine: lineIndex + 1, resultDigest: sha(JSON.stringify(block)),
|
|
111
|
-
result: block.content, success: successful(block) });
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
assert.ok(nativeMessages, 'No native assistant/user transcript messages');
|
|
116
|
-
return calls;
|
|
117
|
-
}
|
|
118
|
-
function loaded(calls, skill) { return calls.filter(call => call.skill === skill && call.success && call.resultLine); }
|
|
119
|
-
function reference(calls, value) {
|
|
120
|
-
const call = calls.find(item => item.toolCallId === value?.toolCallId);
|
|
121
|
-
assert.ok(call?.success && call.resultLine, 'Successful native tool result missing');
|
|
122
|
-
if (value.resultDigest !== undefined) assert.equal(value.resultDigest, call.resultDigest, 'Native result digest differs');
|
|
123
|
-
return call;
|
|
124
|
-
}
|
|
125
|
-
function describe(text) {
|
|
126
|
-
const prompts=[];let contextLine=0,latestAssistant='';
|
|
127
|
-
for(const [index,line] of text.split('\n').entries()) {
|
|
128
|
-
if(!line.trim())continue;const row=nativeEvent(JSON.parse(line));
|
|
129
|
-
if(row.type==='system'&&['compact_boundary','compact'].includes(row.subtype))contextLine=index+1;
|
|
130
|
-
const content=row.message?.content;
|
|
131
|
-
if(row.type==='assistant'&&(typeof content==='string'||Array.isArray(content)&&content.some(b=>b.type==='text')&&!content.some(b=>b.type==='tool_use')))latestAssistant=contentText(content);
|
|
132
|
-
if(row.type==='user'&&!row.isMeta&&!row.isSidechain&&(typeof content==='string'||Array.isArray(content)&&content.some(b=>b.type==='text')&&!content.some(b=>b.type==='tool_result')))
|
|
133
|
-
prompts.push({line:index+1,digest:sha(line),text:contentText(content),sessionId:row.sessionId||row.session_id||null,
|
|
134
|
-
...(row.nativeRequestId?{nativeRequestId:row.nativeRequestId}:{})});
|
|
135
|
-
}
|
|
136
|
-
return {prompts,contextLine,latestAssistant};
|
|
137
|
-
}
|
|
138
|
-
function sourceData(file) {
|
|
139
|
-
if(path.basename(file)==='index.json') {
|
|
140
|
-
const ide=require('./codebuddy-ide-source.cjs').read(file);
|
|
141
|
-
return {...ide,buffer:Buffer.from(ide.text)};
|
|
142
|
-
}
|
|
143
|
-
const buffer=fs.readFileSync(file);return {buffer,text:buffer.toString('utf8'),format:'native-jsonl'};
|
|
144
|
-
}
|
|
145
|
-
function cursorBytes(file){return sourceData(file).buffer;}
|
|
146
|
-
function ideWorkspace(file,sessionId) {
|
|
147
|
-
assert.ok(typeof file==='string'&&path.isAbsolute(file)&&path.basename(file)==='index.json','Native IDE index path required');
|
|
148
|
-
assert.equal(path.basename(path.dirname(file)),sessionId,'Native IDE session directory differs');
|
|
149
|
-
const data=sourceData(file);assert.ok(data.workspace,'Native IDE workspace context is missing');
|
|
150
|
-
return data.workspace;
|
|
151
|
-
}
|
|
152
|
-
function readSource(file, roots, {mode='manual',project}={}) {
|
|
153
|
-
assert.ok(typeof file==='string'&&path.isAbsolute(file)&&!/[\x00\r\n]/.test(file), 'Absolute native transcript file required');
|
|
154
|
-
assert.ok(['auto','manual'].includes(mode)&&Array.isArray(roots), 'Invalid native transcript policy');
|
|
155
|
-
if(mode==='manual')assert.ok(roots.length, 'Configured host transcript roots required');
|
|
156
|
-
else assert.equal(roots.length,0,'Automatic transcript mode cannot bypass configured manual roots');
|
|
157
|
-
const real = fs.realpathSync(file);
|
|
158
|
-
if(mode==='manual')assert.ok(roots.some(root => { if(!fs.existsSync(root))return false;const relative = path.relative(fs.realpathSync(root), real); return relative && relative!=='..'&&!relative.startsWith('..'+path.sep) && !path.isAbsolute(relative); }), 'Transcript is outside the configured native host log roots');
|
|
159
|
-
if(mode==='auto') {
|
|
160
|
-
assert.ok(typeof project==='string'&&path.isAbsolute(project), 'Native project required for automatic transcript validation');
|
|
161
|
-
const relative=path.relative(fs.realpathSync(project),real);
|
|
162
|
-
assert.ok(relative==='..'||relative.startsWith('..'+path.sep)||path.isAbsolute(relative), 'Native transcript cannot be inside the business project');
|
|
163
|
-
}
|
|
164
|
-
assert.ok(!fs.lstatSync(file).isSymbolicLink() && fs.statSync(real).isFile() && fs.statSync(real).size <= 64 * 1024 * 1024, 'Invalid native transcript file');
|
|
165
|
-
const data=sourceData(real),text=data.text,calls=parse(text);
|
|
166
|
-
if(data.workspace&&project)assert.equal(fs.realpathSync(data.workspace),fs.realpathSync(project),'Native IDE workspace differs from the bound project');
|
|
167
|
-
// IDE rewrites streaming argument objects before persisting their results.
|
|
168
|
-
// Freeze only the completed prefix; a pending request cannot attest success.
|
|
169
|
-
const pending=data.format==='codebuddy-ide-index-v1'?calls.filter(call=>!call.resultLine):[];
|
|
170
|
-
const firstPending=pending.length?Math.min(...pending.map(call=>call.requestLine)):null;
|
|
171
|
-
const bytes=firstPending?Buffer.from(text.split('\n').slice(0,firstPending-1).join('\n')+'\n'):data.buffer;
|
|
172
|
-
return { path: real, digest: sha(bytes), bytes: bytes.length, format:data.format, calls, ...describe(text),
|
|
173
|
-
...(firstPending?{stableThroughLine:firstPending-1}:{}),
|
|
174
|
-
...(data.latestAssistant!==undefined?{latestAssistant:data.latestAssistant}:{}),
|
|
175
|
-
sourceVerification: mode==='auto'?'native-hook-transcript':'configured-host-transcript', tamperProof: false };
|
|
176
|
-
}
|
|
177
|
-
module.exports = { sha, contentText, successful, resultContent, resultText, resultValue, parse, loaded, reference, describe, readSource, cursorBytes, ideWorkspace };
|