minutework 0.1.40 → 0.1.41
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/EXTERNAL_ALPHA.md +17 -1
- package/README.md +21 -1
- package/assets/claude-local/skills/README.md +5 -0
- package/assets/claude-local/skills/app-pack-authoring/SKILL.md +15 -0
- package/assets/claude-local/skills/generated-workspace-architecture/SKILL.md +25 -9
- package/assets/claude-local/skills/shell-architecture/SKILL.md +15 -0
- package/assets/claude-local/skills/vuilder-public-site-authoring/SKILL.md +10 -4
- package/assets/claude-local/skills/vuilder-workspace-architecture/SKILL.md +78 -0
- package/assets/templates/vuilder-public-site/.env.example +11 -0
- package/assets/templates/vuilder-public-site/README.md +15 -0
- package/assets/templates/vuilder-public-site/eslint.config.mjs +6 -0
- package/assets/templates/vuilder-public-site/next-env.d.ts +4 -0
- package/assets/templates/vuilder-public-site/next.config.mjs +28 -0
- package/assets/templates/vuilder-public-site/package.json +39 -0
- package/assets/templates/vuilder-public-site/postcss.config.mjs +5 -0
- package/assets/templates/vuilder-public-site/src/app/api/onboarding/start/route.ts +19 -0
- package/assets/templates/vuilder-public-site/src/app/blog/[slug]/page.tsx +25 -0
- package/assets/templates/vuilder-public-site/src/app/blog/page.tsx +26 -0
- package/assets/templates/vuilder-public-site/src/app/globals.css +103 -0
- package/assets/templates/vuilder-public-site/src/app/layout.tsx +18 -0
- package/assets/templates/vuilder-public-site/src/app/onboarding/[[...step]]/page.tsx +39 -0
- package/assets/templates/vuilder-public-site/src/app/page.tsx +43 -0
- package/assets/templates/vuilder-public-site/src/lib/env.server.ts +31 -0
- package/assets/templates/vuilder-public-site/src/lib/platform.server.ts +47 -0
- package/assets/templates/vuilder-public-site/src/lib/public-dj.server.ts +86 -0
- package/assets/templates/vuilder-public-site/src/lib/public-dj.test.ts +8 -0
- package/assets/templates/vuilder-public-site/src/lib/routes.test.ts +13 -0
- package/assets/templates/vuilder-public-site/src/lib/routes.ts +12 -0
- package/assets/templates/vuilder-public-site/template.json +21 -0
- package/assets/templates/vuilder-public-site/tools/template/validate-template.mjs +44 -0
- package/assets/templates/vuilder-public-site/tsconfig.json +23 -0
- package/assets/templates/vuilder-public-site/vitest.config.ts +13 -0
- package/assets/templates/vuilder-shell/.env.example +8 -0
- package/assets/templates/vuilder-shell/.storybook/main.ts +19 -0
- package/assets/templates/vuilder-shell/.storybook/preview.tsx +38 -0
- package/assets/templates/vuilder-shell/README.md +49 -0
- package/assets/templates/vuilder-shell/components.json +21 -0
- package/assets/templates/vuilder-shell/eslint.config.mjs +41 -0
- package/assets/templates/vuilder-shell/next-env.d.ts +6 -0
- package/assets/templates/vuilder-shell/next.config.mjs +33 -0
- package/assets/templates/vuilder-shell/package.json +61 -0
- package/assets/templates/vuilder-shell/postcss.config.mjs +8 -0
- package/assets/templates/vuilder-shell/public/.gitkeep +1 -0
- package/assets/templates/vuilder-shell/src/app/api/auth/accept-shell-session/route.test.ts +105 -0
- package/assets/templates/vuilder-shell/src/app/api/auth/accept-shell-session/route.ts +63 -0
- package/assets/templates/vuilder-shell/src/app/api/auth/logout/route.test.ts +63 -0
- package/assets/templates/vuilder-shell/src/app/api/auth/logout/route.ts +24 -0
- package/assets/templates/vuilder-shell/src/app/api/auth/session/route.test.ts +70 -0
- package/assets/templates/vuilder-shell/src/app/api/auth/session/route.ts +27 -0
- package/assets/templates/vuilder-shell/src/app/app/layout.tsx +17 -0
- package/assets/templates/vuilder-shell/src/app/app/page.tsx +30 -0
- package/assets/templates/vuilder-shell/src/app/blog/[slug]/page.tsx +15 -0
- package/assets/templates/vuilder-shell/src/app/blog/page.tsx +15 -0
- package/assets/templates/vuilder-shell/src/app/docs/[...slug]/page.tsx +15 -0
- package/assets/templates/vuilder-shell/src/app/docs/page.tsx +15 -0
- package/assets/templates/vuilder-shell/src/app/globals.css +70 -0
- package/assets/templates/vuilder-shell/src/app/layout.tsx +69 -0
- package/assets/templates/vuilder-shell/src/app/login/route.test.ts +33 -0
- package/assets/templates/vuilder-shell/src/app/login/route.ts +21 -0
- package/assets/templates/vuilder-shell/src/app/page.tsx +16 -0
- package/assets/templates/vuilder-shell/src/app/pricing/page.tsx +15 -0
- package/assets/templates/vuilder-shell/src/app/providers.tsx +25 -0
- package/assets/templates/vuilder-shell/src/app/robots.ts +21 -0
- package/assets/templates/vuilder-shell/src/app/sitemap.ts +33 -0
- package/assets/templates/vuilder-shell/src/app/w/[workspace_slug]/connect/page.tsx +31 -0
- package/assets/templates/vuilder-shell/src/app/w/[workspace_slug]/page.tsx +54 -0
- package/assets/templates/vuilder-shell/src/components/ui/button.tsx +59 -0
- package/assets/templates/vuilder-shell/src/components/ui/input.tsx +21 -0
- package/assets/templates/vuilder-shell/src/design-system/docs/governance.mdx +26 -0
- package/assets/templates/vuilder-shell/src/design-system/patterns/panel-frame.stories.tsx +48 -0
- package/assets/templates/vuilder-shell/src/design-system/patterns/panel-frame.tsx +26 -0
- package/assets/templates/vuilder-shell/src/design-system/patterns/status-badge.stories.tsx +26 -0
- package/assets/templates/vuilder-shell/src/design-system/patterns/status-badge.tsx +35 -0
- package/assets/templates/vuilder-shell/src/design-system/patterns/theme-mode-toggle.stories.tsx +21 -0
- package/assets/templates/vuilder-shell/src/design-system/patterns/theme-mode-toggle.tsx +75 -0
- package/assets/templates/vuilder-shell/src/design-system/primitives/button.stories.tsx +37 -0
- package/assets/templates/vuilder-shell/src/design-system/primitives/button.ts +1 -0
- package/assets/templates/vuilder-shell/src/design-system/primitives/input.stories.tsx +26 -0
- package/assets/templates/vuilder-shell/src/design-system/primitives/input.ts +1 -0
- package/assets/templates/vuilder-shell/src/design-system/recipes/chrome.ts +28 -0
- package/assets/templates/vuilder-shell/src/design-system/tokens/foundation.css +31 -0
- package/assets/templates/vuilder-shell/src/design-system/tokens/index.css +3 -0
- package/assets/templates/vuilder-shell/src/design-system/tokens/manifest.json +85 -0
- package/assets/templates/vuilder-shell/src/design-system/tokens/manifest.ts +87 -0
- package/assets/templates/vuilder-shell/src/design-system/tokens/semantic.css +105 -0
- package/assets/templates/vuilder-shell/src/design-system/tokens/theme.css +59 -0
- package/assets/templates/vuilder-shell/src/design-system/tokens/tokens.stories.tsx +71 -0
- package/assets/templates/vuilder-shell/src/features/dashboard/components/tenant-dashboard.tsx +134 -0
- package/assets/templates/vuilder-shell/src/features/public-shell/components/static-public-page.tsx +58 -0
- package/assets/templates/vuilder-shell/src/features/shell/components/authenticated-app-layout-shell.tsx +84 -0
- package/assets/templates/vuilder-shell/src/features/shell/components/private-app-shell.tsx +22 -0
- package/assets/templates/vuilder-shell/src/features/vuilder-shell/components/vuilder-connect-screen.tsx +89 -0
- package/assets/templates/vuilder-shell/src/features/vuilder-shell/components/vuilder-workspace-screen.tsx +49 -0
- package/assets/templates/vuilder-shell/src/lib/app-routes.test.ts +37 -0
- package/assets/templates/vuilder-shell/src/lib/app-routes.ts +86 -0
- package/assets/templates/vuilder-shell/src/lib/auth-routes.server.test.ts +26 -0
- package/assets/templates/vuilder-shell/src/lib/auth-routes.server.ts +53 -0
- package/assets/templates/vuilder-shell/src/lib/http/same-origin.test.ts +23 -0
- package/assets/templates/vuilder-shell/src/lib/http/same-origin.ts +18 -0
- package/assets/templates/vuilder-shell/src/lib/platform/client.server.test.ts +201 -0
- package/assets/templates/vuilder-shell/src/lib/platform/client.server.ts +540 -0
- package/assets/templates/vuilder-shell/src/lib/platform/contracts.ts +190 -0
- package/assets/templates/vuilder-shell/src/lib/platform/endpoints.server.ts +29 -0
- package/assets/templates/vuilder-shell/src/lib/platform/env.server.ts +82 -0
- package/assets/templates/vuilder-shell/src/lib/platform/route-response.ts +33 -0
- package/assets/templates/vuilder-shell/src/lib/platform/session.server.ts +145 -0
- package/assets/templates/vuilder-shell/src/lib/public-site.test.ts +20 -0
- package/assets/templates/vuilder-shell/src/lib/public-site.ts +48 -0
- package/assets/templates/vuilder-shell/src/lib/theme-config.ts +10 -0
- package/assets/templates/vuilder-shell/src/lib/theme.tsx +159 -0
- package/assets/templates/vuilder-shell/src/lib/utils.ts +6 -0
- package/assets/templates/vuilder-shell/template.json +28 -0
- package/assets/templates/vuilder-shell/template.schema.json +171 -0
- package/assets/templates/vuilder-shell/test/server-only-stub.ts +1 -0
- package/assets/templates/vuilder-shell/tools/design-system/build-token-manifest.mjs +3 -0
- package/assets/templates/vuilder-shell/tools/design-system/check-imports.mjs +9 -0
- package/assets/templates/vuilder-shell/tools/design-system/check-stories.mjs +9 -0
- package/assets/templates/vuilder-shell/tools/design-system/check-values.mjs +9 -0
- package/assets/templates/vuilder-shell/tools/design-system/checks.mjs +238 -0
- package/assets/templates/vuilder-shell/tools/design-system/eslint-plugin-design-system.mjs +184 -0
- package/assets/templates/vuilder-shell/tools/design-system/playwright.config.mjs +34 -0
- package/assets/templates/vuilder-shell/tools/design-system/run-checks.mjs +22 -0
- package/assets/templates/vuilder-shell/tools/design-system/shared.mjs +166 -0
- package/assets/templates/vuilder-shell/tools/design-system/visual.spec.ts +41 -0
- package/assets/templates/vuilder-shell/tools/template/validate-route-contract.mjs +373 -0
- package/assets/templates/vuilder-shell/tools/template/validate-template.mjs +45 -0
- package/assets/templates/vuilder-shell/tools/template/with-public-site-fixture.mjs +45 -0
- package/assets/templates/vuilder-shell/tsconfig.json +42 -0
- package/assets/templates/vuilder-shell/vitest.config.ts +23 -0
- package/dist/auth.js +66 -14
- package/dist/auth.js.map +1 -1
- package/dist/deploy-state.d.ts +1 -0
- package/dist/deploy-state.js.map +1 -1
- package/dist/deploy.js +18 -4
- package/dist/deploy.js.map +1 -1
- package/dist/developer-client.d.ts +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/init-prompt.js +21 -13
- package/dist/init-prompt.js.map +1 -1
- package/dist/init.d.ts +3 -1
- package/dist/init.js +103 -12
- package/dist/init.js.map +1 -1
- package/dist/orchestrator-context.js +17 -5
- package/dist/orchestrator-context.js.map +1 -1
- package/dist/orchestrator-state.d.ts +2 -2
- package/dist/orchestrator-state.js.map +1 -1
- package/dist/publish.js +12 -2
- package/dist/publish.js.map +1 -1
- package/dist/state.d.ts +2 -0
- package/dist/state.js +9 -0
- package/dist/state.js.map +1 -1
- package/package.json +3 -3
- package/vendor/workspace-mcp/context.d.ts +3 -1
- package/vendor/workspace-mcp/context.js +134 -21
- package/vendor/workspace-mcp/context.js.map +1 -1
- package/vendor/workspace-mcp/types.d.ts +72 -7
- package/vendor/workspace-mcp/types.js +8 -4
- package/vendor/workspace-mcp/types.js.map +1 -1
- package/assets/templates/fastapi-sidecar/poetry.lock +0 -757
- package/assets/templates/next-tenant-app/package-lock.json +0 -9682
- package/assets/templates/next-tenant-app/pnpm-lock.yaml +0 -6062
package/dist/state.js
CHANGED
|
@@ -150,10 +150,12 @@ function normalizeWorkspaceBinding(rawBinding) {
|
|
|
150
150
|
targetKind: "runtime_app",
|
|
151
151
|
};
|
|
152
152
|
}
|
|
153
|
+
const hostedStarterId = normalizeHostedStarterId(rawBinding.starterId);
|
|
153
154
|
return {
|
|
154
155
|
...shared,
|
|
155
156
|
propertyKey: String(rawBinding.propertyKey || "").trim(),
|
|
156
157
|
releaseClass: "ssr_container",
|
|
158
|
+
...(hostedStarterId ? { starterId: hostedStarterId } : {}),
|
|
157
159
|
targetKind: "public_site",
|
|
158
160
|
};
|
|
159
161
|
}
|
|
@@ -168,4 +170,11 @@ function normalizeRuntimeReleaseClass(value) {
|
|
|
168
170
|
function normalizeRuntimeTier(value) {
|
|
169
171
|
return String(value || "").trim().toLowerCase() === "sandbox" ? "sandbox" : "primary";
|
|
170
172
|
}
|
|
173
|
+
function normalizeHostedStarterId(value) {
|
|
174
|
+
const normalized = String(value || "").trim();
|
|
175
|
+
if (normalized === "tenant-app" || normalized === "vuilder-app") {
|
|
176
|
+
return normalized;
|
|
177
|
+
}
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
171
180
|
//# sourceMappingURL=state.js.map
|
package/dist/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "minutework",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.41",
|
|
4
4
|
"description": "MinuteWork CLI for workspace scaffolding, local preview workflows, and hosted preview deploys.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"@modelcontextprotocol/sdk": "^1.28.0",
|
|
25
25
|
"jiti": "^2.6.1",
|
|
26
26
|
"zod": "^4.3.6",
|
|
27
|
-
"@minutework/
|
|
28
|
-
"@minutework/
|
|
27
|
+
"@minutework/platform-config": "0.1.2",
|
|
28
|
+
"@minutework/schema-compiler": "0.1.6"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/node": "^24.9.1",
|
|
@@ -53,9 +53,11 @@ export type WorkspaceContext = {
|
|
|
53
53
|
mobileStarterExists: boolean;
|
|
54
54
|
sidecarStarterExists: boolean;
|
|
55
55
|
tenantAppStarterExists: boolean;
|
|
56
|
+
vuilderAppStarterExists: boolean;
|
|
57
|
+
vuilderShellStarterExists: boolean;
|
|
56
58
|
workspaceRoot: string;
|
|
57
59
|
};
|
|
58
|
-
export type LocalRuntimeStatusContext = Pick<WorkspaceContext, "compileGraphArtifactExists" | "compilerStaticAnalysis" | "config" | "persistedCompileGraphDigest" | "persistedCompileGraphCurrent" | "persistedCompileGraphCorrupted" | "runtimeStatePaths" | "runtimeTestRunState" | "runtimeDevSessionState" | "sidecarStarterExists" | "tenantAppStarterExists" | "workspaceRoot">;
|
|
60
|
+
export type LocalRuntimeStatusContext = Pick<WorkspaceContext, "compileGraphArtifactExists" | "compilerStaticAnalysis" | "config" | "persistedCompileGraphDigest" | "persistedCompileGraphCurrent" | "persistedCompileGraphCorrupted" | "runtimeStatePaths" | "runtimeTestRunState" | "runtimeDevSessionState" | "sidecarStarterExists" | "tenantAppStarterExists" | "vuilderAppStarterExists" | "vuilderShellStarterExists" | "workspaceRoot">;
|
|
59
61
|
export declare class WorkspaceMcpError extends Error {
|
|
60
62
|
}
|
|
61
63
|
export declare const WORKSPACE_MCP_TOOL_SPECS: readonly [{
|
|
@@ -116,6 +116,10 @@ export async function loadWorkspaceContext(options = {}) {
|
|
|
116
116
|
const schemaEntrypointPath = path.join(workspaceRoot, config.schema.entrypoint);
|
|
117
117
|
const schemaMwPath = path.join(workspaceRoot, "schema.mw");
|
|
118
118
|
const tenantAppStarterPath = path.join(workspaceRoot, config.starters.tenantApp.path);
|
|
119
|
+
const vuilderAppStarter = resolveVuilderAppStarterConfig(config);
|
|
120
|
+
const vuilderShellStarter = resolveVuilderShellStarterConfig(config);
|
|
121
|
+
const vuilderAppStarterPath = path.join(workspaceRoot, vuilderAppStarter.path);
|
|
122
|
+
const vuilderShellStarterPath = path.join(workspaceRoot, vuilderShellStarter.path);
|
|
119
123
|
const sidecarStarterPath = path.join(workspaceRoot, config.starters.sidecar.path);
|
|
120
124
|
const mobileStarter = resolveMobileStarterConfig(config);
|
|
121
125
|
const mobileStarterPath = path.join(workspaceRoot, mobileStarter.path);
|
|
@@ -125,7 +129,7 @@ export async function loadWorkspaceContext(options = {}) {
|
|
|
125
129
|
const capabilityGapReportPath = path.join(runtimeStatePaths.sandboxRoot, "capability-gap-report.json");
|
|
126
130
|
const compilerStaticAnalysis = await inspectCompilerWorkspace(workspaceRoot);
|
|
127
131
|
const compilerAnalysis = await analyzeCompilerWorkspace(workspaceRoot);
|
|
128
|
-
const [cursorConfigExists, claudeDesktopSampleExists, schemaDirectoryExists, schemaEntrypointExists, schemaMwExists, compileGraphArtifactExists, openapiArtifactExists, clientTypesArtifactExists, tenantAppStarterExists, sidecarStarterExists, mobileStarterExists,] = await Promise.all([
|
|
132
|
+
const [cursorConfigExists, claudeDesktopSampleExists, schemaDirectoryExists, schemaEntrypointExists, schemaMwExists, compileGraphArtifactExists, openapiArtifactExists, clientTypesArtifactExists, tenantAppStarterExists, vuilderAppStarterExists, vuilderShellStarterExists, sidecarStarterExists, mobileStarterExists,] = await Promise.all([
|
|
129
133
|
exists(cursorConfigPath),
|
|
130
134
|
exists(claudeDesktopSamplePath),
|
|
131
135
|
exists(schemaDirectoryPath),
|
|
@@ -135,6 +139,8 @@ export async function loadWorkspaceContext(options = {}) {
|
|
|
135
139
|
exists(path.join(workspaceRoot, artifactPaths.openapiPath)),
|
|
136
140
|
exists(path.join(workspaceRoot, artifactPaths.clientTypesPath)),
|
|
137
141
|
exists(tenantAppStarterPath),
|
|
142
|
+
exists(vuilderAppStarterPath),
|
|
143
|
+
exists(vuilderShellStarterPath),
|
|
138
144
|
exists(sidecarStarterPath),
|
|
139
145
|
exists(mobileStarterPath),
|
|
140
146
|
]);
|
|
@@ -223,6 +229,8 @@ export async function loadWorkspaceContext(options = {}) {
|
|
|
223
229
|
mobileStarterExists,
|
|
224
230
|
sidecarStarterExists,
|
|
225
231
|
tenantAppStarterExists,
|
|
232
|
+
vuilderAppStarterExists,
|
|
233
|
+
vuilderShellStarterExists,
|
|
226
234
|
workspaceRoot,
|
|
227
235
|
};
|
|
228
236
|
}
|
|
@@ -239,10 +247,16 @@ export async function loadLocalRuntimeStatusContext(options = {}) {
|
|
|
239
247
|
const compileGraphPath = path.join(workspaceRoot, artifactPaths.compileGraphPath);
|
|
240
248
|
const runtimeStatePaths = resolveLocalRuntimeStatePaths(workspaceRoot, config.localState.directory);
|
|
241
249
|
const tenantAppStarterPath = path.join(workspaceRoot, config.starters.tenantApp.path);
|
|
250
|
+
const vuilderAppStarter = resolveVuilderAppStarterConfig(config);
|
|
251
|
+
const vuilderShellStarter = resolveVuilderShellStarterConfig(config);
|
|
252
|
+
const vuilderAppStarterPath = path.join(workspaceRoot, vuilderAppStarter.path);
|
|
253
|
+
const vuilderShellStarterPath = path.join(workspaceRoot, vuilderShellStarter.path);
|
|
242
254
|
const sidecarStarterPath = path.join(workspaceRoot, config.starters.sidecar.path);
|
|
243
|
-
const [compileGraphArtifactExists, tenantAppStarterExists, sidecarStarterExists] = await Promise.all([
|
|
255
|
+
const [compileGraphArtifactExists, tenantAppStarterExists, vuilderAppStarterExists, vuilderShellStarterExists, sidecarStarterExists,] = await Promise.all([
|
|
244
256
|
exists(compileGraphPath),
|
|
245
257
|
exists(tenantAppStarterPath),
|
|
258
|
+
exists(vuilderAppStarterPath),
|
|
259
|
+
exists(vuilderShellStarterPath),
|
|
246
260
|
exists(sidecarStarterPath),
|
|
247
261
|
]);
|
|
248
262
|
const persistedCompileGraphState = compileGraphArtifactExists
|
|
@@ -271,6 +285,8 @@ export async function loadLocalRuntimeStatusContext(options = {}) {
|
|
|
271
285
|
runtimeTestRunState,
|
|
272
286
|
sidecarStarterExists,
|
|
273
287
|
tenantAppStarterExists,
|
|
288
|
+
vuilderAppStarterExists,
|
|
289
|
+
vuilderShellStarterExists,
|
|
274
290
|
workspaceRoot,
|
|
275
291
|
};
|
|
276
292
|
}
|
|
@@ -306,6 +322,8 @@ export function collectWorkspaceSnapshot(context) {
|
|
|
306
322
|
},
|
|
307
323
|
starters: [
|
|
308
324
|
buildStarter("tenant-app", context),
|
|
325
|
+
buildStarter("vuilder-app", context),
|
|
326
|
+
buildStarter("vuilder-shell", context),
|
|
309
327
|
buildStarter("sidecar", context),
|
|
310
328
|
buildStarter("mobile", context),
|
|
311
329
|
],
|
|
@@ -341,6 +359,8 @@ function buildNormalizedWorkspaceConfig(context) {
|
|
|
341
359
|
mobile: buildNormalizedStarterConfig("mobile", context),
|
|
342
360
|
sidecar: buildNormalizedStarterConfig("sidecar", context),
|
|
343
361
|
tenantApp: buildNormalizedStarterConfig("tenant-app", context),
|
|
362
|
+
vuilderApp: buildNormalizedStarterConfig("vuilder-app", context),
|
|
363
|
+
vuilderShell: buildNormalizedStarterConfig("vuilder-shell", context),
|
|
344
364
|
},
|
|
345
365
|
workspace: {
|
|
346
366
|
name: context.config.workspace.name,
|
|
@@ -379,11 +399,20 @@ export function collectLocalRuntimeStatus(context) {
|
|
|
379
399
|
const surfaces = [
|
|
380
400
|
buildSchemaCompileSurface(context, compileGraphPath),
|
|
381
401
|
buildStarterSurface(context, "tenant_app"),
|
|
402
|
+
buildStarterSurface(context, "vuilder_app"),
|
|
403
|
+
buildStarterSurface(context, "vuilder_shell"),
|
|
382
404
|
buildStarterSurface(context, "sidecar"),
|
|
383
405
|
];
|
|
384
406
|
const previewSurfaceIssueCodes = collectPreviewSurfaceIssueCodes(surfaces);
|
|
385
|
-
const hasMissingPreviewSurfacePath = previewSurfaceIssueCodes.some((code) => code === "workspace.runtime.tenant_app_missing" ||
|
|
386
|
-
|
|
407
|
+
const hasMissingPreviewSurfacePath = previewSurfaceIssueCodes.some((code) => code === "workspace.runtime.tenant_app_missing" ||
|
|
408
|
+
code === "workspace.runtime.vuilder_app_missing" ||
|
|
409
|
+
code === "workspace.runtime.vuilder_shell_missing" ||
|
|
410
|
+
code === "workspace.runtime.sidecar_missing");
|
|
411
|
+
const hasEnabledPreviewSurface = surfaces.some((surface) => (surface.id === "tenant_app" ||
|
|
412
|
+
surface.id === "vuilder_app" ||
|
|
413
|
+
surface.id === "vuilder_shell" ||
|
|
414
|
+
surface.id === "sidecar") &&
|
|
415
|
+
surface.status === "ready");
|
|
387
416
|
const devActivity = buildLocalRuntimeActivitySummary("dev", context.runtimeDevSessionState, context.persistedCompileGraphDigest);
|
|
388
417
|
const testActivity = buildLocalRuntimeActivitySummary("test", context.runtimeTestRunState, context.persistedCompileGraphDigest);
|
|
389
418
|
return {
|
|
@@ -400,7 +429,7 @@ export function collectLocalRuntimeStatus(context) {
|
|
|
400
429
|
? "The local sandbox can start the enabled preview surfaces from the current canonical compile graph."
|
|
401
430
|
: hasMissingPreviewSurfacePath
|
|
402
431
|
? "The local sandbox cannot start preview surfaces until the enabled starter paths exist."
|
|
403
|
-
: "The local sandbox does not have any enabled preview surfaces yet. Add a
|
|
432
|
+
: "The local sandbox does not have any enabled preview surfaces yet. Add a hosted web or sidecar starter before running dev."
|
|
404
433
|
: "The local sandbox needs a current canonical compile graph before preview surfaces can start. Run `minutework compile` first."
|
|
405
434
|
: "The local sandbox cannot start until the workspace has exactly one supported schema input.",
|
|
406
435
|
name: "dev",
|
|
@@ -615,10 +644,27 @@ function buildSchemaCompileSurface(context, compileGraphPath) {
|
|
|
615
644
|
};
|
|
616
645
|
}
|
|
617
646
|
function buildStarterSurface(context, id) {
|
|
618
|
-
const
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
647
|
+
const starter = id === "tenant_app"
|
|
648
|
+
? context.config.starters.tenantApp
|
|
649
|
+
: id === "vuilder_app"
|
|
650
|
+
? resolveVuilderAppStarterConfig(context.config)
|
|
651
|
+
: id === "vuilder_shell"
|
|
652
|
+
? resolveVuilderShellStarterConfig(context.config)
|
|
653
|
+
: context.config.starters.sidecar;
|
|
654
|
+
const starterExists = id === "tenant_app"
|
|
655
|
+
? context.tenantAppStarterExists
|
|
656
|
+
: id === "vuilder_app"
|
|
657
|
+
? context.vuilderAppStarterExists
|
|
658
|
+
: id === "vuilder_shell"
|
|
659
|
+
? context.vuilderShellStarterExists
|
|
660
|
+
: context.sidecarStarterExists;
|
|
661
|
+
const starterLabel = id === "tenant_app"
|
|
662
|
+
? "tenant-app"
|
|
663
|
+
: id === "vuilder_app"
|
|
664
|
+
? "vuilder-app"
|
|
665
|
+
: id === "vuilder_shell"
|
|
666
|
+
? "vuilder-shell"
|
|
667
|
+
: "sidecar";
|
|
622
668
|
const absolutePath = path.join(context.workspaceRoot, starter.path);
|
|
623
669
|
if (!starter.enabled) {
|
|
624
670
|
return {
|
|
@@ -654,6 +700,8 @@ function buildStarterSurface(context, id) {
|
|
|
654
700
|
function collectPreviewSurfaceIssueCodes(surfaces) {
|
|
655
701
|
const issueCodes = [];
|
|
656
702
|
const tenantAppSurface = surfaces.find((surface) => surface.id === "tenant_app");
|
|
703
|
+
const vuilderAppSurface = surfaces.find((surface) => surface.id === "vuilder_app");
|
|
704
|
+
const vuilderShellSurface = surfaces.find((surface) => surface.id === "vuilder_shell");
|
|
657
705
|
const sidecarSurface = surfaces.find((surface) => surface.id === "sidecar");
|
|
658
706
|
if (tenantAppSurface?.status === "missing") {
|
|
659
707
|
issueCodes.push("workspace.runtime.tenant_app_missing");
|
|
@@ -661,7 +709,16 @@ function collectPreviewSurfaceIssueCodes(surfaces) {
|
|
|
661
709
|
if (sidecarSurface?.status === "missing") {
|
|
662
710
|
issueCodes.push("workspace.runtime.sidecar_missing");
|
|
663
711
|
}
|
|
664
|
-
if (
|
|
712
|
+
if (vuilderAppSurface?.status === "missing") {
|
|
713
|
+
issueCodes.push("workspace.runtime.vuilder_app_missing");
|
|
714
|
+
}
|
|
715
|
+
if (vuilderShellSurface?.status === "missing") {
|
|
716
|
+
issueCodes.push("workspace.runtime.vuilder_shell_missing");
|
|
717
|
+
}
|
|
718
|
+
if ((tenantAppSurface?.status ?? "disabled") === "disabled" &&
|
|
719
|
+
(vuilderAppSurface?.status ?? "disabled") === "disabled" &&
|
|
720
|
+
(vuilderShellSurface?.status ?? "disabled") === "disabled" &&
|
|
721
|
+
(sidecarSurface?.status ?? "disabled") === "disabled") {
|
|
665
722
|
issueCodes.push("workspace.runtime.preview_surface_missing");
|
|
666
723
|
}
|
|
667
724
|
return issueCodes;
|
|
@@ -707,6 +764,26 @@ function buildLocalRuntimePreviewSteps(context) {
|
|
|
707
764
|
program: "pnpm",
|
|
708
765
|
});
|
|
709
766
|
}
|
|
767
|
+
const vuilderAppStarter = resolveVuilderAppStarterConfig(context.config);
|
|
768
|
+
if (vuilderAppStarter.enabled && context.vuilderAppStarterExists) {
|
|
769
|
+
steps.push({
|
|
770
|
+
args: ["--dir", vuilderAppStarter.path, "dev"],
|
|
771
|
+
cwd: context.workspaceRoot,
|
|
772
|
+
detail: "Start the Vuilder public app preview surface.",
|
|
773
|
+
id: "vuilder_app_dev",
|
|
774
|
+
program: "pnpm",
|
|
775
|
+
});
|
|
776
|
+
}
|
|
777
|
+
const vuilderShellStarter = resolveVuilderShellStarterConfig(context.config);
|
|
778
|
+
if (vuilderShellStarter.enabled && context.vuilderShellStarterExists) {
|
|
779
|
+
steps.push({
|
|
780
|
+
args: ["--dir", vuilderShellStarter.path, "dev"],
|
|
781
|
+
cwd: context.workspaceRoot,
|
|
782
|
+
detail: "Start the Vuilder shell preview surface.",
|
|
783
|
+
id: "vuilder_shell_dev",
|
|
784
|
+
program: "pnpm",
|
|
785
|
+
});
|
|
786
|
+
}
|
|
710
787
|
if (context.config.starters.sidecar.enabled && context.sidecarStarterExists) {
|
|
711
788
|
steps.push({
|
|
712
789
|
args: ["run", "uvicorn", "fastapi_sidecar.main:app", "--reload"],
|
|
@@ -729,6 +806,26 @@ function buildLocalRuntimeTestSteps(context) {
|
|
|
729
806
|
program: "pnpm",
|
|
730
807
|
});
|
|
731
808
|
}
|
|
809
|
+
const vuilderAppStarter = resolveVuilderAppStarterConfig(context.config);
|
|
810
|
+
if (vuilderAppStarter.enabled && context.vuilderAppStarterExists) {
|
|
811
|
+
steps.push({
|
|
812
|
+
args: ["--dir", vuilderAppStarter.path, "test"],
|
|
813
|
+
cwd: context.workspaceRoot,
|
|
814
|
+
detail: "Run the Vuilder public app local test suite.",
|
|
815
|
+
id: "vuilder_app_test",
|
|
816
|
+
program: "pnpm",
|
|
817
|
+
});
|
|
818
|
+
}
|
|
819
|
+
const vuilderShellStarter = resolveVuilderShellStarterConfig(context.config);
|
|
820
|
+
if (vuilderShellStarter.enabled && context.vuilderShellStarterExists) {
|
|
821
|
+
steps.push({
|
|
822
|
+
args: ["--dir", vuilderShellStarter.path, "test"],
|
|
823
|
+
cwd: context.workspaceRoot,
|
|
824
|
+
detail: "Run the Vuilder shell local test suite.",
|
|
825
|
+
id: "vuilder_shell_test",
|
|
826
|
+
program: "pnpm",
|
|
827
|
+
});
|
|
828
|
+
}
|
|
732
829
|
if (context.config.starters.sidecar.enabled && context.sidecarStarterExists) {
|
|
733
830
|
steps.push({
|
|
734
831
|
args: ["run", "pytest"],
|
|
@@ -743,7 +840,7 @@ function buildLocalRuntimeTestSteps(context) {
|
|
|
743
840
|
export function collectDeployStatus(context) {
|
|
744
841
|
const binding = context.bindingStatus.binding;
|
|
745
842
|
const activeEnvironment = binding?.environment ?? null;
|
|
746
|
-
const compiledRelease = resolveCompiledPreviewReleaseMetadata(context.compilerAnalysis.compileGraph, binding
|
|
843
|
+
const compiledRelease = resolveCompiledPreviewReleaseMetadata(context.compilerAnalysis.compileGraph, binding);
|
|
747
844
|
const previewState = resolvePreviewDeployStateForBinding(context.previewDeployState, binding);
|
|
748
845
|
const previewPrerequisiteCodes = collectDeployPrerequisiteCodes({
|
|
749
846
|
binding,
|
|
@@ -810,6 +907,8 @@ export function collectCapabilityInventory(context) {
|
|
|
810
907
|
buildLiveDeployTargetStatus(context, false);
|
|
811
908
|
const enabledStarters = [
|
|
812
909
|
context.config.starters.tenantApp.enabled ? "tenant-app" : null,
|
|
910
|
+
resolveVuilderAppStarterConfig(context.config).enabled ? "vuilder-app" : null,
|
|
911
|
+
resolveVuilderShellStarterConfig(context.config).enabled ? "vuilder-shell" : null,
|
|
813
912
|
context.config.starters.sidecar.enabled ? "sidecar" : null,
|
|
814
913
|
resolveMobileStarterConfig(context.config).enabled ? "mobile" : null,
|
|
815
914
|
].filter((starter) => starter !== null);
|
|
@@ -835,9 +934,9 @@ export function collectCapabilityInventory(context) {
|
|
|
835
934
|
"runtime-local Builder host work initiated from the developer-local broker lane",
|
|
836
935
|
],
|
|
837
936
|
detail: "Generated workspaces can inspect local authoring, compile-graph, and preview deploy posture, but they do not imply full live runtime descriptor or live-public deployment coverage.",
|
|
838
|
-
hostedPreviewDeploy: "Hosted preview/deploy remains narrower than local authoring:
|
|
839
|
-
localAuthoring: "Developer-local MinuteWork authoring
|
|
840
|
-
supportedLocalAuthoringSurfaces: ["tenant-app", "sidecar", "mobile", "combinations"],
|
|
937
|
+
hostedPreviewDeploy: "Hosted preview/deploy remains narrower than local authoring: hosted web starters can preview deploy, while sidecar/runtime-backed deploy support remains separate from mobile distribution.",
|
|
938
|
+
localAuthoring: "Developer-local MinuteWork authoring supports tenant-app, vuilder-app, vuilder-shell, sidecar, mobile, or combinations through the broker plus the local sandbox/workspace MCP lane. Mobile is a standalone native client, not a hosted deploy lane.",
|
|
939
|
+
supportedLocalAuthoringSurfaces: ["tenant-app", "vuilder-app", "vuilder-shell", "sidecar", "mobile", "combinations"],
|
|
841
940
|
},
|
|
842
941
|
authAndBindingInventory: {
|
|
843
942
|
authStatus: context.authStatus.status,
|
|
@@ -866,6 +965,8 @@ export function collectCapabilityInventory(context) {
|
|
|
866
965
|
},
|
|
867
966
|
contractualDefaults: [
|
|
868
967
|
"`tenant-app` is the combined public plus private web starter.",
|
|
968
|
+
"`vuilder-app` is the Vuilder public landing/blog/onboarding site backed by public-dj manifests.",
|
|
969
|
+
"`vuilder-shell` is the Vuilder-branded customer tenant shell; it customizes tenant UX, not identity/provisioning/install authority.",
|
|
869
970
|
"`mobile` is a standalone Expo/React Native client that talks directly to platform native session endpoints; it is not a tenant-app BFF or sidecar.",
|
|
870
971
|
"`mw.core.site` is a first-party baseline runtime capability by architecture contract.",
|
|
871
972
|
"Generated workspaces are developer-local authoring clients, not live runtime descriptors.",
|
|
@@ -1063,7 +1164,7 @@ function buildPreviewDeployTargetStatus(options) {
|
|
|
1063
1164
|
compiledRelease: null,
|
|
1064
1165
|
currentPreviewUrl: previewUrl,
|
|
1065
1166
|
currentTarget: options.currentTarget,
|
|
1066
|
-
detail: "The linked preview target does not have current hosted release metadata. Re-run `minutework compile` after confirming
|
|
1167
|
+
detail: "The linked preview target does not have current hosted release metadata. Re-run `minutework compile` after confirming hosted starter preview env defaults.",
|
|
1067
1168
|
environment: "preview",
|
|
1068
1169
|
lastRequestedAt: options.previewState?.lastRequestedAt ?? null,
|
|
1069
1170
|
lastRequestedReceiptId: options.previewState?.lastRequestedReceiptId ?? null,
|
|
@@ -1163,13 +1264,15 @@ function collectDeployPrerequisiteCodes(options) {
|
|
|
1163
1264
|
}
|
|
1164
1265
|
return Array.from(new Set(codes));
|
|
1165
1266
|
}
|
|
1166
|
-
function resolveCompiledPreviewReleaseMetadata(compileGraph,
|
|
1167
|
-
if (!compileGraph || !propertyKey) {
|
|
1267
|
+
function resolveCompiledPreviewReleaseMetadata(compileGraph, binding) {
|
|
1268
|
+
if (!compileGraph || !binding?.propertyKey) {
|
|
1168
1269
|
return null;
|
|
1169
1270
|
}
|
|
1170
1271
|
for (const document of compileGraph.documents.releaseMetadata) {
|
|
1171
1272
|
const parsed = HostedPreviewReleaseMetadataSchema.safeParse(document);
|
|
1172
|
-
if (parsed.success &&
|
|
1273
|
+
if (parsed.success &&
|
|
1274
|
+
parsed.data.propertyKey === binding.propertyKey &&
|
|
1275
|
+
(!binding.starterId || parsed.data.starterId === binding.starterId)) {
|
|
1173
1276
|
return mapCompiledRelease(parsed.data);
|
|
1174
1277
|
}
|
|
1175
1278
|
}
|
|
@@ -1481,9 +1584,13 @@ function buildStarter(id, context) {
|
|
|
1481
1584
|
function buildNormalizedStarterConfig(id, context) {
|
|
1482
1585
|
const starter = id === "tenant-app"
|
|
1483
1586
|
? context.config.starters.tenantApp
|
|
1484
|
-
: id === "
|
|
1485
|
-
? context.config
|
|
1486
|
-
:
|
|
1587
|
+
: id === "vuilder-app"
|
|
1588
|
+
? resolveVuilderAppStarterConfig(context.config)
|
|
1589
|
+
: id === "vuilder-shell"
|
|
1590
|
+
? resolveVuilderShellStarterConfig(context.config)
|
|
1591
|
+
: id === "sidecar"
|
|
1592
|
+
? context.config.starters.sidecar
|
|
1593
|
+
: resolveMobileStarterConfig(context.config);
|
|
1487
1594
|
return {
|
|
1488
1595
|
absolutePath: path.join(context.workspaceRoot, starter.path),
|
|
1489
1596
|
enabled: starter.enabled,
|
|
@@ -1493,6 +1600,12 @@ function buildNormalizedStarterConfig(id, context) {
|
|
|
1493
1600
|
function resolveMobileStarterConfig(config) {
|
|
1494
1601
|
return config.starters.mobile ?? { enabled: false, path: "mobile" };
|
|
1495
1602
|
}
|
|
1603
|
+
function resolveVuilderAppStarterConfig(config) {
|
|
1604
|
+
return config.starters.vuilderApp ?? { enabled: false, path: "vuilder-app" };
|
|
1605
|
+
}
|
|
1606
|
+
function resolveVuilderShellStarterConfig(config) {
|
|
1607
|
+
return config.starters.vuilderShell ?? { enabled: false, path: "vuilder-shell" };
|
|
1608
|
+
}
|
|
1496
1609
|
function collectPrerequisiteCodes(context) {
|
|
1497
1610
|
return [
|
|
1498
1611
|
...context.diagnostics.filter((item) => item.severity !== "info").map((item) => item.code),
|