Releases: ben-rogerson/generata
@generata/core@1.2.0
Minor Changes
-
b149d58: Brand
WorktreeConfigsoisolationrequires theworktree()helper. The previous structural type let raw object literals assign through; the brand forces consumers to use the helper or omit the field. -
95fd6ca: Chain-builder workflow API + typed factory agents.
defineWorkflownow returns a fluent builder (.step().step().build()) anddefineAgentaccepts a factory(inputs) => configthat types the agent's input contract. Workflow→agent wiring typos and forward-step references error in the editor; the engine no longer auto-leaks prior step outputs to agents (only what a stepFn explicitly maps reaches the agent). Breaking for code on the previousdefineWorkflow({ steps: [...] })shape — pre-1.0 surface, no published consumers yet, so a minor bump. -
d16de2b: Add shorthand for running workflows:
generata <name>is now equivalent togenerata workflow <name>. The first positional argument is treated as a workflow name unless it matches a reserved subcommand (init,add,agent,workflow,run,validate,metrics,skills,help). The longer form keeps working unchanged. -
56082cf: Short-circuit critic retry on STATUS: halt and narrow Tool enum. The engine now breaks the critic-rejection retry loop when the worker reports a structural halt, since retrying cannot resolve a spec/plan-level conflict. The Tool enum drops
"read","glob","grep"(no-op tokens that were never wired to the runner); shipped templates are updated to declare only the tools they use. -
cc1687a: Remove agent summaries feature. The post-agent humanize step added latency and cost to every run for a recap most users skipped, and the
agentSummariesconfig option is now gone. -
a7b38c1: Remove the
supervisoragent type. No shipped template used it, and the dynamic-workflow-generation path it powered added complexity to theagentCLI without a corresponding consumer.defineAgent({ type: "supervisor", ... })is no longer accepted. -
bc019d7: Rename agent
promptTemplatefield toprompt. The shorter name reads naturally and matches the field's role - it's the prompt string the LLM sees, not a "template" in any generative sense (the factory's closure handles interpolation). Breaking for any code that referencesagent.promptTemplateor sets it on adefineAgentliteral; pre-1.0, no published consumers, so a minor bump. -
c4d49df: Redesign the run header: rainbow
generatabanner with an italic tagline, a7d · …weekly metrics line (newshowWeeklyMetricsconfig, default on) that compares against the prior 7 days, and the prompt log path shown in-header whenlogPromptsis on. Prompt log files now live at<logsDir>/<kind>/<basename>-<runId>.logwith collision-aware fallback. Agent type colours moved to cyan/magenta/orange so they no longer clash with status colours. -
372554b: Show isolation mode (
localorworktree: <path>) in the workflow start header so the run environment is visible at a glance and the worktree location is discoverable. Adds an optionalisolationparameter tologWorkflowStartand exports a newWorkflowIsolationtype. -
45d9593: Add
showPricingconfig option (defaultfalse). When off, runtime logs and notifications hide USD costs and show token counts instead. Thegenerata metricssubcommand still surfaces cost as before. SetshowPricing: trueindefineConfigto restore the previous behaviour. -
d24a3b1: Typed outputs, first-class halts, and surgical bin permissions.
- New
outputs: Record<string, string>field on agents (key → LLM-facing description). Engine wires a per-agent emit bin with surgicalBash(<bin>:*)permission, parses the captured values, and merges them into the runtime params bag. Chain builder threads the literal output keys throughTBaseParamsso downstream stepFns destructure them with full type-safety. - First-class halts: agents call
--halt "<reason>"via the emit bin to stop the workflow cleanly (no metric failure, downstream steps skipped,haltReasonset). Replaces text-sentinel patterns (STATUS: halt,NO_ITEMS, etc.). - Factory-form
onReject:StepOptions.onRejectaccepts a typed stepFn(params) => StepInvocationwith the same contextual typing as.step(). Wrap factories in a stepFn to use them as rejection handlers. - Internal:
verdict/paramsbin permissions tightened to surgicalBash(<bin>:*)patterns (no more broadBashinjection for critics/planners).
- New
-
f308457: Add
verboseOutputconfig flag. Workflow runs now show a per-step spinner with tagline by default; setverboseOutput: trueto restore the inline tool-event stream. Configs scaffolded bygenerata initopt in. -
a869be2: Add
isolation: "worktree"opt-in todefineWorkflow. When enabled, the workflow runs against a fresh git worktree created fromorigin/main, while logs, metrics, and a configurable list ofsharedPathssymlink back to the main checkout. The worktree is pruned at run end regardless of outcome. New CLI:--worktree/--localruntime overrides ongenerata workflow <name>, and agenerata worktree prunerecovery subcommand for orphaned worktrees. -
0898ef6: Add
baseReftoWorktreeConfigso workflows can override the defaultorigin/mainbase for git-worktree isolation. A<remote>/<branch>value triggers a fetch first; a bare branch like"main"is treated as a local ref and used without fetching.
Patch Changes
- 1407041: Print help for bare
generatainvocation instead ofUnknown command: undefined. New users running the CLI with no arguments now discover the available subcommands. - 31a7774: Add test guidance to the
codingtemplate's markdown-slide-deck starter idea in NOTES.md. The seed now spells out the Ink testing approach (useink-testing-librarywithlastFrame()andstdin.writerather than driving the built binary viaexpect/script) and requires a sample deck atexamples/intro.mdthat doubles as the test fixture and README demo, exercising every splitter rule (---separators, top-level#headings, fenced code blocks forcli-highlight, lists, and inline emphasis). - 6a7fde7: Refresh the
codingtemplate's starter ideas and fix recency-biased idea selection. NOTES.md now ships with three modern, immediately-runnable TypeScript seeds (a terminal weather card via Open-Meteo, a markdown slide deck built on Ink, and a Carbon-style code screenshot generator using shiki + sharp) instead of the previous five utilitarian CLIs. Thebuild-projectworkflow now seeds a random integer into spec-creator, which picks the unbuilt idea atrandom_pick mod Nrather than the LLM's subjective notion of "most compelling" - removing the bug where the agent reliably chose the last item in NOTES.md. The post-install message in the manifest is updated to match. - 72661af: Enforce tools[] restrictions for full-permission agents. Previously the runner ignored the tools[] array under permissions: 'full', silently disabling any declared restriction; it now emits --allowedTools alongside --dangerously-skip-permissions.
- 08feeae: Throw
EnvProfileErrorfromrunWorkflowinstead of callingprocess.exit(1). Lets CLI, tests, and library consumers decide how to handle the error. - 3923f4c: Mark failed workflow steps with ✗ in the per-step CLI output. Previously a step whose agent exited non-zero still rendered with a green tick, even though the workflow summary correctly reported FAILED.
- dbf8a37: Fix workflow step output printing
↳ undefined <model>instead of the agent name. The registry's TypeScript loader was creating a fresh module graph per call, so an agent imported transitively by a workflow file was a different object than the one loaded directly into the registry - the name mutation only landed on one copy. Switched to Node's regularimport()so both references share the ESM cache. - 8f3b029: Run oxfmt across the codebase to baseline formatting against the formatter's defaults. No functional change; pure source reflow.
- 0a7d248: Show raw token counts under 1000 in logs instead of rounding to "0k tok". Small steps now report e.g. "543 tok"; counts ≥ 1000 keep the existing "Nk tok" format.
- c5daf72: Render engine bin invocations (emit, verdict, params) in plain English in verbose stream output instead of raw
Bash: /abs/path/bin/... --flag "..."lines. Now shows e.g.Halted with reason: "...",Verdict: approve,Outputs emitted: spec_filepath="...", so it's clearer what the agent actually did. - 049eb77: Colour only the ✓/✗ glyph in step-done logs. Id, duration, tokens, cost, and model now render in the default colour to reduce visual noise.
- a4530f9: Replace hardcoded /tmp paths with os.tmpdir() for cross-platform portability. Engine and agent-runner now work on Windows and systems with non-POSIX temp directories.
- ee7a67d: Harden subprocess handling for hung agents and missing critic verdicts. Adds a SIGKILL backstop 10s after a timed-out agent's SIGTERM so a non-responsive Claude CLI can no longer block the parent run, and retries the critic step (up to
maxRetries) when it returns no verdict instead of halting on the first transient miss. - 9055c29: Fix
[object Object]rendering ingenerata help templates. The catalog format moved to{ url, subdir }objects but the help command was still typing entries as plain strings; now destructures the fields and prints<url> (<subdir>). - 8b99c85: Fix: flatten nested workflow names in slash command generation. Workflows under nested paths now generate commands with just the basename instead of namespaced paths, and collision detection prevents duplicate command names.
- e6543ad: Prevent sub-agents from recursively invoking their own workflow. Generated slash commands matching an agent's task description (via
generata skills sync) combined with global "always invoke skills" directives caused agents t...
@generata/core@1.1.1
Patch Changes
- 07f2c36: Fix
generata initfailing with ERR_MODULE_NOT_FOUND fortsxwhen run viapnpm dlxfrom a directory that doesn't have tsx in scope. The bin now resolves the tsx loader via an absolute file URL.
@generata/core@1.1.0
Minor Changes
-
28ae9d2: - Removed
@generata/swsand@generata/stockfrom the catalog (templates.json); only@generata/codingexists today.- Coding template manifest: dropped
WORKDIRfromrequiredEnv(the working directory is now set ingenerata.config.ts, no longer prompted as an env var). Tidied bin hints and rewrotepostInstallto match the current init flow. - Coding README: updated the env table and added a note about configuring
workdiringenerata.config.ts.
- Coding template manifest: dropped
-
d0792d8:
@generata/codingtemplate overhaul: replaced the 13-agent / 4-workflow pipeline with a single spec-drivenbuild-projectworkflow built from 8 flat agents.- New flow:
dream(spec-creator) ->plan(plan-creator) ->audit(plan-reviewer, retries plan up to 2x with feedback) ->execute(code-writer) ->verify(code-reviewer, archives the project on reject) ->readme->tidy(plucks the used idea from NOTES.md). - Each project is self-contained under
projects/<plan_name>/withSPEC.md,PLAN.md,README.md, and code as siblings. The legacycode/subdir convention is gone. - Reject path archives the failed project to
projects/_archive/<plan_name>/with a generatedREASON.md. NOTES.mdships pre-populated with five starter ideas sopnpm generata workflow build-projectworks on a fresh init.- Dropped: Cloudflare deploy, git committer, plan interview, ref enrichment, and the
execute-plan/daily-plan/dream-and-build/deploy-projectworkflows. - Manifest stripped: no
git/wrangler/ Telegram requirements; onlyclaudeis needed.
Breaking for existing users of the coding template - re-init to pick up the new pipeline.
- New flow:
-
ac65068: Drop the
namefield fromdefineAgent()anddefineWorkflow()- names are derived from each file's path relative toagentsDir. Workflows can now live anywhere underagentsDir; theworkflowsDirconfig option has been removed. The CLI accepts either the canonical name (core/plan-dreamer) or just the basename (plan-dreamer) when the basename is unambiguous. -
e2dd9b7:
generata initnow detects which package manager invoked it (vianpm_config_user_agent) and uses that PM for the install step in fresh projects. Sonpx @generata/core init ...runsnpm install,pnpm dlx @generata/core init ...runspnpm install, and so on. Existing projects with a lockfile still get matched against that lockfile. -
9f42508:
generata initnow runs in non-empty directories. Existing files are preserved; template-file conflicts error unless--forceis passed. Removes the previous "use 'generata add'" loop where users with existing files couldn't init or add. -
184d89f:
generata initnow writes a defaultgenerata.config.tsif one doesn't already exist in the destination. Previously, init scaffoldedagents/,package.json,.env, and slash commands but no anchor file, so subsequent commands likegenerata help workflowswould fail with "No generata.config.ts found". The default config sets sensible Claude model tiers and pointsworkdirat the destination directory; users can edit it freely. Existing config files are preserved. -
0bd93ab: Make
workDiroptional indefineConfig.loadConfignow back-fills it from the directory containinggenerata.config.ts, so user configs no longer need to repeat the path. -
70d6533: Added two new catalog templates alongside
@generata/coding:@generata/starter- bare-minimum scaffold (one worker agent, one workflow). Designed to be edited or thrown away as users build their own pipeline. Good for learning the model without inheriting a use case.@generata/standup- daily standup generator. Reads yesterday's git activity and drafts a 3-section update (yesterday / today / blockers). Two agents demonstrating two-step composition.
Both appear in
generata help templatesandgenerata init(no args) listings. -
c47b493: Template
README.mdnow lands atREADME-<alias>.mdin the destination instead of overwriting the user's ownREADME.md. Alias is derived from the manifest name (@generata/coding→README-coding.md). Multiple templates can now coexist in one project (e.g. viaadd) without README conflicts. Templates can still override the path explicitly viainstallPathsin their manifest. -
3a0bbe8: Workflow runs now print the final agent's text output below the step-done line, mirroring how single-agent runs (
generata agent ...) display their result. Skips empty output, the interactive-session placeholder, and critic last-steps (whose verdict summary already prints). Applies to both static workflows and supervisor-generated workflows.
Patch Changes
-
7d6904a: fixed release action
-
1a99693: update github workflows
-
7d1d6ee: Rename the
workdirfield ingenerata.config.tstoworkDirto match the camelCase convention of the other directory fields (agentsDir,workflowsDir,metricsDir,logsDir). The internalwork_dirJinja template builtin is unchanged.Breaking: existing config files must rename
workdir:toworkDir:. The init scaffolder now generates the new spelling. -
611c893:
generata initno longer crashes when the template scan can't import an agent or workflow file (typically because a fresh template clone has nonode_modules). Files that fail to load are skipped with a single summary line; the workflow precheck still catches missing env vars at run time. -
f657c93:
generata initno longer writes a 0-byte.env.examplewhen the template declares norequiredEnvand no scanned agent declaresenvKeys. Prints a one-line note in its place so the step output stays accurate. -
cc3f90f:
initandaddno longer treat identical files as conflicts. If the destination file already has byte-identical content to what the template would write, the copy is skipped silently and not counted as a conflict. Only files whose content differs trigger the existing "re-run with --force" error. Re-runninginit/addagainst an unchanged template is now idempotent.