@design-ai/cli 4.55.0 → 4.56.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/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +39 -0
- package/README.ko.md +7 -7
- package/README.md +9 -9
- package/cli/lib/mcp-server.mjs +208 -10
- package/cli/lib/site-analysis.mjs +297 -0
- package/cli/lib/site-args.mjs +433 -0
- package/cli/lib/site-bundle-build.mjs +127 -0
- package/cli/lib/site-bundle-check.mjs +454 -0
- package/cli/lib/site-bundle-commands.mjs +95 -0
- package/cli/lib/site-bundle-compare.mjs +157 -0
- package/cli/lib/site-bundle-contract.mjs +79 -0
- package/cli/lib/site-bundle-files.mjs +87 -0
- package/cli/lib/site-bundle-handoff-runbook-actions.mjs +113 -0
- package/cli/lib/site-bundle-handoff-runbook-evidence-fields.mjs +164 -0
- package/cli/lib/site-bundle-handoff-runbook-evidence.mjs +334 -0
- package/cli/lib/site-bundle-handoff-runbook-format.mjs +31 -0
- package/cli/lib/site-bundle-handoff-runbook-stage-metadata.mjs +84 -0
- package/cli/lib/site-bundle-handoff-runbook.mjs +1331 -0
- package/cli/lib/site-bundle-handoff-summary.mjs +183 -0
- package/cli/lib/site-bundle-handoff.mjs +271 -0
- package/cli/lib/site-bundle-readme.mjs +98 -0
- package/cli/lib/site-bundle-repair-report.mjs +143 -0
- package/cli/lib/site-bundle-repair.mjs +68 -0
- package/cli/lib/site-content.mjs +399 -0
- package/cli/lib/site-evidence.mjs +35 -0
- package/cli/lib/site-mcp-commands.mjs +28 -0
- package/cli/lib/site-mcp-probes.mjs +159 -0
- package/cli/lib/site-mcp-readiness.mjs +157 -0
- package/cli/lib/site-mcp-report.mjs +324 -0
- package/cli/lib/site-next-actions.mjs +333 -0
- package/cli/lib/site-options.mjs +104 -0
- package/cli/lib/site-prompts.mjs +332 -0
- package/cli/lib/site-starter.mjs +153 -0
- package/cli/lib/site-strings.mjs +23 -0
- package/cli/lib/site-tasks.mjs +93 -0
- package/cli/lib/site-workflow-graph.mjs +309 -0
- package/cli/lib/site-workspace.mjs +492 -0
- package/cli/lib/site.mjs +108 -6617
- package/docs/DISTRIBUTION.ko.md +35 -6
- package/docs/DISTRIBUTION.md +35 -8
- package/docs/RELEASE-CHECKLIST.md +20 -3
- package/docs/ROADMAP.md +2179 -0
- package/docs/external-status.md +22 -7
- package/docs/integrations/design-ai-mcp-server.md +32 -0
- package/docs/integrations/vscode-walkthrough.ko.md +3 -3
- package/docs/integrations/vscode-walkthrough.md +3 -3
- package/docs/site-overrides/main.html +1 -1
- package/package.json +1 -1
- package/tools/audit/package-smoke.py +106 -0
- package/tools/audit/registry-smoke.py +378 -10
- package/tools/audit/smoke_assertions.py +83 -22
package/docs/external-status.md
CHANGED
|
@@ -1,32 +1,47 @@
|
|
|
1
1
|
# External Publication Status
|
|
2
2
|
|
|
3
|
-
> Checked: 2026-
|
|
4
|
-
> Scope: npm registry, GitHub Pages, VS Code Marketplace
|
|
3
|
+
> Checked: 2026-07-02
|
|
4
|
+
> Scope: npm registry, GitHub Pages, Homebrew tap, VS Code Marketplace, Claude/Codex MCP
|
|
5
5
|
|
|
6
6
|
## Summary
|
|
7
7
|
|
|
8
|
-
Local release readiness is verified
|
|
8
|
+
Local release readiness is verified, GitHub Pages docs are publicly reachable, GitHub Release `v4.56.0` is published, and the Homebrew tap formula points at the `v4.56.0` release source tarball with a verified SHA-256. npm is still publicly published at `@design-ai/cli@4.55.0`; the latest `v4.56.0` npm publish attempt authenticated as `sungjin9288`, passed package smoke, signed provenance, then failed on registry `E403` because npm requires either two-factor authentication during publish or a granular access token with Bypass 2FA enabled. Replace `NPM_TOKEN` with a publish-capable granular token for `@design-ai/cli` that has Bypass 2FA enabled, or migrate the workflow to npm Trusted Publishing, before rerunning. The VS Code extension `sungjin.design-ai-vscode` is published to the VS Code Marketplace at version `0.4.1`; the Gallery API is reachable. The public npm MCP entrypoint and the local Claude Code / Codex MCP client registrations were rechecked on 2026-07-02.
|
|
9
9
|
|
|
10
10
|
## Results
|
|
11
11
|
|
|
12
12
|
| Surface | Checked target | Result | Evidence |
|
|
13
13
|
|---|---|---|---|
|
|
14
|
-
| npm registry | `@design-ai/cli` |
|
|
14
|
+
| npm registry | `@design-ai/cli` | Published latest remains `4.55.0`; public registry smoke passed for `@design-ai/cli@4.55.0`. Latest `v4.56.0` publish run `28568106904` authenticated `NPM_TOKEN`, passed package smoke, signed provenance, then failed with `E403` because npm requires 2FA during publish or a granular access token with Bypass 2FA enabled. | `evidence/cli-logs/npm-registry-status.log`, `evidence/cli-logs/npm-registry-smoke.log`, `evidence/cli-logs/npm-publish-v4.56.0-failed.log`, `evidence/cli-logs/npm-publish-v4.56.0-preflight-failed.log`, `evidence/cli-logs/npm-publish-v4.56.0-bypass-2fa-required-20260702.log` |
|
|
15
15
|
| GitHub Pages | `https://sungjin9288.github.io/design-ai/` | Published and reachable: HTTP `200`, design-ai MkDocs page rendered | `evidence/cli-logs/github-pages-status.log` |
|
|
16
|
-
|
|
|
16
|
+
| Homebrew tap | `Formula/design-ai.rb` | Formula pinned to `v4.56.0` release source tarball with SHA-256 `507d2519296497defcd486c0ffc2b5164967a0bc540ddc31bc89502350688212`; Ruby syntax and `brew style` passed | `evidence/cli-logs/homebrew-formula-status.log` |
|
|
17
|
+
| VS Code Marketplace | `sungjin.design-ai-vscode` | Published: run `28431571256` published `v0.4.1`, and the Marketplace Gallery API returned visible version `0.4.1` on 2026-07-02. | `evidence/cli-logs/vscode-marketplace-status.log`, `evidence/cli-logs/vscode-marketplace-secret-status.log`, `evidence/cli-logs/vscode-extension-vsce-package.log`, `evidence/cli-logs/vscode-publish-workflow-status.log` |
|
|
18
|
+
| GitHub Release | `v4.56.0` | Published with release tarball asset `design-ai-cli-4.56.0.tgz` | `evidence/cli-logs/github-release-v4.56.0.log` |
|
|
19
|
+
| MCP server | `@design-ai/cli@4.55.0` / local clone | Public npm `design-ai-mcp` responds to initialize and tools/list with 10 tools; local Codex and Claude Code both report `design-ai` MCP as configured and connected. | `evidence/cli-logs/design-ai-mcp-public-registry-smoke.log`, `evidence/cli-logs/design-ai-mcp-client-status.log` |
|
|
17
20
|
|
|
18
21
|
## Interpretation
|
|
19
22
|
|
|
20
23
|
- The repository is locally release-ready based on `npm run release:check`.
|
|
21
24
|
- GitHub Pages docs can now be described as publicly deployed.
|
|
22
|
-
- Public npm install and
|
|
23
|
-
-
|
|
25
|
+
- Public npm install can be described as published and smoke-tested at `4.55.0`; `4.56.0` must not be described as npm-published until `NPM_TOKEN` is replaced with a Bypass 2FA-enabled granular token, or the workflow is migrated to npm Trusted Publishing, and the publish workflow succeeds.
|
|
26
|
+
- Homebrew tap install can now be described as pinned to the `v4.56.0` release tarball; full tap audit/install/test remains a maintainer-side verification step because this Homebrew version rejects path-based `brew audit Formula/...` calls.
|
|
27
|
+
- VS Code Marketplace can now be described as published and publicly reachable at version `0.4.1`.
|
|
28
|
+
- Claude Code and Codex can now be described as locally connected to the clone-backed `design-ai` MCP server, while public npm users can verify the published `design-ai-mcp` entrypoint from a clean working directory.
|
|
24
29
|
|
|
25
30
|
## Recheck Commands
|
|
26
31
|
|
|
27
32
|
```bash
|
|
28
33
|
npm view @design-ai/cli version name time.modified dist-tags --json
|
|
29
34
|
curl -sS -L -o /tmp/design-ai-pages.html -w 'http_code=%{http_code}\nurl_effective=%{url_effective}\n' https://sungjin9288.github.io/design-ai/
|
|
35
|
+
curl -sL https://github.com/sungjin9288/design-ai/archive/refs/tags/v4.56.0.tar.gz | shasum -a 256
|
|
36
|
+
ruby -c Formula/design-ai.rb
|
|
37
|
+
brew style Formula/design-ai.rb
|
|
38
|
+
gh release view v4.56.0 --repo sungjin9288/design-ai --json tagName,isDraft,isPrerelease,publishedAt,name,url,assets
|
|
39
|
+
gh run view 28561753737 --repo sungjin9288/design-ai --log-failed
|
|
40
|
+
gh run view 28562868536 --repo sungjin9288/design-ai --log-failed
|
|
41
|
+
gh run view 28568106904 --repo sungjin9288/design-ai --log-failed
|
|
42
|
+
npm exec --yes --package=@design-ai/cli@4.55.0 -- design-ai-mcp
|
|
43
|
+
codex mcp get design-ai
|
|
44
|
+
claude mcp list
|
|
30
45
|
curl -sS -H 'Content-Type: application/json' \
|
|
31
46
|
-H 'Accept: application/json;api-version=7.2-preview.1' \
|
|
32
47
|
-X POST https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery \
|
|
@@ -35,6 +35,19 @@ design-ai mcp
|
|
|
35
35
|
design-ai-mcp
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
+
To verify the public npm package without installing it globally, run the one-shot command from a clean directory outside a `@design-ai/cli` source checkout:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
tmp="$(mktemp -d)"
|
|
42
|
+
cd "$tmp"
|
|
43
|
+
printf '%s\n' \
|
|
44
|
+
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25"}}' \
|
|
45
|
+
'{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
|
|
46
|
+
| npm exec --yes --package=@design-ai/cli@4.55.0 -- design-ai-mcp
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Running that one-shot command from the package source root can make npm prefer the local checkout context, which may hide the temporary package bin shim.
|
|
50
|
+
|
|
38
51
|
Do not run the server as a normal terminal command unless an MCP client is connected. It waits for newline-delimited JSON-RPC messages on stdin and writes MCP responses to stdout.
|
|
39
52
|
|
|
40
53
|
## Connect Claude Code
|
|
@@ -145,6 +158,12 @@ Run the unit and subprocess smoke tests:
|
|
|
145
158
|
node --test cli/lib/mcp-server.test.mjs
|
|
146
159
|
```
|
|
147
160
|
|
|
161
|
+
Run the package smoke self-test when changing the packaged MCP entrypoint:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
npm run package:smoke:self-test
|
|
165
|
+
```
|
|
166
|
+
|
|
148
167
|
Run a protocol smoke manually:
|
|
149
168
|
|
|
150
169
|
```bash
|
|
@@ -156,6 +175,19 @@ printf '%s\n' \
|
|
|
156
175
|
|
|
157
176
|
The output must contain valid one-line JSON-RPC responses and a `tools` list.
|
|
158
177
|
|
|
178
|
+
The packed-tarball release smoke also checks `design-ai-mcp` after install and through one-shot `npm exec`, so package releases catch missing bin shims or broken stdio startup before publish.
|
|
179
|
+
|
|
180
|
+
After publish, the public registry smoke also runs `npm exec --package @design-ai/cli@<version> -- design-ai-mcp` with the same JSON-RPC protocol checks, so npm propagation verification covers the Claude/Codex MCP entrypoint as installed by users.
|
|
181
|
+
|
|
182
|
+
## Troubleshooting
|
|
183
|
+
|
|
184
|
+
| Symptom | What to check |
|
|
185
|
+
|---|---|
|
|
186
|
+
| `/mcp` does not show `design-ai` | Confirm the command in Claude/Codex points at either `design-ai mcp` or `node /path/to/design-ai/cli/bin/design-ai-mcp.mjs`. |
|
|
187
|
+
| Tool calls return `Unknown argument` | Remove unsupported fields from the MCP tool input. The server validates tool arguments before running the CLI. |
|
|
188
|
+
| Tool calls return `must be an integer` or `must be a boolean` | Send JSON values with the right type, for example `{"limit": 3}` instead of `{"limit": "3"}`. |
|
|
189
|
+
| Tool calls are marked `isError: true` with `[stderr]` | The MCP protocol is working; inspect the CLI error text and rerun the equivalent `design-ai ...` command locally. |
|
|
190
|
+
|
|
159
191
|
## References
|
|
160
192
|
|
|
161
193
|
- [Model Context Protocol specification](https://modelcontextprotocol.io/specification/2025-11-25)
|
|
@@ -10,9 +10,9 @@ git clone https://github.com/sungjin9288/design-ai.git ~/dev/design-ai && cd ~/d
|
|
|
10
10
|
|
|
11
11
|
# public publish 이후에는 npm/Homebrew 설치 경로로 local clone을 대체할 수 있어요.
|
|
12
12
|
|
|
13
|
-
# VS Code 확장 설치
|
|
14
|
-
|
|
15
|
-
# 또는 개발 중에는 .vsix 사이드로드
|
|
13
|
+
# 공개 VS Code 확장 설치
|
|
14
|
+
code --install-extension sungjin.design-ai-vscode
|
|
15
|
+
# 또는 로컬 확장 개발 중에는 .vsix 사이드로드
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
## 설치 (60초)
|
|
@@ -10,9 +10,9 @@ git clone https://github.com/sungjin9288/design-ai.git ~/dev/design-ai && cd ~/d
|
|
|
10
10
|
|
|
11
11
|
# After public publish, npm/Homebrew install paths can replace the local clone.
|
|
12
12
|
|
|
13
|
-
# Install VS Code extension
|
|
14
|
-
|
|
15
|
-
# Or sideload from .vsix during development
|
|
13
|
+
# Install the public VS Code extension
|
|
14
|
+
code --install-extension sungjin.design-ai-vscode
|
|
15
|
+
# Or sideload from .vsix during local extension development
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
## Setup (60 seconds)
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{{ super() }}
|
|
11
11
|
<meta name="description" content="A model-agnostic design knowledge base + skill system. Senior product designer for any AI coding agent. 92 knowledge files covering UI/UX, website improvement, design systems, motion, illustration, print, video, game UI, conversational, and spatial design. Korean market depth.">
|
|
12
12
|
<meta property="og:title" content="design-ai — Senior product designer for any AI coding agent">
|
|
13
|
-
<meta property="og:description" content="92 knowledge files,
|
|
13
|
+
<meta property="og:description" content="92 knowledge files, 221 worked examples, 20 skills, 17 commands. Korean market depth across all domains. Open-source MIT.">
|
|
14
14
|
<meta property="og:type" content="website">
|
|
15
15
|
<meta name="twitter:card" content="summary">
|
|
16
16
|
<meta name="twitter:title" content="design-ai">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@design-ai/cli",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.56.0",
|
|
4
4
|
"description": "Senior product designer for any AI coding agent. Installs design-ai (20 skills, 17 commands, 4 agents) into Claude Code globally. Korean market depth plus website improvement control tower.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"design-ai": "cli/bin/design-ai.mjs",
|
|
@@ -50,6 +50,7 @@ from smoke_assertions import (
|
|
|
50
50
|
assert_check_examples_json_component_spec,
|
|
51
51
|
assert_check_stdin_json_component_spec,
|
|
52
52
|
assert_command_alias_output,
|
|
53
|
+
assert_design_ai_mcp_protocol_responses,
|
|
53
54
|
assert_doctor_json_clean,
|
|
54
55
|
assert_doctor_strict_output,
|
|
55
56
|
assert_examples_human_output,
|
|
@@ -135,6 +136,7 @@ from smoke_assertions import (
|
|
|
135
136
|
format_cmd,
|
|
136
137
|
help_alias_script,
|
|
137
138
|
help_topic_script,
|
|
139
|
+
mcp_smoke_input,
|
|
138
140
|
passing_doctor_report_json,
|
|
139
141
|
passing_check_artifact_content,
|
|
140
142
|
passing_site_mcp_check_probes_human,
|
|
@@ -379,6 +381,18 @@ def npm_exec_cmd(tarball: Path, *args: str) -> list[str]:
|
|
|
379
381
|
]
|
|
380
382
|
|
|
381
383
|
|
|
384
|
+
def npm_exec_mcp_cmd(tarball: Path) -> list[str]:
|
|
385
|
+
return [
|
|
386
|
+
"npm",
|
|
387
|
+
"exec",
|
|
388
|
+
"--yes",
|
|
389
|
+
"--package",
|
|
390
|
+
str(tarball),
|
|
391
|
+
"--",
|
|
392
|
+
"design-ai-mcp",
|
|
393
|
+
]
|
|
394
|
+
|
|
395
|
+
|
|
382
396
|
def npm_exec_shell_cmd(tarball: Path, script: str) -> list[str]:
|
|
383
397
|
return [
|
|
384
398
|
"npm",
|
|
@@ -533,6 +547,52 @@ def require_package_smoke(condition: bool, *, context: str, cmd: list[str], mess
|
|
|
533
547
|
fail_package_smoke(context, cmd, message)
|
|
534
548
|
|
|
535
549
|
|
|
550
|
+
def assert_design_ai_mcp_protocol_smoke(
|
|
551
|
+
cmd: list[str],
|
|
552
|
+
*,
|
|
553
|
+
env: dict[str, str],
|
|
554
|
+
cwd: Path | None,
|
|
555
|
+
context: str,
|
|
556
|
+
) -> None:
|
|
557
|
+
print(f"$ {format_cmd(cmd)} < MCP smoke", flush=True)
|
|
558
|
+
result = subprocess.run(
|
|
559
|
+
cmd,
|
|
560
|
+
cwd=cwd,
|
|
561
|
+
env=env,
|
|
562
|
+
input=mcp_smoke_input(),
|
|
563
|
+
text=True,
|
|
564
|
+
capture_output=True,
|
|
565
|
+
timeout=15,
|
|
566
|
+
)
|
|
567
|
+
if result.stdout:
|
|
568
|
+
print(result.stdout, end="")
|
|
569
|
+
if result.stderr:
|
|
570
|
+
print(result.stderr, end="", file=sys.stderr)
|
|
571
|
+
|
|
572
|
+
if is_npm_exec_cache_enoent(cmd, result):
|
|
573
|
+
result = retry_npm_exec_once(cmd, cwd=cwd, env=env, input_text=mcp_smoke_input())
|
|
574
|
+
if result.stdout:
|
|
575
|
+
print(result.stdout, end="")
|
|
576
|
+
if result.stderr:
|
|
577
|
+
print(result.stderr, end="", file=sys.stderr)
|
|
578
|
+
|
|
579
|
+
if result.returncode != 0:
|
|
580
|
+
raise SystemExit(f"command failed with exit code {result.returncode}: {format_cmd(cmd)}")
|
|
581
|
+
|
|
582
|
+
output = f"{result.stdout}\n{result.stderr}"
|
|
583
|
+
assert_no_ansi(output, cmd)
|
|
584
|
+
|
|
585
|
+
responses = []
|
|
586
|
+
for line in result.stdout.splitlines():
|
|
587
|
+
if not line.strip():
|
|
588
|
+
continue
|
|
589
|
+
try:
|
|
590
|
+
responses.append(json.loads(line))
|
|
591
|
+
except json.JSONDecodeError as error:
|
|
592
|
+
fail_package_smoke(context, cmd, f"MCP stdout line is not JSON: {error}")
|
|
593
|
+
assert_design_ai_mcp_protocol_responses(responses, context=context, cmd=cmd)
|
|
594
|
+
|
|
595
|
+
|
|
536
596
|
def run_expected_failure(
|
|
537
597
|
cmd: list[str],
|
|
538
598
|
*,
|
|
@@ -12482,6 +12542,37 @@ def run_self_test() -> None:
|
|
|
12482
12542
|
site_bundle_mcp_probes_payload,
|
|
12483
12543
|
context=f"{context} site bundle mcp-probes.json",
|
|
12484
12544
|
)
|
|
12545
|
+
mcp_protocol_cmd = ["design-ai-mcp"]
|
|
12546
|
+
assert_design_ai_mcp_protocol_responses(
|
|
12547
|
+
[
|
|
12548
|
+
{"jsonrpc": "2.0", "id": 1, "result": {"serverInfo": {"name": "design-ai"}}},
|
|
12549
|
+
{"jsonrpc": "2.0", "id": 2, "result": {"tools": [{"name": "design_ai_route"}, {"name": "design_ai_search"}]}},
|
|
12550
|
+
{
|
|
12551
|
+
"jsonrpc": "2.0",
|
|
12552
|
+
"id": 3,
|
|
12553
|
+
"error": {"code": -32602, "message": "design_ai_search.limit must be an integer"},
|
|
12554
|
+
},
|
|
12555
|
+
],
|
|
12556
|
+
context=f"{context} design-ai MCP protocol",
|
|
12557
|
+
cmd=mcp_protocol_cmd,
|
|
12558
|
+
)
|
|
12559
|
+
expect_self_test_failure(
|
|
12560
|
+
lambda: assert_design_ai_mcp_protocol_responses(
|
|
12561
|
+
[
|
|
12562
|
+
{"jsonrpc": "2.0", "id": 1, "result": {"serverInfo": {"name": "design-ai"}}},
|
|
12563
|
+
{"jsonrpc": "2.0", "id": 2, "result": {"tools": [{"name": "design_ai_route"}, {"name": "design_ai_search"}]}},
|
|
12564
|
+
{
|
|
12565
|
+
"jsonrpc": "2.0",
|
|
12566
|
+
"id": 3,
|
|
12567
|
+
"error": {"code": -32602, "message": "wrong validation message"},
|
|
12568
|
+
},
|
|
12569
|
+
],
|
|
12570
|
+
context=f"{context} design-ai MCP protocol",
|
|
12571
|
+
cmd=mcp_protocol_cmd,
|
|
12572
|
+
),
|
|
12573
|
+
expected="MCP invalid argument response did not preserve invalid params validation",
|
|
12574
|
+
scope="package smoke",
|
|
12575
|
+
)
|
|
12485
12576
|
for label in (
|
|
12486
12577
|
"site bundle check",
|
|
12487
12578
|
"site bundle check summary",
|
|
@@ -19602,6 +19693,9 @@ def smoke_tarball(tarball: Path) -> None:
|
|
|
19602
19693
|
bin_path = install_root / "node_modules" / ".bin" / "design-ai"
|
|
19603
19694
|
if not bin_path.exists():
|
|
19604
19695
|
raise SystemExit(f"design-ai bin shim not found: {bin_path}")
|
|
19696
|
+
mcp_bin_path = install_root / "node_modules" / ".bin" / "design-ai-mcp"
|
|
19697
|
+
if not mcp_bin_path.exists():
|
|
19698
|
+
raise SystemExit(f"design-ai-mcp bin shim not found: {mcp_bin_path}")
|
|
19605
19699
|
|
|
19606
19700
|
smoke_env = base_env.copy()
|
|
19607
19701
|
smoke_env.update({
|
|
@@ -19620,6 +19714,12 @@ def smoke_tarball(tarball: Path) -> None:
|
|
|
19620
19714
|
env=smoke_env,
|
|
19621
19715
|
context="package smoke installed bin version JSON",
|
|
19622
19716
|
)
|
|
19717
|
+
assert_design_ai_mcp_protocol_smoke(
|
|
19718
|
+
[str(mcp_bin_path)],
|
|
19719
|
+
cwd=install_root,
|
|
19720
|
+
env=smoke_env,
|
|
19721
|
+
context="package smoke installed bin design-ai-mcp protocol",
|
|
19722
|
+
)
|
|
19623
19723
|
assert_workspace_json_smoke(
|
|
19624
19724
|
[str(bin_path), "workspace", "--json"],
|
|
19625
19725
|
cwd=install_root,
|
|
@@ -20999,6 +21099,12 @@ def smoke_tarball(tarball: Path) -> None:
|
|
|
20999
21099
|
env=npx_env,
|
|
21000
21100
|
context="package smoke npm exec version JSON",
|
|
21001
21101
|
)
|
|
21102
|
+
assert_design_ai_mcp_protocol_smoke(
|
|
21103
|
+
npm_exec_mcp_cmd(tarball),
|
|
21104
|
+
cwd=npx_root,
|
|
21105
|
+
env=npx_env,
|
|
21106
|
+
context="package smoke npm exec design-ai-mcp protocol",
|
|
21107
|
+
)
|
|
21002
21108
|
assert_workspace_json_smoke(
|
|
21003
21109
|
npm_exec_cmd(tarball, "workspace", "--json"),
|
|
21004
21110
|
cwd=npx_root,
|