aw-spec-cli 0.1.32 → 0.1.34
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/README.md +76 -81
- package/assets/.appweaver/DESIGN-FORMAT.md +56 -17
- package/assets/.appweaver/STACK-PROFILES.md +95 -60
- package/assets/.appweaver/orchestrator/LAUNCHER.md +1 -1
- package/assets/.appweaver/orchestrator/modules/delta-plan.orch.yaml +173 -32
- package/assets/.appweaver/orchestrator/modules/domain-select.orch.yaml +29 -1
- package/assets/.appweaver/orchestrator/modules/foundation-pack.orch.yaml +7 -4
- package/assets/.appweaver/orchestrator/modules/foundation-spec.orch.yaml +49 -60
- package/assets/.appweaver/orchestrator/modules/tech-select.orch.yaml +58 -0
- package/assets/.appweaver/orchestrator/orchestrator.py +26 -8
- package/assets/.appweaver/orchestrator/rev-templates/delta-design-template.skeleton.md +20 -16
- package/assets/.appweaver/orchestrator/rev-templates/design-template.skeleton.md +30 -6
- package/assets/.appweaver/orchestrator/rev-templates/ui-delta-design-template.skeleton.md +9 -7
- package/assets/.appweaver/orchestrator/rev-templates/ui-design-template.skeleton.md +5 -5
- package/assets/.appweaver/orchestrator/workflows/aw-spec-adopt.orch.yaml +341 -36
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan-delta.orch.yaml +254 -43
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan.orch.yaml +248 -68
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice-delta.orch.yaml +251 -20
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +316 -10
- package/assets/.appweaver/orchestrator/workflows/aw-spec-build.orch.yaml +6 -47
- package/assets/.appweaver/orchestrator/workflows/aw-spec-close-delta.orch.yaml +62 -16
- package/assets/.appweaver/orchestrator/workflows/aw-spec-finalize-delta.orch.yaml +132 -9
- package/assets/.appweaver/orchestrator/workflows/aw-spec-fix-test-coverage.orch.yaml +965 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-implement.orch.yaml +222 -169
- package/assets/.appweaver/orchestrator/workflows/aw-spec-onboard.orch.yaml +28 -12
- package/assets/.appweaver/orchestrator/workflows/aw-spec-plan.orch.yaml +453 -116
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-lane.orch.yaml +7 -4
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-stack.orch.yaml +83 -6
- package/assets/.appweaver/orchestrator/workflows/aw-spec-specify.orch.yaml +45 -2
- package/assets/.appweaver/scripts/bash/aw-spec-actions.sh +324 -74
- package/assets/.appweaver/scripts/powershell/aw-spec-actions.ps1 +275 -44
- package/assets/.appweaver/scripts/python/aw-foundation.py +16 -13
- package/assets/.appweaver/scripts/python/aw-gaps.py +11 -3
- package/assets/.appweaver/scripts/python/aw-model-guard.py +295 -0
- package/assets/.appweaver/scripts/python/aw-plan-coverage.py +412 -3
- package/assets/.appweaver/scripts/python/aw-plangate.py +23 -16
- package/assets/.appweaver/scripts/python/aw-stack.py +1794 -265
- package/assets/.appweaver/stack-profiles/dotnet-webapi.json +0 -2
- package/assets/.appweaver/stack-profiles/java-spring.json +0 -2
- package/assets/.appweaver/templates/api-plan-template.md +107 -0
- package/assets/.appweaver/templates/delta-api-plan-template.md +87 -0
- package/assets/.appweaver/templates/delta-design-template.md +25 -23
- package/assets/.appweaver/templates/delta-spec-template.md +3 -3
- package/assets/.appweaver/templates/design-template.md +20 -42
- package/assets/.appweaver/templates/domain-model-template.md +3 -0
- package/assets/.appweaver/templates/ui-delta-design-template.md +11 -8
- package/assets/.appweaver/templates/ui-design-template.md +4 -4
- package/assets/foundations/foundation.spec.template.txt +25 -18
- package/assets/guardrails/README.md +61 -25
- package/assets/guardrails/methodology/ux/accessibility-standards.md +38 -0
- package/assets/guardrails/methodology/ux/content-design.md +34 -0
- package/assets/guardrails/methodology/ux/interaction-states.md +45 -0
- package/assets/guardrails/methodology/ux/journey-mapping.md +41 -0
- package/assets/guardrails/project-specific/domain/domain-requirements.md +25 -38
- package/assets/guardrails/project-specific/domain-rule-bindings.md +33 -69
- package/assets/guardrails/project-specific/frontend/ui-requirements.md +2 -2
- package/assets/guardrails/project-specific/service/technical-requirements.md +2 -2
- package/assets/guardrails/project-specific/tech-rule-bindings.md +16 -13
- package/assets/guardrails/sample-healthcare/domain/domain-requirements.md +58 -0
- package/assets/guardrails/sample-healthcare/domain-rule-bindings.md +138 -0
- package/assets/guardrails/sample-healthcare/frontend/ui-requirements.md +43 -0
- package/assets/guardrails/sample-healthcare/service/technical-requirements.md +40 -0
- package/assets/guardrails/sample-healthcare/tech-rule-bindings.md +303 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +216 -7
- package/dist/commands/init.js.map +1 -1
- package/dist/utils/config.js +1 -1
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/foundation.d.ts +36 -0
- package/dist/utils/foundation.d.ts.map +1 -0
- package/dist/utils/foundation.js +109 -0
- package/dist/utils/foundation.js.map +1 -0
- package/dist/utils/paths.js +1 -1
- package/dist/utils/paths.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
# sample-healthcare — Command → Technical-Rule-File Map
|
|
2
|
+
|
|
3
|
+
Per-command list of the **technical** rule files this project loads (via `resolve-tech` +
|
|
4
|
+
the `tech-select` module, into the sticky standards set) for the spec-anchored
|
|
5
|
+
orchestrator pipeline. This is the technical counterpart of `domain-rule-bindings.md`
|
|
6
|
+
(which maps the DOMAIN rule files).
|
|
7
|
+
|
|
8
|
+
**A worked sample, not the default.** It differs from the shipped `project-specific/` map in
|
|
9
|
+
two places only, both healthcare: `## /aw-spec-specify` maps the healthcare corpus's own `ux/`
|
|
10
|
+
rules in place of the industry-free `guardrails/methodology/ux/` ones, and
|
|
11
|
+
`## /aw-spec-plan-backend` adds `ihe-conformance.md`.
|
|
12
|
+
|
|
13
|
+
**The model:** the technical rule files are CONFIGURATION — tune this map, not the
|
|
14
|
+
workflows. They live in the **shared technology corpora**, one folder per stack, and this
|
|
15
|
+
map is what binds a project to them. The ratified output (`constitution.technical.md`) is
|
|
16
|
+
NOT listed here — every consumer refers to it directly, as-is.
|
|
17
|
+
|
|
18
|
+
- All paths are workspace-relative. This project maps two stack corpora:
|
|
19
|
+
`guardrails/technology/{{backend_stack}}/` (the service) and
|
|
20
|
+
`guardrails/technology/{{frontend_stack}}/` (the frontend lane). Both are **standard rules
|
|
21
|
+
shared by every project that maps them**, and neither is domain-specific. The frontend corpus is
|
|
22
|
+
read by four headings — `## /aw-spec-ui-constitution` ratifies the lane's base,
|
|
23
|
+
`## /aw-spec-plan-frontend` / `## /aw-spec-implement-frontend` carry the detail rules under
|
|
24
|
+
it, and `## /aw-spec-foundation-frontend` is what a spec-built scaffold of the lane follows.
|
|
25
|
+
- `plan`, `implement` and `foundation` are keyed per lane KIND, not per command: each runs
|
|
26
|
+
both lanes in one run and loads one set or the other for each — `## /aw-spec-<command>-backend`
|
|
27
|
+
for the service lane, `## /aw-spec-<command>-frontend` for the frontend lane. `foundation`
|
|
28
|
+
loads its set only when the lane is built from a spec — a pack is unpacked as-is.
|
|
29
|
+
- The two files this project authors — `service/technical-requirements.md` and
|
|
30
|
+
`frontend/ui-requirements.md` — live beside this map. They are the only mapped technical
|
|
31
|
+
files expected to differ between two projects on the same stacks.
|
|
32
|
+
- A corpus's `examples/` folder holds the worked `<SampleProjectName>` sample for the
|
|
33
|
+
rule file beside it, split out so a phase can load the rules without the sample code. The
|
|
34
|
+
code-generating phases map both; `## /aw-spec-constitution` maps the rules alone, because a
|
|
35
|
+
thin authority document has no use for sample code.
|
|
36
|
+
- `resolve-tech --command <name>` collects the `- ` bullets under `## /<name>`.
|
|
37
|
+
- **Every stack directory below is a placeholder**, resolved from the lanes in
|
|
38
|
+
`.appweaver/stacks.json`: `{{backend_stack}}` is the service lane's stack and
|
|
39
|
+
`{{frontend_stack}}` the frontend lane's (`{{stack}}`, `{{backend_ecosystem}}` and
|
|
40
|
+
`{{frontend_ecosystem}}` are also available). `guardrails/technology/{{backend_stack}}/persistence.md`
|
|
41
|
+
reads as `dotnet-webapi/` in a .NET repo and `java-spring/` in a Spring one, so this one map
|
|
42
|
+
serves whatever stacks the project declares. A placeholder for an undeclared lane skips
|
|
43
|
+
that bullet, so a backend-only repo loads no frontend rules. A resolved path with no file
|
|
44
|
+
on disk loads nothing in its place, and the run ends with a warning naming it; so does a
|
|
45
|
+
placeholder the kit does not know. The bullets were written
|
|
46
|
+
against the `dotnet-webapi` and `nextjs` corpora; another stack's corpus may hold only
|
|
47
|
+
part of them. See STACK-PROFILES.md §7a.
|
|
48
|
+
- Adding a stack is adding a corpus under `guardrails/technology/<stack>/` with the same file
|
|
49
|
+
names — the placeholders then reach it with no change to this map, and no workflow, script
|
|
50
|
+
or engine change is involved.
|
|
51
|
+
- This file is the **canonical technical mapping** for this project; it is used whenever
|
|
52
|
+
`.appweaver/domain.json` names `sample-healthcare`.
|
|
53
|
+
- A command with no heading here loads no mapped technical file (only the workflow's
|
|
54
|
+
universal `ai-rules.md` seed + `constitution.technical.md`, referred to directly), and its
|
|
55
|
+
run ends with a warning — a misspelled heading reads the same as a missing one.
|
|
56
|
+
- `## /aw-spec-specify` is the one **modelling-methodology** slot (see the rule partition):
|
|
57
|
+
a domain-agnostic way of *modelling*, never a technology choice. Everything below it is a
|
|
58
|
+
HOW-phase technical set.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## /aw-spec-specify
|
|
63
|
+
<!-- MODELLING METHODOLOGY ONLY, in two halves. Specify is the domain phase: the single kind
|
|
64
|
+
of technical input it may take is a domain-agnostic way of MODELLING, never a technology
|
|
65
|
+
choice. Do NOT add an architecture / persistence / codegen file here — that would break
|
|
66
|
+
specify's domain purity (design/implement own those). The domain's own DDD overlay
|
|
67
|
+
(domain-driven-design.domain.md) arrives separately via domain-rule-bindings.
|
|
68
|
+
|
|
69
|
+
1. THE DOMAIN MODEL — DDD tactical patterns, plus the same methodology worked through
|
|
70
|
+
in code as the example beside it.
|
|
71
|
+
2. THE EXPERIENCE MODEL — the ux/ rules that govern how specify states the experience:
|
|
72
|
+
Experience Scope, and the project-wide Experience Standards it lifts as UX- ids for
|
|
73
|
+
prototype / design-ui / implement-ui to author and verify against. These are
|
|
74
|
+
methodology, not visual design; each file's own "What must NOT appear" section is
|
|
75
|
+
what keeps screens out of the spec.
|
|
76
|
+
|
|
77
|
+
⚠ The ux/ files sit in a DOMAIN corpus folder but are TECHNICAL-tier inputs: a file's
|
|
78
|
+
tier is the map that lists it, not the folder it lives in. guardrails/domain/healthcare/
|
|
79
|
+
ihe-conformance.md under ## /aw-spec-plan-backend is the same pattern. Unmapping them does not
|
|
80
|
+
make the spec's Experience Standards section disappear — the section is unconditional and
|
|
81
|
+
resolves to "None" — it removes the methodology specify fills it from. -->
|
|
82
|
+
- guardrails/technology/{{backend_stack}}/domain-driven-design.md
|
|
83
|
+
- guardrails/technology/{{backend_stack}}/examples/domain-driven-design.md
|
|
84
|
+
- guardrails/domain/healthcare/ux/journey-mapping.md
|
|
85
|
+
- guardrails/domain/healthcare/ux/interaction-states.md
|
|
86
|
+
- guardrails/domain/healthcare/ux/accessibility-standards.md
|
|
87
|
+
- guardrails/domain/healthcare/ux/content-design.md
|
|
88
|
+
|
|
89
|
+
## /aw-spec-plan-backend
|
|
90
|
+
<!-- The technical/architecture rule files the design author works from (alongside the
|
|
91
|
+
spec and constitution.technical.md), each followed by its worked example. NO domain file
|
|
92
|
+
here — domain reaches design only as spec ids (BR-/CN-/DC-/IC-). -->
|
|
93
|
+
- guardrails/technology/{{backend_stack}}/clean-architecture.md
|
|
94
|
+
- guardrails/technology/{{backend_stack}}/cqrs.md
|
|
95
|
+
- guardrails/technology/{{backend_stack}}/eventing.md
|
|
96
|
+
- guardrails/technology/{{backend_stack}}/modular-monolith.md
|
|
97
|
+
- guardrails/technology/{{backend_stack}}/vertical-slices.md
|
|
98
|
+
- guardrails/technology/{{backend_stack}}/persistence.md
|
|
99
|
+
- guardrails/technology/{{backend_stack}}/folder-structure.md
|
|
100
|
+
- guardrails/technology/{{backend_stack}}/testing.md
|
|
101
|
+
- guardrails/technology/{{backend_stack}}/api-versioning.md
|
|
102
|
+
- guardrails/technology/{{backend_stack}}/zero-trust.md
|
|
103
|
+
- guardrails/technology/{{backend_stack}}/authorization.md
|
|
104
|
+
- guardrails/technology/{{backend_stack}}/authorization-matrix.md
|
|
105
|
+
- guardrails/technology/{{backend_stack}}/auditing.md
|
|
106
|
+
- guardrails/technology/{{backend_stack}}/data-classification.md
|
|
107
|
+
- guardrails/domain/healthcare/ihe-conformance.md
|
|
108
|
+
- guardrails/technology/{{backend_stack}}/examples/clean-architecture.md
|
|
109
|
+
- guardrails/technology/{{backend_stack}}/examples/cqrs.md
|
|
110
|
+
- guardrails/technology/{{backend_stack}}/examples/eventing.md
|
|
111
|
+
- guardrails/technology/{{backend_stack}}/examples/vertical-slices.md
|
|
112
|
+
- guardrails/technology/{{backend_stack}}/examples/persistence.md
|
|
113
|
+
- guardrails/technology/{{backend_stack}}/examples/api-versioning.md
|
|
114
|
+
- guardrails/technology/{{backend_stack}}/examples/zero-trust.md
|
|
115
|
+
- guardrails/technology/{{backend_stack}}/examples/authorization.md
|
|
116
|
+
- guardrails/technology/{{backend_stack}}/examples/auditing.md
|
|
117
|
+
|
|
118
|
+
## /aw-spec-plan-frontend
|
|
119
|
+
<!-- The FRONTEND LANE's design phase. Its own heading, not a branch of ## /aw-spec-plan-backend:
|
|
120
|
+
the two lanes are governed by different constitution halves and own disjoint source
|
|
121
|
+
paths, so keying the map on a heading of its own gives the lane its own rule set for zero
|
|
122
|
+
mechanism change. NO domain file here — the domain reaches design.ui.md as spec ids,
|
|
123
|
+
exactly as it reaches design.md. The lane's ratified base (constitution.ui.md) is
|
|
124
|
+
referred to directly and is NOT mapped.
|
|
125
|
+
|
|
126
|
+
THE SERVICE LANE ENTERS THROUGH ONE FILE. api-integration.{{backend_stack}}.md is the
|
|
127
|
+
CROSS-LANE pairing rule set — what the service guarantees (paging shape, concurrency
|
|
128
|
+
token, error codes, redaction, caching, CORS) and what the client therefore must do.
|
|
129
|
+
It is named for the service stack and mapped through the placeholder, so ONE bullet
|
|
130
|
+
serves every backend: it resolves to api-integration.dotnet-webapi.md in a .NET repo and to
|
|
131
|
+
api-integration.java-spring.md in a Spring repo — both authored — and to a REPORTED
|
|
132
|
+
missing file for a backend whose pairing nobody has written yet, rather than silently
|
|
133
|
+
loading one stack's assumptions into another. A repo with no backend lane skips the
|
|
134
|
+
bullet entirely. No other service-lane file is mapped here: design.ui.md consumes the
|
|
135
|
+
published surface, never the service's internals. -->
|
|
136
|
+
- guardrails/technology/{{frontend_stack}}/component-architecture.md
|
|
137
|
+
- guardrails/technology/{{frontend_stack}}/routing-navigation.md
|
|
138
|
+
- guardrails/technology/{{frontend_stack}}/state-management.md
|
|
139
|
+
- guardrails/technology/{{frontend_stack}}/error-handling.md
|
|
140
|
+
- guardrails/technology/{{frontend_stack}}/forms-and-validation.md
|
|
141
|
+
- guardrails/technology/{{frontend_stack}}/auth-session.md
|
|
142
|
+
- guardrails/technology/{{frontend_stack}}/design-system.md
|
|
143
|
+
- guardrails/technology/{{frontend_stack}}/accessibility-implementation.md
|
|
144
|
+
- guardrails/technology/{{frontend_stack}}/i18n.md
|
|
145
|
+
- guardrails/technology/{{frontend_stack}}/performance-budgets.md
|
|
146
|
+
- guardrails/technology/{{frontend_stack}}/api-integration.{{backend_stack}}.md
|
|
147
|
+
|
|
148
|
+
## /aw-spec-implement-backend
|
|
149
|
+
<!-- The FRAMEWORK / code-generation rule files the SERVICE lane's generator builds against
|
|
150
|
+
(alongside backend-plan.md and constitution.technical.md). It is loaded on BOTH paths,
|
|
151
|
+
master and delta: a change's code follows the same rules as the master it changes.
|
|
152
|
+
NO domain file — domain reaches implement only through the plan (on the delta path, the
|
|
153
|
+
master backend-plan.md + the change's delta plan). clean-architecture/cqrs are planning
|
|
154
|
+
concerns; component wiring is a separate /appweaver add-component step. -->
|
|
155
|
+
- guardrails/technology/{{backend_stack}}/coding-standards.md
|
|
156
|
+
- guardrails/technology/{{backend_stack}}/dependency-policy.md
|
|
157
|
+
- guardrails/technology/{{backend_stack}}/folder-structure.md
|
|
158
|
+
- guardrails/technology/{{backend_stack}}/framework-api-map.md
|
|
159
|
+
- guardrails/technology/{{backend_stack}}/testing.md
|
|
160
|
+
- guardrails/technology/{{backend_stack}}/PACKAGING.md
|
|
161
|
+
|
|
162
|
+
## /aw-spec-implement-frontend
|
|
163
|
+
<!-- The FRONTEND LANE's code-generation set — the HOW that lane of `implement` builds
|
|
164
|
+
against, alongside frontend-plan.md and constitution.ui.md. It is loaded on BOTH paths,
|
|
165
|
+
master and delta, as the service lane's set is. NO domain file
|
|
166
|
+
(domain reached the lane through spec -> frontend-plan.md), and NO service-lane file
|
|
167
|
+
beyond the pairing rules below — this lane never writes outside its declared lane root folder.
|
|
168
|
+
|
|
169
|
+
EIGHT FILES ARE MAPPED FOR BOTH LANE PHASES on purpose. error-handling,
|
|
170
|
+
forms-and-validation, auth-session, design-system, accessibility-implementation, i18n,
|
|
171
|
+
performance-budgets and the api-integration pairing each carry a DESIGN half and an
|
|
172
|
+
IMPLEMENT half of one rule: the design decides the states, the affordances and the
|
|
173
|
+
targets; this phase realises them. A rule read by only one of the two loses the
|
|
174
|
+
pairing, and the half that goes unread is always the one that then goes unbuilt. -->
|
|
175
|
+
- guardrails/technology/{{frontend_stack}}/component-conventions.md
|
|
176
|
+
- guardrails/technology/{{frontend_stack}}/api-client.md
|
|
177
|
+
- guardrails/technology/{{frontend_stack}}/api-integration.{{backend_stack}}.md
|
|
178
|
+
- guardrails/technology/{{frontend_stack}}/auth-session.md
|
|
179
|
+
- guardrails/technology/{{frontend_stack}}/client-security.md
|
|
180
|
+
- guardrails/technology/{{frontend_stack}}/error-handling.md
|
|
181
|
+
- guardrails/technology/{{frontend_stack}}/forms-and-validation.md
|
|
182
|
+
- guardrails/technology/{{frontend_stack}}/design-system.md
|
|
183
|
+
- guardrails/technology/{{frontend_stack}}/accessibility-implementation.md
|
|
184
|
+
- guardrails/technology/{{frontend_stack}}/i18n.md
|
|
185
|
+
- guardrails/technology/{{frontend_stack}}/performance-budgets.md
|
|
186
|
+
- guardrails/technology/{{frontend_stack}}/observability.md
|
|
187
|
+
- guardrails/technology/{{frontend_stack}}/frontend-testing.md
|
|
188
|
+
|
|
189
|
+
## /aw-spec-build
|
|
190
|
+
<!-- The compile/fix reference set: the layering + coding rules the fixer respects when
|
|
191
|
+
repairing compile errors against the design intent, plus the layering example it repairs
|
|
192
|
+
towards. NO domain file (build loads domain rules separately via domain-select) and no
|
|
193
|
+
constitution.technical here. -->
|
|
194
|
+
- guardrails/technology/{{backend_stack}}/clean-architecture.md
|
|
195
|
+
- guardrails/technology/{{backend_stack}}/coding-standards.md
|
|
196
|
+
- guardrails/technology/{{backend_stack}}/examples/clean-architecture.md
|
|
197
|
+
|
|
198
|
+
## /aw-spec-analyze-slice
|
|
199
|
+
<!-- The design↔code conformance gate's TECHNICAL checklist: the code + tests are
|
|
200
|
+
validated against these (alongside the DOMAIN gate overlays, loaded separately via
|
|
201
|
+
resolve-domain `## /aw-spec-gate`). Validation input only — never authoring. -->
|
|
202
|
+
- guardrails/technology/{{backend_stack}}/testing.md
|
|
203
|
+
- guardrails/technology/{{backend_stack}}/coding-standards.md
|
|
204
|
+
- guardrails/technology/{{backend_stack}}/framework-api-map.md
|
|
205
|
+
|
|
206
|
+
## /aw-spec-constitution
|
|
207
|
+
<!-- What the TECHNICAL half of the split constitution ratifies into
|
|
208
|
+
constitution.technical.md: the technology base, then the STANDARD technical rules for
|
|
209
|
+
this industry — the same corpus design and implement build against, so a ratified
|
|
210
|
+
principle can cite the rule it governs — and last the PROJECT-SUPPLIED file the project
|
|
211
|
+
team authors. Loaded BEFORE the technical half and before domain-select, so the
|
|
212
|
+
technical author stays domain-free (the seam). NO domain file here: the domain half's
|
|
213
|
+
sources are the domain map's ## /aw-spec-constitution. NO examples/ file either — the
|
|
214
|
+
ratified half is one declarative line and a `→` pointer per principle, so sample code is
|
|
215
|
+
weight without a reader. -->
|
|
216
|
+
- guardrails/technology/{{backend_stack}}/technology-constitution.md
|
|
217
|
+
- guardrails/technology/{{backend_stack}}/clean-architecture.md
|
|
218
|
+
- guardrails/technology/{{backend_stack}}/modular-monolith.md
|
|
219
|
+
- guardrails/technology/{{backend_stack}}/vertical-slices.md
|
|
220
|
+
- guardrails/technology/{{backend_stack}}/domain-driven-design.md
|
|
221
|
+
- guardrails/technology/{{backend_stack}}/cqrs.md
|
|
222
|
+
- guardrails/technology/{{backend_stack}}/persistence.md
|
|
223
|
+
- guardrails/technology/{{backend_stack}}/eventing.md
|
|
224
|
+
- guardrails/technology/{{backend_stack}}/folder-structure.md
|
|
225
|
+
- guardrails/technology/{{backend_stack}}/testing.md
|
|
226
|
+
- guardrails/technology/{{backend_stack}}/zero-trust.md
|
|
227
|
+
- guardrails/technology/{{backend_stack}}/authorization.md
|
|
228
|
+
- guardrails/technology/{{backend_stack}}/auditing.md
|
|
229
|
+
- guardrails/technology/{{backend_stack}}/data-classification.md
|
|
230
|
+
- guardrails/technology/{{backend_stack}}/api-versioning.md
|
|
231
|
+
- guardrails/technology/{{backend_stack}}/coding-standards.md
|
|
232
|
+
- guardrails/technology/{{backend_stack}}/dependency-policy.md
|
|
233
|
+
- guardrails/sample-healthcare/service/technical-requirements.md
|
|
234
|
+
|
|
235
|
+
## /aw-spec-ui-constitution
|
|
236
|
+
<!-- What the UI half ratifies into constitution.ui.md as a UX-* principle series: the
|
|
237
|
+
standard frontend rules for this industry, then the PROJECT-SUPPLIED file. This heading
|
|
238
|
+
is also the AUTHORITATIVE signal that the project HAS a frontend lane — with no heading
|
|
239
|
+
here the constitution command skips the UI half and creates no file at all. Domain-free,
|
|
240
|
+
and loaded before domain-select for the same reason as the set above. -->
|
|
241
|
+
- guardrails/technology/{{frontend_stack}}/ui-constitution.md
|
|
242
|
+
- guardrails/sample-healthcare/frontend/ui-requirements.md
|
|
243
|
+
|
|
244
|
+
## /aw-spec-run
|
|
245
|
+
<!-- Execution / data migration: the persistence rules the migration step generates against,
|
|
246
|
+
plus their worked example. NO domain file; run does not reference constitution.technical.md. -->
|
|
247
|
+
- guardrails/technology/{{backend_stack}}/persistence.md
|
|
248
|
+
- guardrails/technology/{{backend_stack}}/examples/persistence.md
|
|
249
|
+
|
|
250
|
+
## /aw-spec-foundation-backend
|
|
251
|
+
<!-- What `foundation` builds the SERVICE lane's base project against when the operator picks
|
|
252
|
+
a spec ([spec] or [manual spec]) instead of a pack. A pack is verified against these rules
|
|
253
|
+
when it is made; a spec build is not, so the agent gets them as standards and follows them
|
|
254
|
+
wherever the spec is silent. The set is the SHAPE of a base project — stack base, folder
|
|
255
|
+
structure, packages, coding and test conventions, the framework's own types, and the
|
|
256
|
+
project team's technical requirements — not the architecture/persistence detail set plan
|
|
257
|
+
and implement load for features. NO domain file: a scaffold has no domain yet. -->
|
|
258
|
+
- guardrails/technology/{{backend_stack}}/technology-constitution.md
|
|
259
|
+
- guardrails/technology/{{backend_stack}}/folder-structure.md
|
|
260
|
+
- guardrails/technology/{{backend_stack}}/dependency-policy.md
|
|
261
|
+
- guardrails/technology/{{backend_stack}}/coding-standards.md
|
|
262
|
+
- guardrails/technology/{{backend_stack}}/framework-api-map.md
|
|
263
|
+
- guardrails/technology/{{backend_stack}}/testing.md
|
|
264
|
+
- guardrails/sample-healthcare/service/technical-requirements.md
|
|
265
|
+
|
|
266
|
+
## /aw-spec-foundation-frontend
|
|
267
|
+
<!-- The same for the FRONTEND lane: the lane base (ui-constitution, which carries the
|
|
268
|
+
mandatory frontend folder structure), how components are split and named, routing, the
|
|
269
|
+
design system, the generated API client the lane talks to the service through, the test
|
|
270
|
+
setup, and the project team's ui-requirements. Loaded INSTEAD of the backend set, never
|
|
271
|
+
on top of it — foundation swaps the standards between the two lanes. -->
|
|
272
|
+
- guardrails/technology/{{frontend_stack}}/ui-constitution.md
|
|
273
|
+
- guardrails/technology/{{frontend_stack}}/component-architecture.md
|
|
274
|
+
- guardrails/technology/{{frontend_stack}}/component-conventions.md
|
|
275
|
+
- guardrails/technology/{{frontend_stack}}/routing-navigation.md
|
|
276
|
+
- guardrails/technology/{{frontend_stack}}/design-system.md
|
|
277
|
+
- guardrails/technology/{{frontend_stack}}/api-client.md
|
|
278
|
+
- guardrails/technology/{{frontend_stack}}/frontend-testing.md
|
|
279
|
+
- guardrails/sample-healthcare/frontend/ui-requirements.md
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## Quick reference (command → technical file count)
|
|
284
|
+
|
|
285
|
+
| Command | Technical rule files | Role |
|
|
286
|
+
|---|---|---|
|
|
287
|
+
| /aw-spec-specify | 6 | the modelling methodology the spec is expressed in: DDD for the domain model (+ its example), and the four ux/ rules for the experience model it lifts as UX- ids — no technology |
|
|
288
|
+
| /aw-spec-plan-backend | 24 | architecture/security/interop the design author mediates the spec against, each with its example |
|
|
289
|
+
| /aw-spec-plan-frontend | 11 | the frontend lane's design set — composition, routing, client state, interaction states, forms, auth surface, design system, accessibility, i18n, performance, and the cross-lane API pairing the UI design author works from (from spec.md) |
|
|
290
|
+
| /aw-spec-implement-backend | 6 | governance/architecture the SERVICE lane builds against (from backend-plan.md), both paths |
|
|
291
|
+
| /aw-spec-implement-frontend | 13 | the FRONTEND lane's code-generation set (from frontend-plan.md), both paths — conventions, the generated client + its service pairing, auth, client security, states, forms, design system, accessibility, i18n, performance, observability and testing |
|
|
292
|
+
| /aw-spec-build | 3 | layering + coding rules the compile-fixer respects, + the layering example |
|
|
293
|
+
| /aw-spec-analyze-slice | 3 | testing + coding rules and the framework API map the design↔code gate validates against |
|
|
294
|
+
| /aw-spec-constitution | 18 | what the technical half ratifies — the technology base, the standard technical rules, and the project team's technical-requirements.md |
|
|
295
|
+
| /aw-spec-ui-constitution | 2 | what the frontend lane's half ratifies — the UI base + the project team's ui-requirements.md — and the signal that the lane exists |
|
|
296
|
+
| /aw-spec-run | 2 | persistence rules the execution / data-migration step generates against, + its example |
|
|
297
|
+
| /aw-spec-foundation-backend | 7 | what `foundation` builds the service lane's base project against when it is built from a spec rather than unpacked from a pack |
|
|
298
|
+
| /aw-spec-foundation-frontend | 8 | the same for the frontend lane — loaded instead of the backend set, never on top of it |
|
|
299
|
+
|
|
300
|
+
> All migrated workflows are on this map. The conformance-gate workflows **analyze-plan**
|
|
301
|
+
> and **analyze-plan-delta** are intentionally NOT here — they validate the plans / the delta
|
|
302
|
+
> against the spec + DOMAIN gate overlays only (domain-rule-bindings `## /aw-spec-gate`), with no
|
|
303
|
+
> technical gate checklist.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,eAAO,MAAM,WAAW,SA+RpB,CAAC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,17 +1,228 @@
|
|
|
1
|
+
import path from 'path';
|
|
1
2
|
import { Command } from 'commander';
|
|
2
3
|
import inquirer from 'inquirer';
|
|
4
|
+
import chalk from 'chalk';
|
|
3
5
|
import { copyAssets } from '../utils/copy-assets.js';
|
|
4
6
|
import { resolveAssetsPath } from '../utils/paths.js';
|
|
7
|
+
import { getFoundationsByStack, getFoundationById, unpackFoundation, } from '../utils/foundation.js';
|
|
5
8
|
export const initCommand = new Command('init')
|
|
6
|
-
.description('Initialize
|
|
9
|
+
.description('Initialize an AppWeaver project: Project Scaffolding or Spec Workflow Setup')
|
|
7
10
|
.argument('[directory]', 'Target directory (default: current directory)', '.')
|
|
8
|
-
.option('-
|
|
11
|
+
.option('-i, --intent <intent>', 'Intent: scaffolding (Project Scaffolding) or spec (Spec Workflow Setup)')
|
|
12
|
+
.option('-b, --backend <backend>', 'Backend stack: java-spring, dotnet-webapi, or none')
|
|
13
|
+
.option('-f, --frontend <frontend>', 'Frontend stack: nextjs, react-vite, or none')
|
|
14
|
+
.option('--foundation <foundation>', 'Foundation type: hexagonal, vertical-slice, modular-monolith')
|
|
15
|
+
.option('--app-name <name>', 'Application name for scaffolding')
|
|
16
|
+
.option('--package <package>', 'Root package or namespace')
|
|
17
|
+
.option('-a, --agent <agent>', 'Agent to use: claude, antigravity, kilocode, etc.', 'prompt')
|
|
9
18
|
.option('-y, --yes', 'Skip prompts and use defaults')
|
|
10
19
|
.option('--dry-run', 'Show what would be done without making changes')
|
|
11
20
|
.action(async (directory, options) => {
|
|
12
|
-
const targetDir = directory === '.' ? process.cwd() : directory;
|
|
13
|
-
console.log(`\n🔧 Initializing AppWeaver
|
|
14
|
-
// Determine
|
|
21
|
+
const targetDir = directory === '.' ? process.cwd() : path.resolve(directory);
|
|
22
|
+
console.log(`\n🔧 Initializing AppWeaver project in: ${targetDir}\n`);
|
|
23
|
+
// Determine intent
|
|
24
|
+
let intent = options.intent;
|
|
25
|
+
if (!intent) {
|
|
26
|
+
if (options.yes) {
|
|
27
|
+
// If flags specific to scaffolding are passed, default to scaffolding, otherwise spec
|
|
28
|
+
intent = options.backend || options.foundation ? 'scaffolding' : 'spec';
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
const { selectedIntent } = await inquirer.prompt([
|
|
32
|
+
{
|
|
33
|
+
type: 'list',
|
|
34
|
+
name: 'selectedIntent',
|
|
35
|
+
message: 'What would you like to do?',
|
|
36
|
+
choices: [
|
|
37
|
+
{
|
|
38
|
+
name: 'Project Scaffolding — Scaffold a new project from a foundation pack',
|
|
39
|
+
value: 'scaffolding',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Spec Workflow Setup — Setup specification workflows and agent skills',
|
|
43
|
+
value: 'spec',
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
default: 'scaffolding',
|
|
47
|
+
},
|
|
48
|
+
]);
|
|
49
|
+
intent = selectedIntent;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
53
|
+
// BRANCH A: PROJECT SCAFFOLDING
|
|
54
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
55
|
+
if (intent === 'scaffolding') {
|
|
56
|
+
if (!options.yes) {
|
|
57
|
+
console.log(chalk.cyan(`\n📌 Note: Project will be scaffolded in this directory:`));
|
|
58
|
+
console.log(` ${chalk.bold.yellow(targetDir)}`);
|
|
59
|
+
console.log(chalk.gray(` If this is not your working directory, to exit (Ctrl+C) and switch to that folder (or run: aw-spec init <path>).\n`));
|
|
60
|
+
}
|
|
61
|
+
let backendStack = options.backend;
|
|
62
|
+
if (!backendStack) {
|
|
63
|
+
if (options.yes) {
|
|
64
|
+
backendStack = 'java-spring';
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
const { chosenBackend } = await inquirer.prompt([
|
|
68
|
+
{
|
|
69
|
+
type: 'list',
|
|
70
|
+
name: 'chosenBackend',
|
|
71
|
+
message: 'Select backend stack to scaffold:',
|
|
72
|
+
choices: [
|
|
73
|
+
{ name: 'Java Spring Boot (java-spring)', value: 'java-spring' },
|
|
74
|
+
{ name: '.NET Core Web API (dotnet-webapi)', value: 'dotnet-webapi' },
|
|
75
|
+
{ name: 'Skip (no backend)', value: 'none' },
|
|
76
|
+
],
|
|
77
|
+
default: 'java-spring',
|
|
78
|
+
},
|
|
79
|
+
]);
|
|
80
|
+
backendStack = chosenBackend;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
let selectedFoundation;
|
|
84
|
+
if (backendStack && backendStack !== 'none') {
|
|
85
|
+
const foundations = getFoundationsByStack(backendStack);
|
|
86
|
+
if (options.foundation) {
|
|
87
|
+
selectedFoundation = getFoundationById(options.foundation);
|
|
88
|
+
}
|
|
89
|
+
else if (options.yes) {
|
|
90
|
+
selectedFoundation = foundations[0];
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
const { chosenFoundationId } = await inquirer.prompt([
|
|
94
|
+
{
|
|
95
|
+
type: 'list',
|
|
96
|
+
name: 'chosenFoundationId',
|
|
97
|
+
message: 'Select backend foundation type:',
|
|
98
|
+
choices: foundations.map(f => ({
|
|
99
|
+
name: f.displayName,
|
|
100
|
+
value: f.id,
|
|
101
|
+
})),
|
|
102
|
+
default: foundations[0]?.id,
|
|
103
|
+
},
|
|
104
|
+
]);
|
|
105
|
+
selectedFoundation = getFoundationById(chosenFoundationId);
|
|
106
|
+
}
|
|
107
|
+
if (!selectedFoundation && foundations.length > 0) {
|
|
108
|
+
selectedFoundation = foundations[0];
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
let frontendStack = options.frontend;
|
|
112
|
+
if (!frontendStack) {
|
|
113
|
+
if (options.yes) {
|
|
114
|
+
frontendStack = 'none';
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
const { chosenFrontend } = await inquirer.prompt([
|
|
118
|
+
{
|
|
119
|
+
type: 'list',
|
|
120
|
+
name: 'chosenFrontend',
|
|
121
|
+
message: 'Select frontend stack to scaffold:',
|
|
122
|
+
choices: [
|
|
123
|
+
{ name: 'Next.js App Router (nextjs) [Future pack]', value: 'nextjs' },
|
|
124
|
+
{ name: 'React + Vite (react-vite) [Future pack]', value: 'react-vite' },
|
|
125
|
+
{ name: 'Skip (no frontend)', value: 'none' },
|
|
126
|
+
],
|
|
127
|
+
default: 'none',
|
|
128
|
+
},
|
|
129
|
+
]);
|
|
130
|
+
frontendStack = chosenFrontend;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Check if both skipped
|
|
134
|
+
if ((!backendStack || backendStack === 'none') && (!frontendStack || frontendStack === 'none')) {
|
|
135
|
+
console.log(chalk.yellow('\nℹ️ Both backend and frontend scaffolding were skipped. No files were written.'));
|
|
136
|
+
console.log(chalk.gray('To setup spec workflows, run `aw-spec init` and select "Spec Workflow Setup".\n'));
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
// App Name
|
|
140
|
+
let appName = options.appName;
|
|
141
|
+
const defaultAppName = path.basename(targetDir).replace(/[^a-zA-Z0-9._-]/g, '') || 'MyApp';
|
|
142
|
+
if (!appName) {
|
|
143
|
+
if (options.yes) {
|
|
144
|
+
appName = defaultAppName;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
const { inputAppName } = await inquirer.prompt([
|
|
148
|
+
{
|
|
149
|
+
type: 'input',
|
|
150
|
+
name: 'inputAppName',
|
|
151
|
+
message: 'Enter application name:',
|
|
152
|
+
default: defaultAppName,
|
|
153
|
+
validate: (input) => {
|
|
154
|
+
if (!input.trim())
|
|
155
|
+
return 'Application name cannot be empty';
|
|
156
|
+
if (/[^a-zA-Z0-9._-]/.test(input)) {
|
|
157
|
+
return 'Allowed characters: A-Z, a-z, 0-9, ., _, -';
|
|
158
|
+
}
|
|
159
|
+
return true;
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
]);
|
|
163
|
+
appName = inputAppName.trim();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
const hasBackend = selectedFoundation !== undefined;
|
|
167
|
+
const hasFrontend = frontendStack !== 'none' && frontendStack !== undefined;
|
|
168
|
+
const isDualLane = hasBackend && hasFrontend;
|
|
169
|
+
const backendOutDir = isDualLane ? path.join(targetDir, 'backend') : targetDir;
|
|
170
|
+
const frontendOutDir = isDualLane ? path.join(targetDir, 'frontend') : targetDir;
|
|
171
|
+
console.log(chalk.bold('\n⚙️ Scaffolding project foundation...\n'));
|
|
172
|
+
if (options.dryRun) {
|
|
173
|
+
console.log(chalk.cyan('📋 Dry run - would perform the following:'));
|
|
174
|
+
if (selectedFoundation) {
|
|
175
|
+
console.log(` ✓ Unpack ${selectedFoundation.name} (${selectedFoundation.stack}) into: ${backendOutDir}`);
|
|
176
|
+
}
|
|
177
|
+
if (hasFrontend) {
|
|
178
|
+
console.log(` ✓ Reserve frontend directory for ${frontendStack} at: ${frontendOutDir}`);
|
|
179
|
+
}
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
// Unpack backend foundation if selected
|
|
183
|
+
if (selectedFoundation) {
|
|
184
|
+
try {
|
|
185
|
+
console.log(chalk.cyan(`Unpacking ${selectedFoundation.displayName}...`));
|
|
186
|
+
const result = await unpackFoundation({
|
|
187
|
+
foundation: selectedFoundation,
|
|
188
|
+
targetAppName: appName,
|
|
189
|
+
outDir: backendOutDir,
|
|
190
|
+
force: options.yes,
|
|
191
|
+
dryRun: options.dryRun,
|
|
192
|
+
});
|
|
193
|
+
if (result.stdout) {
|
|
194
|
+
console.log(chalk.gray(result.stdout.trim()));
|
|
195
|
+
}
|
|
196
|
+
console.log(chalk.green(` ✓ Scaffolded ${selectedFoundation.name} into ${path.relative(process.cwd(), backendOutDir) || '.'}`));
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
console.error(chalk.red(`\n❌ Failed to unpack foundation ${selectedFoundation.name}:`));
|
|
200
|
+
console.error(err.message || err);
|
|
201
|
+
process.exit(1);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// Handle frontend notification
|
|
205
|
+
if (hasFrontend) {
|
|
206
|
+
console.log(chalk.yellow(`\nℹ️ Frontend foundation packs (${frontendStack}) are currently in development.`));
|
|
207
|
+
console.log(chalk.gray(` Frontend location reserved at: ${path.relative(process.cwd(), frontendOutDir) || '.'}`));
|
|
208
|
+
}
|
|
209
|
+
console.log(chalk.green('\n✅ Project scaffolded successfully!'));
|
|
210
|
+
console.log('\nNext steps:');
|
|
211
|
+
if (selectedFoundation?.ecosystem === 'java') {
|
|
212
|
+
console.log(` cd ${directory !== '.' ? directory : '.'}`);
|
|
213
|
+
console.log(' ./mvnw test # Verify the build & test suite');
|
|
214
|
+
}
|
|
215
|
+
else if (selectedFoundation?.ecosystem === 'dotnet') {
|
|
216
|
+
console.log(` cd ${directory !== '.' ? directory : '.'}`);
|
|
217
|
+
console.log(' dotnet build # Verify the build');
|
|
218
|
+
}
|
|
219
|
+
console.log(chalk.cyan('\n💡 To enable AI specification workflows and agent skills later, run:'));
|
|
220
|
+
console.log(chalk.cyan(' aw-spec init (and select "Spec Workflow Setup")\n'));
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
224
|
+
// BRANCH B: SPEC WORKFLOW SETUP (Existing Flow Preserved)
|
|
225
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
15
226
|
let agent = options.agent;
|
|
16
227
|
// If --yes flag and no explicit agent, use default (claude) without prompting
|
|
17
228
|
if (agent === 'prompt') {
|
|
@@ -53,9 +264,7 @@ export const initCommand = new Command('init')
|
|
|
53
264
|
if (options.dryRun) {
|
|
54
265
|
console.log('📋 Dry run - would copy the following:');
|
|
55
266
|
console.log(` ✓ ${assetsPath}/.aw-spec -> ${targetDir}/.aw-spec`);
|
|
56
|
-
// console.log(` ✓ ${assetsPath}/docs -> ${targetDir}/docs`);
|
|
57
267
|
console.log(` ✓ ${assetsPath}/${agentFolder} -> ${targetDir}/${agentFolder}`);
|
|
58
|
-
// console.log(` ✓ ${assetsPath}/docs/VerticalSlice -> ${targetDir}/docs/VerticalSlice`);
|
|
59
268
|
return;
|
|
60
269
|
}
|
|
61
270
|
// Copy assets
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/config.js
CHANGED
|
@@ -18,7 +18,7 @@ let cachedConfig = null;
|
|
|
18
18
|
export function getCliConfig() {
|
|
19
19
|
if (cachedConfig)
|
|
20
20
|
return cachedConfig;
|
|
21
|
-
const defaultSourceRepo = path.resolve(PROJECT_ROOT, '../AppWeaver.Spec');
|
|
21
|
+
const defaultSourceRepo = path.resolve(PROJECT_ROOT, '../AppWeaver.Spec.Orchestration');
|
|
22
22
|
cachedConfig = {
|
|
23
23
|
sourceRepo: getEnvString('AW_SOURCE_REPO', defaultSourceRepo),
|
|
24
24
|
foldersToBundle: getEnvArray('AW_FOLDERS_TO_BUNDLE', [
|
package/dist/utils/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAEtD,4CAA4C;AAC5C,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAE5D,SAAS,WAAW,CAAC,GAAW,EAAE,UAAoB;IACpD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,UAAU,CAAC;IACjD,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,UAAkB;IACnD,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC;AACxC,CAAC;AAqBD,IAAI,YAAY,GAAqB,IAAI,CAAC;AAE1C,MAAM,UAAU,YAAY;IAC1B,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IAEtC,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAEtD,4CAA4C;AAC5C,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAE5D,SAAS,WAAW,CAAC,GAAW,EAAE,UAAoB;IACpD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,UAAU,CAAC;IACjD,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,UAAkB;IACnD,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC;AACxC,CAAC;AAqBD,IAAI,YAAY,GAAqB,IAAI,CAAC;AAE1C,MAAM,UAAU,YAAY;IAC1B,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IAEtC,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,iCAAiC,CAAC,CAAC;IAExF,YAAY,GAAG;QACb,UAAU,EAAE,YAAY,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;QAE7D,eAAe,EAAE,WAAW,CAAC,sBAAsB,EAAE;YACnD,YAAY;YACZ,aAAa;YACb,YAAY;YACZ,SAAS;YACT,SAAS;YACT,WAAW;YACX,SAAS;YACT,SAAS;YACT,QAAQ;YACR,QAAQ;YACR,aAAa;YACb,MAAM;YACN,WAAW;YACX,UAAU;YACV,UAAU;YACV,WAAW;YACX,OAAO;YACP,MAAM;YACN,QAAQ;YACR,SAAS;SAEV,CAAC;QAEF,UAAU,EAAE,WAAW,CAAC,gBAAgB,EAAE;YACxC,YAAY;YACZ,aAAa;YACb,YAAY;SACb,CAAC;QAEF,cAAc,EAAE;YACd,MAAM,EAAE,YAAY,CAAC,kBAAkB,EAAE,SAAS,CAAC;YACnD,WAAW,EAAE,YAAY,CAAC,kBAAkB,EAAE,SAAS,CAAC;YACxD,QAAQ,EAAE,YAAY,CAAC,oBAAoB,EAAE,WAAW,CAAC;SAC1D;QAED,WAAW,EAAE,WAAW,CAAC,iBAAiB,EAAE;YAC1C,2BAA2B;YAC3B,yBAAyB;YACzB,8BAA8B;YAC9B,6BAA6B;YAC7B,6CAA6C;YAC7C,uCAAuC;YACvC,uCAAuC;YACvC,wCAAwC;YACxC,mCAAmC;YACnC,8BAA8B;YAC9B,mCAAmC;SACpC,CAAC;QAEF,eAAe,EAAE,WAAW,CAAC,4BAA4B,EAAE;YACzD,YAAY;SACb,CAAC;QAEF,aAAa,EAAE,WAAW,CAAC,0BAA0B,EAAE;YACrD,2BAA2B;YAC3B,yBAAyB;YACzB,8BAA8B;YAC9B,6BAA6B;SAC9B,CAAC;QAEF,kBAAkB,EAAE,WAAW,CAAC,yBAAyB,EAAE;YACzD,SAAS;YACT,SAAS;YACT,WAAW;SACZ,CAAC;KACH,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,gBAAgB;IAC9B,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export type BackendStackId = 'java-spring' | 'dotnet-webapi';
|
|
2
|
+
export type FrontendStackId = 'nextjs' | 'react-vite';
|
|
3
|
+
export interface FoundationInfo {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
displayName: string;
|
|
7
|
+
stack: BackendStackId | FrontendStackId;
|
|
8
|
+
ecosystem: 'java' | 'dotnet' | 'node';
|
|
9
|
+
kind: 'backend' | 'frontend';
|
|
10
|
+
packFileName: string;
|
|
11
|
+
unpackerScript: string;
|
|
12
|
+
unpackerPs1: string;
|
|
13
|
+
sentinel: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const SHIPPED_FOUNDATIONS: FoundationInfo[];
|
|
16
|
+
export declare function getFoundationsByStack(stack: string): FoundationInfo[];
|
|
17
|
+
export declare function getFoundationById(id: string): FoundationInfo | undefined;
|
|
18
|
+
export interface FoundationPaths {
|
|
19
|
+
foundationDir: string;
|
|
20
|
+
packFile: string;
|
|
21
|
+
scriptFile: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function resolveFoundationPaths(foundation: FoundationInfo): Promise<FoundationPaths>;
|
|
24
|
+
export interface UnpackOptions {
|
|
25
|
+
foundation: FoundationInfo;
|
|
26
|
+
targetAppName: string;
|
|
27
|
+
outDir: string;
|
|
28
|
+
sentinel?: string;
|
|
29
|
+
force?: boolean;
|
|
30
|
+
dryRun?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export declare function unpackFoundation(options: UnpackOptions): Promise<{
|
|
33
|
+
stdout: string;
|
|
34
|
+
stderr: string;
|
|
35
|
+
}>;
|
|
36
|
+
//# sourceMappingURL=foundation.d.ts.map
|