@wairon/cli 5.1.1-dev.102 → 5.1.1-dev.104
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 +18 -12
- package/dist/cli/index.js +3420 -1650
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +786 -342
- package/dist/index.js +2575 -1110
- package/dist/index.js.map +1 -1
- package/dist/templates/skills/sdd-architect.md +3 -1
- package/dist/templates/skills/sdd-delegate.md +1 -1
- package/dist/templates/skills/sdd-implement.md +3 -1
- package/docs/architecture.md +83 -0
- package/docs/cli.md +814 -0
- package/docs/design-export.md +308 -0
- package/docs/extending-wairon.md +615 -0
- package/docs/requirements.md +65 -0
- package/docs/roadmap.md +133 -0
- package/docs/standards/INDEX.md +23 -0
- package/docs/standards/architecture.md +953 -0
- package/docs/standards/language-bindings.md +120 -0
- package/docs/templates.md +61 -0
- package/docs/vision.md +59 -0
- package/docs/wairon-feature-requests-hosted-mcp.md +74 -0
- package/package.json +4 -2
package/docs/roadmap.md
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# wairon — Roadmap
|
|
2
|
+
|
|
3
|
+
> Last updated: 2026-10-05 (for v6.0.0)
|
|
4
|
+
|
|
5
|
+
wairon is an AIDD support tool built around Spec-Driven Development. This roadmap
|
|
6
|
+
reflects what is actually shipped in `src/` and what is planned. The
|
|
7
|
+
[CHANGELOG](../CHANGELOG.md) has the per-release detail.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Shipped
|
|
12
|
+
|
|
13
|
+
- **SDD spec tree** — L0 System → L1 Subsystem → L2 Component → L3 Interface →
|
|
14
|
+
L4 Implementation → L5 Narrative, stored under `.wai/specs/`.
|
|
15
|
+
- **Architecture-conformance validation** (`wairon validate`) — a documented
|
|
16
|
+
rule registry (`wairon rules list`): reference integrity,
|
|
17
|
+
contract↔implementation method symmetry, narrative-call resolution and
|
|
18
|
+
control-flow soundness, component-stereotype dependency rules (including the
|
|
19
|
+
Supervisor/Actor doctrine and the Repository pattern), technology-leakage
|
|
20
|
+
fencing, dependency-cycle detection, draft-aware severity, per-project
|
|
21
|
+
severity overrides and per-spec `lint.allow`. `--ci` for pipelines.
|
|
22
|
+
- **Code↔spec conformance** — a spec's `sourcePath` is checked against the code:
|
|
23
|
+
declared exports, methods, params and the import graph, recorded beside the
|
|
24
|
+
approval and enforced by `validate --ci`.
|
|
25
|
+
- **One type grammar** — language-neutral type spellings (`list<T>`, `T?`,
|
|
26
|
+
`async T`, `int`/`float`, enums, named value-objects, signature types), with
|
|
27
|
+
`wairon doctor --fix` rewriting older spellings.
|
|
28
|
+
- **Approval and the merge gate** — `wairon lock` records a human's approval of
|
|
29
|
+
the design as one digest per spec in the committed `.wai/lock.json` (it never
|
|
30
|
+
rewrites the spec tree); `wairon lock-check` answers in CI whether the design
|
|
31
|
+
being merged is the approved one, also as a reusable GitHub workflow.
|
|
32
|
+
- **Members, parts and projects** — a project grows from subsystems, to
|
|
33
|
+
**parts** (some of its subsystems stored in another folder or repository), to
|
|
34
|
+
member **projects** with their own id, exports and lock, reached as
|
|
35
|
+
`alias::name`. Declared `externals` are pinned (`wairon externals pin`) and
|
|
36
|
+
compared with their live producers. `validate` at a parent is the family run.
|
|
37
|
+
- **Family migrations and renames** — attach, detach, adopt, promote, demote,
|
|
38
|
+
internalize, externalize, project and alias renames, each planned first
|
|
39
|
+
(`--report` / `dryRun`) and applied all or nothing; in-tree renames of
|
|
40
|
+
components, methods and types, and method moves, rewrite every reference.
|
|
41
|
+
- **Design export** (`wairon export`) — the whole resolved design as one JSON
|
|
42
|
+
document with a published schema, stamped with the approval verdict, for
|
|
43
|
+
generators and translators.
|
|
44
|
+
- **Spec-derived agent topology** — agents are derived from the spec tree
|
|
45
|
+
(`system-architect`, `<subsystem>-owner`, optionally a
|
|
46
|
+
`<component>-implementer` per component) and served as **live briefs**
|
|
47
|
+
(`sdd_get_agent_brief`, `wairon agent brief`), composed from the current tree
|
|
48
|
+
on every call. Agent files on disk are an opt-in materialized view
|
|
49
|
+
(`rules.materializeAgentFiles`). Execution budgets derive a model tier and
|
|
50
|
+
allowance per agent. There is no hand-maintained agent registry.
|
|
51
|
+
- **Domains** (`wairon domains`) — subsystem-derived domains plus free-standing
|
|
52
|
+
domains declared in `.wai/topology.yaml`, each with a derived owner agent.
|
|
53
|
+
- **SDD skills** (`wairon skills`) — installed into each active target tool to
|
|
54
|
+
drive the spec-driven workflow in-session.
|
|
55
|
+
- **MCP server** (`wairon mcp`) — topology tools + `sdd_*` tools for authoring
|
|
56
|
+
and validating specs, and MCP `instructions` returned on `initialize` so a
|
|
57
|
+
connecting agent is taught the SDD model (tree shape, authoring order, the
|
|
58
|
+
bound project's profile and packs, read-the-skill-first) instead of depending
|
|
59
|
+
on a human having briefed it. Packs append their platform delta to that text
|
|
60
|
+
via `instructions` in `pack.yaml`.
|
|
61
|
+
- **Shared context** (`.wai/context/`) — project description + auto-generated
|
|
62
|
+
domain map and AI guide.
|
|
63
|
+
- **Diagrams** (`wairon diagram`) — Mermaid component and L5-derived sequence
|
|
64
|
+
diagrams, an interactive canvas (Cytoscape.js, embedded, works offline) with
|
|
65
|
+
scoped navigation, narrative flowcharts and relation health, and editable
|
|
66
|
+
draw.io / Excalidraw exports.
|
|
67
|
+
- **Extension packs** (`wairon pack`) — profiles, language tables, rules,
|
|
68
|
+
patterns, variants and skills injected from outside; a machine pack store
|
|
69
|
+
with per-project selection, pinning, bundling and `pack sync` for CI, and
|
|
70
|
+
`pack impact` before every pack write.
|
|
71
|
+
- **Tooling** — `init`, `status`, `doctor` (health checks and upgrade
|
|
72
|
+
repairs), `wairon dev` (the web UI over a local project), self-update with
|
|
73
|
+
release channels, command aliases, multi-target exporters (Claude, Gemini /
|
|
74
|
+
Antigravity, custom), npm packages and standalone binaries.
|
|
75
|
+
- **Hosted server** (`wairon serve` / `wairon host`) — the `sdd_host` subsystem
|
|
76
|
+
serves the `sdd_*` tools over streamable HTTP for many fully-isolated projects,
|
|
77
|
+
each scoped per request to its authenticated project. Split data plane / admin
|
|
78
|
+
control plane; organization units and a permission grid; owner-bound API keys
|
|
79
|
+
and SSO; a state-scoped `lock` with approval requests; hosted members as
|
|
80
|
+
records of their own; git-backed projects; Notion / Miro producers; a web UI
|
|
81
|
+
(canvas, specs, admin). Self-host via Docker. See the
|
|
82
|
+
[hosted server guide](design/hosted-mcp-server.md).
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Planned
|
|
87
|
+
|
|
88
|
+
- **Conformance engine depth** — call-graph↔narrative conformance beyond the
|
|
89
|
+
current checks, event-topology completeness, and clearer remediation
|
|
90
|
+
messages. This is wairon's core differentiator.
|
|
91
|
+
- **Upgrade automation** — more of the mechanical rewrites `wairon doctor
|
|
92
|
+
--fix` leaves to an author today (for example language-flavoured result
|
|
93
|
+
types), and per-member repairs run from a family's top.
|
|
94
|
+
- **Derive specs from existing code** — bootstrap a draft spec tree from a repo
|
|
95
|
+
so teams can adopt conformance without greenfield modeling.
|
|
96
|
+
- **CI reporting** — conformance diffs between two revisions in PR checks (the
|
|
97
|
+
pass/fail gates, `validate --ci` and `lock-check`, ship today).
|
|
98
|
+
- **Org scale** — shared template libraries and cross-project standards.
|
|
99
|
+
- **Multi-Domain Architectural Profiles** — Support non-backend domains cleanly to prevent context waste. The engine integration is shipped (profiles resolve per subsystem, family fencing applies, extension packs register custom profiles with their own doctrine/severities/designDepth), but the depth of **builtin** doctrine varies by profile — labeled honestly below. Platform-specific doctrine is expected to arrive as extension packs (profile + rules + language table), not as core code.
|
|
100
|
+
- **Frontend Profiles** (`frontend-reactive` and `frontend-controller`) — *doctrine enforced today*:
|
|
101
|
+
- *Concept*: Enforces a strict separation of presentation views from reactive logic custom hooks or class controllers.
|
|
102
|
+
- *Stereotypes*: Introduces `View` blocks representing pure presenter elements (like React JSX, Vue templates, or Flutter StatelessWidgets).
|
|
103
|
+
- *Validation*: Views are strictly passive; they cannot depend on database Stores, Registries, or Adapters. They only receive properties and forward callbacks. `Actor`/`Supervisor` in a frontend subsystem draw a sanity warning. (The two frontend profiles currently share one doctrine; reactive-dataflow-specific checks are future work.)
|
|
104
|
+
- **PLC Cyclic Profile** (`plc-cyclic`) — *core doctrine enforced today*:
|
|
105
|
+
- *Concept*: Structures industrial control programs executing inside strict scan cycles (e.g., Structured Text, CODESYS, Beckhoff TwinCAT, Siemens S7).
|
|
106
|
+
- *Stereotypes*: `Portal` maps to external HMI/network interfaces, `Orchestrator` maps to cyclic sequence programs, and Function Blocks map to an Orchestrator with `dependencyClass: pure` or `read` over `Store` instance memory. `cyclic` lifecycle entrypoints root the scan loop.
|
|
107
|
+
- *Validation*: Strict single-threaded execution model — **forbids concurrent runtime blocks** (`Actor` and `Supervisor` stereotypes) because execution must complete deterministically inside a single scan cycle. (Narrative-level checks — e.g. flagging blocking loops without watchdogs — are *not* yet implemented.)
|
|
108
|
+
- **OS / Game ECS / Embedded Profiles** (`lowlevel-os`, `game-ecs`, `realtime-embedded`) — *blueprints: today these enforce only the backend-family fencing (frontend stereotypes are refused). The stereotype mappings below are modeling guidance for humans; the platform-specific validations described are NOT implemented in core.*
|
|
109
|
+
- **OS Profile** (`lowlevel-os`): Models OS kernel scheduling loops, thread tasks, virtual filesystem blocks, and hardware interfaces. `Supervisor` maps to the kernel scheduler, `Actor` represents thread contexts/tasks, `Adapter` represents device drivers/VFS layers, and `Store` represents process tables. Envisioned zero-cost target: spec boundaries as compile-time virtual boundaries in systems languages (C, Rust `no_std`).
|
|
110
|
+
- **Game Profile** (`game-ecs`): Structures Entity-Component-System simulation loops. `Store` represents the component array registries, `Orchestrator` represents systems (e.g. Physics, Collision), and `Observer` manages game event buses. Envisioned zero-cost target: boundaries compiling down to direct storage queries. (Note: the standard dependency matrix is profile-blind today and does not yet license the ECS system→Store idiom specially.)
|
|
111
|
+
- **Embedded Profile** (`realtime-embedded`): Structures real-time microcontroller firmware, hardware pin control, sensor loops, and actuator drivers. `Adapter` wraps physical pin/device register I/O, `Orchestrator` implements control loops (e.g., PID controls), and `Observer` captures hardware interrupt routines (`interrupt` lifecycle entrypoints root ISR flows). Envisioned validation: pin access strictly behind Adapters, static-memory narrative checks (banning dynamic heap allocation) — both unimplemented; ISR/memory/WCET annotations would ride the `ext:` data channel.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Architectural invariants
|
|
116
|
+
|
|
117
|
+
| Invariant | Why |
|
|
118
|
+
|-----------|-----|
|
|
119
|
+
| **`.wai/` boundary** | All wairon state lives under `.wai/`; nothing is written elsewhere without explicit opt-in. |
|
|
120
|
+
| **No hidden server (by default)** | The core workflow runs on-demand; the stdio MCP server is a subprocess, not a daemon. `wairon serve` is an explicit, opt-in hosting daemon. |
|
|
121
|
+
| **No database** | All state is human-readable YAML/JSON. |
|
|
122
|
+
| **Works offline (core)** | The core workflow has no network requirement; `wairon serve` and update checks are opt-in. |
|
|
123
|
+
| **Specs are the source of truth** | Agents and conformance are derived from `.wai/specs/`; generated files are outputs. |
|
|
124
|
+
| **wairon equips, not orchestrates** | wairon does not run AI sessions — it produces subagents, skills, and MCP tools the host tool consumes. |
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## History note
|
|
129
|
+
|
|
130
|
+
Earlier drafts explored a local AI orchestration hub (session spawning,
|
|
131
|
+
delegation, multi-model pipelines, git worktrees). That direction was retired in
|
|
132
|
+
favour of equipping the host AI tool's own native subagent mechanism. The
|
|
133
|
+
orchestration code has been removed; this roadmap supersedes those plans.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Architecture Standards
|
|
2
|
+
|
|
3
|
+
The canonical, language-neutral definition of wairon's architecture model — the
|
|
4
|
+
building blocks, patterns, entity/behavior rules, spec-tree layout, and the rules a
|
|
5
|
+
conformant design must obey. The schema, validator, MCP tools, and SDD skills all
|
|
6
|
+
reconcile to this.
|
|
7
|
+
|
|
8
|
+
- [Architecture Standard](architecture.md) — the single source of truth:
|
|
9
|
+
- the two axes (containment vs refinement; folders vs files)
|
|
10
|
+
- the ten building blocks + dependency rules + default interfaces
|
|
11
|
+
- logic as Orchestrators, bounded by a dependency class (`pure`, `read`, or a workflow)
|
|
12
|
+
- the process layer (Supervisor trees, Actors, entity Actors, timers) and external I/O / emission (Adapter)
|
|
13
|
+
- object modeling: where behavior lives; composition over inheritance
|
|
14
|
+
- entities & types: defined once, scoped by ownership
|
|
15
|
+
- the Repository pattern (one aggregate: Store, Registry, Indexes, Queries), the built-in variants (the `gateway` Portal variant among them), and the retired Specialist and Gateway stereotypes
|
|
16
|
+
- `owns` vs `dependsOn`, the visibility rule, ownership-leaf vs dependency-sink
|
|
17
|
+
- composition & layering (no nesting; promote to L1)
|
|
18
|
+
- implementation/concurrency strategy and transactions (language-neutral)
|
|
19
|
+
- spec-driven diagram generation
|
|
20
|
+
- a worked example: a live auction
|
|
21
|
+
- [Language Bindings](language-bindings.md) — how the neutral strategies map to
|
|
22
|
+
concrete primitives (Rust, Go, Java, C#, TypeScript, Python), and an Orchestrator
|
|
23
|
+
as a class or a module of functions.
|