@mesh-tech/mesh-cli 0.36.0 → 0.37.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 (103) hide show
  1. package/assets/docs-preview.css +1599 -0
  2. package/dist/bin/mesh.auth-preflight-JFKL4Y4X.js +48 -0
  3. package/dist/bin/mesh.auth-preflight-JFKL4Y4X.js.map +6 -0
  4. package/dist/bin/mesh.capture-history-A4IAVVIR.js +38 -0
  5. package/dist/bin/mesh.capture-history-A4IAVVIR.js.map +6 -0
  6. package/dist/bin/mesh.chunk-5A5OFSYR.js +187 -0
  7. package/dist/bin/mesh.chunk-5A5OFSYR.js.map +6 -0
  8. package/dist/bin/mesh.chunk-7DMAFUBQ.js +7715 -0
  9. package/dist/bin/mesh.chunk-7DMAFUBQ.js.map +6 -0
  10. package/dist/bin/mesh.chunk-A4DGMGHF.js +303 -0
  11. package/dist/bin/mesh.chunk-A4DGMGHF.js.map +6 -0
  12. package/dist/bin/mesh.chunk-CQ2IC4OP.js +217 -0
  13. package/dist/bin/mesh.chunk-CQ2IC4OP.js.map +6 -0
  14. package/dist/bin/mesh.chunk-F4654EPX.js +383 -0
  15. package/dist/bin/mesh.chunk-F4654EPX.js.map +6 -0
  16. package/dist/bin/mesh.chunk-IQOBTL42.js +60 -0
  17. package/dist/bin/mesh.chunk-IQOBTL42.js.map +6 -0
  18. package/dist/bin/mesh.chunk-J6DVWKRW.js +647 -0
  19. package/dist/bin/mesh.chunk-J6DVWKRW.js.map +6 -0
  20. package/dist/bin/mesh.chunk-JB7FWYSP.js +1751 -0
  21. package/dist/bin/mesh.chunk-JB7FWYSP.js.map +6 -0
  22. package/dist/bin/mesh.chunk-MCBMHWXP.js +837 -0
  23. package/dist/bin/mesh.chunk-MCBMHWXP.js.map +6 -0
  24. package/dist/bin/mesh.chunk-OW5EMVG5.js +507 -0
  25. package/dist/bin/mesh.chunk-OW5EMVG5.js.map +6 -0
  26. package/dist/bin/mesh.chunk-R5VVTXG4.js +10092 -0
  27. package/dist/bin/mesh.chunk-R5VVTXG4.js.map +6 -0
  28. package/dist/bin/mesh.chunk-VKV6Z3UI.js +1146 -0
  29. package/dist/bin/mesh.chunk-VKV6Z3UI.js.map +6 -0
  30. package/dist/bin/mesh.chunk-WFFDF346.js +59 -0
  31. package/dist/bin/mesh.chunk-WFFDF346.js.map +6 -0
  32. package/dist/bin/mesh.chunk-WOJOTUFZ.js +835 -0
  33. package/dist/bin/mesh.chunk-WOJOTUFZ.js.map +6 -0
  34. package/dist/bin/mesh.cli-reference-H3TOPIET.js +158 -0
  35. package/dist/bin/mesh.cli-reference-H3TOPIET.js.map +6 -0
  36. package/dist/bin/mesh.convert-KK6ZP256.js +274 -0
  37. package/dist/bin/mesh.convert-KK6ZP256.js.map +6 -0
  38. package/dist/bin/mesh.create-app-A5F45PWZ.js +39 -0
  39. package/dist/bin/mesh.create-app-A5F45PWZ.js.map +6 -0
  40. package/dist/bin/mesh.dev-token-server-GYDYPXYH.js +61 -0
  41. package/dist/bin/mesh.dev-token-server-GYDYPXYH.js.map +6 -0
  42. package/dist/bin/mesh.js +20 -26418
  43. package/dist/bin/mesh.js.map +3 -3
  44. package/dist/bin/mesh.login-JNHPVMCT.js +91 -0
  45. package/dist/bin/mesh.login-JNHPVMCT.js.map +6 -0
  46. package/dist/bin/mesh.platform-setup-EB64EFRN.js +37 -0
  47. package/dist/bin/mesh.platform-setup-EB64EFRN.js.map +6 -0
  48. package/dist/bin/mesh.preview-3IP34TDO.js +2410 -0
  49. package/dist/bin/mesh.preview-3IP34TDO.js.map +6 -0
  50. package/dist/bin/mesh.program-DWOKHNMQ.js +23 -0
  51. package/dist/bin/mesh.program-DWOKHNMQ.js.map +6 -0
  52. package/dist/bin/mesh.registry-OXF57OQW.js +47 -0
  53. package/dist/bin/mesh.registry-OXF57OQW.js.map +6 -0
  54. package/dist/bin/mesh.registry-identity-2HSGQGJC.js +42 -0
  55. package/dist/bin/mesh.registry-identity-2HSGQGJC.js.map +6 -0
  56. package/dist/bin/mesh.skills-MNDSMBIE.js +23 -0
  57. package/dist/bin/mesh.skills-MNDSMBIE.js.map +6 -0
  58. package/dist/bin/mesh.src-5D5DFSLX.js +1302 -0
  59. package/dist/bin/mesh.src-5D5DFSLX.js.map +6 -0
  60. package/dist/bin/mesh.src-G7TJBLNJ.js +40 -0
  61. package/dist/bin/mesh.src-G7TJBLNJ.js.map +6 -0
  62. package/dist/bin/mesh.stack-EFTFAOCV.js +64 -0
  63. package/dist/bin/mesh.stack-EFTFAOCV.js.map +6 -0
  64. package/dist/bin/mesh.start-ARIIY6CV.js +454 -0
  65. package/dist/bin/mesh.start-ARIIY6CV.js.map +6 -0
  66. package/dist/bin/mesh.wizard-ROAQAGSF.js +500 -0
  67. package/dist/bin/mesh.wizard-ROAQAGSF.js.map +6 -0
  68. package/dist/build-info.json +2 -2
  69. package/dist/src/commands/app-check.d.ts +2 -1
  70. package/dist/src/commands/app-check.js +32 -0
  71. package/dist/src/commands/dev.d.ts +6 -0
  72. package/dist/src/commands/dev.js +152 -3
  73. package/dist/src/commands/docs.js +33 -0
  74. package/dist/src/commands/local/act-as-local.d.ts +5 -0
  75. package/dist/src/commands/local/act-as-local.js +41 -0
  76. package/dist/src/commands/local/auth-provision.d.ts +1 -0
  77. package/dist/src/commands/local/auth-provision.js +1 -0
  78. package/dist/src/commands/local/index.js +4 -0
  79. package/dist/src/commands/local/local-api-key.d.ts +44 -0
  80. package/dist/src/commands/local/local-api-key.js +115 -0
  81. package/dist/src/commands/local/local-spicedb.d.ts +95 -0
  82. package/dist/src/commands/local/local-spicedb.js +304 -0
  83. package/dist/src/commands/local/publish-docs.d.ts +81 -0
  84. package/dist/src/commands/local/publish-docs.js +328 -0
  85. package/dist/src/commands/local/seed-zitadel.js +2 -0
  86. package/dist/src/commands/temporal.js +191 -61
  87. package/dist/src/commands/temporal.js.map +3 -3
  88. package/dist/src/docs/convert.d.ts +35 -0
  89. package/dist/src/docs/convert.js +276 -0
  90. package/dist/src/docs/preview-source.d.ts +13 -0
  91. package/dist/src/docs/preview-source.js +58 -0
  92. package/dist/src/docs/preview.d.ts +32 -0
  93. package/dist/src/docs/preview.js +279 -0
  94. package/fragments/agents/AGENTS.md.hbs +27 -27
  95. package/fragments/base/README.md.hbs +5 -2
  96. package/fragments/base/index.ts.hbs +17 -30
  97. package/fragments/base/package.json.hbs +4 -1
  98. package/fragments/service/api/openapi.json.hbs +1 -1
  99. package/fragments/service/docs/docs.yaml.hbs +10 -0
  100. package/fragments/service/docs/pages/getting-started.md.hbs +6 -9
  101. package/package.json +19 -3
  102. package/skills/mesh/SKILL.md +2 -2
  103. package/stack/docker-compose.hub.yml +6 -0
