minutework 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/EXTERNAL_ALPHA.md +74 -0
  2. package/README.md +57 -0
  3. package/assets/claude-local/CLAUDE.md.template +45 -0
  4. package/assets/claude-local/bundle.json +22 -0
  5. package/assets/claude-local/skills/README.md +6 -0
  6. package/assets/claude-local/skills/app-pack-authoring.md +8 -0
  7. package/assets/claude-local/skills/event-bus.md +8 -0
  8. package/assets/claude-local/skills/ontology-mapping.md +8 -0
  9. package/assets/claude-local/skills/openclaw-skill-importer.md +7 -0
  10. package/assets/claude-local/skills/schema-engine.md +8 -0
  11. package/assets/claude-local/skills/secrets-runtime-bridge.md +9 -0
  12. package/assets/claude-local/skills/sidecar-generation.md +9 -0
  13. package/assets/templates/fastapi-sidecar/.env.example +8 -0
  14. package/assets/templates/fastapi-sidecar/README.md +77 -0
  15. package/assets/templates/fastapi-sidecar/poetry.lock +757 -0
  16. package/assets/templates/fastapi-sidecar/pyproject.toml +42 -0
  17. package/assets/templates/fastapi-sidecar/src/fastapi_sidecar/__init__.py +3 -0
  18. package/assets/templates/fastapi-sidecar/src/fastapi_sidecar/auth.py +70 -0
  19. package/assets/templates/fastapi-sidecar/src/fastapi_sidecar/bridge/__init__.py +3 -0
  20. package/assets/templates/fastapi-sidecar/src/fastapi_sidecar/bridge/client.py +71 -0
  21. package/assets/templates/fastapi-sidecar/src/fastapi_sidecar/logging_utils.py +25 -0
  22. package/assets/templates/fastapi-sidecar/src/fastapi_sidecar/main.py +85 -0
  23. package/assets/templates/fastapi-sidecar/src/fastapi_sidecar/receipts.py +24 -0
  24. package/assets/templates/fastapi-sidecar/src/fastapi_sidecar/settings.py +41 -0
  25. package/assets/templates/fastapi-sidecar/src/fastapi_sidecar/template_validation.py +26 -0
  26. package/assets/templates/fastapi-sidecar/src/fastapi_sidecar/worker.py +33 -0
  27. package/assets/templates/fastapi-sidecar/template.json +43 -0
  28. package/assets/templates/fastapi-sidecar/template.schema.json +160 -0
  29. package/assets/templates/fastapi-sidecar/tests/conftest.py +36 -0
  30. package/assets/templates/fastapi-sidecar/tests/test_app.py +39 -0
  31. package/assets/templates/fastapi-sidecar/tests/test_auth.py +32 -0
  32. package/assets/templates/fastapi-sidecar/tests/test_bridge_client.py +31 -0
  33. package/assets/templates/fastapi-sidecar/tests/test_materialization.py +55 -0
  34. package/assets/templates/fastapi-sidecar/tests/test_template_contract.py +49 -0
  35. package/assets/templates/fastapi-sidecar/tests/test_worker.py +7 -0
  36. package/assets/templates/fastapi-sidecar/tools/template/validate_template.py +20 -0
  37. package/assets/templates/next-tenant-app/.env.example +8 -0
  38. package/assets/templates/next-tenant-app/.storybook/main.ts +19 -0
  39. package/assets/templates/next-tenant-app/.storybook/preview.tsx +38 -0
  40. package/assets/templates/next-tenant-app/README.md +115 -0
  41. package/assets/templates/next-tenant-app/components.json +21 -0
  42. package/assets/templates/next-tenant-app/eslint.config.mjs +41 -0
  43. package/assets/templates/next-tenant-app/next-env.d.ts +6 -0
  44. package/assets/templates/next-tenant-app/next.config.ts +8 -0
  45. package/assets/templates/next-tenant-app/package-lock.json +9682 -0
  46. package/assets/templates/next-tenant-app/package.json +59 -0
  47. package/assets/templates/next-tenant-app/pnpm-lock.yaml +6062 -0
  48. package/assets/templates/next-tenant-app/postcss.config.mjs +8 -0
  49. package/assets/templates/next-tenant-app/src/app/api/auth/context/route.test.ts +90 -0
  50. package/assets/templates/next-tenant-app/src/app/api/auth/context/route.ts +78 -0
  51. package/assets/templates/next-tenant-app/src/app/api/auth/login/route.ts +31 -0
  52. package/assets/templates/next-tenant-app/src/app/api/auth/logout/route.ts +16 -0
  53. package/assets/templates/next-tenant-app/src/app/api/auth/password-change/route.test.ts +79 -0
  54. package/assets/templates/next-tenant-app/src/app/api/auth/password-change/route.ts +40 -0
  55. package/assets/templates/next-tenant-app/src/app/api/auth/password-status/route.test.ts +42 -0
  56. package/assets/templates/next-tenant-app/src/app/api/auth/password-status/route.ts +29 -0
  57. package/assets/templates/next-tenant-app/src/app/api/auth/session/route.ts +26 -0
  58. package/assets/templates/next-tenant-app/src/app/api/gateway/commands/[runId]/route.test.ts +40 -0
  59. package/assets/templates/next-tenant-app/src/app/api/gateway/commands/[runId]/route.ts +47 -0
  60. package/assets/templates/next-tenant-app/src/app/api/gateway/commands/route.test.ts +43 -0
  61. package/assets/templates/next-tenant-app/src/app/api/gateway/commands/route.ts +45 -0
  62. package/assets/templates/next-tenant-app/src/app/app/examples/runtime-commands/page.test.ts +83 -0
  63. package/assets/templates/next-tenant-app/src/app/app/examples/runtime-commands/page.tsx +30 -0
  64. package/assets/templates/next-tenant-app/src/app/app/layout.tsx +20 -0
  65. package/assets/templates/next-tenant-app/src/app/app/page.test.ts +62 -0
  66. package/assets/templates/next-tenant-app/src/app/app/page.tsx +24 -0
  67. package/assets/templates/next-tenant-app/src/app/blog/[slug]/page.test.ts +70 -0
  68. package/assets/templates/next-tenant-app/src/app/blog/[slug]/page.tsx +57 -0
  69. package/assets/templates/next-tenant-app/src/app/blog/page.test.ts +42 -0
  70. package/assets/templates/next-tenant-app/src/app/blog/page.tsx +37 -0
  71. package/assets/templates/next-tenant-app/src/app/docs/[...slug]/page.test.ts +70 -0
  72. package/assets/templates/next-tenant-app/src/app/docs/[...slug]/page.tsx +55 -0
  73. package/assets/templates/next-tenant-app/src/app/docs/page.test.ts +42 -0
  74. package/assets/templates/next-tenant-app/src/app/docs/page.tsx +37 -0
  75. package/assets/templates/next-tenant-app/src/app/globals.css +70 -0
  76. package/assets/templates/next-tenant-app/src/app/layout.tsx +69 -0
  77. package/assets/templates/next-tenant-app/src/app/login/page.test.ts +55 -0
  78. package/assets/templates/next-tenant-app/src/app/login/page.tsx +33 -0
  79. package/assets/templates/next-tenant-app/src/app/page.test.ts +56 -0
  80. package/assets/templates/next-tenant-app/src/app/page.tsx +35 -0
  81. package/assets/templates/next-tenant-app/src/app/pricing/page.test.ts +55 -0
  82. package/assets/templates/next-tenant-app/src/app/pricing/page.tsx +35 -0
  83. package/assets/templates/next-tenant-app/src/app/providers.tsx +25 -0
  84. package/assets/templates/next-tenant-app/src/app/robots.test.ts +20 -0
  85. package/assets/templates/next-tenant-app/src/app/robots.ts +18 -0
  86. package/assets/templates/next-tenant-app/src/app/sitemap.test.ts +49 -0
  87. package/assets/templates/next-tenant-app/src/app/sitemap.ts +54 -0
  88. package/assets/templates/next-tenant-app/src/components/ui/button.tsx +59 -0
  89. package/assets/templates/next-tenant-app/src/components/ui/input.tsx +21 -0
  90. package/assets/templates/next-tenant-app/src/design-system/docs/governance.mdx +26 -0
  91. package/assets/templates/next-tenant-app/src/design-system/patterns/panel-frame.stories.tsx +48 -0
  92. package/assets/templates/next-tenant-app/src/design-system/patterns/panel-frame.tsx +26 -0
  93. package/assets/templates/next-tenant-app/src/design-system/patterns/status-badge.stories.tsx +26 -0
  94. package/assets/templates/next-tenant-app/src/design-system/patterns/status-badge.tsx +35 -0
  95. package/assets/templates/next-tenant-app/src/design-system/patterns/theme-mode-toggle.stories.tsx +21 -0
  96. package/assets/templates/next-tenant-app/src/design-system/patterns/theme-mode-toggle.tsx +75 -0
  97. package/assets/templates/next-tenant-app/src/design-system/primitives/button.stories.tsx +37 -0
  98. package/assets/templates/next-tenant-app/src/design-system/primitives/button.ts +1 -0
  99. package/assets/templates/next-tenant-app/src/design-system/primitives/input.stories.tsx +26 -0
  100. package/assets/templates/next-tenant-app/src/design-system/primitives/input.ts +1 -0
  101. package/assets/templates/next-tenant-app/src/design-system/recipes/chrome.ts +28 -0
  102. package/assets/templates/next-tenant-app/src/design-system/tokens/foundation.css +31 -0
  103. package/assets/templates/next-tenant-app/src/design-system/tokens/index.css +3 -0
  104. package/assets/templates/next-tenant-app/src/design-system/tokens/manifest.json +85 -0
  105. package/assets/templates/next-tenant-app/src/design-system/tokens/manifest.ts +87 -0
  106. package/assets/templates/next-tenant-app/src/design-system/tokens/semantic.css +105 -0
  107. package/assets/templates/next-tenant-app/src/design-system/tokens/theme.css +59 -0
  108. package/assets/templates/next-tenant-app/src/design-system/tokens/tokens.stories.tsx +71 -0
  109. package/assets/templates/next-tenant-app/src/features/auth/components/login-screen.tsx +198 -0
  110. package/assets/templates/next-tenant-app/src/features/dashboard/components/tenant-dashboard.tsx +153 -0
  111. package/assets/templates/next-tenant-app/src/features/examples/runtime-command-demo/components/runtime-command-demo.tsx +342 -0
  112. package/assets/templates/next-tenant-app/src/features/public-shell/components/content-article.tsx +66 -0
  113. package/assets/templates/next-tenant-app/src/features/public-shell/components/content-collection.tsx +108 -0
  114. package/assets/templates/next-tenant-app/src/features/public-shell/components/marketing-page-canvas.tsx +111 -0
  115. package/assets/templates/next-tenant-app/src/features/public-shell/components/public-site-shell.tsx +111 -0
  116. package/assets/templates/next-tenant-app/src/features/shell/components/private-app-shell.tsx +624 -0
  117. package/assets/templates/next-tenant-app/src/lib/app-routes.test.ts +20 -0
  118. package/assets/templates/next-tenant-app/src/lib/app-routes.ts +59 -0
  119. package/assets/templates/next-tenant-app/src/lib/content/__fixtures__/public-site-snapshot.ts +189 -0
  120. package/assets/templates/next-tenant-app/src/lib/content/adapter.server.test.ts +318 -0
  121. package/assets/templates/next-tenant-app/src/lib/content/adapter.server.ts +232 -0
  122. package/assets/templates/next-tenant-app/src/lib/content/contracts.ts +339 -0
  123. package/assets/templates/next-tenant-app/src/lib/content/custom-adapter.ts +5 -0
  124. package/assets/templates/next-tenant-app/src/lib/content/empty-state.ts +96 -0
  125. package/assets/templates/next-tenant-app/src/lib/platform/auth.server.test.ts +75 -0
  126. package/assets/templates/next-tenant-app/src/lib/platform/auth.server.ts +25 -0
  127. package/assets/templates/next-tenant-app/src/lib/platform/client.server.test.ts +170 -0
  128. package/assets/templates/next-tenant-app/src/lib/platform/client.server.ts +661 -0
  129. package/assets/templates/next-tenant-app/src/lib/platform/contracts.ts +131 -0
  130. package/assets/templates/next-tenant-app/src/lib/platform/endpoints.server.ts +34 -0
  131. package/assets/templates/next-tenant-app/src/lib/platform/env.server.test.ts +102 -0
  132. package/assets/templates/next-tenant-app/src/lib/platform/env.server.ts +87 -0
  133. package/assets/templates/next-tenant-app/src/lib/platform/route-response.ts +33 -0
  134. package/assets/templates/next-tenant-app/src/lib/platform/session.server.ts +108 -0
  135. package/assets/templates/next-tenant-app/src/lib/public-site.test.ts +20 -0
  136. package/assets/templates/next-tenant-app/src/lib/public-site.ts +49 -0
  137. package/assets/templates/next-tenant-app/src/lib/theme-config.ts +10 -0
  138. package/assets/templates/next-tenant-app/src/lib/theme.tsx +159 -0
  139. package/assets/templates/next-tenant-app/src/lib/utils.ts +6 -0
  140. package/assets/templates/next-tenant-app/template.json +27 -0
  141. package/assets/templates/next-tenant-app/template.schema.json +160 -0
  142. package/assets/templates/next-tenant-app/test/server-only-stub.ts +1 -0
  143. package/assets/templates/next-tenant-app/tools/design-system/build-token-manifest.mjs +3 -0
  144. package/assets/templates/next-tenant-app/tools/design-system/check-imports.mjs +9 -0
  145. package/assets/templates/next-tenant-app/tools/design-system/check-stories.mjs +9 -0
  146. package/assets/templates/next-tenant-app/tools/design-system/check-values.mjs +9 -0
  147. package/assets/templates/next-tenant-app/tools/design-system/checks.mjs +238 -0
  148. package/assets/templates/next-tenant-app/tools/design-system/eslint-plugin-design-system.mjs +184 -0
  149. package/assets/templates/next-tenant-app/tools/design-system/playwright.config.mjs +34 -0
  150. package/assets/templates/next-tenant-app/tools/design-system/run-checks.mjs +22 -0
  151. package/assets/templates/next-tenant-app/tools/design-system/shared.mjs +166 -0
  152. package/assets/templates/next-tenant-app/tools/design-system/visual.spec.ts +41 -0
  153. package/assets/templates/next-tenant-app/tools/template/validate-route-contract.mjs +39 -0
  154. package/assets/templates/next-tenant-app/tools/template/validate-template.mjs +45 -0
  155. package/assets/templates/next-tenant-app/tsconfig.json +42 -0
  156. package/assets/templates/next-tenant-app/vitest.config.ts +25 -0
  157. package/bin/minutework.js +40 -0
  158. package/dist/auth.d.ts +59 -0
  159. package/dist/auth.js +338 -0
  160. package/dist/auth.js.map +1 -0
  161. package/dist/browser.d.ts +1 -0
  162. package/dist/browser.js +26 -0
  163. package/dist/browser.js.map +1 -0
  164. package/dist/cli.d.ts +2 -0
  165. package/dist/cli.js +5 -0
  166. package/dist/cli.js.map +1 -0
  167. package/dist/compile.d.ts +20 -0
  168. package/dist/compile.js +121 -0
  169. package/dist/compile.js.map +1 -0
  170. package/dist/config.d.ts +25 -0
  171. package/dist/config.js +102 -0
  172. package/dist/config.js.map +1 -0
  173. package/dist/deploy-state.d.ts +35 -0
  174. package/dist/deploy-state.js +30 -0
  175. package/dist/deploy-state.js.map +1 -0
  176. package/dist/deploy.d.ts +22 -0
  177. package/dist/deploy.js +308 -0
  178. package/dist/deploy.js.map +1 -0
  179. package/dist/developer-client.d.ts +88 -0
  180. package/dist/developer-client.js +78 -0
  181. package/dist/developer-client.js.map +1 -0
  182. package/dist/index.d.ts +27 -0
  183. package/dist/index.js +290 -0
  184. package/dist/index.js.map +1 -0
  185. package/dist/init.d.ts +22 -0
  186. package/dist/init.js +421 -0
  187. package/dist/init.js.map +1 -0
  188. package/dist/launcher.d.ts +1 -0
  189. package/dist/launcher.js +50 -0
  190. package/dist/launcher.js.map +1 -0
  191. package/dist/paths.d.ts +12 -0
  192. package/dist/paths.js +33 -0
  193. package/dist/paths.js.map +1 -0
  194. package/dist/sandbox.d.ts +30 -0
  195. package/dist/sandbox.js +852 -0
  196. package/dist/sandbox.js.map +1 -0
  197. package/dist/state.d.ts +46 -0
  198. package/dist/state.js +82 -0
  199. package/dist/state.js.map +1 -0
  200. package/dist/tokens.d.ts +14 -0
  201. package/dist/tokens.js +293 -0
  202. package/dist/tokens.js.map +1 -0
  203. package/package.json +43 -0
