@frehilm/ordna-web 0.1.4 → 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.
- package/dist/server/routes.d.ts +11 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +44 -14
- package/dist/server/routes.js.map +1 -1
- package/dist/server/start.d.ts +9 -1
- package/dist/server/start.d.ts.map +1 -1
- package/dist/server/start.js +164 -18
- package/dist/server/start.js.map +1 -1
- package/dist/shared/types.d.ts +14 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js.map +1 -1
- package/dist-client/assets/index-Bx13MxjS.js +46 -0
- package/dist-client/assets/{index-DvlkoHQd.css → index-Ukabq_e8.css} +1 -1
- package/dist-client/index.html +2 -2
- package/package.json +2 -2
- package/dist-client/assets/index-BVc4jYil.js +0 -46
package/dist/server/routes.d.ts
CHANGED
|
@@ -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
|
-
|
|
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,
|
|
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"}
|
package/dist/server/routes.js
CHANGED
|
@@ -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(
|
|
5
|
+
export function buildApiRoutes(state) {
|
|
6
6
|
const api = new Hono();
|
|
7
|
-
api.
|
|
8
|
-
|
|
9
|
-
|
|
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":"AAAA,OAAO,EACN,UAAU,EACV,UAAU,EACV,OAAO,EACP,SAAS,EACT,QAAQ,EAER,UAAU,GACV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAwB,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"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"}
|
package/dist/server/start.d.ts
CHANGED
|
@@ -15,7 +15,15 @@ export interface RunWebOptions {
|
|
|
15
15
|
export interface RunWebHandle {
|
|
16
16
|
port: number;
|
|
17
17
|
close: () => Promise<void>;
|
|
18
|
-
|
|
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,
|
|
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"}
|
package/dist/server/start.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
53
|
-
|
|
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
|
|
132
|
+
const client = ws
|
|
133
|
+
._ordnaClient;
|
|
64
134
|
if (client)
|
|
65
135
|
clients.delete(client);
|
|
66
136
|
},
|
|
@@ -130,12 +200,88 @@ export async function runWeb(options = {}) {
|
|
|
130
200
|
}
|
|
131
201
|
}
|
|
132
202
|
const close = async () => {
|
|
133
|
-
|
|
203
|
+
if (state.unsubscribe)
|
|
204
|
+
await state.unsubscribe();
|
|
134
205
|
const s = server;
|
|
135
206
|
s.closeIdleConnections?.();
|
|
136
207
|
s.closeAllConnections?.();
|
|
137
208
|
await new Promise((r) => s.close(() => r()));
|
|
138
209
|
};
|
|
139
|
-
return {
|
|
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, "&")
|
|
282
|
+
.replace(/</g, "<")
|
|
283
|
+
.replace(/>/g, ">")
|
|
284
|
+
.replace(/"/g, """)
|
|
285
|
+
.replace(/'/g, "'");
|
|
140
286
|
}
|
|
141
287
|
//# sourceMappingURL=start.js.map
|
package/dist/server/start.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/server/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/server/start.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/types.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/shared/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"
|
|
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"}
|