minutework 0.1.34 → 0.1.36

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 (26) hide show
  1. package/EXTERNAL_ALPHA.md +8 -6
  2. package/README.md +1 -1
  3. package/assets/claude-local/CLAUDE.md.template +12 -8
  4. package/assets/templates/mobile-app/package.json +1 -0
  5. package/assets/templates/mobile-app/src/mw/client.ts +29 -232
  6. package/assets/templates/mobile-app/src/mw/session.ts +6 -2
  7. package/assets/templates/next-tenant-app/.env.example +2 -8
  8. package/assets/templates/next-tenant-app/README.md +4 -0
  9. package/assets/templates/next-tenant-app/src/app/app/demo/page.tsx +1 -7
  10. package/assets/templates/next-tenant-app/src/app/app/layout.tsx +9 -1
  11. package/assets/templates/next-tenant-app/src/features/shell/components/authenticated-app-layout-shell.tsx +181 -0
  12. package/assets/templates/next-tenant-app/src/features/shell/components/private-app-shell.tsx +3 -113
  13. package/assets/templates/next-tenant-app/src/mw/mock.test.ts +2 -1
  14. package/assets/templates/next-tenant-app/src/mw/mock.ts +3 -1
  15. package/assets/templates/next-tenant-app/tools/template/validate-route-contract.mjs +120 -1
  16. package/assets/templates/next-tenant-app/tools/template/with-public-site-fixture.mjs +28 -114
  17. package/assets/templates/next-tenant-app/vitest.config.ts +2 -6
  18. package/dist/runtime-package.d.ts +2 -1
  19. package/dist/runtime-package.js +12 -4
  20. package/dist/runtime-package.js.map +1 -1
  21. package/dist/workspace-bootstrap.js +2 -5
  22. package/dist/workspace-bootstrap.js.map +1 -1
  23. package/package.json +1 -1
  24. package/vendor/workspace-mcp/types.d.ts +27 -0
  25. package/assets/templates/mobile-app/src/mw/contracts.ts +0 -79
  26. package/assets/templates/mobile-app/src/mw/endpoints.ts +0 -42
@@ -1,120 +1,10 @@
1
1
  "use client";
2
2
 
3
- import { startTransition } from "react";
4
- import Link from "next/link";
5
- import { useRouter } from "next/navigation";
6
- import { LayoutDashboard, LogOut, PlaySquare } from "lucide-react";
7
-
8
- import { PanelFrame } from "@/design-system/patterns/panel-frame";
9
- import { ThemeModeToggle } from "@/design-system/patterns/theme-mode-toggle";
10
- import { Button } from "@/design-system/primitives/button";
11
3
  import { TenantDashboard } from "@/features/dashboard/components/tenant-dashboard";
12
- import { appRoutes } from "@/lib/app-routes";
13
- import { useMinuteWorkAuth, useMinuteWorkSession } from "@minutework/web-auth/react";
4
+ import { useAuthenticatedTenantCustomerSession } from "@/features/shell/components/authenticated-app-layout-shell";
14
5
 
