@hegemonart/get-design-done 1.60.1 → 1.60.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.
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
},
|
|
6
6
|
"metadata": {
|
|
7
7
|
"description": "Get Design Done — 5-stage agent-orchestrated design pipeline (Brief → Explore → Plan → Design → Verify) for AI coding agents. 64 agents, 96 skills, 39 connection integrations, two MCP servers, opt-in SQLite state backbone, bidirectional Figma write-back, and a reflector-driven self-improvement loop. Cross-runtime install for Claude Code, Codex, Cursor, OpenCode, Gemini, and more.",
|
|
8
|
-
"version": "1.60.
|
|
8
|
+
"version": "1.60.2"
|
|
9
9
|
},
|
|
10
10
|
"plugins": [
|
|
11
11
|
{
|
|
12
12
|
"name": "get-design-done",
|
|
13
13
|
"source": "./",
|
|
14
14
|
"description": "Agent-orchestrated 5-stage design pipeline (Brief → Explore → Plan → Design → Verify) for AI coding agents. 64 specialized agents, 96 skills, 39 connection integrations (Figma, Refero, Preview, Storybook, Chromatic, Graphify, Linear, Jira, Notion, …), bidirectional Figma write-back, queryable intel store, opt-in SQLite state backbone, and a reflector-driven self-improvement loop. Two MCP servers (gdd-state for typed STATE mutators, gdd-mcp for 13 read-only project-priming tools), tier-aware routing with cost telemetry, and defense-in-depth hooks (protected paths, MCP circuit breaker, injection scanner, budget enforcer). Cross-runtime install for Claude Code, Codex, Cursor, OpenCode, Gemini, Copilot, and more.",
|
|
15
|
-
"version": "1.60.
|
|
15
|
+
"version": "1.60.2",
|
|
16
16
|
"author": {
|
|
17
17
|
"name": "hegemonart"
|
|
18
18
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "get-design-done",
|
|
3
3
|
"short_name": "gdd",
|
|
4
|
-
"version": "1.60.
|
|
4
|
+
"version": "1.60.2",
|
|
5
5
|
"description": "Agent-orchestrated 5-stage design pipeline (Brief → Explore → Plan → Design → Verify) for AI coding agents. 64 specialized agents, 96 skills, 39 connection integrations (Figma, Refero, Preview, Storybook, Chromatic, Graphify, Linear, Jira, Notion, …), bidirectional Figma write-back, queryable intel store for O(1) design-surface lookups, opt-in SQLite state backbone, and a reflector-driven self-improvement loop. Two MCP servers (`gdd-state` for typed STATE mutators, `gdd-mcp` for 13 read-only project-priming tools), tier-aware agent routing with cost telemetry, defense-in-depth hooks (protected paths, MCP circuit breaker, injection scanner, budget enforcer), and a cross-runtime install layer for Claude Code, Codex, Cursor, OpenCode, Gemini, Copilot, and more.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "hegemonart",
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,28 @@ All notable changes to get-design-done are documented here. Versions follow [sem
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## [1.60.2] - 2026-06-13
|
|
8
|
+
|
|
9
|
+
**Security & CI hardening** - bring the SAST/dependency-audit gates the project lacked, and close the one untrusted-link gap in the injection scanner, *before* the detection engine lands its large new surface. Sourced from a reconciliation against the upstream framework's recent releases (`.planning/audits/UPSTREAM-GSD-CORE-DIFF-2026-06-13.md`).
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- **CodeQL / SAST workflow** (`.github/workflows/codeql.yml`) - `javascript-typescript` with the `security-extended` query suite, on push / PR / weekly schedule. Analysis-only (alerts surface in the Security tab; the job is non-blocking on pre-existing findings). A regression guard for every future PR, established now on a clean tree.
|
|
14
|
+
- **`npm audit` production gate in CI** - `npm audit --omit=dev --audit-level=high` in the security job. Scoped to production dependencies (what ships to consumers); dev-only advisories don't gate the build. Currently green.
|
|
15
|
+
- **Dangerous-link scheme detection in the injection scanner** - `scripts/injection-patterns.cjs` now flags `javascript:` URIs, `data:text/html` / `data:` script payloads, userinfo-credential URLs (`scheme://user:pass@host`), and secret-bearing query params (cross-referenced to the redaction token shapes). These flow from untrusted markdown read by the Read hook and the design-authority watcher's feed ingest, which previously had zero coverage for them. Pattern count 21 to 27; both the runtime hook and the CI scanner auto-consume the new patterns. Tightly anchored with negative fixtures so legitimate `https://`, `mailto:`, `data:image`, and ordinary query strings are not flagged.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- **`hono` override `>=4.12.23`** added to `package.json` (transitive via `@modelcontextprotocol/sdk`). Precautionary / future-proofing - our `npm audit` does not currently flag the resolved `hono@4.12.21`; this pins the dependency forward regardless. Resolves to `4.12.25`.
|
|
20
|
+
|
|
21
|
+
### Breaking changes
|
|
22
|
+
|
|
23
|
+
None.
|
|
24
|
+
|
|
25
|
+
5,143/5,143 tests pass.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
7
29
|
## [1.60.1] - 2026-06-10
|
|
8
30
|
|
|
9
31
|
**Security hardening** - two HIGH-severity vulnerabilities closed before the upcoming rebrand copies the foundation layer across every runtime. Both were reachable by a prompt-injected agent, undercutting the trust boundary the plugin's own scanners exist to defend. Each fix ships with failing-then-passing regression tests; an independent adversarial audit confirmed both vectors are dead with no surviving bypass.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hegemonart/get-design-done",
|
|
3
|
-
"version": "1.60.
|
|
3
|
+
"version": "1.60.2",
|
|
4
4
|
"description": "A design-quality pipeline for AI coding agents: brief, explore, plan, design, and verify UI work against your design system.",
|
|
5
5
|
"author": "Hegemon",
|
|
6
6
|
"homepage": "https://github.com/hegemonart/get-design-done",
|
|
@@ -156,6 +156,7 @@
|
|
|
156
156
|
},
|
|
157
157
|
"overrides": {
|
|
158
158
|
"fast-json-patch": "^3.1.1",
|
|
159
|
+
"hono": ">=4.12.23",
|
|
159
160
|
"qs": ">=6.15.2"
|
|
160
161
|
}
|
|
161
162
|
}
|
|
@@ -41,6 +41,53 @@ const INJECTION_PATTERNS = [
|
|
|
41
41
|
{ name: 'tar-home-netcat', re: /\btar\s+c[fzvj]+\s+-\s+~[^\n]*\|\s*(nc|ssh|curl)/ },
|
|
42
42
|
{ name: 'env-dot-leak', re: /process\.env\.[A-Z][A-Z0-9_]*_(KEY|TOKEN|SECRET)\s*[^;,\n]*(fetch|axios|XMLHttpRequest|http\.request)/ },
|
|
43
43
|
{ name: 'ssh-key-cat', re: /\bcat\s+~?\/?\.ssh\/id_(rsa|ed25519|ecdsa|dsa)\b/ },
|
|
44
|
+
|
|
45
|
+
// ── dangerous URL schemes + credential links (60.2 / SEC-CI-03) ──────
|
|
46
|
+
// These flow from untrusted markdown (Read hook) and RSS/article ingest.
|
|
47
|
+
// Each regex is anchored tightly to avoid false-positives on the repo's
|
|
48
|
+
// own shipped docs (the CI scan:injection gate scans them) and is
|
|
49
|
+
// linear-time (bounded quantifiers, no nested/overlapping repetition).
|
|
50
|
+
|
|
51
|
+
// `javascript:` used as a link/href target. The colon must be directly
|
|
52
|
+
// followed by a non-whitespace payload char — so prose like "JavaScript:"
|
|
53
|
+
// (a sentence colon, followed by a space) and the bare word "JavaScript"
|
|
54
|
+
// do NOT match. Preceded by start-of-string or a non-word char so it
|
|
55
|
+
// anchors on `](javascript:` / `href="javascript:` / `=javascript:`.
|
|
56
|
+
{ name: 'javascript: uri', re: /(?:^|[^\w])javascript:(?=\S)/i },
|
|
57
|
+
|
|
58
|
+
// `data:text/html` URIs (optional ;base64). Will NOT match `data:image/…`,
|
|
59
|
+
// nor `data: <word>` prose (colon-space): the literal `text/html` is required.
|
|
60
|
+
{ name: 'data:text/html uri', re: /\bdata:text\/html\b/i },
|
|
61
|
+
|
|
62
|
+
// `data:` URI carrying a script payload (covers data: media types beyond
|
|
63
|
+
// text/html). `[^\s<]{0,200}` is a bounded run (no ReDoS) that also
|
|
64
|
+
// EXCLUDES `<`, so it cannot reach across a `<script` that appears BEFORE
|
|
65
|
+
// `data:` on the line (e.g. export-formats.md:27 "…<script> … data: URIs"):
|
|
66
|
+
// there the char after `data:` is a backtick+space, the run stops at the
|
|
67
|
+
// space, and no script marker follows. Requires `data:` to be immediately
|
|
68
|
+
// followed (no space) by payload chars that lead into `<script`/`%3Cscript`.
|
|
69
|
+
{ name: 'data: script payload', re: /data:[^\s<]{0,200}(?:<script|%3Cscript)/i },
|
|
70
|
+
|
|
71
|
+
// userinfo-credential URL: `scheme://user:pass@host`. The `:` must appear
|
|
72
|
+
// in the userinfo segment BEFORE the `@`, and both must precede the first
|
|
73
|
+
// `/` of the path (i.e. inside the authority). Mutually-exclusive char
|
|
74
|
+
// classes on the boundary chars keep it linear. Does NOT match
|
|
75
|
+
// `mailto:user@host` (no `://`), bare `user@host` (no `://`), a plain
|
|
76
|
+
// `https://host/path` (no `@`), nor an `@` that appears only in the path.
|
|
77
|
+
{ name: 'userinfo credentials url', re: /:\/\/[^/\s:@]+:[^/\s@]*@/ },
|
|
78
|
+
|
|
79
|
+
// Secret-bearing query param. Two linear alternatives:
|
|
80
|
+
// (a) a query KEY named like a credential (token/api_key/secret/…)
|
|
81
|
+
// followed by `=` and a non-trivial value; OR
|
|
82
|
+
// (b) any query value matching a redact.cjs secret SHAPE
|
|
83
|
+
// (sk-ant-/sk-/jwt/AIza/ghp_/gh[sour]_/AKIA/xox…).
|
|
84
|
+
// `[^&\s#]+` and the shape bodies are bounded by their delimiters / fixed
|
|
85
|
+
// lengths — no catastrophic backtracking. Does NOT match benign params
|
|
86
|
+
// like `?q=`, `?lang=en`, `?sort=desc`, `?page=2`.
|
|
87
|
+
{
|
|
88
|
+
name: 'secret-bearing query param',
|
|
89
|
+
re: /[?&](?:access_token|client_secret|api[_-]?key|apikey|token|secret|password|auth)=[^&\s#]+|[?&][\w-]{1,40}=(?:sk-ant-[\w-]{20,}|sk-[\w-]{20,}|eyJ[\w-]{10,}\.[\w-]{10,}\.[\w-]{10,}|AIza[\w-]{35}|ghp_[A-Za-z0-9]{36,}|gh[sour]_[A-Za-z0-9]{36,}|AKIA[0-9A-Z]{16}|xox[baprs]-[\w-]{10,})/i,
|
|
90
|
+
},
|
|
44
91
|
];
|
|
45
92
|
|
|
46
93
|
/**
|