Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
c75588e
docs(skill-parity): B00 baseline, endpoint contracts, decisions and f…
AltaMills Sep 7, 2026
e7ea577
feat(cli): B01 v1 envelope, exit codes, local runtime, --api-key-file…
AltaMills Sep 7, 2026
f05ff87
feat(client): B02 transport, resource registry, catalog and showcases
AltaMills Sep 7, 2026
6784309
feat(tasks): B03 task lifecycle — v1 verbs, journaled single POST, SS…
AltaMills Sep 7, 2026
3935f35
feat(download): B04 asset enumeration, selective download and safe fi…
AltaMills Sep 7, 2026
96ee188
feat(project): B05 meshy_output project store, project command and --…
AltaMills Sep 7, 2026
da7e1dc
feat(local): B06-B08 inspect faces, OBJ prepare-print, slicers and do…
AltaMills Sep 7, 2026
e7c26fc
chore(release): 0.3.0 candidate — README, bundled skill, env example,…
AltaMills Sep 7, 2026
6273d9a
docs(skill-parity): verification record and review handoff for the 0.…
AltaMills Sep 7, 2026
0388fe8
fix(review): address Codex review round 1 findings F01–F10
AltaMills Sep 7, 2026
730132b
docs(skill-parity): round-2 handoff after Codex review round 1 fixes
AltaMills Sep 7, 2026
cf8905d
fix(review): address Codex review round 2 findings R2-F01–R2-F07
AltaMills Sep 7, 2026
566f3bd
docs(skill-parity): round-3 handoff after Codex review round 2 fixes
AltaMills Sep 7, 2026
30536d8
fix(review): address Codex review round 3 findings R3-F01–R3-F06
AltaMills Sep 7, 2026
235d6de
test(poll): judge the real-timer smoke with the loop's own clock reading
AltaMills Sep 7, 2026
9e43a77
docs(skill-parity): round-4 handoff after Codex review round 3 fixes
AltaMills Sep 7, 2026
93e55bc
fix(review): address Codex review round 4 findings R4-F01, R4-F02 and…
AltaMills Sep 8, 2026
68690f9
test(wait): allow the deadline wake-up's one extra GET that D-044 per…
AltaMills Sep 8, 2026
e7c0bbc
docs(skill-parity): round-5 handoff after Codex review round 4 fixes
AltaMills Sep 8, 2026
7b7c24c
fix(review): address Codex review round 5 findings R5-F01–R5-F03
AltaMills Sep 8, 2026
166492b
docs(skill-parity): round-6 handoff after Codex review round 5 fixes
AltaMills Sep 8, 2026
e567646
fix(review): address Codex review round 6 findings R6-F01, R6-F02 and…
AltaMills Sep 8, 2026
4da216d
docs(skill-parity): round-7 handoff after Codex review round 6 fixes
AltaMills Sep 8, 2026
1d9f109
fix(live): parse Creative Lab null timestamps; name Creative Lab part…
AltaMills Sep 8, 2026
c70b06c
docs(skill-parity): round 8 handoff — live (real-account) verificatio…
AltaMills Sep 8, 2026
8b81279
docs(skill-parity): record Codex round 8 acceptance and the authorise…
AltaMills Sep 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
# Required: your Meshy API key (https://www.meshy.ai/api)
# Your Meshy API key (https://www.meshy.ai/settings/api). Read from the
# environment, or from an explicit file via `meshy ... --api-key-file <path>`
# (only this key is read from the file; nothing is executed).
MESHY_API_KEY=YOUR_MESHY_API_KEY_HERE

# Optional base URL overrides (defaults shown)
# MESHY_BASE_URL_V1=https://api.meshy.ai/openapi/v1
# MESHY_BASE_URL_V2=https://api.meshy.ai/openapi/v2
# MESHY_BASE_URL_CREATIVE_LAB=https://api.meshy.ai/openapi/creative-lab # default: derived from the v1 origin

# Optional timeouts / polling
# MESHY_CONNECT_TIMEOUT_MS=10000
# MESHY_READ_TIMEOUT_MS=120000
# MESHY_READ_TIMEOUT_MS=120000 # covers headers and body
# MESHY_POLL_INTERVAL_MS=3000

# Optional log level: debug | info | warn | error | silent
# MESHY_LOG_LEVEL=warn