15
6
  export function PrivateAppShell({ appName }: { appName: string }) {
16
- const router = useRouter();
17
- const { logout } = useMinuteWorkAuth();
18
- const { session, loading, authenticated, emailVerificationRequired } =
19
- useMinuteWorkSession();
20
-
21
- function redirectToLogin() {
22
- startTransition(() => {
23
- router.replace(appRoutes.login);
24
- router.refresh();
25
- });
26
- }
27
-
28
- async function handleLogout() {
29
- await logout().catch(() => undefined);
30
- redirectToLogin();
31
- }
32
-
33
- if (loading) {
34
- return (
35
- <main className="min-h-screen bg-background text-foreground">
36
- <div className="mx-auto flex min-h-screen max-w-5xl items-center px-6 py-10">
37
- <PanelFrame tone="floating" radius="xl" padding="lg" className="w-full">
38
- <p className="text-sm text-muted-foreground">Loading session</p>
39
- </PanelFrame>
40
- </div>
41
- </main>
42
- );
43
- }
44
-
45
- if (!authenticated || !session?.customer_membership) {
46
- return (
47
- <main className="min-h-screen bg-background text-foreground">
48
- <div className="mx-auto flex min-h-screen max-w-5xl items-center px-6 py-10">
49
- <PanelFrame tone="floating" radius="xl" padding="lg" className="w-full space-y-4">
50
- <div className="space-y-2">
51
- <h1 className="text-3xl font-semibold tracking-tight">
52
- {emailVerificationRequired
53
- ? "Email verification required"
54
- : "Log in to continue"}
55
- </h1>
56
- <p className="text-sm leading-7 text-muted-foreground">
57
- {emailVerificationRequired
58
- ? "Finish verification from your email before opening the workspace."
59
- : "This area is available to verified customers."}
60
- </p>
61
- </div>
62
- <Button onClick={redirectToLogin} className="w-fit">
63
- Open login
64
- </Button>
65
- </PanelFrame>
66
- </div>
67
- </main>
68
- );
69
- }
70
-
71
- return (
72
- <main className="min-h-screen bg-background text-foreground">
73
- <div className="mx-auto flex min-h-screen max-w-7xl flex-col gap-6 px-6 py-8">
74
- <header className="flex flex-col gap-6 xl:flex-row xl:items-start xl:justify-between">
75
- <div className="space-y-2">
76
- <p className="text-sm font-semibold uppercase tracking-widest text-muted-foreground">
77
- {session.tenant.name}
78
- </p>
79
- <h1 className="max-w-3xl text-4xl font-semibold tracking-tight text-balance sm:text-5xl">
80
- {appName}
81
- </h1>
82
- <p className="max-w-3xl text-base leading-7 text-muted-foreground sm:text-lg">
83
- Signed in as {session.user?.email || session.user?.username}.
84
- </p>
85
- </div>
86
-
87
- <div className="flex flex-col gap-3 sm:flex-row sm:items-start">
88
- <ThemeModeToggle className="w-full sm:w-72" />
89
- <Button
90
- type="button"
91
- variant="outline"
92
- className="gap-2"
93
- onClick={handleLogout}
94
- >
95
- <LogOut className="size-4" />
96
- Log out
97
- </Button>
98
- </div>
99
- </header>
100
-
101
- <nav className="flex flex-wrap gap-2">
102
- <Button asChild variant="default">
103
- <Link href={appRoutes.appHome}>
104
- <LayoutDashboard className="size-4" />
105
- Dashboard
106
- </Link>
107
- </Button>
108
- <Button asChild variant="outline">
109
- <Link href={appRoutes.demo}>
110
- <PlaySquare className="size-4" />
111
- Demo
112
- </Link>
113
- </Button>
114
- </nav>
7
+ const session = useAuthenticatedTenantCustomerSession();
115
8
 
116
- <TenantDashboard appName={appName} session={session} />
117
- </div>
118
- </main>
119
- );
9
+ return <TenantDashboard appName={appName} session={session} />;
120
10
  }
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, it } from "vitest";
2
2
 
3
- import { createIdempotencyKey } from "@/mw/client";
3
+ import { createIdempotencyKey, mwAppId } from "@/mw/client";
4
4
  import { createTemplateMockMinuteWorkClient } from "@/mw/mock";
5
5
 
6
6
  describe("MinuteWork SDK mock substrate", () => {
@@ -17,5 +17,6 @@ describe("MinuteWork SDK mock substrate", () => {
17
17
 
18
18
  expect(queryResult.count).toBe(1);
19
19
  expect(actionResult.created).toBe(true);
20
+ expect(client.appId).toBe(mwAppId);
20
21
  });
21
22
  });
@@ -4,9 +4,11 @@
4
4
 
5
5
  import { createMockMinuteWorkClient } from "@minutework/web-auth/mock";
6
6
 
