@frehilm/ordna-web 0.1.3 → 0.2.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.
@@ -1,5 +1,15 @@
1
1
  import { type StoreContext } from "@frehilm/ordna-core";
2
2
  import { Hono } from "hono";
3
3
  import { type AgentHookConfig } from "./agent.js";
4
- export declare function buildApiRoutes(ctx: StoreContext, agentHook: AgentHookConfig | null): Hono;
4
+ /**
5
+ * Mutable handle the API routes read from at request time. Letting routes
6
+ * resolve `ctx` lazily is what makes the in-place setup → ready transition
7
+ * possible: the same Hono app is mounted once, and the API surface flips on
8
+ * as soon as `state.ctx` becomes non-null.
9
+ */
10
+ export interface ApiState {
11
+ ctx: StoreContext | null;
12
+ agentHook: AgentHookConfig | null;
13
+ }
14
+ export declare function buildApiRoutes(state: ApiState): Hono;
5
15
  //# sourceMappingURL=routes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAMN,KAAK,YAAY,EAEjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,KAAK,eAAe,EAAa,MAAM,YAAY,CAAC;AAE7D,wBAAgB,cAAc,CAC7B,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,eAAe,GAAG,IAAI,GAC/B,IAAI,CA2FN"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAQN,KAAK,YAAY,EAEjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,KAAK,eAAe,EAAa,MAAM,YAAY,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACxB,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;CAClC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CA8HpD"}
@@ -1,19 +1,47 @@
1
- import { createTask, deleteTask, getTask, listTasks, moveTask, updateTask, } from "@frehilm/ordna-core";
1
+ import { canFetch, createTask, deleteTask, fetchTasks, getTask, listTasks, moveTask, updateTask, } from "@frehilm/ordna-core";
2
2
  import { Hono } from "hono";
3
3
  import { toWireTask } from "../shared/types.js";
4
4
  import { postAgent } from "./agent.js";
