@givolt/i3-composer-agent 3.2.1 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/plugins/marketplace.json +1 -1
- package/.claude/commands/i3-build.md +1 -0
- package/.claude/commands/i3-code-simplify.md +1 -0
- package/.claude/commands/i3-constraints.md +1 -0
- package/.claude/commands/i3-plan.md +1 -0
- package/.claude/commands/i3-review.md +1 -0
- package/.claude/commands/i3-ship.md +1 -0
- package/.claude/commands/i3-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 +37 -70
- 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
|
@@ -56,8 +56,7 @@ function makeSandbox() {
|
|
|
56
56
|
fs.mkdirSync(path.join(root, 'evals', 'cases'), { recursive: true });
|
|
57
57
|
fs.mkdirSync(path.join(root, 'evals', 'fixtures', 'project'), { recursive: true });
|
|
58
58
|
fs.copyFileSync(RUNNER, path.join(root, 'scripts', 'run-evals.js'));
|
|
59
|
-
fs.
|
|
60
|
-
fs.copyFileSync(path.join(__dirname, 'lib', 'skill-lint.js'), path.join(root, 'scripts', 'lib', 'skill-lint.js'));
|
|
59
|
+
fs.cpSync(path.join(__dirname, 'lib'), path.join(root, 'scripts', 'lib'), { recursive: true });
|
|
61
60
|
fs.writeFileSync(path.join(root, 'evals', 'fixtures', 'project', 'context.txt'), 'fixture\n');
|
|
62
61
|
return root;
|
|
63
62
|
}
|
|
@@ -69,19 +68,20 @@ function run(root, args = []) {
|
|
|
69
68
|
});
|
|
70
69
|
}
|
|
71
70
|
|
|
72
|
-
function runBehavioralWithGrading(root, raw) {
|
|
71
|
+
function runBehavioralWithGrading(root, raw, options = {}) {
|
|
73
72
|
writeSkill(root, 'alpha-skill', 'Handles alpha widgets.');
|
|
74
73
|
const evalCase = completeCase('alpha-skill', 'change alpha widget');
|
|
75
|
-
evalCase.evals = [{ ...behavioralEval([]), kind: 'dialogue' }
|
|
74
|
+
evalCase.evals = (options.ids || [1]).map((id) => ({ ...behavioralEval([]), id, kind: 'dialogue' }));
|
|
76
75
|
writeJson(path.join(root, 'evals', 'cases', 'alpha-skill.json'), evalCase);
|
|
77
76
|
const stub = path.join(root, 'stub-claude.cjs');
|
|
78
77
|
fs.writeFileSync(stub, `
|
|
79
78
|
const assert = require('node:assert/strict');
|
|
80
79
|
require('child_process').execFileSync = (command, args) => {
|
|
81
80
|
assert.equal(command, 'claude');
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
const executor = args.includes('--output-format');
|
|
82
|
+
require('node:fs').appendFileSync(${JSON.stringify(path.join(root, 'claude-calls.txt'))}, executor ? 'executor\\n' : 'grader\\n');
|
|
83
|
+
if (executor && ${JSON.stringify(Boolean(options.error))}) throw Object.assign(new Error('executor failed'), ${JSON.stringify(options.error || {})});
|
|
84
|
+
return executor ? ${JSON.stringify(options.trace ?? '{"type":"result","subtype":"success","is_error":false,"result":"done"}\n')} : ${JSON.stringify(raw)};
|
|
85
85
|
};
|
|
86
86
|
`);
|
|
87
87
|
return spawnSync(process.execPath, [
|
|
@@ -90,6 +90,80 @@ function runBehavioralWithGrading(root, raw) {
|
|
|
90
90
|
], { cwd: root, encoding: 'utf8' });
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
+
const passingGrading = JSON.stringify({
|
|
94
|
+
expectations: [{ id: 1, text: 'check', passed: true, evidence: 'observed' }],
|
|
95
|
+
summary: { passed: 1, failed: 0, total: 1, pass_rate: 1 },
|
|
96
|
+
});
|
|
97
|
+
const terminal = { type: 'result', subtype: 'success', is_error: false };
|
|
98
|
+
const call = { type: 'assistant', message: { content: [{ type: 'tool_use', name: 'Bash', id: 'test', input: {} }] } };
|
|
99
|
+
const returned = (id, is_error = false) => ({ type: 'user', message: { content: [{ type: 'tool_result', tool_use_id: id, is_error }] } });
|
|
100
|
+
const traceOf = (...events) => events.map((event) => JSON.stringify(event)).join('\n') + '\n';
|
|
101
|
+
|
|
102
|
+
for (const [name, trace] of Object.entries({
|
|
103
|
+
'terminal error': traceOf({ type: 'result', subtype: 'error_max_turns', is_error: true }),
|
|
104
|
+
'missing terminal': traceOf(call),
|
|
105
|
+
'implicit success': traceOf({ type: 'result', subtype: 'success' }),
|
|
106
|
+
'stale terminal': traceOf(terminal, call),
|
|
107
|
+
'permission denial': traceOf({ ...terminal, permission_denials: [{ tool_name: 'Read' }] }),
|
|
108
|
+
'pending tool': traceOf(call, terminal),
|
|
109
|
+
'unmatched return': traceOf(returned('unknown'), terminal),
|
|
110
|
+
'malformed event': 'null\n',
|
|
111
|
+
'invalid JSON': 'not JSON\n',
|
|
112
|
+
'null assistant message': traceOf({ type: 'assistant', message: null }, terminal),
|
|
113
|
+
'array assistant message': traceOf({ type: 'assistant', message: [] }, terminal),
|
|
114
|
+
'null assistant content': traceOf({ type: 'assistant', message: { content: null } }, terminal),
|
|
115
|
+
'object assistant content': traceOf({ type: 'assistant', message: { content: { type: 'tool_use', id: 'hidden' } } }, terminal),
|
|
116
|
+
'null user message': traceOf({ type: 'user', message: null }, terminal),
|
|
117
|
+
'null content block': traceOf({ type: 'assistant', message: { content: [null] } }, terminal),
|
|
118
|
+
})) {
|
|
119
|
+
test(`does not grade an incomplete execution: ${name}`, () => {
|
|
120
|
+
const root = makeSandbox();
|
|
121
|
+
try {
|
|
122
|
+
const result = runBehavioralWithGrading(root, passingGrading, { trace });
|
|
123
|
+
assert.equal(result.status, 1, result.stdout + result.stderr);
|
|
124
|
+
assert.match(result.stdout, /execution incomplete/);
|
|
125
|
+
const base = path.join(root, 'evals/results/alpha-skill.eval-1');
|
|
126
|
+
assert.equal(fs.existsSync(`${base}.grading.json`), false);
|
|
127
|
+
assert.equal(fs.readFileSync(`${base}.execution.raw.txt`, 'utf8'), trace);
|
|
128
|
+
assert.equal(fs.readFileSync(path.join(root, 'claude-calls.txt'), 'utf8'), 'executor\n');
|
|
129
|
+
} finally { fs.rmSync(root, { recursive: true, force: true }); }
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
test('a returned failed probe can recover before successful completion', () => {
|
|
134
|
+
const root = makeSandbox();
|
|
135
|
+
try {
|
|
136
|
+
const next = { ...call, message: { content: [{ ...call.message.content[0], id: 'green' }] } };
|
|
137
|
+
const trace = traceOf(call, returned('test', true),
|
|
138
|
+
{ type: 'user', message: { content: 'Continue the repair.' } }, next, returned('green'), terminal,
|
|
139
|
+
{ type: 'system', subtype: 'status', status: 'idle' });
|
|
140
|
+
const result = runBehavioralWithGrading(root, passingGrading, { trace });
|
|
141
|
+
assert.equal(result.status, 0, result.stdout + result.stderr);
|
|
142
|
+
assert.equal(fs.existsSync(path.join(root, 'evals/results/alpha-skill.eval-1.grading.json')), true);
|
|
143
|
+
} finally { fs.rmSync(root, { recursive: true, force: true }); }
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
for (const code of ['ETIMEDOUT', 'ERR_CHILD_PROCESS_STDIO_MAXBUFFER']) {
|
|
147
|
+
test(`retains partial execution evidence and continues after ${code}`, () => {
|
|
148
|
+
const root = makeSandbox();
|
|
149
|
+
try {
|
|
150
|
+
const trace = traceOf(call);
|
|
151
|
+
const result = runBehavioralWithGrading(root, passingGrading,
|
|
152
|
+
{ error: { code, stdout: trace, stderr: 'captured diagnostic' }, ids: [1, 2] });
|
|
153
|
+
assert.equal(result.status, 1, result.stdout + result.stderr);
|
|
154
|
+
assert.match(result.stdout, /eval 2: executing/);
|
|
155
|
+
for (const id of [1, 2]) {
|
|
156
|
+
const base = path.join(root, `evals/results/alpha-skill.eval-${id}`);
|
|
157
|
+
assert.equal(fs.existsSync(`${base}.grading.json`), false);
|
|
158
|
+
assert.equal(fs.readFileSync(`${base}.execution.raw.txt`, 'utf8'), trace);
|
|
159
|
+
assert.match(fs.readFileSync(`${base}.execution.error.txt`, 'utf8'), new RegExp(code));
|
|
160
|
+
assert.match(fs.readFileSync(`${base}.execution.error.txt`, 'utf8'), /captured diagnostic/);
|
|
161
|
+
}
|
|
162
|
+
assert.equal(fs.readFileSync(path.join(root, 'claude-calls.txt'), 'utf8'), 'executor\nexecutor\n');
|
|
163
|
+
} finally { fs.rmSync(root, { recursive: true, force: true }); }
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
|
|
93
167
|
for (const passed of [true, false]) {
|
|
94
168
|
for (const evidence of ['', ' \t\r\n', '\u00a0\u2003']) {
|
|
95
169
|
test(`behavioral CLI diagnoses blank evidence for ${passed ? 'passing' : 'failing'} verdict ${JSON.stringify(evidence)}`, () => {
|
|
@@ -424,6 +498,78 @@ test('rejects an invalid rank-1 floor', () => {
|
|
|
424
498
|
assert.match(result.stderr, /--min-rank1 must be a number from 0 to 100/);
|
|
425
499
|
});
|
|
426
500
|
|
|
501
|
+
test('routes clipped prompt forms to their long-form skill (see #660)', () => {
|
|
502
|
+
const root = makeSandbox();
|
|
503
|
+
// Note: the skill name must not contain the clipped form itself — name
|
|
504
|
+
// tokens are weighted 2x, which would route the prompt even without the
|
|
505
|
+
// alias map. The prompt shares no vocabulary with the description except
|
|
506
|
+
// the clipped/long pair (auth/authentication): without the alias map the
|
|
507
|
+
// skill scores zero and the positive prompt fails.
|
|
508
|
+
writeSkill(
|
|
509
|
+
root,
|
|
510
|
+
'credential-skill',
|
|
511
|
+
'Protects credential verification. Use when configuring authentication ceremonies.',
|
|
512
|
+
);
|
|
513
|
+
writeSkill(root, 'paint-skill', 'Paints sheds. Use when choosing exterior paint colors.');
|
|
514
|
+
writeJson(
|
|
515
|
+
path.join(root, 'evals', 'cases', 'credential-skill.json'),
|
|
516
|
+
completeCase('credential-skill', 'fix broken auth checks', 1),
|
|
517
|
+
);
|
|
518
|
+
writeJson(
|
|
519
|
+
path.join(root, 'evals', 'cases', 'paint-skill.json'),
|
|
520
|
+
completeCase('paint-skill', 'choose exterior paint colors', 1),
|
|
521
|
+
);
|
|
522
|
+
|
|
523
|
+
const result = run(root);
|
|
524
|
+
|
|
525
|
+
assert.equal(result.status, 0, result.stdout + result.stderr);
|
|
526
|
+
});
|
|
527
|
+
|
|
528
|
+
test('folds -ifications to their -ify verb, not to the unrelated "specific" (see #660)', () => {
|
|
529
|
+
const root = makeSandbox();
|
|
530
|
+
// "specification" is a nominalization of "specify", so it must reach the
|
|
531
|
+
// spec skill. Stripping a bare "-ation" instead yields "specific", which
|
|
532
|
+
// silently cross-merges the two words and starves the spec skill. Each
|
|
533
|
+
// prompt shares vocabulary with its own skill only.
|
|
534
|
+
writeSkill(root, 'spec-skill', 'Agree on requirements up front. Use when you specify behaviour.');
|
|
535
|
+
writeSkill(root, 'specific-skill', 'Narrow a choice down. Use when one target matters.');
|
|
536
|
+
writeJson(
|
|
537
|
+
path.join(root, 'evals', 'cases', 'spec-skill.json'),
|
|
538
|
+
completeCase('spec-skill', 'document a specification for the billing rollout', 1),
|
|
539
|
+
);
|
|
540
|
+
writeJson(
|
|
541
|
+
path.join(root, 'evals', 'cases', 'specific-skill.json'),
|
|
542
|
+
completeCase('specific-skill', 'narrow the choice down to one target', 1),
|
|
543
|
+
);
|
|
544
|
+
|
|
545
|
+
const result = run(root);
|
|
546
|
+
|
|
547
|
+
assert.equal(result.status, 0, result.stdout + result.stderr);
|
|
548
|
+
});
|
|
549
|
+
|
|
550
|
+
test('strips -ations as well as -ation so plurals do not out-stem singulars (see #660)', () => {
|
|
551
|
+
const root = makeSandbox();
|
|
552
|
+
// "migration" and "migrations" are the same word, so both forms have to
|
|
553
|
+
// reach the migration skill. With only "-ation" in the suffix list the
|
|
554
|
+
// plural keeps its "-s" ("migration" -> "migr" vs "migrations" ->
|
|
555
|
+
// "migration"), which splits the pair and halves the score. Neither
|
|
556
|
+
// prompt shares vocabulary with the other skill.
|
|
557
|
+
writeSkill(root, 'migration-skill', 'Move old data stores off production without downtime.');
|
|
558
|
+
writeSkill(root, 'recipe-skill', 'Plan tonight dinner from what is already in the cupboard.');
|
|
559
|
+
writeJson(
|
|
560
|
+
path.join(root, 'evals', 'cases', 'migration-skill.json'),
|
|
561
|
+
completeCase('migration-skill', 'plan the database migrations', 1),
|
|
562
|
+
);
|
|
563
|
+
writeJson(
|
|
564
|
+
path.join(root, 'evals', 'cases', 'recipe-skill.json'),
|
|
565
|
+
completeCase('recipe-skill', 'plan tonight dinner from the cupboard', 1),
|
|
566
|
+
);
|
|
567
|
+
|
|
568
|
+
const result = run(root);
|
|
569
|
+
|
|
570
|
+
assert.equal(result.status, 0, result.stdout + result.stderr);
|
|
571
|
+
});
|
|
572
|
+
|
|
427
573
|
// ---------- parseGrading expectation-binding tests ----------
|
|
428
574
|
|
|
429
575
|
test('accepts reordered-but-complete grader results', () => {
|
|
@@ -616,6 +762,8 @@ test('a grader that throws leaves no result file behind', () => {
|
|
|
616
762
|
// Stale files from a prior run
|
|
617
763
|
fs.writeFileSync(`${base}.grading.json`, '{"previous":"run"}\n');
|
|
618
764
|
fs.writeFileSync(`${base}.grading.raw.txt`, 'previous raw output');
|
|
765
|
+
fs.writeFileSync(`${base}.execution.raw.txt`, 'previous partial trace');
|
|
766
|
+
fs.writeFileSync(`${base}.execution.error.txt`, 'previous execution failure');
|
|
619
767
|
|
|
620
768
|
clearGradingSlot(base);
|
|
621
769
|
|
|
@@ -623,6 +771,8 @@ test('a grader that throws leaves no result file behind', () => {
|
|
|
623
771
|
|
|
624
772
|
assert.equal(fs.existsSync(`${base}.grading.json`), false, 'stale grading.json must not survive a crash');
|
|
625
773
|
assert.equal(fs.existsSync(`${base}.grading.raw.txt`), false, 'stale grading.raw.txt must not survive a crash');
|
|
774
|
+
assert.equal(fs.existsSync(`${base}.execution.raw.txt`), false, 'old partial trace must not survive a new attempt');
|
|
775
|
+
assert.equal(fs.existsSync(`${base}.execution.error.txt`), false, 'old execution failure must not survive a new attempt');
|
|
626
776
|
} finally {
|
|
627
777
|
fs.rmSync(dir, { recursive: true, force: true });
|
|
628
778
|
}
|
package/scripts/run-evals.js
CHANGED
|
@@ -32,6 +32,7 @@ const fs = require('fs');
|
|
|
32
32
|
const os = require('os');
|
|
33
33
|
const path = require('path');
|
|
34
34
|
const { parseFrontmatter } = require('./lib/skill-lint');
|
|
35
|
+
const { executionFailure } = require('./lib/execution-status');
|
|
35
36
|
const { execFileSync } = require('child_process');
|
|
36
37
|
|
|
37
38
|
const ROOT = path.join(__dirname, '..');
|
|
@@ -70,7 +71,16 @@ const STOP = new Set([
|
|
|
70
71
|
function stem(t) {
|
|
71
72
|
// Light suffix stripping so "conflicts"/"conflict", "branching"/"branch",
|
|
72
73
|
// "architectural"/"architecture" cluster together. Not a real stemmer.
|
|
73
|
-
|
|
74
|
+
// "ations"/"ation" fold Latinate nominalizations ("documentation"/"document",
|
|
75
|
+
// "configuration"/"configure") the same way. Both forms are listed so a
|
|
76
|
+
// plural doesn't survive the rule as a longer stem than its singular
|
|
77
|
+
// ("migration" -> "migr" but "migrations" -> "migration").
|
|
78
|
+
// "-ification" nouns are built on "-ify" verbs, so they fold to the verb's
|
|
79
|
+
// "-ifi" stem ("specification"/"specify", "verification"/"verify") rather
|
|
80
|
+
// than losing "-ication" and colliding with an unrelated word
|
|
81
|
+
// ("specification"/"specific"). Checked first so it wins over "-ation".
|
|
82
|
+
if (t.length > 10 && /ifications?$/.test(t)) t = t.replace(/ications?$/, 'i');
|
|
83
|
+
for (const suf of ['ally', 'ing', 'ations', 'ation', 'ed', 'es', 'al']) {
|
|
74
84
|
if (t.length > suf.length + 3 && t.endsWith(suf)) {
|
|
75
85
|
t = t.slice(0, -suf.length);
|
|
76
86
|
break;
|
|
@@ -87,11 +97,32 @@ function stem(t) {
|
|
|
87
97
|
return t;
|
|
88
98
|
}
|
|
89
99
|
|
|
100
|
+
// Clipped forms users type that never share a stem with the long form used
|
|
101
|
+
// in descriptions ("docs" vs "documentation", "auth" vs "authentication").
|
|
102
|
+
// Applied before stemming; each value is the canonical long form, so both
|
|
103
|
+
// registers stem identically. Explicit and easy to extend (see #660) —
|
|
104
|
+
// prefer adding an entry here over padding descriptions with clipped forms,
|
|
105
|
+
// which would only teach skills to game the lexical proxy.
|
|
106
|
+
const TOKEN_ALIASES = new Map(
|
|
107
|
+
Object.entries({
|
|
108
|
+
doc: 'document',
|
|
109
|
+
docs: 'document',
|
|
110
|
+
config: 'configuration',
|
|
111
|
+
configs: 'configuration',
|
|
112
|
+
auth: 'authenticate',
|
|
113
|
+
authentication: 'authenticate',
|
|
114
|
+
repo: 'repository',
|
|
115
|
+
repos: 'repository',
|
|
116
|
+
dep: 'dependency',
|
|
117
|
+
deps: 'dependency',
|
|
118
|
+
}),
|
|
119
|
+
);
|
|
120
|
+
|
|
90
121
|
const chineseSegmenter = new Intl.Segmenter('zh-CN', { granularity: 'word' });
|
|
91
122
|
const chineseStop = new Set(['请问', '帮我', '一下', '这个', '那个', '使用', '适用于', '用于', '需要', '进行', '以及', '如何', '是否', '我们', '当前']);
|
|
92
123
|
function tokenize(text) {
|
|
93
124
|
const english = text.toLowerCase().replace(/[^a-z0-9\s-]/g, ' ').split(/[\s-]+/)
|
|
94
|
-
.filter(t => t.length > 2 && !STOP.has(t)).map(stem);
|
|
125
|
+
.filter(t => t.length > 2 && !STOP.has(t)).map(t => stem(TOKEN_ALIASES.get(t) || t));
|
|
95
126
|
const chinese = [...chineseSegmenter.segment(text)].filter(part => part.isWordLike
|
|
96
127
|
&& /[\u3400-\u9fff]/.test(part.segment) && part.segment.length > 1 && !chineseStop.has(part.segment))
|
|
97
128
|
.map(part => part.segment);
|
|
@@ -537,8 +568,9 @@ function extractExecutorModel(trace) {
|
|
|
537
568
|
}
|
|
538
569
|
|
|
539
570
|
function clearGradingSlot(base) {
|
|
540
|
-
|
|
541
|
-
|
|
571
|
+
for (const suffix of ['grading.json', 'grading.raw.txt', 'execution.raw.txt', 'execution.error.txt']) {
|
|
572
|
+
fs.rmSync(`${base}.${suffix}`, { force: true });
|
|
573
|
+
}
|
|
542
574
|
}
|
|
543
575
|
|
|
544
576
|
function persistGradingOutcome(base, grading, raw, runMeta) {
|
|
@@ -614,14 +646,29 @@ function runBehavioral(skillName, dryRun) {
|
|
|
614
646
|
// headless denials would force the exact narrate-instead-of-perform
|
|
615
647
|
// failure mode that trace grading exists to catch.
|
|
616
648
|
try {
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
'
|
|
622
|
-
'
|
|
623
|
-
|
|
624
|
-
|
|
649
|
+
let trace;
|
|
650
|
+
let executorError;
|
|
651
|
+
try {
|
|
652
|
+
trace = execFileSync(
|
|
653
|
+
'claude',
|
|
654
|
+
['-p', ...(process.env.I3_EVAL_MODEL ? ['--model', process.env.I3_EVAL_MODEL] : []), '--verbose', '--output-format', 'stream-json',
|
|
655
|
+
'--permission-mode', 'acceptEdits',
|
|
656
|
+
'--allowedTools', EXECUTOR_TOOLS,
|
|
657
|
+
'--append-system-prompt', `Follow this skill exactly:\n\n${fs.readFileSync(skillFile, 'utf8')}`],
|
|
658
|
+
{ input: ev.prompt, encoding: 'utf8', maxBuffer: 64 * 1024 * 1024, cwd: workspace, timeout: EXECUTOR_TIMEOUT_MS },
|
|
659
|
+
);
|
|
660
|
+
} catch (error) {
|
|
661
|
+
trace = String(error.stdout || '');
|
|
662
|
+
executorError = error;
|
|
663
|
+
}
|
|
664
|
+
const failure = executorError ? `${executorError.code || 'process failed'}: ${executorError.message}` : executionFailure(trace);
|
|
665
|
+
if (failure) {
|
|
666
|
+
fs.writeFileSync(`${base}.execution.raw.txt`, trace);
|
|
667
|
+
fs.writeFileSync(`${base}.execution.error.txt`, `${failure}\n${executorError?.stderr || ''}`);
|
|
668
|
+
console.log(` ✗ eval ${ev.id}: execution incomplete: ${failure}; raw execution retained`);
|
|
669
|
+
failures++;
|
|
670
|
+
continue;
|
|
671
|
+
}
|
|
625
672
|
const gradingInstructions = kind === 'dialogue'
|
|
626
673
|
? [
|
|
627
674
|
'You are grading an agent dialogue transcript against explicit expectations.',
|
package/scripts/ui-demo-test.js
CHANGED
|
@@ -49,7 +49,7 @@ test('i3-ui-demo template resolution works without another prototype skill and n
|
|
|
49
49
|
assert.equal(detection.design.availability, 'missing');
|
|
50
50
|
assert.equal(detection.official.availability, 'missing');
|
|
51
51
|
const ownGeneration = path.join(own, 'assets/templates/enterprise-admin/generation.json');
|
|
52
|
-
const foreign = path.join(temporary, 'skills', path.basename(resources.root).startsWith('i3-') ? 'i3-ui-prototype' : '
|
|
52
|
+
const foreign = path.join(temporary, 'skills', path.basename(resources.root).startsWith('i3-') ? 'i3-ui-prototype' : 'ui-prototype', 'assets/templates/enterprise-admin');
|
|
53
53
|
fs.cpSync(path.dirname(ownGeneration), foreign, { recursive: true });
|
|
54
54
|
fs.unlinkSync(ownGeneration);
|
|
55
55
|
assert.throws(() => isolated.resolveResources(), /missing/i);
|
|
@@ -121,7 +121,7 @@ test('i3-ui-demo reads selected page structure, behavior and styles without an i
|
|
|
121
121
|
assert.ok(page.styleFiles.includes('reference/styles/tokens.css'));
|
|
122
122
|
assert.ok(page.elements.length > 0);
|
|
123
123
|
assert.ok(page.elements.some(element => element.events.length > 0));
|
|
124
|
-
assert.ok(!JSON.stringify(page).includes('
|
|
124
|
+
assert.ok(!JSON.stringify(page).includes('ui-prototype'));
|
|
125
125
|
assert.equal(isolated.readCapability('pagination').defaults.minimumTestPages, 3);
|
|
126
126
|
});
|
|
127
127
|
|
|
@@ -104,6 +104,20 @@ test('ignores non-artifact markdown references (no false positives)', () => {
|
|
|
104
104
|
assert.match(result.stdout, /1 files checked — 0 error\(s\) — PASSED/);
|
|
105
105
|
});
|
|
106
106
|
|
|
107
|
+
test('does not mistake the tail of an unrelated filename for an artifact path', () => {
|
|
108
|
+
const root = makeSandbox();
|
|
109
|
+
writeFile(
|
|
110
|
+
root,
|
|
111
|
+
'skills/i3-planning-and-task-breakdown/SKILL.md',
|
|
112
|
+
'Attach `test-plan.md` and `release_todo.md`. Save the plan to `tasks/plan.md`.\n',
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
const result = run(root);
|
|
116
|
+
|
|
117
|
+
assert.equal(result.status, 0, result.stdout + result.stderr);
|
|
118
|
+
assert.match(result.stdout, /1 files checked — 0 error\(s\) — PASSED/);
|
|
119
|
+
});
|
|
120
|
+
|
|
107
121
|
test('skips guarded files that do not exist', () => {
|
|
108
122
|
const root = makeSandbox();
|
|
109
123
|
writeFile(root, '.claude/commands/spec.md', 'Save the spec as `SPEC.md`.\n');
|
|
@@ -71,8 +71,10 @@ const GUARDED_FILES = [
|
|
|
71
71
|
// Matches a path-like token ending in a spec/plan/todo artifact filename,
|
|
72
72
|
// including an optional directory prefix with bracket placeholders like
|
|
73
73
|
// docs/features/[feature-name]/spec.md. Case-insensitive so SPEC.md and a
|
|
74
|
-
// drifted spec.md are both caught, then compared against the allowlist.
|
|
75
|
-
|
|
74
|
+
// drifted spec.md are both caught, then compared against the allowlist. The
|
|
75
|
+
// lookbehind keeps the match from starting mid-word, so `test-plan.md` or
|
|
76
|
+
// `release_todo.md` are not mistaken for a drifted `plan.md` / `todo.md`.
|
|
77
|
+
const ARTIFACT_RE = /(?<![A-Za-z0-9._[\]-])(?:[A-Za-z0-9._[\]-]+\/)*(?:spec|plan|todo)\.md/gi;
|
|
76
78
|
|
|
77
79
|
GUARDED_FILES.push(...GUARDED_FILES.filter(relative => /(?:^|\/)commands\//.test(relative)).map(relative => relative.replace(/(commands\/)([^/]+)(\.md|\.toml)$/, '$1i3-$2$3')));
|
|
78
80
|
|
|
@@ -208,7 +208,9 @@ The unique constraint *is* the mechanism. A store that cannot enforce uniqueness
|
|
|
208
208
|
|
|
209
209
|
```typescript
|
|
210
210
|
if (existing.requestHash !== hash(req.body)) {
|
|
211
|
-
return res.status(422).json({
|
|
211
|
+
return res.status(422).json({
|
|
212
|
+
error: { code: 'IDEMPOTENCY_KEY_REUSED', message: 'Idempotency key reused with a different payload' },
|
|
213
|
+
});
|
|
212
214
|
}
|
|
213
215
|
```
|
|
214
216
|
|
|
@@ -196,7 +196,7 @@ Agent fixes → pushes → CI runs again
|
|
|
196
196
|
**Key patterns:**
|
|
197
197
|
|
|
198
198
|
```
|
|
199
|
-
Lint failure → Agent runs `npm run lint --fix` and commits
|
|
199
|
+
Lint failure → Agent runs `npm run lint -- --fix` and commits
|
|
200
200
|
Type error → Agent reads the error location and fixes the type
|
|
201
201
|
Test failure → Agent follows i3-debugging-and-error-recovery skill
|
|
202
202
|
Build error → Agent checks config and dependencies
|
|
@@ -275,9 +275,12 @@ jobs:
|
|
|
275
275
|
runs-on: ubuntu-latest
|
|
276
276
|
steps:
|
|
277
277
|
- name: Rollback deployment
|
|
278
|
+
env:
|
|
279
|
+
VERSION: ${{ inputs.version }}
|
|
278
280
|
run: |
|
|
279
|
-
# Deploy the specified previous version
|
|
280
|
-
|
|
281
|
+
# Deploy the specified previous version. Pass the input through env,
|
|
282
|
+
# never interpolate it into the script (shell injection).
|
|
283
|
+
npx vercel rollback "$VERSION"
|
|
281
284
|
```
|
|
282
285
|
|
|
283
286
|
## Environment Management
|
|
@@ -325,7 +328,7 @@ When the pipeline exceeds 10 minutes, apply these strategies in order of impact:
|
|
|
325
328
|
```
|
|
326
329
|
Slow CI pipeline?
|
|
327
330
|
├── Cache dependencies
|
|
328
|
-
│ └── Use
|
|
331
|
+
│ └── Use the setup-node cache option (or actions/cache) for the package manager cache, not node_modules
|
|
329
332
|
├── Run jobs in parallel
|
|
330
333
|
│ └── Split lint, typecheck, test, build into separate parallel jobs
|
|
331
334
|
├── Only run what changed
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: i3-code-simplification
|
|
3
|
-
description: "
|
|
4
|
-
# i3-description-source: "description: Simplifies code for clarity. Use when refactoring code for clarity without changing behavior. Use when code works but is harder to read, maintain, or extend than it should be. Use when reviewing code that has accumulated unnecessary complexity."
|
|
3
|
+
description: "在保持行为不变的前提下简化代码。适用于简化现有代码结构、重构复杂逻辑、保留全部现有行为,并提高可读性、维护性与可扩展性;也适用于直接粘贴函数或模块,要求简化、清理或减少嵌套而无需其他改动的请求。"
|
|
4
|
+
# i3-description-source: "description: Simplifies code for clarity. Use when refactoring code for clarity without changing behavior. Use when code works but is harder to read, maintain, or extend than it should be. Use when reviewing code that has accumulated unnecessary complexity. Use when asked to simplify, clean up, or reduce the nesting of a function or module that already works, even when the code is pasted inline and nothing else needs to change."
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
<!-- i3:zh-CN:start -->
|
|
@@ -12,7 +12,7 @@ description: "在保持行为不变的前提下简化代码。适用于简化现
|
|
|
12
12
|
Skill/Command/Agent 标识、文件路径、命令参数、代码/API 名称、工具调用参数、JSON 键/类型/枚举、机器状态、测试期望字面量及引用原文保持原样。生成文档正文用中文,SPEC.md、tasks/plan.md、tasks/todo.md、CONSTRAINTS.md 等约定路径不改名。
|
|
13
13
|
严重程度按原规则判断,面向用户可写“严重(Critical)”“必须修复(Required)”“小问题(Nit)”“可选(Optional)”“建议考虑(Consider)”“仅供参考(FYI)”;High/Medium/Low、APPROVE/REQUEST CHANGES 和 GO/NO-GO 保留其原始语义与机器值。不得因翻译降低门槛,角色不能互相委派。
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
适用说明:在保持行为不变的前提下简化代码。适用于简化现有代码结构、重构复杂逻辑、保留全部现有行为,并提高可读性、维护性与可扩展性;也适用于直接粘贴函数或模块,要求简化、清理或减少嵌套而无需其他改动的请求。
|
|
16
16
|
<!-- i3:zh-CN:end -->
|
|
17
17
|
|
|
18
18
|
# Code Simplification
|
|
@@ -125,7 +125,7 @@ Last reviewed: 2026-08-08 by @addy
|
|
|
125
125
|
|-----------|------|-----------|---------|
|
|
126
126
|
| Types | Zero type errors | `tsc --noEmit` | every edit |
|
|
127
127
|
| Lint | Zero errors from our config | `biome check` | every edit |
|
|
128
|
-
| Secrets | No secrets in source | `gitleaks
|
|
128
|
+
| Secrets | No secrets in source | `gitleaks dir . --redact` | every edit |
|
|
129
129
|
| Coverage | Changed lines ≥ 80% covered | `vitest run --coverage` + git diff | task end, CI |
|
|
130
130
|
| Security: code | No high findings | `semgrep scan --config p/default` | CI |
|
|
131
131
|
| Security: deps | Nothing at high or above | `osv-scanner scan source -r .` | CI |
|
|
@@ -160,10 +160,10 @@ Picking a dimension means installing something. Don't leave the user with a numb
|
|
|
160
160
|
| Types (TS) | tsc | already there | `tsc --noEmit` | any error |
|
|
161
161
|
| Types (Python) | mypy | `pip install mypy` | `mypy .` | any error |
|
|
162
162
|
| Lint | your existing config | already there | `eslint .` / `biome check` / `ruff check` | any error |
|
|
163
|
-
| Coverage (JS) | your test runner | already there | `vitest run --coverage` (or `jest --coverage`) | coverage of changed lines |
|
|
163
|
+
| Coverage (JS) | your test runner | Vitest: `npm i -D @vitest/coverage-v8`; Jest: already there | `vitest run --coverage` (or `jest --coverage`) | coverage of changed lines |
|
|
164
164
|
| Coverage (Python) | pytest-cov | `pip install pytest-cov` | `pytest --cov --cov-report=lcov` | same |
|
|
165
165
|
| Security: code | Semgrep | `pipx install semgrep` | `semgrep scan --config p/default --config p/owasp-top-ten` | any high finding |
|
|
166
|
-
| Security: secrets | gitleaks | `brew install gitleaks` | `gitleaks
|
|
166
|
+
| Security: secrets | gitleaks | `brew install gitleaks` | `gitleaks dir . --redact --no-banner` | any finding |
|
|
167
167
|
| Security: dependencies | osv-scanner | `brew install osv-scanner` | `osv-scanner scan source -r .` | high or above |
|
|
168
168
|
| Performance: page | Lighthouse | `npm i -D lighthouse` | `lighthouse $URL --output=json --quiet` | LCP, CLS, performance score |
|
|
169
169
|
| Performance: bundle | size-limit | `npm i -D size-limit` | `size-limit --json` | per-entry byte budget |
|
|
@@ -184,7 +184,7 @@ Add each one to the project's own script so it's reproducible without an agent:
|
|
|
184
184
|
```json
|
|
185
185
|
{
|
|
186
186
|
"scripts": {
|
|
187
|
-
"check:fast": "tsc --noEmit && eslint . && gitleaks
|
|
187
|
+
"check:fast": "tsc --noEmit && eslint . && gitleaks dir . --redact --no-banner",
|
|
188
188
|
"check:task": "npm run check:fast && vitest run --coverage",
|
|
189
189
|
"check:full": "npm run check:task && semgrep scan --config p/default && osv-scanner scan source -r ."
|
|
190
190
|
}
|
|
@@ -131,8 +131,8 @@ const ruleKey = (t) => {
|
|
|
131
131
|
const isException = (t) => /^\| *(W|E)\d+ *\|/.test(t.trim());
|
|
132
132
|
const MIN_BEFORE = /(>=|>|≥|at least|minimum|\bmin\b|no less than|not fall|not drop)\s*$/;
|
|
133
133
|
const MAX_BEFORE = /(<=|<|≤|at most|maximum|\bmax\b|no more than|under|below|not grow|not exceed)\s*$/;
|
|
134
|
-
const MIN_AFTER = /^\s*\S*\s*(or more|or higher|must not fall|must not drop)/;
|
|
135
|
-
const MAX_AFTER = /^\s*\S*\s*(or less|or lower|must not grow|must not exceed)/;
|
|
134
|
+
const MIN_AFTER = /^\s*\S*\s*(?:\|\s*)?(or more|or higher|must not fall|must not drop)/;
|
|
135
|
+
const MAX_AFTER = /^\s*\S*\s*(?:\|\s*)?(or less|or lower|must not grow|must not exceed)/;
|
|
136
136
|
const thresholds = (t) => {
|
|
137
137
|
const out = [], re = /\d+(?:\.\d+)?/g;
|
|
138
138
|
let m;
|
|
@@ -62,7 +62,7 @@ Create a rules file that persists across sessions. This is the highest-leverage
|
|
|
62
62
|
## Commands
|
|
63
63
|
- Build: `npm run build`
|
|
64
64
|
- Test: `npm test`
|
|
65
|
-
- Lint: `npm run lint --fix`
|
|
65
|
+
- Lint: `npm run lint -- --fix`
|
|
66
66
|
- Dev: `npm run dev`
|
|
67
67
|
- Type check: `npx tsc --noEmit`
|
|
68
68
|
|
|
@@ -157,6 +157,11 @@ class LegacyTaskService implements OldTaskAPI {
|
|
|
157
157
|
const task = this.newService.findById(String(id));
|
|
158
158
|
return this.toOldFormat(task);
|
|
159
159
|
}
|
|
160
|
+
|
|
161
|
+
// Translate the new shape back into what old consumers expect
|
|
162
|
+
private toOldFormat(task: Task): OldTask {
|
|
163
|
+
return { id: Number(task.id), title: task.title, done: task.status === 'done' };
|
|
164
|
+
}
|
|
160
165
|
}
|
|
161
166
|
```
|
|
162
167
|
|
|
@@ -169,7 +174,7 @@ function getTaskService(userId: string): TaskService {
|
|
|
169
174
|
if (featureFlags.isEnabled('new-task-service', { userId })) {
|
|
170
175
|
return new NewTaskService();
|
|
171
176
|
}
|
|
172
|
-
return new
|
|
177
|
+
return new OldTaskService();
|
|
173
178
|
}
|
|
174
179
|
```
|
|
175
180
|
|
|
@@ -123,8 +123,9 @@ Comment the *why*, not the *what*:
|
|
|
123
123
|
counter += 1;
|
|
124
124
|
|
|
125
125
|
// GOOD: Explains non-obvious intent
|
|
126
|
-
// Rate limit uses a
|
|
127
|
-
// not on a
|
|
126
|
+
// Rate limit uses a fixed window that opens on the first request after the
|
|
127
|
+
// previous one expires, not on a clock schedule. Known gap: a client can spend
|
|
128
|
+
// the full limit just before a reset and again just after (2x in a moment)
|
|
128
129
|
if (now - windowStart > WINDOW_SIZE_MS) {
|
|
129
130
|
counter = 0;
|
|
130
131
|
windowStart = now;
|