@meshy-ai/cli 0.2.0 → 0.3.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.
Files changed (285) hide show
  1. package/.env.example +8 -2
  2. package/README.md +342 -108
  3. package/dist/client/endpoints/animation-catalog.d.ts +37 -0
  4. package/dist/client/endpoints/animation-catalog.d.ts.map +1 -0
  5. package/dist/client/endpoints/animation-catalog.js +55 -0
  6. package/dist/client/endpoints/animation-catalog.js.map +1 -0
  7. package/dist/client/endpoints/balance.d.ts +5 -0
  8. package/dist/client/endpoints/balance.d.ts.map +1 -1
  9. package/dist/client/endpoints/balance.js +5 -1
  10. package/dist/client/endpoints/balance.js.map +1 -1
  11. package/dist/client/endpoints/base.d.ts +41 -7
  12. package/dist/client/endpoints/base.d.ts.map +1 -1
  13. package/dist/client/endpoints/base.js +61 -40
  14. package/dist/client/endpoints/base.js.map +1 -1
  15. package/dist/client/endpoints/showcases.d.ts +31 -0
  16. package/dist/client/endpoints/showcases.d.ts.map +1 -0
  17. package/dist/client/endpoints/showcases.js +49 -0
  18. package/dist/client/endpoints/showcases.js.map +1 -0
  19. package/dist/client/errors.d.ts +1 -0
  20. package/dist/client/errors.d.ts.map +1 -1
  21. package/dist/client/errors.js +1 -1
  22. package/dist/client/errors.js.map +1 -1
  23. package/dist/client/index.d.ts +47 -38
  24. package/dist/client/index.d.ts.map +1 -1
  25. package/dist/client/index.js +89 -120
  26. package/dist/client/index.js.map +1 -1
  27. package/dist/client/resource-registry.d.ts +97 -0
  28. package/dist/client/resource-registry.d.ts.map +1 -0
  29. package/dist/client/resource-registry.js +157 -0
  30. package/dist/client/resource-registry.js.map +1 -0
  31. package/dist/client/transport.d.ts +99 -0
  32. package/dist/client/transport.d.ts.map +1 -0
  33. package/dist/client/transport.js +320 -0
  34. package/dist/client/transport.js.map +1 -0
  35. package/dist/client/types.d.ts +17 -6
  36. package/dist/client/types.d.ts.map +1 -1
  37. package/dist/client/types.js +28 -6
  38. package/dist/client/types.js.map +1 -1
  39. package/dist/cmd/animation-catalog.d.ts +26 -0
  40. package/dist/cmd/animation-catalog.d.ts.map +1 -0
  41. package/dist/cmd/animation-catalog.js +80 -0
  42. package/dist/cmd/animation-catalog.js.map +1 -0
  43. package/dist/cmd/api.d.ts +3 -2
  44. package/dist/cmd/api.d.ts.map +1 -1
  45. package/dist/cmd/api.js +22 -8
  46. package/dist/cmd/api.js.map +1 -1
  47. package/dist/cmd/auth.d.ts.map +1 -1
  48. package/dist/cmd/auth.js +5 -0
  49. package/dist/cmd/auth.js.map +1 -1
  50. package/dist/cmd/balance.d.ts.map +1 -1
  51. package/dist/cmd/balance.js +10 -6
  52. package/dist/cmd/balance.js.map +1 -1
  53. package/dist/cmd/creative-lab.d.ts +26 -0
  54. package/dist/cmd/creative-lab.d.ts.map +1 -0
  55. package/dist/cmd/creative-lab.js +256 -0
  56. package/dist/cmd/creative-lab.js.map +1 -0
  57. package/dist/cmd/delete.d.ts.map +1 -1
  58. package/dist/cmd/delete.js +6 -7
  59. package/dist/cmd/delete.js.map +1 -1
  60. package/dist/cmd/doctor.d.ts +23 -0
  61. package/dist/cmd/doctor.d.ts.map +1 -0
  62. package/dist/cmd/doctor.js +61 -0
  63. package/dist/cmd/doctor.js.map +1 -0
  64. package/dist/cmd/download.d.ts +17 -0
  65. package/dist/cmd/download.d.ts.map +1 -0
  66. package/dist/cmd/download.js +436 -0
  67. package/dist/cmd/download.js.map +1 -0
  68. package/dist/cmd/inspect.d.ts +63 -0
  69. package/dist/cmd/inspect.d.ts.map +1 -0
  70. package/dist/cmd/inspect.js +179 -0
  71. package/dist/cmd/inspect.js.map +1 -0
  72. package/dist/cmd/make.d.ts +13 -3
  73. package/dist/cmd/make.d.ts.map +1 -1
  74. package/dist/cmd/make.js +240 -36
  75. package/dist/cmd/make.js.map +1 -1
  76. package/dist/cmd/mesh.d.ts +13 -0
  77. package/dist/cmd/mesh.d.ts.map +1 -0
  78. package/dist/cmd/mesh.js +67 -0
  79. package/dist/cmd/mesh.js.map +1 -0
  80. package/dist/cmd/project.d.ts +16 -0
  81. package/dist/cmd/project.d.ts.map +1 -0
  82. package/dist/cmd/project.js +136 -0
  83. package/dist/cmd/project.js.map +1 -0
  84. package/dist/cmd/resources.d.ts +5 -0
  85. package/dist/cmd/resources.d.ts.map +1 -1
  86. package/dist/cmd/resources.js +38 -10
  87. package/dist/cmd/resources.js.map +1 -1
  88. package/dist/cmd/showcases.d.ts +10 -0
  89. package/dist/cmd/showcases.d.ts.map +1 -0
  90. package/dist/cmd/showcases.js +63 -0
  91. package/dist/cmd/showcases.js.map +1 -0
  92. package/dist/cmd/slicer.d.ts +12 -0
  93. package/dist/cmd/slicer.d.ts.map +1 -0
  94. package/dist/cmd/slicer.js +46 -0
  95. package/dist/cmd/slicer.js.map +1 -0
  96. package/dist/cmd/uv-unwrap.d.ts +16 -0
  97. package/dist/cmd/uv-unwrap.d.ts.map +1 -0
  98. package/dist/cmd/uv-unwrap.js +52 -0
  99. package/dist/cmd/uv-unwrap.js.map +1 -0
  100. package/dist/index.d.ts +13 -1
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +141 -8
  103. package/dist/index.js.map +1 -1
  104. package/dist/internal/artifacts.d.ts +97 -0
  105. package/dist/internal/artifacts.d.ts.map +1 -0
  106. package/dist/internal/artifacts.js +280 -0
  107. package/dist/internal/artifacts.js.map +1 -0
  108. package/dist/internal/atomic-file.d.ts +39 -0
  109. package/dist/internal/atomic-file.d.ts.map +1 -0
  110. package/dist/internal/atomic-file.js +160 -0
  111. package/dist/internal/atomic-file.js.map +1 -0
  112. package/dist/internal/command-helpers.d.ts +46 -0
  113. package/dist/internal/command-helpers.d.ts.map +1 -0
  114. package/dist/internal/command-helpers.js +61 -0
  115. package/dist/internal/command-helpers.js.map +1 -0
  116. package/dist/internal/config.d.ts +48 -5
  117. package/dist/internal/config.d.ts.map +1 -1
  118. package/dist/internal/config.js +95 -6
  119. package/dist/internal/config.js.map +1 -1
  120. package/dist/internal/context.d.ts +25 -0
  121. package/dist/internal/context.d.ts.map +1 -0
  122. package/dist/internal/context.js +37 -0
  123. package/dist/internal/context.js.map +1 -0
  124. package/dist/internal/credentials.d.ts +11 -0
  125. package/dist/internal/credentials.d.ts.map +1 -1
  126. package/dist/internal/credentials.js +2 -0
  127. package/dist/internal/credentials.js.map +1 -1
  128. package/dist/internal/doctor.d.ts +94 -0
  129. package/dist/internal/doctor.d.ts.map +1 -0
  130. package/dist/internal/doctor.js +280 -0
  131. package/dist/internal/doctor.js.map +1 -0
  132. package/dist/internal/download.d.ts +147 -13
  133. package/dist/internal/download.d.ts.map +1 -1
  134. package/dist/internal/download.js +735 -142
  135. package/dist/internal/download.js.map +1 -1
  136. package/dist/internal/env-file.d.ts +29 -0
  137. package/dist/internal/env-file.d.ts.map +1 -0
  138. package/dist/internal/env-file.js +95 -0
  139. package/dist/internal/env-file.js.map +1 -0
  140. package/dist/internal/errors.d.ts +74 -1
  141. package/dist/internal/errors.d.ts.map +1 -1
  142. package/dist/internal/errors.js +173 -1
  143. package/dist/internal/errors.js.map +1 -1
  144. package/dist/internal/file-input.d.ts +52 -12
  145. package/dist/internal/file-input.d.ts.map +1 -1
  146. package/dist/internal/file-input.js +162 -33
  147. package/dist/internal/file-input.js.map +1 -1
  148. package/dist/internal/global-options.d.ts +6 -4
  149. package/dist/internal/global-options.d.ts.map +1 -1
  150. package/dist/internal/global-options.js +19 -4
  151. package/dist/internal/global-options.js.map +1 -1
  152. package/dist/internal/inspect.d.ts +67 -0
  153. package/dist/internal/inspect.d.ts.map +1 -0
  154. package/dist/internal/inspect.js +111 -0
  155. package/dist/internal/inspect.js.map +1 -0
  156. package/dist/internal/lock.d.ts +19 -0
  157. package/dist/internal/lock.d.ts.map +1 -0
  158. package/dist/internal/lock.js +66 -0
  159. package/dist/internal/lock.js.map +1 -0
  160. package/dist/internal/material-links.d.ts +115 -0
  161. package/dist/internal/material-links.d.ts.map +1 -0
  162. package/dist/internal/material-links.js +577 -0
  163. package/dist/internal/material-links.js.map +1 -0
  164. package/dist/internal/obj-transform.d.ts +115 -0
  165. package/dist/internal/obj-transform.d.ts.map +1 -0
  166. package/dist/internal/obj-transform.js +649 -0
  167. package/dist/internal/obj-transform.js.map +1 -0
  168. package/dist/internal/operation-store.d.ts +123 -0
  169. package/dist/internal/operation-store.d.ts.map +1 -0
  170. package/dist/internal/operation-store.js +229 -0
  171. package/dist/internal/operation-store.js.map +1 -0
  172. package/dist/internal/output.d.ts +20 -2
  173. package/dist/internal/output.d.ts.map +1 -1
  174. package/dist/internal/output.js +32 -4
  175. package/dist/internal/output.js.map +1 -1
  176. package/dist/internal/paths.d.ts +89 -0
  177. package/dist/internal/paths.d.ts.map +1 -0
  178. package/dist/internal/paths.js +168 -0
  179. package/dist/internal/paths.js.map +1 -0
  180. package/dist/internal/payload.d.ts +15 -0
  181. package/dist/internal/payload.d.ts.map +1 -1
  182. package/dist/internal/payload.js +50 -3
  183. package/dist/internal/payload.js.map +1 -1
  184. package/dist/internal/poll.d.ts +30 -4
  185. package/dist/internal/poll.d.ts.map +1 -1
  186. package/dist/internal/poll.js +99 -16
  187. package/dist/internal/poll.js.map +1 -1
  188. package/dist/internal/project-store.d.ts +197 -0
  189. package/dist/internal/project-store.d.ts.map +1 -0
  190. package/dist/internal/project-store.js +467 -0
  191. package/dist/internal/project-store.js.map +1 -0
  192. package/dist/internal/result.d.ts +50 -0
  193. package/dist/internal/result.d.ts.map +1 -0
  194. package/dist/internal/result.js +41 -0
  195. package/dist/internal/result.js.map +1 -0
  196. package/dist/internal/runtime.d.ts +35 -5
  197. package/dist/internal/runtime.d.ts.map +1 -1
  198. package/dist/internal/runtime.js +68 -18
  199. package/dist/internal/runtime.js.map +1 -1
  200. package/dist/internal/slicers.d.ts +117 -0
  201. package/dist/internal/slicers.d.ts.map +1 -0
  202. package/dist/internal/slicers.js +314 -0
  203. package/dist/internal/slicers.js.map +1 -0
  204. package/dist/internal/stream.d.ts +58 -0
  205. package/dist/internal/stream.d.ts.map +1 -0
  206. package/dist/internal/stream.js +280 -0
  207. package/dist/internal/stream.js.map +1 -0
  208. package/dist/internal/task-command.d.ts +128 -11
  209. package/dist/internal/task-command.d.ts.map +1 -1
  210. package/dist/internal/task-command.js +991 -111
  211. package/dist/internal/task-command.js.map +1 -1
  212. package/dist/internal/task-view.d.ts +56 -0
  213. package/dist/internal/task-view.d.ts.map +1 -0
  214. package/dist/internal/task-view.js +95 -0
  215. package/dist/internal/task-view.js.map +1 -0
  216. package/dist/internal/update-notifier.d.ts +5 -1
  217. package/dist/internal/update-notifier.d.ts.map +1 -1
  218. package/dist/internal/update-notifier.js +7 -3
  219. package/dist/internal/update-notifier.js.map +1 -1
  220. package/dist/root.d.ts +10 -0
  221. package/dist/root.d.ts.map +1 -1
  222. package/dist/root.js +75 -10
  223. package/dist/root.js.map +1 -1
  224. package/package.json +3 -2
  225. package/skills/meshy-cli/SKILL.md +140 -59
  226. package/dist/client/endpoints/analyze-printability.d.ts +0 -5
  227. package/dist/client/endpoints/analyze-printability.d.ts.map +0 -1
  228. package/dist/client/endpoints/analyze-printability.js +0 -7
  229. package/dist/client/endpoints/analyze-printability.js.map +0 -1
  230. package/dist/client/endpoints/animate.d.ts +0 -6
  231. package/dist/client/endpoints/animate.d.ts.map +0 -1
  232. package/dist/client/endpoints/animate.js +0 -8
  233. package/dist/client/endpoints/animate.js.map +0 -1
  234. package/dist/client/endpoints/convert.d.ts +0 -5
  235. package/dist/client/endpoints/convert.d.ts.map +0 -1
  236. package/dist/client/endpoints/convert.js +0 -7
  237. package/dist/client/endpoints/convert.js.map +0 -1
  238. package/dist/client/endpoints/image-to-3d.d.ts +0 -5
  239. package/dist/client/endpoints/image-to-3d.d.ts.map +0 -1
  240. package/dist/client/endpoints/image-to-3d.js +0 -7
  241. package/dist/client/endpoints/image-to-3d.js.map +0 -1
  242. package/dist/client/endpoints/image-to-image.d.ts +0 -5
  243. package/dist/client/endpoints/image-to-image.d.ts.map +0 -1
  244. package/dist/client/endpoints/image-to-image.js +0 -7
  245. package/dist/client/endpoints/image-to-image.js.map +0 -1
  246. package/dist/client/endpoints/multi-color-print.d.ts +0 -5
  247. package/dist/client/endpoints/multi-color-print.d.ts.map +0 -1
  248. package/dist/client/endpoints/multi-color-print.js +0 -7
  249. package/dist/client/endpoints/multi-color-print.js.map +0 -1
  250. package/dist/client/endpoints/multi-image-to-3d.d.ts +0 -5
  251. package/dist/client/endpoints/multi-image-to-3d.d.ts.map +0 -1
  252. package/dist/client/endpoints/multi-image-to-3d.js +0 -7
  253. package/dist/client/endpoints/multi-image-to-3d.js.map +0 -1
  254. package/dist/client/endpoints/remesh.d.ts +0 -5
  255. package/dist/client/endpoints/remesh.d.ts.map +0 -1
  256. package/dist/client/endpoints/remesh.js +0 -7
  257. package/dist/client/endpoints/remesh.js.map +0 -1
  258. package/dist/client/endpoints/repair-printability.d.ts +0 -5
  259. package/dist/client/endpoints/repair-printability.d.ts.map +0 -1
  260. package/dist/client/endpoints/repair-printability.js +0 -7
  261. package/dist/client/endpoints/repair-printability.js.map +0 -1
  262. package/dist/client/endpoints/resize.d.ts +0 -5
  263. package/dist/client/endpoints/resize.d.ts.map +0 -1
  264. package/dist/client/endpoints/resize.js +0 -7
  265. package/dist/client/endpoints/resize.js.map +0 -1
  266. package/dist/client/endpoints/retexture.d.ts +0 -5
  267. package/dist/client/endpoints/retexture.d.ts.map +0 -1
  268. package/dist/client/endpoints/retexture.js +0 -7
  269. package/dist/client/endpoints/retexture.js.map +0 -1
  270. package/dist/client/endpoints/rigging.d.ts +0 -6
  271. package/dist/client/endpoints/rigging.d.ts.map +0 -1
  272. package/dist/client/endpoints/rigging.js +0 -8
  273. package/dist/client/endpoints/rigging.js.map +0 -1
  274. package/dist/client/endpoints/text-to-3d.d.ts +0 -6
  275. package/dist/client/endpoints/text-to-3d.d.ts.map +0 -1
  276. package/dist/client/endpoints/text-to-3d.js +0 -8
  277. package/dist/client/endpoints/text-to-3d.js.map +0 -1
  278. package/dist/client/endpoints/text-to-image.d.ts +0 -5
  279. package/dist/client/endpoints/text-to-image.d.ts.map +0 -1
  280. package/dist/client/endpoints/text-to-image.js +0 -7
  281. package/dist/client/endpoints/text-to-image.js.map +0 -1
  282. package/dist/client/endpoints/text-to-motion.d.ts +0 -6
  283. package/dist/client/endpoints/text-to-motion.d.ts.map +0 -1
  284. package/dist/client/endpoints/text-to-motion.js +0 -8
  285. package/dist/client/endpoints/text-to-motion.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obj-transform.js","sourceRoot":"","sources":["../../src/internal/obj-transform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Operation journal — a local, best-effort record of every billable create.
