runling 0.1.1
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/LICENSE +21 -0
- package/README.md +63 -0
- package/bin/runling.js +26 -0
- package/bin/workflow-loader.js +10 -0
- package/dist/extensions/web-fetch.d.ts +8 -0
- package/dist/extensions/web-fetch.js +245 -0
- package/dist/src/agent.d.ts +78 -0
- package/dist/src/agent.js +450 -0
- package/dist/src/ansi.d.ts +1 -0
- package/dist/src/ansi.js +9 -0
- package/dist/src/cli.d.ts +8 -0
- package/dist/src/cli.js +46 -0
- package/dist/src/config-reloader.d.ts +20 -0
- package/dist/src/config-reloader.js +110 -0
- package/dist/src/events.d.ts +82 -0
- package/dist/src/events.js +21 -0
- package/dist/src/git.d.ts +9 -0
- package/dist/src/git.js +82 -0
- package/dist/src/id.d.ts +1 -0
- package/dist/src/id.js +7 -0
- package/dist/src/index.d.ts +15 -0
- package/dist/src/index.js +14 -0
- package/dist/src/input.d.ts +14 -0
- package/dist/src/input.js +49 -0
- package/dist/src/log.d.ts +35 -0
- package/dist/src/log.js +92 -0
- package/dist/src/markdown.d.ts +2 -0
- package/dist/src/markdown.js +32 -0
- package/dist/src/model.d.ts +5 -0
- package/dist/src/model.js +10 -0
- package/dist/src/paths.d.ts +10 -0
- package/dist/src/paths.js +18 -0
- package/dist/src/runner.d.ts +43 -0
- package/dist/src/runner.js +200 -0
- package/dist/src/runtime.d.ts +62 -0
- package/dist/src/runtime.js +44 -0
- package/dist/src/schema.d.ts +3 -0
- package/dist/src/schema.js +17 -0
- package/dist/src/shell.d.ts +47 -0
- package/dist/src/shell.js +170 -0
- package/dist/src/step.d.ts +5 -0
- package/dist/src/step.js +39 -0
- package/dist/src/system-prompt.d.ts +2 -0
- package/dist/src/system-prompt.js +23 -0
- package/dist/src/text.d.ts +2 -0
- package/dist/src/text.js +6 -0
- package/dist/src/tui.d.ts +46 -0
- package/dist/src/tui.js +477 -0
- package/dist/src/usage.d.ts +35 -0
- package/dist/src/usage.js +90 -0
- package/dist/src/utils.d.ts +2 -0
- package/dist/src/utils.js +16 -0
- package/dist/src/web-config.d.ts +16 -0
- package/dist/src/web-config.js +22 -0
- package/dist/src/web-server.d.ts +8 -0
- package/dist/src/web-server.js +91 -0
- package/dist/src/workflow.d.ts +11 -0
- package/dist/src/workflow.js +39 -0
- package/dist/web/client/_app/immutable/assets/0.DkxYLsNr.css +1 -0
- package/dist/web/client/_app/immutable/assets/0.DkxYLsNr.css.br +0 -0
- package/dist/web/client/_app/immutable/assets/0.DkxYLsNr.css.gz +0 -0
- package/dist/web/client/_app/immutable/assets/2.D0D6RatL.css +1 -0
- package/dist/web/client/_app/immutable/assets/2.D0D6RatL.css.br +0 -0
- package/dist/web/client/_app/immutable/assets/2.D0D6RatL.css.gz +0 -0
- package/dist/web/client/_app/immutable/assets/plus-jakarta-sans-latin-ext-wght-italic.DJWiFoht.woff2 +0 -0
- package/dist/web/client/_app/immutable/assets/plus-jakarta-sans-latin-ext-wght-normal.DmpS2jIq.woff2 +0 -0
- package/dist/web/client/_app/immutable/assets/plus-jakarta-sans-latin-wght-italic.DnD1KgkH.woff2 +0 -0
- package/dist/web/client/_app/immutable/assets/plus-jakarta-sans-latin-wght-normal.eXO_dkmS.woff2 +0 -0
- package/dist/web/client/_app/immutable/assets/plus-jakarta-sans-vietnamese-wght-italic.CPBsCcxN.woff2 +0 -0
- package/dist/web/client/_app/immutable/assets/plus-jakarta-sans-vietnamese-wght-normal.qRpaaN48.woff2 +0 -0
- package/dist/web/client/_app/immutable/chunks/DVu8M-Ny.js +1 -0
- package/dist/web/client/_app/immutable/chunks/DVu8M-Ny.js.br +0 -0
- package/dist/web/client/_app/immutable/chunks/DVu8M-Ny.js.gz +0 -0
- package/dist/web/client/_app/immutable/chunks/DZ8VO57n.js +2 -0
- package/dist/web/client/_app/immutable/chunks/DZ8VO57n.js.br +0 -0
- package/dist/web/client/_app/immutable/chunks/DZ8VO57n.js.gz +0 -0
- package/dist/web/client/_app/immutable/chunks/DcSF4jBT.js +2 -0
- package/dist/web/client/_app/immutable/chunks/DcSF4jBT.js.br +0 -0
- package/dist/web/client/_app/immutable/chunks/DcSF4jBT.js.gz +0 -0
- package/dist/web/client/_app/immutable/chunks/DhqrxzQW.js +1 -0
- package/dist/web/client/_app/immutable/chunks/DhqrxzQW.js.br +0 -0
- package/dist/web/client/_app/immutable/chunks/DhqrxzQW.js.gz +0 -0
- package/dist/web/client/_app/immutable/chunks/DqKc9n9r.js +1 -0
- package/dist/web/client/_app/immutable/chunks/DqKc9n9r.js.br +0 -0
- package/dist/web/client/_app/immutable/chunks/DqKc9n9r.js.gz +0 -0
- package/dist/web/client/_app/immutable/chunks/EYhLy6Dm.js +1 -0
- package/dist/web/client/_app/immutable/chunks/EYhLy6Dm.js.br +0 -0
- package/dist/web/client/_app/immutable/chunks/EYhLy6Dm.js.gz +0 -0
- package/dist/web/client/_app/immutable/chunks/Jt-Bo-2J.js +1 -0
- package/dist/web/client/_app/immutable/chunks/Jt-Bo-2J.js.br +0 -0
- package/dist/web/client/_app/immutable/chunks/Jt-Bo-2J.js.gz +0 -0
- package/dist/web/client/_app/immutable/chunks/N_quh2N-.js +1 -0
- package/dist/web/client/_app/immutable/chunks/N_quh2N-.js.br +0 -0
- package/dist/web/client/_app/immutable/chunks/N_quh2N-.js.gz +0 -0
- package/dist/web/client/_app/immutable/chunks/wbPk3Yxo.js +81 -0
- package/dist/web/client/_app/immutable/chunks/wbPk3Yxo.js.br +0 -0
- package/dist/web/client/_app/immutable/chunks/wbPk3Yxo.js.gz +0 -0
- package/dist/web/client/_app/immutable/entry/app.YNAAR_x0.js +2 -0
- package/dist/web/client/_app/immutable/entry/app.YNAAR_x0.js.br +0 -0
- package/dist/web/client/_app/immutable/entry/app.YNAAR_x0.js.gz +0 -0
- package/dist/web/client/_app/immutable/entry/start.BQmDILhe.js +1 -0
- package/dist/web/client/_app/immutable/entry/start.BQmDILhe.js.br +0 -0
- package/dist/web/client/_app/immutable/entry/start.BQmDILhe.js.gz +0 -0
- package/dist/web/client/_app/immutable/nodes/0.DNWnBVC3.js +1 -0
- package/dist/web/client/_app/immutable/nodes/0.DNWnBVC3.js.br +0 -0
- package/dist/web/client/_app/immutable/nodes/0.DNWnBVC3.js.gz +0 -0
- package/dist/web/client/_app/immutable/nodes/1.CZEgzXeT.js +1 -0
- package/dist/web/client/_app/immutable/nodes/1.CZEgzXeT.js.br +0 -0
- package/dist/web/client/_app/immutable/nodes/1.CZEgzXeT.js.gz +0 -0
- package/dist/web/client/_app/immutable/nodes/2.BSE8F3Ef.js +19 -0
- package/dist/web/client/_app/immutable/nodes/2.BSE8F3Ef.js.br +0 -0
- package/dist/web/client/_app/immutable/nodes/2.BSE8F3Ef.js.gz +0 -0
- package/dist/web/client/_app/version.json +1 -0
- package/dist/web/client/_app/version.json.br +0 -0
- package/dist/web/client/_app/version.json.gz +0 -0
- package/dist/web/env.js +70 -0
- package/dist/web/env.js.map +1 -0
- package/dist/web/handler.js +23 -0
- package/dist/web/handler.js.map +1 -0
- package/dist/web/index.js +146 -0
- package/dist/web/index.js.map +1 -0
- package/dist/web/server/chunks/chunks/exports.js-BZBK1HC9.js +161 -0
- package/dist/web/server/chunks/chunks/exports.js-BZBK1HC9.js.map +1 -0
- package/dist/web/server/chunks/chunks/internal.js-pcXelyRW.js +126 -0
- package/dist/web/server/chunks/chunks/internal.js-pcXelyRW.js.map +1 -0
- package/dist/web/server/chunks/chunks/root.js-HNgH7zyW.js +4349 -0
- package/dist/web/server/chunks/chunks/root.js-HNgH7zyW.js.map +1 -0
- package/dist/web/server/chunks/chunks/run-store.js-Dgbf5-M9.js +174 -0
- package/dist/web/server/chunks/chunks/run-store.js-Dgbf5-M9.js.map +1 -0
- package/dist/web/server/chunks/chunks/runs.js-vPPJr_ta.js +20 -0
- package/dist/web/server/chunks/chunks/runs.js-vPPJr_ta.js.map +1 -0
- package/dist/web/server/chunks/chunks/server.js-Bf8x1V_n.js +16 -0
- package/dist/web/server/chunks/chunks/server.js-Bf8x1V_n.js.map +1 -0
- package/dist/web/server/chunks/chunks/state.svelte.js-lAA5-aPf.js +12 -0
- package/dist/web/server/chunks/chunks/state.svelte.js-lAA5-aPf.js.map +1 -0
- package/dist/web/server/chunks/chunks/stream.js-CHB18nO5.js +51 -0
- package/dist/web/server/chunks/chunks/stream.js-CHB18nO5.js.map +1 -0
- package/dist/web/server/chunks/chunks/uneval.js-5Y6J9rDU.js +530 -0
- package/dist/web/server/chunks/chunks/uneval.js-5Y6J9rDU.js.map +1 -0
- package/dist/web/server/chunks/chunks/utils.js-BQzn9ikS.js +38 -0
- package/dist/web/server/chunks/chunks/utils.js-BQzn9ikS.js.map +1 -0
- package/dist/web/server/chunks/chunks/utils2.js-CPBdgO4h.js +1627 -0
- package/dist/web/server/chunks/chunks/utils2.js-CPBdgO4h.js.map +1 -0
- package/dist/web/server/chunks/chunks/web-config.js-CAwLL_g4.js +12 -0
- package/dist/web/server/chunks/chunks/web-config.js-CAwLL_g4.js.map +1 -0
- package/dist/web/server/chunks/chunks/webhook.js-nEb5r1eG.js +62 -0
- package/dist/web/server/chunks/chunks/webhook.js-nEb5r1eG.js.map +1 -0
- package/dist/web/server/chunks/entries/endpoints/api/config/events/_server.ts.js-DwgI16MG.js +20 -0
- package/dist/web/server/chunks/entries/endpoints/api/config/events/_server.ts.js-DwgI16MG.js.map +1 -0
- package/dist/web/server/chunks/entries/endpoints/api/runs/_id_/_server.ts.js-BSKmJv3K.js +14 -0
- package/dist/web/server/chunks/entries/endpoints/api/runs/_id_/_server.ts.js-BSKmJv3K.js.map +1 -0
- package/dist/web/server/chunks/entries/endpoints/api/runs/_id_/events/_server.ts.js-CWWee51l.js +23 -0
- package/dist/web/server/chunks/entries/endpoints/api/runs/_id_/events/_server.ts.js-CWWee51l.js.map +1 -0
- package/dist/web/server/chunks/entries/endpoints/api/runs/events/_server.ts.js-CY2mz9bH.js +28 -0
- package/dist/web/server/chunks/entries/endpoints/api/runs/events/_server.ts.js-CY2mz9bH.js.map +1 -0
- package/dist/web/server/chunks/entries/endpoints/api/runs/start/_name_/_server.ts.js-CD4RKiK6.js +30 -0
- package/dist/web/server/chunks/entries/endpoints/api/runs/start/_name_/_server.ts.js-CD4RKiK6.js.map +1 -0
- package/dist/web/server/chunks/entries/endpoints/api/webhooks/_name_/_server.ts.js-Dgh42cDJ.js +28 -0
- package/dist/web/server/chunks/entries/endpoints/api/webhooks/_name_/_server.ts.js-Dgh42cDJ.js.map +1 -0
- package/dist/web/server/chunks/entries/fallbacks/error.svelte.js-LEaHcOM2.js +27 -0
- package/dist/web/server/chunks/entries/fallbacks/error.svelte.js-LEaHcOM2.js.map +1 -0
- package/dist/web/server/chunks/entries/pages/_layout.svelte.js-D_wzPsk8.js +8 -0
- package/dist/web/server/chunks/entries/pages/_layout.svelte.js-D_wzPsk8.js.map +1 -0
- package/dist/web/server/chunks/entries/pages/_page.server.ts.js-oVQ0hBaN.js +27 -0
- package/dist/web/server/chunks/entries/pages/_page.server.ts.js-oVQ0hBaN.js.map +1 -0
- package/dist/web/server/chunks/entries/pages/_page.svelte.js-B7fSvh9U.js +141 -0
- package/dist/web/server/chunks/entries/pages/_page.svelte.js-B7fSvh9U.js.map +1 -0
- package/dist/web/server/chunks/handler-BpKA6eGq.js +1734 -0
- package/dist/web/server/chunks/handler-BpKA6eGq.js.map +1 -0
- package/dist/web/server/chunks/index.js-CVS44OGr.js +4157 -0
- package/dist/web/server/chunks/index.js-CVS44OGr.js.map +1 -0
- package/dist/web/server/chunks/manifest.js-CnB5rB3W.js +84 -0
- package/dist/web/server/chunks/manifest.js-CnB5rB3W.js.map +1 -0
- package/dist/web/server/chunks/nodes/0.js-BqA14fLU.js +9 -0
- package/dist/web/server/chunks/nodes/0.js-BqA14fLU.js.map +1 -0
- package/dist/web/server/chunks/nodes/1.js-DzvhRJCS.js +9 -0
- package/dist/web/server/chunks/nodes/1.js-DzvhRJCS.js.map +1 -0
- package/dist/web/server/chunks/nodes/2.js-DmujW_AW.js +20 -0
- package/dist/web/server/chunks/nodes/2.js-DmujW_AW.js.map +1 -0
- package/dist/web/shims.js +33 -0
- package/dist/web/shims.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { mkdir, readdir, readFile, truncate, appendFile, writeFile, stat } from 'node:fs/promises';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { randomUUID } from 'node:crypto';
|
|
4
|
+
import { emptyTokenUsage, runWorkflow } from 'runling';
|
|
5
|
+
import { a as applyRecord } from './runs.js-vPPJr_ta.js';
|
|
6
|
+
|
|
7
|
+
const validId = /^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/;
|
|
8
|
+
class RunStore {
|
|
9
|
+
constructor(directory, cwd) {
|
|
10
|
+
this.directory = directory;
|
|
11
|
+
this.cwd = cwd;
|
|
12
|
+
}
|
|
13
|
+
directory;
|
|
14
|
+
cwd;
|
|
15
|
+
runs = /* @__PURE__ */ new Map();
|
|
16
|
+
pending = /* @__PURE__ */ new Map();
|
|
17
|
+
listeners = /* @__PURE__ */ new Set();
|
|
18
|
+
async init() {
|
|
19
|
+
await mkdir(this.directory, { recursive: true });
|
|
20
|
+
for (const file of await readdir(this.directory)) {
|
|
21
|
+
const id = file.replace(/\.jsonl$/, "");
|
|
22
|
+
if (!file.endsWith(".jsonl") || !validId.test(id)) continue;
|
|
23
|
+
const path = resolve(this.directory, file);
|
|
24
|
+
const content = await readFile(path, "utf8");
|
|
25
|
+
const end = content.lastIndexOf("\n") + 1;
|
|
26
|
+
try {
|
|
27
|
+
const records = content.slice(0, end).split("\n").filter(Boolean).map((line) => JSON.parse(line));
|
|
28
|
+
const first = records[0];
|
|
29
|
+
if (first?.type !== "started" || first.run.id !== id) continue;
|
|
30
|
+
let run = first.run;
|
|
31
|
+
for (const record of records.slice(1)) run = applyRecord(run, record);
|
|
32
|
+
this.runs.set(id, run);
|
|
33
|
+
if (run.status === "running") {
|
|
34
|
+
if (end < content.length)
|
|
35
|
+
await truncate(path, Buffer.byteLength(content.slice(0, end)));
|
|
36
|
+
await this.append(id, {
|
|
37
|
+
type: "finished",
|
|
38
|
+
status: "interrupted",
|
|
39
|
+
finishedAt: Date.now(),
|
|
40
|
+
durationMs: run.events.at(-1)?.timestamp ?? 0,
|
|
41
|
+
output: null,
|
|
42
|
+
usage: run.usage,
|
|
43
|
+
error: "The server stopped before this run finished."
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
} catch (cause) {
|
|
47
|
+
console.error(`Cannot restore run ${id}:`, cause);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
list() {
|
|
52
|
+
return [...this.runs.values()].sort((a, b) => b.startedAt - a.startedAt).slice(0, 100).map(({ input: _, output: _o, error: _e, events: _v, ...run }) => run);
|
|
53
|
+
}
|
|
54
|
+
get(id) {
|
|
55
|
+
return validId.test(id) ? this.runs.get(id) : void 0;
|
|
56
|
+
}
|
|
57
|
+
subscribe(listener) {
|
|
58
|
+
this.listeners.add(listener);
|
|
59
|
+
return () => {
|
|
60
|
+
this.listeners.delete(listener);
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
publish(id, record) {
|
|
64
|
+
for (const listener of this.listeners) listener(id, record);
|
|
65
|
+
}
|
|
66
|
+
append(id, record) {
|
|
67
|
+
const next = (this.pending.get(id) ?? Promise.resolve()).then(async () => {
|
|
68
|
+
await appendFile(
|
|
69
|
+
resolve(this.directory, `${id}.jsonl`),
|
|
70
|
+
`${JSON.stringify(record)}
|
|
71
|
+
`
|
|
72
|
+
);
|
|
73
|
+
this.runs.set(id, applyRecord(this.runs.get(id), record));
|
|
74
|
+
this.publish(id, record);
|
|
75
|
+
});
|
|
76
|
+
this.pending.set(id, next);
|
|
77
|
+
return next;
|
|
78
|
+
}
|
|
79
|
+
async start(webhook, workflow, input, source) {
|
|
80
|
+
const id = randomUUID();
|
|
81
|
+
const run = {
|
|
82
|
+
id,
|
|
83
|
+
webhook,
|
|
84
|
+
workflow: workflow.name,
|
|
85
|
+
source,
|
|
86
|
+
input: input === void 0 ? null : JSON.parse(JSON.stringify(input)),
|
|
87
|
+
status: "running",
|
|
88
|
+
startedAt: Date.now(),
|
|
89
|
+
output: null,
|
|
90
|
+
error: null,
|
|
91
|
+
events: [],
|
|
92
|
+
usage: emptyTokenUsage()
|
|
93
|
+
};
|
|
94
|
+
const started = { type: "started", run };
|
|
95
|
+
await writeFile(
|
|
96
|
+
resolve(this.directory, `${id}.jsonl`),
|
|
97
|
+
`${JSON.stringify(started)}
|
|
98
|
+
`,
|
|
99
|
+
{ flag: "wx", mode: 384 }
|
|
100
|
+
);
|
|
101
|
+
this.runs.set(id, run);
|
|
102
|
+
this.publish(id, started);
|
|
103
|
+
const completion = this.execute(id, workflow, input);
|
|
104
|
+
void completion.catch((cause) => console.error(`Run ${id} failed:`, cause));
|
|
105
|
+
return { id, completion };
|
|
106
|
+
}
|
|
107
|
+
async execute(id, workflow, input) {
|
|
108
|
+
const base = performance.now();
|
|
109
|
+
const execution = await runWorkflow(workflow, {
|
|
110
|
+
cwd: this.cwd,
|
|
111
|
+
input,
|
|
112
|
+
onEvent: (event) => {
|
|
113
|
+
void this.append(id, {
|
|
114
|
+
type: "event",
|
|
115
|
+
event: { ...event, timestamp: Math.max(0, event.timestamp - base) }
|
|
116
|
+
}).catch(() => {
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
try {
|
|
121
|
+
await this.append(id, {
|
|
122
|
+
type: "finished",
|
|
123
|
+
status: execution.ok ? "completed" : "failed",
|
|
124
|
+
finishedAt: Date.now(),
|
|
125
|
+
durationMs: execution.durationMs,
|
|
126
|
+
usage: execution.usage,
|
|
127
|
+
output: execution.output,
|
|
128
|
+
error: execution.error
|
|
129
|
+
});
|
|
130
|
+
} catch (cause) {
|
|
131
|
+
const record = {
|
|
132
|
+
type: "finished",
|
|
133
|
+
status: "failed",
|
|
134
|
+
finishedAt: Date.now(),
|
|
135
|
+
durationMs: execution.durationMs,
|
|
136
|
+
usage: execution.usage,
|
|
137
|
+
output: null,
|
|
138
|
+
error: `Cannot save run history: ${cause instanceof Error ? cause.message : String(cause)}`
|
|
139
|
+
};
|
|
140
|
+
this.runs.set(id, applyRecord(this.runs.get(id), record));
|
|
141
|
+
this.publish(id, record);
|
|
142
|
+
throw new Error(record.error);
|
|
143
|
+
} finally {
|
|
144
|
+
this.pending.delete(id);
|
|
145
|
+
}
|
|
146
|
+
return execution;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const state = globalThis;
|
|
150
|
+
async function historyDirectory(cwd) {
|
|
151
|
+
const current = resolve(cwd, ".runling/runs");
|
|
152
|
+
const legacy = resolve(cwd, ".factory/runs");
|
|
153
|
+
for (const path of [current, legacy]) {
|
|
154
|
+
try {
|
|
155
|
+
if ((await stat(path)).isDirectory()) return path;
|
|
156
|
+
throw new Error(`Run history path is not a directory: ${path}`);
|
|
157
|
+
} catch (error) {
|
|
158
|
+
if (error.code !== "ENOENT") throw error;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return current;
|
|
162
|
+
}
|
|
163
|
+
function getRunStore() {
|
|
164
|
+
state.__runlingRunStore ??= (async () => {
|
|
165
|
+
const cwd = process.env.RUNLING_WEB_WORKFLOW_CWD ?? process.cwd();
|
|
166
|
+
const store = new RunStore(await historyDirectory(cwd), cwd);
|
|
167
|
+
await store.init();
|
|
168
|
+
return store;
|
|
169
|
+
})();
|
|
170
|
+
return state.__runlingRunStore;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export { getRunStore as g };
|
|
174
|
+
//# sourceMappingURL=run-store.js-Dgbf5-M9.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-store.js-Dgbf5-M9.js","sources":["../../../../.svelte-kit/output/server/chunks/run-store.js"],"sourcesContent":["import { mkdir, readdir, readFile, truncate, appendFile, writeFile, stat } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport { randomUUID } from \"node:crypto\";\nimport { emptyTokenUsage, runWorkflow } from \"runling\";\nimport { a as applyRecord } from \"./runs.js\";\nconst validId = /^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/;\nclass RunStore {\n constructor(directory, cwd) {\n this.directory = directory;\n this.cwd = cwd;\n }\n directory;\n cwd;\n runs = /* @__PURE__ */ new Map();\n pending = /* @__PURE__ */ new Map();\n listeners = /* @__PURE__ */ new Set();\n async init() {\n await mkdir(this.directory, { recursive: true });\n for (const file of await readdir(this.directory)) {\n const id = file.replace(/\\.jsonl$/, \"\");\n if (!file.endsWith(\".jsonl\") || !validId.test(id)) continue;\n const path = resolve(this.directory, file);\n const content = await readFile(path, \"utf8\");\n const end = content.lastIndexOf(\"\\n\") + 1;\n try {\n const records = content.slice(0, end).split(\"\\n\").filter(Boolean).map((line) => JSON.parse(line));\n const first = records[0];\n if (first?.type !== \"started\" || first.run.id !== id) continue;\n let run = first.run;\n for (const record of records.slice(1)) run = applyRecord(run, record);\n this.runs.set(id, run);\n if (run.status === \"running\") {\n if (end < content.length)\n await truncate(path, Buffer.byteLength(content.slice(0, end)));\n await this.append(id, {\n type: \"finished\",\n status: \"interrupted\",\n finishedAt: Date.now(),\n durationMs: run.events.at(-1)?.timestamp ?? 0,\n output: null,\n usage: run.usage,\n error: \"The server stopped before this run finished.\"\n });\n }\n } catch (cause) {\n console.error(`Cannot restore run ${id}:`, cause);\n }\n }\n }\n list() {\n return [...this.runs.values()].sort((a, b) => b.startedAt - a.startedAt).slice(0, 100).map(({ input: _, output: _o, error: _e, events: _v, ...run }) => run);\n }\n get(id) {\n return validId.test(id) ? this.runs.get(id) : void 0;\n }\n subscribe(listener) {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n publish(id, record) {\n for (const listener of this.listeners) listener(id, record);\n }\n append(id, record) {\n const next = (this.pending.get(id) ?? Promise.resolve()).then(async () => {\n await appendFile(\n resolve(this.directory, `${id}.jsonl`),\n `${JSON.stringify(record)}\n`\n );\n this.runs.set(id, applyRecord(this.runs.get(id), record));\n this.publish(id, record);\n });\n this.pending.set(id, next);\n return next;\n }\n async start(webhook, workflow, input, source) {\n const id = randomUUID();\n const run = {\n id,\n webhook,\n workflow: workflow.name,\n source,\n input: input === void 0 ? null : JSON.parse(JSON.stringify(input)),\n status: \"running\",\n startedAt: Date.now(),\n output: null,\n error: null,\n events: [],\n usage: emptyTokenUsage()\n };\n const started = { type: \"started\", run };\n await writeFile(\n resolve(this.directory, `${id}.jsonl`),\n `${JSON.stringify(started)}\n`,\n { flag: \"wx\", mode: 384 }\n );\n this.runs.set(id, run);\n this.publish(id, started);\n const completion = this.execute(id, workflow, input);\n void completion.catch((cause) => console.error(`Run ${id} failed:`, cause));\n return { id, completion };\n }\n async execute(id, workflow, input) {\n const base = performance.now();\n const execution = await runWorkflow(workflow, {\n cwd: this.cwd,\n input,\n onEvent: (event) => {\n void this.append(id, {\n type: \"event\",\n event: { ...event, timestamp: Math.max(0, event.timestamp - base) }\n }).catch(() => {\n });\n }\n });\n try {\n await this.append(id, {\n type: \"finished\",\n status: execution.ok ? \"completed\" : \"failed\",\n finishedAt: Date.now(),\n durationMs: execution.durationMs,\n usage: execution.usage,\n output: execution.output,\n error: execution.error\n });\n } catch (cause) {\n const record = {\n type: \"finished\",\n status: \"failed\",\n finishedAt: Date.now(),\n durationMs: execution.durationMs,\n usage: execution.usage,\n output: null,\n error: `Cannot save run history: ${cause instanceof Error ? cause.message : String(cause)}`\n };\n this.runs.set(id, applyRecord(this.runs.get(id), record));\n this.publish(id, record);\n throw new Error(record.error);\n } finally {\n this.pending.delete(id);\n }\n return execution;\n }\n}\nconst state = globalThis;\nasync function historyDirectory(cwd) {\n const current = resolve(cwd, \".runling/runs\");\n const legacy = resolve(cwd, \".factory/runs\");\n for (const path of [current, legacy]) {\n try {\n if ((await stat(path)).isDirectory()) return path;\n throw new Error(`Run history path is not a directory: ${path}`);\n } catch (error) {\n if (error.code !== \"ENOENT\") throw error;\n }\n }\n return current;\n}\nfunction getRunStore() {\n state.__runlingRunStore ??= (async () => {\n const cwd = process.env.RUNLING_WEB_WORKFLOW_CWD ?? process.cwd();\n const store = new RunStore(await historyDirectory(cwd), cwd);\n await store.init();\n return store;\n })();\n return state.__runlingRunStore;\n}\nexport {\n getRunStore as g\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
function applyRecord(run, record) {
|
|
2
|
+
if (record.type === "started") return record.run;
|
|
3
|
+
if (record.type === "event") {
|
|
4
|
+
return {
|
|
5
|
+
...run,
|
|
6
|
+
events: [...run.events, record.event],
|
|
7
|
+
usage: record.event.type === "usage.updated" ? record.event.usage : run.usage
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
const { type: _, ...result } = record;
|
|
11
|
+
return { ...run, ...result };
|
|
12
|
+
}
|
|
13
|
+
function duration(ms) {
|
|
14
|
+
if (ms < 1e3) return `${Math.round(ms)} ms`;
|
|
15
|
+
if (ms < 6e4) return `${(ms / 1e3).toFixed(1)} s`;
|
|
16
|
+
return `${Math.floor(ms / 6e4)}m ${Math.floor(ms % 6e4 / 1e3)}s`;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { applyRecord as a, duration as d };
|
|
20
|
+
//# sourceMappingURL=runs.js-vPPJr_ta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runs.js-vPPJr_ta.js","sources":["../../../../.svelte-kit/output/server/chunks/runs.js"],"sourcesContent":["function applyRecord(run, record) {\n if (record.type === \"started\") return record.run;\n if (record.type === \"event\") {\n return {\n ...run,\n events: [...run.events, record.event],\n usage: record.event.type === \"usage.updated\" ? record.event.usage : run.usage\n };\n }\n const { type: _, ...result } = record;\n return { ...run, ...result };\n}\nfunction duration(ms) {\n if (ms < 1e3) return `${Math.round(ms)} ms`;\n if (ms < 6e4) return `${(ms / 1e3).toFixed(1)} s`;\n return `${Math.floor(ms / 6e4)}m ${Math.floor(ms % 6e4 / 1e3)}s`;\n}\nexport {\n applyRecord as a,\n duration as d\n};\n"],"names":[],"mappings":"AAAA,SAAS,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE;AAClC,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,OAAO,MAAM,CAAC,GAAG;AAClD,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;AAC/B,IAAI,OAAO;AACX,MAAM,GAAG,GAAG;AACZ,MAAM,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;AAC3C,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;AAC9E,KAAK;AACL,EAAE;AACF,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM;AACvC,EAAE,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,MAAM,EAAE;AAC9B;AACA,SAAS,QAAQ,CAAC,EAAE,EAAE;AACtB,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;AAC7C,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACnD,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAClE;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
let base = "";
|
|
2
|
+
let assets = base;
|
|
3
|
+
const app_dir = "_app";
|
|
4
|
+
const relative = true;
|
|
5
|
+
const initial = { base, assets };
|
|
6
|
+
function override(paths) {
|
|
7
|
+
base = paths.base;
|
|
8
|
+
assets = paths.assets;
|
|
9
|
+
}
|
|
10
|
+
function reset() {
|
|
11
|
+
base = initial.base;
|
|
12
|
+
assets = initial.assets;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { app_dir as a, base as b, assets as c, reset as d, override as o, relative as r };
|
|
16
|
+
//# sourceMappingURL=server.js-Bf8x1V_n.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js-Bf8x1V_n.js","sources":["../../../../.svelte-kit/output/server/chunks/server.js"],"sourcesContent":["let prerendering = false;\nfunction set_building() {\n}\nfunction set_prerendering() {\n prerendering = true;\n}\nlet base = \"\";\nlet assets = base;\nconst app_dir = \"_app\";\nconst relative = true;\nconst initial = { base, assets };\nfunction override(paths) {\n base = paths.base;\n assets = paths.assets;\n}\nfunction reset() {\n base = initial.base;\n assets = initial.assets;\n}\nfunction set_assets(path) {\n assets = initial.assets = path;\n}\nexport {\n app_dir as a,\n base as b,\n assets as c,\n reset as d,\n set_building as e,\n set_prerendering as f,\n override as o,\n prerendering as p,\n relative as r,\n set_assets as s\n};\n"],"names":[],"mappings":"AAMG,IAAC,IAAI,GAAG;AACR,IAAC,MAAM,GAAG;AACR,MAAC,OAAO,GAAG;AACX,MAAC,QAAQ,GAAG;AACjB,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;AAChC,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,EAAE,IAAI,GAAG,KAAK,CAAC,IAAI;AACnB,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM;AACvB;AACA,SAAS,KAAK,GAAG;AACjB,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI;AACrB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM;AACzB;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { n as noop } from './root.js-HNgH7zyW.js';
|
|
2
|
+
import './exports.js-BZBK1HC9.js';
|
|
3
|
+
import './utils2.js-CPBdgO4h.js';
|
|
4
|
+
|
|
5
|
+
const is_legacy = noop.toString().includes("$$") || /function \w+\(\) \{\}/.test(noop.toString());
|
|
6
|
+
const placeholder_url = "a:";
|
|
7
|
+
if (is_legacy) {
|
|
8
|
+
({
|
|
9
|
+
url: new URL(placeholder_url)
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=state.svelte.js-lAA5-aPf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.svelte.js-lAA5-aPf.js","sources":["../../../../.svelte-kit/output/server/chunks/state.svelte.js"],"sourcesContent":["import { n as noop } from \"./root.js\";\nimport \"./exports.js\";\nimport \"@sveltejs/kit/internal/server\";\nconst is_legacy = noop.toString().includes(\"$$\") || /function \\w+\\(\\) \\{\\}/.test(noop.toString());\nconst placeholder_url = \"a:\";\nif (is_legacy) {\n ({\n data: {},\n form: null,\n error: null,\n params: {},\n route: { id: null },\n state: {},\n status: -1,\n url: new URL(placeholder_url)\n });\n}\n"],"names":[],"mappings":";;;;AAGA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjG,MAAM,eAAe,GAAG,IAAI;AAC5B,IAAI,SAAS,EAAE;AACf,EAAE,CAAC;AACH,IAOI,GAAG,EAAE,IAAI,GAAG,CAAC,eAAe;AAChC,GAAG;AACH"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
function eventStream(request, connect) {
|
|
2
|
+
let cleanup = () => {
|
|
3
|
+
};
|
|
4
|
+
const encoder = new TextEncoder();
|
|
5
|
+
const body = new ReadableStream({
|
|
6
|
+
start(controller) {
|
|
7
|
+
let closed = false;
|
|
8
|
+
const send = (event, data) => {
|
|
9
|
+
if (!closed)
|
|
10
|
+
controller.enqueue(
|
|
11
|
+
encoder.encode(
|
|
12
|
+
`event: ${event}
|
|
13
|
+
data: ${JSON.stringify(data)}
|
|
14
|
+
|
|
15
|
+
`
|
|
16
|
+
)
|
|
17
|
+
);
|
|
18
|
+
};
|
|
19
|
+
const unsubscribe = connect(send);
|
|
20
|
+
const heartbeat = setInterval(() => {
|
|
21
|
+
if (!closed) controller.enqueue(encoder.encode(": keep-alive\n\n"));
|
|
22
|
+
}, 15e3);
|
|
23
|
+
cleanup = () => {
|
|
24
|
+
if (closed) return;
|
|
25
|
+
closed = true;
|
|
26
|
+
clearInterval(heartbeat);
|
|
27
|
+
unsubscribe();
|
|
28
|
+
request.signal.removeEventListener("abort", abort);
|
|
29
|
+
};
|
|
30
|
+
const abort = () => {
|
|
31
|
+
cleanup();
|
|
32
|
+
controller.close();
|
|
33
|
+
};
|
|
34
|
+
request.signal.addEventListener("abort", abort, { once: true });
|
|
35
|
+
if (request.signal.aborted) abort();
|
|
36
|
+
},
|
|
37
|
+
cancel() {
|
|
38
|
+
cleanup();
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
return new Response(body, {
|
|
42
|
+
headers: {
|
|
43
|
+
"content-type": "text/event-stream",
|
|
44
|
+
"cache-control": "no-cache, no-transform",
|
|
45
|
+
"x-accel-buffering": "no"
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export { eventStream as e };
|
|
51
|
+
//# sourceMappingURL=stream.js-CHB18nO5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.js-CHB18nO5.js","sources":["../../../../.svelte-kit/output/server/chunks/stream.js"],"sourcesContent":["function eventStream(request, connect) {\n let cleanup = () => {\n };\n const encoder = new TextEncoder();\n const body = new ReadableStream({\n start(controller) {\n let closed = false;\n const send = (event, data) => {\n if (!closed)\n controller.enqueue(\n encoder.encode(\n `event: ${event}\ndata: ${JSON.stringify(data)}\n\n`\n )\n );\n };\n const unsubscribe = connect(send);\n const heartbeat = setInterval(() => {\n if (!closed) controller.enqueue(encoder.encode(\": keep-alive\\n\\n\"));\n }, 15e3);\n cleanup = () => {\n if (closed) return;\n closed = true;\n clearInterval(heartbeat);\n unsubscribe();\n request.signal.removeEventListener(\"abort\", abort);\n };\n const abort = () => {\n cleanup();\n controller.close();\n };\n request.signal.addEventListener(\"abort\", abort, { once: true });\n if (request.signal.aborted) abort();\n },\n cancel() {\n cleanup();\n }\n });\n return new Response(body, {\n headers: {\n \"content-type\": \"text/event-stream\",\n \"cache-control\": \"no-cache, no-transform\",\n \"x-accel-buffering\": \"no\"\n }\n });\n}\nexport {\n eventStream as e\n};\n"],"names":[],"mappings":"AAAA,SAAS,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;AACvC,EAAE,IAAI,OAAO,GAAG,MAAM;AACtB,EAAE,CAAC;AACH,EAAE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE;AACnC,EAAE,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC;AAClC,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,IAAI,MAAM,GAAG,KAAK;AACxB,MAAM,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK;AACpC,QAAQ,IAAI,CAAC,MAAM;AACnB,UAAU,UAAU,CAAC,OAAO;AAC5B,YAAY,OAAO,CAAC,MAAM;AAC1B,cAAc,CAAC,OAAO,EAAE,KAAK;AAC7B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;AAE5B;AACA;AACA,WAAW;AACX,MAAM,CAAC;AACP,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;AACvC,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM;AAC1C,QAAQ,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC3E,MAAM,CAAC,EAAE,IAAI,CAAC;AACd,MAAM,OAAO,GAAG,MAAM;AACtB,QAAQ,IAAI,MAAM,EAAE;AACpB,QAAQ,MAAM,GAAG,IAAI;AACrB,QAAQ,aAAa,CAAC,SAAS,CAAC;AAChC,QAAQ,WAAW,EAAE;AACrB,QAAQ,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC;AAC1D,MAAM,CAAC;AACP,MAAM,MAAM,KAAK,GAAG,MAAM;AAC1B,QAAQ,OAAO,EAAE;AACjB,QAAQ,UAAU,CAAC,KAAK,EAAE;AAC1B,MAAM,CAAC;AACP,MAAM,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACrE,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE;AACzC,IAAI,CAAC;AACL,IAAI,MAAM,GAAG;AACb,MAAM,OAAO,EAAE;AACf,IAAI;AACJ,GAAG,CAAC;AACJ,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;AAC5B,IAAI,OAAO,EAAE;AACb,MAAM,cAAc,EAAE,mBAAmB;AACzC,MAAM,eAAe,EAAE,wBAAwB;AAC/C,MAAM,mBAAmB,EAAE;AAC3B;AACA,GAAG,CAAC;AACJ;;"}
|