flowjet 2.1.7__tar.gz → 2.1.9__tar.gz
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.
- {flowjet-2.1.7 → flowjet-2.1.9}/CHANGELOG.md +32 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/PKG-INFO +1 -1
- {flowjet-2.1.7 → flowjet-2.1.9}/pyproject.toml +1 -1
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/LICENSE +21 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/SKILL.md +107 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/agents/openai.yaml +8 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/autoresearch.md +110 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/debug.md +97 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/evals.md +118 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/fix.md +102 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/improve.md +116 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/learn.md +136 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/plan.md +95 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/predict.md +94 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/probe.md +116 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/reason.md +109 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/references/orchestrator-routing.md +89 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/references/predict-personas.md +65 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/references/reason-judge-protocol.md +87 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/references/security-checklist.md +76 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/regression.md +110 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/scenario.md +106 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/scripts/orchestrate.sh +448 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/scripts/score-regression.sh +205 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/security.md +101 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/autoresearch/ship.md +120 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/SKILL.md +184 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/assets/plans/brief-template.md +40 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/assets/plans/decision-template.md +51 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/assets/plans/evidence-map-template.md +36 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/assets/plans/judgment-template.md +42 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/assets/plans/plan-template.md +27 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/assets/synth/_citation-map.md +13 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/assets/synth/_continuity.md +64 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/assets/synth/_document.json +44 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/assets/synth/_narrative-audit.md +30 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/assets/synth/_outline.md +67 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/assets/templates/AGENTS.md.template +76 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/assets/templates/idea-note-template.md +27 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/assets/templates/tree-state.json +6 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/assets/think/methods.csv +31 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/patterns/evidence-deep.json +34 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/patterns/evidence-first.json +21 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/patterns/idea-first.json +27 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/patterns/loop.json +42 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/patterns/rapid.json +19 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/patterns/stance-first.json +26 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/ANALYZE/analyze.md +187 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/COLLECT/agents/bucket-worker.md +78 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/COLLECT/collect.md +198 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/DECIDE/decide.md +33 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/GATES.md +429 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/GRAPH.md +144 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/IDEA/idea.md +28 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/INIT/init.md +47 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/LANGUAGE.md +133 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/LLM-STATE.md +223 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/RECONCILE/reconcile.md +34 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/REFERENCE.md +120 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/SYNTH/long-report.md +335 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/SYNTH/narrative-coherence.md +200 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/SYNTH/native-expression.md +132 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/SYNTH/synth.md +242 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/README.md +55 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/abstraction-laddering.md +29 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/assumption-audit.md +66 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/chain-of-thought.md +29 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/comparative-analysis-matrix.md +29 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/critique-and-refine.md +29 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/explain-reasoning.md +29 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/feynman-technique.md +29 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/first-principles.md +71 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/inversion.md +29 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/literature-review-personas.md +30 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/occams-razor.md +29 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/pre-mortem.md +66 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/problem-decomposition.md +29 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/red-team-vs-blue-team.md +64 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/reframe-the-question.md +30 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/second-order-thinking.md +64 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/socratic-questioning.md +30 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/source-triangulation.md +68 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/steelmanning.md +64 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods/thesis-defense.md +30 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/methods.md +55 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/THINK/think.md +94 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/VERSION/version.md +105 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/WORKFLOW/workflow-overview.md +111 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/references/WORKFLOW/workflow-phases.md +75 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/scripts/README.md +70 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/scripts/collect_cli.py +436 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/scripts/export_report.py +2402 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/scripts/material_to_markdown.py +694 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/scripts/prefer_language.py +526 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/scripts/prose_lint.py +492 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/scripts/report_lint.py +257 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/scripts/requirements.txt +2 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/scripts/skill_version.py +301 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/oh-my-research/scripts/version_control.py +145 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/SKILL.md +44 -18
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/assets/brainstorming/spec-document-reviewer-prompt.md +1 -1
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/assets/implementation/impl-guide-template.md +70 -3
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/assets/templates/template-drafts-readme.md +2 -2
- flowjet-2.1.9/src/flowjet/builtin_skills/platonic-coding/assets/templates/template-namespace-index.md +42 -0
- flowjet-2.1.9/src/flowjet/builtin_skills/platonic-coding/assets/templates/template-platonic.yml +53 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/assets/templates/template-rfc-history.md +0 -1
- flowjet-2.1.9/src/flowjet/builtin_skills/platonic-coding/assets/templates/template-rfc-index.md +77 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/assets/templates/template-rfc-namings.md +0 -1
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/assets/templates/template-rfc-standard.md +44 -6
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/BRAINSTORM/brainstorm.md +36 -24
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/IMPL/impl-code.md +14 -13
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/IMPL/impl-create-guide.md +16 -10
- flowjet-2.1.9/src/flowjet/builtin_skills/platonic-coding/references/IMPL/impl-full.md +48 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/IMPL/impl-update-guide.md +1 -1
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/IMPL/impl-validate-guide.md +4 -4
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/INIT/init-plan-modular-specs.md +29 -14
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/INIT/init-scaffold.md +27 -26
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/INIT/init-scan.md +5 -3
- flowjet-2.1.9/src/flowjet/builtin_skills/platonic-coding/references/REFERENCE.md +223 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/REVIEW/review-spec-compliance.md +2 -2
- flowjet-2.1.9/src/flowjet/builtin_skills/platonic-coding/references/SPECS/specs-check-compliance.md +175 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/SPECS/specs-check-taxonomy.md +1 -1
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/SPECS/specs-generate-history.md +6 -5
- flowjet-2.1.9/src/flowjet/builtin_skills/platonic-coding/references/SPECS/specs-generate-index.md +92 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/SPECS/specs-generate-namings.md +3 -3
- flowjet-2.1.9/src/flowjet/builtin_skills/platonic-coding/references/SPECS/specs-partition.md +161 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/SPECS/specs-refine.md +16 -7
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/SPECS/specs-validate-consistency.md +18 -15
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/WORKFLOW/workflow-overview.md +16 -14
- flowjet-2.1.9/src/flowjet/builtin_skills/platonic-coding/references/WORKFLOW/workflow-phase-1.md +25 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/WORKFLOW/workflow-phase-2.md +6 -7
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/WORKFLOW/workflow-phase-3.md +6 -6
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/agent/workspace.py +70 -6
- flowjet-2.1.7/src/flowjet/builtin_skills/README.md +0 -10
- flowjet-2.1.7/src/flowjet/builtin_skills/platonic-coding/assets/implementation/coding-plan-template.md +0 -82
- flowjet-2.1.7/src/flowjet/builtin_skills/platonic-coding/assets/templates/template-platonic.yml +0 -22
- flowjet-2.1.7/src/flowjet/builtin_skills/platonic-coding/assets/templates/template-rfc-index.md +0 -57
- flowjet-2.1.7/src/flowjet/builtin_skills/platonic-coding/references/IMPL/impl-full.md +0 -51
- flowjet-2.1.7/src/flowjet/builtin_skills/platonic-coding/references/REFERENCE.md +0 -180
- flowjet-2.1.7/src/flowjet/builtin_skills/platonic-coding/references/SPECS/specs-check-compliance.md +0 -160
- flowjet-2.1.7/src/flowjet/builtin_skills/platonic-coding/references/SPECS/specs-generate-index.md +0 -119
- flowjet-2.1.7/src/flowjet/builtin_skills/platonic-coding/references/WORKFLOW/workflow-phase-1.md +0 -25
- flowjet-2.1.7/src/flowjet/builtin_skills/research-bootstrap/SKILL.md +0 -109
- flowjet-2.1.7/src/flowjet/builtin_skills/research-bootstrap/patterns/evidence-deep.json +0 -41
- flowjet-2.1.7/src/flowjet/builtin_skills/research-bootstrap/patterns/evidence-first.json +0 -36
- flowjet-2.1.7/src/flowjet/builtin_skills/research-bootstrap/patterns/idea-first.json +0 -40
- flowjet-2.1.7/src/flowjet/builtin_skills/research-bootstrap/patterns/loop.json +0 -44
- flowjet-2.1.7/src/flowjet/builtin_skills/research-bootstrap/patterns/paper-pipeline.json +0 -38
- flowjet-2.1.7/src/flowjet/builtin_skills/research-bootstrap/patterns/rapid.json +0 -30
- flowjet-2.1.7/src/flowjet/builtin_skills/research-bootstrap/patterns/rigor-first.json +0 -42
- flowjet-2.1.7/src/flowjet/builtin_skills/research-bootstrap/patterns/stance-first.json +0 -39
- flowjet-2.1.7/src/flowjet/builtin_skills/research-bootstrap/patterns/systematic-review.json +0 -47
- flowjet-2.1.7/src/flowjet/builtin_skills/research-bootstrap/patterns/verify-loop.json +0 -42
- flowjet-2.1.7/src/flowjet/builtin_skills/research-bootstrap/references/backends.md +0 -72
- flowjet-2.1.7/src/flowjet/builtin_skills/research-bootstrap/references/handoff-ars-omr.md +0 -44
- flowjet-2.1.7/src/flowjet/builtin_skills/research-bootstrap/references/handoff-omr-ars.md +0 -51
- flowjet-2.1.7/src/flowjet/builtin_skills/research-bootstrap/references/routing.md +0 -51
- flowjet-2.1.7/src/flowjet/builtin_skills/research-bootstrap/scripts/csljson_to_omr.py +0 -136
- flowjet-2.1.7/src/flowjet/builtin_skills/research-bootstrap/scripts/papers_index_to_csljson.py +0 -199
- {flowjet-2.1.7 → flowjet-2.1.9}/.gitignore +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/LICENSE +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/README.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/config/nano-local.yml +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/config/nano-sandbox-soothe.yml +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/config/nano.yml +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/deploy/README.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/docs/completion-design.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/docs/impl/IG-001-openai-compatible-server.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/docs/impl/IG-002-isolated-thread-pool-runtime.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/docs/impl/IG-003-production-isolation-hardening.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/docs/specs/RFC-001-openai-compatible-api.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/docs/specs/RFC-002-isolated-thread-pool-runtime.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/docs/specs/RFC-003-production-isolation-hardening.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/docs/specs/RFC-004-unified-package.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/docs/specs/RFC-005-arcbox-tool-sandbox.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/docs/specs/rfc-history.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/docs/specs/rfc-index.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/docs/specs/rfc-namings.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/examples/README.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/__init__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/__main__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/gws-drive/SKILL.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/gws-drive-upload/SKILL.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/logo-generator-skill/.env.example +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/logo-generator-skill/README.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/logo-generator-skill/SKILL.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/logo-generator-skill/assets/background_library.html +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/logo-generator-skill/assets/showcase_template.html +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/logo-generator-skill/references/background_styles.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/logo-generator-skill/references/design_patterns.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/logo-generator-skill/references/webgl_backgrounds.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/logo-generator-skill/requirements.txt +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/logo-generator-skill/scripts/generate_showcase.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/logo-generator-skill/scripts/svg_to_png.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/assets/review/pr-review-template.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/assets/review/review-checklist.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/assets/specs/rfc-template.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/assets/specs/template-architecture-design.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/assets/specs/template-conceptual-design.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/assets/specs/template-impl-interface-design.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/assets/templates/template-impl-readme.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/INIT/init-recover-architecture.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/INIT/init-recover-conceptual.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/builtin_skills/platonic-coding/references/INIT/init-recover-impl-interface.md +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/cli/__init__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/cli/__main__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/cli/agent.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/cli/cli.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/cli/completion/__init__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/cli/completion/context.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/cli/completion/engine.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/cli/doctor_cmd.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/cli/doctor_fix_cmd.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/cli/progress.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/cli/serve_cmd.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/cli/setup_cmd.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/cli/shell/__init__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/cli/shell/_fj.zsh +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/cli/shell/fj.bash +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/cli/stream.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/cli/threads.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/cli/tool_stream.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/__init__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/_warnings.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/agent/__init__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/agent/config.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/agent/factory.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/agent/skills.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/agent/wiring.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/backend_config.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/bridges/base.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/bridges/nano/__init__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/bridges/nano/adapter.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/bridges/nano/backend.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/bridges/nano/interrupts.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/bridges/nano/mapping.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/bridges/soothe/__init__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/bridges/soothe/adapter.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/bridges/soothe/backend.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/events.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/identity.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/modes.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/protocol.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/runtime/__init__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/runtime/direct.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/runtime/fake.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/runtime/isolation/__init__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/runtime/isolation/adapter.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/runtime/isolation/admission.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/runtime/isolation/backend.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/runtime/isolation/errors.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/runtime/isolation/mode_gate.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/runtime/isolation/pool.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/runtime/isolation/request.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/runtime/isolation/workspace.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/sandbox/__init__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/sandbox/arbox.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/sandbox/resolver.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/sandbox/settings.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/streaming/__init__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/streaming/presentation.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/streaming/tool_results.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/core/streaming/tool_stream.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/home.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/server/__init__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/server/__main__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/server/acp/__init__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/server/acp/agent.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/server/acp/routes.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/server/config.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/server/http/__init__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/server/http/app.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/server/http/auth.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/server/openai_compat/__init__.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/server/openai_compat/errors.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/server/openai_compat/projection.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/server/openai_compat/routes.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/server/openai_compat/schemas.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/server/openai_compat/service.py +0 -0
- {flowjet-2.1.7 → flowjet-2.1.9}/src/flowjet/server/openai_compat/store.py +0 -0
|
@@ -10,6 +10,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
10
10
|
|
|
11
11
|
## [Unreleased]
|
|
12
12
|
|
|
13
|
+
## [2.1.9] — 2026-10-27
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- **Refreshed builtin skills bundle.** Shipped two new research skills and
|
|
18
|
+
retired a stale one: added `autoresearch` (an autonomous research loop with an
|
|
19
|
+
orchestrator, scoring, and a security checklist) and `oh-my-research` (a
|
|
20
|
+
structured evidence → synthesis pipeline with scripts and pattern presets),
|
|
21
|
+
and removed the superseded `research-bootstrap` skill. The `platonic-coding`
|
|
22
|
+
skill was reworked — its spec/IMPL/WORKFLOW references were tightened, a new
|
|
23
|
+
`specs-partition.md` reference added, and the old `coding-plan-template.md` /
|
|
24
|
+
`impl-guide-template.md` drafts dropped in favor of the consolidated template
|
|
25
|
+
namespace. The top-level `builtin_skills/README.md` (a stale pointer) was
|
|
26
|
+
removed; skills are still auto-registered via `register_builtin_skill_root`.
|
|
27
|
+
|
|
28
|
+
## [2.1.8] — 2026-10-26
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
|
|
32
|
+
- **PostgreSQL checkpointer is now wired for the server surface.**
|
|
33
|
+
`Checkpointers.open()` (the `/v1/responses` + ACP server path) used to warn
|
|
34
|
+
“Checkpointer backend 'postgresql' is not wired for the flowjet server surface
|
|
35
|
+
yet” and yield `None`, so thread state never survived a turn — a deployment
|
|
36
|
+
whose `persistence.default_backend` is `postgresql` silently ran every turn as
|
|
37
|
+
a fresh conversation. It now builds an `AsyncPostgresSaver` on nano's shared
|
|
38
|
+
checkpoints pool (`resolve_checkpointer()` → `(None, pool)`), opens the pool,
|
|
39
|
+
and runs `setup()` once per process under nano's advisory lock
|
|
40
|
+
(`SharedCheckpointerPool.setup_checkpointer`), so concurrent workers cannot
|
|
41
|
+
race LangGraph's DDL. The shared pool is deliberately **not** closed on exit
|
|
42
|
+
(it is process-wide). Failure still degrades to “no persistence” with a
|
|
43
|
+
warning instead of failing startup; unknown backends keep the old behavior.
|
|
44
|
+
|
|
13
45
|
## [2.1.7] — 2026-10-25
|
|
14
46
|
|
|
15
47
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: flowjet
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.9
|
|
4
4
|
Summary: FlowJet — a fast, open agent runtime for CLI and HTTP, powered by Soothe
|
|
5
5
|
Project-URL: Homepage, https://github.com/caesar0301/flowjet
|
|
6
6
|
Project-URL: Repository, https://github.com/caesar0301/flowjet
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Udit Goenka
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: autoresearch
|
|
3
|
+
description: "Autonomous iteration loop: modify, verify, keep/discard against any metric"
|
|
4
|
+
version: 2.2.2
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Autoresearch — Autonomous Goal-directed Iteration
|
|
8
|
+
|
|
9
|
+
## Safety Invariants (all subcommands)
|
|
10
|
+
- Never push, publish, or deploy without explicit user approval.
|
|
11
|
+
- Bounded by default. Override with `Iterations: unlimited`.
|
|
12
|
+
- All results logged to `autoresearch/{subcommand}-{YYMMDD}-{HHMM}/` directory.
|
|
13
|
+
- Chain handoff via `handoff.json`. Evals reads `*-results.tsv`.
|
|
14
|
+
|
|
15
|
+
## Dispatch (bare `$autoresearch`)
|
|
16
|
+
|
|
17
|
+
Parse the invocation in this order:
|
|
18
|
+
|
|
19
|
+
| Condition | Mode |
|
|
20
|
+
|---|---|
|
|
21
|
+
| `Metric:` or `Verify:` present | **Classic** — existing metric loop, unchanged |
|
|
22
|
+
| Free-form natural-language goal, no metric/verify | **Orchestrator** — see Orchestrator section |
|
|
23
|
+
| Nothing | **Setup wizard** — interactive config builder |
|
|
24
|
+
| `--classic` flag | Force Classic regardless of goal text |
|
|
25
|
+
| `--auto` flag | Force Orchestrator regardless of goal text |
|
|
26
|
+
|
|
27
|
+
Print a banner on every invocation: `[autoresearch] mode: classic | orchestrator | wizard`.
|
|
28
|
+
|
|
29
|
+
## Subcommands
|
|
30
|
+
|
|
31
|
+
| Command | Does | Default Iterations |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| `$autoresearch` | Iterate against a metric: modify → verify → keep/discard | 25 |
|
|
34
|
+
| `$autoresearch plan` | Convert a goal into validated Scope, Metric, Verify config | N/A |
|
|
35
|
+
| `$autoresearch debug` | Hunt bugs: hypothesize → test → falsify → repeat | 15 |
|
|
36
|
+
| `$autoresearch fix` | Crush errors one-by-one until zero remain | 20 |
|
|
37
|
+
| `$autoresearch security` | STRIDE + OWASP audit with red-team personas | 15 |
|
|
38
|
+
| `$autoresearch ship` | Ship through 8 phases: checklist → dry-run → deploy → verify | N/A |
|
|
39
|
+
| `$autoresearch scenario` | Generate edge cases across 12 dimensions | 20 |
|
|
40
|
+
| `$autoresearch predict` | 5 expert personas debate before implementation | N/A |
|
|
41
|
+
| `$autoresearch learn` | Scout codebase → generate docs or wiki → validate → fix loop | 10 |
|
|
42
|
+
| `$autoresearch reason` | Adversarial debate with blind judges until convergence | 8 |
|
|
43
|
+
| `$autoresearch probe` | 8 personas interrogate requirements until saturation | 15 |
|
|
44
|
+
| `$autoresearch improve` | Research ICP challenges, discover improvements, generate PRDs | 15 |
|
|
45
|
+
| `$autoresearch evals` | Analyze iteration results: trends, plateaus, regressions | N/A |
|
|
46
|
+
| `$autoresearch regression` | Regression stability gate: baseline vs candidate, verdict STABLE/UNSTABLE | N/A |
|
|
47
|
+
|
|
48
|
+
## Universal Flags
|
|
49
|
+
|
|
50
|
+
| Flag | Applies To | Purpose |
|
|
51
|
+
|---|---|---|
|
|
52
|
+
| `Iterations: N` | All looping | Set iteration count |
|
|
53
|
+
| `Iterations: unlimited` | All looping | Opt-in unbounded |
|
|
54
|
+
| `--evals` | All looping | Mid-loop checkpoints + final summary |
|
|
55
|
+
| `--evals-interval N` | All looping | Override checkpoint frequency |
|
|
56
|
+
| `--chain <targets>` | All | Sequential handoff after completion |
|
|
57
|
+
| `--<subcommand>` | All | Shorthand for `--chain <subcommand>` |
|
|
58
|
+
| `--dry-run` | Orchestrator | Print derived config + planned pipeline; no execution |
|
|
59
|
+
| `--max-cycles N` | Orchestrator | Hard ceiling on orchestration cycles (default 50) |
|
|
60
|
+
| `--classic` | Bare `$autoresearch` | Force Classic metric-loop mode |
|
|
61
|
+
| `--auto` | Bare `$autoresearch` | Force Orchestrator mode |
|
|
62
|
+
|
|
63
|
+
## Orchestrator
|
|
64
|
+
|
|
65
|
+
Activated when a plain-language goal is given without `Metric:`/`Verify:`. Classifies the goal into a **Goal archetype** — see `references/orchestrator-routing.md` for the archetype table and router decision table.
|
|
66
|
+
|
|
67
|
+
Resolve every `scripts/...` path below relative to this installed skill directory, never relative to the caller's working directory.
|
|
68
|
+
|
|
69
|
+
**Two modes based on archetype:**
|
|
70
|
+
- **Orchestration loop** — predicate-bearing archetypes (ship-ready, optimize-metric, fix-broken, harden, build-feature, explore). Goal has a mechanical Success predicate; the loop runs until that predicate is met.
|
|
71
|
+
- **Single-pass dispatch** — subjective/terminal archetypes (document, what-to-build, decide-design). Routes once to the fitting subcommand (learn / improve / reason), lets it self-terminate, then reports. No loop, no Plateau, no ship gate.
|
|
72
|
+
|
|
73
|
+
### Orchestration Loop Steps
|
|
74
|
+
|
|
75
|
+
Backed by `scripts/orchestrate.sh` (deterministic seam — all routing logic lives there). Subcommands exposed: `classify`, `next-hop`, `units`, `plateau`, `screen-cmd`, `verdict`, `validate-state`, `screen-state-predicate`.
|
|
76
|
+
|
|
77
|
+
1. **Classify** — `scripts/orchestrate.sh classify "<goal>"` → archetype label + mode.
|
|
78
|
+
2. **Derive predicate** — reuse `plan` logic to produce a concrete Success predicate: exact shell command + expected output. For `optimize-metric`, run the full plan/wizard derivation internally.
|
|
79
|
+
3. **Confirm** — ONE `request_user_input` showing: archetype, mode, concrete predicate (command + expected output), terminal choice (stop-at-verified vs proceed-to-ship). Misclassifications are caught here, not mid-run.
|
|
80
|
+
4. **Round-0 dry-run** — prove the predicate command runs and returns a value; safety-screen every derived command via `screen-cmd`; print projected cycle budget. Stop here if `--dry-run`.
|
|
81
|
+
5. **Loop** until predicate satisfied:
|
|
82
|
+
a. Assess state via cheap signals (last `handoff.json`, regression verdict, error count) + affected-test verify.
|
|
83
|
+
b. `scripts/orchestrate.sh next-hop orchestrator-state.json` → next subcommand.
|
|
84
|
+
c. Run subcommand (its own bounded inner loop).
|
|
85
|
+
d. Record per-hop outcome ∈ {progressed, no-op, failed, blocked}.
|
|
86
|
+
e. Fold hop's `handoff.json` into `orchestrator-state.json`.
|
|
87
|
+
f. `scripts/orchestrate.sh units` → recompute **Units remaining**.
|
|
88
|
+
6. **Stop conditions** (checked after each hop):
|
|
89
|
+
- Predicate met → ship gate (only if ship is in the pipeline) else `CONVERGED`.
|
|
90
|
+
- `scripts/orchestrate.sh plateau orchestrator-state.json` → true → stop + report `PLATEAU`.
|
|
91
|
+
- Cycles > ceiling (default 50, override `--max-cycles N`) → stop + report `CEILING`.
|
|
92
|
+
- Hop outcome `blocked`/`failed` with no alternative route → checkpoint + stop + report `BLOCKED`.
|
|
93
|
+
|
|
94
|
+
### Orchestrator State
|
|
95
|
+
|
|
96
|
+
`orchestrator-state.json` — orchestrator-owned, additive. Tracks: goal, archetype, predicate, terminal-choice, `units_remaining` history, cycle count, per-hop pipeline log with outcomes, current incumbent. Each hop's `handoff.json` is unchanged (single-hop bridge); the orchestrator reads it and folds it in. Two clearly-owned state objects, no overlap.
|
|
97
|
+
|
|
98
|
+
### Orchestrator Safety Invariants
|
|
99
|
+
|
|
100
|
+
- **Never auto-approve ship/deploy/push.** The orchestrator never passes `--auto` to `ship`; deploy always requires explicit user approval.
|
|
101
|
+
- **Data-migration behind anchored DB-URL allowlist.** Reuses regression's allowlist — host must be `localhost`/`127.0.0.1`/container hostname, or database name carries `_test`/`_ci` suffix. Bare substring match does not qualify. Anything else refused.
|
|
102
|
+
- **screen-cmd on every derived command** — run before the loop starts AND on every command read from a persisted state file on resume. Persisted commands are never trusted; resume re-screens the pinned predicate via `screen-state-predicate` and refuses on `refuse`.
|
|
103
|
+
- **No un-screened commands mid-loop.** The autonomous loop cannot introduce new shell commands that bypass `screen-cmd`.
|
|
104
|
+
- **Predicate pinned, not re-derived.** Round-0 writes the derived Success predicate verbatim into `orchestrator-state.json`; every cycle and every resume reuses that exact string so "done" is reproducible across runs.
|
|
105
|
+
- **Validate the ledger before routing.** `validate-state` gates `orchestrator-state.json` (required fields + coarse types); a malformed ledger is not trusted to route from.
|
|
106
|
+
- **Independent verify before convergence.** High-impact changes accepted on the working signal set `pending_verify`; `next-hop` routes to a `verify` hop (held-out / adversarial check) before `DONE` or ship. The verify hop never auto-approves ship.
|
|
107
|
+
- **Unknown-units cycles excluded from Plateau counter.** A cycle where `units` returns `unknown` (e.g. runner crash) is not counted as zero-progress; repeated `unknown` routes to `BLOCKED`.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: autoresearch
|
|
3
|
+
description: "Autonomous iteration loop: modify, verify, keep/discard against any metric"
|
|
4
|
+
argument-hint: "[Goal: <text>] [Scope: <glob>] [Metric: <text>] [Verify: <cmd>] [Guard: <cmd>] [Iterations: N] [--evals]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
EXECUTE IMMEDIATELY — do not deliberate before reading this protocol.
|
|
8
|
+
|
|
9
|
+
## Parse Arguments
|
|
10
|
+
|
|
11
|
+
Extract from $ARGUMENTS:
|
|
12
|
+
- `Goal:` — what to improve
|
|
13
|
+
- `Scope:` or `--scope` — file globs
|
|
14
|
+
- `Metric:` — what to measure
|
|
15
|
+
- `Direction:` — higher_is_better (default) or lower_is_better
|
|
16
|
+
- `Verify:` — shell command that outputs a number
|
|
17
|
+
- `Guard:` — optional safety command (must always pass)
|
|
18
|
+
- `Iterations:` or `--iterations` — integer N for bounded mode (default: 25). "unlimited" for unbounded.
|
|
19
|
+
- `--evals` — enable mid-loop checkpoints
|
|
20
|
+
- `--evals-interval N` — checkpoint frequency override
|
|
21
|
+
- `--chain <targets>` — comma-separated downstream commands
|
|
22
|
+
|
|
23
|
+
## Setup (if required context missing)
|
|
24
|
+
|
|
25
|
+
If Goal, Scope, Metric, or Verify missing → use request_user_input (single batched call):
|
|
26
|
+
Q1 (Goal): "What do you want to improve?"
|
|
27
|
+
Q2 (Scope): "Which files?" — suggest globs from project
|
|
28
|
+
Q3 (Metric+Verify): "How to measure? Provide a shell command that outputs a number"
|
|
29
|
+
Q4 (Guard): "Safety command that must always pass?" — options: test cmd, build cmd, skip
|
|
30
|
+
If ALL provided inline → skip setup, proceed directly.
|
|
31
|
+
|
|
32
|
+
## Precondition Checks
|
|
33
|
+
|
|
34
|
+
1. Verify git repo exists (`git rev-parse --git-dir`)
|
|
35
|
+
2. Check clean working tree (`git status --porcelain`) — warn if dirty
|
|
36
|
+
3. Check for stale lock files, detached HEAD
|
|
37
|
+
4. If Guard set → run Guard to establish guard baseline
|
|
38
|
+
5. Fail fast on any critical issue. Warn on non-critical.
|
|
39
|
+
|
|
40
|
+
## Verify Safety Screen
|
|
41
|
+
|
|
42
|
+
Before first dry-run, screen Verify command for: rm -rf, fork bombs, curl|sh, embedded credentials, outbound writes. Block dangerous commands.
|
|
43
|
+
|
|
44
|
+
## Establish Baseline (Iteration 0)
|
|
45
|
+
|
|
46
|
+
1. Run Verify command → extract numeric metric
|
|
47
|
+
2. Record as iteration 0 in TSV: `0\t{timestamp}\t{commit}\t{metric}\t0.0\t{guard}\t-\tbaseline\tinitial state`
|
|
48
|
+
3. Create output directory: `autoresearch/loop-{YYMMDD}-{HHMM}/`
|
|
49
|
+
4. Write TSV header: `# metric_direction: {direction}\niteration\ttimestamp\tcommit\tmetric\tdelta\tguard\tguard-metric\tstatus\tdescription`
|
|
50
|
+
|
|
51
|
+
## Iteration Loop
|
|
52
|
+
|
|
53
|
+
For each iteration (1 to max_iterations, or unbounded):
|
|
54
|
+
|
|
55
|
+
### Phase 1: Review (read git history as memory)
|
|
56
|
+
- Read last 10-20 lines of results TSV
|
|
57
|
+
- Run `git log --oneline -20` — see what worked/failed
|
|
58
|
+
- If last iteration was "keep" → run `git diff HEAD~1` to see what improved metric
|
|
59
|
+
- Identify: what worked, what failed, what's untried
|
|
60
|
+
|
|
61
|
+
### Phase 2: Modify
|
|
62
|
+
- Based on review, make ONE focused change to improve the metric
|
|
63
|
+
- Change must be atomic — one logical unit of work
|
|
64
|
+
|
|
65
|
+
### Phase 3: Commit
|
|
66
|
+
- Stage and commit with `experiment: {description}` prefix
|
|
67
|
+
- Record commit SHA
|
|
68
|
+
|
|
69
|
+
### Phase 4: Verify
|
|
70
|
+
- Run Verify command → extract new metric value
|
|
71
|
+
- Calculate delta from previous iteration
|
|
72
|
+
- Metric improved (correct direction) → candidate for keep
|
|
73
|
+
|
|
74
|
+
### Phase 5: Guard (if configured)
|
|
75
|
+
- Run Guard command. If fails → revert regardless of metric improvement
|
|
76
|
+
|
|
77
|
+
### Phase 6: Decide
|
|
78
|
+
- **keep** — metric improved, guard passed → commit stays
|
|
79
|
+
- **discard** — metric worsened → `git revert HEAD --no-edit`
|
|
80
|
+
- **crash** — verify/guard command failed → `git revert HEAD --no-edit`
|
|
81
|
+
- **no-op** — no change made this iteration
|
|
82
|
+
- **hook-blocked** — git hook blocked the commit
|
|
83
|
+
- **metric-error** — verify output not a valid number → `git revert HEAD --no-edit`
|
|
84
|
+
|
|
85
|
+
### Phase 7: Log
|
|
86
|
+
Append row to TSV: iteration, timestamp, commit/-, metric, delta, guard status, guard-metric, status, description
|
|
87
|
+
|
|
88
|
+
### Eval Checkpoint
|
|
89
|
+
If --evals: check if current_iteration % interval == 0 → run checkpoint analysis.
|
|
90
|
+
|
|
91
|
+
### Bounded Check
|
|
92
|
+
If bounded: current_iteration >= max_iterations → exit loop, print summary.
|
|
93
|
+
|
|
94
|
+
## Summary (after loop ends)
|
|
95
|
+
|
|
96
|
+
Print: total iterations, kept/discarded counts, starting metric → final metric, improvement %, top 3 most effective changes.
|
|
97
|
+
|
|
98
|
+
## Eval Checkpoint (--evals flag)
|
|
99
|
+
|
|
100
|
+
If --evals present:
|
|
101
|
+
- Compute interval: floor(max_iterations / 3), min 1. Fixed 10 if unbounded. Override: --evals-interval N.
|
|
102
|
+
- Every {interval} iterations, pause and analyze current results TSV.
|
|
103
|
+
- Print: `--- Eval Checkpoint (iterations {X}-{Y}) ---\nMetric: {start} → {end} ({delta}) | Kept: {n}/{total} | Trend: {up/flat/down}\n{one-line recommendation}\n---`
|
|
104
|
+
- If plateau 3+ checkpoints → recommend early stop.
|
|
105
|
+
- At loop end → full evals summary to evals-summary.md in output directory.
|
|
106
|
+
|
|
107
|
+
## Chain Handoff
|
|
108
|
+
|
|
109
|
+
After completion, write handoff.json to output directory: version "2.1.0", source "loop", timestamp, status (COMPLETE|USER_INTERRUPT|BOUNDED|ERROR), results_tsv path, findings[], config{goal, scope, metric, direction, verify}.
|
|
110
|
+
Invoke next target in --chain order. Propagate --evals flag.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: autoresearch:debug
|
|
3
|
+
description: "Hunt bugs with scientific method: hypothesize, test, falsify, repeat"
|
|
4
|
+
argument-hint: "[Scope: <glob>] [Symptom: <text>] [Iterations: N] [--fix] [--evals]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
EXECUTE IMMEDIATELY.
|
|
8
|
+
|
|
9
|
+
## Parse Arguments
|
|
10
|
+
|
|
11
|
+
Extract from $ARGUMENTS:
|
|
12
|
+
- `Scope:` or `--scope` — file globs to investigate
|
|
13
|
+
- `Symptom:` or `--symptom` — error message or behavior description
|
|
14
|
+
- `Iterations:` or `--iterations` — default 15. "unlimited" for unbounded.
|
|
15
|
+
- `--fix` — shorthand for `--chain fix`
|
|
16
|
+
- `--severity` — filter: critical, high, medium, low
|
|
17
|
+
- `--technique` — force specific technique
|
|
18
|
+
- `--evals`, `--evals-interval N`, `--chain`
|
|
19
|
+
|
|
20
|
+
## Setup (if required context missing)
|
|
21
|
+
|
|
22
|
+
If Scope and Symptom both missing:
|
|
23
|
+
1. Auto-scan: run tests, lint, typecheck to detect existing failures
|
|
24
|
+
2. request_user_input (single batch):
|
|
25
|
+
Q1 (Issue): "What's the problem?" — hunt all bugs, specific error, failing tests, CI failure, performance
|
|
26
|
+
Q2 (Scope): "Which files?" — suggested globs + entire codebase
|
|
27
|
+
Q3 (Depth): "How deep?" — quick (5), standard (15), deep (30+), unlimited
|
|
28
|
+
Q4 (After): "When bugs found?" — report only, find and fix (--chain fix), chain to other, ask each time
|
|
29
|
+
If all provided → skip.
|
|
30
|
+
|
|
31
|
+
## Investigation Techniques
|
|
32
|
+
|
|
33
|
+
| Technique | When to Use |
|
|
34
|
+
|---|---|
|
|
35
|
+
| Binary search | Know when it worked, find when it broke |
|
|
36
|
+
| Differential | Compare working vs broken state |
|
|
37
|
+
| Minimal reproduction | Simplify to smallest failing case |
|
|
38
|
+
| Trace | Follow execution path through code |
|
|
39
|
+
| Pattern search | Grep for known anti-patterns |
|
|
40
|
+
| Working backwards | Start from error, trace to root cause |
|
|
41
|
+
|
|
42
|
+
## Establish Baseline (before loop)
|
|
43
|
+
|
|
44
|
+
1. Auto-scan for failures if no symptom provided
|
|
45
|
+
2. Create output directory: `autoresearch/debug-{YYMMDD}-{HHMM}/`
|
|
46
|
+
3. TSV header: `# metric_direction: higher_is_better\niteration\ttimestamp\thypothesis\tstatus\ttechnique\tevidence\tfile_line`
|
|
47
|
+
4. Metric = cumulative confirmed findings count
|
|
48
|
+
|
|
49
|
+
## Iteration Loop
|
|
50
|
+
|
|
51
|
+
### Phase 1: Review Context
|
|
52
|
+
- Read results TSV (past findings)
|
|
53
|
+
- Assess: what's been tested, what vectors remain
|
|
54
|
+
- If no hypotheses left → early stop
|
|
55
|
+
|
|
56
|
+
### Phase 2: Hypothesize
|
|
57
|
+
- Form ONE specific, falsifiable hypothesis
|
|
58
|
+
- Format: "I hypothesize that {X} because {evidence}. Test by {Y}."
|
|
59
|
+
- Hypothesis must be testable and different from all previous
|
|
60
|
+
|
|
61
|
+
### Phase 3: Investigate
|
|
62
|
+
- Apply appropriate technique for this hypothesis
|
|
63
|
+
- Read relevant code, run targeted tests, check logs
|
|
64
|
+
- Collect evidence (file:line references required)
|
|
65
|
+
|
|
66
|
+
### Phase 4: Classify
|
|
67
|
+
- **confirmed** — hypothesis correct, bug found with evidence
|
|
68
|
+
- **disproven** — hypothesis wrong, evidence against it
|
|
69
|
+
- **inconclusive** — can't prove or disprove, needs different approach
|
|
70
|
+
|
|
71
|
+
### Phase 5: Log
|
|
72
|
+
Append to TSV: iteration, timestamp, hypothesis, status, technique, evidence, file_line
|
|
73
|
+
|
|
74
|
+
### Eval Checkpoint
|
|
75
|
+
If --evals: check if current_iteration % interval == 0 → run checkpoint analysis.
|
|
76
|
+
|
|
77
|
+
### Bounded Check
|
|
78
|
+
If bounded: current_iteration >= max_iterations → exit loop, print summary.
|
|
79
|
+
|
|
80
|
+
## Summary
|
|
81
|
+
|
|
82
|
+
Print: total hypotheses tested, confirmed/disproven/inconclusive counts, all confirmed bugs with severity and file:line.
|
|
83
|
+
|
|
84
|
+
## Eval Checkpoint (--evals flag)
|
|
85
|
+
|
|
86
|
+
If --evals present:
|
|
87
|
+
- Compute interval: floor(max_iterations / 3), min 1. Fixed 10 if unbounded. Override: --evals-interval N.
|
|
88
|
+
- Every {interval} iterations, pause and analyze current results TSV.
|
|
89
|
+
- Print: `--- Eval Checkpoint (iterations {X}-{Y}) ---\nFindings: {confirmed} confirmed | Trend: {up/flat/down}\n{one-line recommendation}\n---`
|
|
90
|
+
- If plateau 3+ checkpoints (no new confirmed) → recommend early stop.
|
|
91
|
+
- At loop end → full evals summary to evals-summary.md in output directory.
|
|
92
|
+
|
|
93
|
+
## Chain Handoff
|
|
94
|
+
|
|
95
|
+
After completion, write handoff.json to output directory: version "2.1.0", source "debug", timestamp, status (COMPLETE|USER_INTERRUPT|BOUNDED|ERROR), results_tsv path, findings = confirmed bugs with severity + file:line, config{scope, symptom}.
|
|
96
|
+
If --fix flag → chain to fix automatically.
|
|
97
|
+
Invoke next target in --chain order. Propagate --evals flag.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: autoresearch:evals
|
|
3
|
+
description: "Analyze iteration results: trends, plateaus, regressions, recommendations"
|
|
4
|
+
argument-hint: "[path/to/results.tsv] [--format text|json|md]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
EXECUTE IMMEDIATELY.
|
|
8
|
+
|
|
9
|
+
## Parse Arguments
|
|
10
|
+
|
|
11
|
+
Extract from $ARGUMENTS:
|
|
12
|
+
- Positional path to a specific TSV file
|
|
13
|
+
- `--format` — output format: text (default console), json, md (markdown file)
|
|
14
|
+
- `--compare <path>` — (v2.2.0 placeholder, not yet implemented)
|
|
15
|
+
|
|
16
|
+
## Input Discovery
|
|
17
|
+
|
|
18
|
+
1. If path provided → use that TSV directly
|
|
19
|
+
2. If no path → scan current directory + `autoresearch/*/` for `*-results.tsv` files
|
|
20
|
+
3. If multiple found → request_user_input: "Which results to analyze?" — list found files
|
|
21
|
+
4. If none found → request_user_input: "Provide path to results TSV"
|
|
22
|
+
5. Also scan project root for v2.0.03 legacy TSV files (backward compat)
|
|
23
|
+
|
|
24
|
+
## Parse TSV
|
|
25
|
+
|
|
26
|
+
1. Read line 1: extract `# metric_direction: higher_is_better|lower_is_better` comment
|
|
27
|
+
- If missing → infer from column names (metric/error_count → guess, or ask user)
|
|
28
|
+
2. Read line 2: header row → detect available columns
|
|
29
|
+
3. Read remaining lines: data rows
|
|
30
|
+
4. Handle missing `timestamp` column gracefully (v2.0.03 compat)
|
|
31
|
+
|
|
32
|
+
## Column Detection & Analysis
|
|
33
|
+
|
|
34
|
+
Activate analysis based on columns present in header:
|
|
35
|
+
|
|
36
|
+
| Column | Analysis |
|
|
37
|
+
|---|---|
|
|
38
|
+
| `metric` | Trend direction, plateau detection (3+ flat iterations), diminishing returns, biggest single-iteration jumps |
|
|
39
|
+
| `delta` | Per-iteration efficiency, cumulative improvement, effort-to-gain ratio |
|
|
40
|
+
| `status` | Keep/discard rate, crash frequency, success streaks, failure clusters, longest winning streak |
|
|
41
|
+
| `guard` + `guard-metric` | Guard failure rate, metric-improved-but-guard-failed analysis |
|
|
42
|
+
| `severity` | Severity distribution (critical/high/medium/low/info), critical discovery rate per iteration |
|
|
43
|
+
| `hypothesis` + `status` | Confirmation rate, investigation efficiency, most productive techniques |
|
|
44
|
+
| `commit` | File hotspot analysis (cross-ref with `git diff` for kept commits), change size correlation |
|
|
45
|
+
| `technique` | Technique effectiveness ranking |
|
|
46
|
+
| `dimension` | Dimension coverage completeness (X/12) |
|
|
47
|
+
| `candidate_label` + `judge_verdict` | Convergence speed, oscillation count |
|
|
48
|
+
| `error_type` | Error category distribution, fix rate per category |
|
|
49
|
+
| `classification` | New vs extension vs duplicate ratio, saturation curve |
|
|
50
|
+
| `convergence_count` | Convergence trajectory |
|
|
51
|
+
|
|
52
|
+
Unknown columns: report presence but skip analysis. Forward-compatible with future subcommands.
|
|
53
|
+
|
|
54
|
+
## Report Structure
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
## Evals Summary — {subcommand} ({N} iterations)
|
|
58
|
+
|
|
59
|
+
### Key Metrics
|
|
60
|
+
- Total iterations: N | Kept: X | Reverted: Y | Revert rate: Z%
|
|
61
|
+
- Starting metric: A | Final metric: B | Improvement: C%
|
|
62
|
+
|
|
63
|
+
### Trend Analysis
|
|
64
|
+
- Metric progression: [description of trajectory]
|
|
65
|
+
- Plateau detected at iteration N (metric stable for M iterations)
|
|
66
|
+
- Biggest win: iteration X (+delta, description)
|
|
67
|
+
- Biggest loss: iteration Y (-delta, description)
|
|
68
|
+
- Diminishing returns: [after iteration N, average delta dropped below threshold]
|
|
69
|
+
|
|
70
|
+
### Patterns
|
|
71
|
+
- What types of changes succeeded: [extracted from descriptions of kept iterations]
|
|
72
|
+
- What types of changes failed: [extracted from descriptions of discarded iterations]
|
|
73
|
+
- File hotspots: [files changed most in kept iterations, if commit data available]
|
|
74
|
+
- Technique effectiveness: [ranked by confirmation rate, if technique column present]
|
|
75
|
+
|
|
76
|
+
### Recommendation
|
|
77
|
+
- [continue / stop / change strategy — based on trend, plateau, revert rate]
|
|
78
|
+
- [specific actionable suggestion based on pattern analysis]
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Output
|
|
82
|
+
|
|
83
|
+
- Console: structured report (30-50 lines)
|
|
84
|
+
- If `--format md` → write `evals-summary.md` in same directory as input TSV
|
|
85
|
+
- If `--format json` → write `evals-summary.json` with structured data
|
|
86
|
+
|
|
87
|
+
## Mid-Loop Checkpoint Protocol (for --evals flag in other commands)
|
|
88
|
+
|
|
89
|
+
This section documents the checkpoint protocol that looping commands embed:
|
|
90
|
+
|
|
91
|
+
- **Adaptive interval:** `floor(max_iterations / 3)`, minimum 1. Fixed 10 for unbounded. Override: `--evals-interval N`.
|
|
92
|
+
- **Checkpoint format (5 lines max):**
|
|
93
|
+
```
|
|
94
|
+
--- Eval Checkpoint (iterations {X}-{Y}) ---
|
|
95
|
+
Metric: {start} → {end} ({delta}) | Kept: {n}/{total} | Trend: {up/flat/down}
|
|
96
|
+
{one-line recommendation}
|
|
97
|
+
---
|
|
98
|
+
```
|
|
99
|
+
- **Early stop recommendation:** if plateau detected for 3+ consecutive checkpoints
|
|
100
|
+
- **Final summary:** at loop end, produce full evals report to console + evals-summary.md
|
|
101
|
+
|
|
102
|
+
### Adaptive Interval Examples
|
|
103
|
+
|
|
104
|
+
| Subcommand | Default Iterations | Interval | Checkpoints At |
|
|
105
|
+
|---|---|---|---|
|
|
106
|
+
| reason | 8 | 2 | 2, 4, 6, 8 |
|
|
107
|
+
| learn | 10 | 3 | 3, 6, 9, final |
|
|
108
|
+
| debug/security | 15 | 5 | 5, 10, 15 |
|
|
109
|
+
| fix/scenario | 20 | 6 | 6, 12, 18, final |
|
|
110
|
+
| core | 25 | 8 | 8, 16, 24, final |
|
|
111
|
+
| unbounded | unlimited | 10 | every 10 |
|
|
112
|
+
|
|
113
|
+
## Backward Compatibility
|
|
114
|
+
|
|
115
|
+
- v2.0.03 TSV files: column names preserved, `timestamp` absence handled gracefully
|
|
116
|
+
- Fuzzy column matching: `metric_value` → `metric`, `error_count` → `metric`
|
|
117
|
+
- Files in project root (not `autoresearch/` subdirectory) → discovered during scan
|
|
118
|
+
- v2.0.03 status values all supported: baseline, keep, keep (reworked), discard, crash, no-op, hook-blocked, metric-error
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: autoresearch:fix
|
|
3
|
+
description: "Crush errors one-by-one until zero remain: tests, types, lint, build"
|
|
4
|
+
argument-hint: "[Target: <cmd>] [Scope: <glob>] [Guard: <cmd>] [Iterations: N] [--evals] [--from-debug]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
EXECUTE IMMEDIATELY.
|
|
8
|
+
|
|
9
|
+
## Parse Arguments
|
|
10
|
+
|
|
11
|
+
Extract from $ARGUMENTS:
|
|
12
|
+
- `Target:` or `--target` — command that shows errors (e.g., `npm test`, `tsc --noEmit`)
|
|
13
|
+
- `Scope:` or `--scope` — file globs to modify
|
|
14
|
+
- `Guard:` or `--guard` — safety command (must always pass)
|
|
15
|
+
- `Iterations:` or `--iterations` — default 20. "unlimited" for unbounded.
|
|
16
|
+
- `--from-debug` — read handoff.json from previous debug run
|
|
17
|
+
- `--category` — filter: test, type, lint, build
|
|
18
|
+
- `--evals`, `--evals-interval N`, `--chain`
|
|
19
|
+
|
|
20
|
+
## Setup (if required context missing)
|
|
21
|
+
|
|
22
|
+
If Target and Scope both missing:
|
|
23
|
+
1. Auto-detect failures: run test suite, type checker, linter, build
|
|
24
|
+
2. Present results via request_user_input (single batched call):
|
|
25
|
+
Q1 (Fix What): "Found [N] test failures, [M] type errors, [K] lint errors. Fix what?" — everything, only tests, only types, only lint
|
|
26
|
+
Q2 (Guard): "Safety command that must always pass?" — npm test, tsc, npm run build, skip
|
|
27
|
+
Q3 (Scope): "Which files can I modify?" — suggested globs from error locations + all
|
|
28
|
+
Q4 (Launch): "Ready?" — fix until zero, fix with limit, cancel
|
|
29
|
+
If all provided → skip setup.
|
|
30
|
+
If --from-debug → read handoff.json for scope and findings.
|
|
31
|
+
|
|
32
|
+
## Precondition Checks
|
|
33
|
+
|
|
34
|
+
Verify: git repo exists, clean working tree, no lock files, no detached HEAD. Fail fast on critical issues.
|
|
35
|
+
|
|
36
|
+
## Establish Baseline (Iteration 0)
|
|
37
|
+
|
|
38
|
+
1. Run Target command → count errors (metric = error count, direction = lower_is_better)
|
|
39
|
+
2. Record baseline in TSV
|
|
40
|
+
3. Create output directory: `autoresearch/fix-{YYMMDD}-{HHMM}/`
|
|
41
|
+
4. TSV header: `# metric_direction: lower_is_better\niteration\ttimestamp\terror_type\terror_fixed\tcommit\tmetric\tdelta\tguard\tstatus\tdescription`
|
|
42
|
+
|
|
43
|
+
## Iteration Loop (until zero errors or max_iterations)
|
|
44
|
+
|
|
45
|
+
### Phase 1: Review
|
|
46
|
+
- Read results TSV + git log
|
|
47
|
+
- Run Target to get current error list
|
|
48
|
+
- If error count == 0 → exit loop (SUCCESS)
|
|
49
|
+
|
|
50
|
+
### Phase 2: Prioritize
|
|
51
|
+
Order: crash/fatal → test failures → type errors → lint → warnings.
|
|
52
|
+
Within category: easiest first (single-file fixes before cross-file).
|
|
53
|
+
|
|
54
|
+
### Phase 3: Fix ONE Thing
|
|
55
|
+
- Pick the highest-priority error
|
|
56
|
+
- Make ONE focused fix (atomic — addresses exactly one error)
|
|
57
|
+
- Record error type and which error was fixed
|
|
58
|
+
|
|
59
|
+
### Phase 4: Commit
|
|
60
|
+
- Stage and commit: `experiment: fix {error_type} — {description}`
|
|
61
|
+
|
|
62
|
+
### Phase 5: Verify
|
|
63
|
+
- Run Target → count errors → compute delta
|
|
64
|
+
- Expected: error count decreased by 1 or more
|
|
65
|
+
|
|
66
|
+
### Phase 6: Guard
|
|
67
|
+
- If Guard set → run Guard. If fails → revert.
|
|
68
|
+
|
|
69
|
+
### Phase 7: Decide
|
|
70
|
+
- **keep** — error count decreased AND guard passes
|
|
71
|
+
- **keep (reworked)** — fix needed adjustment, second attempt worked
|
|
72
|
+
- **discard** — error count same/increased → `git revert HEAD --no-edit`
|
|
73
|
+
- **crash** — target/guard command failed → revert
|
|
74
|
+
- **hook-blocked** — git hook blocked the commit
|
|
75
|
+
- **metric-error** — target output not parseable → revert
|
|
76
|
+
|
|
77
|
+
### Phase 8: Log
|
|
78
|
+
Append row: iteration, timestamp, error_type, error_fixed, commit/-, metric (error count), delta, guard, status, description
|
|
79
|
+
|
|
80
|
+
### Eval Checkpoint
|
|
81
|
+
If --evals: check if current_iteration % interval == 0 → run checkpoint analysis.
|
|
82
|
+
|
|
83
|
+
### Bounded Check
|
|
84
|
+
If bounded: current_iteration >= max_iterations → exit loop, print summary.
|
|
85
|
+
|
|
86
|
+
## Summary
|
|
87
|
+
|
|
88
|
+
Print: total errors fixed, remaining errors, error types distribution, fix success rate.
|
|
89
|
+
|
|
90
|
+
## Eval Checkpoint (--evals flag)
|
|
91
|
+
|
|
92
|
+
If --evals present:
|
|
93
|
+
- Compute interval: floor(max_iterations / 3), min 1. Fixed 10 if unbounded. Override: --evals-interval N.
|
|
94
|
+
- Every {interval} iterations, pause and analyze current results TSV.
|
|
95
|
+
- Print: `--- Eval Checkpoint (iterations {X}-{Y}) ---\nErrors: {start} → {end} ({delta}) | Kept: {n}/{total} | Trend: {up/flat/down}\n{one-line recommendation}\n---`
|
|
96
|
+
- If plateau 3+ checkpoints → recommend early stop.
|
|
97
|
+
- At loop end → full evals summary to evals-summary.md in output directory.
|
|
98
|
+
|
|
99
|
+
## Chain Handoff
|
|
100
|
+
|
|
101
|
+
After completion, write handoff.json to output directory: version "2.1.0", source "fix", timestamp, status (COMPLETE|USER_INTERRUPT|BOUNDED|ERROR), results_tsv path, findings = unfixed errors, config{target, scope, guard}.
|
|
102
|
+
Invoke next target in --chain order. Propagate --evals flag.
|