3
+ *
4
+ * It exists so a lost response can be reconciled instead of blindly re-sent:
5
+ * the record is written *before* the POST (state `started`), then updated to
6
+ * `accepted` (task id known), `rejected` (server said no), `not_submitted`
7
+ * (transport proves the request never left) or `unknown` (anything else after
8
+ * the request was sent). A repeated `--operation-id` returns the stored record
9
+ * instead of submitting again when the request fingerprints match, and refuses
10
+ * with `operation_conflict` when they do not.
11
+ *
12
+ * Identity of a request = resource + API origin + credential fingerprint +
13
+ * payload fingerprint. The credential fingerprint binds to the actual account:
14
+ * a keyed digest of the API key, or the stable OAuth subject (user id), or —
15
+ * when the token endpoint reported no user id — the per-login identifier
16
+ * minted at `meshy auth login`. Never the rotating access token, so a routine
17
+ * refresh is still the same identity while a different key under the same env
18
+ * variable, or a new login under the same profile name, is not. An OAuth
19
+ * profile that carries neither a user id nor a login id (written before login
20
+ * ids existed) has *no* verifiable identity: such a credential can start new
21
+ * operations but is refused a replay of an existing one, because "unknown"
22
+ * must never be read as "the same account". The payload
23
+ * fingerprint hashes media *content* (decoded bytes of every data URI), so two
24
+ * different images of the same size never collide.
25
+ *
26
+ * This is a local record only. It is not a server-side idempotency key and it
27
+ * cannot guarantee the server did not bill a request whose response was lost.
28
+ * Nothing secret is stored: no key material, no base64 media, no signed URLs —
29
+ * only one-way digests.
30
+ */
31
+ export type OperationState = "started" | "accepted" | "rejected" | "unknown" | "not_submitted";
32
+ export interface OperationRecord {
33
+ schema_version: 1;
34
+ operation_id: string;
35
+ state: OperationState;
36
+ resource: string;
37
+ endpoint: string;
38
+ api_origin: string;
39
+ credential_fingerprint: string;
40
+ payload_fingerprint: string;
41
+ started_at: string;
42
+ updated_at: string;
43
+ task_id: string | null;
44
+ request_id: string | null;
45
+ http_status: number | null;
46
+ error: string | null;
47
+ pid: number;
48
+ cli_version: string;
49
+ /** Optional link to the project that owns the task (set by --project). */
50
+ project: string | null;
51
+ }
52
+ export interface OperationIdentity {
53
+ resource: string;
54
+ endpoint: string;
55
+ apiOrigin: string;
56
+ credentialFingerprint: string;
57
+ /**
58
+ * False when nothing stable identifies the credential (an OAuth profile
59
+ * without user id or login id). Such a credential may start a new operation
60
+ * but is never granted a replay of an existing record. Default true.
61
+ */
62
+ credentialVerified?: boolean;
63
+ payloadFingerprint: string;
64
+ project?: string | null;
65
+ }
66
+ export declare function operationsRoot(env?: NodeJS.ProcessEnv): string;
67
+ export declare function newOperationId(): string;
68
+ export interface CredentialIdentityParts {
69
+ /** Where the credential came from: flag | env | env-file | file. */
70
+ source: string;
71
+ /** Stored profile name (credentialSource === "file"). */
72
+ profile?: string | null;
73
+ /** API origin the credential is used against. */
74
+ origin: string;
75
+ /** api_key | oauth. */
76
+ kind?: string;
77
+ /** The static API key itself (api_key kinds). Digested with a domain prefix; never stored. */
78
+ secret?: string | null;
79
+ /** Stable account subject for OAuth profiles (user id). Tokens rotate; the subject does not. */
80
+ subject?: string | null;
81
+ /** Per-login identifier of an OAuth profile (minted at `auth login`), used when no subject exists. */
82
+ loginId?: string | null;
83
+ }
84
+ export interface CredentialBinding {
85
+ /** What the fingerprint binds to; `unverified` when nothing stable identifies the account. */
86
+ binding: string;
87
+ verified: boolean;
88
+ }
89
+ /** Decide what identifies this credential — and whether anything does. */
90
+ export declare function credentialBinding(parts: CredentialIdentityParts): CredentialBinding;
91
+ /**
92
+ * `sha256(source|profile|kind|origin|binding)` where the binding is a keyed
93
+ * digest of the API key, the OAuth subject, or the OAuth login id. Two
94
+ * different keys from the same source therefore have different fingerprints;
95
+ * a refreshed OAuth token keeps its fingerprint as long as the account (or the
96
+ * login) is the same. Never reversible to a key. Callers must also consult
97
+ * `credentialBinding(parts).verified`: an unverified fingerprint identifies
98
+ * nothing and must not be matched against an existing record.
99
+ */
100
+ export declare function credentialFingerprint(parts: CredentialIdentityParts): string;
101
+ /**
102
+ * Canonical JSON with every data URI replaced by `data:<mime>;sha256=<digest of
103
+ * the decoded bytes>`: two submissions of the same file match (whatever the
104
+ * base64 line wrapping), two different files of equal size do not, and the
105
+ * journal never holds the content itself.
106
+ */
107
+ export declare function payloadFingerprint(payload: unknown): string;
108
+ export declare function dataUriDigest(uri: string): string;
109
+ export declare function readOperation(root: string, id: string): OperationRecord | null;
110
+ export interface BeginResult {
111
+ /** `created`: this process owns the submission. `existing`: an earlier run already has a record. */
112
+ outcome: "created" | "existing";
113
+ record: OperationRecord;
114
+ }
115
+ /**
116
+ * Under the journal lock: return the existing record when one exists for
117
+ * `operationId` with the same identity, throw `operation_conflict` when the
118
+ * identity differs, or write a fresh `started` record and return it.
119
+ */
120
+ export declare function beginOperation(root: string, operationId: string, identity: OperationIdentity, now?: () => Date): BeginResult;
121
+ export declare function updateOperation(root: string, operationId: string, patch: Partial<Pick<OperationRecord, "state" | "task_id" | "request_id" | "http_status" | "error" | "project">>, now?: () => Date): OperationRecord;
122
+ export declare function listOperations(root: string): OperationRecord[];
123
+ //# sourceMappingURL=operation-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation-store.d.ts","sourceRoot":"","sources":["../../src/internal/operation-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,229 @@
1
+ /**
2
+ * Operation journal — a local, best-effort record of every billable create.
3
+ *
4
+ * It exists so a lost response can be reconciled instead of blindly re-sent:
5
+ * the record is written *before* the POST (state `started`), then updated to
6
+ * `accepted` (task id known), `rejected` (server said no), `not_submitted`
7
+ * (transport proves the request never left) or `unknown` (anything else after
8
+ * the request was sent). A repeated `--operation-id` returns the stored record
9
+ * instead of submitting again when the request fingerprints match, and refuses
10
+ * with `operation_conflict` when they do not.
11
+ *
12
+ * Identity of a request = resource + API origin + credential fingerprint +
13
+ * payload fingerprint. The credential fingerprint binds to the actual account:
14
+ * a keyed digest of the API key, or the stable OAuth subject (user id), or —
15
+ * when the token endpoint reported no user id — the per-login identifier
16
+ * minted at `meshy auth login`. Never the rotating access token, so a routine
17
+ * refresh is still the same identity while a different key under the same env
18
+ * variable, or a new login under the same profile name, is not. An OAuth
19
+ * profile that carries neither a user id nor a login id (written before login
20
+ * ids existed) has *no* verifiable identity: such a credential can start new
21
+ * operations but is refused a replay of an existing one, because "unknown"
22
+ * must never be read as "the same account". The payload
23
+ * fingerprint hashes media *content* (decoded bytes of every data URI), so two
24
+ * different images of the same size never collide.
25
+ *
26
+ * This is a local record only. It is not a server-side idempotency key and it
27
+ * cannot guarantee the server did not bill a request whose response was lost.
28
+ * Nothing secret is stored: no key material, no base64 media, no signed URLs —
29
+ * only one-way digests.
30
+ */
31
+ import { createHash, randomUUID } from "node:crypto";
32
+ import { mkdirSync, readFileSync, readdirSync } from "node:fs";
33
+ import { join } from "node:path";
34
+ import { writeJsonFile } from "./atomic-file.js";
35
+ import { configDir } from "./credentials.js";
36
+ import { CliError } from "./errors.js";
37
+ import { withFileLock } from "./lock.js";
38
+ import { safeSegment } from "./paths.js";
39
+ import { VERSION } from "./version.js";
40
+ export function operationsRoot(env = process.env) {
41
+ return join(configDir(env), "operations");
42
+ }
43
+ export function newOperationId() {
44
+ return randomUUID();
45
+ }
46
+ /** Decide what identifies this credential — and whether anything does. */
47
+ export function credentialBinding(parts) {
48
+ if (parts.kind === "oauth") {
49
+ if (parts.subject)
50
+ return { binding: `subject:${parts.subject}`, verified: true };
51
+ if (parts.loginId)
52
+ return { binding: `login:${parts.loginId}`, verified: true };
53
+ return { binding: "unverified", verified: false };
54
+ }
55
+ if (parts.secret)
56
+ return { binding: `key:${sha256(`${CREDENTIAL_DIGEST_DOMAIN}|${parts.secret}`)}`, verified: true };
57
+ return { binding: "key:none", verified: false };
58
+ }
59
+ const CREDENTIAL_DIGEST_DOMAIN = "meshy-cli/credential-binding/v1";
60
+ /**
61
+ * `sha256(source|profile|kind|origin|binding)` where the binding is a keyed
62
+ * digest of the API key, the OAuth subject, or the OAuth login id. Two
63
+ * different keys from the same source therefore have different fingerprints;
64
+ * a refreshed OAuth token keeps its fingerprint as long as the account (or the
65
+ * login) is the same. Never reversible to a key. Callers must also consult
66
+ * `credentialBinding(parts).verified`: an unverified fingerprint identifies
67
+ * nothing and must not be matched against an existing record.
68
+ */
69
+ export function credentialFingerprint(parts) {
70
+ const { binding } = credentialBinding(parts);
71
+ return sha256(`${parts.source}|${parts.profile ?? ""}|${parts.kind ?? ""}|${parts.origin}|${binding}`);
72
+ }
73
+ /**
74
+ * Canonical JSON with every data URI replaced by `data:<mime>;sha256=<digest of
75
+ * the decoded bytes>`: two submissions of the same file match (whatever the
76
+ * base64 line wrapping), two different files of equal size do not, and the
77
+ * journal never holds the content itself.
78
+ */
79
+ export function payloadFingerprint(payload) {
80
+ return sha256(canonical(payload));
81
+ }
82
+ export function dataUriDigest(uri) {
83
+ const comma = uri.indexOf(",");
84
+ const header = comma === -1 ? uri.slice(5) : uri.slice(5, comma);
85
+ const payload = comma === -1 ? "" : uri.slice(comma + 1);
86
+ const mime = (header.split(";")[0] ?? "").toLowerCase();
87
+ const isBase64 = /(^|;)base64$/i.test(header) || /;base64(;|$)/i.test(header);
88
+ let bytes;
89
+ if (isBase64) {
90
+ bytes = Buffer.from(payload.replace(/\s+/g, ""), "base64");
91
+ }
92
+ else {
93
+ let text = payload;
94
+ try {
95
+ text = decodeURIComponent(payload);
96
+ }
97
+ catch {
98
+ /* keep the raw payload */
99
+ }
100
+ bytes = Buffer.from(text, "utf8");
101
+ }
102
+ return `data:${mime};sha256=${createHash("sha256").update(bytes).digest("hex")}`;
103
+ }
104
+ function canonical(v) {
105
+ if (v === null || typeof v !== "object") {
106
+ if (typeof v === "string" && /^data:/i.test(v)) {
107
+ return JSON.stringify(dataUriDigest(v));
108
+ }
109
+ return JSON.stringify(v);
110
+ }
111
+ if (Array.isArray(v))
112
+ return `[${v.map(canonical).join(",")}]`;
113
+ const keys = Object.keys(v).sort();
114
+ return `{${keys.map((k) => `${JSON.stringify(k)}:${canonical(v[k])}`).join(",")}}`;
115
+ }
116
+ function sha256(s) {
117
+ return createHash("sha256").update(s).digest("hex");
118
+ }
119
+ function recordPath(root, id) {
120
+ return join(root, `${safeSegment(id, "op")}.json`);
121
+ }
122
+ function lockPath(root) {
123
+ return join(root, "locks", "operations.lock");
124
+ }
125
+ export function readOperation(root, id) {
126
+ try {
127
+ const raw = JSON.parse(readFileSync(recordPath(root, id), "utf8"));
128
+ return raw && raw.schema_version === 1 ? raw : null;
129
+ }
130
+ catch (err) {
131
+ if (err.code === "ENOENT")
132
+ return null;
133
+ throw new CliError({ code: "local_io", message: `operation record ${recordPath(root, id)} is unreadable: ${err.message}` });
134
+ }
135
+ }
136
+ /**
137
+ * Under the journal lock: return the existing record when one exists for
138
+ * `operationId` with the same identity, throw `operation_conflict` when the
139
+ * identity differs, or write a fresh `started` record and return it.
140
+ */
141
+ export function beginOperation(root, operationId, identity, now = () => new Date()) {
142
+ mkdirSync(root, { recursive: true, mode: 0o700 });
143
+ return withFileLock(lockPath(root), () => {
144
+ const existing = readOperation(root, operationId);
145
+ if (existing) {
146
+ if (identity.credentialVerified === false) {
147
+ throw new CliError({
148
+ code: "operation_conflict",
149
+ message: `operation ${operationId} already exists but the current OAuth login has no account identity (profile without user_id or login_id), so it cannot be confirmed as the same account; ` +
150
+ "nothing was submitted — run `meshy auth login` to bind this login, or use a new --operation-id",
151
+ recovery: { action: "login", automatic: false, command: "meshy auth login" },
152
+ result: { submission: { state: existing.state, operation_id: operationId, task_id: existing.task_id }, conflict: ["credential_unverified"] },
153
+ });
154
+ }
155
+ const differs = [];
156
+ if (existing.resource !== identity.resource)
157
+ differs.push("resource");
158
+ if (existing.api_origin !== identity.apiOrigin)
159
+ differs.push("origin");
160
+ if (existing.credential_fingerprint !== identity.credentialFingerprint)
161
+ differs.push("credential");
162
+ if (existing.payload_fingerprint !== identity.payloadFingerprint)
163
+ differs.push("payload");
164
+ if (differs.length > 0) {
165
+ throw new CliError({
166
+ code: "operation_conflict",
167
+ message: `operation ${operationId} already exists for a different request (${differs.join(", ")} differ); nothing was submitted — use a new --operation-id for a new request`,
168
+ result: { submission: { state: existing.state, operation_id: operationId, task_id: existing.task_id }, conflict: differs },
169
+ });
170
+ }
171
+ return { outcome: "existing", record: existing };
172
+ }
173
+ const ts = now().toISOString();
174
+ const record = {
175
+ schema_version: 1,
176
+ operation_id: operationId,
177
+ state: "started",
178
+ resource: identity.resource,
179
+ endpoint: identity.endpoint,
180
+ api_origin: identity.apiOrigin,
181
+ credential_fingerprint: identity.credentialFingerprint,
182
+ payload_fingerprint: identity.payloadFingerprint,
183
+ started_at: ts,
184
+ updated_at: ts,
185
+ task_id: null,
186
+ request_id: null,
187
+ http_status: null,
188
+ error: null,
189
+ pid: process.pid,
190
+ cli_version: VERSION,
191
+ project: identity.project ?? null,
192
+ };
193
+ writeJsonFile(recordPath(root, operationId), record, { overwrite: false, mode: 0o600 });
194
+ return { outcome: "created", record };
195
+ });
196
+ }
197
+ export function updateOperation(root, operationId, patch, now = () => new Date()) {
198
+ return withFileLock(lockPath(root), () => {
199
+ const existing = readOperation(root, operationId);
200
+ if (!existing) {
201
+ throw new CliError({ code: "local_io", message: `operation record ${operationId} disappeared before it could be updated` });
202
+ }
203
+ const next = { ...existing, ...patch, updated_at: now().toISOString() };
204
+ writeJsonFile(recordPath(root, operationId), next, { overwrite: true, mode: 0o600 });
205
+ return next;
206
+ });
207
+ }
208
+ export function listOperations(root) {
209
+ let names;
210
+ try {
211
+ names = readdirSync(root).filter((n) => n.endsWith(".json"));
212
+ }
213
+ catch {
214
+ return [];
215
+ }
216
+ const out = [];
217
+ for (const n of names) {
218
+ try {
219
+ const rec = JSON.parse(readFileSync(join(root, n), "utf8"));
220
+ if (rec && rec.schema_version === 1)
221
+ out.push(rec);
222
+ }
223
+ catch {
224
+ /* skip unreadable */
225
+ }
226
+ }
227
+ return out.sort((a, b) => a.started_at.localeCompare(b.started_at));
228
+ }
229
+ //# sourceMappingURL=operation-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation-store.js","sourceRoot":"","sources":["../../src/internal/operation-store.ts"],"names":[],"mappings":"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"}
@@ -2,14 +2,32 @@
2
2
  * Output rendering. Keep stdout machine-parseable by default; `pretty` is
