@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.
- package/README.md +41 -31
- package/dist/client/assets/bud/design.js +1 -1
- package/dist/client/assets/canvas-Bih9EdKJ.js +1 -0
- package/dist/client/assets/difference-worker-Bzg-rizy.js +8 -0
- package/dist/client/assets/dist-CdE5wBkg.js +5 -0
- package/dist/client/assets/files-1dLuoM2f.js +1 -0
- package/dist/client/assets/i18n-CkO6VFI0.js +1 -0
- package/dist/client/assets/index-Cn2mxroU.css +2 -0
- package/dist/client/assets/{index-Dn2pfmXf.js → index-DtISWZp9.js} +2 -2
- package/dist/client/assets/pages-BJ-tNJ4J.js +1 -0
- package/dist/client/assets/{project-branches-CMGRmrqr.js → project-branches-Ce3rXrkc.js} +1 -1
- package/dist/client/assets/project-comments-CPUONfs8.js +1 -0
- package/dist/client/assets/project-thread-links-C-TGkq59.js +1 -0
- package/dist/client/assets/{project-threads-ZbKDh78d.js → project-threads-Bv7IDBgi.js} +105 -105
- package/dist/client/assets/project-work-DAE9-olg.js +1 -0
- package/dist/client/assets/{task-design-BPpc4Gd7.js → task-design-CwySIAOl.js} +3 -3
- package/dist/client/assets/tasks-KWsCLi_h.js +3 -0
- package/dist/client/assets/wasm-inline-DSUyFn1L.js +1 -0
- package/dist/client/assets/workspace-CVdcfaaB.js +2 -0
- package/dist/client/index.html +3 -3
- package/dist/hosted/assets/{canvas-BYTOp1p7.js → canvas-AII16n9i.js} +97 -6
- package/dist/hosted/assets/{comment-data-Cn5y2VxV.js → comment-data-BXfMElfx.js} +1998 -381
- package/dist/hosted/assets/dist-BCSTeNf4.js +4785 -0
- package/dist/hosted/assets/{files-B1P2_24q.js → files-D_1yeAVO.js} +10 -5
- package/dist/hosted/assets/{pages-B0ZlVdci.js → pages-CN_SbKWA.js} +3 -3
- package/dist/hosted/assets/{project-branches-DlCWmfRo.js → project-branches-Bxp0DCwg.js} +1 -1
- package/dist/hosted/assets/{project-thread-links-BZXQ200n.js → project-thread-links-KqQoKBLE.js} +76 -4
- package/dist/{node-host/assets/screen-DapOVrga.js → hosted/assets/screen-DpAcDUKR.js} +25 -1
- package/dist/hosted/assets/tasks-D66LlwxM.js +1423 -0
- package/dist/hosted/assets/wasm-inline-Dl9tqabx.js +4 -0
- package/dist/hosted/hosted.js +7885 -6219
- package/dist/node/assets/Stream-CAm1eJ2n.js +16604 -0
- package/dist/{server/assets/bridge-B_Blt55E.js → node/assets/bridge-DQSBYHmw.js} +124 -290
- package/dist/node/assets/config-9_jWwNBh.js +1067 -0
- package/dist/node/assets/load-config.server-CMVtRVmO.js +261 -0
- package/dist/node/assets/module-3GgtT4Xs.js +308 -0
- package/dist/node/assets/server-DTQFuoX2.js +846 -0
- package/dist/node/assets/src-D-kG1GxB.js +2 -0
- package/dist/node/assets/{src-CerrKjID.js → src-Dwe9APUx.js} +93 -3
- package/dist/node/assets/src-DysjfbM8.js +8592 -0
- package/dist/node/bridge.js +1 -845
- package/dist/node/cli.js +206 -0
- package/dist/node/design.js +811 -8
- package/dist/node/index.js +2 -739
- package/dist/node/plugins.js +5711 -0
- package/dist/node/server.js +1 -6746
- package/dist/node/vite.js +121 -0
- package/dist/{server/assets/canvas-CkMK4hoN.js → node-host/assets/canvas-BeDoufy1.js} +97 -7
- package/dist/node-host/assets/{comment-data-yfWEdDQL.js → comment-data-DE2T9yTj.js} +1974 -355
- package/dist/node-host/assets/dist-BCSTeNf4.js +4785 -0
- package/dist/node-host/assets/{files-anHi-apm.js → files-Dl-PTS09.js} +11 -6
- package/dist/node-host/assets/{pages-CW4aF6dK.js → pages-DL2sk6_U.js} +3 -3
- package/dist/node-host/assets/{project-branches-D7rVCxQX.js → project-branches-DGp5ELct.js} +1 -1
- package/dist/{server/assets/project-thread-links-lLS_rq7c.js → node-host/assets/project-thread-links-CgBV3Jcm.js} +76 -5
- package/dist/{hosted/assets/screen-CfdC3NbR.js → node-host/assets/screen-B55yyVfb.js} +25 -1
- package/dist/node-host/assets/tasks-DZRNkoxe.js +1425 -0
- package/dist/node-host/assets/wasm-inline-Dl9tqabx.js +4 -0
- package/dist/node-host/node-host.js +6127 -4438
- package/dist/server/assets/{branch-previews-ClkoJ0lM.js → branch-previews-DedrpnVR.js} +1555 -673
- package/dist/{node-host/assets/canvas-DxmcFZCh.js → server/assets/canvas-CJWQ-jjv.js} +98 -6
- package/dist/server/assets/{comment-data-NLeHG89b.js → comment-data-Rg42ToTW.js} +1660 -26
- package/dist/server/assets/dist-BCSTeNf4.js +4785 -0
- package/dist/server/assets/{events-iHpLGr3k.js → events-BH_rAu7O.js} +155 -20
- package/dist/server/assets/{files-CRdl489E.js → files-CPJqKeMo.js} +12 -7
- package/dist/server/assets/{listener-BAYn9Q-u.js → listener-D61O6PzF.js} +708 -12
- package/dist/server/assets/{pages-DXVlJlBC.js → pages-KJY_Ba92.js} +4 -4
- package/dist/server/assets/{project-branches-CwTsf6WQ.js → project-branches-qG9ACZvo.js} +2 -2
- package/dist/{node-host/assets/project-thread-links-m-OLpsD9.js → server/assets/project-thread-links-CqK0lqCF.js} +77 -4
- package/dist/{node-host/assets/tasks-request-B0aeNocI.js → server/assets/project-work-DoIwxWMm.js} +87 -2
- package/dist/server/assets/run-BJ8r5jSh.js +572 -0
- package/dist/server/assets/{screen-B1zH_1O3.js → screen-CBrHPFug.js} +26 -2
- package/dist/server/assets/{server-DxK-UB_Z.js → server-Dkbp5stG.js} +1521 -793
- package/dist/server/assets/{services-BRrgXYlT.js → services-BTfig8A8.js} +234 -997
- package/dist/server/assets/tasks-Bgu5Lg9Y.js +1427 -0
- package/dist/server/assets/wasm-inline-Dl9tqabx.js +4 -0
- package/dist/server/capture.js +1 -2
- package/dist/server/migration.js +569 -12
- package/dist/server/runtime.js +7 -5
- package/dist/server/server.js +3 -3
- package/dist/types/assets/{config-DIC2cf_S.d.ts → config-CvcYmE2s.d.ts} +188 -50
- package/dist/types/assets/{contract-CAT-XFNq.d.ts → contract-B7yuuqSn.d.ts} +44 -2
- package/dist/types/assets/{items-CaVkByHk.d.ts → items-BQdaVksf.d.ts} +12 -1
- package/dist/types/assets/memory-state-BBW-FAVA.d.ts +236 -0
- package/dist/types/assets/picker-Be5Gx4WR.d.ts +9 -0
- package/dist/types/assets/{task-design-xJOhRNWh.d.ts → task-design-BDHKFHpp.d.ts} +3 -1
- package/dist/types/bridge.d.ts +1 -1
- package/dist/types/companion.d.ts +3 -3
- package/dist/types/design.d.ts +2 -2
- package/dist/types/hosted.d.ts +3 -3
- package/dist/types/index.d.ts +2 -2
- package/dist/types/node-host.d.ts +2 -2
- package/dist/types/plugins.d.ts +445 -0
- package/dist/types/screen.d.ts +2 -2
- package/dist/types/server.d.ts +2 -228
- package/dist/types/vite.d.ts +16 -0
- package/package.json +19 -3
- package/dist/client/assets/canvas-8GXJIuDK.js +0 -1
- package/dist/client/assets/difference-worker-C99ychYw.js +0 -8
- package/dist/client/assets/files-DkWt1l9H.js +0 -1
- package/dist/client/assets/i18n-hH_Ba5QO.js +0 -1
- package/dist/client/assets/index-tpHYVXma.css +0 -2
- package/dist/client/assets/pages-BVd6MQmu.js +0 -1
- package/dist/client/assets/project-comments-D1IIQwsW.js +0 -1
- package/dist/client/assets/project-thread-links-DKwe_SYb.js +0 -1
- package/dist/client/assets/project-work-D4DZqBCZ.js +0 -1
- package/dist/client/assets/tasks-Cn0VOZ9Z.js +0 -1
- package/dist/client/assets/tasks-request-BLyOzokZ.js +0 -1
- package/dist/client/assets/workspace-DGErsSg6.js +0 -2
- package/dist/hosted/assets/tasks-_yKh2Z6q.js +0 -649
- package/dist/hosted/assets/tasks-request-CFPLvLc7.js +0 -113
- package/dist/node-host/assets/tasks-BBK_CybR.js +0 -651
- package/dist/server/assets/project-work-CSZlCwH-.js +0 -88
- package/dist/server/assets/tasks-CGdz-uox.js +0 -652
- package/dist/server/assets/tasks-request-D2NBjCTl.js +0 -115
- package/dist/types/assets/picker-D1Bw3ndx.d.ts +0 -14
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { t as ResolvedPicker } from "./picker-Be5Gx4WR.js";
|
|
2
2
|
import { RouteMap } from "remix/routes";
|
|
3
3
|
//#region ../project/src/lib/flows.d.ts
|
|
4
4
|
/**
|
|
@@ -55,6 +55,82 @@ interface ResolvedFiles {
|
|
|
55
55
|
edit: boolean;
|
|
56
56
|
}
|
|
57
57
|
//#endregion
|
|
58
|
+
//#region ../project/src/lib/factory.d.ts
|
|
59
|
+
/** The steps of a factory task, each a status in the project's task store. */
|
|
60
|
+
declare const FACTORY_STATUS_ROLES: readonly ["open", "inProgress", "needsApproval", "readyToMerge", "merged"];
|
|
61
|
+
/** One step of a factory task. */
|
|
62
|
+
type FactoryStatusRole = (typeof FACTORY_STATUS_ROLES)[number];
|
|
63
|
+
/** The project's dev server inside a sandbox: `$PORT` in the command is replaced by `port`. */
|
|
64
|
+
interface BudFactoryDev {
|
|
65
|
+
command: string;
|
|
66
|
+
port: number;
|
|
67
|
+
/** Where Open live preview lands, such as a locale's home page; `/` by default. */
|
|
68
|
+
path?: string;
|
|
69
|
+
/** Values the dev server needs, such as a gateway URL; never secrets, which the server adds. */
|
|
70
|
+
env?: Record<string, string>;
|
|
71
|
+
}
|
|
72
|
+
/** The software factory: comments become tasks that agents finish in sandboxes. */
|
|
73
|
+
interface BudFactory {
|
|
74
|
+
/** The task store's status for each step; the defaults are Beads' names. */
|
|
75
|
+
statuses?: Partial<Record<FactoryStatusRole, string>>;
|
|
76
|
+
/** Moved into plugins: `local()` or `boat()` from `@bud.sh/app/plugins`. */
|
|
77
|
+
sandbox?: never;
|
|
78
|
+
/** Moved into plugins: `opencode({ model, keys })` from `@bud.sh/app/plugins`. */
|
|
79
|
+
agent?: never;
|
|
80
|
+
/** A shell command run once in a new sandbox's checkout, such as `bun install`. */
|
|
81
|
+
setup?: string;
|
|
82
|
+
dev?: BudFactoryDev;
|
|
83
|
+
/** The prefix of every run's branch; `dev/` by default. */
|
|
84
|
+
branchPrefix?: string;
|
|
85
|
+
/**
|
|
86
|
+
* Minutes a sandbox stays up while its run waits for people (review, a question, a failure);
|
|
87
|
+
* then it sleeps with its disk kept and wakes when needed. 5 by default; 0 keeps it up.
|
|
88
|
+
*/
|
|
89
|
+
sleepAfter?: number;
|
|
90
|
+
/** A `./` Markdown file with project instructions for the agent. */
|
|
91
|
+
instructions?: string;
|
|
92
|
+
/**
|
|
93
|
+
* Where approved branches go: the Git remote (`origin`), and the server environment variable
|
|
94
|
+
* holding a token that may push them, with the user name its Git host expects (`x-access-token`
|
|
95
|
+
* for GitHub, `x-token-auth` for Bitbucket). Without a token, Git's own credentials push.
|
|
96
|
+
*/
|
|
97
|
+
push?: {
|
|
98
|
+
remote?: string;
|
|
99
|
+
credential?: string;
|
|
100
|
+
username?: string;
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/** The factory as Bud runs it, or null when it is off. */
|
|
104
|
+
interface ResolvedFactory {
|
|
105
|
+
statuses: Record<FactoryStatusRole, string>;
|
|
106
|
+
/** The name of the plugin providing the sandboxes, such as `bud:local`. */
|
|
107
|
+
sandbox: string | null;
|
|
108
|
+
/**
|
|
109
|
+
* The agent harness's plugin, its model and the server variables the model needs, from the
|
|
110
|
+
* harness plugin; OpenCode with DeepSeek V4.1 Flash on its free tier by default.
|
|
111
|
+
*/
|
|
112
|
+
agent: {
|
|
113
|
+
harness: string;
|
|
114
|
+
model: string;
|
|
115
|
+
keys: string[];
|
|
116
|
+
};
|
|
117
|
+
setup: string | null;
|
|
118
|
+
dev: {
|
|
119
|
+
command: string;
|
|
120
|
+
port: number;
|
|
121
|
+
path: string;
|
|
122
|
+
env: Record<string, string>;
|
|
123
|
+
} | null;
|
|
124
|
+
branchPrefix: string;
|
|
125
|
+
sleepAfter: number;
|
|
126
|
+
instructions: string | null;
|
|
127
|
+
push: {
|
|
128
|
+
remote: string;
|
|
129
|
+
credential: string | null;
|
|
130
|
+
username: string;
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
//#endregion
|
|
58
134
|
//#region ../project/src/lib/theme.d.ts
|
|
59
135
|
/** Token values by name, such as `{ primary: '#f5b700' }`. */
|
|
60
136
|
type BudThemeColors = Readonly<Record<string, string>>;
|
|
@@ -99,6 +175,100 @@ interface ResolvedBranches {
|
|
|
99
175
|
serve: string | null;
|
|
100
176
|
}
|
|
101
177
|
//#endregion
|
|
178
|
+
//#region ../project/src/lib/screens.d.ts
|
|
179
|
+
/** One destination in Bud's navigation: a built-in or a Remix component module in the project. */
|
|
180
|
+
interface BudScreen {
|
|
181
|
+
id: string;
|
|
182
|
+
label: string;
|
|
183
|
+
/** A Bud icon name; defaults to `layers`. */
|
|
184
|
+
icon?: string;
|
|
185
|
+
/** One static segment such as `/metrics`; defaults to `/${id}`. */
|
|
186
|
+
path?: string;
|
|
187
|
+
/** `./`-relative to the project root (`.ts`, `.tsx`, `.js`, `.jsx`), or a `bud:` built-in. */
|
|
188
|
+
module: string;
|
|
189
|
+
/** Optional route metadata shared with defineScreen; checked before the server listens. */
|
|
190
|
+
routes?: RouteMap;
|
|
191
|
+
}
|
|
192
|
+
/** A validated screen with every field filled in. */
|
|
193
|
+
type ResolvedScreen = Required<Omit<BudScreen, "routes">> & {
|
|
194
|
+
routes?: RouteMap;
|
|
195
|
+
};
|
|
196
|
+
/**
|
|
197
|
+
* Bud's browser of your live pages, with their comments.
|
|
198
|
+
* @returns The built-in screen, ready to relabel by spreading.
|
|
199
|
+
*/
|
|
200
|
+
declare function pages(): ResolvedScreen;
|
|
201
|
+
/**
|
|
202
|
+
* Bud's canvas of every route's screenshot.
|
|
203
|
+
* @returns The built-in screen, ready to relabel by spreading.
|
|
204
|
+
*/
|
|
205
|
+
declare function canvas(): ResolvedScreen;
|
|
206
|
+
/**
|
|
207
|
+
* Bud's Beads task board.
|
|
208
|
+
* @returns The built-in screen, ready to relabel by spreading.
|
|
209
|
+
*/
|
|
210
|
+
declare function tasks(): ResolvedScreen;
|
|
211
|
+
/**
|
|
212
|
+
* Bud's file browser and review.
|
|
213
|
+
* @returns The built-in screen, ready to relabel by spreading.
|
|
214
|
+
*/
|
|
215
|
+
declare function files(): ResolvedScreen;
|
|
216
|
+
//#endregion
|
|
217
|
+
//#region ../project/src/lib/plugins.d.ts
|
|
218
|
+
/**
|
|
219
|
+
* A Bud plugin as the config sees it: a name, an optional `config` hook and what it contributes.
|
|
220
|
+
* `@bud.sh/plugin` types the server contributions (stores, sandbox, harness); here they are only
|
|
221
|
+
* found, so the config knows which plugin provides what.
|
|
222
|
+
*/
|
|
223
|
+
interface BudPluginBase {
|
|
224
|
+
/** Unique among the project's plugins, such as `bud:beads`. */
|
|
225
|
+
name: string;
|
|
226
|
+
/** A human name for what it provides, such as `Beads`. */
|
|
227
|
+
label?: string;
|
|
228
|
+
/** `pre` plugins run their hooks first, `post` ones last, as Vite's do. */
|
|
229
|
+
enforce?: "pre" | "post";
|
|
230
|
+
/** Adjusts the config before Bud resolves it; return the settings to merge in. */
|
|
231
|
+
config?(config: BudConfig): Partial<BudConfig> | null | void;
|
|
232
|
+
/** The task store: an Effect layer providing WorkAdapter, or a function making one. */
|
|
233
|
+
work?: unknown;
|
|
234
|
+
/** The discussion store: an Effect layer providing ThreadAdapter, or a function making one. */
|
|
235
|
+
threads?: unknown;
|
|
236
|
+
/**
|
|
237
|
+
* The picker: null for one Bud knows by the plugin's name (`bud:react-grab`), or a `./` browser
|
|
238
|
+
* module in the project whose default export is a picker adapter.
|
|
239
|
+
*/
|
|
240
|
+
picker?: string | null;
|
|
241
|
+
/** A `./` browser module in the project designing the Tasks screen. */
|
|
242
|
+
taskDesign?: string;
|
|
243
|
+
/** Screens added to Bud's navigation. */
|
|
244
|
+
screens?: BudScreen[];
|
|
245
|
+
/** The factory's sandboxes: a function making a SandboxAdapter. */
|
|
246
|
+
sandbox?: unknown;
|
|
247
|
+
/** The factory's agent harness: how its server starts in a sandbox, its model and keys. */
|
|
248
|
+
harness?: unknown;
|
|
249
|
+
}
|
|
250
|
+
/** What `plugins` takes: plugins, and nothing or nested lists of them, as Vite's does. */
|
|
251
|
+
type BudPluginOption = BudPluginBase | false | null | undefined | readonly BudPluginOption[];
|
|
252
|
+
/**
|
|
253
|
+
* A task design from the project: a `./` browser module whose default export designs the Tasks
|
|
254
|
+
* screen.
|
|
255
|
+
* @param module - The module, such as `./designs/compact-card.tsx`.
|
|
256
|
+
* @returns The plugin.
|
|
257
|
+
*/
|
|
258
|
+
declare function taskDesign(module: string): {
|
|
259
|
+
name: string;
|
|
260
|
+
taskDesign: string;
|
|
261
|
+
};
|
|
262
|
+
/**
|
|
263
|
+
* A picker from the project: a `./` browser module whose default export is a picker adapter.
|
|
264
|
+
* @param module - The module, such as `./bud/picker.ts`.
|
|
265
|
+
* @returns The plugin.
|
|
266
|
+
*/
|
|
267
|
+
declare function picker(module: string): {
|
|
268
|
+
name: string;
|
|
269
|
+
picker: string;
|
|
270
|
+
};
|
|
271
|
+
//#endregion
|
|
102
272
|
//#region ../project/src/lib/logo.d.ts
|
|
103
273
|
/**
|
|
104
274
|
* An image in your project, relative to the config, that replaces Bud's mark in the navigation
|
|
@@ -192,54 +362,14 @@ interface ResolvedPreviews {
|
|
|
192
362
|
css: string;
|
|
193
363
|
}
|
|
194
364
|
//#endregion
|
|
195
|
-
//#region ../project/src/lib/screens.d.ts
|
|
196
|
-
/** One destination in Bud's navigation: a built-in or a Remix component module in the project. */
|
|
197
|
-
interface BudScreen {
|
|
198
|
-
id: string;
|
|
199
|
-
label: string;
|
|
200
|
-
/** A Bud icon name; defaults to `layers`. */
|
|
201
|
-
icon?: string;
|
|
202
|
-
/** One static segment such as `/metrics`; defaults to `/${id}`. */
|
|
203
|
-
path?: string;
|
|
204
|
-
/** `./`-relative to the project root (`.ts`, `.tsx`, `.js`, `.jsx`), or a `bud:` built-in. */
|
|
205
|
-
module: string;
|
|
206
|
-
/** Optional route metadata shared with defineScreen; checked before the server listens. */
|
|
207
|
-
routes?: RouteMap;
|
|
208
|
-
}
|
|
209
|
-
/** A validated screen with every field filled in. */
|
|
210
|
-
type ResolvedScreen = Required<Omit<BudScreen, "routes">> & {
|
|
211
|
-
routes?: RouteMap;
|
|
212
|
-
};
|
|
213
|
-
/**
|
|
214
|
-
* Bud's browser of your live pages, with their comments.
|
|
215
|
-
* @returns The built-in screen, ready to relabel by spreading.
|
|
216
|
-
*/
|
|
217
|
-
declare function pages(): ResolvedScreen;
|
|
218
|
-
/**
|
|
219
|
-
* Bud's canvas of every route's screenshot.
|
|
220
|
-
* @returns The built-in screen, ready to relabel by spreading.
|
|
221
|
-
*/
|
|
222
|
-
declare function canvas(): ResolvedScreen;
|
|
223
|
-
/**
|
|
224
|
-
* Bud's Beads task board.
|
|
225
|
-
* @returns The built-in screen, ready to relabel by spreading.
|
|
226
|
-
*/
|
|
227
|
-
declare function tasks(): ResolvedScreen;
|
|
228
|
-
/**
|
|
229
|
-
* Bud's file browser and review.
|
|
230
|
-
* @returns The built-in screen, ready to relabel by spreading.
|
|
231
|
-
*/
|
|
232
|
-
declare function files(): ResolvedScreen;
|
|
233
|
-
//#endregion
|
|
234
365
|
//#region ../project/src/lib/storage.d.ts
|
|
235
|
-
/**
|
|
366
|
+
/** Turns stores off; the stores themselves come from plugins. */
|
|
236
367
|
interface BudStorage {
|
|
237
|
-
work?:
|
|
238
|
-
threads?:
|
|
368
|
+
work?: false;
|
|
369
|
+
threads?: false;
|
|
239
370
|
}
|
|
240
371
|
/** Presentation modules are separate from the server modules that own storage. */
|
|
241
372
|
interface BudDesigns {
|
|
242
|
-
tasks?: string;
|
|
243
373
|
/**
|
|
244
374
|
* How the Pages sidebar names a page: by its path alone (`path`, the default) or by its title
|
|
245
375
|
* with its path beside it (`title`).
|
|
@@ -329,9 +459,14 @@ interface BudConfig {
|
|
|
329
459
|
* disable it.
|
|
330
460
|
*/
|
|
331
461
|
screens?: BudScreen[];
|
|
332
|
-
/**
|
|
462
|
+
/**
|
|
463
|
+
* What extends Bud, as in Vite: stores, a picker, a task design, screens, the factory's sandbox
|
|
464
|
+
* and agent, each from its package, such as `beads()` from `@bud.sh/beads`.
|
|
465
|
+
*/
|
|
466
|
+
plugins?: BudPluginOption[];
|
|
467
|
+
/** Turns a store off: `{ work: false }` hides Tasks' data, `{ threads: false }` comments. */
|
|
333
468
|
storage?: BudStorage;
|
|
334
|
-
/**
|
|
469
|
+
/** How the Pages sidebar names pages; the task design comes from a plugin. */
|
|
335
470
|
designs?: BudDesigns;
|
|
336
471
|
/** Screenshot density and color schemes for the canvas. */
|
|
337
472
|
previews?: BudPreviews;
|
|
@@ -350,10 +485,12 @@ interface BudConfig {
|
|
|
350
485
|
/** The language of Bud's interface: `en` (the default) or `de`. */
|
|
351
486
|
locale?: "en" | "de";
|
|
352
487
|
/**
|
|
353
|
-
*
|
|
354
|
-
*
|
|
488
|
+
* The software factory, off by default: `{}` turns it on with Beads' status names, and
|
|
489
|
+
* `statuses` maps its steps to your task store's statuses.
|
|
355
490
|
*/
|
|
356
|
-
|
|
491
|
+
factory?: BudFactory | false;
|
|
492
|
+
/** Moved into plugins, such as `reactGrab()` from `@bud.sh/picker-react-grab`. */
|
|
493
|
+
picker?: never;
|
|
357
494
|
/**
|
|
358
495
|
* Branches the canvas captures beside the working tree: main always, others once activated in
|
|
359
496
|
* its sidebar, each built from its latest commit outside your checkout.
|
|
@@ -410,8 +547,9 @@ interface ResolvedBudConfig {
|
|
|
410
547
|
logo: ResolvedLogo | null;
|
|
411
548
|
theme: ResolvedTheme;
|
|
412
549
|
locale: "en" | "de";
|
|
550
|
+
factory: ResolvedFactory | null;
|
|
413
551
|
picker: ResolvedPicker;
|
|
414
552
|
branches: ResolvedBranches;
|
|
415
553
|
}
|
|
416
554
|
//#endregion
|
|
417
|
-
export { defineConfig as a,
|
|
555
|
+
export { defineConfig as a, taskDesign as c, files as d, pages as f, ResolvedBudConfig as i, BudScreen as l, BudTheme as m, BudRoute as n, BudPluginBase as o, tasks as p, ProjectInfo as r, picker as s, BudConfig as t, canvas as u };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as ResolvedBudConfig } from "./config-
|
|
1
|
+
import { i as ResolvedBudConfig } from "./config-CvcYmE2s.js";
|
|
2
2
|
//#region app/server/hosted/contract.d.ts
|
|
3
3
|
/** How a hosted Bud's captures stand, as its host reports them. */
|
|
4
4
|
interface RemoteBranchState {
|
|
@@ -74,6 +74,43 @@ interface HostedAppOptions {
|
|
|
74
74
|
* restarts its server keeps it, so open pages keep working.
|
|
75
75
|
*/
|
|
76
76
|
token?: string;
|
|
77
|
+
/** What the factory's runs need from the host; without it, tasks can't be started. */
|
|
78
|
+
factory?: HostedFactory;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The host's part in factory runs on boat.dev: keys from its secrets, where the project is cloned
|
|
82
|
+
* from, and how to tell a merge. The host calls `tick` regularly while runs are going.
|
|
83
|
+
*/
|
|
84
|
+
interface HostedFactory {
|
|
85
|
+
/** The boat.dev API key. */
|
|
86
|
+
boatToken: string;
|
|
87
|
+
/** The project's HTTPS clone URL, without credentials. */
|
|
88
|
+
repository: string;
|
|
89
|
+
/** Git credentials for cloning; they reach only the clone command. */
|
|
90
|
+
clone?: {
|
|
91
|
+
username: string;
|
|
92
|
+
token: string;
|
|
93
|
+
} | null;
|
|
94
|
+
/** A token that may push the runs' branches, with `factory.push.username`; or none yet. */
|
|
95
|
+
pushToken?: string | null;
|
|
96
|
+
/** The secret agents' per-run passwords are derived from; the same across restarts. */
|
|
97
|
+
secret: string;
|
|
98
|
+
/** Values the model needs in the sandbox, such as its key, by name. */
|
|
99
|
+
keys?: Record<string, string>;
|
|
100
|
+
/** Whether the project's main branch contains a commit, through the Git host. */
|
|
101
|
+
merged?(commit: string): Promise<boolean>;
|
|
102
|
+
/**
|
|
103
|
+
* This Bud's public origin, such as its workers.dev URL, where agents in sandboxes read the
|
|
104
|
+
* task database; without it, agents go without.
|
|
105
|
+
*/
|
|
106
|
+
tools?: string;
|
|
107
|
+
}
|
|
108
|
+
/** Where a hosted Bud's runs stand after a tick, so the host knows when to tick again. */
|
|
109
|
+
interface HostedFactoryTick {
|
|
110
|
+
/** A run is setting up, working or pushing: tick again soon. */
|
|
111
|
+
busy: boolean;
|
|
112
|
+
/** A pushed run waits for its merge: tick again in a while. */
|
|
113
|
+
waiting: boolean;
|
|
77
114
|
}
|
|
78
115
|
/** The part of a D1 database the Beads store uses. */
|
|
79
116
|
interface HostedDatabase {
|
|
@@ -99,6 +136,11 @@ interface HostedRequestContext {
|
|
|
99
136
|
interface HostedApp {
|
|
100
137
|
/** Answers one request to Bud, already authenticated by the host. */
|
|
101
138
|
fetch(request: Request, context?: HostedRequestContext): Promise<Response>;
|
|
139
|
+
/**
|
|
140
|
+
* Carries the factory's runs on: picks up runs a restart left, follows agents and checks pushed
|
|
141
|
+
* runs for a merge. Safe to call at any time.
|
|
142
|
+
*/
|
|
143
|
+
tick(): Promise<HostedFactoryTick>;
|
|
102
144
|
/** Stops its services. */
|
|
103
145
|
dispose(): Promise<void>;
|
|
104
146
|
}
|
|
@@ -110,4 +152,4 @@ type CreateHostedApp = (options: HostedAppOptions) => HostedApp;
|
|
|
110
152
|
*/
|
|
111
153
|
declare const hostedScreenModules: readonly string[];
|
|
112
154
|
//#endregion
|
|
113
|
-
export { HostedAuthor as a,
|
|
155
|
+
export { HostedAuthor as a, HostedFactoryTick as c, RemoteBranchState as d, hostedScreenModules as f, HostedAppOptions as i, HostedRequestContext as l, CreateHostedApp as n, HostedDatabase as o, HostedApp as r, HostedFactory as s, BranchRemote as t, HostedStorage as u };
|
|
@@ -126,6 +126,16 @@ interface WorkItemRef {
|
|
|
126
126
|
}
|
|
127
127
|
/** A field's value: JSON, or the people or items a person or relation field holds. */
|
|
128
128
|
type WorkValue = JsonValue | WorkPerson | WorkPerson[] | WorkItemRef | WorkItemRef[];
|
|
129
|
+
/**
|
|
130
|
+
* Where a factory run on the item is, for a board badge: its state, and its error when it failed.
|
|
131
|
+
* The run itself is read through the factory API.
|
|
132
|
+
*/
|
|
133
|
+
interface WorkRunSummary {
|
|
134
|
+
state: string;
|
|
135
|
+
error: string | null;
|
|
136
|
+
/** Whether the run's sandbox sleeps while the run waits. */
|
|
137
|
+
asleep?: boolean;
|
|
138
|
+
}
|
|
129
139
|
/** One task, with values keyed by its adapter's declared fields. */
|
|
130
140
|
interface WorkItem {
|
|
131
141
|
id: string;
|
|
@@ -145,6 +155,7 @@ interface WorkItem {
|
|
|
145
155
|
};
|
|
146
156
|
ready?: boolean;
|
|
147
157
|
closeable?: boolean;
|
|
158
|
+
run?: WorkRunSummary;
|
|
148
159
|
/** False for a brief item, which may leave out long Markdown fields. */
|
|
149
160
|
contentLoaded: boolean;
|
|
150
161
|
/** Adapter data outside the declared fields. */
|
|
@@ -265,4 +276,4 @@ interface WorkSyncResult extends WorkSync {
|
|
|
265
276
|
*/
|
|
266
277
|
declare function valueByRole(item: WorkItem, schema: WorkSchema, role: FieldRole): WorkValue | undefined;
|
|
267
278
|
//#endregion
|
|
268
|
-
export {
|
|
279
|
+
export { fieldByRole as C, WorkSchema as S, MessageAuthor as _, WorkDetail as a, StatusCategory as b, WorkPatch as c, WorkSync as d, WorkSyncResult as f, Message as g, valueByRole as h, WorkCreate as i, WorkQuery as l, WorkValue as m, WorkActionInput as n, WorkItem as o, WorkUpdate as p, WorkConnection as r, WorkMutationResult as s, SectionData as t, WorkSnapshot as u, FieldKind as v, JsonValue as w, StatusSchema as x, FieldSchema as y };
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { S as WorkSchema, _ as MessageAuthor, a as WorkDetail, b as StatusCategory, c as WorkPatch, d as WorkSync, f as WorkSyncResult, g as Message, i as WorkCreate, l as WorkQuery, o as WorkItem, r as WorkConnection, s as WorkMutationResult, t as SectionData, u as WorkSnapshot, w as JsonValue } from "./items-BQdaVksf.js";
|
|
2
|
+
import { t as CanvasAnchor } from "./canvas-anchor-CYU3qBPx.js";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as Cause from "effect/Cause";
|
|
5
|
+
import * as Context from "effect/Context";
|
|
6
|
+
import * as Stream from "effect/Stream";
|
|
7
|
+
//#region ../work/src/lib/code-anchor.d.ts
|
|
8
|
+
/**
|
|
9
|
+
* A code comment's place: an inclusive line range of one file version, with the selected lines and
|
|
10
|
+
* up to three lines on each side, so it can be found again after the file changes.
|
|
11
|
+
*/
|
|
12
|
+
interface CodeAnchor {
|
|
13
|
+
readonly type: "code";
|
|
14
|
+
readonly version: 1;
|
|
15
|
+
readonly path: string;
|
|
16
|
+
/** Complete-byte SHA-256 supplied by the Files service, not a mutable branch name. */
|
|
17
|
+
readonly revision: string;
|
|
18
|
+
/** The commit the lines come from, or `null` for uncommitted changes. */
|
|
19
|
+
readonly commit: string | null;
|
|
20
|
+
/** Which side of a diff the lines are on. */
|
|
21
|
+
readonly side: "old" | "new";
|
|
22
|
+
readonly startLine: number;
|
|
23
|
+
readonly endLine: number;
|
|
24
|
+
readonly context: {
|
|
25
|
+
readonly before: readonly string[];
|
|
26
|
+
readonly selected: readonly string[];
|
|
27
|
+
readonly after: readonly string[];
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
//#region ../work/src/lib/threads.d.ts
|
|
32
|
+
declare const threadStatuses: readonly ["open", "in_progress", "needs_approval", "resolved"];
|
|
33
|
+
/** Where a discussion is in its lifecycle. */
|
|
34
|
+
type ThreadStatus = (typeof threadStatuses)[number];
|
|
35
|
+
/** Where a discussion is attached: a page capture or a code capture. */
|
|
36
|
+
type Anchor = CanvasAnchor | CodeAnchor;
|
|
37
|
+
/** A discussion shared by page captures, code captures and linked work items. */
|
|
38
|
+
interface Thread {
|
|
39
|
+
id: string;
|
|
40
|
+
status: ThreadStatus;
|
|
41
|
+
anchor: Anchor | null;
|
|
42
|
+
itemIds: string[];
|
|
43
|
+
messages: Message[];
|
|
44
|
+
messageCount: number;
|
|
45
|
+
messagesLoaded: boolean;
|
|
46
|
+
messagesTruncated: boolean;
|
|
47
|
+
createdAt: string;
|
|
48
|
+
updatedAt: string;
|
|
49
|
+
revision: string | null;
|
|
50
|
+
/** Adapter metadata, including stable source identity for imported discussions. */
|
|
51
|
+
metadata?: JsonValue;
|
|
52
|
+
}
|
|
53
|
+
/** Which discussion operations an adapter supports. */
|
|
54
|
+
interface ThreadCapabilities {
|
|
55
|
+
create: boolean;
|
|
56
|
+
reply: boolean;
|
|
57
|
+
status: boolean;
|
|
58
|
+
link: boolean;
|
|
59
|
+
sync: boolean;
|
|
60
|
+
edit: boolean;
|
|
61
|
+
delete: boolean;
|
|
62
|
+
}
|
|
63
|
+
/** The discussions an adapter lists, with its connection and capabilities. */
|
|
64
|
+
interface ThreadSnapshot {
|
|
65
|
+
connection: WorkConnection;
|
|
66
|
+
capabilities: ThreadCapabilities;
|
|
67
|
+
threads: Thread[];
|
|
68
|
+
truncated: boolean;
|
|
69
|
+
}
|
|
70
|
+
/** A new discussion: its first message and where it is attached. */
|
|
71
|
+
interface ThreadInput {
|
|
72
|
+
anchor: Anchor | null;
|
|
73
|
+
itemIds: string[];
|
|
74
|
+
body: string;
|
|
75
|
+
}
|
|
76
|
+
/** A reply, posted only while the discussion is still at `expectedRevision`. */
|
|
77
|
+
interface ThreadReplyInput {
|
|
78
|
+
body: string;
|
|
79
|
+
parentId: string | null;
|
|
80
|
+
expectedRevision: string;
|
|
81
|
+
}
|
|
82
|
+
/** A message to delete, deleted only while the discussion is still at `expectedRevision`. */
|
|
83
|
+
interface ThreadDeleteInput {
|
|
84
|
+
messageId: string;
|
|
85
|
+
expectedRevision: string;
|
|
86
|
+
}
|
|
87
|
+
/** Which discussions a list returns: by anchor kind, page or linked item. */
|
|
88
|
+
interface ThreadFilter {
|
|
89
|
+
anchorKind?: "canvas" | "code";
|
|
90
|
+
pagePath?: string;
|
|
91
|
+
itemId?: string;
|
|
92
|
+
}
|
|
93
|
+
//#endregion
|
|
94
|
+
//#region ../work/src/server/errors.d.ts
|
|
95
|
+
/**
|
|
96
|
+
* Why a work or thread operation failed. `uncertain` means a write may have applied; callers must
|
|
97
|
+
* not retry it automatically.
|
|
98
|
+
*/
|
|
99
|
+
type WorkFailureReason = "input" | "unavailable" | "not-found" | "conflict" | "refused" | "timeout" | "uncertain" | "storage";
|
|
100
|
+
interface WorkErrorFields {
|
|
101
|
+
readonly reason: WorkFailureReason;
|
|
102
|
+
readonly message: string;
|
|
103
|
+
readonly operation?: string;
|
|
104
|
+
readonly currentRevision?: string | null;
|
|
105
|
+
readonly cause?: unknown;
|
|
106
|
+
}
|
|
107
|
+
declare const WorkErrorBase: new (fields: WorkErrorFields) => Cause.YieldableError & WorkErrorFields & {
|
|
108
|
+
readonly _tag: "WorkError";
|
|
109
|
+
};
|
|
110
|
+
/** Safe messages cross the HTTP boundary; diagnostics and credentials do not. */
|
|
111
|
+
declare class WorkError extends WorkErrorBase {}
|
|
112
|
+
//#endregion
|
|
113
|
+
//#region ../work/src/server/import.d.ts
|
|
114
|
+
/**
|
|
115
|
+
* Trusted history from another store, keyed by its source identity; never part of a browser create
|
|
116
|
+
* or reply request.
|
|
117
|
+
*/
|
|
118
|
+
interface ThreadImportInput {
|
|
119
|
+
source: string;
|
|
120
|
+
sourceId: string;
|
|
121
|
+
thread: Thread;
|
|
122
|
+
}
|
|
123
|
+
/** The imported discussion, and whether this import created it or found it already there. */
|
|
124
|
+
interface ThreadImportResult {
|
|
125
|
+
outcome: "created" | "existing";
|
|
126
|
+
thread: Thread;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Validates complete source history before a server-side migration writes anything.
|
|
130
|
+
* @param value - The source identity and fully loaded discussion.
|
|
131
|
+
* @returns Complete, byte-bounded history, independent of the browser's message-count limit.
|
|
132
|
+
*/
|
|
133
|
+
declare function parseThreadImport(value: unknown): ThreadImportInput;
|
|
134
|
+
//#endregion
|
|
135
|
+
//#region ../work/src/server/services.d.ts
|
|
136
|
+
/** Read-only operations bound to one request's project and resource lifetime. */
|
|
137
|
+
interface WorkReader {
|
|
138
|
+
readonly describe: Effect.Effect<WorkConnection, WorkError>;
|
|
139
|
+
readonly schema: Effect.Effect<WorkSchema, WorkError>;
|
|
140
|
+
readonly list: (query: WorkQuery) => Effect.Effect<WorkSnapshot, WorkError>;
|
|
141
|
+
readonly get: (id: string) => Effect.Effect<WorkDetail, WorkError>;
|
|
142
|
+
readonly section: (id: string, sectionId: string) => Effect.Effect<SectionData, WorkError>;
|
|
143
|
+
}
|
|
144
|
+
/** Keys under which Bud keeps its own records on a work item, such as the factory's run. */
|
|
145
|
+
type ItemDataKey = "budRun" | "budContext";
|
|
146
|
+
interface WorkAdapterOperations {
|
|
147
|
+
/** Optional request composition; readers cannot write or outlive the callback. */
|
|
148
|
+
readonly read?: <A, E>(root: string, operation: (reader: WorkReader) => Effect.Effect<A, E>) => Effect.Effect<A, E | WorkError>;
|
|
149
|
+
readonly describe: (root: string) => Effect.Effect<WorkConnection, WorkError>;
|
|
150
|
+
readonly schema: (root: string) => Effect.Effect<WorkSchema, WorkError>;
|
|
151
|
+
readonly list: (root: string, query: WorkQuery) => Effect.Effect<WorkSnapshot, WorkError>;
|
|
152
|
+
readonly get: (root: string, id: string) => Effect.Effect<WorkDetail, WorkError>;
|
|
153
|
+
readonly section: (root: string, id: string, sectionId: string) => Effect.Effect<SectionData, WorkError>;
|
|
154
|
+
readonly create: (root: string, input: WorkCreate) => Effect.Effect<WorkMutationResult, WorkError>;
|
|
155
|
+
/**
|
|
156
|
+
* Reads a record Bud keeps on an item under a reserved key, with the item's revision. A store
|
|
157
|
+
* that implements it also implements `writeItemData`; the record is hidden from the item's
|
|
158
|
+
* own fields and kept when they're edited.
|
|
159
|
+
*/
|
|
160
|
+
readonly readItemData?: (root: string, id: string, key: ItemDataKey) => Effect.Effect<{
|
|
161
|
+
value: JsonValue | null;
|
|
162
|
+
revision: string | null;
|
|
163
|
+
}, WorkError>;
|
|
164
|
+
/** Replaces (or, with null, removes) such a record while the item is at `expectedRevision`. */
|
|
165
|
+
readonly writeItemData?: (root: string, id: string, key: ItemDataKey, value: JsonValue | null, expectedRevision: string) => Effect.Effect<{
|
|
166
|
+
revision: string | null;
|
|
167
|
+
}, WorkError>;
|
|
168
|
+
/**
|
|
169
|
+
* Adds lifecycle statuses the store doesn't have yet, keeping its own and their order; a
|
|
170
|
+
* status it already has stays as it is. Stores whose statuses are fixed leave it out.
|
|
171
|
+
*/
|
|
172
|
+
readonly addStatuses?: (root: string, statuses: readonly {
|
|
173
|
+
readonly value: string;
|
|
174
|
+
readonly category: StatusCategory;
|
|
175
|
+
}[]) => Effect.Effect<void, WorkError>;
|
|
176
|
+
readonly update: (root: string, id: string, patch: WorkPatch, expectedRevision: string) => Effect.Effect<WorkMutationResult, WorkError>;
|
|
177
|
+
readonly act: (root: string, id: string, actionId: string, input: WorkPatch, expectedRevision: string) => Effect.Effect<WorkMutationResult, WorkError>;
|
|
178
|
+
readonly sync?: (root: string, direction: WorkSync["direction"]) => Effect.Effect<WorkSyncResult, WorkError>;
|
|
179
|
+
/**
|
|
180
|
+
* Signals stored changes, including ones made outside Bud such as an agent using the
|
|
181
|
+
* store's CLI. Without it, open views follow only Bud's own writes.
|
|
182
|
+
*/
|
|
183
|
+
readonly watch?: (root: string) => Stream.Stream<void, WorkError>;
|
|
184
|
+
}
|
|
185
|
+
declare const WorkAdapterBase: Context.ServiceClass<WorkAdapter, "@bud.sh/work/WorkAdapter", WorkAdapterOperations>;
|
|
186
|
+
/** A backend's work items. Run programs at a request boundary with its AbortSignal. */
|
|
187
|
+
declare class WorkAdapter extends WorkAdapterBase {}
|
|
188
|
+
interface ThreadAdapterOperations {
|
|
189
|
+
/** Server-only migration; browser requests cannot supply stored authors or timestamps. */
|
|
190
|
+
readonly import?: (root: string, input: ThreadImportInput) => Effect.Effect<ThreadImportResult, WorkError>;
|
|
191
|
+
readonly list: (root: string, filter: ThreadFilter) => Effect.Effect<ThreadSnapshot, WorkError>;
|
|
192
|
+
readonly get: (root: string, id: string) => Effect.Effect<Thread, WorkError>;
|
|
193
|
+
readonly create: (root: string, input: ThreadInput, author: MessageAuthor) => Effect.Effect<Thread, WorkError>;
|
|
194
|
+
readonly reply: (root: string, id: string, input: ThreadReplyInput, author: MessageAuthor) => Effect.Effect<Thread, WorkError>;
|
|
195
|
+
readonly setStatus: (root: string, id: string, status: ThreadStatus, expectedRevision: string) => Effect.Effect<Thread, WorkError>;
|
|
196
|
+
readonly link: (root: string, id: string, itemIds: string[], expectedRevision: string) => Effect.Effect<Thread, WorkError>;
|
|
197
|
+
readonly unlink: (root: string, id: string, itemIds: string[], expectedRevision: string) => Effect.Effect<Thread, WorkError>;
|
|
198
|
+
readonly sync?: (root: string, direction?: WorkSync["direction"]) => Effect.Effect<ThreadSnapshot, WorkError>;
|
|
199
|
+
/**
|
|
200
|
+
* Deletes one of `author`'s messages; null when it was the first and the discussion is gone.
|
|
201
|
+
* Adapters that implement it report the `delete` capability.
|
|
202
|
+
*/
|
|
203
|
+
readonly deleteMessage?: (root: string, id: string, input: ThreadDeleteInput, author: MessageAuthor) => Effect.Effect<Thread | null, WorkError>;
|
|
204
|
+
/** Signals stored discussion changes, including ones made outside Bud. */
|
|
205
|
+
readonly watch?: (root: string) => Stream.Stream<void, WorkError>;
|
|
206
|
+
}
|
|
207
|
+
declare const ThreadAdapterBase: Context.ServiceClass<ThreadAdapter, "@bud.sh/work/ThreadAdapter", ThreadAdapterOperations>;
|
|
208
|
+
/** Discussions receive trusted server attribution separately from browser input. */
|
|
209
|
+
declare class ThreadAdapter extends ThreadAdapterBase {}
|
|
210
|
+
//#endregion
|
|
211
|
+
//#region ../work/src/server/memory-state.d.ts
|
|
212
|
+
/** A pure action computes a replacement; the memory adapter validates and commits it. */
|
|
213
|
+
type MemoryAction = (context: {
|
|
214
|
+
item: WorkItem;
|
|
215
|
+
input: WorkPatch;
|
|
216
|
+
schema: WorkSchema;
|
|
217
|
+
author: MessageAuthor;
|
|
218
|
+
}) => {
|
|
219
|
+
values?: WorkPatch;
|
|
220
|
+
relations?: WorkItem["relations"];
|
|
221
|
+
};
|
|
222
|
+
/** The schema, seed records and action and section implementations of an in-memory store. */
|
|
223
|
+
interface MemoryAdapterOptions {
|
|
224
|
+
schema: WorkSchema;
|
|
225
|
+
items?: readonly WorkItem[];
|
|
226
|
+
threads?: readonly Thread[];
|
|
227
|
+
/** Defaults can supply required server-owned fields without making them editable. */
|
|
228
|
+
defaults?: WorkPatch;
|
|
229
|
+
actions?: Readonly<Record<string, MemoryAction>>;
|
|
230
|
+
sections?: Readonly<Record<string, (item: WorkItem) => SectionData>>;
|
|
231
|
+
/** Trusted attribution for work-item history; thread writes supply it separately. */
|
|
232
|
+
author?: MessageAuthor;
|
|
233
|
+
threadCapabilities?: Partial<Omit<ThreadCapabilities, "edit" | "sync">>;
|
|
234
|
+
}
|
|
235
|
+
//#endregion
|
|
236
|
+
export { ThreadImportInput as a, WorkError as c, WorkReader as i, WorkFailureReason as l, ThreadAdapter as n, ThreadImportResult as o, WorkAdapter as r, parseThreadImport as s, MemoryAdapterOptions as t };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region ../project/src/lib/picker.d.ts
|
|
2
|
+
/** The picker, with the project module to serve when it is the project's own. */
|
|
3
|
+
interface ResolvedPicker {
|
|
4
|
+
name: string;
|
|
5
|
+
/** The project's own picker module, as a ./ path; null for a built-in picker. */
|
|
6
|
+
module: string | null;
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
export { ResolvedPicker as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { S as WorkSchema, a as WorkDetail, d as WorkSync, f as WorkSyncResult, i as WorkCreate, m as WorkValue, n as WorkActionInput, o as WorkItem, p as WorkUpdate, t as SectionData, u as WorkSnapshot, x as StatusSchema, y as FieldSchema } from "./items-BQdaVksf.js";
|
|
2
2
|
import { Handle, RemixNode } from "remix/component";
|
|
3
3
|
//#region ../ui/src/lib/tasks/task-card.d.ts
|
|
4
4
|
/** A task's board state and optional selection behavior. */
|
|
@@ -59,6 +59,8 @@ interface TaskDetailsProps {
|
|
|
59
59
|
operations?: TaskOperations;
|
|
60
60
|
draft?: TaskDraft;
|
|
61
61
|
onDraft?: (draft: TaskDraft) => void;
|
|
62
|
+
/** The consumer's buttons in the page's toolbar, such as opening Agent view. */
|
|
63
|
+
actions?: RemixNode;
|
|
62
64
|
}
|
|
63
65
|
/**
|
|
64
66
|
* Renders primary and secondary fields using the default properties card.
|
package/dist/types/bridge.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { t as ResolvedPicker } from "./assets/picker-Be5Gx4WR.js";
|
|
2
2
|
//#region ../picker/src/lib/module.d.ts
|
|
3
3
|
/** The picker module's ID in the project's dev server, served by Bud's Vite plugin. */
|
|
4
4
|
export declare const PICKER_MODULE_ID = "\0bud-picker";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { i as ResolvedBudConfig } from "./assets/config-
|
|
1
|
+
import { i as ResolvedBudConfig } from "./assets/config-CvcYmE2s.js";
|
|
2
2
|
//#region src/companion.d.ts
|
|
3
3
|
/**
|
|
4
|
-
* The contract between a host, such as
|
|
5
|
-
* server the app builds separately as `@bud.sh/app/companion`.
|
|
4
|
+
* The contract between a host, such as the `bud()` Vite plugin and the `bud` CLI, and the
|
|
5
|
+
* companion server the app builds separately as `@bud.sh/app/companion`.
|
|
6
6
|
*/
|
|
7
7
|
export interface StartBudOptions {
|
|
8
8
|
root: string;
|