specky-sdd 3.1.0 → 3.2.0
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/CHANGELOG.md +51 -0
- package/README.md +52 -59
- package/SECURITY.md +61 -2
- package/dist/config.d.ts +14 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +90 -18
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +2 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +3 -1
- package/dist/constants.js.map +1 -1
- package/dist/index.js +32 -3
- package/dist/index.js.map +1 -1
- package/dist/services/audit-logger.d.ts +20 -4
- package/dist/services/audit-logger.d.ts.map +1 -1
- package/dist/services/audit-logger.js +91 -12
- package/dist/services/audit-logger.js.map +1 -1
- package/dist/services/rate-limiter.d.ts +33 -0
- package/dist/services/rate-limiter.d.ts.map +1 -0
- package/dist/services/rate-limiter.js +61 -0
- package/dist/services/rate-limiter.js.map +1 -0
- package/dist/services/rbac-engine.d.ts +29 -0
- package/dist/services/rbac-engine.d.ts.map +1 -0
- package/dist/services/rbac-engine.js +85 -0
- package/dist/services/rbac-engine.js.map +1 -0
- package/dist/services/state-machine.d.ts +10 -2
- package/dist/services/state-machine.d.ts.map +1 -1
- package/dist/services/state-machine.js +36 -7
- package/dist/services/state-machine.js.map +1 -1
- package/dist/services/template-engine.js +1 -1
- package/dist/services/template-engine.js.map +1 -1
- package/dist/tools/rbac.d.ts +8 -0
- package/dist/tools/rbac.d.ts.map +1 -0
- package/dist/tools/rbac.js +64 -0
- package/dist/tools/rbac.js.map +1 -0
- package/package.json +3 -6
- package/hooks/auto-checkpoint.md +0 -22
- package/hooks/auto-docs.md +0 -53
- package/hooks/auto-test.md +0 -61
- package/hooks/changelog.md +0 -74
- package/hooks/release-gate.md +0 -82
- package/hooks/security-scan.md +0 -72
- package/hooks/spec-quality.md +0 -55
- package/hooks/spec-sync.md +0 -80
- package/hooks/srp-validator.md +0 -86
- package/hooks/task-tracer.md +0 -63
- package/references/design-patterns.md +0 -434
- package/references/ears-notation.md +0 -605
- package/references/spec-templates.md +0 -936
- /package/{templates → dist/templates}/analysis.md +0 -0
- /package/{templates → dist/templates}/api-docs.md +0 -0
- /package/{templates → dist/templates}/bugfix.md +0 -0
- /package/{templates → dist/templates}/checklist.md +0 -0
- /package/{templates → dist/templates}/compliance.md +0 -0
- /package/{templates → dist/templates}/constitution.md +0 -0
- /package/{templates → dist/templates}/cross-analysis.md +0 -0
- /package/{templates → dist/templates}/data-model.md +0 -0
- /package/{templates → dist/templates}/design.md +0 -0
- /package/{templates → dist/templates}/devcontainer.md +0 -0
- /package/{templates → dist/templates}/dockerfile.md +0 -0
- /package/{templates → dist/templates}/journey.md +0 -0
- /package/{templates → dist/templates}/onboarding.md +0 -0
- /package/{templates → dist/templates}/research.md +0 -0
- /package/{templates → dist/templates}/runbook.md +0 -0
- /package/{templates → dist/templates}/specification.md +0 -0
- /package/{templates → dist/templates}/sync-report.md +0 -0
- /package/{templates → dist/templates}/tasks.md +0 -0
- /package/{templates → dist/templates}/terraform.md +0 -0
- /package/{templates → dist/templates}/test-stub.md +0 -0
- /package/{templates → dist/templates}/user-stories.md +0 -0
- /package/{templates → dist/templates}/verification.md +0 -0
- /package/{templates → dist/templates}/work-items.md +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,57 @@ All notable changes to Specky are documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [3.2.0] - 2026-04-12
|
|
9
|
+
|
|
10
|
+
### Enterprise Security Hardening
|
|
11
|
+
|
|
12
|
+
#### Rate Limiting (opt-in)
|
|
13
|
+
- **`RateLimiter` service**: Token bucket algorithm — no external deps, pure TypeScript
|
|
14
|
+
- HTTP transport now supports `rate_limit.enabled: true` in `.specky/config.yml`
|
|
15
|
+
- Config: `max_requests_per_minute` (default 60), `burst` (default 10)
|
|
16
|
+
- Returns HTTP 429 with `Retry-After` header when limit exceeded
|
|
17
|
+
- stdio mode bypasses rate limiting by design (single-session, process-isolated)
|
|
18
|
+
|
|
19
|
+
#### State File Integrity
|
|
20
|
+
- **`StateMachine.saveState()`** now writes HMAC-SHA256 signature to `.sdd-state.json.sig`
|
|
21
|
+
- **`StateMachine.loadState()`** verifies signature on every load — tamper warning to stderr on mismatch
|
|
22
|
+
- Key: `SDD_STATE_KEY` env var, or derived from workspace path using SHA-256
|
|
23
|
+
- Missing `.sig` treated as unverified (no warning) — backward-compatible with pre-v3.2.0 state files
|
|
24
|
+
|
|
25
|
+
#### Enhanced Audit Logger
|
|
26
|
+
- **Hash-chaining**: every `AuditEntry` includes `previous_hash` (SHA-256 of previous line, seed `specky-audit-v1`)
|
|
27
|
+
- **Log rotation**: rotates `.audit.jsonl` → `.audit.jsonl.1` when `audit.max_file_size_mb` exceeded (default 10 MB)
|
|
28
|
+
- **Syslog export**: RFC 5424 format written to `.audit.syslog` when `audit.export_format: syslog`
|
|
29
|
+
- **OTLP stub**: `audit.export_format: otlp` logs placeholder — implementation in next release
|
|
30
|
+
|
|
31
|
+
#### RBAC Foundation (opt-in)
|
|
32
|
+
- **`RbacEngine` service**: `viewer` / `contributor` / `admin` roles; disabled by default
|
|
33
|
+
- **`sdd_check_access`** (NEW tool #57): Returns active role, per-tool access check, full role summary
|
|
34
|
+
- Role enforcement via `SDD_ROLE` env var or `rbac.default_role` in config
|
|
35
|
+
- Viewer: read-only tools only; Contributor: all except `sdd_create_pr`; Admin: all 57 tools
|
|
36
|
+
- Config: `rbac.enabled: true`, `rbac.default_role: contributor`
|
|
37
|
+
|
|
38
|
+
#### Config Extension
|
|
39
|
+
- `.specky/config.yml` now supports nested blocks: `rate_limit:`, `audit:`, `rbac:`
|
|
40
|
+
- Parser upgraded to handle indented YAML child keys (dot-notation flattening)
|
|
41
|
+
- All new options opt-in with safe defaults — existing behavior unchanged from v3.1.0
|
|
42
|
+
|
|
43
|
+
### NPM-as-Default Migration
|
|
44
|
+
- Global install (`npm install -g specky-sdd`) is now the recommended installation method
|
|
45
|
+
- npx retained as an "alternative" option for per-workspace and convenience use
|
|
46
|
+
- All docs updated: README.md, GETTING-STARTED.md, SYSTEM-DESIGN.md, ONBOARDING.md, SECURITY.md
|
|
47
|
+
- New "Enterprise Installation Methods" section in GETTING-STARTED.md
|
|
48
|
+
- New "NPX Supply Chain Risk" + "MCP Security Framework Compliance" sections in SECURITY.md
|
|
49
|
+
|
|
50
|
+
### Security Documentation
|
|
51
|
+
- **CoSAI MCP Security White Paper** — full T-01 through T-12 threat coverage table in SECURITY.md
|
|
52
|
+
- **OWASP MCP Top 10** — M1 through M10 coverage table in SECURITY.md
|
|
53
|
+
|
|
54
|
+
### Tests
|
|
55
|
+
- 561 tests (+54): `rate-limiter.test.ts` (11), `state-integrity.test.ts` (8), `audit-enhanced.test.ts` (12), `rbac-engine.test.ts` (15), plus existing suite maintained at 100%
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
8
59
|
## [3.1.0] - 2026-04-12
|
|
9
60
|
|
|
10
61
|
### Intelligence Layer (Specs 003–007)
|
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
</p>
|
|
22
22
|
|
|
23
23
|
<p>
|
|
24
|
-
<a href="https://paulasilvatech.github.io/specky/">Website</a> ·
|
|
24
|
+
<a href="https://paulasilvatech.github.io/specky-site/">Website</a> ·
|
|
25
25
|
<a href="GETTING-STARTED.md">Getting Started</a> ·
|
|
26
26
|
<a href="https://www.npmjs.com/package/specky-sdd">npm</a> ·
|
|
27
27
|
<a href="SECURITY.md">Security</a>
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
| | [Input Methods](#input-methods-6-ways-to-start) | 6 ways to feed Specky |
|
|
42
42
|
| | [Three Project Types](#three-project-types-one-pipeline) | Greenfield, Brownfield, Modernization |
|
|
43
43
|
| **Pipeline** | [Pipeline and LGTM Gates](#pipeline-and-lgtm-gates) | 10 phases with human review gates |
|
|
44
|
-
| | [All 56 Tools](#all-
|
|
44
|
+
| | [All 56 Tools](#all-56-tools) | Complete tool reference by category |
|
|
45
45
|
| | [EARS Notation](#ears-notation) | The 6 requirement patterns |
|
|
46
46
|
| **Enterprise** | [Compliance Frameworks](#compliance-frameworks) | HIPAA, SOC2, GDPR, PCI-DSS, ISO 27001 |
|
|
47
47
|
| | [Enterprise Ready](#enterprise-ready) | Security, audit trail, quality gates |
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
|
|
52
52
|
## What is Specky?
|
|
53
53
|
|
|
54
|
-
Specky is an open-source **MCP server** that turns the [Spec-Kit](https://github.com/paulasilvatech/spec-kit) SDD methodology into a **programmable enforcement engine** with
|
|
54
|
+
Specky is an open-source **MCP server** that turns the [Spec-Kit](https://github.com/paulasilvatech/spec-kit) SDD methodology into a **programmable enforcement engine** with 56 validated tools. It provides a deterministic pipeline from **any input** (meeting transcripts, documents, Figma designs, or natural language prompts) through specifications, architecture, infrastructure as code, implementation, and deployment.
|
|
55
55
|
|
|
56
56
|
**Spec-Kit** provides the methodology: EARS notation, gated pipeline phases, constitution model, quality patterns. **Specky** reimplements all of it as MCP tools and adds programmatic enforcement: a state machine that blocks phase-skipping, an EARS validator, cross-artifact analysis, compliance engines, test generation, and MCP-to-MCP routing.
|
|
57
57
|
|
|
@@ -132,51 +132,9 @@ Specky adds a **deterministic engine** between your intent and your code:
|
|
|
132
132
|
### Step 2: Install
|
|
133
133
|
|
|
134
134
|
<details open>
|
|
135
|
-
<summary><strong>
|
|
135
|
+
<summary><strong>Global (recommended): Install once, use everywhere</strong></summary>
|
|
136
136
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
**For VS Code with GitHub Copilot** create `.vscode/mcp.json` in the repo root:
|
|
140
|
-
|
|
141
|
-
```json
|
|
142
|
-
{
|
|
143
|
-
"servers": {
|
|
144
|
-
"specky": {
|
|
145
|
-
"command": "npx",
|
|
146
|
-
"args": ["-y", "specky-sdd"],
|
|
147
|
-
"env": {
|
|
148
|
-
"SDD_WORKSPACE": "${workspaceFolder}"
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
**For Claude Code** run this once inside the repo:
|
|
156
|
-
|
|
157
|
-
```bash
|
|
158
|
-
claude mcp add specky -- npx -y specky-sdd
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
**For Cursor** add to MCP settings (Settings > MCP Servers):
|
|
162
|
-
|
|
163
|
-
```json
|
|
164
|
-
{
|
|
165
|
-
"specky": {
|
|
166
|
-
"command": "npx",
|
|
167
|
-
"args": ["-y", "specky-sdd"]
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
> **Tip:** Commit the config file to Git so every team member gets Specky automatically when they clone the repo.
|
|
173
|
-
|
|
174
|
-
</details>
|
|
175
|
-
|
|
176
|
-
<details>
|
|
177
|
-
<summary><strong>Global: Global (once, all repos)</strong></summary>
|
|
178
|
-
|
|
179
|
-
Install globally and Specky is available everywhere on your machine:
|
|
137
|
+
Install globally so `specky-sdd` is always available — no re-download on every run:
|
|
180
138
|
|
|
181
139
|
```bash
|
|
182
140
|
npm install -g specky-sdd
|
|
@@ -222,6 +180,33 @@ claude mcp add specky -- specky-sdd
|
|
|
222
180
|
|
|
223
181
|
</details>
|
|
224
182
|
|
|
183
|
+
<details>
|
|
184
|
+
<summary><strong>Per Workspace (alternative): npx, no global install</strong></summary>
|
|
185
|
+
|
|
186
|
+
Add a config file to the repo so teammates get Specky automatically on clone — no global install needed.
|
|
187
|
+
|
|
188
|
+
**VS Code** (`.vscode/mcp.json`):
|
|
189
|
+
```json
|
|
190
|
+
{
|
|
191
|
+
"servers": {
|
|
192
|
+
"specky": {
|
|
193
|
+
"command": "npx",
|
|
194
|
+
"args": ["-y", "specky-sdd"],
|
|
195
|
+
"env": { "SDD_WORKSPACE": "${workspaceFolder}" }
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**Claude Code**:
|
|
202
|
+
```bash
|
|
203
|
+
claude mcp add specky -- npx -y specky-sdd
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
> Commit `.vscode/mcp.json` to Git so every team member gets Specky automatically.
|
|
207
|
+
|
|
208
|
+
</details>
|
|
209
|
+
|
|
225
210
|
<details>
|
|
226
211
|
<summary><strong>Docker: Docker (HTTP mode, no Node.js required)</strong></summary>
|
|
227
212
|
|
|
@@ -255,7 +240,7 @@ Open your AI IDE and type:
|
|
|
255
240
|
> What tools does Specky have?
|
|
256
241
|
```
|
|
257
242
|
|
|
258
|
-
The AI should list the
|
|
243
|
+
The AI should list the 56 SDD tools. If you see them, Specky is working.
|
|
259
244
|
|
|
260
245
|
### Try It Now
|
|
261
246
|
|
|
@@ -541,7 +526,7 @@ The AI calls:
|
|
|
541
526
|
|
|
542
527
|
The AI calls `sdd_export_work_items` + `sdd_create_pr` → generates work item payloads and PR body with full spec traceability.
|
|
543
528
|
|
|
544
|
-
> **Next:** **Next:** Learn about [EARS notation](#ears-notation) to understand the requirement patterns, or see [All 56 Tools](#all-
|
|
529
|
+
> **Next:** **Next:** Learn about [EARS notation](#ears-notation) to understand the requirement patterns, or see [All 56 Tools](#all-56-tools) for a complete reference.
|
|
545
530
|
|
|
546
531
|
|
|
547
532
|
## Brownfield Project: Add Features to Existing Code
|
|
@@ -883,13 +868,13 @@ Together they form the **SDD layer** of the GitHub + Microsoft enterprise platfo
|
|
|
883
868
|
{
|
|
884
869
|
"servers": {
|
|
885
870
|
"specky": {
|
|
886
|
-
"command": "
|
|
887
|
-
"args": ["-y", "specky-sdd"]
|
|
871
|
+
"command": "specky-sdd"
|
|
888
872
|
}
|
|
889
873
|
}
|
|
890
874
|
}
|
|
891
875
|
```
|
|
892
876
|
|
|
877
|
+
> **Note:** This example assumes `specky-sdd` is installed globally (`npm install -g specky-sdd`). See the [Installation](#installation) section for per-workspace and Docker alternatives.
|
|
893
878
|
|
|
894
879
|
## Project Configuration
|
|
895
880
|
|
|
@@ -1057,7 +1042,7 @@ Every pipeline phase produces a traceable artifact in `.specs/NNN-feature/`. The
|
|
|
1057
1042
|
- **EARS Validator** — programmatic requirement quality enforcement
|
|
1058
1043
|
- **Cross-Artifact Analysis** — automatic alignment checking between spec, design, and tasks
|
|
1059
1044
|
- **Phase Enforcement** — state machine blocks phase-skipping; required files gate advancement
|
|
1060
|
-
- **
|
|
1045
|
+
- **507 unit tests** — CI enforces thresholds on every push
|
|
1061
1046
|
|
|
1062
1047
|
|
|
1063
1048
|
## Development
|
|
@@ -1071,7 +1056,7 @@ npm install
|
|
|
1071
1056
|
# Build
|
|
1072
1057
|
npm run build
|
|
1073
1058
|
|
|
1074
|
-
# Run tests (
|
|
1059
|
+
# Run tests (507 tests)
|
|
1075
1060
|
npm test
|
|
1076
1061
|
|
|
1077
1062
|
# Run tests with coverage report
|
|
@@ -1092,7 +1077,7 @@ curl http://localhost:3200/health
|
|
|
1092
1077
|
|
|
1093
1078
|
## Roadmap
|
|
1094
1079
|
|
|
1095
|
-
### v3.
|
|
1080
|
+
### v3.1 (current)
|
|
1096
1081
|
|
|
1097
1082
|
| Capability | Status |
|
|
1098
1083
|
|------------|--------|
|
|
@@ -1105,15 +1090,22 @@ curl http://localhost:3200/health
|
|
|
1105
1090
|
| Turnkey spec from natural language (`sdd_turnkey_spec`) | Stable |
|
|
1106
1091
|
| Property-based testing with fast-check and Hypothesis (`sdd_generate_pbt`) | Stable |
|
|
1107
1092
|
| Checkpoint/restore for spec artifacts | Stable |
|
|
1108
|
-
|
|
|
1093
|
+
| Intelligence layer: model routing hints on all tools | Stable |
|
|
1094
|
+
| Context tiering: Hot/Domain/Cold with token savings | Stable |
|
|
1095
|
+
| Cognitive debt metrics at LGTM gates | Stable |
|
|
1096
|
+
| Test traceability: REQ-ID → test coverage mapping | Stable |
|
|
1097
|
+
| Intent drift detection with amendment suggestions | Stable |
|
|
1098
|
+
| 10 automation hooks (2 blocking) | Stable |
|
|
1109
1099
|
| 12 Claude Code commands + 5 Copilot agents | Stable |
|
|
1110
1100
|
| 6 compliance frameworks (HIPAA, SOC2, GDPR, PCI-DSS, ISO 27001) | Stable |
|
|
1111
1101
|
| 6 input types (transcript, PDF, DOCX, Figma, codebase, raw text) | Stable |
|
|
1112
1102
|
| Test generation for 6 frameworks (vitest, jest, playwright, pytest, junit, xunit) | Stable |
|
|
1113
1103
|
| MCP-to-MCP routing (GitHub, Azure DevOps, Jira, Terraform, Figma, Docker) | Stable |
|
|
1114
|
-
|
|
|
1104
|
+
| SBOM + cosign signing on Docker image | Stable |
|
|
1105
|
+
| JSONL audit logger (optional) | Stable |
|
|
1106
|
+
| 507 unit tests | Stable |
|
|
1115
1107
|
|
|
1116
|
-
### v3.
|
|
1108
|
+
### v3.2+ (planned)
|
|
1117
1109
|
|
|
1118
1110
|
| Feature | Description |
|
|
1119
1111
|
|---------|-------------|
|
|
@@ -1122,9 +1114,10 @@ curl http://localhost:3200/health
|
|
|
1122
1114
|
| Internationalization | Spec templates in PT-BR, ES, FR, DE, JA |
|
|
1123
1115
|
| Automated shrinking | fast-check/Hypothesis shrinking feedback into spec refinement |
|
|
1124
1116
|
| RBAC | Role-based access control for phase advancement |
|
|
1125
|
-
|
|
|
1117
|
+
| Centralized audit log | SIEM-integrated tamper-evident audit trail |
|
|
1126
1118
|
| Multi-tenant | Isolated workspaces for multiple teams |
|
|
1127
|
-
|
|
|
1119
|
+
| Rate limiting | Request throttling for HTTP transport |
|
|
1120
|
+
| SSO / SAML | Federated identity for enterprise auth |
|
|
1128
1121
|
|
|
1129
1122
|
Have a feature request? [Open an issue](https://github.com/paulasilvatech/specky/issues).
|
|
1130
1123
|
|
package/SECURITY.md
CHANGED
|
@@ -26,7 +26,7 @@ If you discover a security vulnerability in Specky, please report it responsibly
|
|
|
26
26
|
|
|
27
27
|
### Input Validation
|
|
28
28
|
|
|
29
|
-
All
|
|
29
|
+
All 56 MCP tool inputs are validated using [Zod](https://zod.dev/) schemas with `.strict()` mode. No unknown fields are accepted. This prevents injection of unexpected parameters through the MCP JSON-RPC interface.
|
|
30
30
|
|
|
31
31
|
```
|
|
32
32
|
AI Client → JSON-RPC → Zod .strict() validation → Service layer
|
|
@@ -116,7 +116,7 @@ When using HTTP transport mode (`--http`), bind to `localhost` only. Do not expo
|
|
|
116
116
|
|
|
117
117
|
| Practice | Details |
|
|
118
118
|
|----------|---------|
|
|
119
|
-
| **Use stdio mode by default** | `
|
|
119
|
+
| **Use stdio mode by default** | `specky-sdd` (global install) — no network exposure, process-level isolation |
|
|
120
120
|
| **Never expose HTTP mode publicly** | `--http` mode has no authentication or TLS. If you need remote access, place behind a reverse proxy (nginx, Caddy, Traefik) with TLS and authentication |
|
|
121
121
|
| **Protect `.specs/` directory** | Contains architecture details, API contracts, security models. Add to `.gitignore` for sensitive projects, or use a private repository |
|
|
122
122
|
| **Protect `.checkpoints/`** | Contains full copies of all spec artifacts. Treat like source code |
|
|
@@ -183,3 +183,62 @@ These are **architectural guarantees**, not configuration options:
|
|
|
183
183
|
- **Never logs sensitive data** — logs go to stderr, contain only operational messages
|
|
184
184
|
|
|
185
185
|
See [docs/SYSTEM-DESIGN.md](docs/SYSTEM-DESIGN.md) for the complete security architecture with threat model.
|
|
186
|
+
|
|
187
|
+
## NPX Supply Chain Risk
|
|
188
|
+
|
|
189
|
+
Running `npx specky-sdd` without a pinned version downloads the latest package from npm on every invocation. This creates a supply-chain exposure: a compromised npm registry entry or a typosquat could execute malicious code in your environment before Specky even starts.
|
|
190
|
+
|
|
191
|
+
**Recommended mitigations:**
|
|
192
|
+
|
|
193
|
+
| Approach | Risk reduction | Notes |
|
|
194
|
+
|----------|---------------|-------|
|
|
195
|
+
| `npm install -g specky-sdd` | **High** — fetches once, runs offline after | Recommended default |
|
|
196
|
+
| `npm install -g specky-sdd@3.2.0` | **Higher** — version-pinned, no silent upgrades | Best for reproducible environments |
|
|
197
|
+
| Docker (`ghcr.io/paulasilvatech/specky:3.2.0`) | **Highest** — immutable image by digest | Best for CI/CD and air-gapped |
|
|
198
|
+
| `npx specky-sdd` (unversioned) | **Baseline** — re-downloads on each invocation | Avoid in production pipelines |
|
|
199
|
+
|
|
200
|
+
**Workspace isolation pattern** (CI/CD):
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# Install into a local vendor directory — no global write permissions needed
|
|
204
|
+
npm install specky-sdd@3.2.0 --prefix ./vendor --ignore-scripts
|
|
205
|
+
./vendor/node_modules/.bin/specky-sdd
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
The `--ignore-scripts` flag prevents npm lifecycle scripts from running during install, which is a common supply-chain attack vector.
|
|
209
|
+
|
|
210
|
+
## MCP Security Framework Compliance
|
|
211
|
+
|
|
212
|
+
### CoSAI MCP Security White Paper — Threat Category Coverage
|
|
213
|
+
|
|
214
|
+
Specky addresses the 12 threat categories from the CoSAI MCP Security White Paper:
|
|
215
|
+
|
|
216
|
+
| ID | Threat Category | Specky Mitigation |
|
|
217
|
+
|----|----------------|-------------------|
|
|
218
|
+
| T-01 | Tool Poisoning | Zod `.strict()` on all 57 tool inputs — no unknown fields accepted |
|
|
219
|
+
| T-02 | Prompt Injection via Tool Results | No user-controlled data interpolated into tool responses |
|
|
220
|
+
| T-03 | Excessive Tool Permissions | Thin Tools pattern — each tool does exactly one operation |
|
|
221
|
+
| T-04 | Insecure Data Storage | FileManager enforces workspace boundary; no secrets in files |
|
|
222
|
+
| T-05 | Insufficient Input Validation | All inputs validated with Zod schemas before reaching service layer |
|
|
223
|
+
| T-06 | Uncontrolled Resource Consumption | Rate limiter (opt-in) for HTTP mode; stdio is single-session |
|
|
224
|
+
| T-07 | Broken Access Control | RBAC engine (opt-in) — viewer/contributor/admin roles; path sanitization |
|
|
225
|
+
| T-08 | Supply Chain Compromise | 2 runtime deps only; Dependabot enabled; global install recommended |
|
|
226
|
+
| T-09 | Credential Leakage | No secrets in logs (stderr only); no credentials in spec artifacts |
|
|
227
|
+
| T-10 | Insecure Communication | stdio mode has zero network exposure; HTTP mode binds to localhost |
|
|
228
|
+
| T-11 | State Manipulation | HMAC-SHA256 signature on `.sdd-state.json`; tamper detection on load |
|
|
229
|
+
| T-12 | Audit Trail Integrity | Hash-chained JSONL audit log; rotation; syslog/OTLP export (opt-in) |
|
|
230
|
+
|
|
231
|
+
### OWASP MCP Top 10 Coverage
|
|
232
|
+
|
|
233
|
+
| # | OWASP MCP Risk | Specky Mitigation |
|
|
234
|
+
|---|---------------|-------------------|
|
|
235
|
+
| M1 | Prompt Injection | No dynamic content in tool descriptions; outputs are structured JSON |
|
|
236
|
+
| M2 | Insecure Tool Design | Thin Tools / Fat Services — tools are pure input/output wrappers |
|
|
237
|
+
| M3 | Excessive Agency | No shell execution, no outbound network, no code eval |
|
|
238
|
+
| M4 | Insufficient Authentication | HTTP mode delegates to reverse proxy; stdio is process-isolated |
|
|
239
|
+
| M5 | Broken Object-Level Authorization | RBAC engine enforces per-tool access by role (opt-in) |
|
|
240
|
+
| M6 | Sensitive Data Exposure | FileManager path boundary; no credential logging; workspace-scoped I/O |
|
|
241
|
+
| M7 | Insecure Plugin Composition | Fixed tool set at startup — no dynamic plugin loading |
|
|
242
|
+
| M8 | Improper Error Handling | All service errors caught; tools return structured error responses |
|
|
243
|
+
| M9 | Insufficient Logging | Hash-chained audit trail; syslog export available |
|
|
244
|
+
| M10 | Vulnerable Dependencies | 2 runtime deps; `npm audit` in CI; Dependabot on GitHub |
|
package/dist/config.d.ts
CHANGED
|
@@ -3,10 +3,23 @@ export interface SpeckyConfig {
|
|
|
3
3
|
default_framework?: string;
|
|
4
4
|
compliance_frameworks?: string[];
|
|
5
5
|
audit_enabled?: boolean;
|
|
6
|
+
rate_limit?: {
|
|
7
|
+
enabled?: boolean;
|
|
8
|
+
max_requests_per_minute?: number;
|
|
9
|
+
burst?: number;
|
|
10
|
+
};
|
|
11
|
+
audit?: {
|
|
12
|
+
export_format?: "jsonl" | "syslog" | "otlp";
|
|
13
|
+
max_file_size_mb?: number;
|
|
14
|
+
};
|
|
15
|
+
rbac?: {
|
|
16
|
+
enabled?: boolean;
|
|
17
|
+
default_role?: "viewer" | "contributor" | "admin";
|
|
18
|
+
};
|
|
6
19
|
}
|
|
7
20
|
/**
|
|
8
21
|
* Load `.specky/config.yml` from workspace root. Returns defaults if not found.
|
|
9
|
-
*
|
|
22
|
+
* Handles both flat keys (key: value) and nested blocks (key:\n sub: value).
|
|
10
23
|
*/
|
|
11
24
|
export declare function loadConfig(workspaceRoot: string): Required<SpeckyConfig>;
|
|
12
25
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,YAAY;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,YAAY;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,aAAa,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;QAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,YAAY,CAAC,EAAE,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC;KACnD,CAAC;CACH;AAYD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,CA6DxE"}
|
package/dist/config.js
CHANGED
|
@@ -9,57 +9,129 @@ const DEFAULTS = {
|
|
|
9
9
|
default_framework: "vitest",
|
|
10
10
|
compliance_frameworks: ["general"],
|
|
11
11
|
audit_enabled: false,
|
|
12
|
+
rate_limit: { enabled: false, max_requests_per_minute: 60, burst: 10 },
|
|
13
|
+
audit: { export_format: "jsonl", max_file_size_mb: 10 },
|
|
14
|
+
rbac: { enabled: false, default_role: "contributor" },
|
|
12
15
|
};
|
|
13
16
|
/**
|
|
14
17
|
* Load `.specky/config.yml` from workspace root. Returns defaults if not found.
|
|
15
|
-
*
|
|
18
|
+
* Handles both flat keys (key: value) and nested blocks (key:\n sub: value).
|
|
16
19
|
*/
|
|
17
20
|
export function loadConfig(workspaceRoot) {
|
|
18
21
|
const configPath = join(workspaceRoot, ".specky", "config.yml");
|
|
19
22
|
try {
|
|
20
23
|
const raw = readFileSync(configPath, "utf-8");
|
|
21
|
-
const
|
|
24
|
+
const flat = parseSimpleYaml(raw);
|
|
22
25
|
return {
|
|
23
|
-
templates_path: typeof
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
templates_path: typeof flat["templates_path"] === "string"
|
|
27
|
+
? flat["templates_path"]
|
|
28
|
+
: DEFAULTS.templates_path,
|
|
29
|
+
default_framework: typeof flat["default_framework"] === "string"
|
|
30
|
+
? flat["default_framework"]
|
|
31
|
+
: DEFAULTS.default_framework,
|
|
32
|
+
compliance_frameworks: parseArrayValue(flat["compliance_frameworks"]) ||
|
|
33
|
+
DEFAULTS.compliance_frameworks,
|
|
34
|
+
audit_enabled: flat["audit_enabled"] === "true" || flat["audit_enabled"] === true
|
|
35
|
+
? true
|
|
36
|
+
: DEFAULTS.audit_enabled,
|
|
37
|
+
rate_limit: {
|
|
38
|
+
enabled: flat["rate_limit.enabled"] === "true" ||
|
|
39
|
+
flat["rate_limit.enabled"] === true
|
|
40
|
+
? true
|
|
41
|
+
: DEFAULTS.rate_limit.enabled,
|
|
42
|
+
max_requests_per_minute: typeof flat["rate_limit.max_requests_per_minute"] === "string"
|
|
43
|
+
? parseInt(flat["rate_limit.max_requests_per_minute"], 10) ||
|
|
44
|
+
DEFAULTS.rate_limit.max_requests_per_minute
|
|
45
|
+
: DEFAULTS.rate_limit.max_requests_per_minute,
|
|
46
|
+
burst: typeof flat["rate_limit.burst"] === "string"
|
|
47
|
+
? parseInt(flat["rate_limit.burst"], 10) ||
|
|
48
|
+
DEFAULTS.rate_limit.burst
|
|
49
|
+
: DEFAULTS.rate_limit.burst,
|
|
50
|
+
},
|
|
51
|
+
audit: {
|
|
52
|
+
export_format: isValidExportFormat(flat["audit.export_format"])
|
|
53
|
+
? flat["audit.export_format"]
|
|
54
|
+
: DEFAULTS.audit.export_format,
|
|
55
|
+
max_file_size_mb: typeof flat["audit.max_file_size_mb"] === "string"
|
|
56
|
+
? parseInt(flat["audit.max_file_size_mb"], 10) ||
|
|
57
|
+
DEFAULTS.audit.max_file_size_mb
|
|
58
|
+
: DEFAULTS.audit.max_file_size_mb,
|
|
59
|
+
},
|
|
60
|
+
rbac: {
|
|
61
|
+
enabled: flat["rbac.enabled"] === "true" || flat["rbac.enabled"] === true
|
|
62
|
+
? true
|
|
63
|
+
: DEFAULTS.rbac.enabled,
|
|
64
|
+
default_role: isValidRole(flat["rbac.default_role"])
|
|
65
|
+
? flat["rbac.default_role"]
|
|
66
|
+
: DEFAULTS.rbac.default_role,
|
|
67
|
+
},
|
|
27
68
|
};
|
|
28
69
|
}
|
|
29
70
|
catch {
|
|
30
71
|
return { ...DEFAULTS };
|
|
31
72
|
}
|
|
32
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Parse simple YAML — flat key:value pairs plus indented blocks.
|
|
76
|
+
* Indented child keys are flattened as "parent.child" dot-notation keys.
|
|
77
|
+
*/
|
|
33
78
|
function parseSimpleYaml(raw) {
|
|
34
79
|
const result = {};
|
|
80
|
+
let currentParent = "";
|
|
35
81
|
for (const line of raw.split("\n")) {
|
|
36
|
-
|
|
37
|
-
if (!trimmed || trimmed.startsWith("#"))
|
|
82
|
+
if (!line.trim() || line.trim().startsWith("#"))
|
|
38
83
|
continue;
|
|
84
|
+
const indent = line.length - line.trimStart().length;
|
|
85
|
+
const trimmed = line.trim();
|
|
39
86
|
const colonIdx = trimmed.indexOf(":");
|
|
40
87
|
if (colonIdx === -1)
|
|
41
88
|
continue;
|
|
42
89
|
const key = trimmed.slice(0, colonIdx).trim();
|
|
43
90
|
const value = trimmed.slice(colonIdx + 1).trim();
|
|
44
|
-
if (
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
91
|
+
if (indent === 0) {
|
|
92
|
+
currentParent = key;
|
|
93
|
+
if (value) {
|
|
94
|
+
// Top-level key with value
|
|
95
|
+
if (value === "true")
|
|
96
|
+
result[key] = true;
|
|
97
|
+
else if (value === "false")
|
|
98
|
+
result[key] = false;
|
|
99
|
+
else
|
|
100
|
+
result[key] = value;
|
|
101
|
+
}
|
|
102
|
+
// else: this is a parent block key with no value — children follow
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
// Child key — store as "parent.child"
|
|
106
|
+
const flatKey = `${currentParent}.${key}`;
|
|
107
|
+
if (value === "true")
|
|
108
|
+
result[flatKey] = true;
|
|
109
|
+
else if (value === "false")
|
|
110
|
+
result[flatKey] = false;
|
|
111
|
+
else
|
|
112
|
+
result[flatKey] = value;
|
|
113
|
+
}
|
|
50
114
|
}
|
|
51
115
|
return result;
|
|
52
116
|
}
|
|
117
|
+
function isValidExportFormat(v) {
|
|
118
|
+
return v === "jsonl" || v === "syslog" || v === "otlp";
|
|
119
|
+
}
|
|
120
|
+
function isValidRole(v) {
|
|
121
|
+
return v === "viewer" || v === "contributor" || v === "admin";
|
|
122
|
+
}
|
|
53
123
|
function parseArrayValue(value) {
|
|
54
124
|
if (typeof value !== "string" || !value)
|
|
55
125
|
return null;
|
|
56
|
-
// Handle inline YAML array: [item1, item2]
|
|
57
126
|
if (value.startsWith("[") && value.endsWith("]")) {
|
|
58
|
-
return value
|
|
127
|
+
return value
|
|
128
|
+
.slice(1, -1)
|
|
129
|
+
.split(",")
|
|
130
|
+
.map((s) => s.trim().replace(/"/g, ""))
|
|
131
|
+
.filter(Boolean);
|
|
59
132
|
}
|
|
60
|
-
// Handle comma-separated
|
|
61
133
|
if (value.includes(",")) {
|
|
62
|
-
return value.split(",").map(s => s.trim()).filter(Boolean);
|
|
134
|
+
return value.split(",").map((s) => s.trim()).filter(Boolean);
|
|
63
135
|
}
|
|
64
136
|
return [value];
|
|
65
137
|
}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export declare const VERSION: string;
|
|
|
6
6
|
/** Server name for MCP handshake */
|
|
7
7
|
export declare const SERVER_NAME = "specky";
|
|
8
8
|
/** Total tool count for ecosystem check */
|
|
9
|
-
export declare const TOTAL_TOOLS =
|
|
9
|
+
export declare const TOTAL_TOOLS = 57;
|
|
10
10
|
/**
|
|
11
11
|
* MCP Ecosystem — Recommended external MCP servers.
|
|
12
12
|
* Each entry describes a server that enhances Specky's capabilities.
|
|
@@ -195,6 +195,7 @@ export declare const TOOL_NAMES: {
|
|
|
195
195
|
readonly CHECK_ECOSYSTEM: "sdd_check_ecosystem";
|
|
196
196
|
readonly MODEL_ROUTING: "sdd_model_routing";
|
|
197
197
|
readonly CONTEXT_STATUS: "sdd_context_status";
|
|
198
|
+
readonly CHECK_ACCESS: "sdd_check_access";
|
|
198
199
|
};
|
|
199
200
|
export declare const TOOL_IMPORT_DOCUMENT = "sdd_import_document";
|
|
200
201
|
export declare const TOOL_BATCH_IMPORT = "sdd_batch_import";
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,eAAO,MAAM,OAAO,QAAe,CAAC;AAEpC,oCAAoC;AACpC,eAAO,MAAM,WAAW,WAAW,CAAC;AAEpC,2CAA2C;AAC3C,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqGhB,CAAC;AAEX,4DAA4D;AAC5D,eAAO,MAAM,eAAe,QAAS,CAAC;AAEtC,+CAA+C;AAC/C,eAAO,MAAM,gBAAgB,WAAW,CAAC;AAEzC,sBAAsB;AACtB,eAAO,MAAM,UAAU,oBAAoB,CAAC;AAE5C,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,8CAA8C;AAC9C,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,iCAAiC;AACjC,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,qDAAqD;AACrD,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAUrD,CAAC;AAEF;;;GAGG;AACH,oBAAY,KAAK;IACf,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,gDAAgD;AAChD,eAAO,MAAM,WAAW,EAAE,SAAS,KAAK,EAWvC,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAWjE,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.js
CHANGED
|
@@ -10,7 +10,7 @@ export const VERSION = _pkg.version;
|
|
|
10
10
|
/** Server name for MCP handshake */
|
|
11
11
|
export const SERVER_NAME = "specky";
|
|
12
12
|
/** Total tool count for ecosystem check */
|
|
13
|
-
export const TOTAL_TOOLS =
|
|
13
|
+
export const TOTAL_TOOLS = 57;
|
|
14
14
|
/**
|
|
15
15
|
* MCP Ecosystem — Recommended external MCP servers.
|
|
16
16
|
* Each entry describes a server that enhances Specky's capabilities.
|
|
@@ -262,6 +262,8 @@ export const TOOL_NAMES = {
|
|
|
262
262
|
MODEL_ROUTING: "sdd_model_routing",
|
|
263
263
|
// Context Tiering
|
|
264
264
|
CONTEXT_STATUS: "sdd_context_status",
|
|
265
|
+
// RBAC
|
|
266
|
+
CHECK_ACCESS: "sdd_check_access",
|
|
265
267
|
};
|
|
266
268
|
// Input & Conversion
|
|
267
269
|
export const TOOL_IMPORT_DOCUMENT = "sdd_import_document";
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mEAAmE;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAiB,CAAwB,CAAC;AAChE,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAEpC,oCAAoC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AAEpC,2CAA2C;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAE9B;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,iLAAiL;QAC1L,eAAe,EAAE,kHAAkH;QACnI,YAAY,EAAE,wFAAwF;QACtG,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,aAAsB;QAC9B,QAAQ,EAAE,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,mBAAmB,CAAC;KAC3E;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,wKAAwK;QACjL,eAAe,EAAE,4GAA4G;QAC7H,YAAY,EAAE,wFAAwF;QACtG,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,aAAsB;QAC9B,QAAQ,EAAE,CAAC,uBAAuB,EAAE,eAAe,EAAE,mBAAmB,EAAE,sBAAsB,CAAC;KAClG;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE,+GAA+G;QACxH,eAAe,EAAE,+KAA+K;QAChM,YAAY,EAAE,qGAAqG;QACnH,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,aAAsB;QAC9B,QAAQ,EAAE,CAAC,uBAAuB,CAAC;KACpC;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,6BAA6B;QACnC,OAAO,EAAE,wFAAwF;QACjG,eAAe,EAAE,iGAAiG;QAClH,YAAY,EAAE,gGAAgG;QAC9G,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,aAAsB;QAC9B,QAAQ,EAAE,CAAC,uBAAuB,CAAC;KACpC;IACD;QACE,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,gCAAgC;QACtC,OAAO,EAAE,2GAA2G;QACpH,eAAe,EAAE,gKAAgK;QACjL,YAAY,EAAE,0FAA0F;QACxG,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,aAAsB;QAC9B,QAAQ,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;KACnD;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,+HAA+H;QACxI,eAAe,EAAE,yIAAyI;QAC1J,YAAY,EAAE,kDAAkD;QAChE,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,aAAsB;QAC9B,QAAQ,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,qBAAqB,CAAC;KAC1E;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,6HAA6H;QACtI,eAAe,EAAE,kIAAkI;QACnJ,YAAY,EAAE,gGAAgG;QAC9G,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,aAAsB;QAC9B,QAAQ,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;KACrD;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,iCAAiC;QACvC,OAAO,EAAE,qGAAqG;QAC9G,eAAe,EAAE,8EAA8E;QAC/F,YAAY,EAAE,oFAAoF;QAClG,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,aAAsB;QAC9B,QAAQ,EAAE,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;KAC7D;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,sFAAsF;QAC/F,eAAe,EAAE,0HAA0H;QAC3I,YAAY,EAAE,2DAA2D;QACzE,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,aAAsB;QAC9B,QAAQ,EAAE,CAAC,kBAAkB,CAAC;KAC/B;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,sFAAsF;QAC/F,eAAe,EAAE,6FAA6F;QAC9G,YAAY,EAAE,0DAA0D;QACxE,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,aAAsB;QAC9B,QAAQ,EAAE,CAAC,sBAAsB,EAAE,2BAA2B,CAAC;KAChE;CACO,CAAC;AAEX,4DAA4D;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AAEtC,+CAA+C;AAC/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAEzC,sBAAsB;AACtB,MAAM,CAAC,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAE5C,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC,8CAA8C;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAEpC,iCAAiC;AACjC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC,qDAAqD;AACrD,MAAM,CAAC,MAAM,wBAAwB,GAAsB;IACzD,cAAc;IACd,MAAM;IACN,MAAM;IACN,OAAO;IACP,aAAa;IACb,OAAO;IACP,QAAQ;IACR,OAAO;IACP,UAAU;CACX,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAN,IAAY,KAWX;AAXD,WAAY,KAAK;IACf,sBAAa,CAAA;IACb,8BAAqB,CAAA;IACrB,4BAAmB,CAAA;IACnB,4BAAmB,CAAA;IACnB,0BAAiB,CAAA;IACjB,wBAAe,CAAA;IACf,4BAAmB,CAAA;IACnB,gCAAuB,CAAA;IACvB,0BAAiB,CAAA;IACjB,4BAAmB,CAAA;AACrB,CAAC,EAXW,KAAK,KAAL,KAAK,QAWhB;AAED,gDAAgD;AAChD,MAAM,CAAC,MAAM,WAAW,GAAqB;IAC3C,KAAK,CAAC,IAAI;IACV,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,OAAO;IACb,KAAK,CAAC,OAAO;IACb,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,KAAK;IACX,KAAK,CAAC,OAAO;IACb,KAAK,CAAC,SAAS;IACf,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,OAAO;CACd,CAAC;AAEF,uFAAuF;AACvF,MAAM,CAAC,MAAM,oBAAoB,GAAqC;IACpE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC;IACjC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE;IACpB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB,CAAC;IACrC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB,CAAC;IACrC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC;IAC7B,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC;IAC3B,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC;IAChC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,cAAc,CAAC;IACnC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC;IACnC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;CACpB,CAAC;AAEF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,iBAAiB;IACjB,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,cAAc;IACxB,UAAU,EAAE,gBAAgB;IAC5B,OAAO,EAAE,aAAa;IACtB,YAAY,EAAE,kBAAkB;IAChC,WAAW,EAAE,iBAAiB;IAC9B,YAAY,EAAE,kBAAkB;IAChC,aAAa,EAAE,mBAAmB;IAClC,gBAAgB;IAChB,UAAU,EAAE,gBAAgB;IAC5B,YAAY,EAAE,kBAAkB;IAChC,YAAY,EAAE,kBAAkB;IAChC,UAAU,EAAE,gBAAgB;IAC5B,aAAa,EAAE,mBAAmB;IAClC,KAAK,EAAE,WAAW;IAClB,8BAA8B;IAC9B,iBAAiB,EAAE,uBAAuB;IAC1C,aAAa,EAAE,mBAAmB;IAClC,iBAAiB,EAAE,uBAAuB;IAC1C,qBAAqB;IACrB,eAAe,EAAE,qBAAqB;IACtC,YAAY,EAAE,kBAAkB;IAChC,aAAa,EAAE,mBAAmB;IAClC,uBAAuB;IACvB,SAAS,EAAE,eAAe;IAC1B,YAAY,EAAE,kBAAkB;IAChC,gBAAgB,EAAE,sBAAsB;IACxC,aAAa,EAAE,mBAAmB;IAClC,aAAa,EAAE,mBAAmB;IAClC,2BAA2B;IAC3B,gBAAgB,EAAE,sBAAsB;IACxC,qBAAqB,EAAE,2BAA2B;IAClD,qBAAqB,EAAE,2BAA2B;IAClD,aAAa,EAAE,mBAAmB;IAClC,yBAAyB;IACzB,YAAY,EAAE,kBAAkB;IAChC,YAAY,EAAE,kBAAkB;IAChC,mBAAmB,EAAE,yBAAyB;IAC9C,kBAAkB;IAClB,eAAe,EAAE,qBAAqB;IACtC,gBAAgB,EAAE,sBAAsB;IACxC,qBAAqB,EAAE,2BAA2B;IAClD,uBAAuB;IACvB,aAAa,EAAE,mBAAmB;IAClC,iBAAiB,EAAE,uBAAuB;IAC1C,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,eAAe;IAC1B,QAAQ,EAAE,cAAc;IACxB,gBAAgB;IAChB,aAAa,EAAE,mBAAmB;IAClC,iBAAiB,EAAE,uBAAuB;IAC1C,gBAAgB,EAAE,sBAAsB;IACxC,mBAAmB,EAAE,yBAAyB;IAC9C,UAAU;IACV,OAAO,EAAE,aAAa;IACtB,UAAU;IACV,cAAc,EAAE,oBAAoB;IACpC,YAAY,EAAE,kBAAkB;IAChC,yBAAyB;IACzB,YAAY,EAAE,kBAAkB;IAChC,UAAU;IACV,YAAY,EAAE,kBAAkB;IAChC,gBAAgB;IAChB,UAAU,EAAE,gBAAgB;IAC5B,OAAO,EAAE,aAAa;IACtB,gBAAgB,EAAE,sBAAsB;IACxC,oBAAoB;IACpB,iBAAiB,EAAE,uBAAuB;IAC1C,YAAY;IACZ,eAAe,EAAE,qBAAqB;IACtC,gBAAgB;IAChB,aAAa,EAAE,mBAAmB;IAClC,kBAAkB;IAClB,cAAc,EAAE,oBAAoB;IACpC,OAAO;IACP,YAAY,EAAE,kBAAkB;CACxB,CAAC;AAEX,qBAAqB;AACrB,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAC1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AACpD,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAEtD,uBAAuB;AACvB,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AACpD,MAAM,CAAC,MAAM,qBAAqB,GAAG,sBAAsB,CAAC;AAC5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAEtD,2BAA2B;AAC3B,MAAM,CAAC,MAAM,qBAAqB,GAAG,sBAAsB,CAAC;AAC5D,MAAM,CAAC,MAAM,0BAA0B,GAAG,2BAA2B,CAAC;AACtE,MAAM,CAAC,MAAM,0BAA0B,GAAG,2BAA2B,CAAC;AACtE,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAEtD,yBAAyB;AACzB,MAAM,CAAC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AACpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AACpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,yBAAyB,CAAC;AAElE,kBAAkB;AAClB,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAC1D,MAAM,CAAC,MAAM,qBAAqB,GAAG,sBAAsB,CAAC;AAC5D,MAAM,CAAC,MAAM,0BAA0B,GAAG,2BAA2B,CAAC;AAEtE,uBAAuB;AACvB,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AACtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,uBAAuB,CAAC;AAC9D,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;AAC9C,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;AAC9C,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AAE5C,gBAAgB;AAChB,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AACtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,uBAAuB,CAAC;AAC9D,MAAM,CAAC,MAAM,qBAAqB,GAAG,sBAAsB,CAAC;AAC5D,MAAM,CAAC,MAAM,wBAAwB,GAAG,yBAAyB,CAAC;AAElE,UAAU;AACV,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAE1C,4DAA4D;AAC5D,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,cAAc;IACd,eAAe;IACf,QAAQ;IACR,OAAO;IACP,UAAU;IACV,QAAQ;IACR,aAAa;IACb,UAAU;IACV,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,cAAc;IACd,UAAU;IACV,SAAS;IACT,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,cAAc;IACd,SAAS;CACD,CAAC;AAIX,yBAAyB;AACzB,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,YAAY;IACZ,cAAc;IACd,cAAc;IACd,UAAU;IACV,UAAU;IACV,SAAS;IACT,SAAS;CACD,CAAC;AA6BX,yEAAyE;AACzE,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,cAAc;IACd,kBAAkB;IAClB,gBAAgB;IAChB,QAAQ;IACR,YAAY;IACZ,SAAS;IACT,cAAc;CACf,CAAC"}
|