5
- export function buildApiRoutes(ctx, agentHook) {
5
+ export function buildApiRoutes(state) {
6
6
  const api = new Hono();
7
- api.get("/config", (c) => c.json({
8
- ...ctx.config,
9
- agentHook: agentHook ? { enabled: true, label: agentHook.label } : null,
10
- }));
7
+ // Gate every /api/* request on a configured context. The outer gate in
8
+ // start.ts already short-circuits non-setup paths when ctx is null, so
9
+ // this is belt-and-braces but it also keeps the route handlers free
10
+ // of repeated null checks.
11
+ api.use("*", async (c, next) => {
12
+ if (!state.ctx)
13
+ return c.json({ error: "not configured" }, 503);
14
+ return next();
15
+ });
16
+ api.get("/config", (c) => {
17
+ const ctx = state.ctx;
18
+ return c.json({
19
+ ...ctx.config,
20
+ agentHook: state.agentHook
21
+ ? { enabled: true, label: state.agentHook.label }
22
+ : null,
23
+ capabilities: { fetch: canFetch(ctx) },
24
+ });
25
+ });
26
+ api.post("/fetch", async (c) => {
27
+ const ctx = state.ctx;
28
+ if (!canFetch(ctx)) {
29
+ return c.json({ error: `storage: ${ctx.backend.kind} doesn't support fetch` }, 501);
30
+ }
31
+ try {
32
+ const result = await fetchTasks(ctx);
33
+ return c.json({ ok: true, ...result });
34
+ }
35
+ catch (err) {
36
+ return c.json({ error: err.message }, 500);
37
+ }
38
+ });
11
39
  api.get("/tasks", async (c) => {
12
- const tasks = await listTasks(ctx);
40
+ const tasks = await listTasks(state.ctx);
13
41
  return c.json(tasks.map(toWireTask));
14
42
  });
15
43
  api.get("/tasks/:id", async (c) => {
16
- const task = await getTask(c.req.param("id"), ctx);
44
+ const task = await getTask(c.req.param("id"), state.ctx);
17
45
  if (!task)
18
46
  return c.json({ error: "not found" }, 404);
19
47
  return c.json(toWireTask(task));
@@ -23,14 +51,14 @@ export function buildApiRoutes(ctx, agentHook) {
23
51
  if (!body.title || body.title.trim().length === 0) {
24
52
  return c.json({ error: "title is required" }, 400);
25
53
  }
26
- const task = await createTask(body, ctx);
54
+ const task = await createTask(body, state.ctx);
27
55
  return c.json(toWireTask(task), 201);
28
56
  });
29
57
  api.patch("/tasks/:id", async (c) => {
30
58
  const id = c.req.param("id");
31
59
  const patch = await c.req.json();
32
60
  try {
33
- const task = await updateTask(id, patch, ctx);
61
+ const task = await updateTask(id, patch, state.ctx);
34
62
  return c.json(toWireTask(task));
35
63
  }
36
64
  catch (error) {
@@ -41,7 +69,7 @@ export function buildApiRoutes(ctx, agentHook) {
41
69
  const id = c.req.param("id");
42
70
  const { status } = (await c.req.json());
43
71
  try {
44
- const task = await moveTask(id, status, ctx);
72
+ const task = await moveTask(id, status, state.ctx);
45
73
  return c.json(toWireTask(task));
46
74
  }
47
75
  catch (error) {
@@ -49,13 +77,15 @@ export function buildApiRoutes(ctx, agentHook) {
49
77
  }
50
78
  });
51
79
  api.post("/tasks/:id/agent", async (c) => {
52
- if (!agentHook)
80
+ if (!state.agentHook) {
53
81
  return c.json({ error: "agent hook not configured" }, 501);
82
+ }
83
+ const ctx = state.ctx;
54
84
  const task = await getTask(c.req.param("id"), ctx);
55
85
  if (!task)
56
86
  return c.json({ error: "not found" }, 404);
57
87
  try {
58
- const result = await postAgent(agentHook, task, {
88
+ const result = await postAgent(state.agentHook, task, {
59
89
  tasksDir: ctx.config.tasksDir,
60
90
  cwd: ctx.cwd,
61
91
  schema: ctx.config.schema,
@@ -71,7 +101,7 @@ export function buildApiRoutes(ctx, agentHook) {
71
101
  });
72
102
  api.delete("/tasks/:id", async (c) => {
73
103
  try {
74
- await deleteTask(c.req.param("id"), ctx);
104
+ await deleteTask(c.req.param("id"), state.ctx);
75
105
  return c.body(null, 204);
76
106
  }
77
107
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,15 @@ export interface RunWebOptions {
15
15
  export interface RunWebHandle {
16
16
  port: number;
17
17
  close: () => Promise<void>;
18
- context: StoreContext;
18
+ /**
19
+ * The active `StoreContext` once a storage mode has been chosen. `null`
20
+ * while the server is in setup mode (no `.ordna/config.yaml` and
21
+ * detection landed on "ask"). Flips to a real context in-place after
22
+ * the user POSTs a mode to `/api/setup-mode` — no restart required.
23
+ */
24
+ context: StoreContext | null;
25
+ /** True when the server is in setup mode (see `context` above). */
26
+ needsSetup: boolean;
19
27
  }
20
28
  export declare function runWeb(options?: RunWebOptions): Promise<RunWebHandle>;
21
29
  //# sourceMappingURL=start.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/server/start.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmD,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKzG,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,YAAY,CAAC;AAIjE,MAAM,WAAW,aAAa;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,EAAE,YAAY,CAAC;CACtB;AAgBD,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CA8G/E"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/server/start.ts"],"names":[],"mappings":"AAGA,OAAO,EAIN,KAAK,YAAY,EAGjB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,YAAY,CAAC;AAIjE,MAAM,WAAW,aAAa;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B;;;;;OAKG;IACH,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,mEAAmE;IACnE,UAAU,EAAE,OAAO,CAAC;CACpB;AA+CD,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAkM/E"}
@@ -1,7 +1,7 @@
1
1
  import { serveStatic } from "@hono/node-server/serve-static";
2
2
  import { serve } from "@hono/node-server";
3
3
  import { createNodeWebSocket } from "@hono/node-ws";
4
- import { createContext as createStoreContext, watchTasks } from "@frehilm/ordna-core";
4
+ import { createContext as createStoreContext, ensureStorageConfig, NeedsModeSelection, watchTasks, writeStorageConfig, } from "@frehilm/ordna-core";
5
5
  import { existsSync } from "node:fs";
6
6
  import { dirname, join, resolve } from "node:path";
7
7
  import { fileURLToPath } from "node:url";
@@ -22,16 +22,50 @@ function resolveClientDir(clientDir) {
22
22
  }
23
23
  return null;
24
24
  }
25
+ function wireWatcher(state) {
26
+ if (!state.ctx || state.unsubscribe)
27
+ return;
28
+ state.unsubscribe = watchTasks(state.ctx, (event) => {
29
+ if (event.type === "removed") {
30
+ const id = event.filePath.split("/").pop()?.replace(/\.md$/, "") ??
31
+ event.filePath;
32
+ state.broadcast({ type: "removed", id });
33
+ }
34
+ else if (event.type === "renamed") {
35
+ state.broadcast({
36
+ type: "renamed",
37
+ oldId: event.oldId,
38
+ newId: event.newId,
39
+ task: toWireTask(event.task),
40
+ });
41
+ }
42
+ else {
43
+ state.broadcast({ type: event.type, task: toWireTask(event.task) });
44
+ }
45
+ });
46
+ }
25
47
  export async function runWeb(options = {}) {
26
- const ctx = createStoreContext(options.cwd);
27
- const port = options.port ?? ctx.config.webPort;
48
+ const cwd = options.cwd ?? process.cwd();
28
49
  const host = options.host ?? "127.0.0.1";
29
- const app = new Hono();
30
- const { injectWebSocket, upgradeWebSocket } = createNodeWebSocket({ app });
31
- const agentHook = options.agentHook === null
32
- ? null
33
- : options.agentHook ?? loadAgentHook();
34
- app.route("/api", buildApiRoutes(ctx, agentHook));
50
+ // Bootstrap context if config exists or detection lands on a confident
51
+ // mode. If detection lands on "ask", we still listen the gate
52
+ // middleware serves the setup page until the user POSTs a mode.
53
+ let initialCtx = null;
54
+ let reason = "";
55
+ try {
56
+ await ensureStorageConfig(cwd);
57
+ initialCtx = createStoreContext(cwd);
58
+ }
59
+ catch (err) {
60
+ if (err instanceof NeedsModeSelection) {
61
+ reason = err.reason;
62
+ }
63
+ else {
64
+ throw err;
65
+ }
66
+ }
67
+ const port = options.port ?? initialCtx?.config.webPort ?? 7420;
68
+ const agentHook = options.agentHook === null ? null : (options.agentHook ?? loadAgentHook());
35
69
  const clients = new Set();
36
70
  const broadcast = (event) => {
37
71
  const data = JSON.stringify(event);
@@ -44,15 +78,50 @@ export async function runWeb(options = {}) {
44
78
  }
45
79
  }
46
80
  };
47
- const unsubscribe = watchTasks(ctx, (event) => {
48
- if (event.type === "removed") {
49
- const id = event.filePath.split("/").pop()?.replace(/\.md$/, "") ?? event.filePath;
50
- broadcast({ type: "removed", id });
81
+ const state = {
82
+ cwd,
83
+ ctx: initialCtx,
84
+ agentHook,
85
+ unsubscribe: null,
86
+ reason,
87
+ clients,
88
+ broadcast,
89
+ };
90
+ if (state.ctx)
91
+ wireWatcher(state);
92
+ const app = new Hono();
93
+ const { injectWebSocket, upgradeWebSocket } = createNodeWebSocket({ app });
94
+ // Setup gate: when no ctx, short-circuit every request with the setup
95
+ // page (except the POST that writes the config). Once state.ctx flips
96
+ // to a real context, this gate falls through and the regular API /
97
+ // websocket / static routes take over.
98
+ app.use("*", async (c, next) => {
99
+ if (state.ctx !== null)
100
+ return next();
101
+ const path = c.req.path;
102
+ if (c.req.method === "POST" && path === "/api/setup-mode")
103
+ return next();
104
+ if (path === "/favicon.ico")
105
+ return c.notFound();
106
+ return c.html(setupPage(state.reason));
107
+ });
108
+ app.post("/api/setup-mode", async (c) => {
109
+ if (state.ctx !== null) {
110
+ return c.text("Already configured.", 400);
51
111
  }
52
- else {
53
- broadcast({ type: event.type, task: toWireTask(event.task) });
112
+ const body = await c.req.parseBody();
113
+ const storage = body.storage;
114
+ if (storage !== "file" &&
115
+ storage !== "hybrid" &&
116
+ storage !== "namespace") {
117
+ return c.text("Invalid storage mode", 400);
54
118
  }
119
+ writeStorageConfig(state.cwd, storage);
120
+ state.ctx = createStoreContext(state.cwd);
121
+ wireWatcher(state);
122
+ return c.html(savedPage(storage));
55
123
  });
124
+ app.route("/api", buildApiRoutes(state));
56
125
  app.get("/ws", upgradeWebSocket(() => ({
57
126
  onOpen(_evt, ws) {
58
127
  const client = { send: (data) => ws.send(data) };
@@ -60,7 +129,8 @@ export async function runWeb(options = {}) {
60
129
  ws._ordnaClient = client;
61
130
  },
62
131
  onClose(_evt, ws) {
63
- const client = ws._ordnaClient;
132
+ const client = ws
133
+ ._ordnaClient;
64
134
  if (client)
65
135
  clients.delete(client);
66
136
  },
@@ -94,21 +164,124 @@ export async function runWeb(options = {}) {
94
164
  if (options.openBrowser) {
95
165
  const url = `http://${host}:${actualPort}`;
96
166
  const { spawn } = await import("node:child_process");
97
- const opener = process.platform === "darwin" ? "open" : process.platform === "win32" ? "start" : "xdg-open";
98
167
  try {
99
- spawn(opener, [url], { stdio: "ignore", detached: true }).unref();
168
+ let child;
169
+ if (process.platform === "win32") {
170
+ // `start` is a cmd.exe builtin, not a PATH binary, so
171
+ // `spawn("start", ...)` fails with ENOENT. Invoke it
172
+ // through cmd. The empty "" is `start`'s window-title
173
+ // argument; without it, the URL is consumed as the
174
+ // title and no browser opens.
175
+ child = spawn("cmd", ["/c", "start", "", url], {
176
+ stdio: "ignore",
177
+ detached: true,
178
+ windowsHide: true,
179
+ });
180
+ }
181
+ else {
182
+ const opener = process.platform === "darwin" ? "open" : "xdg-open";
183
+ child = spawn(opener, [url], {
184
+ stdio: "ignore",
185
+ detached: true,
186
+ });
187
+ }
188
+ // ENOENT and other spawn failures fire async as `error`
189
+ // events on the child process, not as thrown exceptions —
190
+ // without this listener Node's default action is to crash
191
+ // the parent process. Best-effort: swallow.
192
+ child.on("error", () => {
193
+ // e.g. xdg-open not installed; user can open the URL manually.
194
+ });
195
+ child.unref();
100
196
  }
101
197
  catch {
102
- // Best-effort; ignore.
198
+ // Belt-and-suspenders for the rare case where spawn throws
199
+ // synchronously (extremely uncommon).
103
200
  }
104
201
  }
105
202
  const close = async () => {
106
- await unsubscribe();
203
+ if (state.unsubscribe)
204
+ await state.unsubscribe();
107
205
  const s = server;
108
206
  s.closeIdleConnections?.();
109
207
  s.closeAllConnections?.();
110
208
  await new Promise((r) => s.close(() => r()));
111
209
  };
112
- return { port: actualPort, close, context: ctx };
210
+ return {
211
+ port: actualPort,
212
+ close,
213
+ get context() {
214
+ return state.ctx;
215
+ },
216
+ get needsSetup() {
217
+ return state.ctx === null;
218
+ },
219
+ };
220
+ }
221
+ function setupPage(reason) {
222
+ return `<!doctype html>
223
+ <html lang="en">
224
+ <head>
225
+ <meta charset="utf-8" />
226
+ <title>Ordna setup</title>
227
+ <style>
228
+ body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; max-width: 640px; margin: 4rem auto; padding: 0 1.5rem; color: #1a1a1a; line-height: 1.5; }
229
+ h1 { font-size: 1.5rem; margin-bottom: 0.25rem; }
230
+ p.lede { color: #666; margin-top: 0; }
231
+ fieldset { border: 1px solid #ddd; border-radius: 6px; padding: 1rem 1.25rem; margin: 1.5rem 0; }
232
+ legend { font-weight: 600; padding: 0 0.5rem; }
233
+ label { display: block; padding: 0.5rem 0; cursor: pointer; }
234
+ label code { background: #f3f3f6; padding: 1px 6px; border-radius: 3px; font-size: 0.9rem; }
235
+ label small { display: block; color: #666; margin-left: 1.6rem; margin-top: 0.15rem; }
236
+ button { background: #2563eb; color: white; border: 0; padding: 0.6rem 1.2rem; border-radius: 6px; cursor: pointer; font-size: 1rem; }
237
+ button:hover { background: #1d4ed8; }
238
+ </style>
239
+ </head>
240
+ <body>
241
+ <h1>Ordna setup</h1>
242
+ <p class="lede">${escapeHtml(reason)}</p>
243
+ <form method="post" action="/api/setup-mode">
244
+ <fieldset>
245
+ <legend>Pick a storage mode</legend>
246
+ <label><input type="radio" name="storage" value="file" checked /> <code>file</code> <small>Tasks as markdown in <code>tasks/</code> (default, recommended)</small></label>
247
+ <label><input type="radio" name="storage" value="hybrid" /> <code>hybrid</code> <small>Tasks as files + synced ID allocator + audit log in git</small></label>
248
+ <label><input type="radio" name="storage" value="namespace" /> <code>namespace</code> <small>Tasks as git refs; working tree stays clean</small></label>
249
+ </fieldset>
250
+ <button type="submit">Save and continue</button>
251
+ </form>
252
+ </body>
253
+ </html>`;
254
+ }
255
+ function savedPage(mode) {
256
+ return `<!doctype html>
257
+ <html lang="en">
258
+ <head>
259
+ <meta charset="utf-8" />
260
+ <title>Ordna ready</title>
261
+ <meta http-equiv="refresh" content="1; url=/" />
262
+ <style>
263
+ body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; max-width: 640px; margin: 4rem auto; padding: 0 1.5rem; color: #1a1a1a; line-height: 1.5; }
264
+ h1 { font-size: 1.5rem; margin-bottom: 0.25rem; }
265
+ .done { background: #dcfce7; border: 1px solid #86efac; padding: 1rem 1.25rem; border-radius: 6px; }
266
+ .done p { margin: 0.25rem 0; }
267
+ a { color: #2563eb; }
268
+ </style>
269
+ </head>
270
+ <body>
271
+ <h1>Ordna setup</h1>
272
+ <div class="done">
273
+ <p><strong>Storage mode set to <code>${escapeHtml(mode)}</code>.</strong></p>
274
+ <p>Loading the board… <a href="/">click here</a> if you're not redirected.</p>
275
+ </div>
276
+ </body>
277
+ </html>`;
278
+ }
279
+ function escapeHtml(s) {
280
+ return s
281
+ .replace(/&/g, "&amp;")
282
+ .replace(/</g, "&lt;")
283
+ .replace(/>/g, "&gt;")
284
+ .replace(/"/g, "&quot;")
285
+ .replace(/'/g, "&#39;");
113
286
  }
114
287
  //# sourceMappingURL=start.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/server/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/server/start.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,18 @@ export interface AgentHookInfo {
4
4
  enabled: boolean;
5
5
  label: string;
6
6
  }
7
+ export interface UiCapabilities {
8
+ fetch: boolean;
9
+ }
7
10
  export type UiConfig = OrdnaConfig & {
8
11
  agentHook: AgentHookInfo | null;
12
+ capabilities: UiCapabilities;
9
13
  };
14
+ export interface FetchResponse {
15
+ ok: true;
16
+ refsUpdated: number;
17
+ durationMs: number;
18
+ }
10
19
  export type WireTask = Omit<Task, "rawContent">;
11
20
  export type WsEvent = {
12
21
  type: "added";
@@ -17,6 +26,11 @@ export type WsEvent = {
17
26
  } | {
18
27
  type: "removed";
19
28
  id: string;
29
+ } | {
30
+ type: "renamed";
31
+ oldId: string;
32
+ newId: string;
33
+ task: WireTask;
20
34
  };
21
35
  export declare function toWireTask(task: Task): WireTask;
22
36
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE/F,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG;IACpC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAEhD,MAAM,MAAM,OAAO,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ,CAG/C"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE/F,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,OAAO,CAAC;CACf;AAED,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG;IACpC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,cAAc,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,aAAa;IAC7B,EAAE,EAAE,IAAI,CAAC;IACT,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAEhD,MAAM,MAAM,OAAO,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAErE,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ,CAG/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAoBA,MAAM,UAAU,UAAU,CAAC,IAAU;IACpC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAClD,OAAO,IAAI,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAgCA,MAAM,UAAU,UAAU,CAAC,IAAU;IACpC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAClD,OAAO,IAAI,CAAC;AACb,CAAC"}