3
3
  * opt-in for human eyes.
4
4
  *
5
- * Note: stdout JSON may carry `_notice.update` when a newer meshy-cli version
6
- * is available. See update-notifier.ts for the two-channel design.
5
+ * Legacy path (`emit`): bare payloads, optionally decorated with
6
+ * `_notice.update` when a newer meshy-cli version is available. See
7
+ * update-notifier.ts for the two-channel design.
8
+ *
9
+ * v1 path (`emitEnvelope`): exactly one envelope object, never decorated —
10
+ * the six top-level keys are the contract. Humans on a TTY still get the
11
+ * update hint on stderr.
7
12
  */
13
+ import type { StreamEventEnvelope, V1Envelope } from "./result.js";
8
14
  export type OutputFormat = "json" | "pretty" | "ndjson";
9
15
  export interface OutputOptions {
10
16
  format: OutputFormat;
11
17
  file?: string;
12
18
  }
13
19
  export declare function emit(value: unknown, opts: OutputOptions): void;
20
+ /**
21
+ * Write to stdout and resolve once the bytes are handed to the OS. Needed
22
+ * before an explicit process.exit(), which does not wait for pending writes
23
+ * on pipes — large JSON or a cancelled stream would otherwise be truncated.
24
+ */
25
+ export declare function writeStdout(text: string): Promise<void>;
26
+ /** Print one v1 envelope in the requested rendering. */
27
+ export declare function emitEnvelope(envelope: V1Envelope, format: OutputFormat): Promise<void>;
28
+ /** Print one stream event (ndjson only; json/pretty callers print the final envelope instead). */
29
+ export declare function emitStreamEvent(event: StreamEventEnvelope): Promise<void>;
30
+ export declare function render(value: unknown, format: OutputFormat): string;
31
+ export declare function renderPretty(value: unknown, indent?: number): string;
14
32
  export declare function parseOutputFormat(raw: string | undefined): OutputFormat;