package/dist/config.js ADDED
@@ -0,0 +1,102 @@
1
+ import path from "node:path";
2
+ import { normalizePlatformBaseUrl } from "@minutework/platform-config";
3
+ import { discoverOptionalCompilerWorkspaceRoot, resolveWorkspaceCliConfig, } from "@minutework/schema-compiler";
4
+ export async function resolveOptionalCliWorkspaceConfig(options) {
5
+ const workspaceRoot = await discoverOptionalCompilerWorkspaceRoot(options.cwd);
6
+ if (!workspaceRoot) {
7
+ return null;
8
+ }
9
+ return {
10
+ ...(await resolveWorkspaceCliConfig({ env: options.env, workspaceRoot })),
11
+ workspaceRoot,
12
+ };
13
+ }
14
+ export function resolveLoginPlatformBaseUrl(options) {
15
+ const explicitPlatformBaseUrl = normalizePlatformBaseUrl(options.flagPlatformBaseUrl);
16
+ if (explicitPlatformBaseUrl) {
17
+ return explicitPlatformBaseUrl;
18
+ }
19
+ if (options.resolvedWorkspaceConfig) {
20
+ return options.resolvedWorkspaceConfig.platformBaseUrl;
21
+ }
22
+ const shellPlatformBaseUrl = normalizePlatformBaseUrl(options.env.MW_CLI_PLATFORM_BASE_URL);
23
+ if (shellPlatformBaseUrl) {
24
+ return shellPlatformBaseUrl;
25
+ }
26
+ throw new Error(buildMissingPlatformBaseUrlMessage());
27
+ }
28
+ export function assertWorkspacePlatformMatchesAuthProfile(options) {
29
+ const resolvedWorkspaceConfig = options.resolvedWorkspaceConfig;
30
+ if (!resolvedWorkspaceConfig) {
31
+ return;
32
+ }
33
+ const configuredPlatformBaseUrl = resolvedWorkspaceConfig.platformBaseUrl;
34
+ const normalizedProfilePlatformBaseUrl = normalizePlatformBaseUrl(options.profilePlatformBaseUrl);
35
+ if (!normalizedProfilePlatformBaseUrl || normalizedProfilePlatformBaseUrl === configuredPlatformBaseUrl) {
36
+ return;
37
+ }
38
+ throw new Error([
39
+ `The active CLI auth profile targets ${normalizedProfilePlatformBaseUrl}, but this workspace resolves to ${configuredPlatformBaseUrl}.`,
40
+ `Resolved from: ${describePlatformSource(resolvedWorkspaceConfig)}`,
41
+ `${buildWorkspaceLoginAction(resolvedWorkspaceConfig)} before \`${options.commandLabel}\`.`,
42
+ ].join(" "));
43
+ }
44
+ export function parseLoginArgs(args) {
45
+ let platformBaseUrl = null;
46
+ for (let index = 0; index < args.length; index += 1) {
47
+ const arg = args[index];
48
+ if (arg === "--help" || arg === "-h") {
49
+ return {
50
+ help: true,
51
+ platformBaseUrl: null,
52
+ };
53
+ }
54
+ if (arg === "--platform") {
55
+ const next = args[index + 1];
56
+ if (!next || next.startsWith("--")) {
57
+ throw new Error('The "--platform" option requires a URL.');
58
+ }
59
+ platformBaseUrl = next;
60
+ index += 1;
61
+ continue;
62
+ }
63
+ if (arg.startsWith("--platform=")) {
64
+ const value = arg.slice("--platform=".length);
65
+ if (!value) {
66
+ throw new Error('The "--platform" option requires a URL.');
67
+ }
68
+ platformBaseUrl = value;
69
+ continue;
70
+ }
71
+ throw new Error(`Unknown login option: ${arg}`);
72
+ }
73
+ return {
74
+ help: false,
75
+ platformBaseUrl,
76
+ };
77
+ }
78
+ function buildMissingPlatformBaseUrlMessage() {
79
+ return [
80
+ "Unable to resolve a MinuteWork platform base URL for CLI authentication.",
81
+ "Automatic platform wiring only applies inside a MinuteWork workspace.",
82
+ "Run `minutework login --platform <url>`, set `MW_CLI_PLATFORM_BASE_URL`, or run the command from inside a MinuteWork workspace.",
83
+ ].join("\n");
84
+ }
85
+ function describePlatformSource(resolvedWorkspaceConfig) {
86
+ switch (resolvedWorkspaceConfig.platformBaseUrlSource) {
87
+ case "shellEnv":
88
+ return "exported shell env MW_CLI_PLATFORM_BASE_URL";
89
+ case "workspaceConfig":
90
+ return path.join(resolvedWorkspaceConfig.workspaceRoot, "minutework.config.ts");
91
+ case "workspaceDefault":
92
+ return "the MinuteWork local platform wiring";
93
+ default:
94
+ return "unknown source";
95
+ }
96
+ }
97
+ function buildWorkspaceLoginAction(resolvedWorkspaceConfig) {
98
+ return resolvedWorkspaceConfig.hasLegacyPlatformOverride
99
+ ? `Run \`minutework login --platform ${resolvedWorkspaceConfig.platformBaseUrl}\` or remove the legacy platform override`
100
+ : "Run `minutework login`";
101
+ }
102
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { PlatformName } from "./paths.js";
2
+ export declare const MINUTEWORK_PREVIEW_DEPLOY_STATE_VERSION = "MinuteWorkPreviewDeployStateV1";
3
+ export type PreviewDeployTerminalReceiptState = {
4
+ deploymentState: "activated" | "failed" | "pending" | "ready" | "rolled_back";
5
+ errorDetail: string;
6
+ previewUrl: string;
7
+ receiptId: string;
8
+ receiptStatus: string;
9
+ rollbackStatus: "not_applicable" | "not_needed" | "previous_preview_preserved";
10
+ updatedAt: string;
11
+ };
12
+ export type PreviewDeployState = {
13
+ currentPreviewUrl: string;
14
+ lastCompiledReleaseDigest: string | null;
15
+ lastRequestedAt: string | null;
16
+ lastRequestedReceiptId: string | null;
17
+ lastRequestedReleaseKey: string | null;
18
+ lastTerminalReceipt: PreviewDeployTerminalReceiptState | null;
19
+ propertyKey: string;
20
+ releaseClass: "ssr_container";
21
+ version: typeof MINUTEWORK_PREVIEW_DEPLOY_STATE_VERSION;
22
+ };
23
+ export declare function loadOptionalPreviewDeployState(options: {
24
+ platform: PlatformName;
25
+ workspaceRoot: string;
26
+ }): Promise<PreviewDeployState | null>;
27
+ export declare function writePreviewDeployState(options: {
28
+ platform: PlatformName;
29
+ state: PreviewDeployState;
30
+ workspaceRoot: string;
31
+ }): Promise<string>;
32
+ export declare function resolvePreviewDeployStatePath(options: {
33
+ platform: PlatformName;
34
+ workspaceRoot: string;
35
+ }): Promise<string>;
@@ -0,0 +1,30 @@
1
+ import { promises as fs } from "node:fs";
2
+ import path from "node:path";
3
+ import { resolveWorkspaceLocalStateDirectory } from "./state.js";
4
+ export const MINUTEWORK_PREVIEW_DEPLOY_STATE_VERSION = "MinuteWorkPreviewDeployStateV1";
5
+ export async function loadOptionalPreviewDeployState(options) {
6
+ const statePath = await resolvePreviewDeployStatePath(options);
7
+ try {
8
+ return JSON.parse(await fs.readFile(statePath, "utf8"));
9
+ }
10
+ catch (error) {
11
+ const errno = error;
12
+ if (errno.code === "ENOENT") {
13
+ return null;
14
+ }
15
+ throw error;
16
+ }
17
+ }
18
+ export async function writePreviewDeployState(options) {
19
+ const statePath = await resolvePreviewDeployStatePath(options);
20
+ await fs.mkdir(path.dirname(statePath), { recursive: true });
21
+ const tempPath = `${statePath}.tmp`;
22
+ await fs.writeFile(tempPath, JSON.stringify(options.state, null, 2) + "\n", "utf8");
23
+ await fs.rename(tempPath, statePath);
24
+ return statePath;
25
+ }
26
+ export async function resolvePreviewDeployStatePath(options) {
27
+ const localStateDirectory = await resolveWorkspaceLocalStateDirectory(options.workspaceRoot, options.platform);
28
+ return path.join(localStateDirectory, "deploy", "preview", "status.json");
29
+ }
30
+ //# sourceMappingURL=deploy-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-state.js","sourceRoot":"","sources":["../src/deploy-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,mCAAmC,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,CAAC,MAAM,uCAAuC,GAAG,gCAAgC,CAAC;AAwBxF,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,OAGpD;IACC,MAAM,SAAS,GAAG,MAAM,6BAA6B,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAuB,CAAC;IAChF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,KAA8B,CAAC;QAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAI7C;IACC,MAAM,SAAS,GAAG,MAAM,6BAA6B,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,GAAG,SAAS,MAAM,CAAC;IACpC,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IACpF,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACrC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,OAGnD;IACC,MAAM,mBAAmB,GAAG,MAAM,mCAAmC,CACnE,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,QAAQ,CACjB,CAAC;IACF,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { type DeveloperClientDependencies } from "./developer-client.js";
2
+ import type { CliIo } from "./index.js";
3
+ import type { CliStatePaths, PlatformName } from "./paths.js";
4
+ export type DeployDependencies = DeveloperClientDependencies & {
5
+ confirmPreviewDeploy?: (context: {
6
+ localReleaseDigest: string;
7
+ propertyKey: string;
8
+ releaseClass: string;
9
+ releaseKey: string;
10
+ remoteReleaseDigest: string | null;
11
+ }) => Promise<boolean>;
12
+ sleep?: (milliseconds: number) => Promise<void>;
13
+ };
14
+ export declare function runDeployCommand(options: {
15
+ args: string[];
16
+ cwd: string;
17
+ dependencies?: DeployDependencies;
18
+ env: NodeJS.ProcessEnv;
19
+ io: CliIo;
20
+ paths: CliStatePaths;
21
+ platform: PlatformName;
22
+ }): Promise<0 | 1>;
package/dist/deploy.js ADDED
@@ -0,0 +1,308 @@
1
+ import { createInterface } from "node:readline/promises";
2
+ import path from "node:path";
3
+ import { analyzeCompilerWorkspace, discoverCompilerWorkspaceRoot, HostedPreviewReleaseMetadataSchema, } from "@minutework/schema-compiler";
4
+ import { writeCompileGraph } from "./compile.js";
5
+ import { MINUTEWORK_PREVIEW_DEPLOY_STATE_VERSION, writePreviewDeployState, } from "./deploy-state.js";
6
+ import { createDeveloperClient, } from "./developer-client.js";
7
+ import { assertWorkspacePlatformMatchesAuthProfile, resolveOptionalCliWorkspaceConfig, } from "./config.js";
8
+ import { loadCurrentAuthProfile, loadWorkspaceBinding, } from "./state.js";
9
+ export async function runDeployCommand(options) {
10
+ const parsed = parseDeployCommandArgs(options.args);
11
+ if (parsed.help) {
12
+ options.io.stdout(renderDeployHelp());
13
+ return 0;
14
+ }
15
+ if (parsed.target === "live") {
16
+ options.io.stderr("`minutework deploy --live` is reserved for follow-on work and is not implemented for the external alpha.");
17
+ return 1;
18
+ }
19
+ const workspaceRoot = await discoverCompilerWorkspaceRoot(path.resolve(options.cwd, parsed.workspacePath ?? "."));
20
+ const resolvedWorkspaceConfig = await resolveOptionalCliWorkspaceConfig({
21
+ cwd: workspaceRoot,
22
+ env: options.env,
23
+ });
24
+ const profile = await loadCurrentAuthProfile(options.paths);
25
+ assertWorkspacePlatformMatchesAuthProfile({
26
+ commandLabel: "minutework deploy --preview",
27
+ profilePlatformBaseUrl: profile.platformBaseUrl,
28
+ resolvedWorkspaceConfig,
29
+ });
30
+ const binding = await loadWorkspaceBinding({
31
+ platform: options.platform,
32
+ workspaceRoot,
33
+ });
34
+ if (binding.authProfileId !== profile.id) {
35
+ throw new Error("The repo-local binding does not match the active CLI auth profile. Run `minutework link` again.");
36
+ }
37
+ if (binding.releaseClass !== "ssr_container") {
38
+ throw new Error(`Preview deploy for release class "${binding.releaseClass}" is not supported in the external alpha.`);
39
+ }
40
+ const analysis = await analyzeCompilerWorkspace(workspaceRoot);
41
+ if (!analysis.compileGraph) {
42
+ options.io.stderr(JSON.stringify(analysis.validateReport, null, 2));
43
+ return 1;
44
+ }
45
+ await writeCompileGraph(workspaceRoot, analysis.compileGraph);
46
+ const releaseMetadata = analysis.compileGraph.documents.releaseMetadata
47
+ .map((document) => HostedPreviewReleaseMetadataSchema.parse(document))
48
+ .find((document) => document.propertyKey === binding.propertyKey);
49
+ if (!releaseMetadata) {
50
+ throw new Error(`Compile output did not produce preview release metadata for linked property "${binding.propertyKey}".`);
51
+ }
52
+ if (releaseMetadata.releaseClass !== binding.releaseClass) {
53
+ throw new Error(`Linked release class "${binding.releaseClass}" does not match compiled preview release class "${releaseMetadata.releaseClass}".`);
54
+ }
55
+ const client = createDeveloperClient({
56
+ dependencies: options.dependencies,
57
+ profile,
58
+ });
59
+ const remoteStatus = await client.getPreviewDeployStatus(binding.propertyKey);
60
+ await writePreviewDeployState({
61
+ platform: options.platform,
62
+ state: {
63
+ currentPreviewUrl: remoteStatus.preview_url,
64
+ lastCompiledReleaseDigest: releaseMetadata.releaseDigest,
65
+ lastRequestedAt: null,
66
+ lastRequestedReceiptId: null,
67
+ lastRequestedReleaseKey: null,
68
+ lastTerminalReceipt: summarizeRemoteTerminalReceipt(remoteStatus),
69
+ propertyKey: binding.propertyKey,
70
+ releaseClass: binding.releaseClass,
71
+ version: MINUTEWORK_PREVIEW_DEPLOY_STATE_VERSION,
72
+ },
73
+ workspaceRoot,
74
+ });
75
+ renderPreviewDiff(options.io, {
76
+ local: releaseMetadata,
77
+ remote: remoteStatus,
78
+ });
79
+ if (remoteStatus.current_preview_release?.digest === releaseMetadata.releaseDigest) {
80
+ options.io.stdout("Preview deploy already matches the local release digest.");
81
+ if (remoteStatus.preview_url) {
82
+ options.io.stdout(`Preview URL: ${remoteStatus.preview_url}`);
83
+ }
84
+ return 0;
85
+ }
86
+ const confirmed = parsed.yes ||
87
+ (await (options.dependencies?.confirmPreviewDeploy ?? defaultConfirmPreviewDeploy)({
88
+ localReleaseDigest: releaseMetadata.releaseDigest,
89
+ propertyKey: binding.propertyKey,
90
+ releaseClass: binding.releaseClass,
91
+ releaseKey: releaseMetadata.releaseKey,
92
+ remoteReleaseDigest: remoteStatus.current_preview_release?.digest ?? null,
93
+ }));
94
+ if (!confirmed) {
95
+ options.io.stderr("Preview deploy cancelled.");
96
+ return 1;
97
+ }
98
+ const submitResponse = await client.submitPreviewDeploy({
99
+ appId: releaseMetadata.appId,
100
+ displayName: releaseMetadata.displayName,
101
+ propertyKey: releaseMetadata.propertyKey,
102
+ releaseClass: releaseMetadata.releaseClass,
103
+ releaseDigest: releaseMetadata.releaseDigest,
104
+ releaseKey: releaseMetadata.releaseKey,
105
+ runtimeContentRef: releaseMetadata.runtimeContentRef,
106
+ sourceDigest: releaseMetadata.sourceDigest,
107
+ starterId: releaseMetadata.starterId,
108
+ version: releaseMetadata.version,
109
+ workspaceName: releaseMetadata.workspaceName,
110
+ });
111
+ await writePreviewDeployState({
112
+ platform: options.platform,
113
+ state: {
114
+ currentPreviewUrl: submitResponse.preview_url,
115
+ lastCompiledReleaseDigest: releaseMetadata.releaseDigest,
116
+ lastRequestedAt: new Date().toISOString(),
117
+ lastRequestedReceiptId: submitResponse.receipt.id,
118
+ lastRequestedReleaseKey: submitResponse.release.release_key,
119
+ lastTerminalReceipt: null,
120
+ propertyKey: binding.propertyKey,
121
+ releaseClass: binding.releaseClass,
122
+ version: MINUTEWORK_PREVIEW_DEPLOY_STATE_VERSION,
123
+ },
124
+ workspaceRoot,
125
+ });
126
+ const terminalReceipt = await pollPreviewDeployReceipt({
127
+ client,
128
+ initialResponse: submitResponse,
129
+ propertyKey: binding.propertyKey,
130
+ sleep: options.dependencies?.sleep ?? defaultSleep,
131
+ });
132
+ const terminalSummary = summarizeTerminalReceipt(terminalReceipt);
133
+ await writePreviewDeployState({
134
+ platform: options.platform,
135
+ state: {
136
+ currentPreviewUrl: terminalReceipt.preview_url,
137
+ lastCompiledReleaseDigest: releaseMetadata.releaseDigest,
138
+ lastRequestedAt: new Date().toISOString(),
139
+ lastRequestedReceiptId: terminalReceipt.receipt.id,
140
+ lastRequestedReleaseKey: terminalReceipt.release.release_key,
141
+ lastTerminalReceipt: terminalSummary,
142
+ propertyKey: binding.propertyKey,
143
+ releaseClass: binding.releaseClass,
144
+ version: MINUTEWORK_PREVIEW_DEPLOY_STATE_VERSION,
145
+ },
146
+ workspaceRoot,
147
+ });
148
+ renderTerminalReceipt(options.io, terminalReceipt);
149
+ return terminalReceipt.deployment_state === "activated" ? 0 : 1;
150
+ }
151
+ function parseDeployCommandArgs(args) {
152
+ let help = false;
153
+ let target = null;
154
+ let workspacePath;
155
+ let yes = false;
156
+ const setWorkspacePath = (value) => {
157
+ if (workspacePath) {
158
+ throw new Error("The deploy command accepts at most one workspace path.");
159
+ }
160
+ workspacePath = value;
161
+ };
162
+ for (let index = 0; index < args.length; index += 1) {
163
+ const arg = args[index];
164
+ if (arg === "--help" || arg === "-h") {
165
+ help = true;
166
+ continue;
167
+ }
168
+ if (arg === "--preview") {
169
+ target = "preview";
170
+ continue;
171
+ }
172
+ if (arg === "--live") {
173
+ target = "live";
174
+ continue;
175
+ }
176
+ if (arg === "--yes") {
177
+ yes = true;
178
+ continue;
179
+ }
180
+ if (arg === "--workspace") {
181
+ const next = args[index + 1];
182
+ if (!next || next.startsWith("--")) {
183
+ throw new Error('The "deploy" command requires a path after --workspace.');
184
+ }
185
+ setWorkspacePath(next);
186
+ index += 1;
187
+ continue;
188
+ }
189
+ if (arg.startsWith("--workspace=")) {
190
+ const value = arg.slice("--workspace=".length);
191
+ if (!value) {
192
+ throw new Error('The "deploy" command requires a path after --workspace.');
193
+ }
194
+ setWorkspacePath(value);
195
+ continue;
196
+ }
197
+ if (arg.startsWith("--")) {
198
+ throw new Error(`Unknown deploy option: ${arg}`);
199
+ }
200
+ setWorkspacePath(arg);
201
+ }
202
+ if (!help && target === null) {
203
+ throw new Error("The deploy command requires either `--preview` or `--live`.");
204
+ }
205
+ return { help, target, workspacePath, yes };
206
+ }
207
+ function renderDeployHelp() {
208
+ return `Usage:
209
+ minutework deploy --preview [workspace] [--workspace <path>] [--yes]
210
+ minutework deploy --live
211
+
212
+ External alpha status:
213
+ --preview Available for hosted tenant-app ssr_container workspaces
214
+ --live Reserved follow-on work and intentionally blocked
215
+ `;
216
+ }
217
+ async function defaultConfirmPreviewDeploy() {
218
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
219
+ throw new Error("Preview deploy requires confirmation. Re-run interactively or pass `--yes`.");
220
+ }
221
+ const readline = createInterface({
222
+ input: process.stdin,
223
+ output: process.stdout,
224
+ });
225
+ try {
226
+ const answer = (await readline.question("Proceed with preview deploy? [y/N] ")).trim().toLowerCase();
227
+ return answer === "y" || answer === "yes";
228
+ }
229
+ finally {
230
+ readline.close();
231
+ }
232
+ }
233
+ async function pollPreviewDeployReceipt(options) {
234
+ let current = options.initialResponse;
235
+ if (isTerminalDeployState(current.deployment_state)) {
236
+ return current;
237
+ }
238
+ for (let attempt = 0; attempt < 20; attempt += 1) {
239
+ await options.sleep(1_000);
240
+ current = await options.client.getPreviewDeployReceipt(options.propertyKey, current.receipt.id);
241
+ if (isTerminalDeployState(current.deployment_state)) {
242
+ return current;
243
+ }
244
+ }
245
+ throw new Error("Preview deploy polling timed out before reaching a terminal state.");
246
+ }
247
+ function isTerminalDeployState(value) {
248
+ return value === "activated" || value === "failed" || value === "rolled_back";
249
+ }
250
+ function renderPreviewDiff(io, options) {
251
+ io.stdout(`Preview target: ${options.local.propertyKey} (${options.local.releaseClass})`);
252
+ io.stdout(`Local release: ${options.local.releaseKey} ${shortDigest(options.local.releaseDigest)} ${options.local.runtimeContentRef}`);
253
+ if (options.remote.current_preview_release) {
254
+ io.stdout(`Remote preview: ${options.remote.current_preview_release.release_key} ${shortDigest(options.remote.current_preview_release.digest)}`);
255
+ }
256
+ else {
257
+ io.stdout("Remote preview: none");
258
+ }
259
+ if (options.remote.preview_url) {
260
+ io.stdout(`Current preview URL: ${options.remote.preview_url}`);
261
+ }
262
+ }
263
+ function renderTerminalReceipt(io, response) {
264
+ io.stdout(`Receipt ${response.receipt.id}: ${response.deployment_state} (${response.receipt.receipt_status} via ${response.receipt.provider_name})`);
265
+ if (response.preview_url) {
266
+ io.stdout(`Preview URL: ${response.preview_url}`);
267
+ }
268
+ if (response.rollback_status !== "not_needed") {
269
+ io.stdout(`Rollback: ${response.rollback_status}`);
270
+ }
271
+ if (response.receipt.error_detail) {
272
+ io.stderr(`Deploy error: ${response.receipt.error_detail}`);
273
+ }
274
+ }
275
+ function summarizeRemoteTerminalReceipt(status) {
276
+ if (!status.last_receipt || !status.last_deploy_state) {
277
+ return null;
278
+ }
279
+ return {
280
+ deploymentState: status.last_deploy_state.deployment_state,
281
+ errorDetail: status.last_receipt.error_detail,
282
+ previewUrl: status.last_deploy_state.preview_url,
283
+ receiptId: status.last_receipt.id,
284
+ receiptStatus: status.last_receipt.receipt_status,
285
+ rollbackStatus: status.last_deploy_state.rollback_status,
286
+ updatedAt: status.last_receipt.created_at,
287
+ };
288
+ }
289
+ function summarizeTerminalReceipt(response) {
290
+ return {
291
+ deploymentState: response.deployment_state,
292
+ errorDetail: response.receipt.error_detail,
293
+ previewUrl: response.preview_url,
294
+ receiptId: response.receipt.id,
295
+ receiptStatus: response.receipt.receipt_status,
296
+ rollbackStatus: response.rollback_status,
297
+ updatedAt: response.receipt.created_at,
298
+ };
299
+ }
300
+ function shortDigest(value) {
301
+ return value.slice(0, 12);
302
+ }
303
+ function defaultSleep(milliseconds) {
304
+ return new Promise((resolve) => {
305
+ setTimeout(resolve, milliseconds);
306
+ });
307
+ }
308
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import type { StoredAuthProfile } from "./state.js";
2
+ export type DeveloperPublicSiteProperty = {
3
+ default_release_class: string;
4
+ display_name: string;
5
+ property_key: string;
6
+ status: string;
7
+ tenant_id: string;
8
+ tenant_slug: string;
9
+ };
10
+ export type DeveloperSiteRelease = {
11
+ created_at: string;
12
+ digest: string;
13
+ id: string;
14
+ preview_deployment_status: string;
15
+ preview_deployment_url: string;
16
+ preview_health_status: string;
17
+ release_class: string;
18
+ release_key: string;
19
+ runtime_content_ref: string;
20
+ status: string;
21
+ };
22
+ export type DeveloperDeploymentReceipt = {
23
+ correlation_id: string;
24
+ created_at: string;
25
+ deploy_target_ref: string;
26
+ deployment_url: string;
27
+ error_detail: string;
28
+ health_status: string;
29
+ id: string;
30
+ provider_deployment_ref: string;
31
+ provider_name: string;
32
+ receipt_status: string;
33
+ reported_by: string;
34
+ target_environment: string;
35
+ };
36
+ export type DeveloperPreviewDeployState = {
37
+ deployment_state: "activated" | "failed" | "pending" | "ready" | "rolled_back";
38
+ preview_url: string;
39
+ rollback_status: "not_applicable" | "not_needed" | "previous_preview_preserved";
40
+ };
41
+ export type DeveloperPublicSiteLinkResponse = {
42
+ created: boolean;
43
+ property: DeveloperPublicSiteProperty;
44
+ };
45
+ export type DeveloperPublicSiteDeployStatusResponse = {
46
+ current_preview_release: DeveloperSiteRelease | null;
47
+ last_deploy_state: DeveloperPreviewDeployState | null;
48
+ last_receipt: DeveloperDeploymentReceipt | null;
49
+ preview_url: string;
50
+ property: DeveloperPublicSiteProperty;
51
+ };
52
+ export type DeveloperPublicSitePreviewDeployResponse = {
53
+ current_preview_release: DeveloperSiteRelease | null;
54
+ deployment_state: DeveloperPreviewDeployState["deployment_state"];
55
+ preview_url: string;
56
+ property: DeveloperPublicSiteProperty;
57
+ receipt: DeveloperDeploymentReceipt;
58
+ release: DeveloperSiteRelease;
59
+ rollback_status: DeveloperPreviewDeployState["rollback_status"];
60
+ };
61
+ export type DeveloperClientDependencies = {
62
+ fetchImpl?: typeof fetch;
63
+ };
64
+ export declare function createDeveloperClient(options: {
65
+ dependencies?: DeveloperClientDependencies;
66
+ profile: StoredAuthProfile;
67
+ }): {
68
+ getPreviewDeployReceipt(propertyKey: string, receiptId: string): Promise<DeveloperPublicSitePreviewDeployResponse>;
69
+ getPreviewDeployStatus(propertyKey: string): Promise<DeveloperPublicSiteDeployStatusResponse>;
70
+ linkPublicSite(input: {
71
+ defaultReleaseClass: "ssr_container";
72
+ displayName: string;
73
+ propertyKey: string;
74
+ }): Promise<DeveloperPublicSiteLinkResponse>;
75
+ submitPreviewDeploy(input: {
76
+ appId: string;
77
+ displayName: string;
78
+ propertyKey: string;
79
+ releaseClass: "ssr_container";
80
+ releaseDigest: string;
81
+ releaseKey: string;
82
+ runtimeContentRef: string;
83
+ sourceDigest: string;
84
+ starterId: "tenant-app";
85
+ version: string;
86
+ workspaceName: string;
87
+ }): Promise<DeveloperPublicSitePreviewDeployResponse>;
88
+ };