aw-spec-cli 0.1.18 → 0.1.20
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/.appweaver/DESIGN-FORMAT.md +63 -31
- package/assets/.appweaver/orchestrator/modules/delta-plan.orch.yaml +62 -14
- package/assets/.appweaver/orchestrator/modules/delta-spec.orch.yaml +10 -6
- package/assets/.appweaver/orchestrator/modules/lane-gate.orch.yaml +9 -1
- package/assets/.appweaver/orchestrator/modules/tech-select.orch.yaml +21 -0
- package/assets/.appweaver/orchestrator/orchestrator.py +23 -1
- package/assets/.appweaver/orchestrator/rev-templates/delta-design-template.skeleton.md +1 -1
- package/assets/.appweaver/orchestrator/rev-templates/design-template.skeleton.md +22 -13
- package/assets/.appweaver/orchestrator/rev-templates/ui-delta-design-template.skeleton.md +1 -1
- package/assets/.appweaver/orchestrator/rev-templates/ui-design-template.skeleton.md +6 -4
- package/assets/.appweaver/orchestrator/workflows/aw-spec-adopt.orch.yaml +399 -131
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan-delta.orch.yaml +1 -1
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan.orch.yaml +199 -38
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice-delta.orch.yaml +1 -1
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +159 -25
- package/assets/.appweaver/orchestrator/workflows/aw-spec-build.orch.yaml +20 -9
- package/assets/.appweaver/orchestrator/workflows/aw-spec-characterize.orch.yaml +1 -1
- package/assets/.appweaver/orchestrator/workflows/aw-spec-close-delta.orch.yaml +183 -40
- package/assets/.appweaver/orchestrator/workflows/aw-spec-deploy.orch.yaml +1 -1
- package/assets/.appweaver/orchestrator/workflows/aw-spec-finalize-delta.orch.yaml +311 -36
- package/assets/.appweaver/orchestrator/workflows/aw-spec-implement.orch.yaml +221 -40
- package/assets/.appweaver/orchestrator/workflows/aw-spec-inventory.orch.yaml +217 -174
- package/assets/.appweaver/orchestrator/workflows/aw-spec-onboard.orch.yaml +494 -109
- package/assets/.appweaver/orchestrator/workflows/aw-spec-parity.orch.yaml +1 -1
- package/assets/.appweaver/orchestrator/workflows/aw-spec-plan.orch.yaml +83 -18
- package/assets/.appweaver/orchestrator/workflows/aw-spec-recall-delta.orch.yaml +319 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-run.orch.yaml +1 -1
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-feature.orch.yaml +29 -23
- package/assets/.appweaver/orchestrator/workflows/aw-spec-specify.orch.yaml +143 -34
- package/assets/.appweaver/scripts/bash/aw-inventory.sh +15 -0
- package/assets/.appweaver/scripts/bash/aw-spec-actions.sh +878 -51
- package/assets/.appweaver/scripts/bash/aw-xref.sh +3 -0
- package/assets/.appweaver/scripts/bash/common.sh +28 -1
- package/assets/.appweaver/scripts/powershell/aw-inventory.ps1 +15 -0
- package/assets/.appweaver/scripts/powershell/aw-spec-actions.ps1 +868 -51
- package/assets/.appweaver/scripts/powershell/aw-xref.ps1 +3 -0
- package/assets/.appweaver/scripts/python/aw-inventory.py +1832 -65
- package/assets/.appweaver/scripts/python/aw-xref.py +500 -81
- package/assets/.appweaver/templates/delta-design-template.md +1 -1
- package/assets/.appweaver/templates/delta-domain-model-template.md +1 -1
- package/assets/.appweaver/templates/delta-spec-template.md +4 -3
- package/assets/.appweaver/templates/design-template.md +56 -40
- package/assets/.appweaver/templates/okf-concept-template.md +11 -1
- package/assets/.appweaver/templates/proposed-inventory-template.md +127 -0
- package/assets/.appweaver/templates/source-map-template.md +5 -3
- package/assets/.appweaver/templates/spec-template.md +24 -21
- package/assets/.appweaver/templates/ui-delta-design-template.md +1 -1
- package/assets/.appweaver/templates/ui-design-template.md +11 -7
- package/assets/foundations/dotnet/ModularMonolith/ModularMonolith.pack.txt +4489 -361
- package/assets/foundations/dotnet/VerticalSlice/VerticalSlice.pack.txt +2274 -125
- package/assets/guardrails/domain/healthcare/auditing.domain.md +3 -3
- package/assets/guardrails/domain/pharma/auditing.domain.md +3 -3
- 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/cqrs.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/data-classification.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/modular-monolith.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/persistence.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-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/component-architecture.md +1 -1
- 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/i18n.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/package.json +1 -1
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
# aw-xref.sh concept-upsert --aggregate X [--source-files a,b,c] [--description D] [--origin ...] [--root DIR]
|
|
11
11
|
# aw-xref.sh concept-overview --aggregate X (--text PROSE | --text-file F) [--root DIR]
|
|
12
12
|
# aw-xref.sh concept-paths --aggregate X | --feature-dir <dir> [--root DIR] [--bundle knowledge]
|
|
13
|
+
# aw-xref.sh feature-aggregates --feature-dir <dir> [--root DIR]
|
|
14
|
+
# (the aggregate(s) a feature acts on: its spec's Acts-on line,
|
|
15
|
+
# then the boundary map, then the feature name itself)
|
|
13
16
|
set -euo pipefail
|
|
14
17
|
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
15
18
|
exec python3 "$DIR/../python/aw-xref.py" "$@"
|
|
@@ -26,17 +26,44 @@ find_specify_root() {
|
|
|
26
26
|
|
|
27
27
|
# Get repository root, prioritizing .appweaver directory
|
|
28
28
|
# This prevents using a parent repository when aw-spec is initialized in a subdirectory
|
|
29
|
+
#
|
|
30
|
+
# A `[` or `]` ANYWHERE IN THE ROOT REFUSES THE RUN, in both shells. Those two characters
|
|
31
|
+
# are a wildcard character class to PowerShell's `-Path` family and to a shell/Python
|
|
32
|
+
# glob, so under such a root a path test answers about a DIFFERENT path — `…/a[b]/x` is
|
|
33
|
+
# looked up as `…/ab/x` — and an enumeration quietly returns nothing. The kit resolves
|
|
34
|
+
# hundreds of paths against this root, and the failure mode is not an error but a wrong
|
|
35
|
+
# answer: a gate that finds no delta reports a clean tree, and a merge that finds no
|
|
36
|
+
# section merges nothing and says it succeeded.
|
|
37
|
+
#
|
|
38
|
+
# The per-call fixes are in (glob.escape on every pattern's directory here; -LiteralPath
|
|
39
|
+
# throughout the PowerShell twin), and they cover every site the kit resolves through a
|
|
40
|
+
# pattern. What they cannot cover is the ~150 plain existence tests, and a half-guarded
|
|
41
|
+
# root is worse than a refused one because it looks like it works. So the root itself is
|
|
42
|
+
# the gate, checked once, naming the path.
|
|
43
|
+
_reject_bracketed_root() {
|
|
44
|
+
case "$1" in
|
|
45
|
+
*'['*|*']'*)
|
|
46
|
+
echo "aw-spec: this repository's path contains '[' or ']' — $1" >&2
|
|
47
|
+
echo "aw-spec: those characters are a wildcard character class to the path APIs this kit uses (PowerShell -Path, shell and Python globs), so file lookups would silently resolve to a different path or to nothing at all, and a gate that finds nothing reports success. Move or rename the checkout so no directory in its path contains a square bracket, then re-run." >&2
|
|
48
|
+
return 1 ;;
|
|
49
|
+
esac
|
|
50
|
+
return 0
|
|
51
|
+
}
|
|
52
|
+
|
|
29
53
|
get_repo_root() {
|
|
30
54
|
# First, look for .appweaver directory (aw-spec's own marker)
|
|
31
55
|
local specify_root
|
|
32
56
|
if specify_root=$(find_specify_root); then
|
|
57
|
+
_reject_bracketed_root "$specify_root" || exit 1
|
|
33
58
|
echo "$specify_root"
|
|
34
59
|
return
|
|
35
60
|
fi
|
|
36
61
|
|
|
37
62
|
# Final fallback to script location
|
|
38
63
|
local script_dir="$(CDPATH="" cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
39
|
-
(cd "$script_dir/../../.." && pwd)
|
|
64
|
+
local fallback_root; fallback_root=$(cd "$script_dir/../../.." && pwd)
|
|
65
|
+
_reject_bracketed_root "$fallback_root" || exit 1
|
|
66
|
+
echo "$fallback_root"
|
|
40
67
|
}
|
|
41
68
|
|
|
42
69
|
# FEATURE RESOLUTION IS SINGLE-CHANNEL: `.appweaver/feature.json`, written by
|
|
@@ -10,6 +10,21 @@
|
|
|
10
10
|
# [--service-root <p>] [--ui-root <p>] (the declared lane paths:
|
|
11
11
|
# backend signals come from outside the UI subtree, frontend
|
|
12
12
|
# signals from inside it, so neither carries the other's files)
|
|
13
|
+
# aw-inventory.ps1 propose [--root <dir>] [--service-root <p>] [--ui-root <p>]
|
|
14
|
+
# [--strategy structure|reference|persistence] [--out <md>] [--map <json>]
|
|
15
|
+
# (Pass A+B+C: writes the editable specs/proposed-inventory.md
|
|
16
|
+
# and the machine map onboard reads)
|
|
17
|
+
# aw-inventory.ps1 apply [--root <dir>] [--proposal <md>] [--map <json>]
|
|
18
|
+
# (validates the operator's edits to the proposal and
|
|
19
|
+
# regenerates the machine map; reports the row it cannot resolve)
|
|
20
|
+
# aw-inventory.ps1 scaffold-context --context <Name> [--root <dir>] [--map <json>]
|
|
21
|
+
# (creates specs/<Context>/<Feature>/ for every feature the map
|
|
22
|
+
# assigns to that context — directories only, no documents)
|
|
23
|
+
# aw-inventory.ps1 concept --bundle <dir> --aggregate <Name>
|
|
24
|
+
# aw-inventory.ps1 list-aggregates --bundle <dir> [--context <Name>] [--root <dir>] [--map <json>]
|
|
25
|
+
# (--context drops concepts stamped with a DIFFERENT bounded
|
|
26
|
+
# context; unstamped concepts are always kept. `pickable` offers
|
|
27
|
+
# each concept as the features the map puts on it)
|
|
13
28
|
# aw-inventory.ps1 validate --bundle <dir> [--repo-root <dir>]
|
|
14
29
|
$ErrorActionPreference = "Stop"
|
|
15
30
|
$core = Join-Path $PSScriptRoot "..\python\aw-inventory.py"
|