@wairon/cli 5.1.1-dev.105 → 5.1.1-dev.107
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 +47 -1
- package/dist/cli/index.js +13106 -8767
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +2478 -774
- package/dist/index.js +4721 -1476
- package/dist/index.js.map +1 -1
- package/dist/templates/skills/sdd-architect.md +16 -13
- package/dist/templates/skills/sdd-delegate.md +7 -1
- package/dist/templates/skills/sdd-implement.md +5 -1
- package/dist/webapp.html +53 -52
- package/docs/cli.md +184 -17
- package/docs/design-export.md +13 -8
- package/docs/network.md +104 -0
- package/docs/standards/architecture.md +101 -12
- package/package.json +1 -1
- package/schemas/{design-export-1.json → design-export-2.json} +44 -46
package/README.md
CHANGED
|
@@ -77,6 +77,49 @@ tables, and rules — see [Extending wairon](docs/extending-wairon.md).
|
|
|
77
77
|
|
|
78
78
|
---
|
|
79
79
|
|
|
80
|
+
## Reachability: what reaches each verb
|
|
81
|
+
|
|
82
|
+
Every Portal verb must be **reached**: either a modelled caller in the design
|
|
83
|
+
calls it (a `call` step along a `dependsOn` edge, or `alias::portal.verb` across
|
|
84
|
+
projects), or the verb is declared an **entry** — callers outside the design
|
|
85
|
+
reach it. Nothing else counts, so a Portal nobody calls and nobody enters is
|
|
86
|
+
reported (`UNUSED_COMPONENT` / `UNUSED_METHOD`), with both remedies named.
|
|
87
|
+
|
|
88
|
+
- **Transports.** A Portal states its `transport`, one vocabulary with its
|
|
89
|
+
endpoints: network (`HTTP`, `gRPC`, `GraphQL`, `MessageBus`, `Custom`), local
|
|
90
|
+
(`CLI`, `IPC`, `NamedPipe`, `JSONRPC` for stdio JSON-RPC such as a language
|
|
91
|
+
server or stdio MCP) or `InProcess` (a library, which binds no endpoint).
|
|
92
|
+
- **Entries.** `invokedBy: { kind: entry, caller: "…" }` on the Portal (every
|
|
93
|
+
verb inherits it) or on one verb. Declare one only where the callers really are
|
|
94
|
+
outside the design: browsers, a CLI user, an AI tool over stdio, the
|
|
95
|
+
applications that link a library. Never invent one to silence a finding —
|
|
96
|
+
model the caller instead.
|
|
97
|
+
- **Networks.** A project may declare `network: true` (or `{ description }`) in
|
|
98
|
+
`.wai/project.yaml`: it and its members form an isolated network. An entry's
|
|
99
|
+
`scope` is relative — `outside` (the default) or `network` (sibling services
|
|
100
|
+
inside the innermost network). Inside a network only a `gateway` Portal takes
|
|
101
|
+
entries from outside, and a modelled call crossing in must land on one. The
|
|
102
|
+
family run at the root proves every `network` entry has a modelled caller
|
|
103
|
+
(`ENTRY_UNPROVEN`). A project with no network never sees any of this.
|
|
104
|
+
- **Libraries are called directly.** Another project's `InProcess` Portal is
|
|
105
|
+
called from any component — no client Adapter needed. Pure and read logic may
|
|
106
|
+
only call library verbs whose `effect` allows it (`LIBRARY_CALL_IMPURE`), and a
|
|
107
|
+
native library called from another language needs an `abi` (`c` or `wasm`)
|
|
108
|
+
(`LANGUAGE_BRIDGE_MISSING`). Wrapping a volatile third-party API in an Adapter
|
|
109
|
+
stays a good habit, never a rule.
|
|
110
|
+
- **Extension points.** A producer exports a contract consumers implement with
|
|
111
|
+
`role: implement`; the consumer's interface declares `implements: alias::name`.
|
|
112
|
+
- **Networking is derived.** `wairon network flows | policy | diagram | check |
|
|
113
|
+
why` turns the modelled reach into an allowed-flows matrix, Kubernetes
|
|
114
|
+
`NetworkPolicy`, a trust-boundary diagram and live-flow checks — the specs
|
|
115
|
+
never hold an address. See [Derived networking](docs/network.md).
|
|
116
|
+
|
|
117
|
+
Upgrading a tree written before this model: `wairon doctor --fix` migrates the
|
|
118
|
+
retired forms (`portalType`, listener `mounts`, the old `invokedBy` kinds), then
|
|
119
|
+
declare the entries it will not invent.
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
80
123
|
## Domains & agents
|
|
81
124
|
|
|
82
125
|
Agents are **derived from the spec tree** — you never hand-maintain an agent
|
|
@@ -180,7 +223,9 @@ git add .wai && git commit -m "Approve the design"
|
|
|
180
223
|
# --strict also fails when .wai/lock.json is missing or a member project was
|
|
181
224
|
# never approved; plain lock-check only fails an approval that no longer matches.
|
|
182
225
|
wairon lock-check --strict
|
|
183
|
-
wairon validate --ci # the conformance gate
|
|
226
|
+
wairon validate --ci # the conformance gate, run at the FAMILY ROOT (the project that
|
|
227
|
+
# declares the members): there it is the family run, which judges
|
|
228
|
+
# the network proofs; externals are judged against their pins
|
|
184
229
|
# Optional: gate on the LIVE producers of your externals as well
|
|
185
230
|
# (exit 1 when one is incompatible, 2 when one could not be compared).
|
|
186
231
|
wairon externals status
|
|
@@ -216,6 +261,7 @@ See [docs/cli.md](docs/cli.md). Summary:
|
|
|
216
261
|
| `wairon list` / `wairon show <id>` / `wairon agent brief <id>` | Inspect agents resolved from the spec tree; print one's live brief |
|
|
217
262
|
| `wairon export [--out <file>]` | The whole design, resolved, as one JSON document ([format](docs/design-export.md)) |
|
|
218
263
|
| `wairon diagram [--all] [--canvas] [--drawio] [--excalidraw] [--sequence <comp:method>]` | Mermaid, interactive canvas, and editable draw.io/Excalidraw exports |
|
|
264
|
+
| `wairon network flows \| policy \| diagram \| check \| why` | Networking derived from the design: allowed flows, Kubernetes `NetworkPolicy`, a trust-boundary diagram, live-flow checks ([details](docs/network.md)) |
|
|
219
265
|
| `wairon rules list` | The conformance rule registry (the architecture linter) |
|
|
220
266
|
| `wairon pack init \| build \| install \| use \| unuse \| impact \| sync \| bundle \| which \| list \| add \| remove` | Extension packs: injected profiles, language tables, and rules |
|
|
221
267
|
| `wairon member …` / `wairon subsystem externalize` / `wairon project rename` | Members (parts and projects) and the family migrations |
|