@wairon/cli 5.1.1-dev.16 → 5.1.1-dev.18

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.
@@ -0,0 +1,59 @@
1
+ # wairon's built-in logic shapes — named, base-anchored kinds of Orchestrator.
2
+ # Each states the dependencyClass the shape takes (pure | read) and the
3
+ # discipline an implementer reuses across every component of the kind. A global
4
+ # (~/.wairon/variants) or project (.wai/variants/) variant with the same id
5
+ # overrides one of these. Registered as variants, not stereotypes: a variant
6
+ # carries identity + implementation guidance at zero rule-matrix cost.
7
+ # PROMOTION CRITERION: a variant earns first-class stereotype status when
8
+ # independent projects/packs keep re-registering it, or when its edge rules
9
+ # exceed what guidance (or a future variant-scoped assertion) can express.
10
+ - id: arbiter
11
+ base: Orchestrator
12
+ guidance: >-
13
+ A stateless ruling authority, declared dependencyClass: pure. Given a
14
+ subject/candidate plus an EXPLICITLY SUPPLIED world of facts, compute a
15
+ deterministic verdict (permit/deny, visible/hidden, pass/warn/fail)
16
+ together with the deciding reason. The arbiter performs NO I/O and holds
17
+ NO dependencies on stores, registries, repositories, indexes, or adapters
18
+ — only on other pure Orchestrators — so the caller gathers the world and
19
+ passes it in (the canonical companion shape: a read Orchestrator or a
20
+ workflow assembles the facts, the arbiter rules). Same inputs MUST always
21
+ yield the same verdict: no clock reads, no randomness — take timestamps as
22
+ parameters. Declare `idempotent` on verdict methods where it holds. This
23
+ purity is what keeps rulings replayable, testable, and auditable; if you
24
+ feel the need to fetch something, that fetch belongs in the caller.
25
+ - id: projector
26
+ base: Orchestrator
27
+ guidance: >-
28
+ A stateless derivation of a self-contained view — a snapshot, graph model,
29
+ document tree, rendered artifact, or digest — computed on demand from a
30
+ source model. Handed its source as parameters, it is dependencyClass:
31
+ pure; loading the source itself through AT MOST ONE read facade (a
32
+ Repository, or a read-only adapter of the owning subsystem), it is
33
+ dependencyClass: read. The same source must always yield the same view.
34
+ Own nothing, write nothing: the caller persists or serves the result.
35
+ Distinct from an Index: an Index is a MAINTAINED read model over a Store
36
+ it shares references with; a projector is RECOMPUTED per call and owns no
37
+ state. If the derivation starts coordinating multiple facades or deciding
38
+ what to do with its output, it is drifting toward a workflow — split it.
39
+ - id: composer
40
+ base: Orchestrator
41
+ guidance: >-
42
+ Renders authored text or file sets — scaffolds, briefings, composed
43
+ documents — from embedded templates plus supplied values, for a human or
44
+ connecting-agent audience. Handed its values, it is dependencyClass: pure;
45
+ loading its own source through a read facade, it is dependencyClass: read.
46
+ Return the composed content (e.g. an in-memory file map or markdown
47
+ string); NEVER write it to disk or execute it — the caller owns
48
+ persistence and delivery. Degrade gracefully when optional inputs are
49
+ missing (an absent block composes to nothing, not an error), so
50
+ composition never takes down the surface that serves it.
51
+ - id: codec
52
+ base: Orchestrator
53
+ guidance: >-
54
+ A pure bidirectional translator, declared dependencyClass: pure, between
55
+ two formats (native model ↔ wire or archive format), with validation and
56
+ safety checking on the inbound half (schema conformance, integrity,
57
+ resource-abuse guards). Whole values in, whole values out; no I/O — the
58
+ bytes and the clock arrive as parameters. Keep BOTH directions in one
59
+ component so the round-trip stays testable as a single property.
@@ -0,0 +1,13 @@
1
+ # wairon's built-in Portal shapes — named, base-anchored kinds of Portal. A
2
+ # global (~/.wairon/variants) or project (.wai/variants/) variant with the same
3
+ # id overrides one of these.
4
+ - id: gateway
5
+ base: Portal
6
+ guidance: >-
7
+ A Portal that authenticates, authorizes, validates or rate-limits inbound
8
+ requests before dispatching them. Declare its inbound authentication in
9
+ `auth`, and hold NO verification logic in its own steps: CALL that logic —
10
+ read or pure Orchestrators, or one ingress Orchestrator when the admission
11
+ sequence carries its own policy — and return early on a rejection, before
12
+ anything is dispatched. Once a request is admitted, dispatch it as any
13
+ Portal does.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wairon/cli",
3
- "version": "5.1.1-dev.16",
3
+ "version": "5.1.1-dev.18",
4
4
  "description": "SYW Waffle AIron — CLI for managing AI coding agent topology across projects",
5
5
  "keywords": [
6
6
  "ai",