aw-spec-cli 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/.agents/agent.json +1 -1
- package/assets/.agents/skills/{aw-spec-orch → appweaver}/SKILL.md +10 -10
- package/assets/.agents/skills/{aw-spec-orch-demo → appweaver-demo}/SKILL.md +9 -9
- package/assets/.claude/agent.json +1 -1
- package/assets/.claude/skills/{aw-spec-orch → appweaver}/SKILL.md +10 -10
- package/assets/.claude/skills/{aw-spec-orch-demo → appweaver-demo}/SKILL.md +9 -9
- package/assets/.kilocode/agent.json +1 -1
- package/assets/.kilocode/workflows/{aw-spec-orch-demo.md → appweaver-demo.md} +9 -9
- package/assets/.kilocode/workflows/{aw-spec-orch.md → appweaver.md} +10 -10
- package/assets/docs/pharma-constitution.my-ref.md +86 -0
- package/dist/utils/paths.js +2 -2
- package/dist/utils/paths.js.map +1 -1
- package/package.json +1 -1
- package/assets/.aw-spec/DESIGN-FORMAT.md +0 -151
- package/assets/.aw-spec/ORCH-DIALECT.md +0 -156
- package/assets/.aw-spec/RULE-PARTITION.md +0 -126
- package/assets/.aw-spec/domain.json +0 -3
- package/assets/.aw-spec/extensions/.registry +0 -19
- package/assets/.aw-spec/extensions/agent-context/README.md +0 -57
- package/assets/.aw-spec/extensions/agent-context/agent-context-config.yml +0 -4
- package/assets/.aw-spec/extensions/agent-context/commands/aw-spec.agent-context.update.md +0 -26
- package/assets/.aw-spec/extensions/agent-context/extension.yml +0 -37
- package/assets/.aw-spec/extensions/agent-context/scripts/bash/update-agent-context.sh +0 -201
- package/assets/.aw-spec/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -237
- package/assets/.aw-spec/extensions.yml +0 -16
- package/assets/.aw-spec/feature.json +0 -3
- package/assets/.aw-spec/init-options.json +0 -9
- package/assets/.aw-spec/integration.json +0 -15
- package/assets/.aw-spec/integrations/aw-spec.manifest.json +0 -9
- package/assets/.aw-spec/interpreter/run-skill.py +0 -1158
- package/assets/.aw-spec/memory/constitution.md +0 -50
- package/assets/.aw-spec/orchestrator/AGENT-PROFILE.md +0 -94
- package/assets/.aw-spec/orchestrator/README.md +0 -300
- package/assets/.aw-spec/orchestrator/adapters/claude_agent_sdk.py +0 -74
- package/assets/.aw-spec/orchestrator/adapters/google_antigravity.py +0 -74
- package/assets/.aw-spec/orchestrator/modules/delta-design.orch.yaml +0 -105
- package/assets/.aw-spec/orchestrator/modules/delta-spec.orch.yaml +0 -79
- package/assets/.aw-spec/orchestrator/modules/domain-select.orch.yaml +0 -81
- package/assets/.aw-spec/orchestrator/modules/tech-select.orch.yaml +0 -75
- package/assets/.aw-spec/orchestrator/orchestrator.py +0 -1721
- package/assets/.aw-spec/orchestrator/rev-templates/ai-rules.reference.md +0 -40
- package/assets/.aw-spec/orchestrator/rev-templates/comandrulemap.skeleton.md +0 -59
- package/assets/.aw-spec/orchestrator/rev-templates/commandtechrulemap.skeleton.md +0 -97
- package/assets/.aw-spec/orchestrator/rev-templates/domain-constitution.skeleton.md +0 -61
- package/assets/.aw-spec/orchestrator/rev-templates/domain-requirements.skeleton.md +0 -48
- package/assets/.aw-spec/orchestrator/rev-templates/domain-rule-file.skeleton.md +0 -39
- package/assets/.aw-spec/orchestrator/rev-templates/technical-constitution.skeleton.md +0 -106
- package/assets/.aw-spec/orchestrator/rev-templates/technical-rule-file.skeleton.md +0 -54
- package/assets/.aw-spec/orchestrator/workflows/_smoke.orch.yaml +0 -160
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-add-component.orch.yaml +0 -244
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-adopt.orch.yaml +0 -775
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-analyze-delta-design.orch.yaml +0 -248
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-analyze-design.orch.yaml +0 -261
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +0 -425
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-build.orch.yaml +0 -188
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-characterize.orch.yaml +0 -474
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-close-delta.orch.yaml +0 -181
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-constitution.orch.yaml +0 -284
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-demo.orch.yaml +0 -103
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-dependency-tree.orch.yaml +0 -69
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-deploy.orch.yaml +0 -85
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-design.orch.yaml +0 -382
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-finalize-delta.orch.yaml +0 -382
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-foundation.orch.yaml +0 -246
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-implement-delta.orch.yaml +0 -231
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-implement.orch.yaml +0 -258
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-inventory.orch.yaml +0 -236
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-onboard.orch.yaml +0 -949
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-parity.orch.yaml +0 -293
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-run.orch.yaml +0 -177
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-select-domain.orch.yaml +0 -79
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-select-feature.orch.yaml +0 -128
- package/assets/.aw-spec/orchestrator/workflows/aw-spec-specify.orch.yaml +0 -412
- package/assets/.aw-spec/scripts/bash/aw-inventory.sh +0 -14
- package/assets/.aw-spec/scripts/bash/aw-parity.sh +0 -13
- package/assets/.aw-spec/scripts/bash/aw-rev-constitution.sh +0 -13
- package/assets/.aw-spec/scripts/bash/aw-spec-actions.sh +0 -1899
- package/assets/.aw-spec/scripts/bash/aw-xref.sh +0 -15
- package/assets/.aw-spec/scripts/bash/common.sh +0 -533
- package/assets/.aw-spec/scripts/powershell/aw-inventory.ps1 +0 -14
- package/assets/.aw-spec/scripts/powershell/aw-parity.ps1 +0 -13
- package/assets/.aw-spec/scripts/powershell/aw-rev-constitution.ps1 +0 -13
- package/assets/.aw-spec/scripts/powershell/aw-spec-actions.ps1 +0 -1563
- package/assets/.aw-spec/scripts/powershell/aw-xref.ps1 +0 -15
- package/assets/.aw-spec/scripts/python/aw-inventory.py +0 -683
- package/assets/.aw-spec/scripts/python/aw-parity.py +0 -380
- package/assets/.aw-spec/scripts/python/aw-rev-constitution.py +0 -312
- package/assets/.aw-spec/scripts/python/aw-xref.py +0 -1330
- package/assets/.aw-spec/scripts/python/validate_okf.py +0 -349
- package/assets/.aw-spec/templates/constitution-domain-template.md +0 -75
- package/assets/.aw-spec/templates/constitution-technical-template.md +0 -70
- package/assets/.aw-spec/templates/delta-design-template.md +0 -69
- package/assets/.aw-spec/templates/delta-spec-template.md +0 -60
- package/assets/.aw-spec/templates/design-template.md +0 -383
- package/assets/.aw-spec/templates/okf-concept-template.md +0 -103
- package/assets/.aw-spec/templates/parity-manifest-template.json +0 -49
- package/assets/.aw-spec/templates/source-map-template.md +0 -85
- package/assets/.aw-spec/templates/spec-template.md +0 -252
- package/assets/docs/ModularMonolith/ModularMonolith.Reference.pack.txt +0 -25248
- package/assets/docs/ModularMonolith/ModularMonolith.pack.txt +0 -5726
- package/assets/docs/ModularMonolith/pack-foundation.ps1 +0 -145
- package/assets/docs/ModularMonolith/pack-foundation.sh +0 -196
- package/assets/docs/ModularMonolith/pack-reference-foundation.ps1 +0 -157
- package/assets/docs/ModularMonolith/pack-reference-foundation.sh +0 -209
- package/assets/docs/ModularMonolith/unpack-foundation.ps1 +0 -126
- package/assets/docs/ModularMonolith/unpack-foundation.sh +0 -217
- package/assets/docs/ModularMonolith/unpack-reference-foundation.ps1 +0 -129
- package/assets/docs/ModularMonolith/unpack-reference-foundation.sh +0 -218
- package/assets/docs/README.md +0 -106
- package/assets/docs/VerticalSlice/PACKAGING.md +0 -185
- package/assets/docs/VerticalSlice/VerticalSlice.Reference.pack.txt +0 -19318
- package/assets/docs/VerticalSlice/VerticalSlice.pack.txt +0 -2833
- package/assets/docs/VerticalSlice/pack-foundation.ps1 +0 -145
- package/assets/docs/VerticalSlice/pack-foundation.sh +0 -196
- package/assets/docs/VerticalSlice/pack-reference-foundation.ps1 +0 -157
- package/assets/docs/VerticalSlice/pack-reference-foundation.sh +0 -209
- package/assets/docs/VerticalSlice/unpack-foundation.ps1 +0 -126
- package/assets/docs/VerticalSlice/unpack-foundation.sh +0 -217
- package/assets/docs/VerticalSlice/unpack-reference-foundation.ps1 +0 -129
- package/assets/docs/VerticalSlice/unpack-reference-foundation.sh +0 -218
- package/assets/docs/architecture/clean-architecture.md +0 -71
- package/assets/docs/architecture/cqrs.md +0 -141
- package/assets/docs/architecture/eventing.md +0 -83
- package/assets/docs/architecture/folder-structure.md +0 -61
- package/assets/docs/architecture/modular-monolith.md +0 -47
- package/assets/docs/architecture/persistence.md +0 -269
- package/assets/docs/architecture/testing.md +0 -55
- package/assets/docs/architecture/vertical-slices.md +0 -201
- package/assets/docs/components/Email/README.md +0 -119
- package/assets/docs/components/Email/ReferenceEndpoints/SendEmailEndpoint.cs +0 -84
- package/assets/docs/components/Email/integration.md +0 -300
- package/assets/docs/components/Jobs/README.md +0 -113
- package/assets/docs/components/Jobs/integration.md +0 -259
- package/assets/docs/components/QrGenerator/README.md +0 -85
- package/assets/docs/components/QrGenerator/ReferenceEndpoints/GenerateQrEndpoint.cs +0 -57
- package/assets/docs/components/QrGenerator/integration.md +0 -230
- package/assets/docs/components/README.md +0 -74
- package/assets/docs/domain/domain-driven-design.md +0 -212
- package/assets/docs/domainspecs/healthcare/ai-rules.domain.md +0 -34
- package/assets/docs/domainspecs/healthcare/api-versioning.domain.md +0 -17
- package/assets/docs/domainspecs/healthcare/auditing.domain.md +0 -97
- package/assets/docs/domainspecs/healthcare/authorization.domain.md +0 -26
- package/assets/docs/domainspecs/healthcare/clinical-terms.md +0 -20
- package/assets/docs/domainspecs/healthcare/coding-standards.domain.md +0 -26
- package/assets/docs/domainspecs/healthcare/comandrulemap.md +0 -100
- package/assets/docs/domainspecs/healthcare/commandtechrulemap.md +0 -119
- package/assets/docs/domainspecs/healthcare/consent.md +0 -19
- package/assets/docs/domainspecs/healthcare/cqrs.domain.md +0 -12
- package/assets/docs/domainspecs/healthcare/data-classification.domain.md +0 -28
- package/assets/docs/domainspecs/healthcare/dependency-policy.domain.md +0 -11
- package/assets/docs/domainspecs/healthcare/dicom.md +0 -15
- package/assets/docs/domainspecs/healthcare/domain-driven-design.domain.md +0 -28
- package/assets/docs/domainspecs/healthcare/domain-requirements.md +0 -55
- package/assets/docs/domainspecs/healthcare/eventing.domain.md +0 -18
- package/assets/docs/domainspecs/healthcare/fhir.md +0 -36
- package/assets/docs/domainspecs/healthcare/folder-structure.domain.md +0 -23
- package/assets/docs/domainspecs/healthcare/hipaa.md +0 -34
- package/assets/docs/domainspecs/healthcare/hl7.md +0 -15
- package/assets/docs/domainspecs/healthcare/integration-terms.md +0 -21
- package/assets/docs/domainspecs/healthcare/persistence.domain.md +0 -20
- package/assets/docs/domainspecs/healthcare/terminology.md +0 -30
- package/assets/docs/domainspecs/healthcare/testing.domain.md +0 -15
- package/assets/docs/domainspecs/healthcare/vertical-slices.domain.md +0 -18
- package/assets/docs/domainspecs/healthcare/zero-trust.domain.md +0 -12
- package/assets/docs/domainspecs/pharma/ai-rules.domain.md +0 -32
- package/assets/docs/domainspecs/pharma/api-versioning.domain.md +0 -20
- package/assets/docs/domainspecs/pharma/atc.md +0 -22
- package/assets/docs/domainspecs/pharma/auditing.domain.md +0 -90
- package/assets/docs/domainspecs/pharma/authorization.domain.md +0 -25
- package/assets/docs/domainspecs/pharma/coding-standards.domain.md +0 -28
- package/assets/docs/domainspecs/pharma/comandrulemap.md +0 -108
- package/assets/docs/domainspecs/pharma/commandtechrulemap.md +0 -119
- package/assets/docs/domainspecs/pharma/cqrs.domain.md +0 -16
- package/assets/docs/domainspecs/pharma/data-classification.domain.md +0 -24
- package/assets/docs/domainspecs/pharma/data-provenance.md +0 -21
- package/assets/docs/domainspecs/pharma/dependency-policy.domain.md +0 -11
- package/assets/docs/domainspecs/pharma/domain-driven-design.domain.md +0 -36
- package/assets/docs/domainspecs/pharma/domain-requirements.md +0 -99
- package/assets/docs/domainspecs/pharma/eventing.domain.md +0 -18
- package/assets/docs/domainspecs/pharma/fhir.md +0 -31
- package/assets/docs/domainspecs/pharma/folder-structure.domain.md +0 -24
- package/assets/docs/domainspecs/pharma/hl7.md +0 -17
- package/assets/docs/domainspecs/pharma/idmp.md +0 -26
- package/assets/docs/domainspecs/pharma/integration-terms.md +0 -21
- package/assets/docs/domainspecs/pharma/ndc.md +0 -28
- package/assets/docs/domainspecs/pharma/persistence.domain.md +0 -23
- package/assets/docs/domainspecs/pharma/pharma-terms.md +0 -27
- package/assets/docs/domainspecs/pharma/product-lifecycle.domain.md +0 -30
- package/assets/docs/domainspecs/pharma/regulatory-compliance.md +0 -19
- package/assets/docs/domainspecs/pharma/terminology.md +0 -32
- package/assets/docs/domainspecs/pharma/testing.domain.md +0 -19
- package/assets/docs/domainspecs/pharma/vertical-slices.domain.md +0 -17
- package/assets/docs/domainspecs/pharma/zero-trust.domain.md +0 -12
- package/assets/docs/glossary/ai-rules.md +0 -59
- package/assets/docs/governance/api-versioning.md +0 -99
- package/assets/docs/governance/coding-standards.md +0 -87
- package/assets/docs/governance/dependency-policy.md +0 -40
- package/assets/docs/interop/ihe-conformance.md +0 -31
- package/assets/docs/requirement-spec.txt +0 -27
- package/assets/docs/security/auditing.md +0 -160
- package/assets/docs/security/authorization-matrix.md +0 -14
- package/assets/docs/security/authorization.md +0 -87
- package/assets/docs/security/data-classification.md +0 -38
- package/assets/docs/security/zero-trust.md +0 -76
- package/assets/docs/technology-constitution.md +0 -172
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"type": "google-antigravity",
|
|
5
5
|
"package": "google-antigravity",
|
|
6
6
|
"module": "google.antigravity",
|
|
7
|
-
"adapter": "../.
|
|
7
|
+
"adapter": "../.appweaver/orchestrator/adapters/google_antigravity.py"
|
|
8
8
|
},
|
|
9
9
|
"runtime": "Antigravity CLI (agy -p) — Antigravity is Gemini-based",
|
|
10
10
|
"note": "Antigravity (agy) has no --system-prompt flag, so 'system' is folded into the prompt (system: prepend).",
|
|
@@ -1,42 +1,42 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: "
|
|
2
|
+
name: "appweaver"
|
|
3
3
|
description: "Parametric launcher (Antigravity): run ANY converted aw-spec skill on the aw-orchestrator under one of the 4 strategies (agent [default], spawn, sdk, sdk-apply)."
|
|
4
4
|
argument-hint: "<skill> [strategy] [input…] — e.g. 'select-domain', 'specify spawn Build an order API', 'analyze-slice'"
|
|
5
|
-
compatibility: "Requires .
|
|
5
|
+
compatibility: "Requires .appweaver/orchestrator/ and the agy CLI on PATH"
|
|
6
6
|
user-invocable: true
|
|
7
7
|
disable-model-invocation: false
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Orchestrator Skill Launcher
|
|
11
11
|
|
|
12
|
-
Runs one converted `aw-spec-*` workflow on the shared, agent-agnostic engine. All orchestration and **all context management live in the workflow YAML + engine** (`.
|
|
12
|
+
Runs one converted `aw-spec-*` workflow on the shared, agent-agnostic engine. All orchestration and **all context management live in the workflow YAML + engine** (`.appweaver/orchestrator/orchestrator.py`): the interpreter assembles the COMPLETE payload (system + user) for every request; you never author generation context yourself. Execution follows the chosen strategy; the checkpoint channel carries every human-facing interaction regardless of strategy.
|
|
13
13
|
|
|
14
|
-
- **Engine + workflows (common, shared by all agents):** `.
|
|
14
|
+
- **Engine + workflows (common, shared by all agents):** `.appweaver/orchestrator/orchestrator.py`, `.appweaver/orchestrator/workflows/aw-spec-<skill>.orch.yaml`, shared modules in `.appweaver/orchestrator/modules/`, shared scripts in `.appweaver/scripts/`
|
|
15
15
|
- **This agent's transport profile:** `.agents/agent.json`
|
|
16
16
|
|
|
17
17
|
> Antigravity spawns via the `agy` CLI (Gemini-based; no `--system-prompt`,
|
|
18
18
|
> so `system` is folded into the prompt — isolation is best-effort). Its
|
|
19
19
|
> `sdk` block declares the SDK the `sdk`/`sdk-apply` strategies import
|
|
20
20
|
> (`google-antigravity`) and the adapter
|
|
21
|
-
> (`.
|
|
21
|
+
> (`.appweaver/orchestrator/adapters/google_antigravity.py`, shared per-SDK)
|
|
22
22
|
> that owns its calling convention.
|
|
23
23
|
|
|
24
24
|
## Execution Steps
|
|
25
25
|
|
|
26
26
|
1. **Parse Arguments** (`<skill> [strategy] [input…]`):
|
|
27
|
-
- `skill` (required): the aw-spec skill name, e.g. `demo`, `select-domain`, `foundation`, `specify`, `design`, `implement`, `build`. Resolve the workflow file `.
|
|
27
|
+
- `skill` (required): the aw-spec skill name, e.g. `demo`, `select-domain`, `foundation`, `specify`, `design`, `implement`, `build`. Resolve the workflow file `.appweaver/orchestrator/workflows/aw-spec-<skill>.orch.yaml`. If it does not exist, list the available `aw-spec-*.orch.yaml` files in that folder and stop.
|
|
28
28
|
- `strategy` (optional, one of `agent`, `spawn`, `sdk`, `sdk-apply`; default `agent` — YOU fulfill each generation through the checkpoint channel, no profile needed): who executes each generation. Always pass `--strategy <strategy>`.
|
|
29
29
|
- Everything after the strategy is the user input: pass it as `--input "<text>"` (omit when empty).
|
|
30
30
|
- `--agent-profile .agents/agent.json` is required for `spawn`, `sdk`, and `sdk-apply` (`agent` needs no profile). If the SDK package isn't installed, add `--sdk-install`.
|
|
31
|
-
- **Always** pass `--checkpoint .
|
|
31
|
+
- **Always** pass `--checkpoint .appweaver/orchestrator/.state/<skill>.state.json` — for EVERY strategy. Converted skills contain interactive steps (questions, selections, hooks); the checkpoint is how they reach you and the user. Strategies only govern who generates.
|
|
32
32
|
- `spawn` may also add `--isolation bare|fresh` and `--model <name>`; `sdk`/`sdk-apply` accept `--model <name>`.
|
|
33
33
|
|
|
34
34
|
2. **Run the Interpreter**:
|
|
35
35
|
```bash
|
|
36
|
-
python3 .
|
|
37
|
-
.
|
|
36
|
+
python3 .appweaver/orchestrator/orchestrator.py \
|
|
37
|
+
.appweaver/orchestrator/workflows/aw-spec-<skill>.orch.yaml \
|
|
38
38
|
--strategy <strategy> \
|
|
39
|
-
--checkpoint .
|
|
39
|
+
--checkpoint .appweaver/orchestrator/.state/<skill>.state.json \
|
|
40
40
|
[--agent-profile .agents/agent.json] # spawn, sdk, sdk-apply \
|
|
41
41
|
[--input "<user input>"] \
|
|
42
42
|
--json
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: "
|
|
2
|
+
name: "appweaver-demo"
|
|
3
3
|
description: "Prototype launcher (Antigravity): run the aw-orchestrator using the specified strategy (spawn, agent, sdk, sdk-apply)."
|
|
4
4
|
argument-hint: "Optional strategy ('agent', 'spawn', 'sdk', 'sdk-apply') and/or k=value vars (e.g. 'agent out_dir=...')"
|
|
5
|
-
compatibility: "Requires .
|
|
5
|
+
compatibility: "Requires .appweaver/orchestrator/ and the gemini CLI on PATH"
|
|
6
6
|
user-invocable: true
|
|
7
7
|
disable-model-invocation: false
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Orchestrator Launcher
|
|
11
11
|
|
|
12
|
-
All orchestration lives in the workflow YAML and is executed by `.
|
|
12
|
+
All orchestration lives in the workflow YAML and is executed by `.appweaver/orchestrator/orchestrator.py` (the general, agent-agnostic engine). The interpreter assembles the COMPLETE payload (system + user) for every request; you never author generation context yourself.
|
|
13
13
|
|
|
14
|
-
- **Engine + workflow (general):** `.
|
|
14
|
+
- **Engine + workflow (general):** `.appweaver/orchestrator/orchestrator.py`, `*.orch.yaml`
|
|
15
15
|
- **This agent's transport profile:** `.agents/agent.json`
|
|
16
16
|
|
|
17
17
|
> Antigravity spawns via the `agy` CLI (Gemini-based; no `--system-prompt`, so
|
|
18
18
|
> `system` is folded into the prompt). Its `sdk` block declares the SDK the
|
|
19
19
|
> `sdk`/`sdk-apply` strategies import (`google-antigravity`) and the adapter
|
|
20
|
-
> (`.
|
|
20
|
+
> (`.appweaver/orchestrator/adapters/google_antigravity.py`, shared per-SDK)
|
|
21
21
|
> that owns its calling convention.
|
|
22
22
|
|
|
23
23
|
## Execution Steps
|
|
@@ -30,7 +30,7 @@ All orchestration lives in the workflow YAML and is executed by `.aw-spec/orches
|
|
|
30
30
|
package/module (and its `adapter` file) to import from its `sdk` block.
|
|
31
31
|
If the SDK package isn't installed, add `--sdk-install` so the engine
|
|
32
32
|
pip-installs the declared package first. (`agent` needs no profile.)
|
|
33
|
-
- `--checkpoint .
|
|
33
|
+
- `--checkpoint .appweaver/orchestrator/.demo-out/demo.state.json` is required for
|
|
34
34
|
`sdk-apply` and `agent` (suspend/resume — follow the loop in step 3).
|
|
35
35
|
- `spawn` accepts `--model <name>` (e.g. `gemini-2.5-pro`); isolation is
|
|
36
36
|
best-effort for Antigravity (no `--bare` equivalent). `sdk`/`sdk-apply`
|
|
@@ -39,11 +39,11 @@ All orchestration lives in the workflow YAML and is executed by `.aw-spec/orches
|
|
|
39
39
|
2. **Run the Interpreter**:
|
|
40
40
|
Run the command (include only the bracketed flags that apply to the chosen strategy):
|
|
41
41
|
```bash
|
|
42
|
-
python3 .
|
|
43
|
-
.
|
|
42
|
+
python3 .appweaver/orchestrator/orchestrator.py \
|
|
43
|
+
.appweaver/orchestrator/workflows/aw-spec-demo.orch.yaml \
|
|
44
44
|
--strategy <strategy> \
|
|
45
45
|
[--agent-profile .agents/agent.json] # spawn, sdk, sdk-apply \
|
|
46
|
-
[--checkpoint .
|
|
46
|
+
[--checkpoint .appweaver/orchestrator/.demo-out/demo.state.json] # sdk-apply, agent \
|
|
47
47
|
--json
|
|
48
48
|
```
|
|
49
49
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"type": "claude-agent-sdk",
|
|
5
5
|
"package": "claude-agent-sdk",
|
|
6
6
|
"module": "claude_agent_sdk",
|
|
7
|
-
"adapter": "../.
|
|
7
|
+
"adapter": "../.appweaver/orchestrator/adapters/claude_agent_sdk.py"
|
|
8
8
|
},
|
|
9
9
|
"runtime": "Claude Code CLI (claude -p)",
|
|
10
10
|
"bin": "claude",
|
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: "
|
|
2
|
+
name: "appweaver"
|
|
3
3
|
description: "Parametric launcher (Claude Code): run ANY converted aw-spec skill on the aw-orchestrator under one of the 4 strategies (agent [default], spawn, sdk, sdk-apply)."
|
|
4
4
|
argument-hint: "<skill> [strategy] [input…] — e.g. 'select-domain', 'specify spawn Build an order API', 'analyze-slice'"
|
|
5
|
-
compatibility: "Requires .
|
|
5
|
+
compatibility: "Requires .appweaver/orchestrator/ and the claude CLI on PATH"
|
|
6
6
|
user-invocable: true
|
|
7
7
|
disable-model-invocation: false
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Orchestrator Skill Launcher
|
|
11
11
|
|
|
12
|
-
Runs one converted `aw-spec-*` workflow on the shared, agent-agnostic engine. All orchestration and **all context management live in the workflow YAML + engine** (`.
|
|
12
|
+
Runs one converted `aw-spec-*` workflow on the shared, agent-agnostic engine. All orchestration and **all context management live in the workflow YAML + engine** (`.appweaver/orchestrator/orchestrator.py`): the interpreter assembles the COMPLETE payload (system + user) for every request; you never author generation context yourself. Execution follows the chosen strategy; the checkpoint channel carries every human-facing interaction regardless of strategy.
|
|
13
13
|
|
|
14
|
-
- **Engine + workflows (common, shared by all agents):** `.
|
|
14
|
+
- **Engine + workflows (common, shared by all agents):** `.appweaver/orchestrator/orchestrator.py`, `.appweaver/orchestrator/workflows/aw-spec-<skill>.orch.yaml`, shared modules in `.appweaver/orchestrator/modules/`, shared scripts in `.appweaver/scripts/`
|
|
15
15
|
- **This agent's transport profile:** `.claude/agent.json`
|
|
16
16
|
|
|
17
17
|
> Claude Code spawns via the `claude -p` CLI (native `--system-prompt`,
|
|
18
18
|
> `--tools`, and `--bare` isolation). Its `sdk` block declares the SDK the
|
|
19
19
|
> `sdk`/`sdk-apply` strategies import (`claude-agent-sdk`) and the adapter
|
|
20
|
-
> (`.
|
|
20
|
+
> (`.appweaver/orchestrator/adapters/claude_agent_sdk.py`, shared per-SDK)
|
|
21
21
|
> that owns its calling convention.
|
|
22
22
|
|
|
23
23
|
## Execution Steps
|
|
24
24
|
|
|
25
25
|
1. **Parse Arguments** (`<skill> [strategy] [input…]`):
|
|
26
|
-
- `skill` (required): the aw-spec skill name, e.g. `demo`, `select-domain`, `foundation`, `specify`, `design`, `implement`, `build`. Resolve the workflow file `.
|
|
26
|
+
- `skill` (required): the aw-spec skill name, e.g. `demo`, `select-domain`, `foundation`, `specify`, `design`, `implement`, `build`. Resolve the workflow file `.appweaver/orchestrator/workflows/aw-spec-<skill>.orch.yaml`. If it does not exist, list the available `aw-spec-*.orch.yaml` files in that folder and stop.
|
|
27
27
|
- `strategy` (optional, one of `agent`, `spawn`, `sdk`, `sdk-apply`; default `agent` — YOU fulfill each generation through the checkpoint channel, no profile needed): who executes each generation. Always pass `--strategy <strategy>`.
|
|
28
28
|
- Everything after the strategy is the user input: pass it as `--input "<text>"` (omit when empty).
|
|
29
29
|
- `--agent-profile .claude/agent.json` is required for `spawn`, `sdk`, and `sdk-apply` (`agent` needs no profile). If the SDK package isn't installed, add `--sdk-install`.
|
|
30
|
-
- **Always** pass `--checkpoint .
|
|
30
|
+
- **Always** pass `--checkpoint .appweaver/orchestrator/.state/<skill>.state.json` — for EVERY strategy. Converted skills contain interactive steps (questions, selections, hooks); the checkpoint is how they reach you and the user. Strategies only govern who generates.
|
|
31
31
|
- `spawn` may also add `--isolation bare|fresh` and `--model <name>`; `sdk`/`sdk-apply` accept `--model <name>`.
|
|
32
32
|
|
|
33
33
|
2. **Run the Interpreter**:
|
|
34
34
|
```bash
|
|
35
|
-
python3 .
|
|
36
|
-
.
|
|
35
|
+
python3 .appweaver/orchestrator/orchestrator.py \
|
|
36
|
+
.appweaver/orchestrator/workflows/aw-spec-<skill>.orch.yaml \
|
|
37
37
|
--strategy <strategy> \
|
|
38
|
-
--checkpoint .
|
|
38
|
+
--checkpoint .appweaver/orchestrator/.state/<skill>.state.json \
|
|
39
39
|
[--agent-profile .claude/agent.json] # spawn, sdk, sdk-apply \
|
|
40
40
|
[--input "<user input>"] \
|
|
41
41
|
--json
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: "
|
|
2
|
+
name: "appweaver-demo"
|
|
3
3
|
description: "Prototype launcher (Claude Code): run the aw-orchestrator using the specified strategy (spawn, agent, sdk, sdk-apply)."
|
|
4
4
|
argument-hint: "Optional strategy ('agent', 'spawn', 'sdk', 'sdk-apply') and/or k=value vars (e.g. 'agent out_dir=...')"
|
|
5
|
-
compatibility: "Requires .
|
|
5
|
+
compatibility: "Requires .appweaver/orchestrator/ and the claude CLI on PATH"
|
|
6
6
|
user-invocable: true
|
|
7
7
|
disable-model-invocation: false
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Orchestrator Launcher
|
|
11
11
|
|
|
12
|
-
All orchestration lives in the workflow YAML and is executed by `.
|
|
12
|
+
All orchestration lives in the workflow YAML and is executed by `.appweaver/orchestrator/orchestrator.py` (the general, agent-agnostic engine). The interpreter assembles the COMPLETE payload (system + user) for every request; you never author generation context yourself.
|
|
13
13
|
|
|
14
|
-
- **Engine + workflow (general):** `.
|
|
14
|
+
- **Engine + workflow (general):** `.appweaver/orchestrator/orchestrator.py`, `*.orch.yaml`
|
|
15
15
|
- **This agent's transport profile:** `.claude/agent.json`
|
|
16
16
|
|
|
17
17
|
> Claude Code spawns via the `claude -p` CLI (native `--system-prompt`,
|
|
18
18
|
> `--tools`, and `--bare` isolation). Its `sdk` block declares the SDK the
|
|
19
19
|
> `sdk`/`sdk-apply` strategies import (`claude-agent-sdk`) and the adapter
|
|
20
|
-
> (`.
|
|
20
|
+
> (`.appweaver/orchestrator/adapters/claude_agent_sdk.py`, shared per-SDK)
|
|
21
21
|
> that owns its calling convention.
|
|
22
22
|
|
|
23
23
|
## Execution Steps
|
|
@@ -30,7 +30,7 @@ All orchestration lives in the workflow YAML and is executed by `.aw-spec/orches
|
|
|
30
30
|
package/module (and its `adapter` file) to import from its `sdk` block.
|
|
31
31
|
If the SDK package isn't installed, add `--sdk-install` so the engine
|
|
32
32
|
pip-installs the declared package first. (`agent` needs no profile.)
|
|
33
|
-
- `--checkpoint .
|
|
33
|
+
- `--checkpoint .appweaver/orchestrator/.demo-out/demo.state.json` is required for
|
|
34
34
|
`sdk-apply` and `agent` (suspend/resume — follow the loop in step 3).
|
|
35
35
|
- `spawn` may also add `--isolation bare|fresh` and `--model <name>` (bare is
|
|
36
36
|
strongest; use it when `ANTHROPIC_API_KEY` is set). `sdk`/`sdk-apply` accept
|
|
@@ -39,11 +39,11 @@ All orchestration lives in the workflow YAML and is executed by `.aw-spec/orches
|
|
|
39
39
|
2. **Run the Interpreter**:
|
|
40
40
|
Run the command (include only the bracketed flags that apply to the chosen strategy):
|
|
41
41
|
```bash
|
|
42
|
-
python3 .
|
|
43
|
-
.
|
|
42
|
+
python3 .appweaver/orchestrator/orchestrator.py \
|
|
43
|
+
.appweaver/orchestrator/workflows/aw-spec-demo.orch.yaml \
|
|
44
44
|
--strategy <strategy> \
|
|
45
45
|
[--agent-profile .claude/agent.json] # spawn, sdk, sdk-apply \
|
|
46
|
-
[--checkpoint .
|
|
46
|
+
[--checkpoint .appweaver/orchestrator/.demo-out/demo.state.json] # sdk-apply, agent \
|
|
47
47
|
--json
|
|
48
48
|
```
|
|
49
49
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"type": "claude-agent-sdk",
|
|
5
5
|
"package": "claude-agent-sdk",
|
|
6
6
|
"module": "claude_agent_sdk",
|
|
7
|
-
"adapter": "../.
|
|
7
|
+
"adapter": "../.appweaver/orchestrator/adapters/claude_agent_sdk.py"
|
|
8
8
|
},
|
|
9
9
|
"runtime": "Kilo Code launches the interpreter; generation delegates to the Claude Code CLI",
|
|
10
10
|
"note": "Kilo Code is a VS Code extension with no standalone headless generation CLI, so this profile reuses `claude -p` for the fresh generation. To generate via Gemini instead, replace bin/args/system/user/tools_flag/approval with the .agents (antigravity) profile's values.",
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: "
|
|
2
|
+
name: "appweaver-demo"
|
|
3
3
|
description: "Prototype launcher (Kilo Code): run the aw-orchestrator using the specified strategy (spawn, agent, sdk, sdk-apply)."
|
|
4
4
|
argument-hint: "Optional strategy ('agent', 'spawn', 'sdk', 'sdk-apply') and/or k=value vars (e.g. 'agent out_dir=...')"
|
|
5
|
-
compatibility: "Requires .
|
|
5
|
+
compatibility: "Requires .appweaver/orchestrator/ and the claude CLI on PATH"
|
|
6
6
|
user-invocable: true
|
|
7
7
|
disable-model-invocation: false
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Orchestrator Launcher
|
|
11
11
|
|
|
12
|
-
All orchestration lives in the workflow YAML and is executed by `.
|
|
12
|
+
All orchestration lives in the workflow YAML and is executed by `.appweaver/orchestrator/orchestrator.py` (the general, agent-agnostic engine). The interpreter assembles the COMPLETE payload (system + user) for every request; you never author generation context yourself.
|
|
13
13
|
|
|
14
|
-
- **Engine + workflow (general):** `.
|
|
14
|
+
- **Engine + workflow (general):** `.appweaver/orchestrator/orchestrator.py`, `*.orch.yaml`
|
|
15
15
|
- **This agent's transport profile:** `.kilocode/agent.json`
|
|
16
16
|
|
|
17
17
|
> Kilo Code has no native headless CLI, so it reuses `claude -p` for `spawn`
|
|
18
18
|
> (native `--system-prompt`, `--tools`, `--bare` isolation). Its `sdk` block
|
|
19
19
|
> declares the SDK the `sdk`/`sdk-apply` strategies import (`claude-agent-sdk`)
|
|
20
|
-
> and the adapter (`.
|
|
20
|
+
> and the adapter (`.appweaver/orchestrator/adapters/claude_agent_sdk.py`,
|
|
21
21
|
> shared per-SDK) that owns its calling convention.
|
|
22
22
|
|
|
23
23
|
## Execution Steps
|
|
@@ -30,7 +30,7 @@ All orchestration lives in the workflow YAML and is executed by `.aw-spec/orches
|
|
|
30
30
|
package/module (and its `adapter` file) to import from its `sdk` block.
|
|
31
31
|
If the SDK package isn't installed, add `--sdk-install` so the engine
|
|
32
32
|
pip-installs the declared package first. (`agent` needs no profile.)
|
|
33
|
-
- `--checkpoint .
|
|
33
|
+
- `--checkpoint .appweaver/orchestrator/.demo-out/demo.state.json` is required for
|
|
34
34
|
`sdk-apply` and `agent` (suspend/resume — follow the loop in step 3).
|
|
35
35
|
- `spawn` may also add `--isolation bare|fresh` and `--model <name>` (bare is
|
|
36
36
|
strongest; use it when `ANTHROPIC_API_KEY` is set). `sdk`/`sdk-apply` accept
|
|
@@ -39,11 +39,11 @@ All orchestration lives in the workflow YAML and is executed by `.aw-spec/orches
|
|
|
39
39
|
2. **Run the Interpreter**:
|
|
40
40
|
Run the command (include only the bracketed flags that apply to the chosen strategy):
|
|
41
41
|
```bash
|
|
42
|
-
python3 .
|
|
43
|
-
.
|
|
42
|
+
python3 .appweaver/orchestrator/orchestrator.py \
|
|
43
|
+
.appweaver/orchestrator/workflows/aw-spec-demo.orch.yaml \
|
|
44
44
|
--strategy <strategy> \
|
|
45
45
|
[--agent-profile .kilocode/agent.json] # spawn, sdk, sdk-apply \
|
|
46
|
-
[--checkpoint .
|
|
46
|
+
[--checkpoint .appweaver/orchestrator/.demo-out/demo.state.json] # sdk-apply, agent \
|
|
47
47
|
--json
|
|
48
48
|
```
|
|
49
49
|
|
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: "
|
|
2
|
+
name: "appweaver"
|
|
3
3
|
description: "Parametric launcher (Kilo Code): run ANY converted aw-spec skill on the aw-orchestrator under one of the 4 strategies (agent [default], spawn, sdk, sdk-apply)."
|
|
4
4
|
argument-hint: "<skill> [strategy] [input…] — e.g. 'select-domain', 'specify spawn Build an order API', 'analyze-slice'"
|
|
5
|
-
compatibility: "Requires .
|
|
5
|
+
compatibility: "Requires .appweaver/orchestrator/ and the claude CLI on PATH"
|
|
6
6
|
user-invocable: true
|
|
7
7
|
disable-model-invocation: false
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Orchestrator Skill Launcher
|
|
11
11
|
|
|
12
|
-
Runs one converted `aw-spec-*` workflow on the shared, agent-agnostic engine. All orchestration and **all context management live in the workflow YAML + engine** (`.
|
|
12
|
+
Runs one converted `aw-spec-*` workflow on the shared, agent-agnostic engine. All orchestration and **all context management live in the workflow YAML + engine** (`.appweaver/orchestrator/orchestrator.py`): the interpreter assembles the COMPLETE payload (system + user) for every request; you never author generation context yourself. Execution follows the chosen strategy; the checkpoint channel carries every human-facing interaction regardless of strategy.
|
|
13
13
|
|
|
14
|
-
- **Engine + workflows (common, shared by all agents):** `.
|
|
14
|
+
- **Engine + workflows (common, shared by all agents):** `.appweaver/orchestrator/orchestrator.py`, `.appweaver/orchestrator/workflows/aw-spec-<skill>.orch.yaml`, shared modules in `.appweaver/orchestrator/modules/`, shared scripts in `.appweaver/scripts/`
|
|
15
15
|
- **This agent's transport profile:** `.kilocode/agent.json`
|
|
16
16
|
|
|
17
17
|
> Kilo Code has no native headless CLI, so it reuses `claude -p` for `spawn`
|
|
18
18
|
> (native `--system-prompt`, `--tools`, `--bare` isolation). Its `sdk` block
|
|
19
19
|
> declares the SDK the `sdk`/`sdk-apply` strategies import (`claude-agent-sdk`)
|
|
20
|
-
> and the adapter (`.
|
|
20
|
+
> and the adapter (`.appweaver/orchestrator/adapters/claude_agent_sdk.py`,
|
|
21
21
|
> shared per-SDK) that owns its calling convention.
|
|
22
22
|
|
|
23
23
|
## Execution Steps
|
|
24
24
|
|
|
25
25
|
1. **Parse Arguments** (`<skill> [strategy] [input…]`):
|
|
26
|
-
- `skill` (required): the aw-spec skill name, e.g. `demo`, `select-domain`, `foundation`, `specify`, `design`, `implement`, `build`. Resolve the workflow file `.
|
|
26
|
+
- `skill` (required): the aw-spec skill name, e.g. `demo`, `select-domain`, `foundation`, `specify`, `design`, `implement`, `build`. Resolve the workflow file `.appweaver/orchestrator/workflows/aw-spec-<skill>.orch.yaml`. If it does not exist, list the available `aw-spec-*.orch.yaml` files in that folder and stop.
|
|
27
27
|
- `strategy` (optional, one of `agent`, `spawn`, `sdk`, `sdk-apply`; default `agent` — YOU fulfill each generation through the checkpoint channel, no profile needed): who executes each generation. Always pass `--strategy <strategy>`.
|
|
28
28
|
- Everything after the strategy is the user input: pass it as `--input "<text>"` (omit when empty).
|
|
29
29
|
- `--agent-profile .kilocode/agent.json` is required for `spawn`, `sdk`, and `sdk-apply` (`agent` needs no profile). If the SDK package isn't installed, add `--sdk-install`.
|
|
30
|
-
- **Always** pass `--checkpoint .
|
|
30
|
+
- **Always** pass `--checkpoint .appweaver/orchestrator/.state/<skill>.state.json` — for EVERY strategy. Converted skills contain interactive steps (questions, selections, hooks); the checkpoint is how they reach you and the user. Strategies only govern who generates.
|
|
31
31
|
- `spawn` may also add `--isolation bare|fresh` and `--model <name>`; `sdk`/`sdk-apply` accept `--model <name>`.
|
|
32
32
|
|
|
33
33
|
2. **Run the Interpreter**:
|
|
34
34
|
```bash
|
|
35
|
-
python3 .
|
|
36
|
-
.
|
|
35
|
+
python3 .appweaver/orchestrator/orchestrator.py \
|
|
36
|
+
.appweaver/orchestrator/workflows/aw-spec-<skill>.orch.yaml \
|
|
37
37
|
--strategy <strategy> \
|
|
38
|
-
--checkpoint .
|
|
38
|
+
--checkpoint .appweaver/orchestrator/.state/<skill>.state.json \
|
|
39
39
|
[--agent-profile .kilocode/agent.json] # spawn, sdk, sdk-apply \
|
|
40
40
|
[--input "<user input>"] \
|
|
41
41
|
--json
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Pharma Constitution — Domain Addenda
|
|
2
|
+
|
|
3
|
+
> **Domain addenda to the technology constitution.** Not ratified on its own — compose it with
|
|
4
|
+
> the technology base.
|
|
5
|
+
|
|
6
|
+
## How to use (compose-at-ratification)
|
|
7
|
+
|
|
8
|
+
The technology base (`docs/technology-constitution.md`) **auto-loads** for `/aw-spec-constitution`,
|
|
9
|
+
so you pass only this domain addenda:
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
/aw-spec-constitution @docs/pharma-constitution.md
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
This file supplies **only** the pharma deltas: project identity, regulatory posture, the pharma
|
|
16
|
+
domain principles (which **continue** the technology numbering at **XVI**), folder additions,
|
|
17
|
+
governance overrides, and the active-domain pointer. The reusable principles I–XV live in the
|
|
18
|
+
technology base and are not repeated here.
|
|
19
|
+
|
|
20
|
+
Active domain folder: `docs/domainspecs/pharma/` (set via `/aw-spec-select-domain pharma`).
|
|
21
|
+
|
|
22
|
+
## Project Identity (fills the technology base)
|
|
23
|
+
|
|
24
|
+
- **Project name:** `<SampleProjectName>` — Medicinal Product Registry (Headless API).
|
|
25
|
+
- **Mission:** maintain a centralized, authoritative registry of medicinal products in compliance with pharmaceutical industry standards, regulatory requirements, and healthcare interoperability specifications; exposed as a headless HTTP + FHIR API ready for integration with prescribing, dispensing, manufacturing, pharmacovigilance, and clinical systems.
|
|
26
|
+
- **Bounded contexts (modules):** enumerated in `docs/domainspecs/pharma/domain-requirements.md` (project-specific).
|
|
27
|
+
- **Architecture posture:** Modular Monolith with Clean Architecture + DDD; `MedicinalProduct` is the Aggregate Root; each module designed for clean extraction into an independent microservice. **HEADLESS.**
|
|
28
|
+
|
|
29
|
+
## Regulatory Posture
|
|
30
|
+
|
|
31
|
+
Built for regulatory compliance **readiness** — auditability, traceability, data integrity, and
|
|
32
|
+
provenance are designed in. Data-integrity expectations follow **ALCOA+** for GxP-relevant
|
|
33
|
+
product records. Identifier standards (NDC), substance identity (UNII), classification (WHO
|
|
34
|
+
ATC), and ISO IDMP concept alignment are first-class. Data residency configurable per deployment.
|
|
35
|
+
|
|
36
|
+
## Domain Principles
|
|
37
|
+
|
|
38
|
+
> Extend the technology Core Principles; numbering **continues from XV**.
|
|
39
|
+
|
|
40
|
+
### XVI — Pharmaceutical Product Identification (NON-NEGOTIABLE)
|
|
41
|
+
NDC modeled as a Value Object with discrete Labeler/Product/Package segments; NDC uniqueness enforced (aggregate + persistence constraint); NDC validation rules configurable; no invented NDC/Labeler codes. The domain model aligns with ISO IDMP concepts (Medicinal Product, Manufactured Item, Pharmaceutical Product, Substance, MAH, Packaging, Strength, Route of Administration).
|
|
42
|
+
→ `docs/domainspecs/pharma/ndc.md`, `idmp.md`
|
|
43
|
+
|
|
44
|
+
### XVII — Pharma Terminology & Classification (NON-NEGOTIABLE)
|
|
45
|
+
Coded data uses standard terminologies — UNII (substances), RxNorm (clinical drug), SNOMED CT (dose form / route / classification), UCUM (units), and WHO ATC (therapeutic classification). Every coded field is a Codeable value object; lookup/validation via the Terminology module; ATC codes validated against configured code sets (multiple ATC per product allowed); no invented or free-text codes.
|
|
46
|
+
→ `docs/domainspecs/pharma/terminology.md`, `atc.md`
|
|
47
|
+
|
|
48
|
+
### XVIII — Regulatory Compliance: Audit, Provenance & Versioning (NON-NEGOTIABLE)
|
|
49
|
+
Immutable audit records (User, Timestamp, Action, Previous Value, New Value) for product creation, modification, retirement, identifier changes, and classification changes; `AuditRecord` is append-only. Provenance captured for externally sourced product data (source, method, agent, timestamp). Full version history of product information; historical versions remain queryable. Extends technology **X** and **XIV** with pharma compliance controls.
|
|
50
|
+
→ `docs/domainspecs/pharma/regulatory-compliance.md`, `data-provenance.md`, `auditing.domain.md`, `persistence.domain.md`
|
|
51
|
+
|
|
52
|
+
### XIX — Medicinal Product Lifecycle Integrity (NON-NEGOTIABLE)
|
|
53
|
+
MedicinalProduct lifecycle (Draft → Under Review → Approved → Active → Discontinued/Withdrawn) is a guarded state machine; only valid transitions are permitted; registration completeness (required attributes, ≥ 1 active ingredient, ≥ 1 packaging, valid NDC/dosage-form/route/ATC) is enforced before leaving Draft; retirement is a logical state change, never a hard delete. Each transition emits a domain event and is audit-mandatory.
|
|
54
|
+
→ `docs/domainspecs/pharma/product-lifecycle.domain.md`, `domain-driven-design.domain.md`, `eventing.domain.md`
|
|
55
|
+
|
|
56
|
+
### XX — Healthcare Interoperability Readiness
|
|
57
|
+
The model maps to FHIR Medication / MedicationKnowledge / Substance / Organization (projections, not the system of record); product identifiers map to FHIR Identifier; coded fields map to CodeableConcept/Coding; the solution supports future HL7-based integration via Interop adapters. Extends technology **XII** and **XIV** with the FHIR contract.
|
|
58
|
+
→ `docs/domainspecs/pharma/fhir.md`, `hl7.md`
|
|
59
|
+
|
|
60
|
+
## Folder Structure Additions
|
|
61
|
+
|
|
62
|
+
- Pharma additions (Interop/Fhir + Hl7v2 adapters, InteropTests, terminology seed fixtures, provenance/version-history stores): `docs/domainspecs/pharma/folder-structure.domain.md`
|
|
63
|
+
|
|
64
|
+
## Security & Governance Addenda
|
|
65
|
+
|
|
66
|
+
- **Change authority** (who may register / approve / retire products, and change identifiers or classification): `docs/domainspecs/pharma/authorization.domain.md`
|
|
67
|
+
- **Data classification** (public vs commercially-sensitive / pre-market / externally-sourced; GxP/ALCOA+ integrity): `docs/domainspecs/pharma/data-classification.domain.md`
|
|
68
|
+
- **Zero-trust posture** (transport, scope/trace propagation, change-authority enforcement): `docs/domainspecs/pharma/zero-trust.domain.md`
|
|
69
|
+
- **Coding standards** (forbidden patterns, quality gates): `docs/domainspecs/pharma/coding-standards.domain.md`
|
|
70
|
+
- **API/contract versioning** (FHIR + NDC identifier stability): `docs/domainspecs/pharma/api-versioning.domain.md`
|
|
71
|
+
- **Dependency policy** (FHIR SDK, terminology libraries, regulatory suitability): `docs/domainspecs/pharma/dependency-policy.domain.md`
|
|
72
|
+
|
|
73
|
+
## AI Rules Addenda
|
|
74
|
+
|
|
75
|
+
- Identifier/code safety (no invented NDC/UNII/RxNorm/SNOMED/ATC), projection discipline, lifecycle/audit edit limits, pharma refusal conditions: `docs/domainspecs/pharma/ai-rules.domain.md` (extends `docs/glossary/ai-rules.md`)
|
|
76
|
+
|
|
77
|
+
## Governance Overrides
|
|
78
|
+
|
|
79
|
+
- Mandatory approver for any identifier (NDC), classification (ATC), or lifecycle-rule change: Regulatory/Compliance Officer (in addition to a Principal Engineer and a Domain Owner). Change-authority roles are defined in `docs/domainspecs/pharma/authorization.domain.md`.
|
|
80
|
+
- Additional review required after every relevant regulatory or terminology-release update (e.g. WHO ATC annual update, FDA NDC directory changes).
|
|
81
|
+
- **Versioning note:** any change to NDC identity rules, the lifecycle state machine, the audit-record shape, or the canonical FHIR interoperability surface is a MAJOR bump.
|
|
82
|
+
|
|
83
|
+
## Domain Requirements Pointer
|
|
84
|
+
|
|
85
|
+
→ `docs/domainspecs/pharma/domain-requirements.md`
|
|
86
|
+
(`[DOMAIN: Bounded Contexts / Modules]`, per-subsection pointers, `[DOMAIN: Platform Topology]`, `[DOMAIN: Governance Overrides]`).
|
package/dist/utils/paths.js
CHANGED
|
@@ -14,7 +14,7 @@ export async function resolveAssetsPath() {
|
|
|
14
14
|
return distAssets;
|
|
15
15
|
}
|
|
16
16
|
// Development mode: use the source AppWeaver.Spec repo
|
|
17
|
-
const sourceRepo = path.resolve(__dirname, '../../../AppWeaver.Spec
|
|
17
|
+
const sourceRepo = path.resolve(__dirname, '../../../AppWeaver.Spec');
|
|
18
18
|
if (await fs.pathExists(sourceRepo)) {
|
|
19
19
|
return sourceRepo;
|
|
20
20
|
}
|
|
@@ -31,6 +31,6 @@ export async function resolveAssetsPath() {
|
|
|
31
31
|
* Get the source AppWeaver.Spec repository path (for bundling script)
|
|
32
32
|
*/
|
|
33
33
|
export function getSourceRepoPath() {
|
|
34
|
-
return path.resolve(__dirname, '../../AppWeaver.Spec
|
|
34
|
+
return path.resolve(__dirname, '../../AppWeaver.Spec');
|
|
35
35
|
}
|
|
36
36
|
//# sourceMappingURL=paths.js.map
|
package/dist/utils/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,oEAAoE;IACpE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAC3D,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,uDAAuD;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,oEAAoE;IACpE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAC3D,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,uDAAuD;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;IACtE,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,2CAA2C;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/C,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,0CAA0C;QAC1C,UAAU,UAAU,KAAK,UAAU,KAAK,SAAS,EAAE,CACpD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;AACzD,CAAC"}
|
package/package.json
CHANGED