aw-spec-cli 0.1.26 → 0.1.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/.agents/skills/appweaver/SKILL.md +7 -47
- package/assets/.appweaver/ORCH-DIALECT.md +13 -9
- package/assets/.appweaver/RULE-PARTITION.md +11 -12
- package/assets/.appweaver/STACK-PROFILES.md +260 -108
- package/assets/.appweaver/domain.json +1 -1
- package/assets/.appweaver/interpreter/run-skill.py +28 -7
- package/assets/.appweaver/orchestrator/AGENT-PROFILE.md +38 -10
- package/assets/.appweaver/orchestrator/LAUNCHER.md +88 -0
- package/assets/.appweaver/orchestrator/README.md +120 -53
- package/assets/.appweaver/orchestrator/adapters/claude_agent_sdk.py +1 -1
- package/assets/.appweaver/orchestrator/modules/delta-plan.orch.yaml +17 -7
- package/assets/.appweaver/orchestrator/modules/domain-select.orch.yaml +6 -4
- package/assets/.appweaver/orchestrator/modules/foundation-lane.orch.yaml +237 -0
- package/assets/.appweaver/orchestrator/modules/foundation-pack.orch.yaml +392 -0
- package/assets/.appweaver/orchestrator/modules/foundation-spec.orch.yaml +548 -0
- package/assets/.appweaver/orchestrator/modules/lane-gate.orch.yaml +4 -4
- package/assets/.appweaver/orchestrator/modules/tech-select.orch.yaml +3 -3
- package/assets/.appweaver/orchestrator/orchestrator.py +162 -63
- package/assets/.appweaver/orchestrator/rev-templates/delta-design-template.skeleton.md +5 -4
- package/assets/.appweaver/orchestrator/rev-templates/design-template.skeleton.md +3 -1
- package/assets/.appweaver/orchestrator/rev-templates/domain-constitution.skeleton.md +2 -2
- package/assets/.appweaver/orchestrator/rev-templates/domain-requirements.skeleton.md +2 -2
- package/assets/.appweaver/orchestrator/rev-templates/domain-rule-bindings.skeleton.md +21 -13
- package/assets/.appweaver/orchestrator/rev-templates/frontend-rule-file.skeleton.md +1 -1
- package/assets/.appweaver/orchestrator/rev-templates/tech-rule-bindings.skeleton.md +28 -31
- package/assets/.appweaver/orchestrator/rev-templates/technical-constitution.skeleton.md +2 -2
- package/assets/.appweaver/orchestrator/rev-templates/technical-rule-file.skeleton.md +1 -1
- package/assets/.appweaver/orchestrator/rev-templates/ui-constitution.skeleton.md +3 -3
- package/assets/.appweaver/orchestrator/rev-templates/ui-delta-design-template.skeleton.md +4 -1
- package/assets/.appweaver/orchestrator/rev-templates/ui-design-template.skeleton.md +6 -4
- package/assets/.appweaver/orchestrator/workflows/_smoke.orch.yaml +41 -3
- package/assets/.appweaver/orchestrator/workflows/aw-spec-add-component.orch.yaml +1 -1
- package/assets/.appweaver/orchestrator/workflows/aw-spec-adopt.orch.yaml +17 -16
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan-delta.orch.yaml +7 -1
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan.orch.yaml +7 -1
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice-delta.orch.yaml +3 -3
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +3 -3
- package/assets/.appweaver/orchestrator/workflows/aw-spec-build.orch.yaml +4 -4
- package/assets/.appweaver/orchestrator/workflows/aw-spec-characterize.orch.yaml +2 -2
- package/assets/.appweaver/orchestrator/workflows/aw-spec-constitution.orch.yaml +61 -12
- package/assets/.appweaver/orchestrator/workflows/aw-spec-deploy.orch.yaml +1 -1
- package/assets/.appweaver/orchestrator/workflows/aw-spec-foundation.orch.yaml +172 -293
- package/assets/.appweaver/orchestrator/workflows/aw-spec-implement.orch.yaml +253 -44
- package/assets/.appweaver/orchestrator/workflows/aw-spec-onboard.orch.yaml +72 -71
- package/assets/.appweaver/orchestrator/workflows/aw-spec-parity.orch.yaml +2 -2
- package/assets/.appweaver/orchestrator/workflows/aw-spec-plan.orch.yaml +38 -14
- package/assets/.appweaver/orchestrator/workflows/aw-spec-run.orch.yaml +4 -4
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-bounded-context.orch.yaml +26 -2
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-domain.orch.yaml +21 -15
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-stack.orch.yaml +14 -14
- package/assets/.appweaver/orchestrator/workflows/aw-spec-specify.orch.yaml +3 -3
- package/assets/.appweaver/orchestrator/workflows/aw-spec-ui-model.orch.yaml +3 -3
- package/assets/.appweaver/orchestrator/workflows/aw-spec-ui-prototype.orch.yaml +6 -6
- package/assets/.appweaver/scripts/bash/aw-spec-actions.sh +371 -131
- package/assets/.appweaver/scripts/powershell/aw-spec-actions.ps1 +293 -76
- package/assets/.appweaver/scripts/python/aw-foundation.py +885 -20
- package/assets/.appweaver/scripts/python/aw-inventory.py +28 -21
- package/assets/.appweaver/scripts/python/aw-plan-coverage.py +2 -2
- package/assets/.appweaver/scripts/python/aw-rev-constitution.py +6 -6
- package/assets/.appweaver/scripts/python/aw-stack.py +676 -99
- package/assets/.appweaver/stack-profiles/angular.json +2 -1
- package/assets/.appweaver/stack-profiles/blazor-wasm.json +2 -1
- package/assets/.appweaver/stack-profiles/dotnet-webapi.json +18 -3
- package/assets/.appweaver/stack-profiles/go-chi.json +6 -1
- package/assets/.appweaver/stack-profiles/java-spring.json +14 -5
- package/assets/.appweaver/stack-profiles/nextjs.json +2 -1
- package/assets/.appweaver/stack-profiles/node-express.json +8 -2
- package/assets/.appweaver/stack-profiles/python-fastapi.json +9 -2
- package/assets/.appweaver/stack-profiles/react-vite.json +2 -1
- package/assets/.appweaver/stack-profiles/sveltekit.json +2 -1
- package/assets/.appweaver/stack-profiles/vue-vite.json +2 -1
- package/assets/.appweaver/stacks.json +40 -1
- package/assets/.appweaver/templates/constitution-ui-template.md +2 -2
- package/assets/.appweaver/templates/delta-design-template.md +7 -5
- package/assets/.appweaver/templates/design-template.md +3 -0
- package/assets/.appweaver/templates/ui-delta-design-template.md +1 -1
- package/assets/.appweaver/templates/ui-design-template.md +6 -4
- package/assets/.claude/skills/appweaver/SKILL.md +7 -46
- package/assets/foundations/dotnet/ModularMonolith/ModularMonolith.Reference.rules.json +31 -0
- package/assets/foundations/dotnet/ModularMonolith/ModularMonolith.lane.json +6 -0
- package/assets/foundations/dotnet/VerticalSlice/VerticalSlice.Reference.rules.json +16 -0
- package/assets/foundations/dotnet/VerticalSlice/VerticalSlice.lane.json +6 -0
- package/assets/foundations/foundation.spec.template.txt +98 -0
- package/assets/foundations/java/Hexagonal/Hexagonal.lane.json +6 -0
- package/assets/foundations/java/Hexagonal/Hexagonal.pack.txt +8 -1
- package/assets/foundations/java/Hexagonal/unpack-foundation.sh +4 -5
- package/assets/foundations/node/NextAppRouter/NextAppRouter.spec.txt +68 -0
- package/assets/guardrails/README.md +31 -17
- package/assets/guardrails/{projects/dotnet-default-project → project-specific}/domain-rule-bindings.md +25 -13
- package/assets/guardrails/project-specific/tech-rule-bindings.md +296 -0
- package/assets/guardrails/technology/dotnet-webapi/PACKAGING.md +58 -4
- package/assets/guardrails/technology/dotnet-webapi/api-versioning.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/auditing.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/authorization.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/clean-architecture.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/coding-standards.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/cqrs.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/data-classification.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/dependency-policy.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/eventing.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/folder-structure.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/framework-api-map.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/modular-monolith.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/persistence.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/testing.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/vertical-slices.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/zero-trust.md +1 -1
- package/assets/guardrails/technology/nextjs/accessibility-implementation.md +1 -1
- package/assets/guardrails/technology/nextjs/api-client.md +1 -1
- package/assets/guardrails/technology/nextjs/api-integration.dotnet-webapi.md +1 -1
- package/assets/guardrails/technology/nextjs/api-integration.java-spring.md +1 -1
- package/assets/guardrails/technology/nextjs/auth-session.md +1 -1
- package/assets/guardrails/technology/nextjs/client-security.md +1 -1
- package/assets/guardrails/technology/nextjs/component-architecture.md +1 -1
- package/assets/guardrails/technology/nextjs/component-conventions.md +2 -2
- package/assets/guardrails/technology/nextjs/design-system.md +1 -1
- package/assets/guardrails/technology/nextjs/error-handling.md +1 -1
- package/assets/guardrails/technology/nextjs/forms-and-validation.md +1 -1
- package/assets/guardrails/technology/nextjs/frontend-testing.md +1 -1
- package/assets/guardrails/technology/nextjs/i18n.md +1 -1
- package/assets/guardrails/technology/nextjs/observability.md +1 -1
- package/assets/guardrails/technology/nextjs/performance-budgets.md +1 -1
- package/assets/guardrails/technology/nextjs/routing-navigation.md +1 -1
- package/assets/guardrails/technology/nextjs/state-management.md +1 -1
- package/assets/guardrails/technology/nextjs/ui-constitution.md +3 -3
- package/package.json +1 -1
- package/assets/.agents/skills/appweaver-demo/SKILL.md +0 -59
- package/assets/.appweaver/orchestrator/.smoke-out/smoke.md +0 -6
- package/assets/.appweaver/orchestrator/workflows/aw-spec-demo.orch.yaml +0 -100
- package/assets/.claude/skills/appweaver-demo/SKILL.md +0 -59
- package/assets/.kilocode/agent.json +0 -28
- package/assets/.kilocode/workflows/appweaver-demo.md +0 -59
- package/assets/.kilocode/workflows/appweaver.md +0 -55
- package/assets/guardrails/projects/dotnet-default-project/tech-rule-bindings.md +0 -271
- /package/assets/guardrails/{projects/dotnet-default-project → project-specific}/domain/domain-requirements.md +0 -0
- /package/assets/guardrails/{projects/dotnet-default-project → project-specific}/frontend/ui-requirements.md +0 -0
- /package/assets/guardrails/{projects/dotnet-default-project → project-specific}/service/technical-requirements.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Coding Standards
|
|
2
2
|
|
|
3
|
-
> Pure technology (domain-agnostic) — domain forbidden patterns & CI gates in [[coding-standards.domain]]. Commands: `/aw-spec-implement`, `/aw-spec-
|
|
3
|
+
> Pure technology (domain-agnostic) — domain forbidden patterns & CI gates in [[coding-standards.domain]]. Commands: `/aw-spec-implement-backend`, `/aw-spec-build`, `/aw-spec-analyze-slice`, `/aw-spec-foundation-backend`.
|
|
4
4
|
|
|
5
5
|
## Naming conventions
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# CQRS + Mediator Standards
|
|
2
2
|
|
|
3
|
-
> Pure technology (domain-agnostic) — domain additions in [[cqrs.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-plan`.
|
|
3
|
+
> Pure technology (domain-agnostic) — domain additions in [[cqrs.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-plan-backend`.
|
|
4
4
|
|
|
5
5
|
## Command / query patterns
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Data Classification Standards
|
|
2
2
|
|
|
3
|
-
> Pure technology (domain-agnostic) — domain data categories in [[data-classification.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-plan`.
|
|
3
|
+
> Pure technology (domain-agnostic) — domain data categories in [[data-classification.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-plan-backend`.
|
|
4
4
|
|
|
5
5
|
## Classification framework
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Dependency Policy
|
|
2
2
|
|
|
3
|
-
> Pure technology (domain-agnostic) — domain package rules in [[dependency-policy.domain]]. Commands: `/aw-spec-implement`, `/aw-spec-
|
|
3
|
+
> Pure technology (domain-agnostic) — domain package rules in [[dependency-policy.domain]]. Commands: `/aw-spec-implement-backend`, `/aw-spec-foundation-backend`.
|
|
4
4
|
|
|
5
5
|
## Package governance
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Eventing Standards
|
|
2
2
|
|
|
3
|
-
> Pure technology (domain-agnostic) — domain additions in [[eventing.domain]]. Commands: `/aw-spec-plan`.
|
|
3
|
+
> Pure technology (domain-agnostic) — domain additions in [[eventing.domain]]. Commands: `/aw-spec-plan-backend`.
|
|
4
4
|
|
|
5
5
|
## Domain events
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Mandatory Folder Structure
|
|
2
2
|
|
|
3
|
-
> Pure technology (domain-agnostic) — domain additions (Interop adapters, conformance tests, fixtures) in [[folder-structure.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-plan`, `/aw-spec-implement`, `/aw-spec-
|
|
3
|
+
> Pure technology (domain-agnostic) — domain additions (Interop adapters, conformance tests, fixtures) in [[folder-structure.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-plan-backend`, `/aw-spec-implement-backend`, `/aw-spec-foundation-backend`.
|
|
4
4
|
>
|
|
5
5
|
> Replace `<SampleProjectName>` with the project name (e.g. `Acme.Billing`).
|
|
6
6
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Framework API Map — which package and namespace each cited type comes from
|
|
2
2
|
|
|
3
3
|
> Pure technology (domain-agnostic). NON-NEGOTIABLE where it names a package.
|
|
4
|
-
> Commands: `/aw-spec-implement`, `/aw-spec-
|
|
4
|
+
> Commands: `/aw-spec-implement-backend`, `/aw-spec-analyze-slice`, `/aw-spec-foundation-backend`.
|
|
5
5
|
>
|
|
6
6
|
> The rules in this corpus name framework types — `AggregateRootBase<TId>`,
|
|
7
7
|
> `IAggregateChild`, `IUnitOfWork`. This file says where each one LIVES. Without it a
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Persistence Standards
|
|
2
2
|
|
|
3
|
-
> Pure technology (domain-agnostic) — domain additions in [[persistence.domain]]. NON-NEGOTIABLE where marked. Commands: `/aw-spec-plan`, `/aw-spec-run`.
|
|
3
|
+
> Pure technology (domain-agnostic) — domain additions in [[persistence.domain]]. NON-NEGOTIABLE where marked. Commands: `/aw-spec-plan-backend`, `/aw-spec-run`.
|
|
4
4
|
|
|
5
5
|
## EF Core conventions
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Testing Standards
|
|
2
2
|
|
|
3
|
-
> Pure technology (domain-agnostic) — domain additions in [[testing.domain]]. Commands: `/aw-spec-plan`, `/aw-spec-implement`, `/aw-spec-
|
|
3
|
+
> Pure technology (domain-agnostic) — domain additions in [[testing.domain]]. Commands: `/aw-spec-plan-backend`, `/aw-spec-implement-backend`, `/aw-spec-analyze-slice`, `/aw-spec-foundation-backend`.
|
|
4
4
|
|
|
5
5
|
## Test-first engineering
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Vertical Slice Standards
|
|
2
2
|
|
|
3
|
-
> Pure technology (domain-agnostic) — domain additions in [[vertical-slices.domain]]. Commands: `/aw-spec-plan`.
|
|
3
|
+
> Pure technology (domain-agnostic) — domain additions in [[vertical-slices.domain]]. Commands: `/aw-spec-plan-backend`.
|
|
4
4
|
|
|
5
5
|
## Feature organization
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Zero-Trust Standards
|
|
2
2
|
|
|
3
|
-
> Pure technology (domain-agnostic) — domain additions in [[zero-trust.domain]]. NON-NEGOTIABLE where marked. Commands: `/aw-spec-plan`.
|
|
3
|
+
> Pure technology (domain-agnostic) — domain additions in [[zero-trust.domain]]. NON-NEGOTIABLE where marked. Commands: `/aw-spec-plan-backend`.
|
|
4
4
|
|
|
5
5
|
## Transport security (mTLS / TLS)
|
|
6
6
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Accessibility Standards — nextjs (frontend lane)
|
|
2
2
|
|
|
3
3
|
> Pure technology (domain-agnostic). NON-NEGOTIABLE.
|
|
4
|
-
> Commands: `/aw-spec-plan-
|
|
4
|
+
> Commands: `/aw-spec-plan-frontend`, `/aw-spec-implement-frontend`.
|
|
5
5
|
> Detail layer under `constitution.ui.md` UX-I (accessibility floor).
|
|
6
6
|
|
|
7
7
|
UX-I makes the floor non-negotiable; this file is what meeting it means in practice. The
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# API Client Standards — nextjs (frontend lane)
|
|
2
2
|
|
|
3
3
|
> Pure technology (domain-agnostic). NON-NEGOTIABLE.
|
|
4
|
-
> Commands: `/aw-spec-implement-
|
|
4
|
+
> Commands: `/aw-spec-implement-frontend`, `/aw-spec-foundation-frontend`.
|
|
5
5
|
> Detail layer under `constitution.ui.md` UX-IV (the contract is the only server input)
|
|
6
6
|
> and UX-VII (mutations flow through one path).
|
|
7
7
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> The CROSS-LANE pairing rules: how the `nextjs` frontend lane consumes an
|
|
4
4
|
> `dotnet-webapi` service lane. NON-NEGOTIABLE where marked.
|
|
5
|
-
> Commands: `/aw-spec-plan-
|
|
5
|
+
> Commands: `/aw-spec-plan-frontend`, `/aw-spec-implement-frontend`.
|
|
6
6
|
> Detail layer under `constitution.ui.md` UX-IV (the contract is the only server input).
|
|
7
7
|
|
|
8
8
|
This file is named for the service lane it pairs with, and a project maps it through the
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> The CROSS-LANE pairing rules: how the `nextjs` frontend lane consumes a `java-spring`
|
|
4
4
|
> (Spring Boot) service lane. NON-NEGOTIABLE where marked.
|
|
5
|
-
> Commands: `/aw-spec-plan-
|
|
5
|
+
> Commands: `/aw-spec-plan-frontend`, `/aw-spec-implement-frontend`.
|
|
6
6
|
> Detail layer under `constitution.ui.md` UX-IV (the contract is the only server input).
|
|
7
7
|
|
|
8
8
|
This file is named for the service lane it pairs with, and a project maps it through the
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Authentication & Session Standards — nextjs (frontend lane)
|
|
2
2
|
|
|
3
3
|
> Pure technology (domain-agnostic). NON-NEGOTIABLE.
|
|
4
|
-
> Commands: `/aw-spec-plan-
|
|
4
|
+
> Commands: `/aw-spec-plan-frontend`, `/aw-spec-implement-frontend`.
|
|
5
5
|
> Detail layer under `constitution.ui.md` UX-VIII (client state carries no secret) and
|
|
6
6
|
> UX-IV (the contract is the only server input).
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Client Security Standards — nextjs (frontend lane)
|
|
2
2
|
|
|
3
3
|
> Pure technology (domain-agnostic). NON-NEGOTIABLE.
|
|
4
|
-
> Commands: `/aw-spec-implement-
|
|
4
|
+
> Commands: `/aw-spec-implement-frontend`.
|
|
5
5
|
> Detail layer under `constitution.ui.md` UX-VIII (client state carries no secret).
|
|
6
6
|
|
|
7
7
|
The client is a hostile environment: its code is readable, its storage is inspectable, and
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Component Architecture Standards — nextjs (frontend lane)
|
|
2
2
|
|
|
3
|
-
> Pure technology (domain-agnostic). Commands: `/aw-spec-plan-
|
|
3
|
+
> Pure technology (domain-agnostic). Commands: `/aw-spec-plan-frontend`, `/aw-spec-foundation-frontend`.
|
|
4
4
|
> Detail layer under `constitution.ui.md` UX-II (design system) and UX-III (server components).
|
|
5
5
|
|
|
6
6
|
The rules the UI design author composes a feature's `§3 Component Structure` from. They
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Component Conventions — nextjs (frontend lane)
|
|
2
2
|
|
|
3
|
-
> Pure technology (domain-agnostic). Commands: `/aw-spec-implement-
|
|
3
|
+
> Pure technology (domain-agnostic). Commands: `/aw-spec-implement-frontend`, `/aw-spec-foundation-frontend`.
|
|
4
4
|
> Detail layer under `constitution.ui.md` UX-II (design system) and its Mandatory
|
|
5
5
|
> Frontend Folder Structure.
|
|
6
6
|
|
|
@@ -18,7 +18,7 @@ writing within it.
|
|
|
18
18
|
states. Business composition does not live in a route file.
|
|
19
19
|
- A component reused by two or more features moves to `components/` — and moving it is a
|
|
20
20
|
decision, recorded in the design, not a refactor made mid-generation.
|
|
21
|
-
- Nothing this lane generates is written outside the lane
|
|
21
|
+
- Nothing this lane generates is written outside the declared lane root folder.
|
|
22
22
|
|
|
23
23
|
## Naming
|
|
24
24
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Design System Standards — nextjs (frontend lane)
|
|
2
2
|
|
|
3
3
|
> Pure technology (domain-agnostic). NON-NEGOTIABLE.
|
|
4
|
-
> Commands: `/aw-spec-plan-
|
|
4
|
+
> Commands: `/aw-spec-plan-frontend`, `/aw-spec-implement-frontend`, `/aw-spec-foundation-frontend`.
|
|
5
5
|
> Detail layer under `constitution.ui.md` UX-II (the design system is the only source of
|
|
6
6
|
> visual truth).
|
|
7
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Interaction & Error State Standards — nextjs (frontend lane)
|
|
2
2
|
|
|
3
|
-
> Pure technology (domain-agnostic). Commands: `/aw-spec-plan-
|
|
3
|
+
> Pure technology (domain-agnostic). Commands: `/aw-spec-plan-frontend`, `/aw-spec-implement-frontend`.
|
|
4
4
|
> Detail layer under `constitution.ui.md` UX-V (every interaction state is specified).
|
|
5
5
|
|
|
6
6
|
The rules behind `design.ui.md §4 Interaction & Flow` — the section a backend-shaped
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Forms & Validation Standards — nextjs (frontend lane)
|
|
2
2
|
|
|
3
3
|
> Pure technology (domain-agnostic). NON-NEGOTIABLE where marked.
|
|
4
|
-
> Commands: `/aw-spec-plan-
|
|
4
|
+
> Commands: `/aw-spec-plan-frontend`, `/aw-spec-implement-frontend`.
|
|
5
5
|
> Detail layer under `constitution.ui.md` UX-V (every interaction state is specified) and
|
|
6
6
|
> UX-VII (mutations flow through one path).
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Frontend Testing Standards — nextjs (frontend lane)
|
|
2
2
|
|
|
3
3
|
> Pure technology (domain-agnostic). NON-NEGOTIABLE.
|
|
4
|
-
> Commands: `/aw-spec-implement-
|
|
4
|
+
> Commands: `/aw-spec-implement-frontend`, `/aw-spec-foundation-frontend`.
|
|
5
5
|
> Detail layer under `constitution.ui.md` UX-XI (frontend test-first).
|
|
6
6
|
|
|
7
7
|
Every file `implement-ui` generates ships with its test. The design says what to test: each
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Internationalization Standards — nextjs (frontend lane)
|
|
2
2
|
|
|
3
|
-
> Pure technology (domain-agnostic). Commands: `/aw-spec-plan-
|
|
3
|
+
> Pure technology (domain-agnostic). Commands: `/aw-spec-plan-frontend`, `/aw-spec-implement-frontend`.
|
|
4
4
|
> Detail layer under `constitution.ui.md` UX-X (internationalization is structural).
|
|
5
5
|
|
|
6
6
|
Internationalization is structural: it is cheap while the surface is being designed and
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Frontend Observability Standards — nextjs (frontend lane)
|
|
2
2
|
|
|
3
3
|
> Pure technology (domain-agnostic). NON-NEGOTIABLE where marked.
|
|
4
|
-
> Commands: `/aw-spec-implement-
|
|
4
|
+
> Commands: `/aw-spec-implement-frontend`.
|
|
5
5
|
> Detail layer under `constitution.ui.md` UX-VIII (client state carries no secret).
|
|
6
6
|
|
|
7
7
|
The service is instrumented end to end — OpenTelemetry, structured logs, trace propagation
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Performance Budget Standards — nextjs (frontend lane)
|
|
2
2
|
|
|
3
3
|
> Pure technology (domain-agnostic). NON-NEGOTIABLE.
|
|
4
|
-
> Commands: `/aw-spec-plan-
|
|
4
|
+
> Commands: `/aw-spec-plan-frontend`, `/aw-spec-implement-frontend`.
|
|
5
5
|
> Detail layer under `constitution.ui.md` UX-IX (the performance budget is a gate).
|
|
6
6
|
|
|
7
7
|
A budget that is not enforced is an aspiration. Core Web Vitals thresholds and a per-route
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Routing & Navigation Standards — nextjs (frontend lane)
|
|
2
2
|
|
|
3
|
-
> Pure technology (domain-agnostic). Commands: `/aw-spec-plan-
|
|
3
|
+
> Pure technology (domain-agnostic). Commands: `/aw-spec-plan-frontend`, `/aw-spec-foundation-frontend`.
|
|
4
4
|
> Detail layer under `constitution.ui.md` UX-III (server components) and UX-V (every
|
|
5
5
|
> interaction state specified).
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Client State Standards — nextjs (frontend lane)
|
|
2
2
|
|
|
3
|
-
> Pure technology (domain-agnostic). Commands: `/aw-spec-plan-
|
|
3
|
+
> Pure technology (domain-agnostic). Commands: `/aw-spec-plan-frontend`.
|
|
4
4
|
> Detail layer under `constitution.ui.md` UX-VI (caching declared), UX-VII (one mutation
|
|
5
5
|
> path) and UX-VIII (client state carries no secret).
|
|
6
6
|
|
|
@@ -19,7 +19,7 @@ continue them — the two govern different lanes and version independently.
|
|
|
19
19
|
|
|
20
20
|
## Declared Lane
|
|
21
21
|
|
|
22
|
-
Stack **nextjs** — Next.js (TypeScript, App Router), lane id `web`, owning `
|
|
22
|
+
Stack **nextjs** — Next.js (TypeScript, App Router), lane id `web`, owning `frontend/` (the default lane root folder).
|
|
23
23
|
|
|
24
24
|
Where `.appweaver/stacks.json` declares a frontend lane, that declaration is authoritative for the
|
|
25
25
|
lane id and root; a scaffold that disagrees fails `STACK-MISMATCH:` rather than rewriting it.
|
|
@@ -121,11 +121,11 @@ another stack's assumptions. Elsewhere in this corpus the file is referenced as
|
|
|
121
121
|
|
|
122
122
|
## Mandatory Frontend Folder Structure
|
|
123
123
|
|
|
124
|
-
The whole layout sits under the lane
|
|
124
|
+
The whole layout sits under the lane root folder (`frontend/` by default) and never adds to the service lane's
|
|
125
125
|
structure.
|
|
126
126
|
|
|
127
127
|
```
|
|
128
|
-
|
|
128
|
+
frontend/
|
|
129
129
|
app/ # App Router — route segments, layouts, loading/error/not-found
|
|
130
130
|
components/ # design-system compositions, presentational only
|
|
131
131
|
features/<Feature>/ # one folder per spec feature: its components, hooks, actions
|
package/package.json
CHANGED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "appweaver-demo"
|
|
3
|
-
description: "Prototype launcher (Antigravity): run the aw-orchestrator using the specified strategy (spawn, agent, sdk, sdk-apply)."
|
|
4
|
-
argument-hint: "Optional strategy ('agent', 'spawn', 'sdk', 'sdk-apply') and/or k=value vars (e.g. 'agent out_dir=...')"
|
|
5
|
-
compatibility: "Requires .appweaver/orchestrator/ and the gemini CLI on PATH"
|
|
6
|
-
user-invocable: true
|
|
7
|
-
disable-model-invocation: false
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Orchestrator Launcher
|
|
11
|
-
|
|
12
|
-
All orchestration lives in the workflow YAML and is executed by `.appweaver/orchestrator/orchestrator.py` (the general, agent-agnostic engine). The interpreter assembles the COMPLETE payload (system + user) for every request; you never author generation context yourself.
|
|
13
|
-
|
|
14
|
-
- **Engine + workflow (general):** `.appweaver/orchestrator/orchestrator.py`, `*.orch.yaml`
|
|
15
|
-
- **This agent's transport profile:** `.agents/agent.json`
|
|
16
|
-
|
|
17
|
-
> Antigravity spawns via the `agy` CLI (Gemini-based; no `--system-prompt`, so
|
|
18
|
-
> `system` is folded into the prompt). Its `sdk` block declares the SDK the
|
|
19
|
-
> `sdk`/`sdk-apply` strategies import (`google-antigravity`) and the adapter
|
|
20
|
-
> (`.appweaver/orchestrator/adapters/google_antigravity.py`, shared per-SDK)
|
|
21
|
-
> that owns its calling convention.
|
|
22
|
-
|
|
23
|
-
## Execution Steps
|
|
24
|
-
|
|
25
|
-
1. **Parse Arguments**:
|
|
26
|
-
- Identify the requested strategy (one of: `agent`, `spawn`, `sdk`, `sdk-apply`). If the user specifies a strategy as the first argument, use it. Otherwise, default to `spawn`.
|
|
27
|
-
- Always pass the strategy explicitly: `--strategy <strategy>`.
|
|
28
|
-
- `--agent-profile .agents/agent.json` is required for `spawn`, `sdk`, and `sdk-apply`:
|
|
29
|
-
`spawn` reads the CLI to launch (`agy`) from it; `sdk`/`sdk-apply` read the SDK
|
|
30
|
-
package/module (and its `adapter` file) to import from its `sdk` block.
|
|
31
|
-
If the SDK package isn't installed, add `--sdk-install` so the engine
|
|
32
|
-
pip-installs the declared package first. (`agent` needs no profile.)
|
|
33
|
-
- `--checkpoint .appweaver/orchestrator/.demo-out/demo.state.json` is required for
|
|
34
|
-
`sdk-apply` and `agent` (suspend/resume — follow the loop in step 3).
|
|
35
|
-
- `spawn` accepts `--model <name>` (e.g. `gemini-2.5-pro`); isolation is
|
|
36
|
-
best-effort for Antigravity (no `--bare` equivalent). `sdk`/`sdk-apply`
|
|
37
|
-
accept `--model <name>`; isolation is intrinsic (fresh SDK session).
|
|
38
|
-
|
|
39
|
-
2. **Run the Interpreter**:
|
|
40
|
-
Run the command (include only the bracketed flags that apply to the chosen strategy):
|
|
41
|
-
```bash
|
|
42
|
-
python3 .appweaver/orchestrator/orchestrator.py \
|
|
43
|
-
.appweaver/orchestrator/workflows/aw-spec-demo.orch.yaml \
|
|
44
|
-
--strategy <strategy> \
|
|
45
|
-
[--agent-profile .agents/agent.json] # spawn, sdk, sdk-apply \
|
|
46
|
-
[--checkpoint .appweaver/orchestrator/.demo-out/demo.state.json] # sdk-apply, agent \
|
|
47
|
-
--json
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
3. **Handle Suspend/Resume Loop (for `agent` or `sdk-apply` strategies)**:
|
|
51
|
-
- If the command exits with code `2` (suspend):
|
|
52
|
-
- Read the prompt from the sidecar file `<checkpoint-path>.user.md` (and system instructions from `<checkpoint-path>.system.md`).
|
|
53
|
-
- Fulfill the request directly using your own tools (e.g., implementing the handler or reviewing files in the workspace).
|
|
54
|
-
- Write the final generation or review output to `<checkpoint-path>.response.md`.
|
|
55
|
-
- Re-run the exact same command.
|
|
56
|
-
- Repeat until the orchestrator exits with code `0`.
|
|
57
|
-
|
|
58
|
-
4. **Report**:
|
|
59
|
-
Report the final JSON outputs (`status`, `outputs`, `review_pass`, generated file paths, etc.) to the user.
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
# =============================================================================
|
|
2
|
-
# aw-spec-demo.orch.yaml — a runnable demo workflow for the aw-orchestrator.
|
|
3
|
-
# Launch via the parametric skill: /appweaver demo [strategy]
|
|
4
|
-
#
|
|
5
|
-
# It walks the exact loop from the diagram:
|
|
6
|
-
# build_context → agent_generate (fresh) → agent_review (fresh) → repeat
|
|
7
|
-
#
|
|
8
|
-
# Run it (safe, no model calls — prints the assembled payloads):
|
|
9
|
-
# python3 .appweaver/orchestrator/orchestrator.py .appweaver/orchestrator/workflows/aw-spec-demo.orch.yaml
|
|
10
|
-
#
|
|
11
|
-
# Run it for real (spawns fresh `claude -p --bare` per generation):
|
|
12
|
-
# python3 .appweaver/orchestrator/orchestrator.py .appweaver/orchestrator/workflows/aw-spec-demo.orch.yaml \
|
|
13
|
-
# --transport claude --model opus --budget 0.50
|
|
14
|
-
# =============================================================================
|
|
15
|
-
|
|
16
|
-
dialect: aw-spec.orchestrator/v1
|
|
17
|
-
name: demo-fresh-generation
|
|
18
|
-
|
|
19
|
-
vars:
|
|
20
|
-
out_dir: .appweaver/orchestrator/.demo-out
|
|
21
|
-
review_pass: "false" # loop guard, flipped by agent_review
|
|
22
|
-
|
|
23
|
-
workflow:
|
|
24
|
-
|
|
25
|
-
# 1. Builds Complete Context — the interpreter reads standards (→ system) and
|
|
26
|
-
# any prior artifacts (→ user context). Every standard it loads is kit-resident,
|
|
27
|
-
# so the demo runs in a bare checkout with no guardrails/ tree at all.
|
|
28
|
-
- id: ctx_generate
|
|
29
|
-
action: build_context
|
|
30
|
-
system:
|
|
31
|
-
- { path: .appweaver/ai-rules.md } # kit-resident, so the demo needs no project tree
|
|
32
|
-
context:
|
|
33
|
-
- { path: "{{out_dir}}/spec.md", optional: true }
|
|
34
|
-
|
|
35
|
-
# 2. Invoke Claude Code (FRESH generation) — it decides the file path(s) itself
|
|
36
|
-
# (per the loaded folder-structure/architecture standards), writes them with
|
|
37
|
-
# its tools, and REPORTS the paths back. The interpreter binds that list.
|
|
38
|
-
- id: gen_handler
|
|
39
|
-
action: agent_generate
|
|
40
|
-
tools: "Read,Write,Edit,Bash"
|
|
41
|
-
permission_mode: acceptEdits
|
|
42
|
-
task: |
|
|
43
|
-
Implement a CQRS command handler `CreateOrderHandler` for a "Create Order"
|
|
44
|
-
feature, following the loaded Clean Architecture + CQRS standards. Keep it
|
|
45
|
-
compilable C#; no TODOs.
|
|
46
|
-
outputs:
|
|
47
|
-
- { name: gen_status, from: "$.status" }
|
|
48
|
-
- { name: gen_summary, from: "$.summary" }
|
|
49
|
-
- { name: gen_files, from: "$.files" } # the paths the agent chose
|
|
50
|
-
|
|
51
|
-
# 3. Review the current output — a SECOND fresh generation, read-only, that
|
|
52
|
-
# judges the files the generation reported and returns pass/issues.
|
|
53
|
-
- id: review_handler
|
|
54
|
-
action: agent_review
|
|
55
|
-
review_of_var: gen_files
|
|
56
|
-
task: |
|
|
57
|
-
Review the handler for compliance with the loaded standards (naming, layer
|
|
58
|
-
boundaries, CQRS separation). Decide pass/fail.
|
|
59
|
-
outputs:
|
|
60
|
-
- { name: review_pass, from: "$.pass" }
|
|
61
|
-
- { name: review_issues, from: "$.issues" }
|
|
62
|
-
|
|
63
|
-
# 4. If review failed, rebuild context (now including the issues) and
|
|
64
|
-
# regenerate — up to 3 times. This is the "…continues" cycle.
|
|
65
|
-
- id: revise
|
|
66
|
-
action: loop
|
|
67
|
-
while: "{{review_pass}} != true"
|
|
68
|
-
max_iterations: 3
|
|
69
|
-
steps:
|
|
70
|
-
- id: ctx_revise
|
|
71
|
-
action: build_context
|
|
72
|
-
vars:
|
|
73
|
-
issues: "{{review_issues}}"
|
|
74
|
-
system:
|
|
75
|
-
- { path: .appweaver/ai-rules.md }
|
|
76
|
-
context_from: gen_files # the files the agent chose last round
|
|
77
|
-
- id: regen
|
|
78
|
-
action: agent_generate
|
|
79
|
-
tools: "Read,Write,Edit"
|
|
80
|
-
task: |
|
|
81
|
-
Fix these review issues in the file(s) provided in context, preserving
|
|
82
|
-
everything already correct: {{issues}}
|
|
83
|
-
outputs:
|
|
84
|
-
- { name: gen_files, from: "$.files" }
|
|
85
|
-
- id: rereview
|
|
86
|
-
action: agent_review
|
|
87
|
-
review_of_var: gen_files
|
|
88
|
-
task: Re-review after the fix. Decide pass/fail.
|
|
89
|
-
outputs:
|
|
90
|
-
- { name: review_pass, from: "$.pass" }
|
|
91
|
-
- { name: review_issues, from: "$.issues" }
|
|
92
|
-
- id: stop_when_pass
|
|
93
|
-
action: break
|
|
94
|
-
condition: "{{review_pass}} == true"
|
|
95
|
-
|
|
96
|
-
outputs:
|
|
97
|
-
generated: "{{gen_summary}}"
|
|
98
|
-
review_pass: "{{review_pass}}"
|
|
99
|
-
files: "{{gen_files}}" # decided by the fresh agent, not the interpreter
|
|
100
|
-
next: "interpreter continues to the next workflow step"
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "appweaver-demo"
|
|
3
|
-
description: "Prototype launcher (Claude Code): run the aw-orchestrator using the specified strategy (spawn, agent, sdk, sdk-apply)."
|
|
4
|
-
argument-hint: "Optional strategy ('agent', 'spawn', 'sdk', 'sdk-apply') and/or k=value vars (e.g. 'agent out_dir=...')"
|
|
5
|
-
compatibility: "Requires .appweaver/orchestrator/ and the claude CLI on PATH"
|
|
6
|
-
user-invocable: true
|
|
7
|
-
disable-model-invocation: false
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Orchestrator Launcher
|
|
11
|
-
|
|
12
|
-
All orchestration lives in the workflow YAML and is executed by `.appweaver/orchestrator/orchestrator.py` (the general, agent-agnostic engine). The interpreter assembles the COMPLETE payload (system + user) for every request; you never author generation context yourself.
|
|
13
|
-
|
|
14
|
-
- **Engine + workflow (general):** `.appweaver/orchestrator/orchestrator.py`, `*.orch.yaml`
|
|
15
|
-
- **This agent's transport profile:** `.claude/agent.json`
|
|
16
|
-
|
|
17
|
-
> Claude Code spawns via the `claude -p` CLI (native `--system-prompt`,
|
|
18
|
-
> `--tools`, and `--bare` isolation). Its `sdk` block declares the SDK the
|
|
19
|
-
> `sdk`/`sdk-apply` strategies import (`claude-agent-sdk`) and the adapter
|
|
20
|
-
> (`.appweaver/orchestrator/adapters/claude_agent_sdk.py`, shared per-SDK)
|
|
21
|
-
> that owns its calling convention.
|
|
22
|
-
|
|
23
|
-
## Execution Steps
|
|
24
|
-
|
|
25
|
-
1. **Parse Arguments**:
|
|
26
|
-
- Identify the requested strategy (one of: `agent`, `spawn`, `sdk`, `sdk-apply`). If the user specifies a strategy as the first argument, use it. Otherwise, default to `spawn`.
|
|
27
|
-
- Always pass the strategy explicitly: `--strategy <strategy>`.
|
|
28
|
-
- `--agent-profile .claude/agent.json` is required for `spawn`, `sdk`, and `sdk-apply`:
|
|
29
|
-
`spawn` reads the CLI to launch from it; `sdk`/`sdk-apply` read the SDK
|
|
30
|
-
package/module (and its `adapter` file) to import from its `sdk` block.
|
|
31
|
-
If the SDK package isn't installed, add `--sdk-install` so the engine
|
|
32
|
-
pip-installs the declared package first. (`agent` needs no profile.)
|
|
33
|
-
- `--checkpoint .appweaver/orchestrator/.demo-out/demo.state.json` is required for
|
|
34
|
-
`sdk-apply` and `agent` (suspend/resume — follow the loop in step 3).
|
|
35
|
-
- `spawn` may also add `--isolation bare|fresh` and `--model <name>` (bare is
|
|
36
|
-
strongest; use it when `ANTHROPIC_API_KEY` is set). `sdk`/`sdk-apply` accept
|
|
37
|
-
`--model <name>`; isolation is intrinsic (fresh SDK session, no settings).
|
|
38
|
-
|
|
39
|
-
2. **Run the Interpreter**:
|
|
40
|
-
Run the command (include only the bracketed flags that apply to the chosen strategy):
|
|
41
|
-
```bash
|
|
42
|
-
python3 .appweaver/orchestrator/orchestrator.py \
|
|
43
|
-
.appweaver/orchestrator/workflows/aw-spec-demo.orch.yaml \
|
|
44
|
-
--strategy <strategy> \
|
|
45
|
-
[--agent-profile .claude/agent.json] # spawn, sdk, sdk-apply \
|
|
46
|
-
[--checkpoint .appweaver/orchestrator/.demo-out/demo.state.json] # sdk-apply, agent \
|
|
47
|
-
--json
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
3. **Handle Suspend/Resume Loop (for `agent` or `sdk-apply` strategies)**:
|
|
51
|
-
- If the command exits with code `2` (suspend):
|
|
52
|
-
- Read the prompt from the sidecar file `<checkpoint-path>.user.md` (and system instructions from `<checkpoint-path>.system.md`).
|
|
53
|
-
- Fulfill the request directly using your own tools (e.g., implementing the handler or reviewing files in the workspace).
|
|
54
|
-
- Write the final generation or review output to `<checkpoint-path>.response.md`.
|
|
55
|
-
- Re-run the exact same command.
|
|
56
|
-
- Repeat until the orchestrator exits with code `0`.
|
|
57
|
-
|
|
58
|
-
4. **Report**:
|
|
59
|
-
Report the final JSON outputs (`status`, `outputs`, `review_pass`, generated file paths, etc.) to the user.
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "kilocode",
|
|
3
|
-
"sdk": {
|
|
4
|
-
"type": "claude-agent-sdk",
|
|
5
|
-
"package": "claude-agent-sdk",
|
|
6
|
-
"module": "claude_agent_sdk",
|
|
7
|
-
"adapter": "../.appweaver/orchestrator/adapters/claude_agent_sdk.py"
|
|
8
|
-
},
|
|
9
|
-
"runtime": "Kilo Code launches the interpreter; generation delegates to the Claude Code CLI",
|
|
10
|
-
"note": "Kilo Code is a VS Code extension with no standalone headless generation CLI, so this profile reuses `claude -p` for the fresh generation. To generate via Gemini instead, replace bin/args/system/user/tools_flag/approval with the .agents (antigravity) profile's values.",
|
|
11
|
-
"bin": "claude",
|
|
12
|
-
"args": ["-p", "--output-format", "json", "--no-session-persistence"],
|
|
13
|
-
"model_flag": "--model",
|
|
14
|
-
"system": { "flag": "--system-prompt" },
|
|
15
|
-
"user": { "mode": "stdin" },
|
|
16
|
-
"tools_flag": "--tools",
|
|
17
|
-
"approval": {
|
|
18
|
-
"acceptEdits": ["--permission-mode", "acceptEdits"],
|
|
19
|
-
"bypassPermissions": ["--permission-mode", "bypassPermissions"],
|
|
20
|
-
"default": ["--permission-mode", "default"]
|
|
21
|
-
},
|
|
22
|
-
"isolation": {
|
|
23
|
-
"bare": ["--bare"],
|
|
24
|
-
"fresh": ["--setting-sources", ""]
|
|
25
|
-
},
|
|
26
|
-
"budget_flag": "--max-budget-usd",
|
|
27
|
-
"result_keys": ["result"]
|
|
28
|
-
}
|