7
+ import { mwAppId } from "@/mw/client";
8
+
7
9
  export function createTemplateMockMinuteWorkClient() {
8
10
  return createMockMinuteWorkClient({
9
- appId: "tenant.app",
11
+ appId: mwAppId,
10
12
  verified: true,
11
13
  queryHandlers: {
12
14
  "demo.list": () => ({
@@ -1,4 +1,4 @@
1
- import { existsSync } from "node:fs";
1
+ import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
2
2
  import path from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
4
 
@@ -22,6 +22,38 @@ const requiredPaths = [
22
22
  "src/mw/provider.tsx",
23
23
  "src/mw/mock.ts",
24
24
  ];
25
+ const appRoutesRoot = path.join(templateRoot, "src", "app", "app");
26
+ const appLayoutPath = path.join(appRoutesRoot, "layout.tsx");
27
+ const appLayoutSource = readFileSync(appLayoutPath, "utf8");
28
+ const appRoutePagePaths = collectNamedFiles(appRoutesRoot, new Set(["page.tsx"]));
29
+ const appRouteHandlerPaths = collectNamedFiles(appRoutesRoot, new Set(["route.ts", "route.tsx"]));
30
+ const guardedSurfaceSourcePaths = [
31
+ ...collectSourceFiles(appRoutesRoot),
32
+ ...collectSourceFiles(path.join(templateRoot, "src", "features")),
33
+ ];
34
+ const allowedGuardPatternFiles = new Map([
35
+ [
36
+ "src/app/app/layout.tsx",
37
+ new Set(["AuthenticatedAppLayoutShell"]),
38
+ ],
39
+ [
40
+ "src/features/auth/components/login-screen.tsx",
41
+ new Set(["useMinuteWorkAuth"]),
42
+ ],
43
+ [
44
+ "src/features/shell/components/authenticated-app-layout-shell.tsx",
45
+ new Set([
46
+ "AuthenticatedAppLayoutShell",
47
+ "useMinuteWorkAuth",
48
+ "useMinuteWorkSession",
49
+ ]),
50
+ ],
51
+ ]);
52
+ const forbiddenGuardPatterns = [
53
+ "useMinuteWorkSession",
54
+ "useMinuteWorkAuth",
55
+ "AuthenticatedAppLayoutShell",
56
+ ];
25
57
 
26
58
  const missingPaths = requiredPaths.filter(
27
59
  (relativePath) => !existsSync(path.join(templateRoot, relativePath)),
@@ -35,4 +67,91 @@ if (missingPaths.length > 0) {
35
67
  );
36
68
  }
37
69
 
70
+ if (!appLayoutSource.includes("AuthenticatedAppLayoutShell")) {
71
+ throw new Error("src/app/app/layout.tsx must wrap all /app routes in AuthenticatedAppLayoutShell.");
72
+ }
73
+
74
+ if (!appLayoutSource.includes("{children}")) {
75
+ throw new Error("src/app/app/layout.tsx must pass children through the authenticated layout guard.");
76
+ }
77
+
78
+ const appRouteRelativePaths = appRoutePagePaths.map((absolutePath) =>
79
+ path.relative(templateRoot, absolutePath),
80
+ );
81
+
82
+ if (!appRouteRelativePaths.includes(path.join("src", "app", "app", "demo", "page.tsx"))) {
83
+ throw new Error("Route contract must include /app/demo so the guarded layout cannot be bypassed.");
84
+ }
85
+
86
+ if (appRouteHandlerPaths.length > 0) {
87
+ throw new Error(
88
+ `Route handlers under /app bypass the authenticated layout guard.\n${appRouteHandlerPaths
89
+ .map((absolutePath) => `- ${path.relative(templateRoot, absolutePath)}`)
90
+ .join("\n")}`,
91
+ );
92
+ }
93
+
94
+ for (const sourcePath of guardedSurfaceSourcePaths) {
95
+ const source = readFileSync(sourcePath, "utf8");
96
+ const relativePath = normalizePath(path.relative(templateRoot, sourcePath));
97
+ const allowedPatterns = allowedGuardPatternFiles.get(relativePath) ?? new Set();
98
+ const matchedPattern = forbiddenGuardPatterns.find(
99
+ (pattern) => source.includes(pattern) && !allowedPatterns.has(pattern),
100
+ );
101
+
102
+ if (matchedPattern) {
103
+ throw new Error(
104
+ `${relativePath} must not own guarded-surface auth wiring (${matchedPattern}); keep raw SDK auth/session hooks in src/features/shell/components/authenticated-app-layout-shell.tsx or the public login screen.`,
105
+ );
106
+ }
107
+ }
108
+
38
109
  console.log("combined route contract is valid");
110
+
111
+ function collectNamedFiles(directory, names) {
112
+ const entries = readdirSync(directory, { withFileTypes: true });
113
+ const files = [];
114
+
115
+ for (const entry of entries) {
116
+ const absolutePath = path.join(directory, entry.name);
117
+ if (entry.isDirectory()) {
118
+ files.push(...collectNamedFiles(absolutePath, names));
119
+ continue;
120
+ }
121
+ if (!entry.isFile() || !names.has(entry.name)) {
122
+ continue;
123
+ }
124
+ if (!statSync(absolutePath).isFile()) {
125
+ continue;
126
+ }
127
+ files.push(absolutePath);
128
+ }
129
+
130
+ return files;
131
+ }
132
+
133
+ function collectSourceFiles(directory) {
134
+ const entries = readdirSync(directory, { withFileTypes: true });
135
+ const files = [];
136
+
137
+ for (const entry of entries) {
138
+ const absolutePath = path.join(directory, entry.name);
139
+ if (entry.isDirectory()) {
140
+ files.push(...collectSourceFiles(absolutePath));
141
+ continue;
142
+ }
143
+ if (!entry.isFile() || !/\.(tsx|ts)$/.test(entry.name)) {
144
+ continue;
145
+ }
146
+ if (!statSync(absolutePath).isFile()) {
147
+ continue;
148
+ }
149
+ files.push(absolutePath);
150
+ }
151
+
152
+ return files;
153
+ }
154
+
155
+ function normalizePath(value) {
156
+ return value.split(path.sep).join("/");
157
+ }
@@ -1,5 +1,4 @@
1
1
  import { spawn } from "node:child_process";
2
- import { createServer } from "node:http";
3
2
 
4
3
  const [command, ...args] = process.argv.slice(2);
5
4
  const storybookHeapMb = process.env.MW_STORYBOOK_NODE_HEAP_MB ?? "768";
@@ -9,123 +8,38 @@ if (!command) {
9
8
  process.exit(1);
10
9
  }
11
10
 
12
- const emptySnapshot = {
13
- site: {
14
- siteName: "MinuteWork Combined Starter",
15
- siteDescription: "Validation fixture snapshot for the combined starter.",
16
- organizationName: "MinuteWork",
17
- footerBlurb: "Validation fixture content.",
18
- primaryCta: {
19
- label: "Sign In",
20
- href: "/login",
21
- },
22
- secondaryCta: {
23
- label: "Docs",
24
- href: "/docs",
25
- },
26
- primaryNavigation: [
27
- { label: "Home", href: "/" },
28
- { label: "Pricing", href: "/pricing" },
29
- { label: "Docs", href: "/docs" },
30
- { label: "Blog", href: "/blog" },
31
- ],
32
- collections: {
33
- docs: {
34
- eyebrow: "Docs",
35
- title: "Documentation",
36
- description: "Validation fixture docs collection.",
37
- },
38
- blog: {
39
- eyebrow: "Blog",
40
- title: "Updates",
41
- description: "Validation fixture blog collection.",
42
- },
43
- },
44
- },
45
- marketingPages: [],
46
- docs: [],
47
- blog: [],
11
+ const childEnv = {
12
+ ...process.env,
13
+ NEXT_PUBLIC_MW_APP_ID: process.env.NEXT_PUBLIC_MW_APP_ID ?? "tenant.app",
14
+ MW_TEMPLATE_APP_NAME: process.env.MW_TEMPLATE_APP_NAME ?? "Tenant App",
15
+ MW_PUBLIC_BASE_URL: process.env.MW_PUBLIC_BASE_URL ?? "https://public.example.com",
48
16
  };
49
17
 
50
- const server = createServer((request, response) => {
51
- const requestUrl = new URL(request.url ?? "/", "http://127.0.0.1");
52
- if (
53
- request.method !== "GET" ||
54
- requestUrl.pathname !== "/api/v1/developer/public-site/snapshots/main-site/"
55
- ) {
56
- response.writeHead(404, { "content-type": "application/json" });
57
- response.end(JSON.stringify({ detail: "Not found" }));
58
- return;
59
- }
60
-
61
- const environment = requestUrl.searchParams.get("environment") ?? "preview";
62
- const sourceBoundary = environment === "live" ? "runtime_live" : "runtime_preview";
18
+ if (
19
+ command === "storybook" &&
20
+ !/\bmax-old-space-size=/.test(childEnv.NODE_OPTIONS ?? "")
21
+ ) {
22
+ childEnv.NODE_OPTIONS = [childEnv.NODE_OPTIONS, `--max-old-space-size=${storybookHeapMb}`]
23
+ .filter(Boolean)
24
+ .join(" ");
25
+ }
63
26
 
64
- response.writeHead(200, { "content-type": "application/json" });
65
- response.end(
66
- JSON.stringify({
67
- environment,
68
- source_boundary: sourceBoundary,
69
- snapshot: emptySnapshot,
70
- }),
71
- );
27
+ const child = spawn(command, args, {
28
+ env: childEnv,
29
+ stdio: "inherit",
72
30
  });
73
31
 
74
- try {
75
- const baseUrl = await new Promise((resolve, reject) => {
76
- server.once("error", reject);
77
- server.listen(0, "127.0.0.1", () => {
78
- const address = server.address();
79
- if (!address || typeof address === "string") {
80
- reject(new Error("Unable to resolve validation fixture server address."));
81
- return;
82
- }
83
- resolve(`http://127.0.0.1:${address.port}`);
84
- });
85
- });
86
-
87
- const exitCode = await new Promise((resolve, reject) => {
88
- const childEnv = {
89
- ...process.env,
90
- MW_CONTENT_API_TOKEN: "validate-content-token",
91
- MW_PLATFORM_BASE_URL: baseUrl,
92
- MW_PUBLIC_CONTENT_SOURCE: "minutework_cms",
93
- MW_PUBLIC_BASE_URL: "https://public.example.com",
94
- MW_PUBLIC_SITE_ENV: "preview",
95
- MW_PUBLIC_SITE_PROPERTY_KEY: "main-site",
96
- };
97
- if (
98
- command === "storybook" &&
99
- !/\bmax-old-space-size=/.test(childEnv.NODE_OPTIONS ?? "")
100
- ) {
101
- childEnv.NODE_OPTIONS = [childEnv.NODE_OPTIONS, `--max-old-space-size=${storybookHeapMb}`]
102
- .filter(Boolean)
103
- .join(" ");
104
- }
105
- const child = spawn(command, args, {
106
- env: childEnv,
107
- stdio: "inherit",
108
- });
32
+ child.once("error", (error) => {
33
+ console.error(error instanceof Error ? error.message : String(error));
34
+ process.exitCode = 1;
35
+ });
109
36
 
110
- child.once("error", reject);
111
- child.once("exit", (code, signal) => {
112
- if (signal) {
113
- reject(new Error(`Validation fixture command exited via signal ${signal}.`));
114
- return;
115
- }
116
- resolve(code ?? 1);
117
- });
118
- });
37
+ child.once("exit", (code, signal) => {
38
+ if (signal) {
39
+ console.error(`Validation fixture command exited via signal ${signal}.`);
40
+ process.exitCode = 1;
41
+ return;
42
+ }
119
43
 
120
- process.exitCode = exitCode;
121
- } finally {
122
- await new Promise((resolve, reject) => {
123
- server.close((error) => {
124
- if (error) {
125
- reject(error);
126
- return;
127
- }
128
- resolve(undefined);
129
- });
130
- });
131
- }
44
+ process.exitCode = code ?? 1;
45
+ });
@@ -11,13 +11,9 @@ export default defineConfig({
11
11
  },
12
12
  test: {
13
13
  env: {
14
- MW_PLATFORM_BASE_URL: "http://127.0.0.1:8000",
15
- MW_PUBLIC_CONTENT_SOURCE: "minutework_cms",
16
- MW_CONTENT_API_TOKEN: "test-content-token",
14
+ NEXT_PUBLIC_MW_APP_ID: "tenant.app",
15
+ MW_TEMPLATE_APP_NAME: "Tenant App",
17
16
  MW_PUBLIC_BASE_URL: "http://127.0.0.1:3000",
18
- MW_PUBLIC_SITE_PROPERTY_KEY: "main-site",
19
- MW_PUBLIC_SITE_ENV: "preview",
20
- MW_STATIC_PUBLIC_CONTENT_PATH: "content/public-site.json",
21
17
  },
22
18
  environment: "node",
23
19
  globals: true,
@@ -1,4 +1,4 @@
1
- import type { CompileGraph, RuntimeAppReleaseMetadata, SeedDataManifestDocument } from "@minutework/schema-compiler";
1
+ import type { CompileGraph, PlatformChannelManifestDocument, RuntimeAppReleaseMetadata, SeedDataManifestDocument } from "@minutework/schema-compiler";
2
2
  export declare const MINUTEWORK_RUNTIME_APP_PACKAGE_VERSION = "MinuteWorkRuntimeAppPackageV1";
3
3
  export type RuntimeAppSourceBundleFile = {
4
4
  contentBase64: string;
@@ -14,6 +14,7 @@ export type RuntimeAppPackageArtifact = {
14
14
  sha256: string;
15
15
  };
16
16
  release: RuntimeAppReleaseMetadata;
17
+ platformChannelManifest: PlatformChannelManifestDocument | null;
17
18
  seedDataManifest: SeedDataManifestDocument | null;
18
19
  sourceBundle: {
19
20
  files: RuntimeAppSourceBundleFile[];
@@ -16,6 +16,7 @@ export async function buildRuntimeAppPackage(options) {
16
16
  sidecarRoot,
17
17
  });
18
18
  const seedDataManifest = options.compileGraph.documents.seedDataManifests[0] ?? null;
19
+ const platformChannelManifest = options.compileGraph.documents.platformChannelManifests[0] ?? null;
19
20
  const artifactSetDigest = sha256Hex(JSON.stringify({
20
21
  compileGraph: options.compileGraph.documents,
21
22
  dependencyExport: {
@@ -24,7 +25,10 @@ export async function buildRuntimeAppPackage(options) {
24
25
  },
25
26
  release: options.releaseMetadata,
26
27
  sourceBundle: {
27
- files: sourceBundle.files.map((file) => ({ path: file.path, sha256: file.sha256 })),
28
+ files: sourceBundle.files.map((file) => ({
29
+ path: file.path,
30
+ sha256: file.sha256,
31
+ })),
28
32
  sha256: sourceBundle.sha256,
29
33
  },
30
34
  template,
@@ -35,6 +39,7 @@ export async function buildRuntimeAppPackage(options) {
35
39
  compileGraph: options.compileGraph,
36
40
  dependencyExport,
37
41
  release: options.releaseMetadata,
42
+ platformChannelManifest,
38
43
  seedDataManifest,
39
44
  sourceBundle,
40
45
  template,
@@ -43,13 +48,16 @@ export async function buildRuntimeAppPackage(options) {
43
48
  }
44
49
  export function buildRuntimePackagePayload(packageArtifact) {
45
50
  const payload = JSON.parse(JSON.stringify(packageArtifact));
46
- // Drop the camelCase artifact-surface field. The runtime install pipe
47
- // consumes the snake_case `seed_data_manifest` key (see
48
- // apps/mwv3-runtime-dj/apps/runtime_app_host/deployment_services.py:416).
51
+ // Drop camelCase artifact-surface fields. The runtime install pipe
52
+ // consumes snake_case manifest keys.
49
53
  delete payload.seedDataManifest;
54
+ delete payload.platformChannelManifest;
50
55
  if (packageArtifact.seedDataManifest !== null) {
51
56
  payload.seed_data_manifest = packageArtifact.seedDataManifest;
52
57
  }
58
+ if (packageArtifact.platformChannelManifest !== null) {
59
+ payload.platform_channel_manifest = packageArtifact.platformChannelManifest;
60
+ }
53
61
  return payload;
54
62
  }
55
63
  async function buildSourceBundle(root) {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-package.js","sourceRoot":"","sources":["../src/runtime-package.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-package.js","sourceRoot":"","sources":["../src/runtime-package.ts"],"names":[],"mappings":"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"}
@@ -11,12 +11,9 @@ export async function bootstrapVmLocalWorkspaceEnv(options) {
11
11
  }
12
12
  if (options.starters.tenantApp) {
13
13
  await writeManagedEnvBlock(path.join(options.workspaceRoot, "tenant-app", ".env.local"), "tenant-app", {
14
- MW_PLATFORM_BASE_URL: workspaceWiring.platform_base_url ?? "",
15
- MW_CONTENT_API_TOKEN: workspaceWiring.content_token_plaintext ?? "",
14
+ NEXT_PUBLIC_MW_APP_ID: workspaceWiring.app_id ?? "tenant.app",
15
+ MW_TEMPLATE_APP_NAME: workspaceWiring.workspace_name ?? "Tenant App",
16
16
  MW_PUBLIC_BASE_URL: workspaceWiring.public_base_url ?? "",
17
- MW_PUBLIC_SITE_PROPERTY_KEY: workspaceWiring.public_site_property_key ?? "",
18
- MW_PUBLIC_SITE_ENV: workspaceWiring.public_site_env ?? "preview",
19
- MW_ENABLE_RUNTIME_COMMAND_EXAMPLE: "false",
20
17
  });
21
18
  }
22
19
  if (options.starters.sidecar) {
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-bootstrap.js","sourceRoot":"","sources":["../src/workspace-bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-bootstrap.js","sourceRoot":"","sources":["../src/workspace-bootstrap.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.34",
3
+ "version": "0.1.36",
4
4
  "description": "MinuteWork CLI for workspace scaffolding, local preview workflows, and hosted preview deploys.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -401,6 +401,33 @@ export declare const SchemaStatusSchema: z.ZodObject<{
401
401
  mapping_id: z.ZodString;
402
402
  version: z.ZodLiteral<"OntologyMappingManifestV1">;
403
403
  }, z.core.$strict>>;
404
+ platformChannelManifests: z.ZodArray<z.ZodObject<{
405
+ channels: z.ZodArray<z.ZodObject<{
406
+ category: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
407
+ label: z.ZodOptional<z.ZodString>;
408
+ ordering: z.ZodOptional<z.ZodNumber>;
409
+ slug: z.ZodString;
410
+ }, z.core.$strict>]>;
411
+ category_label: z.ZodOptional<z.ZodString>;
412
+ category_ordering: z.ZodOptional<z.ZodNumber>;
413
+ customer_visibility: z.ZodEnum<{
414
+ hidden: "hidden";
415
+ visible: "visible";
416
+ }>;
417
+ label: z.ZodString;
418
+ landing_agent_ref: z.ZodOptional<z.ZodString>;
419
+ landing_thread_kind: z.ZodOptional<z.ZodEnum<{
420
+ "": "";
421
+ channel: "channel";
422
+ private: "private";
423
+ guest_shared: "guest_shared";
424
+ }>>;
425
+ landing_title: z.ZodOptional<z.ZodString>;
426
+ ordering: z.ZodNumber;
427
+ slug: z.ZodString;
428
+ }, z.core.$strict>>;
429
+ version: z.ZodLiteral<"1">;
430
+ }, z.core.$strict>>;
404
431
  projectionContracts: z.ZodArray<z.ZodObject<{
405
432
  app_id: z.ZodString;
406
433
  contract_id: z.ZodString;