15
33
  //# sourceMappingURL=output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/internal/output.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAa9D;AAkCD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAIvE"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/internal/output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEnE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAa9D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvD;AAED,wDAAwD;AACxD,wBAAsB,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5F;AAED,kGAAkG;AAClG,wBAAsB,eAAe,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/E;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAUnE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,SAAI,GAAG,MAAM,CAkB/D;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAIvE"}
@@ -2,8 +2,13 @@
2
2
  * Output rendering. Keep stdout machine-parseable by default; `pretty` is
3
3
  * opt-in for human eyes.
4
4
  *
5
- * Note: stdout JSON may carry `_notice.update` when a newer meshy-cli version
6
- * is available. See update-notifier.ts for the two-channel design.
5
+ * Legacy path (`emit`): bare payloads, optionally decorated with
6
+ * `_notice.update` when a newer meshy-cli version is available. See
7
+ * update-notifier.ts for the two-channel design.
8
+ *
9
+ * v1 path (`emitEnvelope`): exactly one envelope object, never decorated —
10
+ * the six top-level keys are the contract. Humans on a TTY still get the
11
+ * update hint on stderr.
7
12
  */
8
13
  import { writeFileSync } from "node:fs";
9
14
  import { attachUpdateNotice, getUpdateNotice, printHumanUpdateHint } from "./update-notifier.js";
