diff --git a/.changeset/bugfix-event-path.md b/.changeset/bugfix-event-path.md deleted file mode 100644 index 5504542..0000000 --- a/.changeset/bugfix-event-path.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@gemstack/ai-autopilot': minor -'@gemstack/framework': minor ---- - -Domain preset runs can now pick a build event kind, so a preset's bug-fix loop actually fires. A run chooses it with `runFramework({ buildEvent })` / the `framework --kind ` flag, and a preset can declare its own default via `preset.md` `metadata.event` (surfaced as `DomainPreset.defaultEvent`). Precedence: run choice > preset default > `major-change`; an event the preset has no loop for still falls back to the built-in checklist. diff --git a/.changeset/framework-domain-preset-run.md b/.changeset/framework-domain-preset-run.md deleted file mode 100644 index 90d48ed..0000000 --- a/.changeset/framework-domain-preset-run.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -'@gemstack/framework': minor ---- - -Run a build under an Open Loop domain preset (#251). - -`runFramework({ preset, modes })` now accepts a user-picked domain preset -({loops, prompts, skills}). Its skills (and their personas) frame every phase of -the run alongside the detected framework skill, the selected domain and active -modes are narrated, and its loops + prompts are materialized into a driver-backed -`LoopEngine` exposed as `result.loop` (each pass is a fresh driver prompt). The -new `driverLoopPrompts` bridge does the materialization. Opt-in and additive: a -run with no preset is unchanged. Driving the exposed loop as a run phase is the -follow-up (#252). diff --git a/.changeset/framework-yml-event.md b/.changeset/framework-yml-event.md deleted file mode 100644 index 66c4c29..0000000 --- a/.changeset/framework-yml-event.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@gemstack/framework': minor ---- - -the-framework.yml gains an `event:` key so a repo can pin its build event kind (e.g. `bug-fix`) alongside `preset`/`autopilot`/`technical`. Precedence: `--kind` flag > `the-framework.yml` event > preset default > `major-change`. diff --git a/.changeset/open-loop-cli-preset-flags.md b/.changeset/open-loop-cli-preset-flags.md deleted file mode 100644 index 526ac26..0000000 --- a/.changeset/open-loop-cli-preset-flags.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -'@gemstack/framework': minor ---- - -CLI: `--preset ` runs a build under an Open Loop domain preset, with -`--autopilot` / `--technical` mode flags (#256). - -`--preset` resolves a shipped domain preset by name (via `builtinDomainPresets` + -`selectPreset`) and hands it to `runFramework`, so its loops, prompts, and skills -frame the build. `--autopilot` / `--technical` activate the preset's `conditions` -variants (applied at load time and narrated). An unknown preset name is a usage -error that lists the available presets; the mode flags note when given without a -preset. Additive: a run with no `--preset` is unchanged. diff --git a/.changeset/open-loop-domain-loop-review-phase.md b/.changeset/open-loop-domain-loop-review-phase.md deleted file mode 100644 index f93f540..0000000 --- a/.changeset/open-loop-domain-loop-review-phase.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -'@gemstack/framework': minor -'@gemstack/ai-autopilot': minor ---- - -The domain loop drives the production-grade review phase (#252). - -When a run has a domain preset, its review loop now *replaces* the built-in -checklist: each pass dispatches a `major-change` event through the preset's -driver-backed loop, so its review chain (e.g. code review, test coverage, security -review) fires through the wrapped agent, and Bootstrap's pass / improve / maxPasses -machinery gates on the union of the `{ blockers }` verdicts the chain reports. A -preset with no loop for the build event falls back to the built-in checklist, so a -run is never left unreviewed. New: `domainLoopChecklist` + `verdictFromLoopRun` -(@gemstack/framework). - -The shipped Software Development preset's review prompts (code review, test -coverage, security review) now end with a `{ blockers }` verdict so the loop -actually gates rather than only running. diff --git a/.changeset/open-loop-domain-preset.md b/.changeset/open-loop-domain-preset.md deleted file mode 100644 index 04aaad8..0000000 --- a/.changeset/open-loop-domain-preset.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -'@gemstack/ai-autopilot': minor ---- - -Add the Open Loop bundle unit: a domain preset = {loops, prompts, skills} (#242). - -This is the keystone that ties the three data types the framework already ships -separately into one selectable, composable thing. Author one in code with -`defineDomainPreset`, or load one from a directory of `.md` files (`preset.md` + -`loops/`, `prompts/`, `skills/`) with `loadDomainPreset`. `composeDomainPresets` -merges several into one (loops concatenate; prompts and skills merge by id/name, -later wins), so presets-of-presets falls out; `selectPreset` picks the user's -domain by name. Kept distinct from the framework `Preset` detector in `presets/` -(skipped for the Open Loop MVP) by naming this `DomainPreset`. diff --git a/.changeset/open-loop-framework-yml.md b/.changeset/open-loop-framework-yml.md deleted file mode 100644 index 293e380..0000000 --- a/.changeset/open-loop-framework-yml.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -'@gemstack/framework': minor ---- - -Read `the-framework.yml` for per-repo Open Loop defaults (#258). - -A project can now carry its own domain preset + modes, so you do not retype the -flags each run: - -```yaml -preset: software-development -autopilot: true -``` - -The CLI reads it from the run's workspace and merges it with the flags: `--preset` -wins over the file's `preset`; `--autopilot` / `--technical` OR with the file's -booleans (a flag only ever enables a mode). A missing file is a no-op and a -malformed one is a warning, never a failed run. New exports: `loadFrameworkConfig`, -`parseFrameworkConfig`, `mergeRunConfig`, `FRAMEWORK_CONFIG_FILES`, -`FrameworkFileConfig`. diff --git a/.changeset/open-loop-modes-conditions.md b/.changeset/open-loop-modes-conditions.md deleted file mode 100644 index 74f096e..0000000 --- a/.changeset/open-loop-modes-conditions.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -'@gemstack/ai-autopilot': minor ---- - -Add modes (Autopilot / Technical) to domain presets via `conditions` frontmatter (#244). - -A preset content file can now ship mode variants: a `stem..md` sibling -that declares `metadata.conditions` (a mode or list) overrides its `stem.md` base -when those modes are active. `loadDomainPreset(dir, { modes })` (and -`softwareDevelopmentPreset({ modes })`) resolve the winner per stem — the most -specific eligible variant, falling back to the base. The shipped Software -Development preset gains a `technical` variant of its major-change loop as an -illustration. This is the simple frontmatter fan-out; composing prompts from -parameters is the follow-up (#245). diff --git a/.changeset/open-loop-preset-discovery.md b/.changeset/open-loop-preset-discovery.md deleted file mode 100644 index e15e814..0000000 --- a/.changeset/open-loop-preset-discovery.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -'@gemstack/ai-autopilot': minor ---- - -Preset discovery API: enumerate domain presets so the CLI/UI picker can list and -pick one by name (#254). - -`builtinDomainPresets()` loads every domain preset shipped under the package's -`presets/` directory (today just Software Development; new built-ins are picked up -automatically). `loadDomainPresetsFrom(dir)` loads every immediate subdirectory -that holds a `preset.md`, skipping the rest, sorted by name. Pair either with the -existing `selectPreset(list, name)` to pick the user's chosen domain. diff --git a/.changeset/open-loop-rename-rules-to-loops.md b/.changeset/open-loop-rename-rules-to-loops.md deleted file mode 100644 index 8335c05..0000000 --- a/.changeset/open-loop-rename-rules-to-loops.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@gemstack/ai-autopilot': minor ---- - -Rename the loop engine's `rules` vocabulary to `loops` (Open Loop, #241). - -A loop is a meta prompt, so that is the user-facing unit even though rule logic powers it. `defineLoop` / `defaultLoops` / `Loop` / `LoopSpec` replace `defineRule` / `defaultLoopRules` / `LoopRule` / `LoopRuleSpec`; the engine class is now `LoopEngine` (was `Loop`), created via `createLoopEngine` with `LoopEngineOptions`; and its option key is `loops` (was `rules`). Vocabulary only, no behavior change. diff --git a/.changeset/open-loop-repo-memory.md b/.changeset/open-loop-repo-memory.md deleted file mode 100644 index 3fe3a11..0000000 --- a/.changeset/open-loop-repo-memory.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -'@gemstack/framework': minor ---- - -Repo files as persistent AI memory (#260). - -The agent now reads the project's special files (CODE-OVERVIEW.md, -KNOWLEDGE-BASE.md, BRAINSTORMING.md, DECISIONS.md) at the start of a run and is -told to keep the ones it owns current, so a project's memory lives in the repo as -plain markdown and the next run picks up where the last left off. `DECISIONS.md` -stays framework-owned (we write it from the decisions ledger), so the agent reads -it but does not edit it. New: `loadRepoMemory(cwd)`, `memoryFraming`, -`MEMORY_FILES`, and a `memory` option on `runFramework`; the CLI reads the files -from the workspace and frames them alongside personas and skills. diff --git a/.changeset/open-loop-software-development-preset.md b/.changeset/open-loop-software-development-preset.md deleted file mode 100644 index cbbf1d9..0000000 --- a/.changeset/open-loop-software-development-preset.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -'@gemstack/ai-autopilot': minor ---- - -Ship the "Software Development" domain preset (#243). - -The first built-in Open Loop preset, authored as a directory of `.md` files: -two loops (major-change -> code-review + test-coverage + security-review; bug-fix --> root-cause + regression-test), five stack-agnostic prompt bodies, and one skill -pointer. Non-web and user-picked (no dependency detection). Load it with -`softwareDevelopmentPreset()`; `builtinPresetsDir()` points at the shipped -`presets/` directory. Proves the bundle unit end to end. diff --git a/.changeset/open-loop-web-and-data-science-presets.md b/.changeset/open-loop-web-and-data-science-presets.md deleted file mode 100644 index 4912965..0000000 --- a/.changeset/open-loop-web-and-data-science-presets.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -'@gemstack/ai-autopilot': minor ---- - -Add two more built-in domain presets: `web-development` and `data-science`. - -Each ships as a directory of `.md` files like `software-development`, so it is -auto-discovered by `builtinDomainPresets()`, selectable via `--preset ` and -`the-framework.yml`, and drives the review phase. Both carry a Technical Control -variant (leaner major-change loop) and a bug-fix loop. Their major-change review -prompts end with the `{ blockers }` verdict footer so the review loop gates. - -- **web-development** — accessibility, performance budget, and web-security review; skill points at web.dev. -- **data-science** — reproducibility, data validation, and methodology review; skill points at Google's Rules of ML. diff --git a/examples/autopilot-quickstart/CHANGELOG.md b/examples/autopilot-quickstart/CHANGELOG.md index bc06575..98042d7 100644 --- a/examples/autopilot-quickstart/CHANGELOG.md +++ b/examples/autopilot-quickstart/CHANGELOG.md @@ -1,5 +1,19 @@ # @gemstack/example-autopilot-quickstart +## 0.0.7 + +### Patch Changes + +- Updated dependencies [4a6311e] +- Updated dependencies [8c3e7d0] +- Updated dependencies [03e06aa] +- Updated dependencies [3c72f14] +- Updated dependencies [e45e4d0] +- Updated dependencies [396dc7f] +- Updated dependencies [24944b9] +- Updated dependencies [d2acba4] + - @gemstack/ai-autopilot@0.8.0 + ## 0.0.6 ### Patch Changes diff --git a/examples/autopilot-quickstart/package.json b/examples/autopilot-quickstart/package.json index 2f100fc..5a76620 100644 --- a/examples/autopilot-quickstart/package.json +++ b/examples/autopilot-quickstart/package.json @@ -1,6 +1,6 @@ { "name": "@gemstack/example-autopilot-quickstart", - "version": "0.0.6", + "version": "0.0.7", "private": true, "description": "Runnable end-to-end quickstart for @gemstack/ai-autopilot: personas + Supervisor + runner + surfaces composed into one build-a-feature flow, offline via AiFake.", "type": "module", diff --git a/examples/bootstrap-quickstart/CHANGELOG.md b/examples/bootstrap-quickstart/CHANGELOG.md index b042818..ab396d9 100644 --- a/examples/bootstrap-quickstart/CHANGELOG.md +++ b/examples/bootstrap-quickstart/CHANGELOG.md @@ -1,5 +1,19 @@ # @gemstack/example-bootstrap-quickstart +## 0.0.7 + +### Patch Changes + +- Updated dependencies [4a6311e] +- Updated dependencies [8c3e7d0] +- Updated dependencies [03e06aa] +- Updated dependencies [3c72f14] +- Updated dependencies [e45e4d0] +- Updated dependencies [396dc7f] +- Updated dependencies [24944b9] +- Updated dependencies [d2acba4] + - @gemstack/ai-autopilot@0.8.0 + ## 0.0.6 ### Patch Changes diff --git a/examples/bootstrap-quickstart/package.json b/examples/bootstrap-quickstart/package.json index dc4e195..6b6ba30 100644 --- a/examples/bootstrap-quickstart/package.json +++ b/examples/bootstrap-quickstart/package.json @@ -1,6 +1,6 @@ { "name": "@gemstack/example-bootstrap-quickstart", - "version": "0.0.6", + "version": "0.0.7", "private": true, "description": "Runnable capstone for @gemstack/ai-autopilot: preset detection + Bootstrap (scope → architect → build → full-fledged loop → deploy) + scale mode, streamed over surfaces, offline via AiFake + FakeRunner.", "type": "module", diff --git a/examples/framework-demo/CHANGELOG.md b/examples/framework-demo/CHANGELOG.md index d3329f2..26e1574 100644 --- a/examples/framework-demo/CHANGELOG.md +++ b/examples/framework-demo/CHANGELOG.md @@ -1,5 +1,25 @@ # @gemstack/example-framework-demo +## 0.0.4 + +### Patch Changes + +- Updated dependencies [4a6311e] +- Updated dependencies [b81e563] +- Updated dependencies [c28c373] +- Updated dependencies [74a9907] +- Updated dependencies [8c3e7d0] +- Updated dependencies [03e06aa] +- Updated dependencies [c24ae22] +- Updated dependencies [3c72f14] +- Updated dependencies [e45e4d0] +- Updated dependencies [396dc7f] +- Updated dependencies [edd242b] +- Updated dependencies [24944b9] +- Updated dependencies [d2acba4] + - @gemstack/ai-autopilot@0.8.0 + - @gemstack/framework@0.6.0 + ## 0.0.3 ### Patch Changes diff --git a/examples/framework-demo/package.json b/examples/framework-demo/package.json index a270929..d608a56 100644 --- a/examples/framework-demo/package.json +++ b/examples/framework-demo/package.json @@ -1,6 +1,6 @@ { "name": "@gemstack/example-framework-demo", - "version": "0.0.3", + "version": "0.0.4", "private": true, "description": "Showable end-to-end demo of @gemstack/framework: one prompt → scope → architect → build → full-fledged loop → deploy → a real running app, offline and deterministic via the fake driver.", "type": "module", diff --git a/examples/framework-discovery-demo/CHANGELOG.md b/examples/framework-discovery-demo/CHANGELOG.md index 81c1021..eb6e465 100644 --- a/examples/framework-discovery-demo/CHANGELOG.md +++ b/examples/framework-discovery-demo/CHANGELOG.md @@ -1,5 +1,26 @@ # @gemstack/example-framework-discovery +## 0.0.4 + +### Patch Changes + +- Updated dependencies [4a6311e] +- Updated dependencies [b81e563] +- Updated dependencies [c28c373] +- Updated dependencies [74a9907] +- Updated dependencies [8c3e7d0] +- Updated dependencies [03e06aa] +- Updated dependencies [c24ae22] +- Updated dependencies [3c72f14] +- Updated dependencies [e45e4d0] +- Updated dependencies [396dc7f] +- Updated dependencies [edd242b] +- Updated dependencies [24944b9] +- Updated dependencies [d2acba4] + - @gemstack/ai-autopilot@0.8.0 + - @gemstack/framework@0.6.0 + - framework-hello@0.0.3 + ## 0.0.3 ### Patch Changes diff --git a/examples/framework-discovery-demo/package.json b/examples/framework-discovery-demo/package.json index e592316..1ecdb19 100644 --- a/examples/framework-discovery-demo/package.json +++ b/examples/framework-discovery-demo/package.json @@ -1,6 +1,6 @@ { "name": "@gemstack/example-framework-discovery", - "version": "0.0.3", + "version": "0.0.4", "private": true, "description": "End-to-end proof of The Framework's extension SPI (#190): this project depends on the third-party `framework-hello` package, and the CLI discovers, registers, and composes it into the agent frame - offline and deterministic via the fake driver.", "type": "module", diff --git a/examples/framework-hello/CHANGELOG.md b/examples/framework-hello/CHANGELOG.md index 72d9a72..68cd09b 100644 --- a/examples/framework-hello/CHANGELOG.md +++ b/examples/framework-hello/CHANGELOG.md @@ -1,5 +1,19 @@ # framework-hello +## 0.0.3 + +### Patch Changes + +- Updated dependencies [4a6311e] +- Updated dependencies [8c3e7d0] +- Updated dependencies [03e06aa] +- Updated dependencies [3c72f14] +- Updated dependencies [e45e4d0] +- Updated dependencies [396dc7f] +- Updated dependencies [24944b9] +- Updated dependencies [d2acba4] + - @gemstack/ai-autopilot@0.8.0 + ## 0.0.2 ### Patch Changes diff --git a/examples/framework-hello/package.json b/examples/framework-hello/package.json index df8ee2c..6cf80f0 100644 --- a/examples/framework-hello/package.json +++ b/examples/framework-hello/package.json @@ -1,6 +1,6 @@ { "name": "framework-hello", - "version": "0.0.2", + "version": "0.0.3", "private": true, "description": "Example third-party framework-* capability extension. Proves The Framework's extension SPI (#190): install it into a project and the CLI discovers, registers, and composes it with no change to the framework core.", "type": "module", diff --git a/packages/ai-autopilot/CHANGELOG.md b/packages/ai-autopilot/CHANGELOG.md index 0c48a49..6794cee 100644 --- a/packages/ai-autopilot/CHANGELOG.md +++ b/packages/ai-autopilot/CHANGELOG.md @@ -1,5 +1,80 @@ # @gemstack/ai-autopilot +## 0.8.0 + +### Minor Changes + +- 4a6311e: Domain preset runs can now pick a build event kind, so a preset's bug-fix loop actually fires. A run chooses it with `runFramework({ buildEvent })` / the `framework --kind ` flag, and a preset can declare its own default via `preset.md` `metadata.event` (surfaced as `DomainPreset.defaultEvent`). Precedence: run choice > preset default > `major-change`; an event the preset has no loop for still falls back to the built-in checklist. +- 8c3e7d0: The domain loop drives the production-grade review phase (#252). + + When a run has a domain preset, its review loop now _replaces_ the built-in + checklist: each pass dispatches a `major-change` event through the preset's + driver-backed loop, so its review chain (e.g. code review, test coverage, security + review) fires through the wrapped agent, and Bootstrap's pass / improve / maxPasses + machinery gates on the union of the `{ blockers }` verdicts the chain reports. A + preset with no loop for the build event falls back to the built-in checklist, so a + run is never left unreviewed. New: `domainLoopChecklist` + `verdictFromLoopRun` + (@gemstack/framework). + + The shipped Software Development preset's review prompts (code review, test + coverage, security review) now end with a `{ blockers }` verdict so the loop + actually gates rather than only running. + +- 03e06aa: Add the Open Loop bundle unit: a domain preset = {loops, prompts, skills} (#242). + + This is the keystone that ties the three data types the framework already ships + separately into one selectable, composable thing. Author one in code with + `defineDomainPreset`, or load one from a directory of `.md` files (`preset.md` + + `loops/`, `prompts/`, `skills/`) with `loadDomainPreset`. `composeDomainPresets` + merges several into one (loops concatenate; prompts and skills merge by id/name, + later wins), so presets-of-presets falls out; `selectPreset` picks the user's + domain by name. Kept distinct from the framework `Preset` detector in `presets/` + (skipped for the Open Loop MVP) by naming this `DomainPreset`. + +- 3c72f14: Add modes (Autopilot / Technical) to domain presets via `conditions` frontmatter (#244). + + A preset content file can now ship mode variants: a `stem..md` sibling + that declares `metadata.conditions` (a mode or list) overrides its `stem.md` base + when those modes are active. `loadDomainPreset(dir, { modes })` (and + `softwareDevelopmentPreset({ modes })`) resolve the winner per stem — the most + specific eligible variant, falling back to the base. The shipped Software + Development preset gains a `technical` variant of its major-change loop as an + illustration. This is the simple frontmatter fan-out; composing prompts from + parameters is the follow-up (#245). + +- e45e4d0: Preset discovery API: enumerate domain presets so the CLI/UI picker can list and + pick one by name (#254). + + `builtinDomainPresets()` loads every domain preset shipped under the package's + `presets/` directory (today just Software Development; new built-ins are picked up + automatically). `loadDomainPresetsFrom(dir)` loads every immediate subdirectory + that holds a `preset.md`, skipping the rest, sorted by name. Pair either with the + existing `selectPreset(list, name)` to pick the user's chosen domain. + +- 396dc7f: Rename the loop engine's `rules` vocabulary to `loops` (Open Loop, #241). + + A loop is a meta prompt, so that is the user-facing unit even though rule logic powers it. `defineLoop` / `defaultLoops` / `Loop` / `LoopSpec` replace `defineRule` / `defaultLoopRules` / `LoopRule` / `LoopRuleSpec`; the engine class is now `LoopEngine` (was `Loop`), created via `createLoopEngine` with `LoopEngineOptions`; and its option key is `loops` (was `rules`). Vocabulary only, no behavior change. + +- 24944b9: Ship the "Software Development" domain preset (#243). + + The first built-in Open Loop preset, authored as a directory of `.md` files: + two loops (major-change -> code-review + test-coverage + security-review; bug-fix + -> root-cause + regression-test), five stack-agnostic prompt bodies, and one skill + pointer. Non-web and user-picked (no dependency detection). Load it with + `softwareDevelopmentPreset()`; `builtinPresetsDir()` points at the shipped + `presets/` directory. Proves the bundle unit end to end. + +- d2acba4: Add two more built-in domain presets: `web-development` and `data-science`. + + Each ships as a directory of `.md` files like `software-development`, so it is + auto-discovered by `builtinDomainPresets()`, selectable via `--preset ` and + `the-framework.yml`, and drives the review phase. Both carry a Technical Control + variant (leaner major-change loop) and a bug-fix loop. Their major-change review + prompts end with the `{ blockers }` verdict footer so the review loop gates. + + - **web-development** — accessibility, performance budget, and web-security review; skill points at web.dev. + - **data-science** — reproducibility, data validation, and methodology review; skill points at Google's Rules of ML. + ## 0.7.0 ### Minor Changes diff --git a/packages/ai-autopilot/package.json b/packages/ai-autopilot/package.json index de11adc..0f0042b 100644 --- a/packages/ai-autopilot/package.json +++ b/packages/ai-autopilot/package.json @@ -1,6 +1,6 @@ { "name": "@gemstack/ai-autopilot", - "version": "0.7.0", + "version": "0.8.0", "description": "Orchestration for @gemstack/ai-sdk agents: a Supervisor that plans, dispatches subagents (bounded concurrency + budget guardrails), and synthesizes the result.", "keywords": [ "ai", diff --git a/packages/framework/CHANGELOG.md b/packages/framework/CHANGELOG.md index 50ecbe3..7a4ce40 100644 --- a/packages/framework/CHANGELOG.md +++ b/packages/framework/CHANGELOG.md @@ -1,5 +1,87 @@ # @gemstack/framework +## 0.6.0 + +### Minor Changes + +- 4a6311e: Domain preset runs can now pick a build event kind, so a preset's bug-fix loop actually fires. A run chooses it with `runFramework({ buildEvent })` / the `framework --kind ` flag, and a preset can declare its own default via `preset.md` `metadata.event` (surfaced as `DomainPreset.defaultEvent`). Precedence: run choice > preset default > `major-change`; an event the preset has no loop for still falls back to the built-in checklist. +- b81e563: Run a build under an Open Loop domain preset (#251). + + `runFramework({ preset, modes })` now accepts a user-picked domain preset + ({loops, prompts, skills}). Its skills (and their personas) frame every phase of + the run alongside the detected framework skill, the selected domain and active + modes are narrated, and its loops + prompts are materialized into a driver-backed + `LoopEngine` exposed as `result.loop` (each pass is a fresh driver prompt). The + new `driverLoopPrompts` bridge does the materialization. Opt-in and additive: a + run with no preset is unchanged. Driving the exposed loop as a run phase is the + follow-up (#252). + +- c28c373: the-framework.yml gains an `event:` key so a repo can pin its build event kind (e.g. `bug-fix`) alongside `preset`/`autopilot`/`technical`. Precedence: `--kind` flag > `the-framework.yml` event > preset default > `major-change`. +- 74a9907: CLI: `--preset ` runs a build under an Open Loop domain preset, with + `--autopilot` / `--technical` mode flags (#256). + + `--preset` resolves a shipped domain preset by name (via `builtinDomainPresets` + + `selectPreset`) and hands it to `runFramework`, so its loops, prompts, and skills + frame the build. `--autopilot` / `--technical` activate the preset's `conditions` + variants (applied at load time and narrated). An unknown preset name is a usage + error that lists the available presets; the mode flags note when given without a + preset. Additive: a run with no `--preset` is unchanged. + +- 8c3e7d0: The domain loop drives the production-grade review phase (#252). + + When a run has a domain preset, its review loop now _replaces_ the built-in + checklist: each pass dispatches a `major-change` event through the preset's + driver-backed loop, so its review chain (e.g. code review, test coverage, security + review) fires through the wrapped agent, and Bootstrap's pass / improve / maxPasses + machinery gates on the union of the `{ blockers }` verdicts the chain reports. A + preset with no loop for the build event falls back to the built-in checklist, so a + run is never left unreviewed. New: `domainLoopChecklist` + `verdictFromLoopRun` + (@gemstack/framework). + + The shipped Software Development preset's review prompts (code review, test + coverage, security review) now end with a `{ blockers }` verdict so the loop + actually gates rather than only running. + +- c24ae22: Read `the-framework.yml` for per-repo Open Loop defaults (#258). + + A project can now carry its own domain preset + modes, so you do not retype the + flags each run: + + ```yaml + preset: software-development + autopilot: true + ``` + + The CLI reads it from the run's workspace and merges it with the flags: `--preset` + wins over the file's `preset`; `--autopilot` / `--technical` OR with the file's + booleans (a flag only ever enables a mode). A missing file is a no-op and a + malformed one is a warning, never a failed run. New exports: `loadFrameworkConfig`, + `parseFrameworkConfig`, `mergeRunConfig`, `FRAMEWORK_CONFIG_FILES`, + `FrameworkFileConfig`. + +- edd242b: Repo files as persistent AI memory (#260). + + The agent now reads the project's special files (CODE-OVERVIEW.md, + KNOWLEDGE-BASE.md, BRAINSTORMING.md, DECISIONS.md) at the start of a run and is + told to keep the ones it owns current, so a project's memory lives in the repo as + plain markdown and the next run picks up where the last left off. `DECISIONS.md` + stays framework-owned (we write it from the decisions ledger), so the agent reads + it but does not edit it. New: `loadRepoMemory(cwd)`, `memoryFraming`, + `MEMORY_FILES`, and a `memory` option on `runFramework`; the CLI reads the files + from the workspace and frames them alongside personas and skills. + +### Patch Changes + +- Updated dependencies [4a6311e] +- Updated dependencies [8c3e7d0] +- Updated dependencies [03e06aa] +- Updated dependencies [3c72f14] +- Updated dependencies [e45e4d0] +- Updated dependencies [396dc7f] +- Updated dependencies [24944b9] +- Updated dependencies [d2acba4] + - @gemstack/ai-autopilot@0.8.0 + ## 0.5.2 ### Patch Changes diff --git a/packages/framework/package.json b/packages/framework/package.json index 73df969..57b2d15 100644 --- a/packages/framework/package.json +++ b/packages/framework/package.json @@ -1,6 +1,6 @@ { "name": "@gemstack/framework", - "version": "0.5.2", + "version": "0.6.0", "description": "The (AI) Framework: turnkey, zero-config AI orchestration that wraps a coding-agent CLI (Claude Code) as a black box and takes you from an idea to a running app. Vite for AI.", "keywords": [ "ai",