@litfamily/litopencode 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +8 -0
- package/ATTRIBUTION.md +56 -0
- package/CHANGELOG.md +267 -0
- package/CODE_OF_CONDUCT.md +30 -0
- package/CONTRIBUTING.md +82 -0
- package/LICENSE +21 -0
- package/README-Ko-KR.md +252 -0
- package/README.md +252 -0
- package/SECURITY.md +36 -0
- package/SUPPORT.md +37 -0
- package/bin/litopencode +3 -0
- package/bin/litopencode.cjs +10 -0
- package/dist/activation-managed-prompts.d.ts +2 -0
- package/dist/activation-managed-prompts.js +51 -0
- package/dist/activation-primary-prompts.d.ts +2 -0
- package/dist/activation-primary-prompts.js +176 -0
- package/dist/activation-probe.d.ts +3 -0
- package/dist/activation-probe.js +19 -0
- package/dist/activation-prompt-utils.d.ts +6 -0
- package/dist/activation-prompt-utils.js +36 -0
- package/dist/activation-routing.d.ts +5 -0
- package/dist/activation-routing.js +340 -0
- package/dist/activation-workflow-prompts.d.ts +26 -0
- package/dist/activation-workflow-prompts.js +295 -0
- package/dist/activation.d.ts +24 -0
- package/dist/activation.js +152 -0
- package/dist/agents/defaults.d.ts +15 -0
- package/dist/agents/defaults.js +112 -0
- package/dist/agents/registry.d.ts +65 -0
- package/dist/agents/registry.js +319 -0
- package/dist/agents/specialists.d.ts +49 -0
- package/dist/agents/specialists.js +307 -0
- package/dist/agents/types.d.ts +55 -0
- package/dist/agents/types.js +4 -0
- package/dist/agents.d.ts +4 -0
- package/dist/agents.js +3 -0
- package/dist/benchmark.d.ts +94 -0
- package/dist/benchmark.js +172 -0
- package/dist/bounded-authority-hooks.d.ts +19 -0
- package/dist/bounded-authority-hooks.js +157 -0
- package/dist/bounded-authority.d.ts +184 -0
- package/dist/bounded-authority.js +825 -0
- package/dist/cache-metrics.d.ts +54 -0
- package/dist/cache-metrics.js +81 -0
- package/dist/cli/args.d.ts +5 -0
- package/dist/cli/args.js +415 -0
- package/dist/cli/auto-update.d.ts +117 -0
- package/dist/cli/auto-update.js +604 -0
- package/dist/cli/command-alias-ownership.d.ts +2 -0
- package/dist/cli/command-alias-ownership.js +14 -0
- package/dist/cli/command-aliases.d.ts +12 -0
- package/dist/cli/command-aliases.js +112 -0
- package/dist/cli/doctor.d.ts +2 -0
- package/dist/cli/doctor.js +175 -0
- package/dist/cli/host-capabilities.d.ts +12 -0
- package/dist/cli/host-capabilities.js +25 -0
- package/dist/cli/host-limits.d.ts +21 -0
- package/dist/cli/host-limits.js +83 -0
- package/dist/cli/install-config.d.ts +13 -0
- package/dist/cli/install-config.js +201 -0
- package/dist/cli/install-report.d.ts +2 -0
- package/dist/cli/install-report.js +180 -0
- package/dist/cli/install-tui.d.ts +12 -0
- package/dist/cli/install-tui.js +174 -0
- package/dist/cli/install.d.ts +2 -0
- package/dist/cli/install.js +264 -0
- package/dist/cli/json.d.ts +4 -0
- package/dist/cli/json.js +31 -0
- package/dist/cli/loop.d.ts +3 -0
- package/dist/cli/loop.js +135 -0
- package/dist/cli/lsp-capability.d.ts +17 -0
- package/dist/cli/lsp-capability.js +92 -0
- package/dist/cli/managed-skill-assets.d.ts +23 -0
- package/dist/cli/managed-skill-assets.js +117 -0
- package/dist/cli/model-catalog.d.ts +21 -0
- package/dist/cli/model-catalog.js +107 -0
- package/dist/cli/model-policy.d.ts +3 -0
- package/dist/cli/model-policy.js +143 -0
- package/dist/cli/model-routing.d.ts +5 -0
- package/dist/cli/model-routing.js +208 -0
- package/dist/cli/native-canonical-backup.d.ts +9 -0
- package/dist/cli/native-canonical-backup.js +96 -0
- package/dist/cli/native-canonical-cache.d.ts +9 -0
- package/dist/cli/native-canonical-cache.js +37 -0
- package/dist/cli/native-skill-install.d.ts +2 -0
- package/dist/cli/native-skill-install.js +128 -0
- package/dist/cli/native-skill-integrity.d.ts +25 -0
- package/dist/cli/native-skill-integrity.js +178 -0
- package/dist/cli/native-skill-tree.d.ts +12 -0
- package/dist/cli/native-skill-tree.js +104 -0
- package/dist/cli/native-skills.d.ts +22 -0
- package/dist/cli/native-skills.js +105 -0
- package/dist/cli/plugin-mutation.d.ts +4 -0
- package/dist/cli/plugin-mutation.js +89 -0
- package/dist/cli/scientific-visualization-dependencies.d.ts +18 -0
- package/dist/cli/scientific-visualization-dependencies.js +91 -0
- package/dist/cli/skill-loop.d.ts +3 -0
- package/dist/cli/skill-loop.js +649 -0
- package/dist/cli/types.d.ts +188 -0
- package/dist/cli/types.js +1 -0
- package/dist/cli/update-check.d.ts +2 -0
- package/dist/cli/update-check.js +15 -0
- package/dist/cli/update-notifier.d.ts +70 -0
- package/dist/cli/update-notifier.js +717 -0
- package/dist/cli/vendor-path-migration.d.ts +9 -0
- package/dist/cli/vendor-path-migration.js +96 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.js +250 -0
- package/dist/commands.d.ts +331 -0
- package/dist/commands.js +600 -0
- package/dist/config-parser.d.ts +5 -0
- package/dist/config-parser.js +274 -0
- package/dist/config.d.ts +72 -0
- package/dist/config.js +157 -0
- package/dist/deliverable-hedge-guard.d.ts +26 -0
- package/dist/deliverable-hedge-guard.js +302 -0
- package/dist/durable-plan.d.ts +23 -0
- package/dist/durable-plan.js +349 -0
- package/dist/features.d.ts +828 -0
- package/dist/features.js +1109 -0
- package/dist/hooks.d.ts +17 -0
- package/dist/hooks.js +83 -0
- package/dist/ignition.d.ts +14 -0
- package/dist/ignition.js +33 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.js +30 -0
- package/dist/inert-data.d.ts +2 -0
- package/dist/inert-data.js +13 -0
- package/dist/knowledge.d.ts +98 -0
- package/dist/knowledge.js +961 -0
- package/dist/ledger.d.ts +181 -0
- package/dist/ledger.js +1179 -0
- package/dist/lit-fetch-classify.d.ts +8 -0
- package/dist/lit-fetch-classify.js +107 -0
- package/dist/lit-fetch-content.d.ts +2 -0
- package/dist/lit-fetch-content.js +43 -0
- package/dist/lit-fetch-http.d.ts +10 -0
- package/dist/lit-fetch-http.js +82 -0
- package/dist/lit-fetch-result.d.ts +2 -0
- package/dist/lit-fetch-result.js +65 -0
- package/dist/lit-fetch-ssrf.d.ts +9 -0
- package/dist/lit-fetch-ssrf.js +77 -0
- package/dist/lit-fetch-url.d.ts +3 -0
- package/dist/lit-fetch-url.js +28 -0
- package/dist/lit-fetch.d.ts +69 -0
- package/dist/lit-fetch.js +84 -0
- package/dist/lit-mark.d.ts +17 -0
- package/dist/lit-mark.js +129 -0
- package/dist/logger.d.ts +9 -0
- package/dist/logger.js +21 -0
- package/dist/model-route-policy.d.ts +25 -0
- package/dist/model-route-policy.js +129 -0
- package/dist/reader-facing-output.d.ts +3 -0
- package/dist/reader-facing-output.js +28 -0
- package/dist/rules/discovery.d.ts +36 -0
- package/dist/rules/discovery.js +270 -0
- package/dist/rules/engine.d.ts +43 -0
- package/dist/rules/engine.js +236 -0
- package/dist/rules/frontmatter.d.ts +16 -0
- package/dist/rules/frontmatter.js +179 -0
- package/dist/rules/glob.d.ts +12 -0
- package/dist/rules/glob.js +233 -0
- package/dist/rules/hooks.d.ts +25 -0
- package/dist/rules/hooks.js +75 -0
- package/dist/rules/output-style.d.ts +1 -0
- package/dist/rules/output-style.js +20 -0
- package/dist/scientific-visualization-banner.d.ts +1 -0
- package/dist/scientific-visualization-banner.js +2 -0
- package/dist/search-workflow-ideas.d.ts +67 -0
- package/dist/search-workflow-ideas.js +128 -0
- package/dist/secret-shapes.d.ts +9 -0
- package/dist/secret-shapes.js +63 -0
- package/dist/server.d.ts +6 -0
- package/dist/server.js +129 -0
- package/dist/session-lineage.d.ts +8 -0
- package/dist/session-lineage.js +12 -0
- package/dist/skill-loop/apply.d.ts +19 -0
- package/dist/skill-loop/apply.js +483 -0
- package/dist/skill-loop/config.d.ts +50 -0
- package/dist/skill-loop/config.js +215 -0
- package/dist/skill-loop/curator.d.ts +18 -0
- package/dist/skill-loop/curator.js +232 -0
- package/dist/skill-loop/ledger.d.ts +39 -0
- package/dist/skill-loop/ledger.js +344 -0
- package/dist/skill-loop/proposals.d.ts +48 -0
- package/dist/skill-loop/proposals.js +290 -0
- package/dist/skill-loop/storage.d.ts +72 -0
- package/dist/skill-loop/storage.js +817 -0
- package/dist/skill-loop/time.d.ts +2 -0
- package/dist/skill-loop/time.js +23 -0
- package/dist/skill-loop/transaction.d.ts +62 -0
- package/dist/skill-loop/transaction.js +836 -0
- package/dist/skill-loop/usage.d.ts +31 -0
- package/dist/skill-loop/usage.js +146 -0
- package/dist/skill-observer.d.ts +22 -0
- package/dist/skill-observer.js +1154 -0
- package/dist/skill-renames.d.ts +5 -0
- package/dist/skill-renames.js +8 -0
- package/dist/skills.d.ts +307 -0
- package/dist/skills.js +450 -0
- package/dist/stable-identity.d.ts +14 -0
- package/dist/stable-identity.js +15 -0
- package/dist/state.d.ts +25 -0
- package/dist/state.js +38 -0
- package/dist/strict-json.d.ts +2 -0
- package/dist/strict-json.js +94 -0
- package/dist/tool-guards.d.ts +34 -0
- package/dist/tool-guards.js +210 -0
- package/dist/tool-kit.d.ts +32 -0
- package/dist/tool-kit.js +75 -0
- package/dist/tools.d.ts +43 -0
- package/dist/tools.js +381 -0
- package/dist/uiux-visual-catalog.d.ts +50 -0
- package/dist/uiux-visual-catalog.js +103 -0
- package/dist/user-facing-markdown.d.ts +5 -0
- package/dist/user-facing-markdown.js +93 -0
- package/dist/workflow-families.d.ts +16 -0
- package/dist/workflow-families.js +95 -0
- package/docs/assets/cover.webp +0 -0
- package/docs/assets/litopencode-continuity-1600.webp +0 -0
- package/docs/assets/litopencode-ignition-1600.webp +0 -0
- package/docs/assets/readme/badge-license.svg +1 -0
- package/docs/assets/readme/badge-version.svg +1 -0
- package/docs/assets/readme/litopencode-clay-icon.png +0 -0
- package/docs/assets/readme/litopencode-wordmark.svg +5 -0
- package/docs/lit-mark.md +46 -0
- package/docs/migration.md +162 -0
- package/docs/privacy.md +82 -0
- package/docs/reference-Ko-KR.md +309 -0
- package/docs/reference.md +444 -0
- package/output-styles/asd-ste100-ko.md +41 -0
- package/output-styles/asd-ste100.md +40 -0
- package/output-styles/eli5-ko.md +13 -0
- package/output-styles/eli5.md +11 -0
- package/package.json +57 -0
- package/qa/fixtures/litfamily-harness-speed-v1.json +38 -0
- package/qa/harness-speed-contract.mjs +209 -0
- package/qa/harness-speed-v2-contract.mjs +213 -0
- package/qa/harness-speed-verdict.mjs +105 -0
- package/skills/agent-roster/SKILL.md +262 -0
- package/skills/autoconference/LICENSE +21 -0
- package/skills/autoconference/PROVENANCE.md +20 -0
- package/skills/autoconference/SKILL.md +125 -0
- package/skills/autoconference/assets/conference_template.md +76 -0
- package/skills/autoconference/assets/report_template.md +53 -0
- package/skills/autoconference/assets/synthesis_template.md +39 -0
- package/skills/autoconference/modes/analyze.md +255 -0
- package/skills/autoconference/modes/core.md +112 -0
- package/skills/autoconference/modes/debate.md +373 -0
- package/skills/autoconference/modes/plan.md +310 -0
- package/skills/autoconference/modes/resume.md +48 -0
- package/skills/autoconference/modes/ship.md +57 -0
- package/skills/autoconference/modes/survey.md +109 -0
- package/skills/autoconference/references/agent-prompts.md +134 -0
- package/skills/autoconference/references/conference-protocol.md +102 -0
- package/skills/autoconference/references/convergence-guide.md +167 -0
- package/skills/autoconference/references/core-principles.md +83 -0
- package/skills/autoconference/references/crash-recovery.md +104 -0
- package/skills/autoconference/references/results-logging.md +198 -0
- package/skills/autoconference/references/upstream-family-contract.md +130 -0
- package/skills/autoconference/references/visualization-guide.md +105 -0
- package/skills/autoconference/scripts/check_conference.sh +371 -0
- package/skills/autoconference/scripts/init_conference.py +625 -0
- package/skills/autoconference/scripts/style_presets.py +104 -0
- package/skills/autoresearch/LICENSE +21 -0
- package/skills/autoresearch/PROVENANCE.md +20 -0
- package/skills/autoresearch/SKILL.md +131 -0
- package/skills/autoresearch/assets/report_template.md +50 -0
- package/skills/autoresearch/assets/research_template.md +38 -0
- package/skills/autoresearch/assets/results_template.tsv +1 -0
- package/skills/autoresearch/modes/core.md +216 -0
- package/skills/autoresearch/modes/debug.md +235 -0
- package/skills/autoresearch/modes/fix.md +173 -0
- package/skills/autoresearch/modes/learn.md +91 -0
- package/skills/autoresearch/modes/plan.md +291 -0
- package/skills/autoresearch/modes/predict.md +266 -0
- package/skills/autoresearch/modes/reason.md +170 -0
- package/skills/autoresearch/modes/scenario.md +164 -0
- package/skills/autoresearch/modes/security.md +282 -0
- package/skills/autoresearch/modes/ship.md +49 -0
- package/skills/autoresearch/references/core-principles.md +80 -0
- package/skills/autoresearch/references/evaluator-contract.md +126 -0
- package/skills/autoresearch/references/investigation-techniques.md +205 -0
- package/skills/autoresearch/references/owasp-checklist.md +161 -0
- package/skills/autoresearch/references/persona-templates.md +232 -0
- package/skills/autoresearch/references/results-logging.md +96 -0
- package/skills/autoresearch/references/scenario-dimensions.md +178 -0
- package/skills/autoresearch/references/stride-model.md +196 -0
- package/skills/autoresearch/references/stuck-detection.md +107 -0
- package/skills/autoresearch/references/type-checklists.md +163 -0
- package/skills/autoresearch/references/upstream-family-contract.md +125 -0
- package/skills/autoresearch/references/visualization-guide.md +95 -0
- package/skills/autoresearch/scripts/check_progress.sh +272 -0
- package/skills/autoresearch/scripts/init_research.py +330 -0
- package/skills/autoresearch/scripts/run_with_deadline.py +164 -0
- package/skills/autoresearch/scripts/style_presets.py +104 -0
- package/skills/browser-drive/SKILL.md +133 -0
- package/skills/browser-drive/references/snapshot-act-loop.md +37 -0
- package/skills/browser-drive/scripts/capability-probe.mjs +262 -0
- package/skills/comment-checker/SKILL.md +171 -0
- package/skills/debugging/SKILL.md +202 -0
- package/skills/debugging/references/README.md +15 -0
- package/skills/debugging/references/escalation.md +43 -0
- package/skills/debugging/references/runtimes/README.md +17 -0
- package/skills/debugging/references/runtimes/bundled-js-binary.md +44 -0
- package/skills/debugging/references/runtimes/go.md +37 -0
- package/skills/debugging/references/runtimes/native-binary.md +44 -0
- package/skills/debugging/references/runtimes/node.md +43 -0
- package/skills/debugging/references/runtimes/python.md +41 -0
- package/skills/debugging/references/runtimes/rust.md +37 -0
- package/skills/debugging/references/tools.md +72 -0
- package/skills/deep-interview/SKILL.md +201 -0
- package/skills/doctor-installer/SKILL.md +252 -0
- package/skills/durable-litgoal/SKILL.md +248 -0
- package/skills/frontend-ui-ux/SKILL.md +70 -0
- package/skills/frontend-ui-ux/data/LICENSE +21 -0
- package/skills/frontend-ui-ux/data/PROVENANCE.json +1088 -0
- package/skills/frontend-ui-ux/data/THIRD-PARTY-NOTICE.txt +14 -0
- package/skills/frontend-ui-ux/data/design-intelligence.json +1 -0
- package/skills/frontend-ui-ux/references/_canonical-corpus/ATTRIBUTION.md +217 -0
- package/skills/frontend-ui-ux/references/_canonical-corpus/LICENSE +21 -0
- package/skills/frontend-ui-ux/references/_canonical-corpus/LICENSE-Apache-2.0.txt +201 -0
- package/skills/frontend-ui-ux/references/_canonical-corpus/manifest.json +867 -0
- package/skills/frontend-ui-ux/references/adaptive-layout.md +85 -0
- package/skills/frontend-ui-ux/references/brand-and-imagery.md +79 -0
- package/skills/frontend-ui-ux/references/complete-contract.md +282 -0
- package/skills/frontend-ui-ux/references/composition.md +87 -0
- package/skills/frontend-ui-ux/references/creative-directions.md +83 -0
- package/skills/frontend-ui-ux/references/design/README.md +248 -0
- package/skills/frontend-ui-ux/references/design/_INDEX.md +191 -0
- package/skills/frontend-ui-ux/references/design/airbnb.md +393 -0
- package/skills/frontend-ui-ux/references/design/airtable.md +92 -0
- package/skills/frontend-ui-ux/references/design/apple.md +250 -0
- package/skills/frontend-ui-ux/references/design/aside.md +209 -0
- package/skills/frontend-ui-ux/references/design/binance.md +348 -0
- package/skills/frontend-ui-ux/references/design/bmw.md +183 -0
- package/skills/frontend-ui-ux/references/design/brutalist-skill.md +92 -0
- package/skills/frontend-ui-ux/references/design/bugatti.md +271 -0
- package/skills/frontend-ui-ux/references/design/cal.md +262 -0
- package/skills/frontend-ui-ux/references/design/claude.md +315 -0
- package/skills/frontend-ui-ux/references/design/clay.md +307 -0
- package/skills/frontend-ui-ux/references/design/clickhouse.md +284 -0
- package/skills/frontend-ui-ux/references/design/clone-from-url.md +65 -0
- package/skills/frontend-ui-ux/references/design/cohere.md +269 -0
- package/skills/frontend-ui-ux/references/design/coinbase.md +132 -0
- package/skills/frontend-ui-ux/references/design/composio.md +310 -0
- package/skills/frontend-ui-ux/references/design/cursor.md +312 -0
- package/skills/frontend-ui-ux/references/design/design-system-architecture.md +244 -0
- package/skills/frontend-ui-ux/references/design/elevenlabs.md +268 -0
- package/skills/frontend-ui-ux/references/design/expo.md +284 -0
- package/skills/frontend-ui-ux/references/design/ferrari.md +317 -0
- package/skills/frontend-ui-ux/references/design/figma.md +223 -0
- package/skills/frontend-ui-ux/references/design/framer.md +249 -0
- package/skills/frontend-ui-ux/references/design/gpt-tasteskill.md +74 -0
- package/skills/frontend-ui-ux/references/design/hashicorp.md +281 -0
- package/skills/frontend-ui-ux/references/design/ibm.md +335 -0
- package/skills/frontend-ui-ux/references/design/image-to-code-skill.md +1228 -0
- package/skills/frontend-ui-ux/references/design/imagegen-brandkit.md +798 -0
- package/skills/frontend-ui-ux/references/design/imagegen-frontend-mobile.md +1465 -0
- package/skills/frontend-ui-ux/references/design/imagegen-frontend-web.md +987 -0
- package/skills/frontend-ui-ux/references/design/intercom.md +149 -0
- package/skills/frontend-ui-ux/references/design/kraken.md +128 -0
- package/skills/frontend-ui-ux/references/design/lamborghini.md +291 -0
- package/skills/frontend-ui-ux/references/design/layout-skill.md +107 -0
- package/skills/frontend-ui-ux/references/design/lazyweb.md +77 -0
- package/skills/frontend-ui-ux/references/design/linear.app.md +370 -0
- package/skills/frontend-ui-ux/references/design/lovable.md +301 -0
- package/skills/frontend-ui-ux/references/design/mastercard.md +368 -0
- package/skills/frontend-ui-ux/references/design/meta.md +369 -0
- package/skills/frontend-ui-ux/references/design/minimalist-skill.md +85 -0
- package/skills/frontend-ui-ux/references/design/minimax.md +260 -0
- package/skills/frontend-ui-ux/references/design/mintlify.md +329 -0
- package/skills/frontend-ui-ux/references/design/miro.md +111 -0
- package/skills/frontend-ui-ux/references/design/mistral.ai.md +264 -0
- package/skills/frontend-ui-ux/references/design/mongodb.md +269 -0
- package/skills/frontend-ui-ux/references/design/nike.md +366 -0
- package/skills/frontend-ui-ux/references/design/notion.md +312 -0
- package/skills/frontend-ui-ux/references/design/nvidia.md +296 -0
- package/skills/frontend-ui-ux/references/design/ollama.md +270 -0
- package/skills/frontend-ui-ux/references/design/opencode.ai.md +284 -0
- package/skills/frontend-ui-ux/references/design/output-skill.md +49 -0
- package/skills/frontend-ui-ux/references/design/pinterest.md +233 -0
- package/skills/frontend-ui-ux/references/design/playstation.md +367 -0
- package/skills/frontend-ui-ux/references/design/posthog.md +259 -0
- package/skills/frontend-ui-ux/references/design/raycast.md +271 -0
- package/skills/frontend-ui-ux/references/design/react-dev-tooling-skill.md +230 -0
- package/skills/frontend-ui-ux/references/design/redesign-skill.md +178 -0
- package/skills/frontend-ui-ux/references/design/renault.md +314 -0
- package/skills/frontend-ui-ux/references/design/replicate.md +264 -0
- package/skills/frontend-ui-ux/references/design/resend.md +306 -0
- package/skills/frontend-ui-ux/references/design/revolut.md +188 -0
- package/skills/frontend-ui-ux/references/design/runwayml.md +247 -0
- package/skills/frontend-ui-ux/references/design/sanity.md +360 -0
- package/skills/frontend-ui-ux/references/design/sentry.md +265 -0
- package/skills/frontend-ui-ux/references/design/shopify.md +353 -0
- package/skills/frontend-ui-ux/references/design/soft-skill.md +98 -0
- package/skills/frontend-ui-ux/references/design/spacex.md +197 -0
- package/skills/frontend-ui-ux/references/design/spotify.md +249 -0
- package/skills/frontend-ui-ux/references/design/starbucks.md +583 -0
- package/skills/frontend-ui-ux/references/design/stitch-design-example.md +121 -0
- package/skills/frontend-ui-ux/references/design/stitch-skill.md +184 -0
- package/skills/frontend-ui-ux/references/design/stripe.md +325 -0
- package/skills/frontend-ui-ux/references/design/supabase.md +258 -0
- package/skills/frontend-ui-ux/references/design/superhuman.md +255 -0
- package/skills/frontend-ui-ux/references/design/taste-skill.md +1206 -0
- package/skills/frontend-ui-ux/references/design/tesla.md +289 -0
- package/skills/frontend-ui-ux/references/design/theverge.md +342 -0
- package/skills/frontend-ui-ux/references/design/together.ai.md +266 -0
- package/skills/frontend-ui-ux/references/design/uber.md +298 -0
- package/skills/frontend-ui-ux/references/design/vercel.md +313 -0
- package/skills/frontend-ui-ux/references/design/vodafone.md +426 -0
- package/skills/frontend-ui-ux/references/design/voltagent.md +326 -0
- package/skills/frontend-ui-ux/references/design/warp.md +256 -0
- package/skills/frontend-ui-ux/references/design/webflow.md +95 -0
- package/skills/frontend-ui-ux/references/design/wired.md +281 -0
- package/skills/frontend-ui-ux/references/design/wise.md +176 -0
- package/skills/frontend-ui-ux/references/design/x.ai.md +260 -0
- package/skills/frontend-ui-ux/references/design/zapier.md +331 -0
- package/skills/frontend-ui-ux/references/designpowers/EVIDENCE.md +97 -0
- package/skills/frontend-ui-ux/references/designpowers/README.md +48 -0
- package/skills/frontend-ui-ux/references/designpowers/UPSTREAM.md +80 -0
- package/skills/frontend-ui-ux/references/designpowers/lane-a-direction.md +64 -0
- package/skills/frontend-ui-ux/references/designpowers/lane-b-execution.md +65 -0
- package/skills/frontend-ui-ux/references/designpowers/lane-c-review.md +65 -0
- package/skills/frontend-ui-ux/references/designpowers/lane-d-memory.md +83 -0
- package/skills/frontend-ui-ux/references/designpowers/orchestration.md +80 -0
- package/skills/frontend-ui-ux/references/designpowers/routing.md +79 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/LICENSE +21 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/content-writer.md +132 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-builder.md +109 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-critic.md +89 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-lead.md +113 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-scout.md +78 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-strategist.md +121 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/motion-designer.md +120 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/accessible-content/reference.md +101 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/adaptive-interfaces/reference.md +109 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/cognitive-accessibility/reference.md +107 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debate/reference.md +199 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debt-tracker/reference.md +174 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-handoff/reference.md +125 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-md/reference.md +106 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-retrospective/reference.md +266 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-review/reference.md +123 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-system-alignment/reference.md +120 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/designpowers-critique/reference.md +164 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/heuristic-evaluation/reference.md +85 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/inclusive-personas/reference.md +98 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/inspiration-scouting/reference.md +165 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/interaction-design/reference.md +122 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/motion-choreography/reference.md +81 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/research-planning/reference.md +96 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/responsive-patterns/reference.md +77 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/synthetic-user-testing/reference.md +192 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-feedback/reference.md +165 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-report/reference.md +78 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/token-architecture/reference.md +75 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/ui-composition/reference.md +117 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/usability-testing/reference.md +78 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/verification-before-shipping/reference.md +125 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/voice-and-tone/reference.md +79 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/writing-design-plans/reference.md +119 -0
- package/skills/frontend-ui-ux/references/evidence-review.md +103 -0
- package/skills/frontend-ui-ux/references/implementation-platforms.md +94 -0
- package/skills/frontend-ui-ux/references/inclusive-interface.md +85 -0
- package/skills/frontend-ui-ux/references/interaction-motion.md +93 -0
- package/skills/frontend-ui-ux/references/operating-lanes.md +80 -0
- package/skills/frontend-ui-ux/references/perfection/README.md +160 -0
- package/skills/frontend-ui-ux/references/perfection/react-perf-tooling.md +127 -0
- package/skills/frontend-ui-ux/references/performance-delivery.md +77 -0
- package/skills/frontend-ui-ux/references/product-direction.md +84 -0
- package/skills/frontend-ui-ux/references/redesign-playbook.md +88 -0
- package/skills/frontend-ui-ux/references/system-foundations.md +86 -0
- package/skills/frontend-ui-ux/references/taste-direction.md +55 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/README.md +659 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/charts.csv +26 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/colors.csv +162 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/icons.csv +106 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/landing.csv +35 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/products.csv +162 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/react-performance.csv +45 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/astro.csv +54 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/flutter.csv +53 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/html-tailwind.csv +56 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/jetpack-compose.csv +53 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nextjs.csv +53 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxt-ui.csv +51 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxtjs.csv +59 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react-native.csv +52 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react.csv +54 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/shadcn.csv +61 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/svelte.csv +54 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/swiftui.csv +51 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/vue.csv +50 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/styles.csv +85 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/typography.csv +74 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/ui-reasoning.csv +162 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/ux-guidelines.csv +100 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/web-interface.csv +31 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/scripts/core.py +262 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/scripts/design_system.py +1148 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/scripts/search.py +114 -0
- package/skills/frontend-ui-ux/references/visual-language.md +84 -0
- package/skills/frontend-ui-ux/references/visual-reconstruction.md +87 -0
- package/skills/frontend-ui-ux/schemas/design-contract-v1alpha1.json +570 -0
- package/skills/frontend-ui-ux/schemas/design-contract-v1beta1.json +32 -0
- package/skills/frontend-ui-ux/schemas/design-contract-v1beta2.json +34 -0
- package/skills/frontend-ui-ux/scripts/bounded-json.mjs +45 -0
- package/skills/frontend-ui-ux/scripts/canonical-json.mjs +26 -0
- package/skills/frontend-ui-ux/scripts/contract-error.mjs +15 -0
- package/skills/frontend-ui-ux/scripts/csv.mjs +64 -0
- package/skills/frontend-ui-ux/scripts/dataset.mjs +65 -0
- package/skills/frontend-ui-ux/scripts/design-contract.mjs +609 -0
- package/skills/frontend-ui-ux/scripts/import-design-intelligence.mjs +193 -0
- package/skills/frontend-ui-ux/scripts/retrieval.mjs +92 -0
- package/skills/frontend-ui-ux/scripts/stable-file-read.mjs +237 -0
- package/skills/frontend-ui-ux/scripts/stdin-json.mjs +16 -0
- package/skills/frontend-ui-ux/scripts/strict-json.mjs +102 -0
- package/skills/frontend-ui-ux/scripts/uiux.mjs +86 -0
- package/skills/frontend-ui-ux/scripts/verify-canonical-corpus.mjs +266 -0
- package/skills/lit-burnoff/SKILL.md +227 -0
- package/skills/lit-burnoff-file/SKILL.md +175 -0
- package/skills/lit-code/SKILL.md +266 -0
- package/skills/lit-code/references/README.md +18 -0
- package/skills/lit-code/references/go/README.md +12 -0
- package/skills/lit-code/references/go/concurrency.md +42 -0
- package/skills/lit-code/references/go/error-handling.md +47 -0
- package/skills/lit-code/references/go/testing.md +55 -0
- package/skills/lit-code/references/go/tooling.md +35 -0
- package/skills/lit-code/references/go/type-patterns.md +50 -0
- package/skills/lit-code/references/python/README.md +12 -0
- package/skills/lit-code/references/python/async.md +50 -0
- package/skills/lit-code/references/python/error-handling.md +44 -0
- package/skills/lit-code/references/python/testing.md +50 -0
- package/skills/lit-code/references/python/tooling.md +38 -0
- package/skills/lit-code/references/python/type-patterns.md +46 -0
- package/skills/lit-code/references/rust/README.md +12 -0
- package/skills/lit-code/references/rust/concurrency.md +45 -0
- package/skills/lit-code/references/rust/error-handling.md +43 -0
- package/skills/lit-code/references/rust/tooling.md +36 -0
- package/skills/lit-code/references/rust/type-patterns.md +46 -0
- package/skills/lit-code/references/rust/unsafe.md +47 -0
- package/skills/lit-code/references/typescript/README.md +11 -0
- package/skills/lit-code/references/typescript/error-handling.md +56 -0
- package/skills/lit-code/references/typescript/testing.md +42 -0
- package/skills/lit-code/references/typescript/tsconfig-strict.md +40 -0
- package/skills/lit-code/references/typescript/type-patterns.md +60 -0
- package/skills/lit-commit/SKILL.md +222 -0
- package/skills/lit-comprehend/SKILL.md +278 -0
- package/skills/lit-comprehend/assets/explainer-scaffold.html +104 -0
- package/skills/lit-comprehend/references/artifact-template.md +114 -0
- package/skills/lit-comprehend/references/micro-worlds.md +115 -0
- package/skills/lit-comprehend/scripts/verify-explainer.ts +339 -0
- package/skills/lit-crucible/SKILL.md +212 -0
- package/skills/lit-fetch/SKILL.md +242 -0
- package/skills/lit-handoff/SKILL.md +199 -0
- package/skills/lit-init/SKILL.md +214 -0
- package/skills/lit-korean/SKILL.md +231 -0
- package/skills/lit-plan/SKILL.md +351 -0
- package/skills/lit-plan/scripts/scaffold-plan.mjs +275 -0
- package/skills/lit-recap/SKILL.md +233 -0
- package/skills/lit-scientific-visualization/SKILL.md +175 -0
- package/skills/litresearch/SKILL.md +436 -0
- package/skills/litwork/SKILL.md +227 -0
- package/skills/lsp/SKILL.md +186 -0
- package/skills/lsp-setup/SKILL.md +187 -0
- package/skills/lsp-setup/references/README.md +40 -0
- package/skills/lsp-setup/references/bash.md +31 -0
- package/skills/lsp-setup/references/c-cpp.md +43 -0
- package/skills/lsp-setup/references/csharp.md +29 -0
- package/skills/lsp-setup/references/dart.md +25 -0
- package/skills/lsp-setup/references/elixir.md +30 -0
- package/skills/lsp-setup/references/go.md +33 -0
- package/skills/lsp-setup/references/haskell.md +27 -0
- package/skills/lsp-setup/references/java.md +28 -0
- package/skills/lsp-setup/references/julia.md +28 -0
- package/skills/lsp-setup/references/kotlin.md +25 -0
- package/skills/lsp-setup/references/lua.md +26 -0
- package/skills/lsp-setup/references/php.md +30 -0
- package/skills/lsp-setup/references/python.md +33 -0
- package/skills/lsp-setup/references/ruby.md +34 -0
- package/skills/lsp-setup/references/rust.md +34 -0
- package/skills/lsp-setup/references/swift.md +26 -0
- package/skills/lsp-setup/references/terraform.md +26 -0
- package/skills/lsp-setup/references/typescript.md +35 -0
- package/skills/lsp-setup/references/yaml.md +27 -0
- package/skills/lsp-setup/references/zig.md +28 -0
- package/skills/managed-skill-manifest.json +1386 -0
- package/skills/native-goal-verdict/SKILL.md +216 -0
- package/skills/refactor/SKILL.md +221 -0
- package/skills/reference-benchmark-claims/SKILL.md +204 -0
- package/skills/release-guardrails/SKILL.md +245 -0
- package/skills/review-work/SKILL.md +301 -0
- package/skills/rules/SKILL.md +196 -0
- package/skills/search-workflow-ideas/SKILL.md +223 -0
- package/skills/skill-observer/SKILL.md +148 -0
- package/skills/skill-observer/references/review-contract.md +95 -0
- package/skills/skill-rename-aliases.json +10 -0
- package/skills/start-work/SKILL.md +334 -0
- package/skills/structural-search/SKILL.md +234 -0
- package/skills/tool-guards/SKILL.md +223 -0
- package/skills/visual-qa/SKILL.md +61 -0
- package/skills/visual-qa/references/capture-playbook.md +105 -0
- package/skills/visual-qa/references/complete-contract.md +411 -0
- package/skills/visual-qa/schemas/evidence-manifest-v1alpha1.json +201 -0
- package/skills/visual-qa/schemas/evidence-manifest-v1beta1.json +141 -0
- package/skills/visual-qa/schemas/review-receipt-v1alpha1.json +113 -0
- package/skills/visual-qa/scripts/artifact.mjs +123 -0
- package/skills/visual-qa/scripts/bounded-json.mjs +47 -0
- package/skills/visual-qa/scripts/canonical-json.mjs +28 -0
- package/skills/visual-qa/scripts/capabilities.mjs +66 -0
- package/skills/visual-qa/scripts/contract-text.mjs +15 -0
- package/skills/visual-qa/scripts/design-contract.mjs +611 -0
- package/skills/visual-qa/scripts/evidence-evaluate.mjs +521 -0
- package/skills/visual-qa/scripts/evidence.mjs +271 -0
- package/skills/visual-qa/scripts/png-decode.mjs +146 -0
- package/skills/visual-qa/scripts/png.mjs +154 -0
- package/skills/visual-qa/scripts/review.mjs +188 -0
- package/skills/visual-qa/scripts/stdin-json.mjs +16 -0
- package/skills/visual-qa/scripts/strict-json.mjs +102 -0
- package/skills/visual-qa/scripts/tui.mjs +149 -0
- package/skills/visual-qa/scripts/visual-qa.mjs +90 -0
- package/skills/wikify/LICENSE +21 -0
- package/skills/wikify/PROVENANCE.md +18 -0
- package/skills/wikify/SKILL.md +176 -0
- package/skills/wikify/assets/home-template.md +44 -0
- package/skills/wikify/assets/maintenance-report-template.md +46 -0
- package/skills/wikify/assets/paper-source-note-template.md +137 -0
- package/skills/wikify/assets/source-note-template.md +45 -0
- package/skills/wikify/assets/wiki-rules-template.md +117 -0
- package/skills/wikify/modes/ingest.md +57 -0
- package/skills/wikify/modes/init.md +44 -0
- package/skills/wikify/modes/lint.md +60 -0
- package/skills/wikify/modes/query.md +38 -0
- package/skills/wikify/modes/save.md +45 -0
- package/skills/wikify/references-upstream-contract.md +758 -0
- package/skills/workflow-loop/SKILL.md +387 -0
- package/tools/check-pack-payload.mjs +410 -0
- package/tools/check-payload-substance.mjs +738 -0
- package/tools/check-version-lockstep.mjs +238 -0
- package/tools/gen-canonical-frontend-manifest.mjs +66 -0
- package/tools/gen-managed-skill-manifest.mjs +135 -0
- package/tools/harness-speed-local.mjs +261 -0
- package/tools/payload-reference-exemptions.json +49 -0
- package/tools/payload-substance-allowlist.json +46 -0
- package/tools/payload-substance-parity.json +571 -0
- package/tools/qa-real-surface-fixtures.mjs +428 -0
- package/tools/qa-real-surface-harness.mjs +173 -0
- package/tools/run-behavior-replacement-probes.mjs +296 -0
- package/tools/run-build.mjs +101 -0
- package/tools/run-harness-speed-local.mjs +52 -0
- package/tools/run-harness-speed-v2.mjs +36 -0
- package/tools/run-installed-resource-tamper-probe.mjs +62 -0
- package/tools/run-negative-gate-matrix.mjs +516 -0
- package/tools/run-rules-glob-differential.mjs +232 -0
- package/tools/run-typecheck.mjs +25 -0
- package/tools/run-uiux-visual-qa-scenarios.mjs +234 -0
- package/tools/run-wikify-surface-probe.mjs +170 -0
- package/tools/scan-legacy-tokens.mjs +431 -0
- package/tools/version-manifests.json +60 -0
- package/tsconfig.build.json +12 -0
- package/tsconfig.json +13 -0
- package/vendor/NOTICE.md +21 -0
- package/vendor/handoff/SKILL.md +199 -0
- package/vendor/handoff/evals/evals.json +154 -0
- package/vendor/handoff/examples/HANDOFF-example-generic-auth-refactor.md +97 -0
- package/vendor/handoff/templates/HANDOFF.md +121 -0
- package/vendor/licenses/022_handoff-MIT.txt +21 -0
- package/vendor/licenses/045_scientific-visualization-MIT.txt +21 -0
- package/vendor/provenance/022_handoff.md +19 -0
- package/vendor/provenance/045_scientific-visualization.md +36 -0
- package/vendor/scientific-visualization/SKILL.md +283 -0
- package/vendor/scientific-visualization/assets/color_palettes.py +197 -0
- package/vendor/scientific-visualization/assets/nature.mplstyle +75 -0
- package/vendor/scientific-visualization/assets/presentation.mplstyle +74 -0
- package/vendor/scientific-visualization/assets/publication.mplstyle +78 -0
- package/vendor/scientific-visualization/evals/evals.json +158 -0
- package/vendor/scientific-visualization/references/color_palettes.md +380 -0
- package/vendor/scientific-visualization/references/journal_requirements.md +359 -0
- package/vendor/scientific-visualization/references/matplotlib_examples.md +608 -0
- package/vendor/scientific-visualization/references/mdanalysis_martini_visualization.md +85 -0
- package/vendor/scientific-visualization/references/publication_guidelines.md +217 -0
- package/vendor/scientific-visualization/references/seaborn_for_publications.md +293 -0
- package/vendor/scientific-visualization/scripts/figure_export.py +238 -0
- package/vendor/scientific-visualization/scripts/style_presets.py +467 -0
- package/vendor/scientific-visualization/tests/test_figure_export.py +51 -0
- package/vendor/scientific-visualization/tests/test_style_presets.py +114 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: autoconference-skill
|
|
3
|
+
description: |
|
|
4
|
+
Multi-agent research conference that spawns parallel autoresearchers with
|
|
5
|
+
symposium sharing, adversarial peer review, and insight synthesis.
|
|
6
|
+
Reads a conference.md, orchestrates N researchers in structured rounds,
|
|
7
|
+
and produces a synthesized result combining the best findings.
|
|
8
|
+
TRIGGER when: user mentions "autoconference" or "conference" with research context;
|
|
9
|
+
user wants multiple researchers competing or collaborating; user wants parallel
|
|
10
|
+
autoresearch with peer review; user mentions "conference.md"; user wants
|
|
11
|
+
research synthesis from multiple approaches; user wants adversarial evaluation
|
|
12
|
+
of research results.
|
|
13
|
+
DO NOT TRIGGER when: user wants a single autoresearch loop (use autoresearch-skill);
|
|
14
|
+
user wants a simple one-shot answer; user wants to read a single paper.
|
|
15
|
+
allowed-tools:
|
|
16
|
+
- Read
|
|
17
|
+
- Glob
|
|
18
|
+
- Grep
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Autoconference Source-Family Coverage
|
|
22
|
+
|
|
23
|
+
## OpenCode authority envelope
|
|
24
|
+
|
|
25
|
+
This reference is inert compatibility guidance. `lit-plan` must approve the finite root-owned
|
|
26
|
+
objective, budget, roots, packet schema, and review contract before any mutation or delegation,
|
|
27
|
+
including interactive runs. Only explicit `/start-work` may consume that approval. Children remain
|
|
28
|
+
depth-one and packet-only; children must not write or mutate root-owned state, select models, or
|
|
29
|
+
invoke routes.
|
|
30
|
+
|
|
31
|
+
This retained reference is inert coverage material. The installed `skills/autoconference/SKILL.md`,
|
|
32
|
+
read-only `lit-plan`, explicit `/start-work`, live root OpenCode task probe, and depth-one packet
|
|
33
|
+
contract are authoritative. Historical tool/model assumptions grant no capability.
|
|
34
|
+
|
|
35
|
+
## Mandatory Start Gate
|
|
36
|
+
|
|
37
|
+
Before dispatching `/autoconference`, require a pre-flight confirmation gate:
|
|
38
|
+
|
|
39
|
+
1. If the user has exactly specified researcher count, iterations/budget, Success Metric or Success Criteria, and Critic/Devil's Advocate inclusion, calculate the run conditions and produce an approval packet.
|
|
40
|
+
2. If any of those values are missing or vague, ask the user for exact values first; then calculate conditions and ask for final confirmation.
|
|
41
|
+
3. Do not write, evaluate, dispatch, or begin the conference loop from planning. After explicit
|
|
42
|
+
confirmation, hand the packet to `/start-work`.
|
|
43
|
+
|
|
44
|
+
The adversarial Reviewer is part of the protocol every round; the gate's Critic/Devil's Advocate choice controls whether an additional researcher is assigned a contrarian role.
|
|
45
|
+
|
|
46
|
+
## Conference Persistence Directive
|
|
47
|
+
|
|
48
|
+
Once the bounded conference begins through `/start-work`:
|
|
49
|
+
|
|
50
|
+
1. Complete a round only while task capability, approved authority, and budget remain.
|
|
51
|
+
2. Stop on cancellation, stale state, a new boundary, malformed packets, or missing review.
|
|
52
|
+
3. Continue after a valid round receipt without seeking redundant approval inside the same grant.
|
|
53
|
+
4. **The conference runs until one of these conditions is met:**
|
|
54
|
+
- Target metric achieved (convergence)
|
|
55
|
+
- `max_rounds` or `max_total_iterations` exhausted (budget spent — this is normal, not failure)
|
|
56
|
+
- All researchers simultaneously stalled at Level 2+ (early synthesis)
|
|
57
|
+
- The user manually interrupts
|
|
58
|
+
5. **If none of these conditions are true, begin the next round immediately.**
|
|
59
|
+
|
|
60
|
+
Think of `max_rounds` as a budget to *spend*, not a limit to *fear*.
|
|
61
|
+
|
|
62
|
+
## Commands
|
|
63
|
+
|
|
64
|
+
| Command | Description | Skill Path |
|
|
65
|
+
|---------|-------------|------------|
|
|
66
|
+
| `/autoconference` | Core conference loop — N researchers, 4-phase rounds, synthesis | `skills/autoconference/SKILL.md` |
|
|
67
|
+
| `/autoconference-plan` | Planning-only proposal and approval packet | `skills/autoconference/modes/plan.md` |
|
|
68
|
+
| `/autoconference-resume` | Resume interrupted conference from checkpoint | `skills/autoconference/modes/resume.md` |
|
|
69
|
+
| `/autoconference-analyze` | Post-conference insight analysis | `skills/autoconference/modes/analyze.md` |
|
|
70
|
+
| `/autoconference-debate` | Adversarial 2-researcher debate mode | `skills/autoconference/modes/debate.md` |
|
|
71
|
+
| `/autoconference-survey` | Systematic multi-database literature survey | `skills/autoconference/modes/survey.md` |
|
|
72
|
+
| `/autoconference-ship` | Convert results to a local readiness packet | `skills/autoconference/modes/ship.md` |
|
|
73
|
+
|
|
74
|
+
## Dispatch Logic
|
|
75
|
+
|
|
76
|
+
- **Core command** (`/autoconference`) → load `skills/autoconference/SKILL.md` and `skills/autoconference/modes/core.md`.
|
|
77
|
+
- **Hyphen-native mode command** → load the exact enrolled `skills/autoconference/modes/<name>.md` contract.
|
|
78
|
+
- Unknown and near-miss modes remain inert; never fall back from a miss to an unintended execution route.
|
|
79
|
+
|
|
80
|
+
## How It Works
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
┌─────────────────────────────────────────────────────────┐
|
|
84
|
+
│ CONFERENCE ROUND │
|
|
85
|
+
│ │
|
|
86
|
+
│ Phase 1: INDEPENDENT RESEARCH (parallel) │
|
|
87
|
+
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
88
|
+
│ │Researcher│ │Researcher│ │Researcher│ Each runs N │
|
|
89
|
+
│ │ A │ │ B │ │ C │ autoresearch │
|
|
90
|
+
│ │ (iter×N) │ │ (iter×N) │ │ (iter×N) │ iterations │
|
|
91
|
+
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
|
|
92
|
+
│ │ │ │ │
|
|
93
|
+
│ Phase 2: POSTER SESSION (packet-only comparison) │
|
|
94
|
+
│ Phase 3: PEER REVIEW (independent review packet) │
|
|
95
|
+
│ Phase 4: KNOWLEDGE TRANSFER (validated → shared) │
|
|
96
|
+
└─────────────────────────────────────────────────────────┘
|
|
97
|
+
│
|
|
98
|
+
▼ Convergence check → next round or final synthesis
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Agent Roles
|
|
102
|
+
|
|
103
|
+
| Role | Model | Count | Responsibility |
|
|
104
|
+
|------|-------|-------|----------------|
|
|
105
|
+
| **Root coordinator** | Current root-primary route | 1 | Owns capability probe, phase receipts, and terminal verdict |
|
|
106
|
+
| **Researcher** | OpenCode depth-one task | N | Runs bounded autoresearch within one partition and returns a packet |
|
|
107
|
+
| **Session Chair** | OpenCode depth-one task | 1/round | Produces the poster packet from accepted researcher packets |
|
|
108
|
+
| **Reviewer** | OpenCode depth-one task | 1/round | Challenges claims and returns verdict evidence |
|
|
109
|
+
| **Synthesizer** | Root or approved review task | 1 | Combines only independently validated findings |
|
|
110
|
+
|
|
111
|
+
## Dependencies
|
|
112
|
+
|
|
113
|
+
- **Required:** live root OpenCode task capability and the installed `autoresearch` managed family
|
|
114
|
+
- **Extends:** `skills/autoresearch/SKILL.md` — each researcher runs the bounded core loop
|
|
115
|
+
- **Python 3.8+** required only for `scripts/init_conference.py` (scaffolding helper)
|
|
116
|
+
|
|
117
|
+
## Relationship to Other Skills
|
|
118
|
+
|
|
119
|
+
| Skill | Relationship |
|
|
120
|
+
|-------|-------------|
|
|
121
|
+
| `autoresearch` | Required managed dependency for each researcher packet. |
|
|
122
|
+
| `lit-plan` | Read-only proposal and approval-packet route. |
|
|
123
|
+
| `/start-work` | Explicit bounded write/evaluator/task execution handoff after approval. |
|
|
124
|
+
| `/review-work` | Completed-work evidence review before a DoneClaim. |
|
|
125
|
+
|
|
126
|
+
## OpenCode Port Boundary
|
|
127
|
+
|
|
128
|
+
This file does not dispatch, write, or execute standalone. The package installer recursively installs
|
|
129
|
+
the family, and doctor verifies the exact tree. See `skills/autoconference/SKILL.md` and
|
|
130
|
+
`skills/autoconference/references/conference-protocol.md` for the current orchestration and isolation contracts.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Visualization Guide
|
|
2
|
+
|
|
3
|
+
## OpenCode authority envelope
|
|
4
|
+
|
|
5
|
+
This reference is inert rendering guidance. `lit-plan` must approve the finite root-owned figure
|
|
6
|
+
objective, budget, source roots, output roots, and review contract before any mutation or delegation,
|
|
7
|
+
including interactive runs. Only explicit `/start-work` may consume that approval. Children remain
|
|
8
|
+
depth-one and packet-only; children must not write or mutate root-owned state, select models, or
|
|
9
|
+
invoke routes.
|
|
10
|
+
|
|
11
|
+
Mandatory rules for all `results.png` figures generated by autoresearch-skill. Based on the `/lit-scientific-visualization` skill standards.
|
|
12
|
+
|
|
13
|
+
## Setup
|
|
14
|
+
|
|
15
|
+
Every `visualize.py` MUST start with:
|
|
16
|
+
|
|
17
|
+
```python
|
|
18
|
+
import sys, os
|
|
19
|
+
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'scripts'))
|
|
20
|
+
from style_presets import rcparams
|
|
21
|
+
rcparams() # MUST be called before plt.subplots()
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
This loads `scripts/style_presets.py` which sets Pretendard/Arial fonts, inward ticks, Okabe-Ito colors, white background, and DPI 600.
|
|
25
|
+
|
|
26
|
+
## 7 Mandatory Rules
|
|
27
|
+
|
|
28
|
+
### 1. Axis endpoints must show numbers
|
|
29
|
+
First and last tick on both axes must be visible. Use `ax.set_xlim()` and `ax.set_ylim()` explicitly.
|
|
30
|
+
|
|
31
|
+
### 2. Subplots must maintain spacing
|
|
32
|
+
Use `fig.tight_layout(pad=1.5)` or `constrained_layout=True`. No overlapping labels.
|
|
33
|
+
|
|
34
|
+
### 3. Legend must never obscure data
|
|
35
|
+
Place legend where it doesn't cover data points. Use `loc='upper right'` or `bbox_to_anchor` if needed.
|
|
36
|
+
|
|
37
|
+
### 4. No titles
|
|
38
|
+
Journal figures use captions, not titles. Do NOT call `ax.set_title()` or `fig.suptitle()`.
|
|
39
|
+
|
|
40
|
+
### 5. Legend text color must match data color
|
|
41
|
+
Each legend entry's text color matches its data series color:
|
|
42
|
+
```python
|
|
43
|
+
leg = ax.legend()
|
|
44
|
+
colors = ['#0072B2', '#D55E00', '#009E73']
|
|
45
|
+
for i, text in enumerate(leg.get_texts()):
|
|
46
|
+
text.set_color(colors[i])
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 6. Legend border: black, framealpha=1
|
|
50
|
+
```python
|
|
51
|
+
ax.legend(frameon=True, edgecolor='black', framealpha=1)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 7. DPI > 500
|
|
55
|
+
Save at 600 DPI. Export both PNG and PDF:
|
|
56
|
+
```python
|
|
57
|
+
fig.savefig('results.png', dpi=600, bbox_inches='tight')
|
|
58
|
+
fig.savefig('results.pdf', dpi=600, bbox_inches='tight')
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Figure Structure for Autoresearch
|
|
62
|
+
|
|
63
|
+
Two-panel layout with panel labels:
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 8))
|
|
67
|
+
|
|
68
|
+
# Panel labels
|
|
69
|
+
ax1.text(-0.08, 1.08, 'A', transform=ax1.transAxes, fontsize=16, fontweight='bold', va='top')
|
|
70
|
+
ax2.text(-0.08, 1.08, 'B', transform=ax2.transAxes, fontsize=16, fontweight='bold', va='top')
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Panel A — Metric Convergence:**
|
|
74
|
+
- Scatter: kept iterations (blue `#0072B2`) vs reverted (vermillion `#D55E00`)
|
|
75
|
+
- Line: best-so-far envelope (green `#009E73`)
|
|
76
|
+
- Dashed: target threshold (orange `#E69F00`)
|
|
77
|
+
- Annotate baseline and best values
|
|
78
|
+
|
|
79
|
+
**Panel B — Domain-specific result:**
|
|
80
|
+
- Code optimization: bar chart of execution times
|
|
81
|
+
- Function fitting: prediction curve vs data scatter
|
|
82
|
+
- Literature review: category coverage
|
|
83
|
+
- Skill elaboration: component breakdown
|
|
84
|
+
|
|
85
|
+
## Okabe-Ito Palette Reference
|
|
86
|
+
|
|
87
|
+
| Color | Hex | Use |
|
|
88
|
+
|-------|-----|-----|
|
|
89
|
+
| Orange | `#E69F00` | Target line, warnings |
|
|
90
|
+
| Sky Blue | `#56B4E9` | Train data, secondary |
|
|
91
|
+
| Bluish Green | `#009E73` | Best-so-far, success |
|
|
92
|
+
| Yellow | `#F0E442` | Highlights |
|
|
93
|
+
| Blue | `#0072B2` | Kept iterations, primary |
|
|
94
|
+
| Vermillion | `#D55E00` | Reverted, errors |
|
|
95
|
+
| Reddish Purple | `#CC79A7` | Prediction curves |
|
|
96
|
+
| Black | `#000000` | Baselines, text |
|
|
97
|
+
|
|
98
|
+
## Conference-Specific Panels
|
|
99
|
+
|
|
100
|
+
For autoconference visualizations, use multi-panel layouts:
|
|
101
|
+
|
|
102
|
+
**Panel A:** Per-researcher metric convergence (one line per researcher, different colors)
|
|
103
|
+
**Panel B:** Best-of-conference envelope (across all researchers)
|
|
104
|
+
**Panel C:** Peer review verdict distribution (validated/challenged/overturned per round)
|
|
105
|
+
**Panel D (optional):** Researcher strategy heatmap or cross-pollination graph
|
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# check_conference.sh - Lightweight progress monitor for autoconference runs
|
|
3
|
+
# Usage: check_conference.sh [conference_dir]
|
|
4
|
+
|
|
5
|
+
CONF_DIR="${1:-.}"
|
|
6
|
+
CONF_DIR="${CONF_DIR%/}" # strip trailing slash
|
|
7
|
+
|
|
8
|
+
CONF_MD="$CONF_DIR/conference.md"
|
|
9
|
+
RESULTS_TSV="$CONF_DIR/conference_results.tsv"
|
|
10
|
+
EVENTS_JSONL="$CONF_DIR/conference_events.jsonl"
|
|
11
|
+
SYNTHESIS_MD="$CONF_DIR/synthesis.md"
|
|
12
|
+
FINAL_REPORT_MD="$CONF_DIR/final_report.md"
|
|
13
|
+
|
|
14
|
+
if [[ ! -d "$CONF_DIR" || ! -f "$CONF_MD" ]]; then
|
|
15
|
+
printf 'Status: not initialized\n'
|
|
16
|
+
exit 2
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
NODE_BINARY="${NODE_BINARY:-node}"
|
|
20
|
+
if ! command -v "$NODE_BINARY" >/dev/null 2>&1; then
|
|
21
|
+
printf 'Status: BLOCKED_NODE_UNAVAILABLE\n'
|
|
22
|
+
exit 3
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
# ── Parse conference.md ───────────────────────────────────────────────────────
|
|
26
|
+
|
|
27
|
+
if [[ -f "$CONF_MD" ]]; then
|
|
28
|
+
# First non-empty line after "## Goal"
|
|
29
|
+
goal=$(awk '/^## Goal/{found=1; next} found && /[^[:space:]]/{print; exit}' \
|
|
30
|
+
"$CONF_MD")
|
|
31
|
+
# max_rounds: line matching "max_rounds", "Rounds:", or scaffolded "Max rounds:"
|
|
32
|
+
max_rounds=$(grep -m1 -iE 'max_rounds|Rounds:' "$CONF_MD" \
|
|
33
|
+
| grep -oE '[0-9]+' \
|
|
34
|
+
| head -1)
|
|
35
|
+
# Researcher count: prefer scaffolded "Count", fall back to named researcher entries
|
|
36
|
+
researcher_count=$(grep -m1 -iE '\*\*Count:\*\*|^count:' "$CONF_MD" \
|
|
37
|
+
| grep -oE '[0-9]+' \
|
|
38
|
+
| head -1)
|
|
39
|
+
if [[ -z "$researcher_count" ]]; then
|
|
40
|
+
researcher_count=$(grep -cE '^\s*-\s+\*\*Name\*\*:|^\s*-\s+name:' "$CONF_MD" 2>/dev/null) || researcher_count=0
|
|
41
|
+
fi
|
|
42
|
+
# Direction
|
|
43
|
+
direction=$(grep -m1 -i '\*\*Direction:\*\*' "$CONF_MD" \
|
|
44
|
+
| sed 's/.*\*\*Direction:\*\*[[:space:]]*//' \
|
|
45
|
+
| sed 's/[[:space:]]*$//' \
|
|
46
|
+
| tr '[:upper:]' '[:lower:]')
|
|
47
|
+
# Target
|
|
48
|
+
target=$(grep -m1 -i '\*\*Target:\*\*' "$CONF_MD" \
|
|
49
|
+
| sed 's/.*\*\*Target:\*\*[[:space:]]*//' \
|
|
50
|
+
| sed 's/[[:space:]]*$//')
|
|
51
|
+
else
|
|
52
|
+
goal="?"; max_rounds="?"; researcher_count="?"; direction="maximize"; target="?"
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
[[ -z "$goal" ]] && goal="?"
|
|
56
|
+
[[ -z "$max_rounds" ]] && max_rounds="?"
|
|
57
|
+
[[ -z "$researcher_count" ]] && researcher_count="?"
|
|
58
|
+
[[ -z "$direction" ]] && direction="maximize"
|
|
59
|
+
[[ -z "$target" ]] && target="?"
|
|
60
|
+
|
|
61
|
+
# ── Parse conference_results.tsv ──────────────────────────────────────────────
|
|
62
|
+
|
|
63
|
+
best_metric="?"; best_researcher="?"; result_count="0"
|
|
64
|
+
|
|
65
|
+
if [[ -f "$RESULTS_TSV" ]]; then
|
|
66
|
+
# Expect conference-level columns:
|
|
67
|
+
# round, researcher, iteration, metric_value, delta, delta_pct, status, description,
|
|
68
|
+
# evaluator_source, peer_review_verdict, timestamp
|
|
69
|
+
# Track best metric value and which researcher achieved it
|
|
70
|
+
best_val=""
|
|
71
|
+
while IFS=$'\t' read -r f_round f_researcher f_iteration f_metric f_rest; do
|
|
72
|
+
[[ -z "$f_researcher" ]] && continue
|
|
73
|
+
result_count=$(( result_count + 1 ))
|
|
74
|
+
val="$f_metric"
|
|
75
|
+
if [[ "$val" =~ ^-?[0-9]+(\.[0-9]+)?$ ]]; then
|
|
76
|
+
if [[ -z "$best_val" ]]; then
|
|
77
|
+
best_val="$val"
|
|
78
|
+
best_researcher="$f_researcher"
|
|
79
|
+
else
|
|
80
|
+
if [[ "$direction" == "minimize" ]]; then
|
|
81
|
+
better=$(awk -v a="$val" -v b="$best_val" 'BEGIN{print (a<b)?1:0}')
|
|
82
|
+
else
|
|
83
|
+
better=$(awk -v a="$val" -v b="$best_val" 'BEGIN{print (a>b)?1:0}')
|
|
84
|
+
fi
|
|
85
|
+
if [[ "$better" == "1" ]]; then
|
|
86
|
+
best_val="$val"
|
|
87
|
+
best_researcher="$f_researcher"
|
|
88
|
+
fi
|
|
89
|
+
fi
|
|
90
|
+
fi
|
|
91
|
+
done < <(tail -n +2 "$RESULTS_TSV" | grep -v '^[[:space:]]*$')
|
|
92
|
+
|
|
93
|
+
if [[ -n "$best_val" ]]; then
|
|
94
|
+
best_metric="$best_val"
|
|
95
|
+
fi
|
|
96
|
+
[[ -z "$best_researcher" ]] && best_researcher="?"
|
|
97
|
+
fi
|
|
98
|
+
|
|
99
|
+
# ── Parse conference_events.jsonl ─────────────────────────────────────────────
|
|
100
|
+
|
|
101
|
+
current_round="0"; last_event_type="?"; last_event_ts="?"; stuck_count="0"; terminal_event_state="none"
|
|
102
|
+
|
|
103
|
+
if [[ -f "$EVENTS_JSONL" ]]; then
|
|
104
|
+
# Count current and legacy round completion event names.
|
|
105
|
+
completed_rounds=$(grep -Ec '"round\.completed"|"round\.[0-9]+\.completed"' "$EVENTS_JSONL" 2>/dev/null) || completed_rounds=0
|
|
106
|
+
current_round="$completed_rounds"
|
|
107
|
+
|
|
108
|
+
# Count "researcher.stuck" events
|
|
109
|
+
stuck_count=$(grep -c '"researcher\.stuck"' "$EVENTS_JSONL" 2>/dev/null) || stuck_count=0
|
|
110
|
+
if ! terminal_event_state=$("$NODE_BINARY" - "$EVENTS_JSONL" "$RESULTS_TSV" "$researcher_count" "$max_rounds" "$direction" <<'NODE'
|
|
111
|
+
const fs = require("node:fs");
|
|
112
|
+
|
|
113
|
+
const [eventsPath, resultsPath, researcherCountRaw, maxRoundsRaw, direction] = process.argv.slice(2);
|
|
114
|
+
const researcherCount = Number(researcherCountRaw);
|
|
115
|
+
const maxRounds = Number(maxRoundsRaw);
|
|
116
|
+
const allowedVerdicts = new Set([
|
|
117
|
+
"TARGET_MET", "CONVERGED", "BUDGET_EXHAUSTED", "STALLED", "CANCELLED", "BLOCKED"
|
|
118
|
+
]);
|
|
119
|
+
const allowedStatuses = new Set(["baseline", "kept", "reverted", "failed"]);
|
|
120
|
+
const allowedPeerVerdicts = new Set(["validated", "challenged", "overturned", "-"]);
|
|
121
|
+
const expectedHeader = ["round", "researcher", "iteration", "metric_value", "delta", "delta_pct", "status", "description", "evaluator_source", "peer_review_verdict", "timestamp"];
|
|
122
|
+
|
|
123
|
+
function validTimestamp(value) {
|
|
124
|
+
if (typeof value !== "string" || !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3})?Z$/u.test(value)) return false;
|
|
125
|
+
const parsed = new Date(value);
|
|
126
|
+
if (!Number.isFinite(parsed.getTime())) return false;
|
|
127
|
+
const normalized = value.includes(".") ? value : value.replace(/Z$/u, ".000Z");
|
|
128
|
+
return parsed.toISOString() === normalized;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function finiteNumber(value) {
|
|
132
|
+
return typeof value === "string"
|
|
133
|
+
&& /^-?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/u.test(value)
|
|
134
|
+
&& Number.isFinite(Number(value));
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
function parseResults() {
|
|
138
|
+
if (!Number.isInteger(researcherCount) || researcherCount < 1 || researcherCount > 26
|
|
139
|
+
|| !Number.isInteger(maxRounds) || maxRounds < 1 || !new Set(["maximize", "minimize"]).has(direction)
|
|
140
|
+
|| !fs.existsSync(resultsPath)) return { valid: false, rows: [] };
|
|
141
|
+
const configuredResearchers = new Set(Array.from({ length: researcherCount }, (_, index) => String.fromCharCode(65 + index)));
|
|
142
|
+
const lines = fs.readFileSync(resultsPath, "utf8").split(/\r?\n/u);
|
|
143
|
+
if (lines.at(-1) === "") lines.pop();
|
|
144
|
+
if (lines.length === 0 || lines[0] !== expectedHeader.join("\t")) return { valid: false, rows: [] };
|
|
145
|
+
const keys = new Set();
|
|
146
|
+
const rows = [];
|
|
147
|
+
let experimentCount = 0;
|
|
148
|
+
for (const line of lines.slice(1)) {
|
|
149
|
+
if (line === "") return { valid: false, rows };
|
|
150
|
+
const fields = line.split("\t");
|
|
151
|
+
if (fields.length !== expectedHeader.length) return { valid: false, rows };
|
|
152
|
+
const [roundRaw, researcher, iterationRaw, metricRaw, delta, deltaPct, status, description, evaluator, peerVerdict, timestamp] = fields;
|
|
153
|
+
if (!/^\d+$/u.test(roundRaw) || !/^\d+$/u.test(iterationRaw) || !configuredResearchers.has(researcher)
|
|
154
|
+
|| !finiteNumber(metricRaw) || !(delta === "-" || finiteNumber(delta))
|
|
155
|
+
|| !(deltaPct === "-" || /^-?(?:\d+(?:\.\d+)?|\.\d+)%$/u.test(deltaPct))
|
|
156
|
+
|| !allowedStatuses.has(status) || description.trim() === "" || evaluator.trim() === ""
|
|
157
|
+
|| !allowedPeerVerdicts.has(peerVerdict) || !validTimestamp(timestamp)) return { valid: false, rows };
|
|
158
|
+
const round = Number(roundRaw);
|
|
159
|
+
const iteration = Number(iterationRaw);
|
|
160
|
+
const key = `${round}:${researcher}:${iteration}`;
|
|
161
|
+
if (!Number.isSafeInteger(round) || round < 1 || round > maxRounds || !Number.isSafeInteger(iteration)
|
|
162
|
+
|| keys.has(key)) return { valid: false, rows };
|
|
163
|
+
if (iteration === 0) {
|
|
164
|
+
if (status !== "baseline" || delta !== "-" || deltaPct !== "-" || peerVerdict !== "-") {
|
|
165
|
+
return { valid: false, rows };
|
|
166
|
+
}
|
|
167
|
+
} else {
|
|
168
|
+
if (status === "baseline") return { valid: false, rows };
|
|
169
|
+
experimentCount += 1;
|
|
170
|
+
}
|
|
171
|
+
keys.add(key);
|
|
172
|
+
rows.push({ round, researcher, iteration, metric: Number(metricRaw), status });
|
|
173
|
+
}
|
|
174
|
+
return { valid: true, rows, configuredResearchers, experimentCount };
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
const results = parseResults();
|
|
178
|
+
if (!results.valid) {
|
|
179
|
+
process.stdout.write("invalid");
|
|
180
|
+
process.exit(0);
|
|
181
|
+
}
|
|
182
|
+
const resultCount = results.experimentCount;
|
|
183
|
+
|
|
184
|
+
let latest;
|
|
185
|
+
const completedRounds = new Map();
|
|
186
|
+
let invalidRoundReceipt = false;
|
|
187
|
+
for (const line of fs.readFileSync(eventsPath, "utf8").split(/\r?\n/u)) {
|
|
188
|
+
if (line.trim() === "") continue;
|
|
189
|
+
let event;
|
|
190
|
+
try {
|
|
191
|
+
event = JSON.parse(line);
|
|
192
|
+
} catch {
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
if (event !== null && typeof event === "object" && !Array.isArray(event)) {
|
|
196
|
+
if (event.event === "round.completed") {
|
|
197
|
+
const payload = event.payload;
|
|
198
|
+
const validPayload = payload !== null && typeof payload === "object" && !Array.isArray(payload)
|
|
199
|
+
&& Number.isInteger(payload.round) && payload.round >= 1 && payload.round <= maxRounds
|
|
200
|
+
&& typeof payload.best_metric === "number" && Number.isFinite(payload.best_metric)
|
|
201
|
+
&& results.configuredResearchers.has(payload.best_researcher) && typeof payload.converged === "boolean";
|
|
202
|
+
if (!validTimestamp(event.timestamp) || !validPayload || completedRounds.has(payload?.round)) {
|
|
203
|
+
invalidRoundReceipt = true;
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
const candidates = results.rows.filter((row) => row.round === payload.round && row.status !== "failed");
|
|
207
|
+
const bestMetric = candidates.reduce((best, row) => direction === "minimize"
|
|
208
|
+
? Math.min(best, row.metric) : Math.max(best, row.metric), direction === "minimize" ? Infinity : -Infinity);
|
|
209
|
+
const reconciled = candidates.length > 0 && payload.best_metric === bestMetric
|
|
210
|
+
&& candidates.some((row) => row.researcher === payload.best_researcher && row.metric === bestMetric);
|
|
211
|
+
if (!reconciled) invalidRoundReceipt = true;
|
|
212
|
+
else completedRounds.set(payload.round, payload);
|
|
213
|
+
}
|
|
214
|
+
if (event.event === "conference.completed") latest = event;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
if (latest === undefined) {
|
|
219
|
+
process.stdout.write("none");
|
|
220
|
+
process.exit(0);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
const payload = latest.payload;
|
|
224
|
+
const roundCount = completedRounds.size;
|
|
225
|
+
const roundsAreSequential = Array.from({ length: roundCount }, (_, index) => index + 1)
|
|
226
|
+
.every((round) => completedRounds.has(round));
|
|
227
|
+
const resultRounds = new Set(results.rows.map((row) => row.round));
|
|
228
|
+
const rowsReconciled = resultRounds.size === roundCount && [...resultRounds].every((round) => completedRounds.has(round));
|
|
229
|
+
const baselinesReconciled = [...completedRounds.keys()].every((round) =>
|
|
230
|
+
[...results.configuredResearchers].every((researcher) =>
|
|
231
|
+
results.rows.some((row) => row.round === round && row.researcher === researcher
|
|
232
|
+
&& row.iteration === 0 && row.status === "baseline")));
|
|
233
|
+
const validPayload = payload !== null
|
|
234
|
+
&& typeof payload === "object"
|
|
235
|
+
&& !Array.isArray(payload)
|
|
236
|
+
&& payload.synthesis_path === "synthesis.md"
|
|
237
|
+
&& payload.final_report_path === "final_report.md"
|
|
238
|
+
&& Number.isInteger(payload.total_iterations)
|
|
239
|
+
&& payload.total_iterations >= 0
|
|
240
|
+
&& payload.total_iterations === resultCount
|
|
241
|
+
&& Number.isInteger(payload.total_rounds)
|
|
242
|
+
&& payload.total_rounds >= 0
|
|
243
|
+
&& payload.total_rounds === roundCount
|
|
244
|
+
&& roundsAreSequential
|
|
245
|
+
&& Number.isInteger(payload.researcher_count)
|
|
246
|
+
&& payload.researcher_count >= 1
|
|
247
|
+
&& payload.researcher_count === researcherCount
|
|
248
|
+
&& rowsReconciled
|
|
249
|
+
&& baselinesReconciled;
|
|
250
|
+
const valid = validTimestamp(latest.timestamp)
|
|
251
|
+
&& allowedVerdicts.has(latest.terminal_verdict)
|
|
252
|
+
&& validPayload
|
|
253
|
+
&& !invalidRoundReceipt;
|
|
254
|
+
process.stdout.write(valid ? "valid" : "invalid");
|
|
255
|
+
NODE
|
|
256
|
+
); then
|
|
257
|
+
printf 'Status: BLOCKED_NODE_RUNTIME_ERROR\n'
|
|
258
|
+
exit 3
|
|
259
|
+
fi
|
|
260
|
+
|
|
261
|
+
# Last event: extract type and timestamp from the last non-empty line
|
|
262
|
+
last_line=$(grep -v '^[[:space:]]*$' "$EVENTS_JSONL" | tail -1)
|
|
263
|
+
if [[ -n "$last_line" ]]; then
|
|
264
|
+
# Extract event type — value of "event" or "type" key
|
|
265
|
+
last_event_type=$(printf '%s' "$last_line" \
|
|
266
|
+
| grep -oE '"(event|type)"\s*:\s*"[^"]+"' \
|
|
267
|
+
| head -1 \
|
|
268
|
+
| grep -oE '"[^"]+"\s*$' \
|
|
269
|
+
| tr -d '"' \
|
|
270
|
+
| sed 's/^[[:space:]]*//')
|
|
271
|
+
# Extract timestamp — value of "ts", "timestamp", or "time" key
|
|
272
|
+
last_event_ts=$(printf '%s' "$last_line" \
|
|
273
|
+
| grep -oE '"(ts|timestamp|time)"\s*:\s*"[^"]+"' \
|
|
274
|
+
| head -1 \
|
|
275
|
+
| grep -oE '"[^"]+"\s*$' \
|
|
276
|
+
| tr -d '"' \
|
|
277
|
+
| sed 's/^[[:space:]]*//')
|
|
278
|
+
fi
|
|
279
|
+
fi
|
|
280
|
+
|
|
281
|
+
[[ -z "$last_event_type" ]] && last_event_type="?"
|
|
282
|
+
[[ -z "$last_event_ts" ]] && last_event_ts=""
|
|
283
|
+
|
|
284
|
+
# ── Determine run status ──────────────────────────────────────────────────────
|
|
285
|
+
|
|
286
|
+
if [[ -f "$CONF_MD" ]] && grep -q 'Scaffold status:[[:space:]]*INCOMPLETE' "$CONF_MD"; then
|
|
287
|
+
run_status="incomplete scaffold"
|
|
288
|
+
elif [[ "$terminal_event_state" == "invalid" ]]; then
|
|
289
|
+
run_status="terminal invalid"
|
|
290
|
+
elif [[ "$terminal_event_state" == "valid" ]] && [[ -s "$SYNTHESIS_MD" ]] && [[ -s "$FINAL_REPORT_MD" ]] && [[ "$result_count" -gt 0 ]]; then
|
|
291
|
+
run_status="COMPLETE"
|
|
292
|
+
elif [[ "$terminal_event_state" == "valid" ]]; then
|
|
293
|
+
run_status="terminal incomplete"
|
|
294
|
+
elif [[ "$current_round" -gt 0 || "$result_count" -gt 0 || "$last_event_type" != "?" ]]; then
|
|
295
|
+
run_status="progress recorded"
|
|
296
|
+
else
|
|
297
|
+
run_status="ready; no progress recorded"
|
|
298
|
+
fi
|
|
299
|
+
|
|
300
|
+
# ── Build display strings ─────────────────────────────────────────────────────
|
|
301
|
+
|
|
302
|
+
round_display="${current_round} / ${max_rounds}"
|
|
303
|
+
|
|
304
|
+
# Format last event with timestamp if available
|
|
305
|
+
if [[ -n "$last_event_ts" ]]; then
|
|
306
|
+
last_event_display="${last_event_type} @ ${last_event_ts}"
|
|
307
|
+
else
|
|
308
|
+
last_event_display="$last_event_type"
|
|
309
|
+
fi
|
|
310
|
+
|
|
311
|
+
# Add stuck researcher info if any
|
|
312
|
+
if [[ "$stuck_count" -gt 0 ]]; then
|
|
313
|
+
researcher_display="${researcher_count} (${stuck_count} stuck)"
|
|
314
|
+
else
|
|
315
|
+
researcher_display="$researcher_count"
|
|
316
|
+
fi
|
|
317
|
+
|
|
318
|
+
# Truncate long strings to keep box tidy (max ~44 chars for value column)
|
|
319
|
+
_trunc() {
|
|
320
|
+
local s="$1" max="${2:-44}"
|
|
321
|
+
if [[ ${#s} -gt $max ]]; then
|
|
322
|
+
printf '%s' "${s:0:$((max-1))}…"
|
|
323
|
+
else
|
|
324
|
+
printf '%s' "$s"
|
|
325
|
+
fi
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
val_w=44
|
|
329
|
+
|
|
330
|
+
conf_val=$(_trunc "${CONF_DIR}/" $val_w)
|
|
331
|
+
goal_val=$(_trunc "$goal" $val_w)
|
|
332
|
+
round_val=$(_trunc "$round_display" $val_w)
|
|
333
|
+
researcher_val=$(_trunc "$researcher_display" $val_w)
|
|
334
|
+
metric_val=$(_trunc "${best_metric} (${best_researcher})" $val_w)
|
|
335
|
+
target_val=$(_trunc "$target" $val_w)
|
|
336
|
+
status_val=$(_trunc "$run_status" $val_w)
|
|
337
|
+
last_val=$(_trunc "$last_event_display" $val_w)
|
|
338
|
+
|
|
339
|
+
# ── Box drawing ───────────────────────────────────────────────────────────────
|
|
340
|
+
|
|
341
|
+
inner_w=54 # fixed inner width for clean alignment
|
|
342
|
+
border=$(printf '─%.0s' $(seq 1 $inner_w))
|
|
343
|
+
|
|
344
|
+
_pad_row() {
|
|
345
|
+
local label="$1" value="$2"
|
|
346
|
+
local content=" ${label}${value}"
|
|
347
|
+
local pad=$(( inner_w - ${#content} ))
|
|
348
|
+
if [[ $pad -lt 0 ]]; then
|
|
349
|
+
local max_val=$(( inner_w - ${#label} - 2 ))
|
|
350
|
+
value="${value:0:$((max_val-1))}…"
|
|
351
|
+
content=" ${label}${value}"
|
|
352
|
+
pad=0
|
|
353
|
+
fi
|
|
354
|
+
printf '│%s%*s│\n' "$content" "$pad" ""
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
printf '┌─ autoconference progress ─%s┐\n' "$(printf '─%.0s' $(seq 1 $((inner_w - 28))))"
|
|
358
|
+
_pad_row "Conference: " "$conf_val"
|
|
359
|
+
_pad_row "Goal: " "$goal_val"
|
|
360
|
+
_pad_row "Round: " "$round_val"
|
|
361
|
+
_pad_row "Researchers: " "$researcher_val"
|
|
362
|
+
_pad_row "Best metric: " "$metric_val"
|
|
363
|
+
_pad_row "Target: " "$target_val"
|
|
364
|
+
_pad_row "Status: " "$status_val"
|
|
365
|
+
_pad_row "Last event: " "$last_val"
|
|
366
|
+
printf '└%s┘\n' "$border"
|
|
367
|
+
|
|
368
|
+
if [[ "$run_status" == "terminal invalid" ]]; then
|
|
369
|
+
exit 4
|
|
370
|
+
fi
|
|
371
|
+
exit 0
|