@@ -22,7 +27,30 @@ export function emit(value, opts) {
22
27
  // they bypass emit() via printReport.
23
28
  printHumanUpdateHint(notice, process);
24
29
  }
25
- function render(value, format) {
30
+ /**
31
+ * Write to stdout and resolve once the bytes are handed to the OS. Needed
32
+ * before an explicit process.exit(), which does not wait for pending writes
33
+ * on pipes — large JSON or a cancelled stream would otherwise be truncated.
34
+ */
35
+ export function writeStdout(text) {
36
+ return new Promise((resolve, reject) => {
37
+ const ok = process.stdout.write(text, (err) => (err ? reject(err) : resolve()));
38
+ if (ok) {
39
+ // Callback still fires; nothing else to do.
40
+ }
41
+ });
42
+ }
43
+ /** Print one v1 envelope in the requested rendering. */
44
+ export async function emitEnvelope(envelope, format) {
45
+ const text = format === "pretty" ? renderPretty(envelope) : format === "ndjson" ? JSON.stringify(envelope) : JSON.stringify(envelope, null, 2);
46
+ await writeStdout(`${text}\n`);
47
+ printHumanUpdateHint(getUpdateNotice(), process);
48
+ }
49
+ /** Print one stream event (ndjson only; json/pretty callers print the final envelope instead). */
50
+ export async function emitStreamEvent(event) {
51
+ await writeStdout(`${JSON.stringify(event)}\n`);
52
+ }
53
+ export function render(value, format) {
26
54
  switch (format) {
27
55
  case "json":
28
56
  return JSON.stringify(value, null, 2);
@@ -34,7 +62,7 @@ function render(value, format) {
34
62
  return renderPretty(value);
35
63
  }
36
64
  }
37
- function renderPretty(value, indent = 0) {
65
+ export function renderPretty(value, indent = 0) {
38
66
  const pad = " ".repeat(indent);
39
67
  if (value === null || value === undefined)
40
68
  return `${pad}-`;
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/internal/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/internal/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Path containment and safe naming.
3
+ *
4
+ * Every file the CLI writes is checked against an authorised root: the
5
+ * explicit --workspace when given, otherwise the root the command itself
6
+ * authorised (a project directory, or the parent of an explicit output path).
7
+ * Containment is decided on real paths — the deepest existing ancestor is
8
+ * resolved with realpath so a symlinked directory cannot redirect a write —
9
+ * never with a string prefix test.
10
+ *
11
+ * The root itself is *frozen* when the command starts (`freezeRoot`): its real
12
+ * path and the identity (device, inode) of the physical directory behind it are
13
+ * captured before the first request or write, and every later check
14
+ * (`resolveWithinRoot` with an `AuthorisedRoot`) first proves that this very
15
+ * directory is still there — not a symlink that appeared at its path, not a
16
+ * different directory — and then proves the target's real path inside it. A
17
+ * root that is re-resolved at check time would move with whatever now sits at
18
+ * its path; a frozen root cannot. Stable aliases (macOS `/var` → `/private/var`,
19
+ * a symlinked parent, a workspace given through a symlink that keeps pointing
20
+ * at the same directory) resolve to the same physical directory and pass.
21
+ */
22
+ export interface ResolvedTarget {
23
+ /** Absolute, normalised path as given (symlink-free for the existing part). */
24
+ path: string;
25
+ /** The authorised root the path was checked against. */
26
+ root: string;
27
+ /** Path relative to root, POSIX separators. */
28
+ relative: string;
29
+ }
30
+ /** Resolve the real path of the deepest existing ancestor and re-append the missing tail. */
31
+ export declare function realpathLenient(path: string): string;
32
+ export declare function isInside(root: string, candidate: string): boolean;
33
+ /**
34
+ * A write boundary fixed at the start of a command. `real` is where writes may
35
+ * land; `anchor` is the deepest part of it that existed when frozen (the whole
36
+ * root when it exists) and `dev`/`ino` identify that directory. A later check
37
+ * re-proves the identity, so replacing the directory at that path — a symlink
38
+ * to somewhere else, a different directory swapped in — is refused rather than
39
+ * silently becoming the new root.
40
+ */
41
+ export interface AuthorisedRoot {
42
+ /** The root as authorised, absolute (what the user named). */
43
+ given: string;
44
+ /** Real path of the root when frozen. */
45
+ real: string;
46
+ /** Real path of the deepest existing ancestor when frozen (equals `real` when the root existed). */
47
+ anchor: string;
48
+ dev: number;
49
+ ino: number;
50
+ /** Whether `anchor` was a directory when frozen (a file is refused at the first write, not earlier). */
51
+ directory: boolean;
52
+ /** Name used in messages: "--workspace", "--project", "output directory" … */
53
+ label: string;
54
+ }
55
+ /** Freeze a write boundary: resolve it once and remember which directory it is. */
56
+ export declare function freezeRoot(path: string, opts?: {
57
+ cwd?: string;
58
+ label?: string;
59
+ }): AuthorisedRoot;
60
+ /**
61
+ * The directory a root was frozen on must still be the one at its path: a
62
+ * directory (never a symlink), with the same device and inode. Anything else
63
+ * means the authorised boundary was moved or replaced since the command started.
64
+ */
65
+ export declare function assertRootIntact(root: AuthorisedRoot): void;
66
+ /**
67
+ * Resolve `target` (file or directory) against cwd and prove it lies inside
68
+ * `root`. A symlink at the leaf is rejected for write targets: replacing or
69
+ * following it could land the bytes outside the root.
70
+ *
71
+ * With an `AuthorisedRoot` the root is not resolved again: its frozen real path
72
+ * is the boundary and its identity is re-proven first. A plain string root is
73
+ * resolved here (for one-shot local checks with no request in between).
74
+ */
75
+ export declare function resolveWithinRoot(target: string, root: string | AuthorisedRoot, opts?: {
76
+ cwd?: string;
77
+ allowSymlinkLeaf?: boolean;
78
+ label?: string;
79
+ }): ResolvedTarget;
80
+ /**
81
+ * Turn an arbitrary string (asset key, task id, project name) into a single
82
+ * safe path segment: lowercase-insensitive ASCII letters, digits, `.`, `_`,
83
+ * `-`; everything else becomes `_`; no leading dots, no reserved names, no
84
+ * empty result.
85
+ */
86
+ export declare function safeSegment(input: string, fallback?: string): string;
87
+ /** Lowercase file extension without the dot, or "" when the name has none or it is not a plain token. */
88
+ export declare function safeExtension(ext: string): string;
89
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/internal/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,MAAM,WAAW,cAAc;IAC7B,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,6FAA6F;AAC7F,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBpD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAGjE;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,oGAAoG;IACpG,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,wGAAwG;IACxG,SAAS,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC;CACf;AAMD,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,cAAc,CAepG;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAoB3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,cAAc,EAC7B,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACtE,cAAc,CA+BhB;AAID;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAS,GAAG,MAAM,CAMpE;AAED,yGAAyG;AACzG,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGjD"}