@plurnk/plurnk-service 0.3.0 → 0.4.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/SPEC.md +35 -26
- package/dist/core/ChannelWrite.d.ts +10 -0
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/Engine.d.ts +9 -1
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +260 -53
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/line-marker.d.ts +23 -0
- package/dist/core/line-marker.d.ts.map +1 -0
- package/dist/core/line-marker.js +321 -0
- package/dist/core/line-marker.js.map +1 -0
- package/dist/core/matcher.d.ts +14 -0
- package/dist/core/matcher.d.ts.map +1 -0
- package/dist/core/matcher.js +195 -0
- package/dist/core/matcher.js.map +1 -0
- package/dist/core/mimetype-binary.d.ts +6 -0
- package/dist/core/mimetype-binary.d.ts.map +1 -0
- package/dist/core/mimetype-binary.js +82 -0
- package/dist/core/mimetype-binary.js.map +1 -0
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +97 -21
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/path-mimetype.d.ts +3 -0
- package/dist/core/path-mimetype.d.ts.map +1 -0
- package/dist/core/path-mimetype.js +47 -0
- package/dist/core/path-mimetype.js.map +1 -0
- package/dist/core/scheme-types.d.ts +5 -0
- package/dist/core/scheme-types.d.ts.map +1 -1
- package/dist/core/scheme-types.js.map +1 -1
- package/dist/schemes/Exec.d.ts +30 -1
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +229 -6
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/File.d.ts +4 -0
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +107 -23
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Log.d.ts +2 -0
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +82 -13
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/Plurnk.js +3 -3
- package/dist/schemes/Plurnk.js.map +1 -1
- package/dist/schemes/_entry-crud.d.ts +2 -0
- package/dist/schemes/_entry-crud.d.ts.map +1 -1
- package/dist/schemes/_entry-crud.js +1 -0
- package/dist/schemes/_entry-crud.js.map +1 -1
- package/dist/schemes/_entry-find.d.ts.map +1 -1
- package/dist/schemes/_entry-find.js +64 -15
- package/dist/schemes/_entry-find.js.map +1 -1
- package/dist/schemes/_entry-ops.d.ts +3 -0
- package/dist/schemes/_entry-ops.d.ts.map +1 -1
- package/dist/schemes/_entry-ops.js +268 -55
- package/dist/schemes/_entry-ops.js.map +1 -1
- package/dist/schemes/_entry-send.d.ts.map +1 -1
- package/dist/schemes/_entry-send.js +14 -7
- package/dist/schemes/_entry-send.js.map +1 -1
- package/dist/server/ClientConnection.d.ts +3 -2
- package/dist/server/ClientConnection.d.ts.map +1 -1
- package/dist/server/ClientConnection.js +4 -1
- package/dist/server/ClientConnection.js.map +1 -1
- package/dist/server/Daemon.d.ts +40 -1
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +319 -1
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/MethodRegistry.d.ts +29 -0
- package/dist/server/MethodRegistry.d.ts.map +1 -1
- package/dist/server/MethodRegistry.js.map +1 -1
- package/dist/server/dsl.d.ts +2 -2
- package/dist/server/dsl.d.ts.map +1 -1
- package/dist/server/dsl.js +10 -10
- package/dist/server/dsl.js.map +1 -1
- package/dist/server/methods/entry_read.js +5 -5
- package/dist/server/methods/entry_read.js.map +1 -1
- package/dist/server/methods/loop_cancel.d.ts +3 -0
- package/dist/server/methods/loop_cancel.d.ts.map +1 -0
- package/dist/server/methods/loop_cancel.js +27 -0
- package/dist/server/methods/loop_cancel.js.map +1 -0
- package/dist/server/methods/loop_run.d.ts.map +1 -1
- package/dist/server/methods/loop_run.js +46 -47
- package/dist/server/methods/loop_run.js.map +1 -1
- package/dist/server/methods/op_edit.js +3 -3
- package/dist/server/methods/op_edit.js.map +1 -1
- package/dist/server/methods/op_hide.js +3 -3
- package/dist/server/methods/op_hide.js.map +1 -1
- package/dist/server/methods/op_read.js +3 -3
- package/dist/server/methods/op_read.js.map +1 -1
- package/dist/server/methods/op_show.js +3 -3
- package/dist/server/methods/op_show.js.map +1 -1
- package/migrations/001_schema.sql +1 -1
- package/package.json +5 -4
package/dist/schemes/Exec.d.ts
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ExecStatement, FindStatement, HideStatement, ReadStatement, ShowStatement } from "@plurnk/plurnk-grammar";
|
|
2
|
+
import type { SchemeManifest, PlurnkSchemeContext } from "../core/scheme-types.ts";
|
|
3
|
+
import type { ReadResult, ShowHideResult } from "./_entry-ops.ts";
|
|
4
|
+
import type { EntryData, ReadEntryResult, WriteEntryResult, DeleteEntryResult } from "./_entry-crud.ts";
|
|
5
|
+
import type { FindResult } from "./_entry-find.ts";
|
|
6
|
+
type ExecResult = {
|
|
7
|
+
status: number;
|
|
8
|
+
body?: string;
|
|
9
|
+
attrs?: object;
|
|
10
|
+
error?: string;
|
|
11
|
+
};
|
|
2
12
|
export default class Exec {
|
|
13
|
+
#private;
|
|
3
14
|
static manifest: SchemeManifest;
|
|
15
|
+
idle(): Promise<void>;
|
|
16
|
+
exec(statement: ExecStatement, ctx: PlurnkSchemeContext): Promise<ExecResult>;
|
|
17
|
+
applyResolution(args: {
|
|
18
|
+
attrs: object;
|
|
19
|
+
body?: string;
|
|
20
|
+
}, ctx: PlurnkSchemeContext): Promise<{
|
|
21
|
+
status: number;
|
|
22
|
+
outcome?: string;
|
|
23
|
+
body?: string;
|
|
24
|
+
}>;
|
|
25
|
+
read(statement: ReadStatement, ctx: PlurnkSchemeContext): Promise<ReadResult>;
|
|
26
|
+
show(statement: ShowStatement | HideStatement, ctx: PlurnkSchemeContext): Promise<ShowHideResult>;
|
|
27
|
+
hide(statement: ShowStatement | HideStatement, ctx: PlurnkSchemeContext): Promise<ShowHideResult>;
|
|
28
|
+
find(statement: FindStatement, ctx: PlurnkSchemeContext): Promise<FindResult>;
|
|
29
|
+
readEntry(pathname: string, ctx: PlurnkSchemeContext): Promise<ReadEntryResult>;
|
|
30
|
+
writeEntry(pathname: string, entry: EntryData, ctx: PlurnkSchemeContext): Promise<WriteEntryResult>;
|
|
31
|
+
deleteEntry(pathname: string, ctx: PlurnkSchemeContext): Promise<DeleteEntryResult>;
|
|
4
32
|
}
|
|
33
|
+
export {};
|
|
5
34
|
//# sourceMappingURL=Exec.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Exec.d.ts","sourceRoot":"","sources":["../../src/schemes/Exec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Exec.d.ts","sourceRoot":"","sources":["../../src/schemes/Exec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAExH,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnF,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAExG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD,KAAK,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAsFpF,MAAM,CAAC,OAAO,OAAO,IAAI;;IACrB,MAAM,CAAC,QAAQ,EAAE,cAAc,CAa7B;IAKI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYrB,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAqC7E,eAAe,CACjB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EACtC,GAAG,EAAE,mBAAmB,GACzB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAkGzD,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAI7E,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC;IAIjG,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC;IAIjG,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAI7E,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC;IAI/E,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAInG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAG5F"}
|
package/dist/schemes/Exec.js
CHANGED
|
@@ -1,10 +1,77 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { readSessionEntry, showSessionEntry, hideSessionEntry } from "./_entry-ops.js";
|
|
3
|
+
import { readEntry, writeEntry, deleteEntry } from "./_entry-crud.js";
|
|
4
|
+
import { findSessionEntries } from "./_entry-find.js";
|
|
5
|
+
import { appendToChannel, setChannelState, openSubscription, closeSubscription, } from "../core/ChannelWrite.js";
|
|
6
|
+
// Per plurnk.md, EXEC's target slot is `cwd`. ParsedPath there means a
|
|
7
|
+
// bare local path or file:// URL — both decode to a filesystem directory.
|
|
8
|
+
// Anything else is rejected at proposal time.
|
|
9
|
+
const cwdFromTarget = (target) => {
|
|
10
|
+
if (target === null)
|
|
11
|
+
return null;
|
|
12
|
+
if (target.kind === "local")
|
|
13
|
+
return target.raw;
|
|
14
|
+
if (target.kind === "url" && (target.scheme === null || target.scheme === "file")) {
|
|
15
|
+
return target.pathname;
|
|
16
|
+
}
|
|
17
|
+
return null;
|
|
18
|
+
};
|
|
19
|
+
const runtimeToSpawnArgs = (runtime, command) => {
|
|
20
|
+
// plurnk.md: "EXEC may include an optional runtime tag ("sh", "node", etc.)."
|
|
21
|
+
// Map common runtimes to their invocation. Default = shell.
|
|
22
|
+
if (runtime === "" || runtime === "sh" || runtime === "bash") {
|
|
23
|
+
return { cmd: command, args: [], useShell: true };
|
|
24
|
+
}
|
|
25
|
+
if (runtime === "node")
|
|
26
|
+
return { cmd: "node", args: ["-e", command], useShell: false };
|
|
27
|
+
if (runtime === "python" || runtime === "python3")
|
|
28
|
+
return { cmd: "python3", args: ["-c", command], useShell: false };
|
|
29
|
+
// Unknown runtime: fall through to shell with the runtime as the first arg
|
|
30
|
+
// (treat as `<runtime> -c <command>` style). Conservative.
|
|
31
|
+
return { cmd: runtime, args: ["-c", command], useShell: false };
|
|
32
|
+
};
|
|
33
|
+
const streamShellCommand = async (runtime, command, cwd, db, streamEventNotify, entryId, signal) => {
|
|
34
|
+
const { cmd, args, useShell } = runtimeToSpawnArgs(runtime, command);
|
|
35
|
+
return new Promise((resolvePromise, rejectPromise) => {
|
|
36
|
+
const child = spawn(cmd, args, {
|
|
37
|
+
shell: useShell,
|
|
38
|
+
signal,
|
|
39
|
+
cwd: cwd ?? undefined,
|
|
40
|
+
});
|
|
41
|
+
const pending = [];
|
|
42
|
+
child.stdout.on("data", (chunk) => {
|
|
43
|
+
pending.push(appendToChannel(db, {
|
|
44
|
+
entryId, channel: "stdout", chunk: chunk.toString("utf8"), notify: streamEventNotify,
|
|
45
|
+
}));
|
|
46
|
+
});
|
|
47
|
+
child.stderr.on("data", (chunk) => {
|
|
48
|
+
pending.push(appendToChannel(db, {
|
|
49
|
+
entryId, channel: "stderr", chunk: chunk.toString("utf8"), notify: streamEventNotify,
|
|
50
|
+
}));
|
|
51
|
+
});
|
|
52
|
+
child.on("error", (err) => {
|
|
53
|
+
if (err.code === "ABORT_ERR") {
|
|
54
|
+
Promise.all(pending).then(() => {
|
|
55
|
+
resolvePromise({ exitCode: -1, aborted: true });
|
|
56
|
+
}).catch(rejectPromise);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
rejectPromise(err);
|
|
60
|
+
});
|
|
61
|
+
child.on("close", (code, killedBySignal) => {
|
|
62
|
+
Promise.all(pending).then(() => {
|
|
63
|
+
resolvePromise({
|
|
64
|
+
exitCode: code ?? -1,
|
|
65
|
+
aborted: killedBySignal !== null,
|
|
66
|
+
});
|
|
67
|
+
}).catch(rejectPromise);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
};
|
|
4
71
|
export default class Exec {
|
|
5
72
|
static manifest = {
|
|
6
73
|
name: "exec",
|
|
7
|
-
channels: {},
|
|
74
|
+
channels: { stdout: "text/plain", stderr: "text/plain" },
|
|
8
75
|
defaultChannel: "stdout",
|
|
9
76
|
category: "data",
|
|
10
77
|
scope: "session",
|
|
@@ -12,9 +79,165 @@ export default class Exec {
|
|
|
12
79
|
volatile: true,
|
|
13
80
|
modelVisible: true,
|
|
14
81
|
flags: {
|
|
15
|
-
excludedInAsk: true,
|
|
16
|
-
proposes: true,
|
|
82
|
+
excludedInAsk: true,
|
|
83
|
+
proposes: true,
|
|
17
84
|
},
|
|
18
85
|
};
|
|
86
|
+
#activeAborts = new Map();
|
|
87
|
+
#activeSpawns = new Map();
|
|
88
|
+
async idle() {
|
|
89
|
+
await Promise.allSettled([...this.#activeSpawns.values()]);
|
|
90
|
+
}
|
|
91
|
+
// EXEC op handler — the actual model-facing entry point per plurnk.md.
|
|
92
|
+
// `<<EXEC[runtime](cwd):command:EXEC` →
|
|
93
|
+
// signal=runtime, target=cwd (ParsedPath local/file or null), body=command.
|
|
94
|
+
//
|
|
95
|
+
// Proposes (status=202) with attrs={runtime, cwd, command, pathname}.
|
|
96
|
+
// applyResolution spawns the subprocess; output streams into the
|
|
97
|
+
// auto-generated exec://<pathname> entry's stdout/stderr channels.
|
|
98
|
+
// The model READs that entry on a subsequent turn to see what happened.
|
|
99
|
+
async exec(statement, ctx) {
|
|
100
|
+
const command = statement.body ?? "";
|
|
101
|
+
if (command.length === 0) {
|
|
102
|
+
return { status: 400, error: "EXEC requires a command body" };
|
|
103
|
+
}
|
|
104
|
+
if (statement.target !== null) {
|
|
105
|
+
if (statement.target.kind === "url" && statement.target.scheme !== null && statement.target.scheme !== "file") {
|
|
106
|
+
return { status: 400, error: `EXEC cwd must be a local path or file:// URL; got ${statement.target.scheme}://` };
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const runtime = typeof statement.signal === "string" ? statement.signal : "";
|
|
110
|
+
const KNOWN_RUNTIMES = new Set(["", "sh", "bash", "node", "python", "python3"]);
|
|
111
|
+
if (!KNOWN_RUNTIMES.has(runtime)) {
|
|
112
|
+
return { status: 501, error: `\`${runtime}\` executable not configured.` };
|
|
113
|
+
}
|
|
114
|
+
const cwdFromOp = cwdFromTarget(statement.target);
|
|
115
|
+
// Default cwd to the session's project_root so EXEC runs in the
|
|
116
|
+
// same directory File scheme writes to. Without this default, the
|
|
117
|
+
// model creates a file via EDIT (lands in project_root) and then
|
|
118
|
+
// EXECs (runs in daemon cwd) and can't find what it just wrote.
|
|
119
|
+
// Explicit (cwd) in the EXEC statement still wins.
|
|
120
|
+
let cwd = cwdFromOp;
|
|
121
|
+
if (cwd === null) {
|
|
122
|
+
const sessionRow = await ctx.db.envelope_get_session.get({ id: ctx.sessionId });
|
|
123
|
+
cwd = sessionRow?.project_root ?? null;
|
|
124
|
+
}
|
|
125
|
+
// Auto-generated pathname so the model can READ exec://<pathname> later.
|
|
126
|
+
// Short random suffix keeps it readable while remaining unique within a session.
|
|
127
|
+
const pathname = `r-${crypto.randomUUID().slice(0, 8)}`;
|
|
128
|
+
const attrs = { runtime, cwd, command, pathname };
|
|
129
|
+
// Body shown to client during proposal review — `$ command` is the
|
|
130
|
+
// most-readable summary regardless of runtime.
|
|
131
|
+
const preview = runtime !== "" ? `[${runtime}] ${command}` : `$ ${command}`;
|
|
132
|
+
return { status: 202, body: preview, attrs };
|
|
133
|
+
}
|
|
134
|
+
async applyResolution(args, ctx) {
|
|
135
|
+
const attrs = args.attrs;
|
|
136
|
+
const command = attrs.command;
|
|
137
|
+
const pathname = attrs.pathname;
|
|
138
|
+
const runtime = typeof attrs.runtime === "string" ? attrs.runtime : "";
|
|
139
|
+
const cwd = (typeof attrs.cwd === "string" && attrs.cwd.length > 0) ? attrs.cwd : null;
|
|
140
|
+
if (typeof command !== "string" || command.length === 0) {
|
|
141
|
+
return { status: 500, outcome: "missing_command" };
|
|
142
|
+
}
|
|
143
|
+
if (typeof pathname !== "string" || pathname.length === 0) {
|
|
144
|
+
return { status: 500, outcome: "missing_pathname" };
|
|
145
|
+
}
|
|
146
|
+
const seed = {
|
|
147
|
+
channels: {
|
|
148
|
+
stdout: { content: "", mimetype: "text/plain", state: "active" },
|
|
149
|
+
stderr: { content: "", mimetype: "text/plain", state: "active" },
|
|
150
|
+
},
|
|
151
|
+
tags: [],
|
|
152
|
+
};
|
|
153
|
+
const { entryId } = await writeEntry(pathname, seed, ctx, "exec");
|
|
154
|
+
if (entryId === null)
|
|
155
|
+
return { status: 500, outcome: "entry_write_failed" };
|
|
156
|
+
const subscriptionId = await openSubscription(ctx.db, {
|
|
157
|
+
runId: ctx.runId, entryId, scheme: "exec",
|
|
158
|
+
handle: runtime !== "" ? `${runtime}: ${command}` : command,
|
|
159
|
+
});
|
|
160
|
+
const controller = new AbortController();
|
|
161
|
+
if (ctx.signal !== undefined) {
|
|
162
|
+
if (ctx.signal.aborted)
|
|
163
|
+
controller.abort(ctx.signal.reason);
|
|
164
|
+
else
|
|
165
|
+
ctx.signal.addEventListener("abort", () => controller.abort(ctx.signal.reason), { once: true });
|
|
166
|
+
}
|
|
167
|
+
this.#activeAborts.set(subscriptionId, controller);
|
|
168
|
+
const tail = this.#runSpawn({
|
|
169
|
+
runtime, command, cwd, db: ctx.db,
|
|
170
|
+
streamEventNotify: ctx.streamEventNotify,
|
|
171
|
+
wakeRunNotify: ctx.wakeRunNotify,
|
|
172
|
+
sessionId: ctx.sessionId, runId: ctx.runId, pathname,
|
|
173
|
+
entryId, subscriptionId, signal: controller.signal,
|
|
174
|
+
});
|
|
175
|
+
this.#activeSpawns.set(subscriptionId, tail);
|
|
176
|
+
return { status: 200, outcome: "started" };
|
|
177
|
+
}
|
|
178
|
+
async #runSpawn(opts) {
|
|
179
|
+
const { runtime, command, cwd, db, streamEventNotify, wakeRunNotify, sessionId, runId, pathname, entryId, subscriptionId, signal } = opts;
|
|
180
|
+
let closeStatus = 500;
|
|
181
|
+
let exitLabel = "spawn_failed";
|
|
182
|
+
let stdoutLength = 0;
|
|
183
|
+
let stderrLength = 0;
|
|
184
|
+
try {
|
|
185
|
+
let outcome;
|
|
186
|
+
try {
|
|
187
|
+
outcome = await streamShellCommand(runtime, command, cwd, db, streamEventNotify, entryId, signal);
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
await setChannelState(db, { entryId, channel: "stdout", state: "errored", notify: streamEventNotify });
|
|
191
|
+
await setChannelState(db, { entryId, channel: "stderr", state: "errored", notify: streamEventNotify });
|
|
192
|
+
await closeSubscription(db, { subscriptionId, status: 500 });
|
|
193
|
+
console.error("exec spawn_failed:", err instanceof Error ? err.message : String(err));
|
|
194
|
+
closeStatus = 500;
|
|
195
|
+
exitLabel = "spawn_failed";
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
closeStatus = outcome.aborted ? 499 : outcome.exitCode === 0 ? 200 : 500;
|
|
199
|
+
exitLabel = outcome.aborted ? "aborted" : `exit ${outcome.exitCode}`;
|
|
200
|
+
const terminalState = outcome.exitCode === 0 && !outcome.aborted ? "closed" : "errored";
|
|
201
|
+
await setChannelState(db, { entryId, channel: "stdout", state: terminalState, notify: streamEventNotify });
|
|
202
|
+
await setChannelState(db, { entryId, channel: "stderr", state: terminalState, notify: streamEventNotify });
|
|
203
|
+
await closeSubscription(db, { subscriptionId, status: closeStatus });
|
|
204
|
+
const stdoutMeta = await db.channel_meta.get({ entry_id: entryId, channel: "stdout" });
|
|
205
|
+
const stderrMeta = await db.channel_meta.get({ entry_id: entryId, channel: "stderr" });
|
|
206
|
+
stdoutLength = stdoutMeta?.contentLength ?? 0;
|
|
207
|
+
stderrLength = stderrMeta?.contentLength ?? 0;
|
|
208
|
+
}
|
|
209
|
+
finally {
|
|
210
|
+
this.#activeAborts.delete(subscriptionId);
|
|
211
|
+
this.#activeSpawns.delete(subscriptionId);
|
|
212
|
+
if (wakeRunNotify !== undefined) {
|
|
213
|
+
wakeRunNotify({
|
|
214
|
+
sessionId, runId, entryId, subscriptionId, closeStatus,
|
|
215
|
+
scheme: "exec",
|
|
216
|
+
summary: `exec://${pathname} completed (${exitLabel}); stdout=${stdoutLength} bytes, stderr=${stderrLength} bytes`,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
async read(statement, ctx) {
|
|
222
|
+
return readSessionEntry(statement, ctx, Exec.manifest);
|
|
223
|
+
}
|
|
224
|
+
async show(statement, ctx) {
|
|
225
|
+
return showSessionEntry(statement, ctx, Exec.manifest);
|
|
226
|
+
}
|
|
227
|
+
async hide(statement, ctx) {
|
|
228
|
+
return hideSessionEntry(statement, ctx, Exec.manifest);
|
|
229
|
+
}
|
|
230
|
+
async find(statement, ctx) {
|
|
231
|
+
return findSessionEntries(statement, ctx, Exec.manifest.name);
|
|
232
|
+
}
|
|
233
|
+
async readEntry(pathname, ctx) {
|
|
234
|
+
return readEntry(pathname, ctx, Exec.manifest.name);
|
|
235
|
+
}
|
|
236
|
+
async writeEntry(pathname, entry, ctx) {
|
|
237
|
+
return writeEntry(pathname, entry, ctx, Exec.manifest.name);
|
|
238
|
+
}
|
|
239
|
+
async deleteEntry(pathname, ctx) {
|
|
240
|
+
return deleteEntry(pathname, ctx, Exec.manifest.name);
|
|
241
|
+
}
|
|
19
242
|
}
|
|
20
243
|
//# sourceMappingURL=Exec.js.map
|
package/dist/schemes/Exec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Exec.js","sourceRoot":"","sources":["../../src/schemes/Exec.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,0EAA0E;AAC1E,iCAAiC;AAEjC,MAAM,CAAC,OAAO,OAAO,IAAI;IACrB,MAAM,CAAC,QAAQ,GAAmB;QAC9B,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,EAAE;QACZ,cAAc,EAAE,QAAQ;QACxB,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC/B,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAI;QAClB,KAAK,EAAE;YACH,aAAa,EAAE,IAAI,EAAI,gDAAgD;YACvE,QAAQ,EAAE,IAAI,EAAU,+CAA+C;SAC1E;KACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"Exec.js","sourceRoot":"","sources":["../../src/schemes/Exec.ts"],"names":[],"mappings":"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"}
|
package/dist/schemes/File.d.ts
CHANGED
|
@@ -4,12 +4,16 @@ type ReadResult = {
|
|
|
4
4
|
status: number;
|
|
5
5
|
content: string | null;
|
|
6
6
|
mimetype: string | null;
|
|
7
|
+
error?: string;
|
|
8
|
+
startLine?: number | null;
|
|
9
|
+
matches?: number | null;
|
|
7
10
|
};
|
|
8
11
|
type EditResult = {
|
|
9
12
|
status: number;
|
|
10
13
|
body?: string;
|
|
11
14
|
attrs?: object;
|
|
12
15
|
error?: string;
|
|
16
|
+
diff?: string;
|
|
13
17
|
};
|
|
14
18
|
type ApplyArgs = {
|
|
15
19
|
attrs: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"File.d.ts","sourceRoot":"","sources":["../../src/schemes/File.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE3E,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"File.d.ts","sourceRoot":"","sources":["../../src/schemes/File.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE3E,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAMnF,KAAK,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAM1J,KAAK,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACnG,KAAK,SAAS,GAAG;IAAE,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACzH,KAAK,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAgDvE,MAAM,CAAC,OAAO,OAAO,IAAI;IACrB,MAAM,CAAC,QAAQ,EAAE,cAAc,CAY7B;IAEI,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAoE7E,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IA8E7E,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;CAkDzF"}
|
package/dist/schemes/File.js
CHANGED
|
@@ -2,6 +2,9 @@ import { readFile, realpath, writeFile } from "node:fs/promises";
|
|
|
2
2
|
import { resolve, relative, isAbsolute } from "node:path";
|
|
3
3
|
import { createPatch } from "diff";
|
|
4
4
|
import { writeEntry } from "./_entry-crud.js";
|
|
5
|
+
import { isBinaryMimetype, isJsonMimetype, normalizeAutoTextMimetype, TEXT_PRIMITIVE_MIMETYPE } from "../core/mimetype-binary.js";
|
|
6
|
+
import { sliceLines, sliceJsonItems, applyLineMarkerEdit, applyJsonItemEdit } from "../core/line-marker.js";
|
|
7
|
+
import { matchAgainstContent } from "../core/matcher.js";
|
|
5
8
|
// Workspace root for file ops is sourced from `sessions.project_root`,
|
|
6
9
|
// supplied by the client at session.create or session.set_root (issue
|
|
7
10
|
// #150 wired the RPC; F.1 added the column). Server doesn't guess —
|
|
@@ -14,6 +17,18 @@ const loadSessionRoot = async (db, sessionId) => {
|
|
|
14
17
|
};
|
|
15
18
|
// Resolve + workspace-root containment check. Returns the canonical
|
|
16
19
|
// path on success; classified error on absence/traversal. Used by read.
|
|
20
|
+
// Detect mimetype from a file's path. Routes through the Mimetypes service
|
|
21
|
+
// when available; falls back to the text primitive (text/markdown). The
|
|
22
|
+
// `normalizeAutoTextMimetype` wrapper ensures text/plain returned by the
|
|
23
|
+
// service is normalized to text/markdown — plurnk-service never auto-
|
|
24
|
+
// derives text/plain (see mimetype-binary.ts TEXT_PRIMITIVE_MIMETYPE).
|
|
25
|
+
const detectFileMimetype = async (canonical, ctx) => {
|
|
26
|
+
if (ctx.mimetypes !== undefined) {
|
|
27
|
+
const detected = await ctx.mimetypes.detect({ path: canonical });
|
|
28
|
+
return normalizeAutoTextMimetype(detected);
|
|
29
|
+
}
|
|
30
|
+
return TEXT_PRIMITIVE_MIMETYPE;
|
|
31
|
+
};
|
|
17
32
|
const resolveContained = async (pathname, root) => {
|
|
18
33
|
const requested = isAbsolute(pathname) ? pathname : resolve(root, pathname);
|
|
19
34
|
let canonical;
|
|
@@ -46,47 +61,91 @@ export default class File {
|
|
|
46
61
|
},
|
|
47
62
|
};
|
|
48
63
|
async read(statement, ctx) {
|
|
49
|
-
if (statement.
|
|
50
|
-
return { status: 400, content: null, mimetype: null };
|
|
51
|
-
if (statement.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
64
|
+
if (statement.target === null)
|
|
65
|
+
return { status: 400, content: null, mimetype: null, error: "READ requires a target path" };
|
|
66
|
+
if (Array.isArray(statement.signal) && statement.signal.length > 0) {
|
|
67
|
+
// file:// entries don't carry tag metadata (tags belong to canonical
|
|
68
|
+
// entries; file entries are disk-truth). A tag-filtered READ on a
|
|
69
|
+
// file path will never match — 404 by definition.
|
|
70
|
+
return { status: 404, content: null, mimetype: null };
|
|
71
|
+
}
|
|
57
72
|
const root = await loadSessionRoot(ctx.db, ctx.sessionId);
|
|
58
73
|
if (root === null)
|
|
59
|
-
return { status: 400, content: null, mimetype: null };
|
|
60
|
-
const pathname = statement.
|
|
74
|
+
return { status: 400, content: null, mimetype: null, error: "session has no project_root; cannot READ files" };
|
|
75
|
+
const pathname = statement.target.kind === "url" ? statement.target.pathname : statement.target.raw;
|
|
61
76
|
const resolved = await resolveContained(pathname, root);
|
|
62
77
|
if ("error" in resolved) {
|
|
63
78
|
if (resolved.error === "not-found")
|
|
64
79
|
return { status: 404, content: null, mimetype: null };
|
|
65
|
-
return { status: 403, content: null, mimetype: null };
|
|
80
|
+
return { status: 403, content: null, mimetype: null };
|
|
66
81
|
}
|
|
82
|
+
const mimetype = await detectFileMimetype(resolved.canonical, ctx);
|
|
83
|
+
if (isBinaryMimetype(mimetype))
|
|
84
|
+
return { status: 415, content: null, mimetype };
|
|
67
85
|
const content = await readFile(resolved.canonical, "utf8");
|
|
68
|
-
|
|
86
|
+
// `<L>` scopes; body matches within the scope (slice-then-match).
|
|
87
|
+
// `<L>` dispatches on source mimetype (plurnk-grammar 0.13.0):
|
|
88
|
+
// JSON → sliceJsonItems (item index)
|
|
89
|
+
// line-navigable → sliceLines (line index)
|
|
90
|
+
let workingContent = content;
|
|
91
|
+
let workingStart = 1;
|
|
92
|
+
let workingMimetypeForSlice = TEXT_PRIMITIVE_MIMETYPE;
|
|
93
|
+
if (statement.lineMarker !== null) {
|
|
94
|
+
if (isJsonMimetype(mimetype)) {
|
|
95
|
+
const sliced = sliceJsonItems(content, statement.lineMarker);
|
|
96
|
+
if (sliced.status !== 200)
|
|
97
|
+
return { status: sliced.status, content: null, mimetype };
|
|
98
|
+
workingContent = sliced.body ?? "[]";
|
|
99
|
+
workingStart = null;
|
|
100
|
+
workingMimetypeForSlice = "application/json";
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
const sliced = sliceLines(content, statement.lineMarker);
|
|
104
|
+
if (sliced.status !== 200)
|
|
105
|
+
return { status: sliced.status, content: null, mimetype };
|
|
106
|
+
workingContent = sliced.text ?? "";
|
|
107
|
+
workingStart = sliced.startLine ?? null;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (statement.body !== null) {
|
|
111
|
+
const matched = matchAgainstContent(statement.body, workingContent, mimetype, workingStart ?? 1);
|
|
112
|
+
if (matched.status === 204) {
|
|
113
|
+
return { status: 204, content: "", mimetype: "application/json", startLine: null, matches: 0 };
|
|
114
|
+
}
|
|
115
|
+
if (matched.status !== 200)
|
|
116
|
+
return { status: matched.status, content: null, mimetype };
|
|
117
|
+
return { status: 200, content: matched.body ?? "[]", mimetype: "application/json", startLine: null, matches: matched.matches };
|
|
118
|
+
}
|
|
119
|
+
if (statement.lineMarker !== null) {
|
|
120
|
+
const isEmptyJsonArray = workingMimetypeForSlice === "application/json" && workingContent === "[]";
|
|
121
|
+
if (workingContent === "" || isEmptyJsonArray) {
|
|
122
|
+
return { status: 204, content: "", mimetype: workingMimetypeForSlice, startLine: null };
|
|
123
|
+
}
|
|
124
|
+
return { status: 200, content: workingContent, mimetype: workingMimetypeForSlice, startLine: workingStart };
|
|
125
|
+
}
|
|
126
|
+
if (content === "")
|
|
127
|
+
return { status: 204, content: "", mimetype, startLine: null };
|
|
128
|
+
return { status: 200, content, mimetype, startLine: 1 };
|
|
69
129
|
}
|
|
70
130
|
// Edit op (task #42 canonical proposal consumer). Returns status=202
|
|
71
131
|
// with a udiff body for client review + attrs carrying the full patched
|
|
72
132
|
// content. Engine writes the proposed log entry, pauses dispatch, and
|
|
73
133
|
// calls applyResolution() (below) after the proposal accepts.
|
|
74
134
|
async edit(statement, ctx) {
|
|
75
|
-
if (statement.
|
|
135
|
+
if (statement.target === null)
|
|
76
136
|
return { status: 400, error: "EDIT requires a path" };
|
|
77
|
-
if (statement.lineMarker !== null)
|
|
78
|
-
return { status: 501, error: "lineMarker-based edits not yet supported" };
|
|
79
137
|
const root = await loadSessionRoot(ctx.db, ctx.sessionId);
|
|
80
138
|
if (root === null) {
|
|
81
139
|
return { status: 400, error: "session has no project_root; client must call session.create({projectRoot}) or session.set_root({projectRoot}) before file ops" };
|
|
82
140
|
}
|
|
83
|
-
const pathname = statement.
|
|
141
|
+
const pathname = statement.target.kind === "url" ? statement.target.pathname : statement.target.raw;
|
|
84
142
|
// Containment check (canonical path inside workspace). For edits,
|
|
85
143
|
// a not-found target is fine — we're proposing to create or
|
|
86
144
|
// overwrite. Traversal escape is fatal.
|
|
87
145
|
let canonical;
|
|
88
146
|
const requested = isAbsolute(pathname) ? pathname : resolve(root, pathname);
|
|
89
147
|
let original = "";
|
|
148
|
+
let fileExists = true;
|
|
90
149
|
try {
|
|
91
150
|
canonical = await realpath(requested);
|
|
92
151
|
original = await readFile(canonical, "utf8");
|
|
@@ -94,17 +153,39 @@ export default class File {
|
|
|
94
153
|
catch (err) {
|
|
95
154
|
if (err.code !== "ENOENT")
|
|
96
155
|
throw err;
|
|
97
|
-
// File doesn't exist — propose to create it.
|
|
98
156
|
canonical = requested;
|
|
157
|
+
fileExists = false;
|
|
99
158
|
}
|
|
100
|
-
// Re-check containment against the
|
|
101
|
-
//
|
|
102
|
-
// workspace via symlink; reject.
|
|
159
|
+
// Re-check containment against the canonical path. Symlinks could
|
|
160
|
+
// escape workspace; reject.
|
|
103
161
|
const rel = relative(root, canonical);
|
|
104
162
|
if (rel.startsWith("..") || isAbsolute(rel)) {
|
|
105
163
|
return { status: 403, error: "path escapes workspace root" };
|
|
106
164
|
}
|
|
107
|
-
|
|
165
|
+
// 415 on binary entries (per AGENTS.md "Resolved ambiguities" §2).
|
|
166
|
+
// Existing file's mimetype takes precedence; for new files, derive
|
|
167
|
+
// from the proposed path so we don't accept binary writes via edit.
|
|
168
|
+
const mimetype = await detectFileMimetype(canonical, ctx);
|
|
169
|
+
if (isBinaryMimetype(mimetype))
|
|
170
|
+
return { status: 415, error: `cannot EDIT binary mimetype \`${mimetype}\`` };
|
|
171
|
+
// `<L>` line marker dispatches on file mimetype: JSON →
|
|
172
|
+
// applyJsonItemEdit (structural item edit); otherwise →
|
|
173
|
+
// applyLineMarkerEdit (line edit). On a non-existent file,
|
|
174
|
+
// body becomes content regardless of marker (per "Resolved
|
|
175
|
+
// ambiguities" §3).
|
|
176
|
+
const body = statement.body ?? "";
|
|
177
|
+
let patched;
|
|
178
|
+
if (statement.lineMarker !== null && fileExists) {
|
|
179
|
+
const result = isJsonMimetype(mimetype)
|
|
180
|
+
? applyJsonItemEdit(original, statement.lineMarker, body)
|
|
181
|
+
: applyLineMarkerEdit(original, statement.lineMarker, body);
|
|
182
|
+
if (result.status !== 200)
|
|
183
|
+
return { status: result.status, error: result.error };
|
|
184
|
+
patched = result.result ?? "";
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
patched = body;
|
|
188
|
+
}
|
|
108
189
|
const patch = createPatch(rel, original, patched, "current", "proposed");
|
|
109
190
|
return {
|
|
110
191
|
status: 202,
|
|
@@ -112,9 +193,12 @@ export default class File {
|
|
|
112
193
|
attrs: {
|
|
113
194
|
path: rel,
|
|
114
195
|
canonical,
|
|
115
|
-
patch,
|
|
116
|
-
patched,
|
|
196
|
+
patch,
|
|
197
|
+
patched,
|
|
117
198
|
},
|
|
199
|
+
// Surface the diff at the result level too — the log render
|
|
200
|
+
// emits it for the model to see what changed (M.12).
|
|
201
|
+
diff: original !== patched ? patch : undefined,
|
|
118
202
|
};
|
|
119
203
|
}
|
|
120
204
|
// applyResolution — called by Engine.dispatch after a proposed log
|
package/dist/schemes/File.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"File.js","sourceRoot":"","sources":["../../src/schemes/File.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAInC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"File.js","sourceRoot":"","sources":["../../src/schemes/File.ts"],"names":[],"mappings":"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"}
|
package/dist/schemes/Log.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Log.d.ts","sourceRoot":"","sources":["../../src/schemes/Log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE1F,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"Log.d.ts","sourceRoot":"","sources":["../../src/schemes/Log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE1F,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAKnF,KAAK,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAC1I,KAAK,cAAc,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAiBzC,MAAM,CAAC,OAAO,OAAO,GAAG;;IACpB,MAAM,CAAC,QAAQ,EAAE,cAAc,CAS7B;IAEI,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IA0F7E,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC;IAIjF,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC;CAmB1F"}
|