aw-spec-cli 0.1.15 → 0.1.17
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 +18 -18
- package/assets/.appweaver/ORCH-DIALECT.md +1 -3
- package/assets/.appweaver/RULE-PARTITION.md +29 -13
- package/assets/.appweaver/STACK-PROFILES.md +10 -9
- package/assets/.appweaver/orchestrator/.state/smoke.state.json +32 -0
- package/assets/.appweaver/orchestrator/AGENT-PROFILE.md +4 -1
- package/assets/.appweaver/orchestrator/modules/delta-plan.orch.yaml +251 -0
- package/assets/.appweaver/orchestrator/modules/delta-spec.orch.yaml +104 -35
- package/assets/.appweaver/orchestrator/orchestrator.py +5 -4
- package/assets/.appweaver/orchestrator/rev-templates/delta-design-template.skeleton.md +94 -36
- package/assets/.appweaver/orchestrator/rev-templates/design-template.skeleton.md +1 -1
- package/assets/.appweaver/orchestrator/rev-templates/domain-model-template.skeleton.md +115 -0
- package/assets/.appweaver/orchestrator/rev-templates/domain-rule-bindings.skeleton.md +2 -9
- package/assets/.appweaver/orchestrator/rev-templates/tech-rule-bindings.skeleton.md +16 -40
- package/assets/.appweaver/orchestrator/rev-templates/ui-delta-design-template.skeleton.md +38 -17
- package/assets/.appweaver/orchestrator/rev-templates/ui-design-template.skeleton.md +8 -8
- package/assets/.appweaver/orchestrator/workflows/aw-spec-adopt.orch.yaml +10 -11
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan-delta.orch.yaml +673 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan.orch.yaml +535 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice-delta.orch.yaml +643 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +78 -626
- package/assets/.appweaver/orchestrator/workflows/aw-spec-build.orch.yaml +4 -4
- package/assets/.appweaver/orchestrator/workflows/aw-spec-characterize.orch.yaml +7 -7
- package/assets/.appweaver/orchestrator/workflows/aw-spec-close-delta.orch.yaml +16 -14
- package/assets/.appweaver/orchestrator/workflows/aw-spec-constitution.orch.yaml +2 -2
- package/assets/.appweaver/orchestrator/workflows/aw-spec-finalize-delta.orch.yaml +243 -144
- package/assets/.appweaver/orchestrator/workflows/aw-spec-implement.orch.yaml +882 -464
- package/assets/.appweaver/orchestrator/workflows/aw-spec-inventory.orch.yaml +4 -4
- package/assets/.appweaver/orchestrator/workflows/aw-spec-onboard.orch.yaml +32 -91
- package/assets/.appweaver/orchestrator/workflows/aw-spec-parity.orch.yaml +2 -2
- package/assets/.appweaver/orchestrator/workflows/aw-spec-plan.orch.yaml +832 -477
- package/assets/.appweaver/orchestrator/workflows/aw-spec-run.orch.yaml +2 -2
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-bounded-context.orch.yaml +132 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-feature.orch.yaml +38 -5
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-stack.orch.yaml +3 -3
- package/assets/.appweaver/orchestrator/workflows/aw-spec-specify.orch.yaml +271 -892
- package/assets/.appweaver/scripts/bash/aw-spec-actions.sh +1096 -2911
- package/assets/.appweaver/scripts/bash/aw-xref.sh +1 -2
- package/assets/.appweaver/scripts/bash/common.sh +47 -0
- package/assets/.appweaver/scripts/powershell/aw-spec-actions.ps1 +936 -2766
- package/assets/.appweaver/scripts/powershell/aw-xref.ps1 +1 -2
- package/assets/.appweaver/scripts/python/aw-payload-parity.py +174 -0
- package/assets/.appweaver/scripts/python/aw-stack.py +6 -2
- package/assets/.appweaver/scripts/python/aw-xref.py +185 -292
- package/assets/.appweaver/templates/constitution-ui-template.md +1 -1
- package/assets/.appweaver/templates/delta-design-template.md +120 -30
- package/assets/.appweaver/templates/delta-domain-model-template.md +81 -0
- package/assets/.appweaver/templates/delta-spec-template.md +43 -17
- package/assets/.appweaver/templates/design-template.md +68 -98
- package/assets/.appweaver/templates/domain-model-template.md +130 -0
- package/assets/.appweaver/templates/okf-concept-template.md +2 -2
- package/assets/.appweaver/templates/source-map-template.md +3 -3
- package/assets/.appweaver/templates/spec-template.md +100 -122
- package/assets/.appweaver/templates/ui-delta-design-template.md +159 -0
- package/assets/.appweaver/templates/ui-design-template.md +46 -75
- package/assets/guardrails/projects/dotnet-default-project/domain-rule-bindings.md +7 -18
- package/assets/guardrails/projects/dotnet-default-project/tech-rule-bindings.md +34 -39
- package/assets/guardrails/requirement-spec.txt +2 -2
- package/assets/guardrails/technology/dotnet-webapi/testing.md +1 -1
- package/package.json +1 -1
- package/assets/.appweaver/orchestrator/modules/delta-design.orch.yaml +0 -105
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-delta-design.orch.yaml +0 -251
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-design.orch.yaml +0 -749
- package/assets/.appweaver/orchestrator/workflows/aw-spec-implement-delta.orch.yaml +0 -253
- package/assets/.appweaver/orchestrator/workflows/aw-spec-implement-ui.orch.yaml +0 -540
- package/assets/.appweaver/orchestrator/workflows/aw-spec-plan-ui.orch.yaml +0 -597
- package/assets/.appweaver/orchestrator/workflows/aw-spec-story-plan.orch.yaml +0 -945
- package/assets/.appweaver/orchestrator/workflows/aw-spec-sync-stories.orch.yaml +0 -1040
- package/assets/.appweaver/templates/story-template.md +0 -147
|
@@ -7,10 +7,9 @@
|
|
|
7
7
|
#
|
|
8
8
|
# aw-xref.sh record --using X --design <design.md> [--origin ...] [--date YYYY-MM-DD] [--root DIR]
|
|
9
9
|
# aw-xref.sh list --aggregate Y [--root DIR] [--bundle knowledge]
|
|
10
|
-
# aw-xref.sh concept-upsert --aggregate X [--source-files a,b,c] [--
|
|
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 concept-coverage --aggregate X | --feature-dir <dir> [--ids "FR-001,BR-002"] [--max-list N] [--root DIR] [--bundle knowledge]
|
|
14
13
|
set -euo pipefail
|
|
15
14
|
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
16
15
|
exec python3 "$DIR/../python/aw-xref.py" "$@"
|
|
@@ -50,6 +50,53 @@ get_repo_root() {
|
|
|
50
50
|
# reads. Callers that need to act on a specific feature take an explicit `--feature-dir`
|
|
51
51
|
# argument, which wins over feature.json at the call site.
|
|
52
52
|
|
|
53
|
+
# CONTEXT RESOLUTION IS THE SAME SINGLE CHANNEL, one level up:
|
|
54
|
+
# `.appweaver/context.json`, written by select-bounded-context. A bounded context is
|
|
55
|
+
# the container a feature lives in — specs/<Context>/<Feature>/ — and it owns the one
|
|
56
|
+
# domain-model.md every spec inside it references.
|
|
57
|
+
#
|
|
58
|
+
# ABSENCE IS A VALID STATE, not a failure. A repo that predates bounded contexts has
|
|
59
|
+
# features directly under specs/, and every caller keeps that flat layout when no
|
|
60
|
+
# context is active. That is what lets the context be adopted per repo instead of
|
|
61
|
+
# forcing a migration on every tree at once.
|
|
62
|
+
read_context_json_context_directory() {
|
|
63
|
+
local repo_root="$1"
|
|
64
|
+
local cj="$repo_root/.appweaver/context.json"
|
|
65
|
+
[[ -f "$cj" ]] || { printf '%s' ''; return 0; }
|
|
66
|
+
|
|
67
|
+
local _cd=''
|
|
68
|
+
if command -v jq >/dev/null 2>&1; then
|
|
69
|
+
if ! _cd=$(jq -r '.context_directory // empty' "$cj" 2>/dev/null); then
|
|
70
|
+
_cd=''
|
|
71
|
+
fi
|
|
72
|
+
elif command -v python3 >/dev/null 2>&1; then
|
|
73
|
+
if ! _cd=$(python3 -c "import json,sys; d=json.load(open(sys.argv[1])); v=d.get('context_directory'); print(v if v else '')" "$cj" 2>/dev/null); then
|
|
74
|
+
_cd=''
|
|
75
|
+
fi
|
|
76
|
+
else
|
|
77
|
+
_cd=$( { grep -E '"context_directory"[[:space:]]*:' "$cj" 2>/dev/null || true; } \
|
|
78
|
+
| head -n 1 \
|
|
79
|
+
| sed -E 's/^[^:]*:[[:space:]]*"([^"]*)".*$/\1/' )
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
printf '%s' "$_cd"
|
|
83
|
+
return 0
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
# The specs/ subtree the active context owns, as a repo-relative path: the context
|
|
87
|
+
# directory when one is active, plain "specs" when none is. Every caller that
|
|
88
|
+
# enumerates or creates a feature goes through this, so the flat and nested layouts
|
|
89
|
+
# differ in exactly one place.
|
|
90
|
+
feature_base_rel() {
|
|
91
|
+
local repo_root="$1"
|
|
92
|
+
local cd_rel; cd_rel=$(read_context_json_context_directory "$repo_root")
|
|
93
|
+
if [[ -n "$cd_rel" ]] && [[ -d "$repo_root/$cd_rel" ]]; then
|
|
94
|
+
printf '%s' "$cd_rel"
|
|
95
|
+
else
|
|
96
|
+
printf '%s' 'specs'
|
|
97
|
+
fi
|
|
98
|
+
}
|
|
99
|
+
|
|
53
100
|
# Safely read .appweaver/feature.json's "feature_directory" value.
|
|
54
101
|
# Prints the raw value (possibly relative) to stdout, or empty string if the file
|
|
55
102
|
# is missing, unparseable, or does not contain the key. Always returns 0 so callers
|