@rosenfan/matrix 0.1.1 → 0.1.2
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/.claude/skills/matrix/SKILL.md +62 -21
- package/.claude/skills/matrix/agents/openai.yaml +4 -4
- package/.claude/skills/matrix/scripts/matrix_claude.py +11 -166
- package/.claude/skills/matrix/scripts/matrix_state.py +60 -114
- package/.claude/skills/matrix-archive/SKILL.md +33 -26
- package/.claude/skills/matrix-build/SKILL.md +26 -39
- package/.claude/skills/matrix-claude/SKILL.md +22 -22
- package/.claude/skills/matrix-design/SKILL.md +28 -29
- package/.claude/skills/matrix-hotfix/SKILL.md +8 -8
- package/.claude/skills/matrix-open/SKILL.md +17 -20
- package/.claude/skills/matrix-status/SKILL.md +4 -3
- package/.claude/skills/matrix-tweak/SKILL.md +8 -8
- package/.claude/skills/matrix-verify/SKILL.md +18 -29
- package/LICENSE +21 -21
- package/README.md +255 -242
- package/README.zh-CN.md +254 -242
- package/assets/skills-zh-CN/matrix/SKILL.md +57 -5
- package/assets/skills-zh-CN/matrix-archive/SKILL.md +23 -2
- package/assets/skills-zh-CN/matrix-build/SKILL.md +26 -2
- package/assets/skills-zh-CN/matrix-claude/SKILL.md +12 -11
- package/assets/skills-zh-CN/matrix-design/SKILL.md +16 -11
- package/assets/skills-zh-CN/matrix-hotfix/SKILL.md +8 -8
- package/assets/skills-zh-CN/matrix-open/SKILL.md +16 -11
- package/assets/skills-zh-CN/matrix-status/SKILL.md +12 -11
- package/assets/skills-zh-CN/matrix-tweak/SKILL.md +8 -8
- package/assets/skills-zh-CN/matrix-verify/SKILL.md +22 -8
- package/bin/matrix.js +15 -15
- package/package.json +56 -56
- package/src/catalog.js +85 -80
- package/src/cli.js +116 -111
- package/src/distribution.js +216 -152
- package/src/installer.js +45 -45
- package/src/matt.js +45 -45
- package/src/messages.js +33 -33
- package/src/ui.js +89 -89
- package/src/workflow-transaction.js +622 -0
- package/src/workflow.js +547 -74
|
@@ -5,45 +5,45 @@ description: Export a frozen Matrix design as a bounded Claude Code task package
|
|
|
5
5
|
|
|
6
6
|
# Matrix Claude Handoff
|
|
7
7
|
|
|
8
|
-
This is an optional Matrix sidecar, not a Matrix phase. It must not call `transition`, `archive`, or write `matrix.yaml
|
|
8
|
+
This is an optional Matrix sidecar, not a Matrix phase. It must not call `transition`, `archive`, or write `matrix.yaml` or `events.jsonl`.
|
|
9
9
|
|
|
10
10
|
## When to Use
|
|
11
11
|
|
|
12
12
|
Use `$matrix-claude` when:
|
|
13
|
-
- The
|
|
13
|
+
- The active change is in Build and the Design -> Build transition has approved the contract
|
|
14
14
|
- You want Claude Code (instead of Codex) to implement the design
|
|
15
15
|
- You need a bounded task package with all implementation details
|
|
16
16
|
|
|
17
17
|
## Preconditions
|
|
18
18
|
|
|
19
|
-
The exporter performs this read-only check before writing anything:
|
|
19
|
+
The exporter performs this read-only check before writing anything:
|
|
20
20
|
|
|
21
|
-
```powershell
|
|
22
|
-
matrix workflow guard
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
If `matrix` is genuinely absent from PATH, use the bundled runtime from the installed root Matrix Skill. Do not fall back when the primary command starts and returns an error.
|
|
21
|
+
```powershell
|
|
22
|
+
matrix workflow guard build
|
|
23
|
+
```
|
|
26
24
|
|
|
27
|
-
If
|
|
25
|
+
If `matrix` is genuinely absent from PATH, use the bundled runtime from the installed root Matrix Skill. Do not fall back when the primary command starts and returns an error.
|
|
26
|
+
|
|
27
|
+
If the build guard reports `CONTRACT_CHANGED` or `CONTRACT_UNAPPROVED`, return to `$matrix-design` and approve a new contract through Build. The exporter reads the approved bytes of `proposal.md`, `design.md`, and `plan.md`; it does not invent missing facts.
|
|
28
28
|
|
|
29
29
|
## Export
|
|
30
30
|
|
|
31
|
-
Treat explicit invocation of `$matrix-claude` as the user's choice of Claude Code as the implementation actor. Generate the package with the deterministic exporter; it refuses a
|
|
31
|
+
Treat explicit invocation of `$matrix-claude` as the user's choice of Claude Code as the implementation actor. Generate the package with the deterministic exporter; it refuses a non-matching approved contract and does not alter Matrix state.
|
|
32
|
+
|
|
33
|
+
```powershell
|
|
34
|
+
# Generic project: only exports a Matrix artifact.
|
|
35
|
+
matrix workflow export --task-id <ID> --target generic
|
|
32
36
|
|
|
33
|
-
|
|
34
|
-
#
|
|
35
|
-
matrix workflow export --task-id <ID> --target
|
|
36
|
-
|
|
37
|
-
# FnSec: exports its formal task package. Add --apply-fnsec-board only when
|
|
38
|
-
# active.md is NO_ACTIVE_OBJECTIVE; an existing task is never overwritten.
|
|
39
|
-
matrix workflow export --task-id <ID> --target fnsec --apply-fnsec-board
|
|
40
|
-
```
|
|
37
|
+
# FnSec: exports its formal task package. Add --apply-fnsec-board only when
|
|
38
|
+
# active.md is NO_ACTIVE_OBJECTIVE; an existing task is never overwritten.
|
|
39
|
+
matrix workflow export --task-id <ID> --target fnsec --apply-fnsec-board
|
|
40
|
+
```
|
|
41
41
|
|
|
42
42
|
## Task Package Contents
|
|
43
43
|
|
|
44
44
|
The exported package (`artifacts/claude-task.md`) contains everything Claude Code needs to implement and produce evidence for `$matrix-verify`:
|
|
45
45
|
|
|
46
|
-
1. **Task ID and
|
|
46
|
+
1. **Task ID, execution actor, and approved contract hash**: Claude Code and the exact approved snapshot
|
|
47
47
|
2. **Objective and acceptance criteria** — copied from `proposal.md`
|
|
48
48
|
3. **In-scope and out-of-scope boundaries** — from `proposal.md`
|
|
49
49
|
4. **Frozen design decisions** — from `design.md` (Decisions, Boundaries, Test seams)
|
|
@@ -76,12 +76,12 @@ After Claude Code completes and evidence is present:
|
|
|
76
76
|
|
|
77
77
|
1. Run build guard to verify evidence:
|
|
78
78
|
```powershell
|
|
79
|
-
matrix workflow guard build
|
|
79
|
+
matrix workflow guard build
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
2. If guard passes, transition to verify:
|
|
83
83
|
```powershell
|
|
84
|
-
matrix workflow transition verify
|
|
84
|
+
matrix workflow transition verify
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
3. Enter `$matrix-verify` to继续验证流程
|
|
@@ -91,6 +91,6 @@ If the build guard fails, return to Claude Code to补充 missing evidence.
|
|
|
91
91
|
## Important Notes
|
|
92
92
|
|
|
93
93
|
- This sidecar does NOT change Matrix phase, workflow, or guard result
|
|
94
|
-
- The Matrix state remains in `
|
|
94
|
+
- The Matrix state remains in `build` phase; export itself does not advance it
|
|
95
95
|
- Claude Code must produce evidence that satisfies the build guard conditions
|
|
96
96
|
- After successful transition to verify, the normal verify流程 continues
|
|
@@ -5,35 +5,35 @@ description: Design and freeze the active Matrix change before implementation. U
|
|
|
5
5
|
|
|
6
6
|
# Matrix Design
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
8
|
+
Run `matrix workflow inspect`, read the active proposal and frozen `orchestration`, then write `artifacts/design.md` with `## Decisions`, `## Boundaries`, `## Test seams`, and `## Risks`; write `artifacts/plan.md` with `## Steps`, `## Validation`, and `## Stop conditions`.
|
|
9
|
+
|
|
10
|
+
## Prim
|
|
11
|
+
|
|
12
|
+
Use Matrix's own capability to investigate the repository and design the change.
|
|
13
|
+
|
|
14
|
+
## Arch
|
|
15
|
+
|
|
16
|
+
Invoke only capabilities whose task-fact trigger is proven:
|
|
17
|
+
|
|
18
|
+
- `domain-modeling` for unclear vocabulary, invariants, or architectural decisions;
|
|
19
|
+
- `research` when required external facts cannot be established from the repository;
|
|
20
|
+
- `wayfinder` when module ownership or dependency seams are unknown;
|
|
21
|
+
- `prototype` when a material design decision needs disposable empirical evidence;
|
|
22
|
+
- `codebase-design` when a deep-module, interface, or test-seam decision remains.
|
|
23
|
+
|
|
24
|
+
Order follows actual dependencies; never run a fixed companion sequence. Announce each invocation and reason. A correctly installed capability gets at most one same-capability Matrix fallback; installation-integrity failure stops the phase.
|
|
25
|
+
|
|
26
|
+
Long-lived domain, ADR, or research artifacts follow repository conventions, and material conclusions must be synchronized into the canonical design or plan. Prototypes default to an OS temporary directory unless the approved design promotes a project path. Companion output cannot own Matrix state or create a competing plan.
|
|
23
27
|
|
|
24
28
|
## Process
|
|
25
29
|
|
|
26
|
-
1.
|
|
27
|
-
2.
|
|
28
|
-
3.
|
|
29
|
-
4.
|
|
30
|
-
5. Use `codebase-design` to finalize module boundaries
|
|
31
|
-
6. Confirm material architecture choices with the user before freezing
|
|
32
|
-
7. Run the guard
|
|
33
|
-
8. If guard passes, ask the user to choose implementation method:
|
|
30
|
+
1. Establish repository facts and resolve only triggered design questions.
|
|
31
|
+
2. Write and synchronize the canonical Matrix design and plan.
|
|
32
|
+
3. Confirm material architecture choices with the user before freezing.
|
|
33
|
+
4. Run the guard, then choose the implementation actor.
|
|
34
34
|
|
|
35
35
|
```powershell
|
|
36
|
-
matrix workflow guard design
|
|
36
|
+
matrix workflow guard design
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
## Implementation Decision Point
|
|
@@ -45,22 +45,21 @@ After the design guard passes, the user chooses:
|
|
|
45
45
|
Run transition and enter `$matrix-build`:
|
|
46
46
|
|
|
47
47
|
```powershell
|
|
48
|
-
matrix workflow transition build
|
|
48
|
+
matrix workflow transition build
|
|
49
49
|
```
|
|
50
50
|
|
|
51
51
|
Then enter `$matrix-build` to implement directly in this session.
|
|
52
52
|
|
|
53
53
|
### Option B: Use Claude Code for implementation
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
- Does
|
|
55
|
+
First approve the frozen contract by transitioning to Build, then run `$matrix-claude` to export a bounded task package. This:
|
|
56
|
+
- Does not change the Build phase or state beyond the preceding transition
|
|
57
57
|
- Creates `artifacts/claude-task.md` with all implementation details
|
|
58
58
|
- Includes acceptance criteria, test seams, and required commands
|
|
59
59
|
|
|
60
|
-
After Claude Code completes and returns results, run the
|
|
60
|
+
After Claude Code completes and returns results, run the Build guard and enter `$matrix-verify`:
|
|
61
61
|
|
|
62
62
|
```powershell
|
|
63
|
-
matrix workflow transition build
|
|
64
63
|
matrix workflow guard build
|
|
65
64
|
matrix workflow transition verify
|
|
66
65
|
```
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: matrix-hotfix
|
|
3
|
-
description: Run a constrained Matrix workflow for a reproducible small bug. Use for a bug fix that has no material architecture, API, schema, or multi-module coordination impact.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Matrix Hotfix
|
|
7
|
-
|
|
8
|
-
Start through `$matrix` with workflow `hotfix
|
|
1
|
+
---
|
|
2
|
+
name: matrix-hotfix
|
|
3
|
+
description: Run a constrained Matrix workflow for a reproducible small bug. Use for a bug fix that has no material architecture, API, schema, or multi-module coordination impact.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Matrix Hotfix
|
|
7
|
+
|
|
8
|
+
Start through `$matrix` with workflow `hotfix` and preserve its frozen Prim or Arch orchestration. Prim diagnoses directly. Arch invokes `diagnosing-bugs` only when an actual failure exists and root cause is not established. Write the compact proposal, continue through the normal Matrix gates, and keep all companion output subordinate to Matrix artifacts and state. If the bug requires architecture change, a new public API, schema work, or broad coordination, use controlled Return and upgrade the work to a full Matrix change.
|
|
@@ -5,29 +5,26 @@ description: Open or resume the Matrix open phase by clarifying a development re
|
|
|
5
5
|
|
|
6
6
|
# Matrix Open
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
For **hotfix/tweak**, use `grilling` directly (without docs) — keep it concise but preserve acceptance criteria.
|
|
8
|
+
Run `matrix workflow inspect`, read the active change and its frozen `orchestration`, then produce `artifacts/proposal.md` containing exactly these substantive sections: `## Goal`, `## Scope`, `## Non-goals`, `## Acceptance`, and `## Risks`.
|
|
9
|
+
|
|
10
|
+
## Prim
|
|
11
|
+
|
|
12
|
+
Use Matrix's own capability to clarify the request and write the proposal.
|
|
13
|
+
|
|
14
|
+
## Arch
|
|
15
|
+
|
|
16
|
+
Invoke `grilling` only when material ambiguity remains or the user asks to stress-test the request. Invoke `domain-modeling` only when domain vocabulary, invariants, or an architectural decision is unclear. Announce the capability and reason before invoking it; selecting Arch already authorizes triggered capabilities.
|
|
17
|
+
|
|
18
|
+
Companion output is evidence for the Matrix proposal. It must not create another workflow, proposal, confirmation state, or phase transition. If a correctly installed capability fails, perform at most one Matrix-owned fallback for that same capability and record the failure and evidence. Installation-integrity failures require `matrix init --with-mattpocock` and are not eligible for fallback.
|
|
20
19
|
|
|
21
20
|
## Process
|
|
22
21
|
|
|
23
|
-
1.
|
|
24
|
-
2. Write
|
|
25
|
-
3. Ask the user to confirm when scope or risk is material
|
|
26
|
-
4. Run the guard
|
|
27
|
-
5. If guard passes, run transition to advance to design phase
|
|
28
|
-
6. **Then enter `$matrix-design` to continue the workflow**
|
|
22
|
+
1. Resolve only ambiguities required by the active workflow.
|
|
23
|
+
2. Write the canonical proposal and synchronize material companion conclusions into it.
|
|
24
|
+
3. Ask the user to confirm when scope or risk is material.
|
|
25
|
+
4. Run the guard and transition, then enter `$matrix-design`.
|
|
29
26
|
|
|
30
27
|
```powershell
|
|
31
|
-
matrix workflow guard open
|
|
32
|
-
matrix workflow transition design
|
|
28
|
+
matrix workflow guard open
|
|
29
|
+
matrix workflow transition design
|
|
33
30
|
```
|
|
@@ -9,6 +9,7 @@ Run the same Matrix state kernel used by the main entry and every phase Skill:
|
|
|
9
9
|
|
|
10
10
|
```powershell
|
|
11
11
|
matrix workflow inspect
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
matrix workflow doctor
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Report the returned change id, workflow, frozen `orchestration`, phase, guard result, `next_skill`, Workflow health, unfinished transactions, available strategies, and exact recovery commands. If Arch integrity fails, identify the affected platform/Skill facts and report `matrix init --with-mattpocock`; do not reinterpret the change as Prim. Both commands are read-only. Do not infer status from conversation history, run `--repair`, or modify state. If the guard is failing, name the missing evidence and direct the user to the current phase Skill.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: matrix-tweak
|
|
3
|
-
description: Run a lightweight Matrix workflow for a bounded small development change. Use for a small request with no schema, public API, architecture, or cross-module coordination impact.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Matrix Tweak
|
|
7
|
-
|
|
8
|
-
Start through `$matrix` with workflow `tweak
|
|
1
|
+
---
|
|
2
|
+
name: matrix-tweak
|
|
3
|
+
description: Run a lightweight Matrix workflow for a bounded small development change. Use for a small request with no schema, public API, architecture, or cross-module coordination impact.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Matrix Tweak
|
|
7
|
+
|
|
8
|
+
Start through `$matrix` with workflow `tweak` and preserve its frozen Prim or Arch orchestration. Keep proposal and design concise, but still define acceptance criteria and test seams. Arch invokes only capabilities whose normal task-fact triggers are present; shortcut workflows do not gain a fixed companion sequence or weaker evidence requirements. Use controlled Return and upgrade to full Matrix when the change crosses module, API, schema, or architecture boundaries.
|
|
@@ -27,30 +27,22 @@ Before starting verification, ensure:
|
|
|
27
27
|
|
|
28
28
|
If these are missing (e.g., Claude Code didn't produce complete evidence), return to `$matrix-build` or ask Claude Code to补充.
|
|
29
29
|
|
|
30
|
-
##
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
2. **Spec axis** — Does the code faithfully implement the originating issue/PRD/spec? Checks for:
|
|
39
|
-
- Missing or partial requirements
|
|
40
|
-
- Scope creep (behavior not asked for)
|
|
41
|
-
- Wrong implementations of required behavior
|
|
42
|
-
|
|
43
|
-
Both axes run as parallel sub-agents and report separately. Record findings under `## Review evidence` in `artifacts/verification.md`.
|
|
44
|
-
|
|
45
|
-
### Optional: `improve-codebase-architecture`
|
|
46
|
-
|
|
47
|
-
After verification passes, if the change touched modules that could be deepened, use `improve-codebase-architecture` to scan for shallow-module opportunities. This is advisory — skip it for simple changes or when time is constrained.
|
|
30
|
+
## Orchestration
|
|
31
|
+
|
|
32
|
+
Run `matrix workflow inspect` and read the frozen mode.
|
|
33
|
+
|
|
34
|
+
- **Prim**: Matrix performs the Standards and Spec review itself.
|
|
35
|
+
- **Arch**: invoke `code-review` to produce both review axes; announce the invocation and reason.
|
|
36
|
+
|
|
37
|
+
Review findings are inputs to Matrix Verify; a companion cannot decide the phase outcome, broaden approved architecture, transition, or archive. Do not invoke post-review architecture wrappers. A correctly installed review capability gets at most one same-capability Matrix fallback; installation-integrity failure stops verification.
|
|
48
38
|
|
|
49
39
|
## Failure Handling
|
|
50
40
|
|
|
51
|
-
If verification or review fails:
|
|
52
|
-
- If the issue is in the implementation
|
|
53
|
-
- If the issue is in the
|
|
41
|
+
If verification or review fails:
|
|
42
|
+
- If the issue is in the implementation, run `matrix workflow return build --reason verification-failed`, then enter `$matrix-build` or ask Claude Code to fix.
|
|
43
|
+
- If the issue is in the acceptance criteria or design, run `matrix workflow return design --reason acceptance-or-design-gap`, then enter `$matrix-design`.
|
|
44
|
+
|
|
45
|
+
Both Return paths rotate the current `verification.md` into revisioned evidence history. Do not copy stale conclusions back into the new current evidence.
|
|
54
46
|
|
|
55
47
|
If documents or public behavior changed, record the required synchronization work before the guard.
|
|
56
48
|
|
|
@@ -59,17 +51,14 @@ If documents or public behavior changed, record the required synchronization wor
|
|
|
59
51
|
1. Check that `artifacts/verification.md` exists with `## Build evidence`
|
|
60
52
|
2. Run the plan's acceptance commands (from `plan.md` `## Validation` section)
|
|
61
53
|
3. Record test output under `## Test evidence`
|
|
62
|
-
4.
|
|
63
|
-
5. Run both axes (Standards + Spec) in parallel
|
|
54
|
+
4. Produce both Standards and Spec review axes through the selected orchestration mode
|
|
64
55
|
6. Record findings under `## Review evidence`
|
|
65
|
-
7.
|
|
66
|
-
8.
|
|
67
|
-
9. If guard passes, run transition to advance to archive phase
|
|
68
|
-
10. **Then enter `$matrix-archive` to continue the workflow**
|
|
56
|
+
7. Run the guard
|
|
57
|
+
8. If it passes, transition to archive and enter `$matrix-archive`
|
|
69
58
|
|
|
70
59
|
```powershell
|
|
71
|
-
matrix workflow guard verify
|
|
72
|
-
matrix workflow transition archive
|
|
60
|
+
matrix workflow guard verify
|
|
61
|
+
matrix workflow transition archive
|
|
73
62
|
```
|
|
74
63
|
|
|
75
64
|
## Evidence Requirements
|
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Rosen
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Rosen
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|