aw-spec-cli 0.1.3 → 0.1.5
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 +291 -0
- package/assets/.agents/agent.json +28 -0
- package/assets/.agents/skills/aw-spec-orch/SKILL.md +56 -0
- package/assets/.agents/skills/aw-spec-orch-demo/SKILL.md +59 -0
- package/assets/.aw-spec/DESIGN-FORMAT.md +151 -0
- package/assets/.aw-spec/ORCH-DIALECT.md +156 -0
- package/assets/.aw-spec/RULE-PARTITION.md +126 -0
- package/assets/.aw-spec/extensions/agent-context/extension.yml +12 -9
- package/assets/.aw-spec/extensions.yml +12 -19
- package/assets/.aw-spec/integrations/aw-spec.manifest.json +1 -9
- package/assets/.aw-spec/interpreter/run-skill.py +1158 -0
- package/assets/.aw-spec/orchestrator/AGENT-PROFILE.md +94 -0
- package/assets/.aw-spec/orchestrator/README.md +300 -0
- package/assets/.aw-spec/orchestrator/adapters/claude_agent_sdk.py +74 -0
- package/assets/.aw-spec/orchestrator/adapters/google_antigravity.py +74 -0
- package/assets/.aw-spec/orchestrator/modules/delta-design.orch.yaml +105 -0
- package/assets/.aw-spec/orchestrator/modules/delta-spec.orch.yaml +79 -0
- package/assets/.aw-spec/orchestrator/modules/domain-select.orch.yaml +81 -0
- package/assets/.aw-spec/orchestrator/modules/tech-select.orch.yaml +75 -0
- package/assets/.aw-spec/orchestrator/orchestrator.py +1721 -0
- package/assets/.aw-spec/orchestrator/rev-templates/ai-rules.reference.md +40 -0
- package/assets/.aw-spec/orchestrator/rev-templates/comandrulemap.skeleton.md +59 -0
- package/assets/.aw-spec/orchestrator/rev-templates/commandtechrulemap.skeleton.md +97 -0
- package/assets/.aw-spec/orchestrator/rev-templates/domain-constitution.skeleton.md +61 -0
- package/assets/.aw-spec/orchestrator/rev-templates/domain-requirements.skeleton.md +48 -0
- package/assets/.aw-spec/orchestrator/rev-templates/domain-rule-file.skeleton.md +39 -0
- package/assets/.aw-spec/orchestrator/rev-templates/technical-constitution.skeleton.md +106 -0
- package/assets/.aw-spec/orchestrator/rev-templates/technical-rule-file.skeleton.md +54 -0
- package/assets/.aw-spec/orchestrator/workflows/_smoke.orch.yaml +160 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-add-component.orch.yaml +244 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-adopt.orch.yaml +775 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-analyze-delta-design.orch.yaml +248 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-analyze-design.orch.yaml +261 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +425 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-build.orch.yaml +188 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-characterize.orch.yaml +474 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-close-delta.orch.yaml +181 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-constitution.orch.yaml +284 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-demo.orch.yaml +103 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-dependency-tree.orch.yaml +69 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-deploy.orch.yaml +85 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-design.orch.yaml +382 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-finalize-delta.orch.yaml +382 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-foundation.orch.yaml +246 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-implement-delta.orch.yaml +231 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-implement.orch.yaml +258 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-inventory.orch.yaml +236 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-onboard.orch.yaml +949 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-parity.orch.yaml +293 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-run.orch.yaml +177 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-select-domain.orch.yaml +79 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-select-feature.orch.yaml +128 -0
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-specify.orch.yaml +412 -0
- package/assets/.aw-spec/scripts/bash/aw-inventory.sh +14 -0
- package/assets/.aw-spec/scripts/bash/aw-parity.sh +13 -0
- package/assets/.aw-spec/scripts/bash/aw-rev-constitution.sh +13 -0
- package/assets/.aw-spec/scripts/bash/aw-spec-actions.sh +1899 -0
- package/assets/.aw-spec/scripts/bash/aw-xref.sh +15 -0
- package/assets/.aw-spec/scripts/bash/common.sh +11 -60
- package/assets/.aw-spec/scripts/powershell/aw-inventory.ps1 +14 -0
- package/assets/.aw-spec/scripts/powershell/aw-parity.ps1 +13 -0
- package/assets/.aw-spec/scripts/powershell/aw-rev-constitution.ps1 +13 -0
- package/assets/.aw-spec/scripts/powershell/aw-spec-actions.ps1 +1563 -0
- package/assets/.aw-spec/scripts/powershell/aw-xref.ps1 +15 -0
- package/assets/.aw-spec/scripts/python/aw-inventory.py +683 -0
- package/assets/.aw-spec/scripts/python/aw-parity.py +380 -0
- package/assets/.aw-spec/scripts/python/aw-rev-constitution.py +312 -0
- package/assets/.aw-spec/scripts/python/aw-xref.py +1330 -0
- package/assets/.aw-spec/scripts/python/validate_okf.py +349 -0
- package/assets/.aw-spec/templates/constitution-domain-template.md +75 -0
- package/assets/.aw-spec/templates/constitution-technical-template.md +70 -0
- package/assets/.aw-spec/templates/delta-design-template.md +69 -0
- package/assets/.aw-spec/templates/delta-spec-template.md +60 -0
- package/assets/.aw-spec/templates/design-template.md +383 -0
- package/assets/.aw-spec/templates/okf-concept-template.md +103 -0
- package/assets/.aw-spec/templates/parity-manifest-template.json +49 -0
- package/assets/.aw-spec/templates/source-map-template.md +85 -0
- package/assets/.aw-spec/templates/spec-template.md +192 -71
- package/assets/.claude/agent.json +27 -0
- package/assets/.claude/skills/aw-spec-orch/SKILL.md +55 -0
- package/assets/.claude/skills/aw-spec-orch-demo/SKILL.md +59 -0
- package/assets/.kilocode/agent.json +28 -0
- package/assets/.kilocode/workflows/aw-spec-orch-demo.md +59 -0
- package/assets/.kilocode/workflows/aw-spec-orch.md +55 -0
- package/assets/docs/architecture/clean-architecture.md +1 -1
- package/assets/docs/architecture/cqrs.md +1 -1
- package/assets/docs/architecture/eventing.md +1 -1
- package/assets/docs/architecture/folder-structure.md +1 -1
- package/assets/docs/architecture/modular-monolith.md +1 -1
- package/assets/docs/architecture/persistence.md +1 -1
- package/assets/docs/architecture/testing.md +1 -1
- package/assets/docs/architecture/vertical-slices.md +1 -1
- package/assets/docs/components/Email/README.md +1 -1
- package/assets/docs/components/Jobs/README.md +1 -1
- package/assets/docs/components/QrGenerator/README.md +1 -1
- package/assets/docs/components/README.md +1 -1
- package/assets/docs/domain/domain-driven-design.md +1 -1
- package/assets/docs/domainspecs/healthcare/api-versioning.domain.md +1 -1
- package/assets/docs/domainspecs/healthcare/auditing.domain.md +86 -18
- package/assets/docs/domainspecs/healthcare/authorization.domain.md +1 -1
- package/assets/docs/domainspecs/healthcare/clinical-terms.md +1 -1
- package/assets/docs/domainspecs/healthcare/coding-standards.domain.md +1 -1
- package/assets/docs/domainspecs/healthcare/comandrulemap.md +58 -124
- package/assets/docs/domainspecs/healthcare/commandtechrulemap.md +119 -0
- package/assets/docs/domainspecs/healthcare/consent.md +1 -1
- package/assets/docs/domainspecs/healthcare/cqrs.domain.md +1 -1
- package/assets/docs/domainspecs/healthcare/data-classification.domain.md +1 -1
- package/assets/docs/domainspecs/healthcare/dependency-policy.domain.md +1 -1
- package/assets/docs/domainspecs/healthcare/dicom.md +1 -1
- package/assets/docs/domainspecs/healthcare/domain-driven-design.domain.md +1 -1
- package/assets/docs/domainspecs/healthcare/eventing.domain.md +1 -1
- package/assets/docs/domainspecs/healthcare/fhir.md +1 -1
- package/assets/docs/domainspecs/healthcare/folder-structure.domain.md +1 -1
- package/assets/docs/domainspecs/healthcare/hipaa.md +1 -1
- package/assets/docs/domainspecs/healthcare/hl7.md +1 -1
- package/assets/docs/domainspecs/healthcare/integration-terms.md +1 -1
- package/assets/docs/domainspecs/healthcare/persistence.domain.md +1 -1
- package/assets/docs/domainspecs/healthcare/terminology.md +1 -1
- package/assets/docs/domainspecs/healthcare/testing.domain.md +1 -1
- package/assets/docs/domainspecs/healthcare/vertical-slices.domain.md +1 -1
- package/assets/docs/domainspecs/healthcare/zero-trust.domain.md +1 -1
- package/assets/docs/domainspecs/pharma/api-versioning.domain.md +1 -1
- package/assets/docs/domainspecs/pharma/atc.md +1 -1
- package/assets/docs/domainspecs/pharma/auditing.domain.md +80 -16
- package/assets/docs/domainspecs/pharma/authorization.domain.md +1 -1
- package/assets/docs/domainspecs/pharma/coding-standards.domain.md +1 -1
- package/assets/docs/domainspecs/pharma/comandrulemap.md +64 -142
- package/assets/docs/domainspecs/pharma/commandtechrulemap.md +119 -0
- package/assets/docs/domainspecs/pharma/cqrs.domain.md +1 -1
- package/assets/docs/domainspecs/pharma/data-classification.domain.md +1 -1
- package/assets/docs/domainspecs/pharma/data-provenance.md +1 -1
- package/assets/docs/domainspecs/pharma/dependency-policy.domain.md +1 -1
- package/assets/docs/domainspecs/pharma/domain-driven-design.domain.md +1 -1
- package/assets/docs/domainspecs/pharma/eventing.domain.md +1 -1
- package/assets/docs/domainspecs/pharma/fhir.md +1 -1
- package/assets/docs/domainspecs/pharma/folder-structure.domain.md +1 -1
- package/assets/docs/domainspecs/pharma/hl7.md +1 -1
- package/assets/docs/domainspecs/pharma/idmp.md +1 -1
- package/assets/docs/domainspecs/pharma/integration-terms.md +1 -1
- package/assets/docs/domainspecs/pharma/ndc.md +1 -1
- package/assets/docs/domainspecs/pharma/persistence.domain.md +1 -1
- package/assets/docs/domainspecs/pharma/pharma-terms.md +1 -1
- package/assets/docs/domainspecs/pharma/product-lifecycle.domain.md +1 -1
- package/assets/docs/domainspecs/pharma/regulatory-compliance.md +1 -1
- package/assets/docs/domainspecs/pharma/terminology.md +1 -1
- package/assets/docs/domainspecs/pharma/testing.domain.md +1 -1
- package/assets/docs/domainspecs/pharma/vertical-slices.domain.md +1 -1
- package/assets/docs/domainspecs/pharma/zero-trust.domain.md +1 -1
- package/assets/docs/governance/api-versioning.md +1 -1
- package/assets/docs/governance/coding-standards.md +1 -1
- package/assets/docs/governance/dependency-policy.md +1 -1
- package/assets/docs/requirement-spec.txt +13 -1
- package/assets/docs/security/auditing.md +54 -11
- package/assets/docs/security/authorization.md +1 -1
- package/assets/docs/security/data-classification.md +1 -1
- package/assets/docs/security/zero-trust.md +1 -1
- package/dist/commands/update.d.ts +3 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +142 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/utils/manifest.d.ts +31 -0
- package/dist/utils/manifest.d.ts.map +1 -0
- package/dist/utils/manifest.js +91 -0
- package/dist/utils/manifest.js.map +1 -0
- package/dist/utils/paths.js +2 -2
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/update-engine.d.ts +52 -0
- package/dist/utils/update-engine.d.ts.map +1 -0
- package/dist/utils/update-engine.js +203 -0
- package/dist/utils/update-engine.js.map +1 -0
- package/package.json +1 -1
- package/assets/.agents/skills/aw-spec-addcomponent/SKILL.md +0 -129
- package/assets/.agents/skills/aw-spec-agent-context-update/SKILL.md +0 -31
- package/assets/.agents/skills/aw-spec-analyze/SKILL.md +0 -296
- package/assets/.agents/skills/aw-spec-checklist/SKILL.md +0 -374
- package/assets/.agents/skills/aw-spec-clarify/SKILL.md +0 -320
- package/assets/.agents/skills/aw-spec-constitution/SKILL.md +0 -194
- package/assets/.agents/skills/aw-spec-fast-implement/SKILL.md +0 -268
- package/assets/.agents/skills/aw-spec-foundation/SKILL.md +0 -358
- package/assets/.agents/skills/aw-spec-implement/SKILL.md +0 -279
- package/assets/.agents/skills/aw-spec-minimal-implementation/SKILL.md +0 -209
- package/assets/.agents/skills/aw-spec-plan/SKILL.md +0 -221
- package/assets/.agents/skills/aw-spec-select-domain/SKILL.md +0 -73
- package/assets/.agents/skills/aw-spec-specify/SKILL.md +0 -382
- package/assets/.agents/skills/aw-spec-tasks/SKILL.md +0 -259
- package/assets/.agents/skills/aw-spec-taskstoissues/SKILL.md +0 -107
- package/assets/.aw-spec/integrations/claude.manifest.json +0 -17
- package/assets/.aw-spec/scripts/bash/check-prerequisites.sh +0 -189
- package/assets/.aw-spec/scripts/bash/create-new-feature.sh +0 -299
- package/assets/.aw-spec/scripts/bash/setup-plan.sh +0 -84
- package/assets/.aw-spec/scripts/bash/setup-tasks.sh +0 -91
- package/assets/.aw-spec/templates/checklist-template.md +0 -40
- package/assets/.aw-spec/templates/constitution-template.md +0 -57
- package/assets/.aw-spec/templates/plan-template.md +0 -113
- package/assets/.aw-spec/templates/tasks-template.md +0 -252
- package/assets/.aw-spec/workflows/aw-spec/workflow.yml +0 -77
- package/assets/.aw-spec/workflows/workflow-registry.json +0 -13
- package/assets/.claude/skills/aw-spec-addcomponent/SKILL.md +0 -129
- package/assets/.claude/skills/aw-spec-agent-context-update/SKILL.md +0 -31
- package/assets/.claude/skills/aw-spec-analyze/SKILL.md +0 -296
- package/assets/.claude/skills/aw-spec-checklist/SKILL.md +0 -374
- package/assets/.claude/skills/aw-spec-clarify/SKILL.md +0 -320
- package/assets/.claude/skills/aw-spec-constitution/SKILL.md +0 -194
- package/assets/.claude/skills/aw-spec-fast-implement/SKILL.md +0 -268
- package/assets/.claude/skills/aw-spec-foundation/SKILL.md +0 -358
- package/assets/.claude/skills/aw-spec-implement/SKILL.md +0 -279
- package/assets/.claude/skills/aw-spec-minimal-implementation/SKILL.md +0 -209
- package/assets/.claude/skills/aw-spec-plan/SKILL.md +0 -221
- package/assets/.claude/skills/aw-spec-select-domain/SKILL.md +0 -73
- package/assets/.claude/skills/aw-spec-specify/SKILL.md +0 -382
- package/assets/.claude/skills/aw-spec-tasks/SKILL.md +0 -259
- package/assets/.claude/skills/aw-spec-taskstoissues/SKILL.md +0 -107
- package/assets/.kilocode/rules/specify-rules.md +0 -4
- package/assets/.kilocode/workflows/aw-spec-addcomponent.md +0 -129
- package/assets/.kilocode/workflows/aw-spec-agent-context.update.md +0 -31
- package/assets/.kilocode/workflows/aw-spec-analyze.md +0 -296
- package/assets/.kilocode/workflows/aw-spec-checklist.md +0 -374
- package/assets/.kilocode/workflows/aw-spec-clarify.md +0 -320
- package/assets/.kilocode/workflows/aw-spec-constitution.md +0 -194
- package/assets/.kilocode/workflows/aw-spec-fast-implement.md +0 -263
- package/assets/.kilocode/workflows/aw-spec-foundation.md +0 -358
- package/assets/.kilocode/workflows/aw-spec-implement.md +0 -279
- package/assets/.kilocode/workflows/aw-spec-minimal-implementation.md +0 -204
- package/assets/.kilocode/workflows/aw-spec-plan.md +0 -221
- package/assets/.kilocode/workflows/aw-spec-select-domain.md +0 -73
- package/assets/.kilocode/workflows/aw-spec-specify.md +0 -382
- package/assets/.kilocode/workflows/aw-spec-tasks.md +0 -259
- package/assets/.kilocode/workflows/aw-spec-taskstoissues.md +0 -107
- package/assets/docs/command.txt +0 -295
- package/assets/docs/pharma-constitution.my-ref.md +0 -86
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# aw-spec-add-component (orchestrator) — add an opt-in AppWeaver framework component
|
|
3
|
+
#
|
|
4
|
+
# Picks a component from
|
|
5
|
+
# docs/components/*, parses its implementation catalog, asks which implementation(s)
|
|
6
|
+
# to wire, resolves the host/startup project (via Program.cs), authors the edits
|
|
7
|
+
# STRICTLY from the component's integration.md runbook, then VERIFIES the wiring
|
|
8
|
+
# (dotnet build + the R0.2a dual-registration guard, self-correcting up to 2×).
|
|
9
|
+
#
|
|
10
|
+
# This is the ONLY place framework components are installed. `implement` codes an
|
|
11
|
+
# aggregate against a component's PORT (e.g. IEmailService) but never wires the
|
|
12
|
+
# component itself — run this after implement (or whenever a port needs a provider).
|
|
13
|
+
# The per-component docs/components/<C>/integration.md runbook is the AUTHORITY on
|
|
14
|
+
# what to add; the model reads it (in context) and authors the edits from it. It is
|
|
15
|
+
# pure technology (domain-agnostic) — no domain rule files are involved.
|
|
16
|
+
#
|
|
17
|
+
# Prereq: a scaffolded host project (/aw-spec-orch foundation) — components wire INTO it.
|
|
18
|
+
#
|
|
19
|
+
# Launch: /aw-spec-orch add-component [strategy] [ComponentName]
|
|
20
|
+
# e.g. /aw-spec-orch add-component Email
|
|
21
|
+
# Action semantics: .aw-spec/ORCH-DIALECT.md
|
|
22
|
+
# =============================================================================
|
|
23
|
+
|
|
24
|
+
name: aw-spec-add-component
|
|
25
|
+
description: Add an opt-in AppWeaver framework component — pick one from docs/components/, choose implementation(s) from its catalog, wire the code in per its integration.md runbook, and verify the build + dual-registration. Pure technology; not a per-feature phase.
|
|
26
|
+
version: 1.0.0
|
|
27
|
+
agent_agnostic: true
|
|
28
|
+
dialect: aw-spec.orchestrator/v1
|
|
29
|
+
|
|
30
|
+
inputs:
|
|
31
|
+
user_input:
|
|
32
|
+
description: Optional component folder name to select directly (e.g. Email).
|
|
33
|
+
required: false
|
|
34
|
+
bind: USER_INPUT
|
|
35
|
+
|
|
36
|
+
scripts:
|
|
37
|
+
actions:
|
|
38
|
+
sh: .aw-spec/scripts/bash/aw-spec-actions.sh
|
|
39
|
+
ps1: .aw-spec/scripts/powershell/aw-spec-actions.ps1
|
|
40
|
+
|
|
41
|
+
vars:
|
|
42
|
+
verify_ok: "false" # verify-loop guard, flipped by component-verify
|
|
43
|
+
|
|
44
|
+
workflow:
|
|
45
|
+
|
|
46
|
+
# 1. Discover components (docs/components/* that have an integration.md).
|
|
47
|
+
- id: list_components
|
|
48
|
+
action: execute_script
|
|
49
|
+
script: { ref: actions }
|
|
50
|
+
subcommand: list-components
|
|
51
|
+
outputs:
|
|
52
|
+
- { name: components, from: "$.components" }
|
|
53
|
+
|
|
54
|
+
- id: guard_components
|
|
55
|
+
action: verify_context
|
|
56
|
+
require_non_empty: components
|
|
57
|
+
on_empty: stop
|
|
58
|
+
on_empty_message: "No components available. See docs/components/README.md for the expected layout."
|
|
59
|
+
|
|
60
|
+
# 2. Select the component (direct arg fast-path, else interactive; lone option confirms).
|
|
61
|
+
- id: select_component
|
|
62
|
+
action: user_select
|
|
63
|
+
prompt: "Select a component to add:"
|
|
64
|
+
options_from_variable: components
|
|
65
|
+
preselect_from: USER_INPUT
|
|
66
|
+
single_option_confirm: true
|
|
67
|
+
outputs:
|
|
68
|
+
- { name: chosen, from: selection }
|
|
69
|
+
|
|
70
|
+
- id: guard_chosen
|
|
71
|
+
action: verify_context
|
|
72
|
+
require_non_empty: chosen
|
|
73
|
+
on_empty: stop
|
|
74
|
+
on_empty_message: "No component selected — nothing to do."
|
|
75
|
+
|
|
76
|
+
# 3. Extract the implementation catalog from the runbook — DETERMINISTIC markdown
|
|
77
|
+
# table parse (script, NO model). integrable=false when no catalog table exists.
|
|
78
|
+
- id: extract_catalog
|
|
79
|
+
action: execute_script
|
|
80
|
+
script: { ref: actions }
|
|
81
|
+
subcommand: component-catalog
|
|
82
|
+
args: ["--file", "docs/components/{{chosen}}/integration.md"]
|
|
83
|
+
outputs:
|
|
84
|
+
- { name: integrable, from: "$.integrable" }
|
|
85
|
+
- { name: impl_keys, from: "$.impl_keys" }
|
|
86
|
+
- { name: implementations, from: "$.implementations" }
|
|
87
|
+
|
|
88
|
+
- id: catalog_gate
|
|
89
|
+
action: verify_context
|
|
90
|
+
require_true: integrable
|
|
91
|
+
on_false: stop
|
|
92
|
+
on_false_message: "Component '{{chosen}}' is not integrable via this command (no implementation catalog in integration.md)."
|
|
93
|
+
|
|
94
|
+
# 4. Select implementation(s) (multi-select). Empty selection => leave untouched.
|
|
95
|
+
- id: select_impls
|
|
96
|
+
action: ask
|
|
97
|
+
prompt: "Select one or more '{{chosen}}' implementations to wire in (honor the runbook's grouping rules):"
|
|
98
|
+
options_from: "{{impl_keys}}"
|
|
99
|
+
multi: true
|
|
100
|
+
answer_var: chosen_impls
|
|
101
|
+
|
|
102
|
+
- id: guard_selection
|
|
103
|
+
action: verify_context
|
|
104
|
+
require_non_empty: chosen_impls
|
|
105
|
+
on_empty: stop
|
|
106
|
+
on_empty_message: "No implementation selected — project left untouched. Re-run /aw-spec-orch add-component any time."
|
|
107
|
+
|
|
108
|
+
# 5. Resolve the host/startup project (by locating Program.cs).
|
|
109
|
+
- id: find_host
|
|
110
|
+
action: execute_script
|
|
111
|
+
script: { ref: actions }
|
|
112
|
+
subcommand: find-host-project
|
|
113
|
+
outputs:
|
|
114
|
+
- { name: host_found, from: "$.found" }
|
|
115
|
+
- { name: host_dir, from: "$.project_dir" }
|
|
116
|
+
- { name: program_cs, from: "$.program_cs" }
|
|
117
|
+
- { name: host_csproj, from: "$.csproj" }
|
|
118
|
+
|
|
119
|
+
- id: host_gate
|
|
120
|
+
action: verify_context
|
|
121
|
+
require_true: host_found
|
|
122
|
+
on_false: stop
|
|
123
|
+
on_false_message: "No host/startup project found (no Program.cs) — run /aw-spec-orch foundation first."
|
|
124
|
+
|
|
125
|
+
# 6. Pre-execution hooks.
|
|
126
|
+
- id: resolve_pre_hooks
|
|
127
|
+
action: execute_script
|
|
128
|
+
script: { ref: actions }
|
|
129
|
+
subcommand: resolve-hooks
|
|
130
|
+
args: ["--phase", "before_addcomponent"]
|
|
131
|
+
outputs:
|
|
132
|
+
- { name: before_hooks, from: "$.hooks" }
|
|
133
|
+
- id: dispatch_pre_hooks
|
|
134
|
+
action: dispatch_hooks
|
|
135
|
+
hooks_from_variable: before_hooks
|
|
136
|
+
|
|
137
|
+
# 7. Plan the concrete file edits from the runbook + selected implementations.
|
|
138
|
+
- id: plan_edits
|
|
139
|
+
action: agent_query
|
|
140
|
+
context: ["docs/components/{{chosen}}/integration.md"]
|
|
141
|
+
include_standards: false
|
|
142
|
+
task: |
|
|
143
|
+
Using the runbook (in context) apply the "Common steps" plus each selected
|
|
144
|
+
implementation's block for: {{chosen_impls}}. The host/startup project is
|
|
145
|
+
{{host_dir}} (Program.cs at {{program_cs}}; csproj {{host_csproj}}). Honor the
|
|
146
|
+
cross-cutting rules (versions only in Directory.Packages.props; register in the
|
|
147
|
+
host project's AddInfrastructure AND AddAspireInfrastructure when both exist; set
|
|
148
|
+
options.Provider; never commit secrets). Return ONLY JSON listing each file to
|
|
149
|
+
create or edit, the active provider, and the exact registration marker token a
|
|
150
|
+
deterministic guard can look for in each infrastructure-registration method.
|
|
151
|
+
schema: { edits: [ { path: "<repo-relative path>", purpose: "<one line>" } ], active_provider: "<provider key>", registration_marker: "<exact code token that MUST appear in each infra-registration method>" }
|
|
152
|
+
mock: { edits: [], active_provider: "", registration_marker: "" }
|
|
153
|
+
outputs:
|
|
154
|
+
- { name: edits, from: "$.edits" }
|
|
155
|
+
- { name: active_provider, from: "$.active_provider" }
|
|
156
|
+
- { name: registration_marker, from: "$.registration_marker" }
|
|
157
|
+
|
|
158
|
+
# 8. Apply each edit — full updated file content, guided by the runbook in context.
|
|
159
|
+
# build_context loads the runbook envelope; the agent Reads each target file.
|
|
160
|
+
- id: ctx_apply
|
|
161
|
+
action: build_context
|
|
162
|
+
context:
|
|
163
|
+
- { path: "docs/components/{{chosen}}/integration.md" }
|
|
164
|
+
- { path: "docs/components/{{chosen}}/README.md", optional: true }
|
|
165
|
+
- id: apply_loop
|
|
166
|
+
action: loop
|
|
167
|
+
over: "{{edits}}"
|
|
168
|
+
as: e
|
|
169
|
+
steps:
|
|
170
|
+
- id: apply_edit
|
|
171
|
+
action: agent_generate
|
|
172
|
+
tools: "Read,Write,Edit"
|
|
173
|
+
permission_mode: acceptEdits
|
|
174
|
+
task: |
|
|
175
|
+
Apply the '{{chosen}}' component runbook edit (integration.md in context) to the
|
|
176
|
+
single file {{e.path}} — {{e.purpose}}. Selected implementations: {{chosen_impls}};
|
|
177
|
+
active provider: {{active_provider}}; host project: {{host_dir}}.
|
|
178
|
+
Read {{e.path}} first if it exists and PRESERVE all existing content, applying
|
|
179
|
+
ONLY the runbook's additions (package version, PackageReference, registration
|
|
180
|
+
line, config); create it if absent. Change NO other file.
|
|
181
|
+
outputs:
|
|
182
|
+
- { name: applied_files, from: "$.files" }
|
|
183
|
+
|
|
184
|
+
# 9. Post-wiring verification — `dotnet build` the host project + the R0.2a
|
|
185
|
+
# dual-registration guard (a script, NO model judgment), self-correcting up to 2×.
|
|
186
|
+
# Build degrades gracefully (skipped => ok) when the .NET SDK is absent.
|
|
187
|
+
- id: ctx_verify
|
|
188
|
+
action: build_context
|
|
189
|
+
context:
|
|
190
|
+
- { path: "docs/components/{{chosen}}/integration.md" }
|
|
191
|
+
- id: verify_loop
|
|
192
|
+
action: loop
|
|
193
|
+
while: "{{verify_ok}} != true"
|
|
194
|
+
max_iterations: 2
|
|
195
|
+
steps:
|
|
196
|
+
- id: verify
|
|
197
|
+
action: execute_script
|
|
198
|
+
script: { ref: actions }
|
|
199
|
+
subcommand: component-verify
|
|
200
|
+
args: ["--host-dir", "{{host_dir}}", "--host-csproj", "{{host_csproj}}", "--marker", "{{registration_marker}}"]
|
|
201
|
+
outputs:
|
|
202
|
+
- { name: verify_ok, from: "$.ok" }
|
|
203
|
+
- { name: verify_can_fix, from: "$.can_fix" }
|
|
204
|
+
- { name: fix_target, from: "$.fix_target" }
|
|
205
|
+
- { name: fix_reason, from: "$.fix_reason" }
|
|
206
|
+
- id: verify_break
|
|
207
|
+
action: break
|
|
208
|
+
condition: "{{verify_ok}} == true"
|
|
209
|
+
- id: verify_fix
|
|
210
|
+
action: agent_generate
|
|
211
|
+
condition: "{{verify_can_fix}} == true"
|
|
212
|
+
tools: "Read,Write,Edit"
|
|
213
|
+
permission_mode: acceptEdits
|
|
214
|
+
task: |
|
|
215
|
+
The '{{chosen}}' component wiring failed verification. Fix ONLY the file
|
|
216
|
+
{{fix_target}} to resolve it, following the integration.md runbook (in context)
|
|
217
|
+
and preserving all unrelated existing content. If the issue is R0.2a dual
|
|
218
|
+
registration, add the component's registration to that method exactly as the
|
|
219
|
+
other registration method already has it (adjusting only provider-specific calls).
|
|
220
|
+
Reason: {{fix_reason}}
|
|
221
|
+
Read {{fix_target}} first; change NO other file.
|
|
222
|
+
|
|
223
|
+
# 10. Post-execution hooks.
|
|
224
|
+
- id: resolve_post_hooks
|
|
225
|
+
action: execute_script
|
|
226
|
+
script: { ref: actions }
|
|
227
|
+
subcommand: resolve-hooks
|
|
228
|
+
args: ["--phase", "after_addcomponent"]
|
|
229
|
+
outputs:
|
|
230
|
+
- { name: after_hooks, from: "$.hooks" }
|
|
231
|
+
- id: dispatch_post_hooks
|
|
232
|
+
action: dispatch_hooks
|
|
233
|
+
hooks_from_variable: after_hooks
|
|
234
|
+
|
|
235
|
+
outputs:
|
|
236
|
+
component: "{{chosen}}"
|
|
237
|
+
implementations: "{{chosen_impls}}"
|
|
238
|
+
active_provider: "{{active_provider}}"
|
|
239
|
+
edits: "{{edits}}"
|
|
240
|
+
host_project: "{{host_dir}}"
|
|
241
|
+
build_verified: "{{verify_ok}}"
|
|
242
|
+
verify_detail: "{{fix_reason}}"
|
|
243
|
+
note: "Component wired in and verified (dotnet build + R0.2a dual-registration guard). If build_verified is false, verify_detail says what still needs a manual touch. Complete any out-of-band follow-ups (secrets, migrations, DDL) the runbook calls for."
|
|
244
|
+
next: "Run /aw-spec-orch build to compile, or continue implementing features that depend on this component's port."
|