@mesh-tech/mesh-cli 0.12.6 → 0.13.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/README.md +227 -0
- package/assets/app-skill/SKILL.md +59 -0
- package/dist/bin/mesh.js +332 -90
- package/dist/bin/mesh.js.map +4 -4
- package/dist/build-info.json +2 -2
- package/dist/src/commands/create-app.d.ts +37 -0
- package/dist/src/commands/create-app.d.ts.map +1 -1
- package/dist/src/commands/create-app.js +141 -26
- package/dist/src/commands/create-app.js.map +1 -1
- package/dist/src/commands/skills.d.ts +48 -8
- package/dist/src/commands/skills.d.ts.map +1 -1
- package/dist/src/commands/skills.js +204 -12
- package/dist/src/commands/skills.js.map +1 -1
- package/dist/src/utils/scaffold-versions.d.ts +57 -0
- package/dist/src/utils/scaffold-versions.d.ts.map +1 -0
- package/dist/src/utils/scaffold-versions.js +75 -0
- package/dist/src/utils/scaffold-versions.js.map +1 -0
- package/fragments/agents/AGENTS.md.hbs +4 -3
- package/fragments/base/package.json.hbs +4 -5
- package/fragments/service/api/package.json.hbs +5 -5
- package/fragments/temporal/worker/package.json.hbs +5 -5
- package/package.json +2 -2
- package/skills/core/SKILL.md +12 -2
- package/templates/apps-repo/package.json.hbs +2 -1
- package/templates/apps-repo/pnpm-workspace.yaml +9 -1
|
@@ -1,27 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* mesh skills sync — agent-skill distribution (design §7.2, AC D1/D2).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Three layers, one command:
|
|
5
5
|
*
|
|
6
|
-
* 1. BASE skills (how to
|
|
6
|
+
* 1. BASE skills (how to drive the CLI — the CLI's own skills/) are
|
|
7
7
|
* installed into the repo's `.claude/skills/mesh-<name>/SKILL.md`.
|
|
8
8
|
* CLI-managed: files carry a managed marker and are only overwritten
|
|
9
9
|
* when they carry it (hand-edited copies are left alone with a warning).
|
|
10
10
|
*
|
|
11
|
-
* 2.
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* 2. PLATFORM skills — the build-an-app recipes that ship inside the
|
|
12
|
+
* `@mesh-tech/*` packages the repo already depends on
|
|
13
|
+
* (`node_modules/@mesh-tech/<pkg>/skills/<domain>/`). These are FETCHED
|
|
14
|
+
* from the installed package rather than vendored into the CLI, so the
|
|
15
|
+
* recipe stays owned by the platform package it documents and moves with
|
|
16
|
+
* it. `@mesh-tech/app-kit#apps` — the scaffold → wire → run → debug
|
|
17
|
+
* recipe — is the one every app repo needs.
|
|
18
|
+
* Requires `pnpm install` to have run; before that the layer is a no-op
|
|
19
|
+
* with a note.
|
|
20
|
+
*
|
|
21
|
+
* 3. INTENT discovery for those same package skills, for agents that read
|
|
22
|
+
* the catalog rather than `.claude/skills/`: the hook mechanism
|
|
23
|
+
* vendored into the CLI (deterministic, offline — no interactive
|
|
24
|
+
* installer):
|
|
15
25
|
* - .intent/hooks/intent-claude-gate.mjs (SessionStart catalog +
|
|
16
26
|
* edit gate; invokes the REPO-PINNED `pnpm exec intent`)
|
|
27
|
+
* - `@tanstack/intent` in the repo's devDependencies — the fence tells
|
|
28
|
+
* agents to run `pnpm exec intent list`, so the binary has to be
|
|
29
|
+
* pinned in the repo it runs in, tenant app repos included
|
|
17
30
|
* - .claude/settings.json SessionStart hook (JSON-merged, idempotent)
|
|
18
31
|
* - AGENTS.md fence (<!-- intent-skills:start/end -->) for
|
|
19
32
|
* non-Claude agents
|
|
20
33
|
*
|
|
21
34
|
* `mesh skills sync --check` is the CI/doctor form: exits 1 listing what is
|
|
22
35
|
* missing or stale, changes nothing. `mesh create-app` runs a best-effort
|
|
23
|
-
* sync after scaffolding so a fresh Claude session in a fresh repo sees
|
|
24
|
-
* skill
|
|
36
|
+
* sync after scaffolding so a fresh Claude session in a fresh repo sees every
|
|
37
|
+
* skill layer with zero manual setup (D1).
|
|
25
38
|
*/
|
|
26
39
|
import * as fs from "fs";
|
|
27
40
|
import * as path from "path";
|
|
@@ -32,6 +45,14 @@ import { findPackageRoot } from "./local/stack.js";
|
|
|
32
45
|
const MANAGED_MARKER = "<!-- managed-by: mesh skills sync — edits are overwritten; copy content elsewhere to customize -->";
|
|
33
46
|
const FENCE_START = "<!-- intent-skills:start -->";
|
|
34
47
|
const HOOK_RELATIVE = path.join(".intent", "hooks", "intent-claude-gate.mjs");
|
|
48
|
+
/**
|
|
49
|
+
* The `@tanstack/intent` range pinned into a target repo, and the single
|
|
50
|
+
* source for every place that range appears: the standalone apps-repo
|
|
51
|
+
* template renders from it, and `test/skills-sync.test.ts` holds it equal to
|
|
52
|
+
* the CLI's own devDependency, so the binary agents invoke matches the
|
|
53
|
+
* catalog format the vendored gate hook expects.
|
|
54
|
+
*/
|
|
55
|
+
export const INTENT_RANGE = "^0.3.6";
|
|
35
56
|
/** The repo root skills sync targets: the enclosing git root, else cwd. */
|
|
36
57
|
export function resolveTargetRoot(startDir = process.cwd()) {
|
|
37
58
|
try {
|
|
@@ -66,6 +87,99 @@ function renderManagedSkill(source) {
|
|
|
66
87
|
return `${MANAGED_MARKER}\n\n${raw}`;
|
|
67
88
|
return `${frontmatter}\n${MANAGED_MARKER}\n${raw.slice(frontmatter.length)}`;
|
|
68
89
|
}
|
|
90
|
+
/** The CLI's own skills are layer 1; fetching them again as a package skill would double-install them. */
|
|
91
|
+
const BASE_SKILL_PACKAGE = "mesh-cli";
|
|
92
|
+
/**
|
|
93
|
+
* Every `node_modules/@mesh-tech` directory in the repo. In a pnpm workspace a
|
|
94
|
+
* dependency is linked into the node_modules of the package that DECLARES it,
|
|
95
|
+
* so `@mesh-tech/app-kit` — declared by `apps/<name>/` — is not under the repo
|
|
96
|
+
* root's node_modules at all.
|
|
97
|
+
*/
|
|
98
|
+
function meshTechScopeDirs(root, maxDepth = 6) {
|
|
99
|
+
const scopes = [];
|
|
100
|
+
const walk = (dir, depth) => {
|
|
101
|
+
if (depth > maxDepth)
|
|
102
|
+
return;
|
|
103
|
+
let entries;
|
|
104
|
+
try {
|
|
105
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
for (const entry of entries) {
|
|
111
|
+
if (!entry.isDirectory())
|
|
112
|
+
continue;
|
|
113
|
+
if (entry.name === "node_modules") {
|
|
114
|
+
// Don't descend: the scope dir here already links everything this level
|
|
115
|
+
// can see, and `.pnpm/` would yield the same content many times over.
|
|
116
|
+
const scope = path.join(dir, entry.name, "@mesh-tech");
|
|
117
|
+
if (fs.existsSync(scope))
|
|
118
|
+
scopes.push(scope);
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
if (entry.name.startsWith("."))
|
|
122
|
+
continue;
|
|
123
|
+
walk(path.join(dir, entry.name), depth + 1);
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
walk(root, 0);
|
|
127
|
+
return scopes;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Platform skills reachable from the target repo: every
|
|
131
|
+
* `node_modules/@mesh-tech/<pkg>/skills/<domain>/SKILL.md`. Installed under
|
|
132
|
+
* `mesh-<pkg>-<domain>` so a package's `core` skill can never collide with the
|
|
133
|
+
* CLI's own `mesh-core`. One entry per `<pkg>/<domain>` — the same package
|
|
134
|
+
* linked from several workspace packages is still one skill.
|
|
135
|
+
*/
|
|
136
|
+
export function listPackageSkills(root) {
|
|
137
|
+
const byName = new Map();
|
|
138
|
+
for (const scopeDir of meshTechScopeDirs(root)) {
|
|
139
|
+
for (const pkg of fs.readdirSync(scopeDir, { withFileTypes: true })) {
|
|
140
|
+
if (!pkg.isDirectory() && !pkg.isSymbolicLink())
|
|
141
|
+
continue;
|
|
142
|
+
if (pkg.name === BASE_SKILL_PACKAGE)
|
|
143
|
+
continue;
|
|
144
|
+
const skillsDir = path.join(scopeDir, pkg.name, "skills");
|
|
145
|
+
if (!fs.existsSync(skillsDir))
|
|
146
|
+
continue;
|
|
147
|
+
for (const domain of fs.readdirSync(skillsDir, { withFileTypes: true })) {
|
|
148
|
+
const source = path.join(skillsDir, domain.name, "SKILL.md");
|
|
149
|
+
if (!fs.existsSync(source))
|
|
150
|
+
continue;
|
|
151
|
+
const name = `mesh-${pkg.name}-${domain.name}`;
|
|
152
|
+
if (!byName.has(name))
|
|
153
|
+
byName.set(name, { name, dir: path.join(skillsDir, domain.name), source });
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return [...byName.values()].sort((a, b) => a.name.localeCompare(b.name));
|
|
158
|
+
}
|
|
159
|
+
/** Copy a skill's supporting files (references/, examples/, …) alongside SKILL.md. */
|
|
160
|
+
function copySkillExtras(sourceDir, targetDir) {
|
|
161
|
+
for (const entry of fs.readdirSync(sourceDir, { withFileTypes: true })) {
|
|
162
|
+
if (entry.name === "SKILL.md")
|
|
163
|
+
continue;
|
|
164
|
+
fs.cpSync(path.join(sourceDir, entry.name), path.join(targetDir, entry.name), { recursive: true });
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Seed the app's OWN skill — the stub a developer grows into the guidance only
|
|
169
|
+
* their app can carry. Written once and never touched again: it carries no
|
|
170
|
+
* managed marker, so `sync` leaves it alone forever.
|
|
171
|
+
* Returns the repo-relative path when it wrote one, else null.
|
|
172
|
+
*/
|
|
173
|
+
export function seedAppSkill(root, appName, appRelPath) {
|
|
174
|
+
const target = path.join(root, ".claude", "skills", appName, "SKILL.md");
|
|
175
|
+
if (fs.existsSync(target))
|
|
176
|
+
return null;
|
|
177
|
+
const template = fs.readFileSync(cliAsset("assets", "app-skill", "SKILL.md"), "utf-8");
|
|
178
|
+
const body = template.replaceAll("__APP_NAME__", appName).replaceAll("__APP_PATH__", appRelPath || ".");
|
|
179
|
+
fs.mkdirSync(path.dirname(target), { recursive: true });
|
|
180
|
+
fs.writeFileSync(target, body);
|
|
181
|
+
return path.relative(root, target);
|
|
182
|
+
}
|
|
69
183
|
function planSync(root) {
|
|
70
184
|
const items = [];
|
|
71
185
|
// 1. Base skills → .claude/skills/mesh-<name>/SKILL.md
|
|
@@ -96,7 +210,48 @@ function planSync(root) {
|
|
|
96
210
|
}
|
|
97
211
|
}
|
|
98
212
|
}
|
|
99
|
-
// 2.
|
|
213
|
+
// 2. Platform skills fetched from installed @mesh-tech/* packages
|
|
214
|
+
const packageSkills = listPackageSkills(root);
|
|
215
|
+
for (const skill of packageSkills) {
|
|
216
|
+
const targetDir = path.join(root, ".claude", "skills", skill.name);
|
|
217
|
+
const target = path.join(targetDir, "SKILL.md");
|
|
218
|
+
const desired = renderManagedSkill(skill.source);
|
|
219
|
+
const label = `.claude/skills/${skill.name}/SKILL.md (platform skill)`;
|
|
220
|
+
if (!fs.existsSync(target)) {
|
|
221
|
+
items.push({
|
|
222
|
+
label,
|
|
223
|
+
state: "write",
|
|
224
|
+
apply: () => {
|
|
225
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
226
|
+
fs.writeFileSync(target, desired);
|
|
227
|
+
copySkillExtras(skill.dir, targetDir);
|
|
228
|
+
},
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
const current = fs.readFileSync(target, "utf-8");
|
|
233
|
+
if (current === desired) {
|
|
234
|
+
items.push({ label, state: "ok" });
|
|
235
|
+
}
|
|
236
|
+
else if (current.includes(MANAGED_MARKER)) {
|
|
237
|
+
items.push({
|
|
238
|
+
label,
|
|
239
|
+
state: "write",
|
|
240
|
+
apply: () => {
|
|
241
|
+
fs.writeFileSync(target, desired);
|
|
242
|
+
copySkillExtras(skill.dir, targetDir);
|
|
243
|
+
},
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
items.push({ label: `${label} — exists without the managed marker, leaving as-is`, state: "skip" });
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
if (packageSkills.length === 0 && meshTechScopeDirs(root).length === 0) {
|
|
252
|
+
logInfo("No @mesh-tech packages installed yet — run `pnpm install`, then `mesh skills sync` again for the platform skills.");
|
|
253
|
+
}
|
|
254
|
+
// 3. Intent gate hook (CLI-managed generated file — kept current)
|
|
100
255
|
const hookSource = cliAsset("assets", "intent", "intent-claude-gate.mjs");
|
|
101
256
|
const hookTarget = path.join(root, HOOK_RELATIVE);
|
|
102
257
|
const hookDesired = fs.readFileSync(hookSource, "utf-8");
|
|
@@ -111,7 +266,42 @@ function planSync(root) {
|
|
|
111
266
|
fs.writeFileSync(hookTarget, hookDesired, { mode: 0o755 });
|
|
112
267
|
},
|
|
113
268
|
});
|
|
114
|
-
//
|
|
269
|
+
// 4. `@tanstack/intent` devDependency — the fence tells agents to run
|
|
270
|
+
// `pnpm exec intent`, which only resolves when the repo pins it.
|
|
271
|
+
const rootPkgPath = path.join(root, "package.json");
|
|
272
|
+
if (fs.existsSync(rootPkgPath)) {
|
|
273
|
+
let rootPkg = null;
|
|
274
|
+
try {
|
|
275
|
+
rootPkg = JSON.parse(fs.readFileSync(rootPkgPath, "utf-8"));
|
|
276
|
+
}
|
|
277
|
+
catch {
|
|
278
|
+
rootPkg = null;
|
|
279
|
+
}
|
|
280
|
+
const label = "package.json (@tanstack/intent devDependency)";
|
|
281
|
+
if (!rootPkg) {
|
|
282
|
+
items.push({ label: `${label} — package.json is unparseable, leaving as-is`, state: "skip" });
|
|
283
|
+
}
|
|
284
|
+
else if (rootPkg.devDependencies?.["@tanstack/intent"] || rootPkg.dependencies?.["@tanstack/intent"]) {
|
|
285
|
+
items.push({ label, state: "ok" });
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
items.push({
|
|
289
|
+
label,
|
|
290
|
+
// Writing the dependency does not install it. Bare `mesh skills sync`
|
|
291
|
+
// in an already-installed repo leaves `pnpm exec intent` unresolvable
|
|
292
|
+
// until the next install, so say so rather than reporting success.
|
|
293
|
+
remediation: "Added @tanstack/intent — run `pnpm install` so `pnpm exec intent` resolves.",
|
|
294
|
+
state: "write",
|
|
295
|
+
apply: () => {
|
|
296
|
+
rootPkg.devDependencies = rootPkg.devDependencies ?? {};
|
|
297
|
+
rootPkg.devDependencies["@tanstack/intent"] = INTENT_RANGE;
|
|
298
|
+
rootPkg.devDependencies = Object.fromEntries(Object.entries(rootPkg.devDependencies).sort(([a], [b]) => a.localeCompare(b)));
|
|
299
|
+
fs.writeFileSync(rootPkgPath, JSON.stringify(rootPkg, null, 2) + "\n");
|
|
300
|
+
},
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
// 5. .claude/settings.json SessionStart hook (JSON merge, idempotent)
|
|
115
305
|
const settingsPath = path.join(root, ".claude", "settings.json");
|
|
116
306
|
let settings = {};
|
|
117
307
|
try {
|
|
@@ -146,7 +336,7 @@ function planSync(root) {
|
|
|
146
336
|
fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 1) + "\n");
|
|
147
337
|
},
|
|
148
338
|
});
|
|
149
|
-
//
|
|
339
|
+
// 6. AGENTS.md fence (non-Claude agents discover Intent skills too)
|
|
150
340
|
const agentsPath = path.join(root, "AGENTS.md");
|
|
151
341
|
const fence = fs.readFileSync(cliAsset("assets", "intent", "agents-fence.md"), "utf-8");
|
|
152
342
|
const agentsCurrent = fs.existsSync(agentsPath) ? fs.readFileSync(agentsPath, "utf-8") : null;
|
|
@@ -180,6 +370,8 @@ export function syncSkills(root, opts = {}) {
|
|
|
180
370
|
else {
|
|
181
371
|
item.apply?.();
|
|
182
372
|
logSuccess(`synced: ${item.label}`);
|
|
373
|
+
if (item.remediation)
|
|
374
|
+
logInfo(item.remediation);
|
|
183
375
|
}
|
|
184
376
|
}
|
|
185
377
|
if (!dirty) {
|
|
@@ -191,7 +383,7 @@ export function registerSkillsCommands(program) {
|
|
|
191
383
|
const skills = program.command("skills").description("Agent-skill distribution (base skills + Intent discovery)");
|
|
192
384
|
skills
|
|
193
385
|
.command("sync")
|
|
194
|
-
.description("Install the base building-with-Mesh skills into .claude/skills
|
|
386
|
+
.description("Install the base building-with-Mesh skills into .claude/skills/, fetch the platform skills shipped by the repo's installed @mesh-tech/* packages, and wire TanStack-Intent discovery (intent devDependency + hook + settings + AGENTS.md fence)")
|
|
195
387
|
.option("--check", "verify only (CI/doctor): exit 1 when anything is missing or stale", false)
|
|
196
388
|
.option("--root <path>", "target repo root (default: enclosing git root)")
|
|
197
389
|
.action((opts) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/commands/skills.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/commands/skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,cAAc,GAAG,oGAAoG,CAAC;AAC5H,MAAM,WAAW,GAAG,8BAA8B,CAAC;AACnD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,wBAAwB,CAAC,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;AAErC,2EAA2E;AAC3E,MAAM,UAAU,iBAAiB,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;IACxD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE;YAC3D,GAAG,EAAE,QAAQ;YACb,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,GAAG,QAAkB;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC;AACnD,CAAC;AAED,uEAAuE;AACvE,SAAS,cAAc;IACrB,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,EAAE;SACN,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SACzC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;SAC/F,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,+EAA+E;AAC/E,SAAS,kBAAkB,CAAC,MAAc;IACxC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,IAAI,CAAC,WAAW;QAAE,OAAO,GAAG,cAAc,OAAO,GAAG,EAAE,CAAC;IACvD,OAAO,GAAG,WAAW,KAAK,cAAc,KAAK,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED,0GAA0G;AAC1G,MAAM,kBAAkB,GAAG,UAAU,CAAC;AAEtC;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,IAAY,EAAE,QAAQ,GAAG,CAAC;IACnD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,KAAa,EAAQ,EAAE;QAChD,IAAI,KAAK,GAAG,QAAQ;YAAE,OAAO;QAC7B,IAAI,OAAoB,CAAC;QACzB,IAAI,CAAC;YACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBAAE,SAAS;YACnC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAClC,wEAAwE;gBACxE,sEAAsE;gBACtE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBACvD,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7C,SAAS;YACX,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YACzC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyD,CAAC;IAChF,KAAK,MAAM,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,KAAK,MAAM,GAAG,IAAI,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACpE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE;gBAAE,SAAS;YAC1D,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB;gBAAE,SAAS;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,SAAS;YACxC,KAAK,MAAM,MAAM,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBACxE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAC7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,SAAS;gBACrC,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YACpG,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,sFAAsF;AACtF,SAAS,eAAe,CAAC,SAAiB,EAAE,SAAiB;IAC3D,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACvE,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QACxC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrG,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,OAAe,EAAE,UAAkB;IAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACzE,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IACvF,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,cAAc,EAAE,UAAU,IAAI,GAAG,CAAC,CAAC;IACxG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAWD,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,KAAK,GAAe,EAAE,CAAC;IAE7B,uDAAuD;IACvD,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,KAAK,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;QACtF,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,uBAAuB,KAAK,CAAC,IAAI,wBAAwB,CAAC;QACxE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK;gBACL,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,GAAG,EAAE;oBACV,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACxD,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACpC,CAAC;aACF,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACjD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YACxF,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,qDAAqD,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACtG,CAAC;QACH,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,kBAAkB,KAAK,CAAC,IAAI,4BAA4B,CAAC;QACvE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK;gBACL,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,GAAG,EAAE;oBACV,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC7C,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAClC,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBACxC,CAAC;aACF,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACjD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC5C,KAAK,CAAC,IAAI,CAAC;oBACT,KAAK;oBACL,KAAK,EAAE,OAAO;oBACd,KAAK,EAAE,GAAG,EAAE;wBACV,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;wBAClC,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;oBACxC,CAAC;iBACF,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,qDAAqD,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACtG,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvE,OAAO,CAAC,mHAAmH,CAAC,CAAC;IAC/H,CAAC;IAED,kEAAkE;IAClE,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,wBAAwB,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5F,KAAK,CAAC,IAAI,CACR,WAAW,KAAK,WAAW;QACzB,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,aAAa,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE;QAC1D,CAAC,CAAC;YACE,KAAK,EAAE,GAAG,aAAa,gBAAgB;YACvC,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,GAAG,EAAE;gBACV,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,CAAC;SACF,CACN,CAAC;IAEF,sEAAsE;IACtE,oEAAoE;IACpE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACpD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,IAAI,OAAO,GAAQ,IAAI,CAAC;QACxB,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,MAAM,KAAK,GAAG,+CAA+C,CAAC;QAC9D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,+CAA+C,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAChG,CAAC;aAAM,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,kBAAkB,CAAC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACvG,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK;gBACL,sEAAsE;gBACtE,sEAAsE;gBACtE,mEAAmE;gBACnE,WAAW,EAAE,6EAA6E;gBAC1F,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,GAAG,EAAE;oBACV,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;oBACxD,OAAO,CAAC,eAAe,CAAC,kBAAkB,CAAC,GAAG,YAAY,CAAC;oBAC3D,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC,WAAW,CAC1C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAC/E,CAAC;oBACF,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBACzE,CAAC;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IACjE,IAAI,QAAQ,GAAQ,EAAE,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,GAAG,EAAE,CAAC;IAChB,CAAC;IACD,MAAM,YAAY,GAAU,QAAQ,EAAE,KAAK,EAAE,YAAY,IAAI,EAAE,CAAC;IAChE,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,KAAU,EAAE,EAAE,CAC/C,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CACtH,CAAC;IACF,KAAK,CAAC,IAAI,CACR,OAAO;QACL,CAAC,CAAC,EAAE,KAAK,EAAE,kDAAkD,EAAE,KAAK,EAAE,IAAI,EAAE;QAC5E,CAAC,CAAC;YACE,KAAK,EAAE,kDAAkD;YACzD,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,GAAG,EAAE;gBACV,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;gBACtC,QAAQ,CAAC,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;gBAChE,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;oBAC/B,OAAO,EAAE,8BAA8B;oBACvC,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,MAAM;4BACf,IAAI,EAAE,CAAC,4DAA4D,CAAC;4BACpE,OAAO,EAAE,EAAE;4BACX,aAAa,EAAE,8BAA8B;yBAC9C;qBACF;iBACF,CAAC,CAAC;gBACH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9D,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3E,CAAC;SACF,CACN,CAAC;IAEF,oEAAoE;IACpE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC;IACxF,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9F,KAAK,CAAC,IAAI,CACR,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC;QAClC,CAAC,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,KAAK,EAAE,IAAI,EAAE;QAC3D,CAAC,CAAC;YACE,KAAK,EAAE,iCAAiC;YACxC,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,GAAG,EAAE;gBACV,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,aAAa,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,0BAA0B,CAAC;gBAC/F,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACrC,CAAC;SACF,CACN,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,OAA4B,EAAE;IACrE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,SAAS;QAClC,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,SAAS;QACX,CAAC;QACD,KAAK,GAAG,IAAI,CAAC;QACb,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,kBAAkB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACf,UAAU,CAAC,WAAW,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,WAAW;gBAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,6BAA6B,IAAI,GAAG,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,KAAK,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,2DAA2D,CAAC,CAAC;IAElH,MAAM;SACH,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,iPAAiP,CAClP;SACA,MAAM,CAAC,SAAS,EAAE,mEAAmE,EAAE,KAAK,CAAC;SAC7F,MAAM,CAAC,eAAe,EAAE,gDAAgD,CAAC;SACzE,MAAM,CAAC,CAAC,IAAuC,EAAE,EAAE;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,iBAAiB,EAAE,CAAC,CAAC;QAC5D,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YACtB,MAAM,IAAI,YAAY,CAAC,oCAAoC,EAAE;gBAC3D,WAAW,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;aAC7C,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency versions written into a scaffolded app.
|
|
3
|
+
*
|
|
4
|
+
* Why this exists
|
|
5
|
+
* ───────────────
|
|
6
|
+
* `mesh create-app --primitives` renders the fragment templates, and those
|
|
7
|
+
* package.json files have to install in TWO very different places:
|
|
8
|
+
*
|
|
9
|
+
* - inside this monorepo → `workspace:*` + `catalog:` (link local source)
|
|
10
|
+
* - inside a standalone tenant-apps repo → concrete, published ranges
|
|
11
|
+
*
|
|
12
|
+
* The standalone branch takes a caret range on the CURRENT published line,
|
|
13
|
+
* resolved from the registry at scaffold time. The baked value below is a
|
|
14
|
+
* floor, used only when that lookup can't run (offline, no registry auth
|
|
15
|
+
* yet, CI) — not the answer.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* The `@mesh-tech/*` package whose published version defines the lockstep
|
|
19
|
+
* group's current line. The publishable packages move together, so one lookup
|
|
20
|
+
* answers for all of them. `@mesh-tech/esm-bundle` versions independently, so
|
|
21
|
+
* it gets its own entry.
|
|
22
|
+
*/
|
|
23
|
+
export declare const SCAFFOLD_PACKAGE_LINES: {
|
|
24
|
+
readonly "@mesh-tech/app-kit": "^1.45.0";
|
|
25
|
+
readonly "@mesh-tech/esm-bundle": "^0.1.1";
|
|
26
|
+
};
|
|
27
|
+
export type ScaffoldPackage = keyof typeof SCAFFOLD_PACKAGE_LINES;
|
|
28
|
+
/**
|
|
29
|
+
* Toolchain devDependencies for the standalone branch. These mirror the
|
|
30
|
+
* workspace catalog in `pnpm-workspace.yaml` (which the published CLI cannot
|
|
31
|
+
* read); `test/scaffold-versions.test.ts` fails if the two drift apart.
|
|
32
|
+
*/
|
|
33
|
+
export declare const SCAFFOLD_TOOLCHAIN: {
|
|
34
|
+
readonly "@types/node": "^24.2.1";
|
|
35
|
+
readonly tsx: "^4.20.4";
|
|
36
|
+
readonly typescript: "^5.9.2";
|
|
37
|
+
};
|
|
38
|
+
/** True for a caret range on a prerelease/build-metadata version (`^0.0.0-dev.1`). */
|
|
39
|
+
export declare function isPrerelease(range: string): boolean;
|
|
40
|
+
/** Pure: `1.45.1` → `^1.45.1`. Returns null for anything that isn't x.y.z. */
|
|
41
|
+
export declare function toCaretRange(version: string): string | null;
|
|
42
|
+
/**
|
|
43
|
+
* Ask the registry for a package's current published line, as a caret range.
|
|
44
|
+
* `cwd` matters: the target repo's `.npmrc` is what maps `@mesh-tech` to
|
|
45
|
+
* CodeArtifact. Any failure (offline, 401, npm missing) falls back silently —
|
|
46
|
+
* a scaffold must never hard-fail on a version lookup.
|
|
47
|
+
*
|
|
48
|
+
* A prerelease answer is refused here rather than in `toCaretRange`, which
|
|
49
|
+
* stays a pure format check. Most published `@mesh-tech/*` versions are
|
|
50
|
+
* `0.0.0-dev.<timestamp>.<sha>` snapshots; a `latest` that ever lands on one
|
|
51
|
+
* would otherwise pin every future scaffold to a single dev build.
|
|
52
|
+
*/
|
|
53
|
+
export declare function resolvePublishedRange(pkg: ScaffoldPackage, cwd: string): {
|
|
54
|
+
range: string;
|
|
55
|
+
resolved: boolean;
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=scaffold-versions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold-versions.d.ts","sourceRoot":"","sources":["../../../src/utils/scaffold-versions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;;CAGzB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,sBAAsB,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;;CAIrB,CAAC;AAEX,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG3D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,MAAM,GACV;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CActC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency versions written into a scaffolded app.
|
|
3
|
+
*
|
|
4
|
+
* Why this exists
|
|
5
|
+
* ───────────────
|
|
6
|
+
* `mesh create-app --primitives` renders the fragment templates, and those
|
|
7
|
+
* package.json files have to install in TWO very different places:
|
|
8
|
+
*
|
|
9
|
+
* - inside this monorepo → `workspace:*` + `catalog:` (link local source)
|
|
10
|
+
* - inside a standalone tenant-apps repo → concrete, published ranges
|
|
11
|
+
*
|
|
12
|
+
* The standalone branch takes a caret range on the CURRENT published line,
|
|
13
|
+
* resolved from the registry at scaffold time. The baked value below is a
|
|
14
|
+
* floor, used only when that lookup can't run (offline, no registry auth
|
|
15
|
+
* yet, CI) — not the answer.
|
|
16
|
+
*/
|
|
17
|
+
import { execFileSync } from "child_process";
|
|
18
|
+
/**
|
|
19
|
+
* The `@mesh-tech/*` package whose published version defines the lockstep
|
|
20
|
+
* group's current line. The publishable packages move together, so one lookup
|
|
21
|
+
* answers for all of them. `@mesh-tech/esm-bundle` versions independently, so
|
|
22
|
+
* it gets its own entry.
|
|
23
|
+
*/
|
|
24
|
+
export const SCAFFOLD_PACKAGE_LINES = {
|
|
25
|
+
"@mesh-tech/app-kit": "^1.45.0",
|
|
26
|
+
"@mesh-tech/esm-bundle": "^0.1.1",
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Toolchain devDependencies for the standalone branch. These mirror the
|
|
30
|
+
* workspace catalog in `pnpm-workspace.yaml` (which the published CLI cannot
|
|
31
|
+
* read); `test/scaffold-versions.test.ts` fails if the two drift apart.
|
|
32
|
+
*/
|
|
33
|
+
export const SCAFFOLD_TOOLCHAIN = {
|
|
34
|
+
"@types/node": "^24.2.1",
|
|
35
|
+
tsx: "^4.20.4",
|
|
36
|
+
typescript: "^5.9.2",
|
|
37
|
+
};
|
|
38
|
+
/** True for a caret range on a prerelease/build-metadata version (`^0.0.0-dev.1`). */
|
|
39
|
+
export function isPrerelease(range) {
|
|
40
|
+
return /[-+]/.test(range.replace(/^\^/, ""));
|
|
41
|
+
}
|
|
42
|
+
/** Pure: `1.45.1` → `^1.45.1`. Returns null for anything that isn't x.y.z. */
|
|
43
|
+
export function toCaretRange(version) {
|
|
44
|
+
const trimmed = version.trim();
|
|
45
|
+
return /^\d+\.\d+\.\d+(?:[-+].*)?$/.test(trimmed) ? `^${trimmed}` : null;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Ask the registry for a package's current published line, as a caret range.
|
|
49
|
+
* `cwd` matters: the target repo's `.npmrc` is what maps `@mesh-tech` to
|
|
50
|
+
* CodeArtifact. Any failure (offline, 401, npm missing) falls back silently —
|
|
51
|
+
* a scaffold must never hard-fail on a version lookup.
|
|
52
|
+
*
|
|
53
|
+
* A prerelease answer is refused here rather than in `toCaretRange`, which
|
|
54
|
+
* stays a pure format check. Most published `@mesh-tech/*` versions are
|
|
55
|
+
* `0.0.0-dev.<timestamp>.<sha>` snapshots; a `latest` that ever lands on one
|
|
56
|
+
* would otherwise pin every future scaffold to a single dev build.
|
|
57
|
+
*/
|
|
58
|
+
export function resolvePublishedRange(pkg, cwd) {
|
|
59
|
+
try {
|
|
60
|
+
const out = execFileSync("npm", ["view", pkg, "version"], {
|
|
61
|
+
cwd,
|
|
62
|
+
encoding: "utf-8",
|
|
63
|
+
timeout: 15_000,
|
|
64
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
65
|
+
});
|
|
66
|
+
const range = toCaretRange(out);
|
|
67
|
+
if (range && !isPrerelease(range))
|
|
68
|
+
return { range, resolved: true };
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// fall through to the baked floor
|
|
72
|
+
}
|
|
73
|
+
return { range: SCAFFOLD_PACKAGE_LINES[pkg], resolved: false };
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=scaffold-versions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold-versions.js","sourceRoot":"","sources":["../../../src/utils/scaffold-versions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,oBAAoB,EAAE,SAAS;IAC/B,uBAAuB,EAAE,QAAQ;CACzB,CAAC;AAIX;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,aAAa,EAAE,SAAS;IACxB,GAAG,EAAE,SAAS;IACd,UAAU,EAAE,QAAQ;CACZ,CAAC;AAEX,sFAAsF;AACtF,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,OAAO,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3E,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CACnC,GAAoB,EACpB,GAAW;IAEX,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE;YACxD,GAAG;YACH,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,sBAAsB,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACjE,CAAC"}
|
|
@@ -75,10 +75,11 @@ for helper functions using the injected `UPLOADS_BUCKET` and `UPLOADS_REGION` en
|
|
|
75
75
|
|
|
76
76
|
## Documentation
|
|
77
77
|
|
|
78
|
-
- `
|
|
78
|
+
- `pnpm exec intent load @mesh-tech/app-kit#core` — the authoritative app-authoring API
|
|
79
79
|
(getConfig → AppEnvironment → primitives → link → register; arg tables + `link()` semantics)
|
|
80
|
-
- The **
|
|
81
|
-
-
|
|
80
|
+
- The **apps** skill (`.claude/skills/mesh-app-kit-apps/`, or
|
|
81
|
+
`pnpm exec intent load @mesh-tech/app-kit#apps`) — the scaffold → wire → run → debug recipe
|
|
82
|
+
- `pnpm exec intent load @mesh-tech/infra-components#core` — per-component reference
|
|
82
83
|
|
|
83
84
|
## CLI
|
|
84
85
|
|
|
@@ -8,15 +8,14 @@
|
|
|
8
8
|
"typecheck": "tsc --noEmit"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@mesh-tech/app-kit": "{{#if workspaceDeps}}workspace:*{{else}}
|
|
12
|
-
"@mesh-tech/infra-components": "{{#if workspaceDeps}}workspace:*{{else}}^0.1.0{{/if}}",
|
|
11
|
+
"@mesh-tech/app-kit": "{{#if workspaceDeps}}workspace:*{{else}}{{meshRange}}{{/if}}",
|
|
13
12
|
"@pulumi/aws": "6.66.2",
|
|
14
13
|
"@pulumi/kubernetes": "4.24.1",
|
|
15
14
|
"@pulumi/pulumi": "3.214.1"
|
|
16
15
|
},
|
|
17
16
|
"devDependencies": {
|
|
18
|
-
"@types/node": "catalog:",
|
|
19
|
-
"tsx": "catalog:",
|
|
20
|
-
"typescript": "catalog:"
|
|
17
|
+
"@types/node": "{{#if workspaceDeps}}catalog:{{else}}{{typesNodeRange}}{{/if}}",
|
|
18
|
+
"tsx": "{{#if workspaceDeps}}catalog:{{else}}{{tsxRange}}{{/if}}",
|
|
19
|
+
"typescript": "{{#if workspaceDeps}}catalog:{{else}}{{typescriptRange}}{{/if}}"
|
|
21
20
|
}
|
|
22
21
|
}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
{{/if}}
|
|
15
15
|
"@hono/node-server": "^1.13.0",
|
|
16
16
|
{{#if temporal}}
|
|
17
|
-
"@mesh-tech/app-kit": "{{#if workspaceDeps}}workspace:*{{else}}
|
|
17
|
+
"@mesh-tech/app-kit": "{{#if workspaceDeps}}workspace:*{{else}}{{meshRange}}{{/if}}",
|
|
18
18
|
{{/if}}
|
|
19
19
|
{{#if database}}
|
|
20
20
|
"@prisma/adapter-pg": "^6.0.0",
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
"pg": "^8.13.0"{{/if}}
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@mesh-tech/esm-bundle": "{{#if workspaceDeps}}workspace:*{{else}}
|
|
31
|
+
"@mesh-tech/esm-bundle": "{{#if workspaceDeps}}workspace:*{{else}}{{esmBundleRange}}{{/if}}",
|
|
32
32
|
{{#if database}}
|
|
33
33
|
"@types/pg": "^8.11.0",
|
|
34
34
|
"prisma": "^6.0.0",
|
|
35
35
|
{{/if}}
|
|
36
|
-
"@types/node": "
|
|
37
|
-
"tsx": "
|
|
38
|
-
"typescript": "
|
|
36
|
+
"@types/node": "{{#if workspaceDeps}}catalog:{{else}}{{typesNodeRange}}{{/if}}",
|
|
37
|
+
"tsx": "{{#if workspaceDeps}}catalog:{{else}}{{tsxRange}}{{/if}}",
|
|
38
|
+
"typescript": "{{#if workspaceDeps}}catalog:{{else}}{{typescriptRange}}{{/if}}"
|
|
39
39
|
}
|
|
40
40
|
}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"build": "esm-bundle src/worker.ts --outfile dist/worker.js --workflows src/workflows.ts --external '@temporalio/*'"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@mesh-tech/app-kit": "
|
|
12
|
+
"@mesh-tech/app-kit": "{{#if workspaceDeps}}workspace:*{{else}}{{meshRange}}{{/if}}",
|
|
13
13
|
"@temporalio/activity": "^1.11.7",
|
|
14
14
|
"@temporalio/client": "^1.11.7",
|
|
15
15
|
"@temporalio/common": "^1.11.7",
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
"@temporalio/workflow": "^1.11.7"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"@mesh-tech/esm-bundle": "{{#if workspaceDeps}}workspace:*{{else}}
|
|
22
|
-
"@types/node": "
|
|
23
|
-
"tsx": "
|
|
24
|
-
"typescript": "
|
|
21
|
+
"@mesh-tech/esm-bundle": "{{#if workspaceDeps}}workspace:*{{else}}{{esmBundleRange}}{{/if}}",
|
|
22
|
+
"@types/node": "{{#if workspaceDeps}}catalog:{{else}}{{typesNodeRange}}{{/if}}",
|
|
23
|
+
"tsx": "{{#if workspaceDeps}}catalog:{{else}}{{tsxRange}}{{/if}}",
|
|
24
|
+
"typescript": "{{#if workspaceDeps}}catalog:{{else}}{{typescriptRange}}{{/if}}"
|
|
25
25
|
}
|
|
26
26
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mesh-tech/mesh-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "CLI for Mesh platform development utilities",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"./package.json": "./package.json"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@mesh-tech/tsconfig": "1.
|
|
36
|
+
"@mesh-tech/tsconfig": "1.47.1",
|
|
37
37
|
"@mesh-tech/workflow-viz": "0.2.1",
|
|
38
38
|
"@tanstack/intent": "^0.3.6",
|
|
39
39
|
"@types/node": "^20.0.0",
|
package/skills/core/SKILL.md
CHANGED
|
@@ -156,15 +156,25 @@ self-refreshing credential_process (the deployer role), so no separate `--export
|
|
|
156
156
|
|
|
157
157
|
### 2. Scaffold and run an app locally
|
|
158
158
|
|
|
159
|
+
Run this from the root of your tenant apps repo (`{tenant}-mesh-apps`) — apps
|
|
160
|
+
land in `apps/<name>/`:
|
|
161
|
+
|
|
159
162
|
```bash
|
|
160
163
|
mesh create-app --tenant acme --name billing --primitives service,database,temporal
|
|
161
|
-
cd
|
|
164
|
+
cd apps/billing && pnpm install
|
|
165
|
+
mesh skills sync # picks up the platform skills now that deps are installed
|
|
162
166
|
mesh stack init # personal dev-{github-user} stack (deploy:false)
|
|
163
167
|
mesh deploy up --yes # pulumi up via mesh:deployerRole
|
|
164
168
|
mesh dev # tunnels + secrets + tmux (needs VPN for VPC access)
|
|
165
169
|
mesh dev logs api # tail one service; mesh dev --kill to stop
|
|
166
170
|
```
|
|
167
171
|
|
|
172
|
+
> **Where the app lands.** `create-app` writes to the first of `tenants/<tenant>/apps/`,
|
|
173
|
+
> `../<tenant>/apps/`, `apps/` that exists — so a tenant apps repo gets `apps/<name>/`.
|
|
174
|
+
> The `tenants/<tenant>/apps/…` and `tests/tenants/…` paths you see elsewhere in this
|
|
175
|
+
> file are the **mesh-platform monorepo's own** layouts (the second is test-only, from
|
|
176
|
+
> `--test`); no tenant repo has them.
|
|
177
|
+
|
|
168
178
|
### 2b. Watch your dev-local stack in the Hub (`mesh hub dev`)
|
|
169
179
|
|
|
170
180
|
```bash
|
|
@@ -198,7 +208,7 @@ block per worktree handed both the same ports.
|
|
|
198
208
|
|
|
199
209
|
```bash
|
|
200
210
|
# worktree A
|
|
201
|
-
cd .worktrees/feature-a/tests/tenants/acme/apps/demo-agent
|
|
211
|
+
cd .worktrees/feature-a/tests/tenants/acme/apps/demo-agent # monorepo test tenant
|
|
202
212
|
mesh dev --dry-run # preview: session name, port block, state/env paths, task queue
|
|
203
213
|
mesh dev # launch (attaches tmux; --headless to skip)
|
|
204
214
|
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
-
# Workspace packages — each app is an independent Pulumi project
|
|
1
|
+
# Workspace packages — each app is an independent Pulumi project.
|
|
2
|
+
#
|
|
3
|
+
# `apps/*` alone is not enough: a composed app (`mesh create-app --primitives
|
|
4
|
+
# service,temporal`) puts its runnable packages one level deeper, in
|
|
5
|
+
# `apps/<name>/api/` and `apps/<name>/worker/`. Without the nested globs those
|
|
6
|
+
# package.json files are not workspace members, so `pnpm install` never
|
|
7
|
+
# installs their dependencies and `pnpm dev` dies on `Cannot find package
|
|
8
|
+
# 'hono'` — with the app itself looking installed.
|
|
2
9
|
packages:
|
|
3
10
|
- apps/*
|
|
11
|
+
- apps/*/*
|