@rpamis/comet 0.3.9 → 0.4.0-beta.2
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/README.md +371 -222
- package/assets/manifest.json +33 -12
- package/assets/skills/comet/SKILL.md +87 -102
- package/assets/skills/comet/reference/auto-transition.md +1 -1
- package/assets/skills/comet/reference/comet-yaml-fields.md +11 -4
- package/assets/skills/comet/reference/context-recovery.md +12 -2
- package/assets/skills/comet/reference/debug-gate.md +17 -1
- package/assets/skills/comet/reference/decision-point.md +13 -2
- package/assets/skills/comet/reference/intent-frame.md +74 -0
- package/assets/skills/comet/reference/scripts.md +69 -0
- package/assets/skills/comet/reference/subagent-dispatch.md +79 -23
- package/assets/skills/comet/rules/comet-phase-guard.en.md +18 -10
- package/assets/skills/comet/rules/comet-phase-guard.md +17 -10
- package/assets/skills/comet/runtime/classic/checks.yaml +6 -0
- package/assets/skills/comet/runtime/classic/guardrails.yaml +13 -0
- package/assets/skills/comet/runtime/classic/skill.yaml +122 -0
- package/assets/skills/comet/scripts/comet-archive.mjs +3 -0
- package/assets/skills/comet/scripts/comet-env.mjs +15 -0
- package/assets/skills/comet/scripts/comet-guard.mjs +3 -0
- package/assets/skills/comet/scripts/comet-handoff.mjs +3 -0
- package/assets/skills/comet/scripts/comet-hook-guard.mjs +3 -0
- package/assets/skills/comet/scripts/comet-intent.mjs +3 -0
- package/assets/skills/comet/scripts/comet-runtime.mjs +12941 -0
- package/assets/skills/comet/scripts/comet-state.mjs +3 -0
- package/assets/skills/comet/scripts/comet-yaml-validate.mjs +3 -0
- package/assets/skills/comet-any/SKILL.md +118 -0
- package/assets/skills/comet-any/reference/authored-zone-example.md +100 -0
- package/assets/skills/comet-any/reference/authoring-protocol.json +91 -0
- package/assets/skills/comet-any/reference/authoring-subagents.md +102 -0
- package/assets/skills/comet-any/reference/bundle-authoring.md +166 -0
- package/assets/skills/comet-any/reference/eval-provider.md +83 -0
- package/assets/skills/comet-any/reference/subagents/pause-points-author.md +75 -0
- package/assets/skills/comet-any/reference/subagents/reference-author.md +77 -0
- package/assets/skills/comet-any/reference/subagents/script-author.md +81 -0
- package/assets/skills/comet-any/reference/subagents/skill-core-author.md +129 -0
- package/assets/skills/comet-any/reference/subagents/skill-reviewer.md +124 -0
- package/assets/skills/comet-any/reference/subagents/workflow-entry-author.md +100 -0
- package/assets/skills/comet-archive/SKILL.md +25 -15
- package/assets/skills/comet-build/SKILL.md +51 -40
- package/assets/skills/comet-design/SKILL.md +14 -18
- package/assets/skills/comet-hotfix/SKILL.md +33 -43
- package/assets/skills/comet-open/SKILL.md +10 -20
- package/assets/skills/comet-tweak/SKILL.md +71 -65
- package/assets/skills/comet-verify/SKILL.md +31 -35
- package/assets/skills-zh/comet/SKILL.md +87 -101
- package/assets/skills-zh/comet/reference/auto-transition.md +3 -3
- package/assets/skills-zh/comet/reference/comet-yaml-fields.md +8 -4
- package/assets/skills-zh/comet/reference/context-recovery.md +11 -1
- package/assets/skills-zh/comet/reference/debug-gate.md +17 -1
- package/assets/skills-zh/comet/reference/decision-point.md +13 -2
- package/assets/skills-zh/comet/reference/intent-frame.md +74 -0
- package/assets/skills-zh/comet/reference/scripts.md +69 -0
- package/assets/skills-zh/comet/reference/subagent-dispatch.md +67 -18
- package/assets/skills-zh/comet/runtime/classic/checks.yaml +6 -0
- package/assets/skills-zh/comet/runtime/classic/guardrails.yaml +13 -0
- package/assets/skills-zh/comet/runtime/classic/skill.yaml +122 -0
- package/assets/skills-zh/comet-any/SKILL.md +118 -0
- package/assets/skills-zh/comet-any/reference/authored-zone-example.md +100 -0
- package/assets/skills-zh/comet-any/reference/authoring-protocol.json +91 -0
- package/assets/skills-zh/comet-any/reference/authoring-subagents.md +107 -0
- package/assets/skills-zh/comet-any/reference/bundle-authoring.md +166 -0
- package/assets/skills-zh/comet-any/reference/eval-provider.md +66 -0
- package/assets/skills-zh/comet-any/reference/subagents/pause-points-author.md +79 -0
- package/assets/skills-zh/comet-any/reference/subagents/reference-author.md +81 -0
- package/assets/skills-zh/comet-any/reference/subagents/script-author.md +84 -0
- package/assets/skills-zh/comet-any/reference/subagents/skill-core-author.md +129 -0
- package/assets/skills-zh/comet-any/reference/subagents/skill-reviewer.md +124 -0
- package/assets/skills-zh/comet-any/reference/subagents/workflow-entry-author.md +98 -0
- package/assets/skills-zh/comet-archive/SKILL.md +25 -15
- package/assets/skills-zh/comet-build/SKILL.md +41 -43
- package/assets/skills-zh/comet-design/SKILL.md +14 -18
- package/assets/skills-zh/comet-hotfix/SKILL.md +37 -47
- package/assets/skills-zh/comet-open/SKILL.md +12 -22
- package/assets/skills-zh/comet-tweak/SKILL.md +70 -63
- package/assets/skills-zh/comet-verify/SKILL.md +28 -30
- package/bin/comet.js +1 -1
- package/dist/{cli → app/cli}/index.d.ts.map +1 -1
- package/dist/app/cli/index.js +430 -0
- package/dist/app/cli/index.js.map +1 -0
- package/dist/app/commands/bundle.d.ts +51 -0
- package/dist/app/commands/bundle.d.ts.map +1 -0
- package/dist/app/commands/bundle.js +387 -0
- package/dist/app/commands/bundle.js.map +1 -0
- package/dist/app/commands/creator.d.ts +14 -0
- package/dist/app/commands/creator.d.ts.map +1 -0
- package/dist/app/commands/creator.js +82 -0
- package/dist/app/commands/creator.js.map +1 -0
- package/dist/app/commands/dashboard.d.ts +16 -0
- package/dist/app/commands/dashboard.d.ts.map +1 -0
- package/dist/app/commands/dashboard.js +53 -0
- package/dist/app/commands/dashboard.js.map +1 -0
- package/dist/{commands → app/commands}/doctor.d.ts +1 -1
- package/dist/app/commands/doctor.d.ts.map +1 -0
- package/dist/{commands → app/commands}/doctor.js +110 -60
- package/dist/app/commands/doctor.js.map +1 -0
- package/dist/app/commands/eval.d.ts +17 -0
- package/dist/app/commands/eval.d.ts.map +1 -0
- package/dist/app/commands/eval.js +169 -0
- package/dist/app/commands/eval.js.map +1 -0
- package/dist/app/commands/i18n.d.ts +4 -0
- package/dist/app/commands/i18n.d.ts.map +1 -0
- package/dist/{commands → app/commands}/i18n.js +22 -2
- package/dist/app/commands/i18n.js.map +1 -0
- package/dist/{commands → app/commands}/init.d.ts +3 -1
- package/dist/app/commands/init.d.ts.map +1 -0
- package/dist/{commands → app/commands}/init.js +82 -32
- package/dist/app/commands/init.js.map +1 -0
- package/dist/app/commands/platform-select-prompt.d.ts +38 -0
- package/dist/app/commands/platform-select-prompt.d.ts.map +1 -0
- package/dist/app/commands/platform-select-prompt.js +141 -0
- package/dist/app/commands/platform-select-prompt.js.map +1 -0
- package/dist/app/commands/publish.d.ts +7 -0
- package/dist/app/commands/publish.d.ts.map +1 -0
- package/dist/app/commands/publish.js +14 -0
- package/dist/app/commands/publish.js.map +1 -0
- package/dist/app/commands/skill.d.ts +23 -0
- package/dist/app/commands/skill.d.ts.map +1 -0
- package/dist/app/commands/skill.js +208 -0
- package/dist/app/commands/skill.js.map +1 -0
- package/dist/app/commands/status.d.ts.map +1 -0
- package/dist/app/commands/status.js +159 -0
- package/dist/app/commands/status.js.map +1 -0
- package/dist/{commands → app/commands}/uninstall.d.ts +1 -1
- package/dist/app/commands/uninstall.d.ts.map +1 -0
- package/dist/{commands → app/commands}/uninstall.js +3 -3
- package/dist/app/commands/uninstall.js.map +1 -0
- package/dist/{commands → app/commands}/update.d.ts +4 -3
- package/dist/app/commands/update.d.ts.map +1 -0
- package/dist/{commands → app/commands}/update.js +43 -15
- package/dist/app/commands/update.js.map +1 -0
- package/dist/config/repository-layout.json +98 -0
- package/dist/domains/bundle/authoring.d.ts +82 -0
- package/dist/domains/bundle/authoring.d.ts.map +1 -0
- package/dist/domains/bundle/authoring.js +185 -0
- package/dist/domains/bundle/authoring.js.map +1 -0
- package/dist/domains/bundle/bundle-platform.d.ts +39 -0
- package/dist/domains/bundle/bundle-platform.d.ts.map +1 -0
- package/dist/domains/bundle/bundle-platform.js +287 -0
- package/dist/domains/bundle/bundle-platform.js.map +1 -0
- package/dist/domains/bundle/candidates.d.ts +29 -0
- package/dist/domains/bundle/candidates.d.ts.map +1 -0
- package/dist/domains/bundle/candidates.js +37 -0
- package/dist/domains/bundle/candidates.js.map +1 -0
- package/dist/domains/bundle/compatibility-benchmark.d.ts +12 -0
- package/dist/domains/bundle/compatibility-benchmark.d.ts.map +1 -0
- package/dist/domains/bundle/compatibility-benchmark.js +224 -0
- package/dist/domains/bundle/compatibility-benchmark.js.map +1 -0
- package/dist/domains/bundle/compiler.d.ts +5 -0
- package/dist/domains/bundle/compiler.d.ts.map +1 -0
- package/dist/domains/bundle/compiler.js +106 -0
- package/dist/domains/bundle/compiler.js.map +1 -0
- package/dist/domains/bundle/distribute.d.ts +33 -0
- package/dist/domains/bundle/distribute.d.ts.map +1 -0
- package/dist/domains/bundle/distribute.js +166 -0
- package/dist/domains/bundle/distribute.js.map +1 -0
- package/dist/domains/bundle/draft.d.ts +19 -0
- package/dist/domains/bundle/draft.d.ts.map +1 -0
- package/dist/domains/bundle/draft.js +82 -0
- package/dist/domains/bundle/draft.js.map +1 -0
- package/dist/domains/bundle/eval.d.ts +36 -0
- package/dist/domains/bundle/eval.d.ts.map +1 -0
- package/dist/domains/bundle/eval.js +501 -0
- package/dist/domains/bundle/eval.js.map +1 -0
- package/dist/domains/bundle/factory-compose.d.ts +12 -0
- package/dist/domains/bundle/factory-compose.d.ts.map +1 -0
- package/dist/domains/bundle/factory-compose.js +309 -0
- package/dist/domains/bundle/factory-compose.js.map +1 -0
- package/dist/domains/bundle/factory-guide.d.ts +37 -0
- package/dist/domains/bundle/factory-guide.d.ts.map +1 -0
- package/dist/domains/bundle/factory-guide.js +96 -0
- package/dist/domains/bundle/factory-guide.js.map +1 -0
- package/dist/domains/bundle/factory-plan.d.ts +48 -0
- package/dist/domains/bundle/factory-plan.d.ts.map +1 -0
- package/dist/domains/bundle/factory-plan.js +172 -0
- package/dist/domains/bundle/factory-plan.js.map +1 -0
- package/dist/domains/bundle/factory-proposal.d.ts +31 -0
- package/dist/domains/bundle/factory-proposal.d.ts.map +1 -0
- package/dist/domains/bundle/factory-proposal.js +225 -0
- package/dist/domains/bundle/factory-proposal.js.map +1 -0
- package/dist/domains/bundle/factory-resolve.d.ts +11 -0
- package/dist/domains/bundle/factory-resolve.d.ts.map +1 -0
- package/dist/domains/bundle/factory-resolve.js +121 -0
- package/dist/domains/bundle/factory-resolve.js.map +1 -0
- package/dist/domains/bundle/factory.d.ts +17 -0
- package/dist/domains/bundle/factory.d.ts.map +1 -0
- package/dist/domains/bundle/factory.js +511 -0
- package/dist/domains/bundle/factory.js.map +1 -0
- package/dist/domains/bundle/hash.d.ts +3 -0
- package/dist/domains/bundle/hash.d.ts.map +1 -0
- package/dist/domains/bundle/hash.js +72 -0
- package/dist/domains/bundle/hash.js.map +1 -0
- package/dist/domains/bundle/load.d.ts +4 -0
- package/dist/domains/bundle/load.d.ts.map +1 -0
- package/dist/domains/bundle/load.js +355 -0
- package/dist/domains/bundle/load.js.map +1 -0
- package/dist/domains/bundle/next-action.d.ts +37 -0
- package/dist/domains/bundle/next-action.d.ts.map +1 -0
- package/dist/domains/bundle/next-action.js +185 -0
- package/dist/domains/bundle/next-action.js.map +1 -0
- package/dist/domains/bundle/platform.d.ts +21 -0
- package/dist/domains/bundle/platform.d.ts.map +1 -0
- package/dist/domains/bundle/platform.js +170 -0
- package/dist/domains/bundle/platform.js.map +1 -0
- package/dist/domains/bundle/preferences.d.ts +11 -0
- package/dist/domains/bundle/preferences.d.ts.map +1 -0
- package/dist/domains/bundle/preferences.js +17 -0
- package/dist/domains/bundle/preferences.js.map +1 -0
- package/dist/domains/bundle/publish.d.ts +14 -0
- package/dist/domains/bundle/publish.d.ts.map +1 -0
- package/dist/domains/bundle/publish.js +159 -0
- package/dist/domains/bundle/publish.js.map +1 -0
- package/dist/domains/bundle/readiness-user-summary.d.ts +25 -0
- package/dist/domains/bundle/readiness-user-summary.d.ts.map +1 -0
- package/dist/domains/bundle/readiness-user-summary.js +186 -0
- package/dist/domains/bundle/readiness-user-summary.js.map +1 -0
- package/dist/domains/bundle/review-summary.d.ts +36 -0
- package/dist/domains/bundle/review-summary.d.ts.map +1 -0
- package/dist/domains/bundle/review-summary.js +348 -0
- package/dist/domains/bundle/review-summary.js.map +1 -0
- package/dist/domains/bundle/state.d.ts +7 -0
- package/dist/domains/bundle/state.d.ts.map +1 -0
- package/dist/domains/bundle/state.js +132 -0
- package/dist/domains/bundle/state.js.map +1 -0
- package/dist/domains/bundle/types.d.ts +347 -0
- package/dist/domains/bundle/types.d.ts.map +1 -0
- package/dist/domains/bundle/types.js.map +1 -0
- package/dist/domains/bundle/user-facing.d.ts +48 -0
- package/dist/domains/bundle/user-facing.d.ts.map +1 -0
- package/dist/domains/bundle/user-facing.js +73 -0
- package/dist/domains/bundle/user-facing.js.map +1 -0
- package/dist/domains/bundle/validate.d.ts +5 -0
- package/dist/domains/bundle/validate.d.ts.map +1 -0
- package/dist/domains/bundle/validate.js +292 -0
- package/dist/domains/bundle/validate.js.map +1 -0
- package/dist/domains/comet-classic/classic-archive-entry.d.ts +2 -0
- package/dist/domains/comet-classic/classic-archive-entry.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-archive-entry.js +4 -0
- package/dist/domains/comet-classic/classic-archive-entry.js.map +1 -0
- package/dist/domains/comet-classic/classic-archive.d.ts +3 -0
- package/dist/domains/comet-classic/classic-archive.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-archive.js +392 -0
- package/dist/domains/comet-classic/classic-archive.js.map +1 -0
- package/dist/domains/comet-classic/classic-cli.d.ts +15 -0
- package/dist/domains/comet-classic/classic-cli.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-cli.js +94 -0
- package/dist/domains/comet-classic/classic-cli.js.map +1 -0
- package/dist/domains/comet-classic/classic-diagnostics.d.ts +16 -0
- package/dist/domains/comet-classic/classic-diagnostics.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-diagnostics.js +57 -0
- package/dist/domains/comet-classic/classic-diagnostics.js.map +1 -0
- package/dist/domains/comet-classic/classic-evidence.d.ts +10 -0
- package/dist/domains/comet-classic/classic-evidence.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-evidence.js +114 -0
- package/dist/domains/comet-classic/classic-evidence.js.map +1 -0
- package/dist/domains/comet-classic/classic-guard-entry.d.ts +2 -0
- package/dist/domains/comet-classic/classic-guard-entry.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-guard-entry.js +4 -0
- package/dist/domains/comet-classic/classic-guard-entry.js.map +1 -0
- package/dist/domains/comet-classic/classic-guard.d.ts +3 -0
- package/dist/domains/comet-classic/classic-guard.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-guard.js +833 -0
- package/dist/domains/comet-classic/classic-guard.js.map +1 -0
- package/dist/domains/comet-classic/classic-handoff-entry.d.ts +2 -0
- package/dist/domains/comet-classic/classic-handoff-entry.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-handoff-entry.js +4 -0
- package/dist/domains/comet-classic/classic-handoff-entry.js.map +1 -0
- package/dist/domains/comet-classic/classic-handoff.d.ts +3 -0
- package/dist/domains/comet-classic/classic-handoff.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-handoff.js +478 -0
- package/dist/domains/comet-classic/classic-handoff.js.map +1 -0
- package/dist/domains/comet-classic/classic-hook-guard-entry.d.ts +2 -0
- package/dist/domains/comet-classic/classic-hook-guard-entry.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-hook-guard-entry.js +4 -0
- package/dist/domains/comet-classic/classic-hook-guard-entry.js.map +1 -0
- package/dist/domains/comet-classic/classic-hook-guard.d.ts +3 -0
- package/dist/domains/comet-classic/classic-hook-guard.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-hook-guard.js +382 -0
- package/dist/domains/comet-classic/classic-hook-guard.js.map +1 -0
- package/dist/domains/comet-classic/classic-intent-command.d.ts +3 -0
- package/dist/domains/comet-classic/classic-intent-command.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-intent-command.js +40 -0
- package/dist/domains/comet-classic/classic-intent-command.js.map +1 -0
- package/dist/domains/comet-classic/classic-intent-entry.d.ts +2 -0
- package/dist/domains/comet-classic/classic-intent-entry.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-intent-entry.js +4 -0
- package/dist/domains/comet-classic/classic-intent-entry.js.map +1 -0
- package/dist/domains/comet-classic/classic-intent.d.ts +79 -0
- package/dist/domains/comet-classic/classic-intent.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-intent.js +307 -0
- package/dist/domains/comet-classic/classic-intent.js.map +1 -0
- package/dist/domains/comet-classic/classic-migrate.d.ts +18 -0
- package/dist/domains/comet-classic/classic-migrate.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-migrate.js +184 -0
- package/dist/domains/comet-classic/classic-migrate.js.map +1 -0
- package/dist/domains/comet-classic/classic-paths.d.ts +8 -0
- package/dist/domains/comet-classic/classic-paths.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-paths.js +61 -0
- package/dist/domains/comet-classic/classic-paths.js.map +1 -0
- package/dist/domains/comet-classic/classic-resolver.d.ts +10 -0
- package/dist/domains/comet-classic/classic-resolver.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-resolver.js +89 -0
- package/dist/domains/comet-classic/classic-resolver.js.map +1 -0
- package/dist/domains/comet-classic/classic-runtime-evals.d.ts +9 -0
- package/dist/domains/comet-classic/classic-runtime-evals.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-runtime-evals.js +45 -0
- package/dist/domains/comet-classic/classic-runtime-evals.js.map +1 -0
- package/dist/domains/comet-classic/classic-runtime-run.d.ts +7 -0
- package/dist/domains/comet-classic/classic-runtime-run.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-runtime-run.js +105 -0
- package/dist/domains/comet-classic/classic-runtime-run.js.map +1 -0
- package/dist/domains/comet-classic/classic-script-entry.d.ts +3 -0
- package/dist/domains/comet-classic/classic-script-entry.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-script-entry.js +31 -0
- package/dist/domains/comet-classic/classic-script-entry.js.map +1 -0
- package/dist/domains/comet-classic/classic-state-command.d.ts +3 -0
- package/dist/domains/comet-classic/classic-state-command.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-state-command.js +984 -0
- package/dist/domains/comet-classic/classic-state-command.js.map +1 -0
- package/dist/domains/comet-classic/classic-state-entry.d.ts +2 -0
- package/dist/domains/comet-classic/classic-state-entry.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-state-entry.js +4 -0
- package/dist/domains/comet-classic/classic-state-entry.js.map +1 -0
- package/dist/domains/comet-classic/classic-state-events.d.ts +18 -0
- package/dist/domains/comet-classic/classic-state-events.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-state-events.js +15 -0
- package/dist/domains/comet-classic/classic-state-events.js.map +1 -0
- package/dist/domains/comet-classic/classic-state.d.ts +69 -0
- package/dist/domains/comet-classic/classic-state.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-state.js +238 -0
- package/dist/domains/comet-classic/classic-state.js.map +1 -0
- package/dist/domains/comet-classic/classic-store.d.ts +7 -0
- package/dist/domains/comet-classic/classic-store.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-store.js +127 -0
- package/dist/domains/comet-classic/classic-store.js.map +1 -0
- package/dist/domains/comet-classic/classic-transitions.d.ts +24 -0
- package/dist/domains/comet-classic/classic-transitions.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-transitions.js +124 -0
- package/dist/domains/comet-classic/classic-transitions.js.map +1 -0
- package/dist/domains/comet-classic/classic-validate-command.d.ts +3 -0
- package/dist/domains/comet-classic/classic-validate-command.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-validate-command.js +154 -0
- package/dist/domains/comet-classic/classic-validate-command.js.map +1 -0
- package/dist/domains/comet-classic/classic-validate-entry.d.ts +2 -0
- package/dist/domains/comet-classic/classic-validate-entry.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-validate-entry.js +4 -0
- package/dist/domains/comet-classic/classic-validate-entry.js.map +1 -0
- package/dist/domains/comet-classic/index.d.ts +20 -0
- package/dist/domains/comet-classic/index.d.ts.map +1 -0
- package/dist/domains/comet-classic/index.js +20 -0
- package/dist/domains/comet-classic/index.js.map +1 -0
- package/dist/domains/dashboard/collector.d.ts +12 -0
- package/dist/domains/dashboard/collector.d.ts.map +1 -0
- package/dist/domains/dashboard/collector.js +475 -0
- package/dist/domains/dashboard/collector.js.map +1 -0
- package/dist/domains/dashboard/git.d.ts +8 -0
- package/dist/domains/dashboard/git.d.ts.map +1 -0
- package/dist/domains/dashboard/git.js +69 -0
- package/dist/domains/dashboard/git.js.map +1 -0
- package/dist/domains/dashboard/next-action.d.ts +17 -0
- package/dist/domains/dashboard/next-action.d.ts.map +1 -0
- package/dist/domains/dashboard/next-action.js +83 -0
- package/dist/domains/dashboard/next-action.js.map +1 -0
- package/dist/domains/dashboard/open-browser.d.ts +9 -0
- package/dist/domains/dashboard/open-browser.d.ts.map +1 -0
- package/dist/domains/dashboard/open-browser.js +40 -0
- package/dist/domains/dashboard/open-browser.js.map +1 -0
- package/dist/domains/dashboard/risk.d.ts +24 -0
- package/dist/domains/dashboard/risk.d.ts.map +1 -0
- package/dist/domains/dashboard/risk.js +97 -0
- package/dist/domains/dashboard/risk.js.map +1 -0
- package/dist/domains/dashboard/server.d.ts +21 -0
- package/dist/domains/dashboard/server.d.ts.map +1 -0
- package/dist/domains/dashboard/server.js +149 -0
- package/dist/domains/dashboard/server.js.map +1 -0
- package/dist/domains/dashboard/task-parser.d.ts +13 -0
- package/dist/domains/dashboard/task-parser.d.ts.map +1 -0
- package/dist/domains/dashboard/task-parser.js +82 -0
- package/dist/domains/dashboard/task-parser.js.map +1 -0
- package/dist/domains/dashboard/types.d.ts +122 -0
- package/dist/domains/dashboard/types.d.ts.map +1 -0
- package/dist/domains/dashboard/types.js +10 -0
- package/dist/domains/dashboard/types.js.map +1 -0
- package/dist/domains/dashboard/verify-parser.d.ts +18 -0
- package/dist/domains/dashboard/verify-parser.d.ts.map +1 -0
- package/dist/domains/dashboard/verify-parser.js +94 -0
- package/dist/domains/dashboard/verify-parser.js.map +1 -0
- package/dist/domains/dashboard/web/assets/demo-DQyfozbi.js +1 -0
- package/dist/domains/dashboard/web/assets/index-BcO3_QlT.css +1 -0
- package/dist/domains/dashboard/web/assets/index-CjU3VXVu.js +22 -0
- package/dist/domains/dashboard/web/favicon.png +0 -0
- package/dist/domains/dashboard/web/index.html +16 -0
- package/dist/domains/dashboard/yaml.d.ts +13 -0
- package/dist/domains/dashboard/yaml.d.ts.map +1 -0
- package/dist/domains/dashboard/yaml.js +61 -0
- package/dist/domains/dashboard/yaml.js.map +1 -0
- package/dist/domains/engine/evals.d.ts +4 -0
- package/dist/domains/engine/evals.d.ts.map +1 -0
- package/dist/domains/engine/evals.js +25 -0
- package/dist/domains/engine/evals.js.map +1 -0
- package/dist/domains/engine/guardrails.d.ts +10 -0
- package/dist/domains/engine/guardrails.d.ts.map +1 -0
- package/dist/domains/engine/guardrails.js +25 -0
- package/dist/domains/engine/guardrails.js.map +1 -0
- package/dist/domains/engine/loop.d.ts +15 -0
- package/dist/domains/engine/loop.d.ts.map +1 -0
- package/dist/domains/engine/loop.js +126 -0
- package/dist/domains/engine/loop.js.map +1 -0
- package/dist/domains/engine/manual-run.d.ts +30 -0
- package/dist/domains/engine/manual-run.d.ts.map +1 -0
- package/dist/domains/engine/manual-run.js +184 -0
- package/dist/domains/engine/manual-run.js.map +1 -0
- package/dist/domains/engine/resolver.d.ts +20 -0
- package/dist/domains/engine/resolver.d.ts.map +1 -0
- package/dist/domains/engine/resolver.js +36 -0
- package/dist/domains/engine/resolver.js.map +1 -0
- package/dist/domains/engine/run-store.d.ts +13 -0
- package/dist/domains/engine/run-store.d.ts.map +1 -0
- package/dist/domains/engine/run-store.js +100 -0
- package/dist/domains/engine/run-store.js.map +1 -0
- package/dist/domains/engine/runtime-types.d.ts +11 -0
- package/dist/domains/engine/runtime-types.d.ts.map +1 -0
- package/dist/domains/engine/runtime-types.js +2 -0
- package/dist/domains/engine/runtime-types.js.map +1 -0
- package/dist/domains/engine/standalone-run.d.ts +13 -0
- package/dist/domains/engine/standalone-run.d.ts.map +1 -0
- package/dist/domains/engine/standalone-run.js +27 -0
- package/dist/domains/engine/standalone-run.js.map +1 -0
- package/dist/domains/engine/state.d.ts +10 -0
- package/dist/domains/engine/state.d.ts.map +1 -0
- package/dist/domains/engine/state.js +160 -0
- package/dist/domains/engine/state.js.map +1 -0
- package/dist/domains/engine/types.d.ts +51 -0
- package/dist/domains/engine/types.d.ts.map +1 -0
- package/dist/domains/engine/types.js +2 -0
- package/dist/domains/engine/types.js.map +1 -0
- package/dist/domains/eval/index.d.ts +7 -0
- package/dist/domains/eval/index.d.ts.map +1 -0
- package/dist/domains/eval/index.js +11 -0
- package/dist/domains/eval/index.js.map +1 -0
- package/dist/domains/eval/repository-benchmarks.d.ts +6 -0
- package/dist/domains/eval/repository-benchmarks.d.ts.map +1 -0
- package/dist/domains/eval/repository-benchmarks.js +10 -0
- package/dist/domains/eval/repository-benchmarks.js.map +1 -0
- package/dist/domains/factory/artifacts.d.ts +53 -0
- package/dist/domains/factory/artifacts.d.ts.map +1 -0
- package/dist/domains/factory/artifacts.js +8 -0
- package/dist/domains/factory/artifacts.js.map +1 -0
- package/dist/domains/factory/package.d.ts +7 -0
- package/dist/domains/factory/package.d.ts.map +1 -0
- package/dist/domains/factory/package.js +1511 -0
- package/dist/domains/factory/package.js.map +1 -0
- package/dist/domains/factory/types.d.ts +127 -0
- package/dist/domains/factory/types.d.ts.map +1 -0
- package/dist/domains/factory/types.js +2 -0
- package/dist/domains/factory/types.js.map +1 -0
- package/dist/{core → domains/integrations}/codegraph.d.ts +1 -1
- package/dist/domains/integrations/codegraph.d.ts.map +1 -0
- package/dist/{core → domains/integrations}/codegraph.js +1 -1
- package/dist/domains/integrations/codegraph.js.map +1 -0
- package/dist/domains/integrations/openspec.d.ts +18 -0
- package/dist/domains/integrations/openspec.d.ts.map +1 -0
- package/dist/{core → domains/integrations}/openspec.js +102 -25
- package/dist/domains/integrations/openspec.js.map +1 -0
- package/dist/{core → domains/integrations}/superpowers.d.ts +10 -2
- package/dist/domains/integrations/superpowers.d.ts.map +1 -0
- package/dist/{core → domains/integrations}/superpowers.js +59 -13
- package/dist/domains/integrations/superpowers.js.map +1 -0
- package/dist/domains/skill/discovery.d.ts +17 -0
- package/dist/domains/skill/discovery.d.ts.map +1 -0
- package/dist/domains/skill/discovery.js +80 -0
- package/dist/domains/skill/discovery.js.map +1 -0
- package/dist/domains/skill/find.d.ts +41 -0
- package/dist/domains/skill/find.d.ts.map +1 -0
- package/dist/domains/skill/find.js +251 -0
- package/dist/domains/skill/find.js.map +1 -0
- package/dist/domains/skill/install.d.ts +11 -0
- package/dist/domains/skill/install.d.ts.map +1 -0
- package/dist/domains/skill/install.js +82 -0
- package/dist/domains/skill/install.js.map +1 -0
- package/dist/domains/skill/inventory.d.ts +19 -0
- package/dist/domains/skill/inventory.d.ts.map +1 -0
- package/dist/domains/skill/inventory.js +64 -0
- package/dist/domains/skill/inventory.js.map +1 -0
- package/dist/domains/skill/languages.d.ts +19 -0
- package/dist/domains/skill/languages.d.ts.map +1 -0
- package/dist/domains/skill/languages.js +21 -0
- package/dist/domains/skill/languages.js.map +1 -0
- package/dist/domains/skill/load.d.ts +5 -0
- package/dist/domains/skill/load.d.ts.map +1 -0
- package/dist/domains/skill/load.js +313 -0
- package/dist/domains/skill/load.js.map +1 -0
- package/dist/domains/skill/platform-install.d.ts +79 -0
- package/dist/domains/skill/platform-install.d.ts.map +1 -0
- package/dist/{core/skills.js → domains/skill/platform-install.js} +311 -54
- package/dist/domains/skill/platform-install.js.map +1 -0
- package/dist/domains/skill/preferences.d.ts +42 -0
- package/dist/domains/skill/preferences.d.ts.map +1 -0
- package/dist/domains/skill/preferences.js +118 -0
- package/dist/domains/skill/preferences.js.map +1 -0
- package/dist/domains/skill/snapshot.d.ts +8 -0
- package/dist/domains/skill/snapshot.d.ts.map +1 -0
- package/dist/domains/skill/snapshot.js +184 -0
- package/dist/domains/skill/snapshot.js.map +1 -0
- package/dist/domains/skill/types.d.ts +85 -0
- package/dist/domains/skill/types.d.ts.map +1 -0
- package/dist/domains/skill/types.js +2 -0
- package/dist/{core → domains/skill}/types.js.map +1 -1
- package/dist/{core → domains/skill}/uninstall.d.ts +2 -18
- package/dist/domains/skill/uninstall.d.ts.map +1 -0
- package/dist/{core → domains/skill}/uninstall.js +15 -66
- package/dist/domains/skill/uninstall.js.map +1 -0
- package/dist/domains/skill/validate.d.ts +3 -0
- package/dist/domains/skill/validate.d.ts.map +1 -0
- package/dist/domains/skill/validate.js +81 -0
- package/dist/domains/skill/validate.js.map +1 -0
- package/dist/domains/workflow-contract/builtins.d.ts +8 -0
- package/dist/domains/workflow-contract/builtins.d.ts.map +1 -0
- package/dist/domains/workflow-contract/builtins.js +229 -0
- package/dist/domains/workflow-contract/builtins.js.map +1 -0
- package/dist/domains/workflow-contract/hash.d.ts +3 -0
- package/dist/domains/workflow-contract/hash.d.ts.map +1 -0
- package/dist/domains/workflow-contract/hash.js +16 -0
- package/dist/domains/workflow-contract/hash.js.map +1 -0
- package/dist/domains/workflow-contract/index.d.ts +6 -0
- package/dist/domains/workflow-contract/index.d.ts.map +1 -0
- package/dist/domains/workflow-contract/index.js +5 -0
- package/dist/domains/workflow-contract/index.js.map +1 -0
- package/dist/domains/workflow-contract/normalize.d.ts +3 -0
- package/dist/domains/workflow-contract/normalize.d.ts.map +1 -0
- package/dist/domains/workflow-contract/normalize.js +146 -0
- package/dist/domains/workflow-contract/normalize.js.map +1 -0
- package/dist/domains/workflow-contract/types.d.ts +128 -0
- package/dist/domains/workflow-contract/types.d.ts.map +1 -0
- package/dist/domains/workflow-contract/types.js +2 -0
- package/dist/domains/workflow-contract/types.js.map +1 -0
- package/dist/domains/workflow-contract/validation.d.ts +3 -0
- package/dist/domains/workflow-contract/validation.d.ts.map +1 -0
- package/dist/domains/workflow-contract/validation.js +180 -0
- package/dist/domains/workflow-contract/validation.js.map +1 -0
- package/dist/platform/fs/file-system.d.ts.map +1 -0
- package/dist/platform/fs/file-system.js.map +1 -0
- package/dist/platform/install/detect.d.ts.map +1 -0
- package/dist/{core → platform/install}/detect.js +4 -3
- package/dist/platform/install/detect.js.map +1 -0
- package/dist/platform/install/platforms.d.ts.map +1 -0
- package/dist/{core → platform/install}/platforms.js +41 -0
- package/dist/platform/install/platforms.js.map +1 -0
- package/dist/platform/install/types.d.ts +3 -0
- package/dist/platform/install/types.d.ts.map +1 -0
- package/dist/platform/install/types.js +2 -0
- package/dist/platform/install/types.js.map +1 -0
- package/dist/platform/paths/repository-layout.d.ts +22 -0
- package/dist/platform/paths/repository-layout.d.ts.map +1 -0
- package/dist/platform/paths/repository-layout.js +11 -0
- package/dist/platform/paths/repository-layout.js.map +1 -0
- package/dist/platform/process/command-error.d.ts.map +1 -0
- package/dist/platform/process/command-error.js.map +1 -0
- package/dist/platform/process/shell-quote.d.ts +22 -0
- package/dist/platform/process/shell-quote.d.ts.map +1 -0
- package/dist/platform/process/shell-quote.js +34 -0
- package/dist/platform/process/shell-quote.js.map +1 -0
- package/dist/platform/version/version.d.ts.map +1 -0
- package/dist/{core → platform/version}/version.js +16 -3
- package/dist/platform/version/version.js.map +1 -0
- package/package.json +41 -15
- package/assets/skills/comet/scripts/comet-archive.sh +0 -311
- package/assets/skills/comet/scripts/comet-env.sh +0 -110
- package/assets/skills/comet/scripts/comet-guard.sh +0 -778
- package/assets/skills/comet/scripts/comet-handoff.sh +0 -390
- package/assets/skills/comet/scripts/comet-hook-guard.sh +0 -336
- package/assets/skills/comet/scripts/comet-state.sh +0 -1338
- package/assets/skills/comet/scripts/comet-yaml-validate.sh +0 -225
- package/dist/cli/index.js +0 -84
- package/dist/cli/index.js.map +0 -1
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/i18n.d.ts +0 -4
- package/dist/commands/i18n.d.ts.map +0 -1
- package/dist/commands/i18n.js.map +0 -1
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js +0 -108
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/uninstall.d.ts.map +0 -1
- package/dist/commands/uninstall.js.map +0 -1
- package/dist/commands/update.d.ts.map +0 -1
- package/dist/commands/update.js.map +0 -1
- package/dist/core/codegraph.d.ts.map +0 -1
- package/dist/core/codegraph.js.map +0 -1
- package/dist/core/command-error.d.ts.map +0 -1
- package/dist/core/command-error.js.map +0 -1
- package/dist/core/detect.d.ts.map +0 -1
- package/dist/core/detect.js.map +0 -1
- package/dist/core/openspec.d.ts +0 -11
- package/dist/core/openspec.d.ts.map +0 -1
- package/dist/core/openspec.js.map +0 -1
- package/dist/core/platforms.d.ts.map +0 -1
- package/dist/core/platforms.js.map +0 -1
- package/dist/core/skills.d.ts +0 -58
- package/dist/core/skills.d.ts.map +0 -1
- package/dist/core/skills.js.map +0 -1
- package/dist/core/superpowers.d.ts.map +0 -1
- package/dist/core/superpowers.js.map +0 -1
- package/dist/core/types.d.ts +0 -2
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/uninstall.d.ts.map +0 -1
- package/dist/core/uninstall.js.map +0 -1
- package/dist/core/version.d.ts.map +0 -1
- package/dist/core/version.js.map +0 -1
- package/dist/utils/file-system.d.ts.map +0 -1
- package/dist/utils/file-system.js.map +0 -1
- /package/dist/{cli → app/cli}/index.d.ts +0 -0
- /package/dist/{commands → app/commands}/status.d.ts +0 -0
- /package/dist/{core → domains/bundle}/types.js +0 -0
- /package/dist/{utils → platform/fs}/file-system.d.ts +0 -0
- /package/dist/{utils → platform/fs}/file-system.js +0 -0
- /package/dist/{core → platform/install}/detect.d.ts +0 -0
- /package/dist/{core → platform/install}/platforms.d.ts +0 -0
- /package/dist/{core → platform/process}/command-error.d.ts +0 -0
- /package/dist/{core → platform/process}/command-error.js +0 -0
- /package/dist/{core → platform/version}/version.d.ts +0 -0
- /package/scripts/{postinstall.js → install/postinstall.js} +0 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard data contracts.
|
|
3
|
+
*
|
|
4
|
+
* Matches the API shape consumed by the dashboard frontend (see
|
|
5
|
+
* `domains/dashboard/web/app.js`). Field names are stable; renaming requires
|
|
6
|
+
* coordinated changes in the collector, the frontend, and any docs that
|
|
7
|
+
* reference the JSON payload.
|
|
8
|
+
*/
|
|
9
|
+
export type ChangeStatus = 'active' | 'archived';
|
|
10
|
+
export type ChangePhase = 'open' | 'design' | 'build' | 'verify' | 'archive' | 'unknown';
|
|
11
|
+
export type PhaseStepStatus = 'done' | 'current' | 'pending' | 'failed' | 'unknown';
|
|
12
|
+
export type VerifyResult = 'pending' | 'pass' | 'fail' | 'unknown';
|
|
13
|
+
export type RiskLevel = 'info' | 'warning' | 'error';
|
|
14
|
+
export interface DashboardRisk {
|
|
15
|
+
level: RiskLevel;
|
|
16
|
+
code: string;
|
|
17
|
+
message: string;
|
|
18
|
+
suggestion?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface TaskSectionSummary {
|
|
21
|
+
title: string;
|
|
22
|
+
completed: number;
|
|
23
|
+
total: number;
|
|
24
|
+
status: 'done' | 'active' | 'pending';
|
|
25
|
+
}
|
|
26
|
+
export interface TasksSummary {
|
|
27
|
+
completed: number;
|
|
28
|
+
total: number;
|
|
29
|
+
incomplete: string[];
|
|
30
|
+
sections: TaskSectionSummary[];
|
|
31
|
+
}
|
|
32
|
+
export type ArtifactSource = 'openspec' | 'superpowers' | 'comet';
|
|
33
|
+
export interface GroupedArtifact {
|
|
34
|
+
key: string;
|
|
35
|
+
label: string;
|
|
36
|
+
source: ArtifactSource;
|
|
37
|
+
exists: boolean;
|
|
38
|
+
path: string;
|
|
39
|
+
notApplicable?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface ArtifactsSummary {
|
|
42
|
+
proposal: boolean;
|
|
43
|
+
design: boolean;
|
|
44
|
+
tasks: boolean;
|
|
45
|
+
plan: boolean;
|
|
46
|
+
verifyReport: boolean;
|
|
47
|
+
cometYaml: boolean;
|
|
48
|
+
grouped: GroupedArtifact[];
|
|
49
|
+
}
|
|
50
|
+
export interface ArtifactPreview {
|
|
51
|
+
key: string;
|
|
52
|
+
label: string;
|
|
53
|
+
path: string;
|
|
54
|
+
exists: boolean;
|
|
55
|
+
content?: string;
|
|
56
|
+
truncated?: boolean;
|
|
57
|
+
size?: number;
|
|
58
|
+
updatedAt?: string;
|
|
59
|
+
}
|
|
60
|
+
export interface VerifySummary {
|
|
61
|
+
result: VerifyResult;
|
|
62
|
+
reportExists: boolean;
|
|
63
|
+
summary?: string;
|
|
64
|
+
}
|
|
65
|
+
export interface NextAction {
|
|
66
|
+
command: string | null;
|
|
67
|
+
reason: string;
|
|
68
|
+
description: string;
|
|
69
|
+
}
|
|
70
|
+
export interface ArchiveInfo {
|
|
71
|
+
archiveName: string;
|
|
72
|
+
originalName?: string;
|
|
73
|
+
archivedAt?: string;
|
|
74
|
+
archivePath: string;
|
|
75
|
+
}
|
|
76
|
+
export interface ChangeDashboardItem {
|
|
77
|
+
id: string;
|
|
78
|
+
name: string;
|
|
79
|
+
displayName: string;
|
|
80
|
+
status: ChangeStatus;
|
|
81
|
+
path: string;
|
|
82
|
+
workflow: string | null;
|
|
83
|
+
phase: ChangePhase;
|
|
84
|
+
updatedAt?: string;
|
|
85
|
+
archive?: ArchiveInfo;
|
|
86
|
+
tasks: TasksSummary;
|
|
87
|
+
artifacts: ArtifactsSummary;
|
|
88
|
+
artifactPreviews: ArtifactPreview[];
|
|
89
|
+
verify: VerifySummary;
|
|
90
|
+
next?: NextAction;
|
|
91
|
+
risks: DashboardRisk[];
|
|
92
|
+
}
|
|
93
|
+
export interface GitSnapshot {
|
|
94
|
+
branch: string | null;
|
|
95
|
+
head: string | null;
|
|
96
|
+
dirtyFiles: number;
|
|
97
|
+
dirtyFileList: string[];
|
|
98
|
+
recentCommits: string[];
|
|
99
|
+
}
|
|
100
|
+
export interface DashboardProject {
|
|
101
|
+
name: string;
|
|
102
|
+
path: string;
|
|
103
|
+
generatedAt: string;
|
|
104
|
+
}
|
|
105
|
+
export interface DashboardSummary {
|
|
106
|
+
activeChanges: number;
|
|
107
|
+
archivedChanges: number;
|
|
108
|
+
verifyFailed: number;
|
|
109
|
+
tasksIncomplete: number;
|
|
110
|
+
dirtyFiles: number;
|
|
111
|
+
}
|
|
112
|
+
export interface DashboardSnapshot {
|
|
113
|
+
project: DashboardProject;
|
|
114
|
+
summary: DashboardSummary;
|
|
115
|
+
changes: {
|
|
116
|
+
active: ChangeDashboardItem[];
|
|
117
|
+
archived: ChangeDashboardItem[];
|
|
118
|
+
};
|
|
119
|
+
git: GitSnapshot;
|
|
120
|
+
risks: DashboardRisk[];
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../domains/dashboard/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard data contracts.
|
|
3
|
+
*
|
|
4
|
+
* Matches the API shape consumed by the dashboard frontend (see
|
|
5
|
+
* `domains/dashboard/web/app.js`). Field names are stable; renaming requires
|
|
6
|
+
* coordinated changes in the collector, the frontend, and any docs that
|
|
7
|
+
* reference the JSON payload.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../domains/dashboard/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { VerifySummary } from './types.js';
|
|
2
|
+
export interface VerifyContext {
|
|
3
|
+
changeDir: string;
|
|
4
|
+
yaml: Record<string, string>;
|
|
5
|
+
projectRoot?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Resolve a change's verify state in this order:
|
|
9
|
+
* 1. `yaml.verify_result` (or `verifyResult`) if it parses to a known value.
|
|
10
|
+
* 2. Presence of a verify report: explicit `verification_report` path first,
|
|
11
|
+
* falling back to `.comet/verify-result.md`.
|
|
12
|
+
* 3. Heuristic: if a report exists but the yaml is silent, assume `fail` —
|
|
13
|
+
* the report wouldn't usually exist for a passing run that hasn't been
|
|
14
|
+
* recorded in the yaml.
|
|
15
|
+
* 4. Otherwise `unknown` / `pending` per the report's absence.
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolveVerify(ctx: VerifyContext): Promise<VerifySummary>;
|
|
18
|
+
//# sourceMappingURL=verify-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-parser.d.ts","sourceRoot":"","sources":["../../../domains/dashboard/verify-parser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,YAAY,CAAC;AAO9D,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAyB9E"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { fileExists } from '../../platform/fs/file-system.js';
|
|
4
|
+
const VALID_RESULTS = new Set(['pending', 'pass', 'fail', 'unknown']);
|
|
5
|
+
const DEFAULT_REPORT_RELATIVE = '.comet/verify-result.md';
|
|
6
|
+
const SUMMARY_LINE_BUDGET = 6;
|
|
7
|
+
const SUMMARY_CHAR_BUDGET = 480;
|
|
8
|
+
/**
|
|
9
|
+
* Resolve a change's verify state in this order:
|
|
10
|
+
* 1. `yaml.verify_result` (or `verifyResult`) if it parses to a known value.
|
|
11
|
+
* 2. Presence of a verify report: explicit `verification_report` path first,
|
|
12
|
+
* falling back to `.comet/verify-result.md`.
|
|
13
|
+
* 3. Heuristic: if a report exists but the yaml is silent, assume `fail` —
|
|
14
|
+
* the report wouldn't usually exist for a passing run that hasn't been
|
|
15
|
+
* recorded in the yaml.
|
|
16
|
+
* 4. Otherwise `unknown` / `pending` per the report's absence.
|
|
17
|
+
*/
|
|
18
|
+
export async function resolveVerify(ctx) {
|
|
19
|
+
const declared = normalizeResult(ctx.yaml.verify_result ?? ctx.yaml.verifyResult);
|
|
20
|
+
const defaultReportPath = path.join(ctx.changeDir, DEFAULT_REPORT_RELATIVE);
|
|
21
|
+
const explicitReport = stripNullish(ctx.yaml.verification_report ?? ctx.yaml.verificationReport);
|
|
22
|
+
const reportPath = explicitReport
|
|
23
|
+
? (safeJoin(ctx.projectRoot ?? ctx.changeDir, explicitReport) ?? defaultReportPath)
|
|
24
|
+
: defaultReportPath;
|
|
25
|
+
const reportExists = await fileExists(reportPath);
|
|
26
|
+
const summary = reportExists ? await readSummary(reportPath) : undefined;
|
|
27
|
+
let result;
|
|
28
|
+
if (declared) {
|
|
29
|
+
result = declared;
|
|
30
|
+
}
|
|
31
|
+
else if (reportExists) {
|
|
32
|
+
// A report exists but nothing in the yaml — assume a failure was recorded.
|
|
33
|
+
result = 'fail';
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
result = 'unknown';
|
|
37
|
+
}
|
|
38
|
+
const out = { result, reportExists };
|
|
39
|
+
if (summary)
|
|
40
|
+
out.summary = summary;
|
|
41
|
+
return out;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Resolve `candidate` against `root` only if the resolved path stays inside
|
|
45
|
+
* `root`. Returns `null` when the candidate is absolute or escapes via `..`,
|
|
46
|
+
* so callers can fall back to a safe default. A malicious `.comet.yaml` must
|
|
47
|
+
* not be able to point the dashboard at arbitrary files on disk.
|
|
48
|
+
*/
|
|
49
|
+
function safeJoin(root, candidate) {
|
|
50
|
+
if (path.isAbsolute(candidate))
|
|
51
|
+
return null;
|
|
52
|
+
const resolvedRoot = path.resolve(root);
|
|
53
|
+
const resolved = path.resolve(resolvedRoot, candidate);
|
|
54
|
+
if (resolved !== resolvedRoot && !resolved.startsWith(resolvedRoot + path.sep)) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
return resolved;
|
|
58
|
+
}
|
|
59
|
+
function normalizeResult(raw) {
|
|
60
|
+
if (!raw)
|
|
61
|
+
return null;
|
|
62
|
+
const value = raw.trim().toLowerCase();
|
|
63
|
+
if (!value)
|
|
64
|
+
return null;
|
|
65
|
+
return VALID_RESULTS.has(value) ? value : null;
|
|
66
|
+
}
|
|
67
|
+
function stripNullish(raw) {
|
|
68
|
+
if (!raw)
|
|
69
|
+
return undefined;
|
|
70
|
+
const value = raw.trim();
|
|
71
|
+
if (!value || value === 'null')
|
|
72
|
+
return undefined;
|
|
73
|
+
return value;
|
|
74
|
+
}
|
|
75
|
+
async function readSummary(reportPath) {
|
|
76
|
+
try {
|
|
77
|
+
const content = await fs.readFile(reportPath, 'utf-8');
|
|
78
|
+
const lines = content
|
|
79
|
+
.split(/\r?\n/u)
|
|
80
|
+
.map((line) => line.trim())
|
|
81
|
+
.filter((line) => line.length > 0)
|
|
82
|
+
.slice(0, SUMMARY_LINE_BUDGET);
|
|
83
|
+
const joined = lines.join('\n');
|
|
84
|
+
if (!joined)
|
|
85
|
+
return undefined;
|
|
86
|
+
return joined.length > SUMMARY_CHAR_BUDGET
|
|
87
|
+
? `${joined.slice(0, SUMMARY_CHAR_BUDGET - 1)}…`
|
|
88
|
+
: joined;
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=verify-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-parser.js","sourceRoot":"","sources":["../../../domains/dashboard/verify-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function r(e){const s=e.path,t=e.phase,i=t!=="open"&&t!=="unknown",a=[];i&&!e.artifacts?.grouped?.some(n=>n.key==="designDoc")&&a.push({key:"designDoc",label:"技术设计",source:"superpowers",exists:!0,path:`docs/superpowers/specs/${e.name}-design.md`});const l=[{key:"cometYaml",label:".comet.yaml",source:"comet",exists:e.artifacts?.cometYaml??!0,path:`${s}/.comet.yaml`},{key:"handoff",label:"Handoff 上下文",source:"comet",exists:!1,path:`${s}/.comet/handoff/design-context.json`},{key:"checkpoint",label:"Checkpoint",source:"comet",exists:!1,path:`${s}/.comet/checkpoint.json`},{key:"brainstorm",label:"Brainstorm 摘要",source:"comet",exists:!1,path:`${s}/.comet/handoff/brainstorm-summary.md`},{key:"subagentProgress",label:"Subagent 进度",source:"comet",exists:!1,path:`${s}/.comet/subagent-progress.md`}];return e.artifacts?.grouped&&e.artifacts.grouped.push(...a,...l),e}const o={project:{name:"Comet",path:"~/projects/comet",generatedAt:"2026-06-25T14:32:00.000Z"},summary:{activeChanges:4,archivedChanges:3,verifyFailed:1,tasksIncomplete:15,dirtyFiles:3},git:{branch:"feat/dashboard-redesign",head:"8f3a2c1",dirtyFiles:3,dirtyFileList:["domains/dashboard/web/index.html","domains/dashboard/web/styles.css","domains/dashboard/collector.ts"],recentCommits:["8f3a2c1 重构 dashboard 采集逻辑","2bd9e0a 新增 phase stepper 组件","c4f1a80 修复 verify 解析空指针","9a02d7d 初始化 openspec/changes 目录"]},risks:[{level:"error",code:"verify-failed",message:"1 个变更验证失败",suggestion:"打开 fix-webhook-retries 并重新运行 comet verify"},{level:"warning",code:"tasks-incomplete",message:"共 15 个未完成任务",suggestion:"完成任务后变更即可进入 Verify 阶段"},{level:"warning",code:"git-dirty",message:"3 个未提交文件阻塞 verify",suggestion:"提交或暂存 (stash) 后再运行验证"}],changes:{active:[{id:"add-auth-rate-limiting",name:"add-auth-rate-limiting",displayName:"add-auth-rate-limiting",status:"active",path:"openspec/changes/add-auth-rate-limiting",workflow:"feature",phase:"build",updatedAt:"2 小时前",tasks:{completed:8,total:12,incomplete:["为滑动窗口补充单元测试","Redis 适配器集成测试","5000 QPS 压测场景","补充 README 限流说明"],sections:[{title:"限流策略",completed:3,total:3,status:"done"},{title:"中间件实现",completed:3,total:4,status:"active"},{title:"测试覆盖",completed:2,total:5,status:"pending"}]},artifacts:{proposal:!0,design:!0,tasks:!0,plan:!0,verifyReport:!1,cometYaml:!0,grouped:[{key:"proposal",label:"提案",source:"openspec",exists:!0,path:"openspec/changes/add-auth-rate-limiting/proposal.md"},{key:"design",label:"设计文档",source:"openspec",exists:!0,path:"openspec/changes/add-auth-rate-limiting/design.md"},{key:"tasks",label:"任务清单",source:"openspec",exists:!0,path:"openspec/changes/add-auth-rate-limiting/tasks.md"},{key:"designDoc",label:"技术设计",source:"superpowers",exists:!0,path:"docs/superpowers/specs/2026-06-20-rate-limiting-design.md"},{key:"plan",label:"实施计划",source:"superpowers",exists:!0,path:"docs/superpowers/plans/2026-06-20-rate-limiting.md"}]},verify:{result:"pending",reportExists:!1},next:{command:"comet build",reason:"还有 4 个任务未完成",description:"优先推进「测试覆盖」分组,全部任务完成后即可进入 Verify 阶段。"},risks:[{level:"warning",code:"tasks-incomplete",message:"4 个任务未完成,将阻塞进入 Verify",suggestion:"完成「测试覆盖」分组后运行 comet verify"}]},{id:"dashboard-redesign",name:"dashboard-redesign",displayName:"dashboard-redesign",status:"active",path:"openspec/changes/dashboard-redesign",workflow:"feature",phase:"design",updatedAt:"昨天",tasks:{completed:2,total:9,incomplete:["锁定视觉系统","定义响应式断点","交互原型"],sections:[{title:"信息架构",completed:2,total:3,status:"active"},{title:"视觉系统",completed:0,total:3,status:"pending"},{title:"交互原型",completed:0,total:3,status:"pending"}]},artifacts:{proposal:!0,design:!0,tasks:!0,plan:!1,verifyReport:!1,cometYaml:!0,grouped:[{key:"proposal",label:"提案",source:"openspec",exists:!0,path:"openspec/changes/dashboard-redesign/proposal.md"},{key:"design",label:"设计文档",source:"openspec",exists:!0,path:"openspec/changes/dashboard-redesign/design.md"},{key:"tasks",label:"任务清单",source:"openspec",exists:!0,path:"openspec/changes/dashboard-redesign/tasks.md"}]},verify:{result:"pending",reportExists:!1},next:{command:"comet design",reason:"设计阶段进行中",description:"完成视觉系统与交互原型分组后,产出 plan.md 并进入构建。"},risks:[{level:"warning",code:"tasks-incomplete",message:"7 个任务未完成",suggestion:"先锁定视觉系统,再展开交互原型"}]},{id:"fix-webhook-retries",name:"fix-webhook-retries",displayName:"fix-webhook-retries",status:"active",path:"openspec/changes/fix-webhook-retries",workflow:"fix",phase:"verify",updatedAt:"3 小时前",tasks:{completed:11,total:11,incomplete:[],sections:[{title:"重试逻辑",completed:5,total:5,status:"done"},{title:"退避策略",completed:3,total:3,status:"done"},{title:"测试",completed:3,total:3,status:"done"}]},artifacts:{proposal:!0,design:!0,tasks:!0,plan:!0,verifyReport:!0,cometYaml:!0,grouped:[{key:"proposal",label:"提案",source:"openspec",exists:!0,path:"openspec/changes/fix-webhook-retries/proposal.md"},{key:"design",label:"设计文档",source:"openspec",exists:!0,path:"openspec/changes/fix-webhook-retries/design.md"},{key:"tasks",label:"任务清单",source:"openspec",exists:!0,path:"openspec/changes/fix-webhook-retries/tasks.md"},{key:"designDoc",label:"技术设计",source:"superpowers",exists:!0,path:"docs/superpowers/specs/2026-06-22-webhook-retry-design.md"},{key:"plan",label:"实施计划",source:"superpowers",exists:!0,path:"docs/superpowers/plans/2026-06-22-webhook-retry.md"},{key:"verifyReport",label:"验证报告",source:"superpowers",exists:!0,path:"docs/superpowers/reports/2026-06-23-webhook-verify.md"}]},verify:{result:"fail",reportExists:!0,summary:"2 / 4 断言通过 — 重试上限与幂等性失败"},next:{command:"comet verify",reason:"验证失败需修复",description:"verify-result.md 显示 2 项断言失败,修复后重新运行 comet verify。"},risks:[{level:"error",code:"verify-failed",message:"验证未通过:2 项断言失败",suggestion:"检查 verify-result.md 中的失败用例并修复实现"}]},{id:"migrate-config-to-yaml",name:"migrate-config-to-yaml",displayName:"migrate-config-to-yaml",status:"active",path:"openspec/changes/migrate-config-to-yaml",workflow:"refactor",phase:"build",updatedAt:"2 天前",tasks:{completed:6,total:10,incomplete:["完成迁移脚本 dry-run","补充配置迁移文档"],sections:[{title:"配置映射",completed:4,total:4,status:"done"},{title:"迁移脚本",completed:2,total:3,status:"active"},{title:"文档更新",completed:0,total:3,status:"pending"}]},artifacts:{proposal:!0,design:!0,tasks:!0,plan:!0,verifyReport:!1,cometYaml:!0,grouped:[{key:"proposal",label:"提案",source:"openspec",exists:!0,path:"openspec/changes/migrate-config-to-yaml/proposal.md"},{key:"design",label:"设计文档",source:"openspec",exists:!0,path:"openspec/changes/migrate-config-to-yaml/design.md"},{key:"tasks",label:"任务清单",source:"openspec",exists:!0,path:"openspec/changes/migrate-config-to-yaml/tasks.md"},{key:"plan",label:"实施计划",source:"superpowers",exists:!0,path:"docs/superpowers/plans/2026-06-26-config-yaml.md"}]},verify:{result:"pending",reportExists:!1},next:{command:"comet build",reason:"4 个任务未完成",description:"完成迁移脚本与文档更新分组后进入验证。"},risks:[{level:"info",code:"phase-stale",message:"该变更 2 天未更新",suggestion:"确认是否仍活跃,否则考虑归档"}]}],archived:[{id:"archive/2025-11-02-add-dark-mode",name:"2025-11-02-add-dark-mode",displayName:"add-dark-mode",status:"archived",path:"openspec/changes/archive/2025-11-02-add-dark-mode",workflow:"feature",phase:"archive",updatedAt:"2025-11-02",archive:{archiveName:"2025-11-02-add-dark-mode",originalName:"add-dark-mode",archivedAt:"2025-11-02",archivePath:"openspec/changes/archive/2025-11-02-add-dark-mode"},tasks:{completed:14,total:14,incomplete:[],sections:[{title:"主题切换",completed:6,total:6,status:"done"},{title:"样式适配",completed:8,total:8,status:"done"}]},artifacts:{proposal:!0,design:!0,tasks:!0,plan:!0,verifyReport:!0,cometYaml:!0,grouped:[{key:"proposal",label:"提案",source:"openspec",exists:!0,path:"openspec/changes/archive/2025-11-02-add-dark-mode/proposal.md"},{key:"design",label:"设计文档",source:"openspec",exists:!0,path:"openspec/changes/archive/2025-11-02-add-dark-mode/design.md"},{key:"tasks",label:"任务清单",source:"openspec",exists:!0,path:"openspec/changes/archive/2025-11-02-add-dark-mode/tasks.md"},{key:"plan",label:"实施计划",source:"superpowers",exists:!0,path:"docs/superpowers/plans/2025-11-01-dark-mode.md"},{key:"verifyReport",label:"验证报告",source:"superpowers",exists:!0,path:"docs/superpowers/reports/2025-11-02-dark-mode-verify.md"}]},verify:{result:"pass",reportExists:!0,summary:"全部断言通过"}},{id:"archive/2025-10-18-refactor-collector",name:"2025-10-18-refactor-collector",displayName:"refactor-collector",status:"archived",path:"openspec/changes/archive/2025-10-18-refactor-collector",workflow:"refactor",phase:"archive",updatedAt:"2025-10-18",archive:{archiveName:"2025-10-18-refactor-collector",originalName:"refactor-collector",archivedAt:"2025-10-18",archivePath:"openspec/changes/archive/2025-10-18-refactor-collector"},tasks:{completed:9,total:9,incomplete:[],sections:[{title:"重构",completed:9,total:9,status:"done"}]},artifacts:{proposal:!0,design:!0,tasks:!0,plan:!0,verifyReport:!0,cometYaml:!0,grouped:[{key:"proposal",label:"提案",source:"openspec",exists:!0,path:"openspec/changes/archive/2025-10-18-refactor-collector/proposal.md"},{key:"design",label:"设计文档",source:"openspec",exists:!0,path:"openspec/changes/archive/2025-10-18-refactor-collector/design.md"},{key:"tasks",label:"任务清单",source:"openspec",exists:!0,path:"openspec/changes/archive/2025-10-18-refactor-collector/tasks.md"},{key:"plan",label:"实施计划",source:"superpowers",exists:!0,path:"docs/superpowers/plans/2025-10-17-refactor-collector.md"},{key:"verifyReport",label:"验证报告",source:"superpowers",exists:!0,path:"docs/superpowers/reports/2025-10-18-collector-verify.md"}]},verify:{result:"pass",reportExists:!0,summary:"全部断言通过"}},{id:"archive/2025-09-30-init-openspec",name:"2025-09-30-init-openspec",displayName:"init-openspec",status:"archived",path:"openspec/changes/archive/2025-09-30-init-openspec",workflow:"chore",phase:"archive",updatedAt:"2025-09-30",archive:{archiveName:"2025-09-30-init-openspec",originalName:"init-openspec",archivedAt:"2025-09-30",archivePath:"openspec/changes/archive/2025-09-30-init-openspec"},tasks:{completed:6,total:6,incomplete:[],sections:[{title:"初始化",completed:6,total:6,status:"done"}]},artifacts:{proposal:!0,design:!0,tasks:!0,plan:!0,verifyReport:!0,cometYaml:!0,grouped:[{key:"proposal",label:"提案",source:"openspec",exists:!0,path:"openspec/changes/archive/2025-09-30-init-openspec/proposal.md"},{key:"design",label:"设计文档",source:"openspec",exists:!0,path:"openspec/changes/archive/2025-09-30-init-openspec/design.md"},{key:"tasks",label:"任务清单",source:"openspec",exists:!0,path:"openspec/changes/archive/2025-09-30-init-openspec/tasks.md"},{key:"plan",label:"实施计划",source:"superpowers",exists:!0,path:"docs/superpowers/plans/2025-09-29-init-openspec.md"},{key:"verifyReport",label:"验证报告",source:"superpowers",exists:!0,path:"docs/superpowers/reports/2025-09-30-openspec-verify.md"}]},verify:{result:"pass",reportExists:!0,summary:"全部断言通过"}}]}};o.changes.active.forEach(r);o.changes.archived.forEach(r);const c={compose:{summary:{drafts:3,evalPassed:2,reviewApproved:1,targetPlatforms:3},bundles:[{name:"customize-comet-release-checks",status:"review-approved",currentStep:"publish",mode:"optimize",goal:"定制 /comet:在验证前插入发布准备、README 同步和 Changelog 检查。",engineMode:"deterministic",runnerMode:"change",reusedSkills:[{skill:"comet",status:"available",sourceCount:1},{skill:"verification-before-completion",status:"available",sourceCount:2},{skill:"finishing-a-development-branch",status:"available",sourceCount:2}],generatedControlPlane:["SKILL.md","reference/workflow-protocol.json","reference/composition-report.md","reference/skill-review.md","comet/eval.yaml","scripts/comet-check.mjs"],requiredConfirmations:[{label:"Skill Creator proposal confirmed",required:!0,confirmed:!0},{label:"Eval result attached",required:!0,confirmed:!0},{label:"Review approved",required:!0,confirmed:!0},{label:"Executable disclosure reviewed",required:!1,confirmed:!1}],callChain:["comet-open","comet-design","release-readiness-check","comet-build","verification-before-completion","comet-archive"],distribution:{readiness:"publishable",plannedFiles:18,executables:3,platforms:[{platform:"Codex",status:"previewed"},{platform:"Claude Code",status:"previewed"},{platform:"Gemini",status:"capability warning"}]}},{name:"create-skill-maker-review-flow",status:"eval-passed",currentStep:"review",mode:"create",goal:"创建 Skill:把需求澄清、作者分工、审阅报告和安装预览串成可恢复流程。",engineMode:"adaptive",runnerMode:"standalone",reusedSkills:[{skill:"brainstorming",status:"available",sourceCount:2},{skill:"writing-skills",status:"available",sourceCount:1},{skill:"skill-creator",status:"available",sourceCount:1}],generatedControlPlane:["reference/authoring-lanes.json","reference/resolved-skills.json","reference/composition-report.md","reference/decision-points.md","scripts/comet-plan.mjs"],requiredConfirmations:[{label:"Resolved Skill choices",required:!0,confirmed:!0},{label:"Authoring lanes complete",required:!0,confirmed:!0},{label:"Run quick eval",required:!0,confirmed:!0}],callChain:["brainstorming","writing-plans","writing-skills","skill-review","install-preview"],distribution:{readiness:"needs review approval",plannedFiles:16,executables:2,platforms:[{platform:"Codex",status:"planned"},{platform:"Claude Code",status:"planned"}]}},{name:"upgrade-review-comments-skill",status:"draft",currentStep:"needs-eval",mode:"optimize",goal:"升级现有 Skill:为 PR 评审意见处理加入“证据优先”和本地验证检查。",engineMode:"deterministic",runnerMode:"change",reusedSkills:[{skill:"receiving-code-review",status:"available",sourceCount:2},{skill:"systematic-debugging",status:"available",sourceCount:2},{skill:"github",status:"ambiguous",sourceCount:3}],generatedControlPlane:["bundle.yaml","reference/resolved-skills.json","comet/checks.yaml"],requiredConfirmations:[{label:"Resolve ambiguous GitHub Skill",required:!0,confirmed:!1},{label:"Generate control plane",required:!0,confirmed:!1},{label:"Run quick eval",required:!0,confirmed:!1}],callChain:["receiving-code-review","systematic-debugging","verification-before-completion"],distribution:{readiness:"blocked by candidate ambiguity",plannedFiles:10,executables:1,platforms:[{platform:"Codex",status:"waiting"}]}}]},eval:{summary:{totalResults:3,passedResults:2,entryPassRate:.91,tokenCount:18640,durationMs:258e3},results:[{name:"customize-comet-release-checks",provider:"comet-eval",level:"full",draftHash:"a".repeat(64),evalManifestHash:"b".repeat(64),tasks:["route-conformance","control-plane","publish-readiness"],treatments:["customize-comet-release-checks"],passAtK:{1:1},weightedScore:{overall:.93},instabilityGap:{overall:.02},failures:[],reports:["eval-report.html"],passed:!0,summary:"Generated package passed route conformance, control-plane validation, and publish readiness.",entries:[{id:"route-conformance",passed:!0,passRate:.96,evidence:["workflow-protocol.json","route-conformance.json"]},{id:"control-plane",passed:!0,passRate:.92,evidence:["comet/eval.yaml","scripts/comet-check.mjs"]},{id:"publish-readiness",passed:!0,passRate:.88,evidence:["reference/skill-review.md","review-summary.json"]}],bundle:{compilePassed:!0,safetyPassed:!0,evidence:["compile.json","hook-disclosure.json"]},benchmark:{cases:18,baselinePassRate:.61,withSkillPassRate:.89,variance:.04,tokenCount:9400,durationMs:142e3}},{name:"create-skill-maker-review-flow",provider:"comet-eval",level:"quick",draftHash:"c".repeat(64),evalManifestHash:"d".repeat(64),tasks:["authoring-lanes","entry-smoke","install-preview"],treatments:["create-skill-maker-review-flow"],passAtK:{1:1},weightedScore:{overall:.9},instabilityGap:{overall:.03},failures:[],reports:["quick-eval-report.html"],passed:!0,summary:"Quick eval passed authoring-lane coverage, entry smoke, and install-preview checks.",entries:[{id:"authoring-lanes",passed:!0,passRate:.9,evidence:["authoring-lanes.json","skill-review.md"]},{id:"install-preview",passed:!0,passRate:.86,evidence:["install-preview.json"]}],bundle:{compilePassed:!0,safetyPassed:!0,evidence:["compile.json","safety.json"]},benchmark:{cases:10,baselinePassRate:.54,withSkillPassRate:.82,tokenCount:5140,durationMs:72e3}},{name:"upgrade-review-comments-skill",provider:"comet-eval",level:"quick",draftHash:"e".repeat(64),evalManifestHash:"f".repeat(64),tasks:["review-comment-intake","candidate-resolution","hook-disclosure"],treatments:["upgrade-review-comments-skill"],passAtK:{1:0},weightedScore:{overall:.58},instabilityGap:{overall:.12},failures:[{task:"candidate-resolution",treatment:"upgrade-review-comments-skill",reason:"GitHub Skill candidate is still ambiguous."},{task:"hook-disclosure",treatment:"upgrade-review-comments-skill",reason:"Hook executable disclosure is missing."}],reports:["quick-eval-report.html"],passed:!1,summary:"Entry smoke found one unresolved GitHub Skill candidate and a missing hook disclosure.",entries:[{id:"review-comment-intake",passed:!0,passRate:.84,evidence:["review-thread-smoke.json"]},{id:"github-routing",passed:!1,passRate:.58,evidence:["ambiguous-target.json"]}],bundle:{compilePassed:!0,safetyPassed:!1,evidence:["compile.json","hook-review-needed.json"]},benchmark:{cases:8,baselinePassRate:.5,withSkillPassRate:.63,tokenCount:4100,durationMs:44e3}}]}};export{c as DEMO_SKILL_VISUALS,o as DEMO_SNAPSHOT};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:#fff;--color-surface:#f5f5f7;--color-surface-warm:#fbfbfd;--color-fg:#1d1d1f;--color-fg-2:#424245;--color-muted:#6e6e73;--color-meta:#6e6e73;--color-border:#d2d2d7;--color-border-soft:#e8e8ed;--color-accent:#0063f8;--color-accent-active:#0052e0;--color-accent-soft:oklab(95.5173% -.00376316 -.0232734);--color-accent-softer:oklab(97.3104% -.00225789 -.013964);--color-success:#16a34a;--color-warn:#c47a06;--color-danger:#dc2626;--color-info:#0063f8;--color-ok-soft:oklab(95.5246% -.0175162 .0104361);--color-warn-soft:oklab(95.7223% .00634364 .0155582);--color-danger-soft:oklab(95.771% .0191149 .00987657);--color-info-soft:oklab(95.5173% -.00376316 -.0232734);--spacing-dashboard:1620px}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{inset-block:0}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.top-5{top:calc(var(--spacing) * 5)}.right-0{right:0}.right-1\/2{right:50%}.right-5{right:calc(var(--spacing) * 5)}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[90\]{z-index:90}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-auto{margin-top:auto}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-full{width:100%;height:100%}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-10{height:calc(var(--spacing) * 10)}.h-\[110px\]{height:110px}.h-full{height:100%}.h-px{height:1px}.min-h-0{min-height:0}.min-h-\[480px\]{min-height:480px}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-4{width:calc(var(--spacing) * 4)}.w-16{width:calc(var(--spacing) * 16)}.w-\[110px\]{width:110px}.w-\[clamp\(180px\,24vw\,300px\)\]{width:clamp(180px,24vw,300px)}.w-\[var\(--rail-w\)\]{width:var(--rail-w)}.w-full{width:100%}.w-px{width:1px}.max-w-dashboard{max-width:var(--spacing-dashboard)}.min-w-0{min-width:0}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:0;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.grid-cols-\[16px_1fr_auto\]{grid-template-columns:16px 1fr auto}.grid-cols-\[minmax\(0\,1fr\)_minmax\(360px\,760px\)\]{grid-template-columns:minmax(0,1fr) minmax(360px,760px)}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-px>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(1px * var(--tw-space-y-reverse));margin-block-end:calc(1px * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2\.5{column-gap:calc(var(--spacing) * 2.5)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded-\[7px\]{border-radius:7px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-accent{border-color:var(--color-accent)}.border-accent\/30{border-color:#0063f84d}@supports (color:color-mix(in lab,red,red)){.border-accent\/30{border-color:color-mix(in oklab,var(--color-accent) 30%,transparent)}}.border-border{border-color:var(--color-border)}.border-border-soft{border-color:var(--color-border-soft)}.border-transparent{border-color:#0000}.bg-accent{background-color:var(--color-accent)}.bg-accent-soft{background-color:var(--color-accent-soft)}.bg-accent-softer{background-color:var(--color-accent-softer)}.bg-bg{background-color:var(--color-bg)}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black) 30%,transparent)}}.bg-border{background-color:var(--color-border)}.bg-border-soft{background-color:var(--color-border-soft)}.bg-danger-soft{background-color:var(--color-danger-soft)}.bg-fg{background-color:var(--color-fg)}.bg-info-soft{background-color:var(--color-info-soft)}.bg-ok-soft{background-color:var(--color-ok-soft)}.bg-success{background-color:var(--color-success)}.bg-surface{background-color:var(--color-surface)}.bg-surface-warm{background-color:var(--color-surface-warm)}.bg-surface\/80{background-color:#f5f5f7cc}@supports (color:color-mix(in lab,red,red)){.bg-surface\/80{background-color:color-mix(in oklab,var(--color-surface) 80%,transparent)}}.bg-warn-soft{background-color:var(--color-warn-soft)}.p-1{padding:var(--spacing)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-10{padding:calc(var(--spacing) * 10)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[18px\]{font-size:18px}.text-\[26px\]{font-size:26px}.text-\[28px\]{font-size:28px}.text-\[40px\]{font-size:40px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.text-accent{color:var(--color-accent)}.text-accent-active{color:var(--color-accent-active)}.text-bg{color:var(--color-bg)}.text-danger{color:var(--color-danger)}.text-fg{color:var(--color-fg)}.text-fg-2{color:var(--color-fg-2)}.text-info{color:var(--color-info)}.text-meta{color:var(--color-meta)}.text-muted{color:var(--color-muted)}.text-success{color:var(--color-success)}.text-warn{color:var(--color-warn)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-50{opacity:.5}.shadow-\[-20px_0_44px_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:-20px 0 44px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-card{--tw-shadow:none;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-raised{--tw-shadow:0 12px 32px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.outline-none{--tw-outline-style:none;outline-style:none}.first\:mt-2:first-child{margin-top:calc(var(--spacing) * 2)}@media(hover:hover){.hover\:border-border-soft:hover{border-color:var(--color-border-soft)}.hover\:bg-bg:hover{background-color:var(--color-bg)}.hover\:bg-surface:hover{background-color:var(--color-surface)}.hover\:text-fg:hover{color:var(--color-fg)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:border-accent:focus{border-color:var(--color-accent)}.focus\:ring-4:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-accent\/20:focus{--tw-ring-color:#0063f833}@supports (color:color-mix(in lab,red,red)){.focus\:ring-accent\/20:focus{--tw-ring-color:color-mix(in oklab, var(--color-accent) 20%, transparent)}}@media not all and (min-width:40rem){.max-sm\:hidden{display:none}.max-sm\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}}@media(min-width:40rem){.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media(min-width:48rem){.md\:inline-flex{display:inline-flex}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[1fr_340px\]{grid-template-columns:1fr 340px}}@media(min-width:64rem){.lg\:sticky{position:sticky}.lg\:top-0{top:0}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:h-screen{height:100vh}.lg\:translate-x-0{--tw-translate-x:0;translate:var(--tw-translate-x) var(--tw-translate-y)}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-\[var\(--rail-w\)_1fr\]{grid-template-columns:var(--rail-w) 1fr}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}}@media(min-width:80rem){.xl\:grid-cols-\[320px_minmax\(620px\,940px\)_320px\]{grid-template-columns:320px minmax(620px,940px) 320px}}}:root[data-theme=dark],:host[data-theme=dark]{--color-bg:#0b0e13;--color-surface:#181b1f;--color-surface-warm:#22252e;--color-fg:#d8dee9;--color-fg-2:#b0b8c4;--color-muted:#7b818a;--color-meta:#8e939e;--color-border:#343740;--color-border-soft:#282b33;--color-accent:#6e9fff;--color-accent-active:#8bb4ff;--color-accent-soft:oklab(26.1466% -.00500724 -.0363311);--color-accent-softer:oklab(22.8611% -.00397309 -.0280616);--color-success:#73bf69;--color-warn:#ff9830;--color-danger:#f2495c;--color-info:#6e9fff;--color-ok-soft:oklab(26.5788% -.0214788 .00639551);--color-warn-soft:oklab(27.2505% .0131415 .0162306);--color-danger-soft:oklab(23.6018% .0273997 .000079521);--color-info-soft:oklab(24.5038% -.00449016 -.0321963);--shadow-raised:0 8px 32px #00000080;--shadow-card:none}:root{--rail-w:248px;color:var(--color-fg);background:var(--color-surface);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-family:Inter,Inter var,sans-serif}:root,:root *{transition-property:color,background-color,border-color,box-shadow;transition-duration:.15s;transition-timing-function:ease-out}:root button:active,:root input:active,:root .no-transition{transition:none!important}html{scrollbar-gutter:stable;overflow-y:scroll}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-muted)}body{min-width:320px;margin:0}button,input{font:inherit}.max-w-dashboard{max-width:var(--spacing-dashboard)}.artifact-markdown{color:var(--color-fg-2);font-size:14px;line-height:1.65}.artifact-markdown h1,.artifact-markdown h2,.artifact-markdown h3,.artifact-markdown h4{color:var(--color-fg);margin:1.25rem 0 .5rem;font-weight:700;line-height:1.2}.artifact-markdown h1{font-size:1.75rem}.artifact-markdown h2{font-size:1.35rem}.artifact-markdown h3,.artifact-markdown h4{font-size:1rem}.artifact-markdown p{margin:.65rem 0}.artifact-markdown ul{margin:.65rem 0;padding-left:1.25rem;list-style:outside}.artifact-markdown li{margin:.35rem 0}.artifact-markdown code{background:var(--color-surface);border-radius:6px;padding:.12rem .35rem;font-family:Inter,Inter var,sans-serif;font-size:.92em}.artifact-markdown pre{color:#f5f5f7;background:#1d1d1f;border-radius:12px;margin:.9rem 0;padding:1rem;overflow:auto}:root[data-theme=dark] .artifact-markdown pre,:host[data-theme=dark] .artifact-markdown pre{color:#d8dee9;background:#14171c}:root[data-theme=dark] .artifact-markdown code,:host[data-theme=dark] .artifact-markdown code{background:#282b33}:root[data-theme=dark] .artifact-markdown h1,:root[data-theme=dark] .artifact-markdown h2,:root[data-theme=dark] .artifact-markdown h3,:root[data-theme=dark] .artifact-markdown h4,:host[data-theme=dark] .artifact-markdown h1,:host[data-theme=dark] .artifact-markdown h2,:host[data-theme=dark] .artifact-markdown h3,:host[data-theme=dark] .artifact-markdown h4{color:#e8ecf2}:root[data-theme=dark] .artifact-markdown a,:host[data-theme=dark] .artifact-markdown a{color:#6e9fff}:root[data-theme=dark] .artifact-markdown blockquote,:host[data-theme=dark] .artifact-markdown blockquote{color:#7b818a;border-left-color:#343740}:root[data-theme=dark] .artifact-markdown hr,:host[data-theme=dark] .artifact-markdown hr{border-color:#343740}:root[data-theme=dark] ::-webkit-scrollbar{width:8px;height:8px}:host[data-theme=dark] ::-webkit-scrollbar{width:8px;height:8px}:root[data-theme=dark] ::-webkit-scrollbar-track{background:#0b0e13}:host[data-theme=dark] ::-webkit-scrollbar-track{background:#0b0e13}:root[data-theme=dark] ::-webkit-scrollbar-thumb{background:#343740;border-radius:4px}:host[data-theme=dark] ::-webkit-scrollbar-thumb{background:#343740;border-radius:4px}:root[data-theme=dark] ::-webkit-scrollbar-thumb:hover{background:#4a4d56}:host[data-theme=dark] ::-webkit-scrollbar-thumb:hover{background:#4a4d56}:root[data-theme=dark] .summary-card-glow,:host[data-theme=dark] .summary-card-glow{box-shadow:0 0 0 1px #6cb6ff1a}:root[data-theme=dark] .accent-glow,:host[data-theme=dark] .accent-glow{box-shadow:0 0 12px #6cb6ff26}.artifact-markdown pre code{color:inherit;background:0 0;padding:0}.toast{z-index:100;opacity:0;pointer-events:none;background:var(--color-fg);color:var(--color-bg);border-radius:999px;padding:11px 20px;font-size:14px;transition:opacity .22s,transform .22s;position:fixed;bottom:28px;left:50%;transform:translate(-50%,20px)}.toast.show{opacity:1;transform:translate(-50%)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}
|