# Optional: where credentials, the operation journal and the update cache live
# MESHY_CONFIG_DIR=~/.config/meshy
3 changes: 2 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
dist/** linguist-generated=true
# SSE fixtures end with the blank line that terminates their last event; that is protocol, not stray whitespace.
tests/fixtures/skill-parity/*.sse -whitespace
450 changes: 342 additions & 108 deletions README.md

Large diffs are not rendered by default.

345 changes: 345 additions & 0 deletions docs/skill-parity/REVIEW_HANDOFF.md

Large diffs are not rendered by default.

16 changes: 16 additions & 0 deletions docs/skill-parity/baseline-delta.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Baseline delta

Checked 2026-09-07 before any change:

- `meshy-dev/meshy-cli` remote `main` = `fd94490916376e691efcea51324ac4326b459e1f`,
identical to the implementation-package baseline. No mapping of plan line references
is needed; the symbols named in IMPLEMENTATION_PLAN.md §2.1 exist as described
(`makeFetcher` in `src/client/index.ts`, `buildResourceCommand` /
`emitTerminalOutcome` in `src/internal/task-command.ts`, `runChain` in
`src/cmd/make.ts`, `enumerateArtifacts` / `downloadArtifact` in
`src/internal/download.ts`, `buildRuntime` cache in `src/internal/runtime.ts`,
`refreshCache()` first in `src/index.ts`).
- `meshy-dev/meshy-3d-agent` remote HEAD = `b9db44b5663e6e92d89828bf2e4fe1dc1b3f6610`,
identical to the package baseline.
- Work happens on branch `feat/skill-parity-s1` in a fresh clone; the user's research
checkout under `meshy-agent-integrations-research/sources/` is untouched.
89 changes: 89 additions & 0 deletions docs/skill-parity/baseline.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
{
"schema_version": 1,
"recorded_at": "2026-09-07T06:22:37Z",
"implementation_package": {
"version": "2026-09-07 / v1",
"source": "meshy-cli-implementation (IMPLEMENTATION_PLAN.md, COMMAND_CONTRACTS.md, TEST_PLAN.md, capability-matrix.json)"
},
"repositories": {
"cli": {
"url": "https://github.com/meshy-dev/meshy-cli",
"plan_baseline_sha": "fd94490916376e691efcea51324ac4326b459e1f",
"head_at_start": "fd94490916376e691efcea51324ac4326b459e1f",
"remote_main_at_start": "fd94490916376e691efcea51324ac4326b459e1f",
"delta_from_plan_baseline": "none",
"package_version_at_start": "0.2.0",
"work_branch": "feat/skill-parity-s1",
"workspace": "fresh clone; no pre-existing uncommitted changes",
"repo_instructions": "no AGENTS.md / CLAUDE.md present at baseline"
},
"skills": {
"url": "https://github.com/meshy-dev/meshy-3d-agent",
"plan_baseline_sha": "b9db44b5663e6e92d89828bf2e4fe1dc1b3f6610",
"remote_head_at_start": "b9db44b5663e6e92d89828bf2e4fe1dc1b3f6610",
"delta_from_plan_baseline": "none",
"claude_manifest_version": "0.4.1",
"usage": "read-only capability baseline; not modified"
},
"meshyd_read_only_crosscheck": {
"commit": "69b7ff5dd29f7a75a3220987985037ecb5c13c2e",
"files_consulted": [
"pkg/server/server.go (public route registration: every task API group registers POST '', GET '', GET /:id, GET /:id/stream, DELETE /:id; openapi /v1/showcases; /web/public/animations/resources)",
"pkg/server/api_stream_handlers.go (SSE: event 'message' carries task DTO; event 'error' carries {message,status_code}; keep-alive re-emits 'message' every 10s; stream closes after terminal status)",
"pkg/server/internal/httpapi/response.go (APIStreamErrorResponse = {message, status_code})",
"pkg/server/internal/httpapi/dto.go (task DTO: model_urls object keys glb/fbx/gltf/usdz/obj/mtl/vox/blend/stl/3mf/pre_remeshed_glb; thumbnail_urls is an object keyed by view; alpha_thumbnail_url; consumed_credits optional; no face_count field)",
"pkg/server/creativelab/openapi_routes.go + api_creative_lab_{figure,lamp,keychain,fridge_magnet}_handlers.go (request structs)",
"pkg/model/task_creative_lab_{lamp,keychain,fridge_magnet}.go (options/output enums, artifact keys)",
"pkg/server/api.go (ListShowcasesForOpenAPIRequest: format oneof glb fbx usdz obj; showcase_type oneof all animate static; GetShowcaseForOpenAPIResult fields; ListAnimationsResourcesRequest: q/category/subCategory; AnimationResource fields)"
],
"notes": [
"internal source copies are not included in this repository",
"production deployment state, account gates and billing were not tested"
]
}
},
"official_sources_checked": [
"https://docs.meshy.ai/en/api/uv-unwrap",
"https://docs.meshy.ai/en/api/creative-lab-figure",
"https://docs.meshy.ai/en/api/creative-lab-lamp",
"https://docs.meshy.ai/en/api/creative-lab-keychain",
"https://docs.meshy.ai/en/api/creative-lab-fridge-magnet",
"https://docs.meshy.ai/en/api/enterprise-api",
"https://docs.meshy.ai/en/api/rigging"
],
"environment": {
"os": "macOS 26.6 (Darwin 25.6.0) arm64",
"node": "v24.20.0 (installed via fnm; repo .node-version = 24; engines >=24)",
"pnpm": "11.24.0 (corepack, package.json#packageManager)",
"python": "not required by the CLI; not used by any test"
},
"baseline_checks_before_changes": [
{ "command": "pnpm install --frozen-lockfile", "exit_code": 0, "duration_s": 10, "notes": "prepare script built dist/" },
{ "command": "pnpm typecheck", "exit_code": 0, "duration_s": 0 },
{ "command": "pnpm test", "exit_code": 0, "duration_s": 41, "tests": 363, "pass": 363, "fail": 0, "skipped": 0 },
{ "command": "pnpm build", "exit_code": 0, "duration_s": 1 }
],
"legacy_script_copies": {
"scripts/src/meshy_task.py": "5c5dc16337580ccd97cee49c657d5395fb20ab9f1b66c8b7c41e364c545e7b2d",
"skills/*/scripts/meshy_task.py (3 identical copies)": "ba436fb36b2412db2f199f39804a0b788dd8c2d39aefd9e7153da2c671158c4d",
"skills/meshy-3d-printing/scripts/fix_obj.py": "2fa2ac5a7c26856f2818e23791ef5b82501411a94c82e7448e1253abc330be1c",
"skills/meshy-openclaw/scripts/fix_obj.py": "50e9fc00a83bc85067955fef2c61d94a8163e0002012961fbae9bad1e0cf1b35",
"skills/meshy-3d-printing/scripts/slicers.py": "343934ac49b43183bce364be86a801e03ecf40e4b722156e0da8d322cd18388d",
"skills/meshy-openclaw/scripts/slicers.py": "fe28032870de5a7de134278e8a9a39d3a7997e9bcc1ff2db9abc2a1c4f261683",
"note": "the distributed copies differ from scripts/src only by the generated header comment; no extra executable capability was found in any copy"
},
"fixtures": {
"tests/fixtures/skill-parity/box-y-up.obj": "beb379900c2c9a204db4a2cbeadd536292f30ac70ce849adc0762c9a88b5949b",
"tests/fixtures/skill-parity/box.mtl": "a11dcb465d7f74b03c4c007a5fbcba08233a392d4d526a82e2b513412aa2a556",
"tests/fixtures/skill-parity/box-height-80.expected.json": "f887f40c18d068145bbc1ffb03fc5c42f73f056ecf30b622a65a01edd7f2ed5d",
"tests/fixtures/skill-parity/task-rigging.synthetic.json": "8dca5b6abed0ae161d2cb0140d68d4c38341cfa48841ecdabd001427b77d039e",
"tests/fixtures/skill-parity/task-error.synthetic.sse": "b9542722988c854626a3007a0d7ec771a308a54945331f97788036f687c95300",
"origin": "synthetic fixtures copied from the implementation package; none are live API records"
},
"environment_limits": [
"no Meshy API credential is configured in this session; live API checks are not_run",
"only macOS arm64 is available; Windows/Linux slicer detection is covered by platform fixtures only",
"no slicer application is verified on this host",
"Enterprise showcases, UV Unwrap and Creative Lab live calls are billable/gated and are not_run"
]
}
Loading