@@ -0,0 +1,48 @@
1
+ import {
2
+ REGISTRY_LOGIN_FIX,
3
+ REGISTRY_LOGIN_FIX_AWS,
4
+ SSO_LOGIN_FIX,
5
+ SSO_SESSION_SNIPPET,
6
+ appUsesMeshPackages,
7
+ awsConfigHasProfile,
8
+ classifyRegistryPreflight,
9
+ classifyRegistryStatus,
10
+ findUnscopedCodeArtifactRegistry,
11
+ homeNpmrcPath,
12
+ isExpiredAwsTokenMessage,
13
+ isNpmAuthError,
14
+ isNpmAuthErrorText,
15
+ npmrcAuthKeyForEndpoint,
16
+ parseNpmrcRegistryAuth,
17
+ parseSsoSessionNames,
18
+ probeRegistryToken,
19
+ readAwsConfig,
20
+ registryLoginFix,
21
+ registryPreflight,
22
+ stripUnscopedCodeArtifactRegistry,
23
+ upsertNpmrcLines
24
+ } from "./mesh.chunk-5A5OFSYR.js";
25
+ export {
26
+ REGISTRY_LOGIN_FIX,
27
+ REGISTRY_LOGIN_FIX_AWS,
28
+ SSO_LOGIN_FIX,
29
+ SSO_SESSION_SNIPPET,
30
+ appUsesMeshPackages,
31
+ awsConfigHasProfile,
32
+ classifyRegistryPreflight,
33
+ classifyRegistryStatus,
34
+ findUnscopedCodeArtifactRegistry,
35
+ homeNpmrcPath,
36
+ isExpiredAwsTokenMessage,
37
+ isNpmAuthError,
38
+ isNpmAuthErrorText,
39
+ npmrcAuthKeyForEndpoint,
40
+ parseNpmrcRegistryAuth,
41
+ parseSsoSessionNames,
42
+ probeRegistryToken,
43
+ readAwsConfig,
44
+ registryLoginFix,
45
+ registryPreflight,
46
+ stripUnscopedCodeArtifactRegistry,
47
+ upsertNpmrcLines
48
+ };
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "mappings": "",
5
+ "names": []
6
+ }
@@ -0,0 +1,38 @@
1
+ // packages/mesh-cli/src/utils/capture-history.ts
2
+ import { historyToJSON } from "@temporalio/common/lib/proto-utils.js";
3
+ function isPayload(value) {
4
+ return value != null && typeof value === "object" && "metadata" in value && "data" in value;
5
+ }
6
+ async function decryptHistoryPayloads(node, decrypt) {
7
+ if (node == null || typeof node !== "object") return 0;
8
+ if (isPayload(node)) {
9
+ const inner = await decrypt(node);
10
+ if (inner === null) return 0;
11
+ node.metadata = inner.metadata ?? {};
12
+ node.data = inner.data ?? new Uint8Array(0);
13
+ return 1;
14
+ }
15
+ let count = 0;
16
+ if (Array.isArray(node)) {
17
+ for (const item of node) count += await decryptHistoryPayloads(item, decrypt);
18
+ } else {
19
+ for (const value of Object.values(node)) {
20
+ count += await decryptHistoryPayloads(value, decrypt);
21
+ }
22
+ }
23
+ return count;
24
+ }
25
+ async function serializeHistoryToFixture(events, decrypter) {
26
+ let decryptedPayloads = 0;
27
+ if (decrypter) {
28
+ for (const event of events) {
29
+ decryptedPayloads += await decryptHistoryPayloads(event, decrypter);
30
+ }
31
+ }
32
+ const fixture = JSON.parse(historyToJSON({ events }));
33
+ return { fixture, eventCount: events.length, decryptedPayloads };
34
+ }
35
+ export {
36
+ decryptHistoryPayloads,
37
+ serializeHistoryToFixture
38
+ };
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/capture-history.ts"],
4
+ "mappings": ";AA2BA,SAAS,qBAAqB;AAc9B,SAAS,UAAU,OAAyC;AAC1D,SACE,SAAS,QACT,OAAO,UAAU,YACjB,cAAc,SACd,UAAU;AAEd;AAaA,eAAsB,uBACpB,MACA,SACiB;AACjB,MAAI,QAAQ,QAAQ,OAAO,SAAS,SAAU,QAAO;AAErD,MAAI,UAAU,IAAI,GAAG;AACnB,UAAM,QAAQ,MAAM,QAAQ,IAAkB;AAC9C,QAAI,UAAU,KAAM,QAAO;AAE3B,SAAK,WAAW,MAAM,YAAY,CAAC;AACnC,SAAK,OAAO,MAAM,QAAQ,IAAI,WAAW,CAAC;AAC1C,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ;AACZ,MAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,eAAW,QAAQ,KAAM,UAAS,MAAM,uBAAuB,MAAM,OAAO;AAAA,EAC9E,OAAO;AACL,eAAW,SAAS,OAAO,OAAO,IAA+B,GAAG;AAClE,eAAS,MAAM,uBAAuB,OAAO,OAAO;AAAA,IACtD;AAAA,EACF;AACA,SAAO;AACT;AA2BA,eAAsB,0BACpB,QACA,WACwB;AACxB,MAAI,oBAAoB;AACxB,MAAI,WAAW;AACb,eAAW,SAAS,QAAQ;AAC1B,2BAAqB,MAAM,uBAAuB,OAAO,SAAS;AAAA,IACpE;AAAA,EACF;AAEA,QAAM,UAAU,KAAK,MAAM,cAAc,EAAE,OAAO,CAAU,CAAC;AAC7D,SAAO,EAAE,SAAS,YAAY,OAAO,QAAQ,kBAAkB;AACjE;",
5
+ "names": []
6
+ }
@@ -0,0 +1,187 @@
1
+ // packages/mesh-cli/src/utils/auth-preflight.ts
2
+ import * as fs from "fs";
3
+ import * as os from "os";
4
+ import * as path from "path";
5
+ var REGISTRY_LOGIN_FIX = "mesh registry login";
6
+ var REGISTRY_LOGIN_FIX_AWS = "mesh registry login --profile mesh-dev";
7
+ function registryLoginFix() {
8
+ return REGISTRY_LOGIN_FIX;
9
+ }
10
+ var SSO_LOGIN_FIX = "aws sso login --sso-session=mesh # or: pnpm sso";
11
+ var SSO_SESSION_SNIPPET = `[sso-session mesh]
12
+ sso_start_url = https://trabian.awsapps.com/start
13
+ sso_region = us-east-1
14
+ sso_registration_scopes = sso:account:access`;
15
+ function homeNpmrcPath() {
16
+ return path.join(os.homedir(), ".npmrc");
17
+ }
18
+ function parseNpmrcRegistryAuth(content) {
19
+ for (const line of content.split("\n")) {
20
+ const match = line.trim().match(/^\/\/([^:]*\.codeartifact\.[^:]*):_authToken=(.+)$/);
21
+ if (match && match[1] && match[2]) {
22
+ const endpoint = `https://${match[1]}${match[1].endsWith("/") ? "" : "/"}`;
23
+ return { endpoint, token: match[2].trim() };
24
+ }
25
+ }
26
+ return null;
27
+ }
28
+ function findUnscopedCodeArtifactRegistry(content) {
29
+ for (const line of content.split("\n")) {
30
+ const trimmed = line.trim();
31
+ if (!trimmed || trimmed.startsWith(";") || trimmed.startsWith("#")) continue;
32
+ const match = trimmed.match(/^registry\s*=\s*(\S+)$/);
33
+ if (!match || !match[1]) continue;
34
+ if (isCodeArtifactRegistryUrl(match[1])) return line;
35
+ }
36
+ return null;
37
+ }
38
+ function isCodeArtifactRegistryUrl(value) {
39
+ try {
40
+ return new URL(value).hostname.includes(".codeartifact.");
41
+ } catch {
42
+ return value.includes(".codeartifact.");
43
+ }
44
+ }
45
+ function stripUnscopedCodeArtifactRegistry(content) {
46
+ const offender = findUnscopedCodeArtifactRegistry(content);
47
+ if (offender === null) return { content, removed: null };
48
+ const kept = content.split("\n").filter((line) => findUnscopedCodeArtifactRegistry(line) === null);
49
+ return { content: kept.join("\n"), removed: offender };
50
+ }
51
+ function npmrcAuthKeyForEndpoint(endpoint) {
52
+ const withoutScheme = endpoint.replace(/^https?:\/\//, "");
53
+ return `//${withoutScheme.endsWith("/") ? withoutScheme : `${withoutScheme}/`}`;
54
+ }
55
+ function upsertNpmrcLines(content, entries) {
56
+ let lines = content.length ? content.split("\n") : [];
57
+ const trailingNewline = content.endsWith("\n");
58
+ if (trailingNewline) lines = lines.slice(0, -1);
59
+ for (const { key, value } of entries) {
60
+ const line = `${key}=${value}`;
61
+ const idx = lines.findIndex((l) => {
62
+ const trimmed = l.trim();
63
+ if (!trimmed || trimmed.startsWith(";") || trimmed.startsWith("#")) return false;
64
+ const eq = trimmed.indexOf("=");
65
+ return eq > 0 && trimmed.slice(0, eq).trim() === key;
66
+ });
67
+ if (idx >= 0) lines[idx] = line;
68
+ else lines.push(line);
69
+ }
70
+ return lines.join("\n") + "\n";
71
+ }
72
+ function classifyRegistryStatus(status) {
73
+ return status === 401 || status === 403 ? "expired" : "fresh";
74
+ }
75
+ async function probeRegistryToken(opts) {
76
+ const npmrcPath = opts?.npmrcPath ?? homeNpmrcPath();
77
+ const timeoutMs = opts?.timeoutMs ?? 8e3;
78
+ const fetchFn = opts?.fetchFn ?? fetch;
79
+ let auth = null;
80
+ try {
81
+ auth = parseNpmrcRegistryAuth(fs.readFileSync(npmrcPath, "utf-8"));
82
+ } catch {
83
+ }
84
+ if (!auth) return { state: "missing" };
85
+ try {
86
+ const res = await fetchFn(`${auth.endpoint}${encodeURIComponent("@mesh-tech/hub")}`, {
87
+ method: "GET",
88
+ headers: { authorization: `Bearer ${auth.token}` },
89
+ signal: AbortSignal.timeout(timeoutMs)
90
+ });
91
+ const state = classifyRegistryStatus(res.status);
92
+ return state === "expired" ? { state, detail: `registry answered HTTP ${res.status} for an authenticated request` } : { state };
93
+ } catch (err) {
94
+ return {
95
+ state: "unreachable",
96
+ detail: err instanceof Error ? err.message : String(err)
97
+ };
98
+ }
99
+ }
100
+ function classifyRegistryPreflight(probe, session) {
101
+ const email = session?.email;
102
+ const fix = "mesh init";
103
+ if (probe.state === "fresh") return { state: "valid", email, fix };
104
+ return { state: probe.state, email, fix, detail: probe.detail };
105
+ }
106
+ async function registryPreflight(opts) {
107
+ const probe = await probeRegistryToken(opts);
108
+ let session = null;
109
+ try {
110
+ const { readRegistrySession } = await import("./mesh.registry-identity-2HSGQGJC.js");
111
+ session = readRegistrySession();
112
+ } catch {
113
+ }
114
+ return classifyRegistryPreflight(probe, session);
115
+ }
116
+ function isNpmAuthErrorText(text) {
117
+ return /\bE?40[13]\b|unauthenticated|unable to authenticate|authentication (required|failed)/i.test(
118
+ text
119
+ );
120
+ }
121
+ function isNpmAuthError(err) {
122
+ const e = err;
123
+ const text = [e?.stderr, e?.message].map((v) => v === null || v === void 0 ? "" : String(v)).join("\n");
124
+ return isNpmAuthErrorText(text);
125
+ }
126
+ function isExpiredAwsTokenMessage(message) {
127
+ return /expired|invalid.*(security )?token|token.*(is )?invalid|no credential|could not load credentials|could not be found|sso session/i.test(
128
+ message
129
+ );
130
+ }
131
+ function parseSsoSessionNames(content) {
132
+ const names = [];
133
+ for (const line of content.split("\n")) {
134
+ const match = line.trim().match(/^\[sso-session\s+([^\]]+)\]$/);
135
+ if (match && match[1]) names.push(match[1].trim());
136
+ }
137
+ return names;
138
+ }
139
+ function awsConfigHasProfile(content, profile) {
140
+ const pattern = new RegExp(
141
+ `^\\[(?:profile\\s+)?${profile.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\]$`
142
+ );
143
+ return content.split("\n").some((line) => pattern.test(line.trim()));
144
+ }
145
+ function readAwsConfig() {
146
+ const file = process.env.AWS_CONFIG_FILE ?? path.join(os.homedir(), ".aws", "config");
147
+ try {
148
+ return fs.readFileSync(file, "utf-8");
149
+ } catch {
150
+ return "";
151
+ }
152
+ }
153
+ function appUsesMeshPackages(appRoot) {
154
+ try {
155
+ const pkg = JSON.parse(fs.readFileSync(path.join(appRoot, "package.json"), "utf-8"));
156
+ return [pkg.dependencies, pkg.devDependencies, pkg.optionalDependencies].some(
157
+ (deps) => deps && Object.keys(deps).some((name) => name.startsWith("@mesh-tech/"))
158
+ );
159
+ } catch {
160
+ return false;
161
+ }
162
+ }
163
+
164
+ export {
165
+ REGISTRY_LOGIN_FIX,
166
+ REGISTRY_LOGIN_FIX_AWS,
167
+ registryLoginFix,
168
+ SSO_LOGIN_FIX,
169
+ SSO_SESSION_SNIPPET,
170
+ homeNpmrcPath,
171
+ parseNpmrcRegistryAuth,
172
+ findUnscopedCodeArtifactRegistry,
173
+ stripUnscopedCodeArtifactRegistry,
174
+ npmrcAuthKeyForEndpoint,
175
+ upsertNpmrcLines,
176
+ classifyRegistryStatus,
177
+ probeRegistryToken,
178
+ classifyRegistryPreflight,
179
+ registryPreflight,
180
+ isNpmAuthErrorText,
181
+ isNpmAuthError,
182
+ isExpiredAwsTokenMessage,
183
+ parseSsoSessionNames,
184
+ awsConfigHasProfile,
185
+ readAwsConfig,
186
+ appUsesMeshPackages
187
+ };
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/auth-preflight.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }