@bud.sh/app 0.5.1 → 0.6.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 (115) hide show
  1. package/README.md +41 -31
  2. package/dist/client/assets/bud/design.js +1 -1
  3. package/dist/client/assets/canvas-Bih9EdKJ.js +1 -0
  4. package/dist/client/assets/difference-worker-Bzg-rizy.js +8 -0
  5. package/dist/client/assets/dist-CdE5wBkg.js +5 -0
  6. package/dist/client/assets/files-1dLuoM2f.js +1 -0
  7. package/dist/client/assets/i18n-CkO6VFI0.js +1 -0
  8. package/dist/client/assets/index-Cn2mxroU.css +2 -0
  9. package/dist/client/assets/{index-Dn2pfmXf.js → index-DtISWZp9.js} +2 -2
  10. package/dist/client/assets/pages-BJ-tNJ4J.js +1 -0
  11. package/dist/client/assets/{project-branches-CMGRmrqr.js → project-branches-Ce3rXrkc.js} +1 -1
  12. package/dist/client/assets/project-comments-CPUONfs8.js +1 -0
  13. package/dist/client/assets/project-thread-links-C-TGkq59.js +1 -0
  14. package/dist/client/assets/{project-threads-ZbKDh78d.js → project-threads-Bv7IDBgi.js} +105 -105
  15. package/dist/client/assets/project-work-DAE9-olg.js +1 -0
  16. package/dist/client/assets/{task-design-BPpc4Gd7.js → task-design-CwySIAOl.js} +3 -3
  17. package/dist/client/assets/tasks-KWsCLi_h.js +3 -0
  18. package/dist/client/assets/wasm-inline-DSUyFn1L.js +1 -0
  19. package/dist/client/assets/workspace-CVdcfaaB.js +2 -0
  20. package/dist/client/index.html +3 -3
  21. package/dist/hosted/assets/{canvas-BYTOp1p7.js → canvas-AII16n9i.js} +97 -6
  22. package/dist/hosted/assets/{comment-data-Cn5y2VxV.js → comment-data-BXfMElfx.js} +1998 -381
  23. package/dist/hosted/assets/dist-BCSTeNf4.js +4785 -0
  24. package/dist/hosted/assets/{files-B1P2_24q.js → files-D_1yeAVO.js} +10 -5
  25. package/dist/hosted/assets/{pages-B0ZlVdci.js → pages-CN_SbKWA.js} +3 -3
  26. package/dist/hosted/assets/{project-branches-DlCWmfRo.js → project-branches-Bxp0DCwg.js} +1 -1
  27. package/dist/hosted/assets/{project-thread-links-BZXQ200n.js → project-thread-links-KqQoKBLE.js} +76 -4
  28. package/dist/{node-host/assets/screen-DapOVrga.js → hosted/assets/screen-DpAcDUKR.js} +25 -1
  29. package/dist/hosted/assets/tasks-D66LlwxM.js +1423 -0
  30. package/dist/hosted/assets/wasm-inline-Dl9tqabx.js +4 -0
  31. package/dist/hosted/hosted.js +7885 -6219
  32. package/dist/node/assets/Stream-CAm1eJ2n.js +16604 -0
  33. package/dist/{server/assets/bridge-B_Blt55E.js → node/assets/bridge-DQSBYHmw.js} +124 -290
  34. package/dist/node/assets/config-9_jWwNBh.js +1067 -0
  35. package/dist/node/assets/load-config.server-CMVtRVmO.js +261 -0
  36. package/dist/node/assets/module-3GgtT4Xs.js +308 -0
  37. package/dist/node/assets/server-DTQFuoX2.js +846 -0
  38. package/dist/node/assets/src-D-kG1GxB.js +2 -0
  39. package/dist/node/assets/{src-CerrKjID.js → src-Dwe9APUx.js} +93 -3
  40. package/dist/node/assets/src-DysjfbM8.js +8592 -0
  41. package/dist/node/bridge.js +1 -845
  42. package/dist/node/cli.js +206 -0
  43. package/dist/node/design.js +811 -8
  44. package/dist/node/index.js +2 -739
  45. package/dist/node/plugins.js +5711 -0
  46. package/dist/node/server.js +1 -6746
  47. package/dist/node/vite.js +121 -0
  48. package/dist/{server/assets/canvas-CkMK4hoN.js → node-host/assets/canvas-BeDoufy1.js} +97 -7
  49. package/dist/node-host/assets/{comment-data-yfWEdDQL.js → comment-data-DE2T9yTj.js} +1974 -355
  50. package/dist/node-host/assets/dist-BCSTeNf4.js +4785 -0
  51. package/dist/node-host/assets/{files-anHi-apm.js → files-Dl-PTS09.js} +11 -6
  52. package/dist/node-host/assets/{pages-CW4aF6dK.js → pages-DL2sk6_U.js} +3 -3
  53. package/dist/node-host/assets/{project-branches-D7rVCxQX.js → project-branches-DGp5ELct.js} +1 -1
  54. package/dist/{server/assets/project-thread-links-lLS_rq7c.js → node-host/assets/project-thread-links-CgBV3Jcm.js} +76 -5
  55. package/dist/{hosted/assets/screen-CfdC3NbR.js → node-host/assets/screen-B55yyVfb.js} +25 -1
  56. package/dist/node-host/assets/tasks-DZRNkoxe.js +1425 -0
  57. package/dist/node-host/assets/wasm-inline-Dl9tqabx.js +4 -0
  58. package/dist/node-host/node-host.js +6127 -4438
  59. package/dist/server/assets/{branch-previews-ClkoJ0lM.js → branch-previews-DedrpnVR.js} +1555 -673
  60. package/dist/{node-host/assets/canvas-DxmcFZCh.js → server/assets/canvas-CJWQ-jjv.js} +98 -6
  61. package/dist/server/assets/{comment-data-NLeHG89b.js → comment-data-Rg42ToTW.js} +1660 -26
  62. package/dist/server/assets/dist-BCSTeNf4.js +4785 -0
  63. package/dist/server/assets/{events-iHpLGr3k.js → events-BH_rAu7O.js} +155 -20
  64. package/dist/server/assets/{files-CRdl489E.js → files-CPJqKeMo.js} +12 -7
  65. package/dist/server/assets/{listener-BAYn9Q-u.js → listener-D61O6PzF.js} +708 -12
  66. package/dist/server/assets/{pages-DXVlJlBC.js → pages-KJY_Ba92.js} +4 -4
  67. package/dist/server/assets/{project-branches-CwTsf6WQ.js → project-branches-qG9ACZvo.js} +2 -2
  68. package/dist/{node-host/assets/project-thread-links-m-OLpsD9.js → server/assets/project-thread-links-CqK0lqCF.js} +77 -4
  69. package/dist/{node-host/assets/tasks-request-B0aeNocI.js → server/assets/project-work-DoIwxWMm.js} +87 -2
  70. package/dist/server/assets/run-BJ8r5jSh.js +572 -0
  71. package/dist/server/assets/{screen-B1zH_1O3.js → screen-CBrHPFug.js} +26 -2
  72. package/dist/server/assets/{server-DxK-UB_Z.js → server-Dkbp5stG.js} +1521 -793
  73. package/dist/server/assets/{services-BRrgXYlT.js → services-BTfig8A8.js} +234 -997
  74. package/dist/server/assets/tasks-Bgu5Lg9Y.js +1427 -0
  75. package/dist/server/assets/wasm-inline-Dl9tqabx.js +4 -0
  76. package/dist/server/capture.js +1 -2
  77. package/dist/server/migration.js +569 -12
  78. package/dist/server/runtime.js +7 -5
  79. package/dist/server/server.js +3 -3
  80. package/dist/types/assets/{config-DIC2cf_S.d.ts → config-CvcYmE2s.d.ts} +188 -50
  81. package/dist/types/assets/{contract-CAT-XFNq.d.ts → contract-B7yuuqSn.d.ts} +44 -2
  82. package/dist/types/assets/{items-CaVkByHk.d.ts → items-BQdaVksf.d.ts} +12 -1
  83. package/dist/types/assets/memory-state-BBW-FAVA.d.ts +236 -0
  84. package/dist/types/assets/picker-Be5Gx4WR.d.ts +9 -0
  85. package/dist/types/assets/{task-design-xJOhRNWh.d.ts → task-design-BDHKFHpp.d.ts} +3 -1
  86. package/dist/types/bridge.d.ts +1 -1
  87. package/dist/types/companion.d.ts +3 -3
  88. package/dist/types/design.d.ts +2 -2
  89. package/dist/types/hosted.d.ts +3 -3
  90. package/dist/types/index.d.ts +2 -2
  91. package/dist/types/node-host.d.ts +2 -2
  92. package/dist/types/plugins.d.ts +445 -0
  93. package/dist/types/screen.d.ts +2 -2
  94. package/dist/types/server.d.ts +2 -228
  95. package/dist/types/vite.d.ts +16 -0
  96. package/package.json +19 -3
  97. package/dist/client/assets/canvas-8GXJIuDK.js +0 -1
  98. package/dist/client/assets/difference-worker-C99ychYw.js +0 -8
  99. package/dist/client/assets/files-DkWt1l9H.js +0 -1
  100. package/dist/client/assets/i18n-hH_Ba5QO.js +0 -1
  101. package/dist/client/assets/index-tpHYVXma.css +0 -2
  102. package/dist/client/assets/pages-BVd6MQmu.js +0 -1
  103. package/dist/client/assets/project-comments-D1IIQwsW.js +0 -1
  104. package/dist/client/assets/project-thread-links-DKwe_SYb.js +0 -1
  105. package/dist/client/assets/project-work-D4DZqBCZ.js +0 -1
  106. package/dist/client/assets/tasks-Cn0VOZ9Z.js +0 -1
  107. package/dist/client/assets/tasks-request-BLyOzokZ.js +0 -1
  108. package/dist/client/assets/workspace-DGErsSg6.js +0 -2
  109. package/dist/hosted/assets/tasks-_yKh2Z6q.js +0 -649
  110. package/dist/hosted/assets/tasks-request-CFPLvLc7.js +0 -113
  111. package/dist/node-host/assets/tasks-BBK_CybR.js +0 -651
  112. package/dist/server/assets/project-work-CSZlCwH-.js +0 -88
  113. package/dist/server/assets/tasks-CGdz-uox.js +0 -652
  114. package/dist/server/assets/tasks-request-D2NBjCTl.js +0 -115
  115. package/dist/types/assets/picker-D1Bw3ndx.d.ts +0 -14
@@ -0,0 +1,206 @@
1
+ #!/usr/bin/env node
2
+ import { u as resolveBranches } from "./assets/config-9_jWwNBh.js";
3
+ import "./assets/src-D-kG1GxB.js";
4
+ import { i as ProjectError, r as ProjectConfig, t as createConfigRuntime } from "./assets/load-config.server-CMVtRVmO.js";
5
+ import { resolve } from "node:path";
6
+ //#region src/host/cli-options.ts
7
+ var captureOptions = [
8
+ "branch",
9
+ "commit",
10
+ "store",
11
+ "progress"
12
+ ];
13
+ function parseCapture(args) {
14
+ let directory;
15
+ let values = {};
16
+ for (let index = 1; index < args.length; index++) {
17
+ let arg = args[index];
18
+ let option = captureOptions.find((name) => arg === `--${name}` || arg.startsWith(`--${name}=`));
19
+ if (option) {
20
+ let value = arg === `--${option}` ? args[++index] : arg.slice(option.length + 3);
21
+ if (values[option] !== void 0 || !value || value.startsWith("-")) throw new Error(`Pass --${option} once with a value.`);
22
+ values[option] = value;
23
+ } else {
24
+ if (arg.startsWith("-") || directory !== void 0) throw new Error(`Unsupported capture argument: ${arg}`);
25
+ directory = arg;
26
+ }
27
+ }
28
+ let { branch, commit, store, progress } = values;
29
+ if (!branch || !/^[A-Za-z0-9._/-]+$/.test(branch)) throw new Error("Pass --branch with a name.");
30
+ if (!commit || !/^[a-f0-9]{40,64}$/.test(commit)) throw new Error("Pass --commit with a full commit ID.");
31
+ for (let [name, value] of [["store", store], ["progress", progress]]) if (value !== void 0 && !/^https?:$/.test(new URL(value).protocol)) throw new Error(`--${name} must be an HTTP URL.`);
32
+ if (!store) throw new Error("Pass --store with the store URL.");
33
+ return {
34
+ command: "capture",
35
+ directory: directory ?? ".",
36
+ branch,
37
+ commit,
38
+ store,
39
+ ...progress ? { progress } : {}
40
+ };
41
+ }
42
+ /**
43
+ * Parses the installed command without loading configuration or opening a listener.
44
+ * @param args - Arguments after the executable name.
45
+ * @returns A validated command; unknown or repeated options fail before any work starts.
46
+ */
47
+ function parseCliOptions(args) {
48
+ if (args.includes("--help") || args.includes("-h")) return { command: "help" };
49
+ if (args[0] === "capture") return parseCapture(args);
50
+ if (args[0] !== "comments") {
51
+ if (args.length > 1 || args.some((arg) => arg.startsWith("-"))) throw new Error("Expected at most one project directory.");
52
+ return {
53
+ command: "serve",
54
+ directory: args[0] ?? "."
55
+ };
56
+ }
57
+ if (args[1] !== "migrate") throw new Error("Expected bud comments migrate.");
58
+ let directory;
59
+ let to;
60
+ let dryRun = false;
61
+ for (let index = 2; index < args.length; index++) {
62
+ let arg = args[index];
63
+ if (arg === "--dry-run") {
64
+ if (dryRun) throw new Error("Pass --dry-run only once.");
65
+ dryRun = true;
66
+ } else if (arg === "--to" || arg.startsWith("--to=")) {
67
+ let value = arg === "--to" ? args[++index] : arg.slice(5);
68
+ if (to !== void 0 || !value || value.startsWith("-")) throw new Error("Pass --to once with a storage adapter.");
69
+ to = value;
70
+ } else {
71
+ if (arg.startsWith("-") || directory !== void 0) throw new Error(`Unsupported migration argument: ${arg}`);
72
+ directory = arg;
73
+ }
74
+ }
75
+ return {
76
+ command: "migrate",
77
+ directory: directory ?? ".",
78
+ ...to === void 0 ? {} : { to },
79
+ dryRun
80
+ };
81
+ }
82
+ //#endregion
83
+ //#region src/host/cli.server.ts
84
+ var usage = "Usage: bud [project-directory]\n bud comments migrate [project-directory] [--to bud:beads] [--dry-run]\n bud capture [project-directory] --branch <name> --commit <id> --store <url> [--progress <url>]\n\nLoads bud.config.ts or bud.config.js. Set target.origin/port for the standalone server.\nFor automatic port discovery, add bud() from @bud.sh/app/vite to your Vite plugins.\nComment migration uses the configured thread adapter and leaves the source Git ref unchanged.";
85
+ var command = parseCommand();
86
+ function parseCommand() {
87
+ try {
88
+ return parseCliOptions(process.argv.slice(2));
89
+ } catch (error) {
90
+ console.error(`${error instanceof Error ? error.message : error}\n\n${usage}`);
91
+ process.exitCode = 2;
92
+ }
93
+ }
94
+ if (command?.command === "help") console.log(usage);
95
+ else if (command) {
96
+ let runtime = createConfigRuntime();
97
+ let controller = new AbortController();
98
+ let stopped = Promise.withResolvers();
99
+ let server;
100
+ let interrupted = 130;
101
+ let stop = (signal) => {
102
+ interrupted = signal === "SIGTERM" ? 143 : 130;
103
+ controller.abort();
104
+ stopped.resolve();
105
+ };
106
+ process.once("SIGINT", stop);
107
+ process.once("SIGTERM", stop);
108
+ try {
109
+ let loaded = await runtime.runPromise(ProjectConfig.use((service) => service.load(resolve(command.directory))), { signal: controller.signal });
110
+ if (command.command === "capture") {
111
+ let { captureCommit, httpPreviewStorage } = await import(
112
+ /* @vite-ignore */
113
+ import.meta.resolve("@bud.sh/app/capture")
114
+ );
115
+ controller.signal.throwIfAborted();
116
+ let sent = 0;
117
+ let report = (progress, force = false) => {
118
+ if (!force && Date.now() - sent < 2e3) return;
119
+ sent = Date.now();
120
+ console.error(`Captured ${progress.captured} of ${progress.total}`);
121
+ if (!command.progress) return;
122
+ fetch(command.progress, {
123
+ method: "POST",
124
+ headers: { "Content-Type": "application/json" },
125
+ body: JSON.stringify(progress)
126
+ }).catch(() => {});
127
+ };
128
+ let hostBuild = process.env.BUD_HOST_BRANCH_BUILD;
129
+ let config = hostBuild ? {
130
+ ...loaded.config,
131
+ branches: resolveBranches({
132
+ ...loaded.config.branches.main ? { main: loaded.config.branches.main } : {},
133
+ build: JSON.parse(hostBuild)
134
+ })
135
+ } : loaded.config;
136
+ let concurrency = Number(process.env.BUD_CAPTURE_CONCURRENCY) || void 0;
137
+ let result = await captureCommit({
138
+ root: loaded.root,
139
+ config,
140
+ concurrency,
141
+ branch: command.branch,
142
+ commit: command.commit,
143
+ storage: httpPreviewStorage(command.store),
144
+ onProgress: report,
145
+ deadlineMs: Number(process.env.BUD_CAPTURE_DEADLINE_MS) || void 0,
146
+ signal: controller.signal
147
+ });
148
+ report({
149
+ captured: result.captured,
150
+ total: result.routes
151
+ }, true);
152
+ console.log(JSON.stringify(result));
153
+ } else if (command.command === "migrate") {
154
+ let { runCommentMigration } = await import(
155
+ /* @vite-ignore */
156
+ import.meta.resolve("@bud.sh/app/migration")
157
+ );
158
+ controller.signal.throwIfAborted();
159
+ let result = await runCommentMigration({
160
+ root: loaded.root,
161
+ config: loaded.config,
162
+ to: command.to,
163
+ dryRun: command.dryRun,
164
+ signal: controller.signal
165
+ });
166
+ console.log(result.dryRun ? `Dry run: ${result.pending} discussions would be migrated; ${result.skipped} already exist. Source Git history unchanged.` : `Migrated ${result.created} discussions; skipped ${result.skipped} existing imports. Source Git history unchanged.`);
167
+ } else {
168
+ if (!loaded.config.targetOrigin) throw new ProjectError({
169
+ reason: "target",
170
+ message: "Set target.origin or target.port, or use the Vite plugin for automatic discovery."
171
+ });
172
+ let { startBud } = await import(
173
+ /* @vite-ignore */
174
+ import.meta.resolve("@bud.sh/app/companion")
175
+ );
176
+ controller.signal.throwIfAborted();
177
+ server = await startBud({
178
+ root: loaded.root,
179
+ config: loaded.config,
180
+ targetOrigin: loaded.config.targetOrigin,
181
+ reloadPreviews: true,
182
+ signal: controller.signal
183
+ });
184
+ console.log(`Bud → ${server.origin}`);
185
+ await stopped.promise;
186
+ }
187
+ } catch (error) {
188
+ if (controller.signal.aborted) process.exitCode = interrupted;
189
+ else {
190
+ console.error(error instanceof Error ? error.message : error);
191
+ let output = error.output;
192
+ if (typeof output === "string" && output.trim()) console.error(output.slice(-8e3));
193
+ process.exitCode = error instanceof ProjectError ? 2 : 1;
194
+ }
195
+ } finally {
196
+ process.off("SIGINT", stop);
197
+ process.off("SIGTERM", stop);
198
+ try {
199
+ await server?.close();
200
+ } finally {
201
+ await runtime.dispose();
202
+ }
203
+ }
204
+ }
205
+ //#endregion
206
+ export {};