@plurnk/plurnk-service 0.2.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 +98 -112
- 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 +10 -2
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +410 -113
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/ProviderRegistry.d.ts +1 -1
- package/dist/core/ProviderRegistry.d.ts.map +1 -1
- package/dist/core/ProviderRegistry.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 +174 -33
- 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/providers/Mock.d.ts +2 -2
- package/dist/providers/Mock.d.ts.map +1 -1
- package/dist/providers/Mock.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 +8 -4
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +184 -68
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Known.js +1 -1
- package/dist/schemes/Known.js.map +1 -1
- package/dist/schemes/Log.d.ts +9 -1
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +120 -19
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/Plurnk.d.ts +15 -1
- package/dist/schemes/Plurnk.d.ts.map +1 -1
- package/dist/schemes/Plurnk.js +50 -8
- package/dist/schemes/Plurnk.js.map +1 -1
- package/dist/schemes/Skill.js +1 -1
- package/dist/schemes/Skill.js.map +1 -1
- package/dist/schemes/Unknown.js +1 -1
- package/dist/schemes/Unknown.js.map +1 -1
- package/dist/schemes/_entry-crud.d.ts +5 -3
- 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 +269 -72
- 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 +10 -2
- 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/envelope.d.ts +2 -1
- package/dist/server/envelope.d.ts.map +1 -1
- package/dist/server/envelope.js +11 -8
- package/dist/server/envelope.js.map +1 -1
- package/dist/server/logEntry.d.ts +9 -9
- package/dist/server/logEntry.d.ts.map +1 -1
- package/dist/server/logEntry.js +10 -10
- package/dist/server/logEntry.js.map +1 -1
- package/dist/server/methods/_dispatchAsClient.d.ts.map +1 -1
- package/dist/server/methods/_dispatchAsClient.js +7 -2
- package/dist/server/methods/_dispatchAsClient.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 +53 -49
- 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 +324 -0
- package/package.json +19 -12
- package/migrations/001_sessions.sql +0 -11
- package/migrations/002_runs.sql +0 -16
- package/migrations/003_loops.sql +0 -12
- package/migrations/004_turns.sql +0 -18
- package/migrations/005_entries.sql +0 -44
- package/migrations/006_log_entries.sql +0 -51
- package/migrations/007_visibility.sql +0 -10
- package/migrations/008_schemes_providers.sql +0 -25
- package/migrations/009_cost_rollups.sql +0 -44
- package/migrations/010_subscriptions.sql +0 -36
- package/migrations/011_turn_call_metadata.sql +0 -7
- package/migrations/012_proposal_lifecycle.sql +0 -22
- package/migrations/013_log_entries_lifecycle_columns.sql +0 -22
- package/migrations/014_loop_flags.sql +0 -9
- package/migrations/015_sessions_project_root.sql +0 -6
- package/migrations/016_persona_columns.sql +0 -11
package/dist/server/dsl.js
CHANGED
|
@@ -32,7 +32,7 @@ const formatPath = (path) => {
|
|
|
32
32
|
// Build a HEREDOC statement string. `signal` is the raw signal payload —
|
|
33
33
|
// CSV tags `[a,b,c]` for most ops, a single number for SEND (`[200]`),
|
|
34
34
|
// a single runtime tag for EXEC (`[node]`).
|
|
35
|
-
const buildHeredoc = ({ op, suffix, signal,
|
|
35
|
+
const buildHeredoc = ({ op, suffix, signal, target, lineMarker, body, }) => `<<${op}${suffix}${signal}${target}${lineMarker}:${body}:${op}${suffix}`;
|
|
36
36
|
export const parseSingleStatement = (text) => {
|
|
37
37
|
const result = PlurnkParser.parse(text);
|
|
38
38
|
for (const item of result.items) {
|
|
@@ -50,35 +50,35 @@ export const parseAllStatements = (text) => {
|
|
|
50
50
|
export const buildEdit = (p) => parseSingleStatement(buildHeredoc({
|
|
51
51
|
op: "EDIT", suffix: randomSuffix(),
|
|
52
52
|
signal: formatTags(p.tags),
|
|
53
|
-
|
|
53
|
+
target: formatPath(p.target),
|
|
54
54
|
lineMarker: formatLineMarker(p.lineRange),
|
|
55
55
|
body: p.content ?? "",
|
|
56
56
|
}));
|
|
57
57
|
export const buildRead = (p) => parseSingleStatement(buildHeredoc({
|
|
58
58
|
op: "READ", suffix: randomSuffix(),
|
|
59
59
|
signal: formatTags(p.tags),
|
|
60
|
-
|
|
60
|
+
target: formatPath(p.target),
|
|
61
61
|
lineMarker: formatLineMarker(p.lineRange),
|
|
62
62
|
body: p.matcher ?? "",
|
|
63
63
|
}));
|
|
64
64
|
export const buildFind = (p) => parseSingleStatement(buildHeredoc({
|
|
65
65
|
op: "FIND", suffix: randomSuffix(),
|
|
66
66
|
signal: formatTags(p.tags),
|
|
67
|
-
|
|
67
|
+
target: formatPath(p.scope),
|
|
68
68
|
lineMarker: formatLineMarker(p.lineRange),
|
|
69
69
|
body: p.matcher ?? "",
|
|
70
70
|
}));
|
|
71
71
|
export const buildShow = (p) => parseSingleStatement(buildHeredoc({
|
|
72
72
|
op: "SHOW", suffix: randomSuffix(),
|
|
73
73
|
signal: formatTags(p.tags),
|
|
74
|
-
|
|
74
|
+
target: formatPath(p.target),
|
|
75
75
|
lineMarker: formatLineMarker(p.lineRange),
|
|
76
76
|
body: p.matcher ?? "",
|
|
77
77
|
}));
|
|
78
78
|
export const buildHide = (p) => parseSingleStatement(buildHeredoc({
|
|
79
79
|
op: "HIDE", suffix: randomSuffix(),
|
|
80
80
|
signal: formatTags(p.tags),
|
|
81
|
-
|
|
81
|
+
target: formatPath(p.target),
|
|
82
82
|
lineMarker: formatLineMarker(p.lineRange),
|
|
83
83
|
body: p.matcher ?? "",
|
|
84
84
|
}));
|
|
@@ -88,7 +88,7 @@ export const buildCopy = (p) => {
|
|
|
88
88
|
return parseSingleStatement(buildHeredoc({
|
|
89
89
|
op: "COPY", suffix: randomSuffix(),
|
|
90
90
|
signal: formatTags(p.tags),
|
|
91
|
-
|
|
91
|
+
target: formatPath(p.source),
|
|
92
92
|
lineMarker: formatLineMarker(p.lineRange),
|
|
93
93
|
body: p.destination,
|
|
94
94
|
}));
|
|
@@ -96,21 +96,21 @@ export const buildCopy = (p) => {
|
|
|
96
96
|
export const buildMove = (p) => parseSingleStatement(buildHeredoc({
|
|
97
97
|
op: "MOVE", suffix: randomSuffix(),
|
|
98
98
|
signal: formatTags(p.tags),
|
|
99
|
-
|
|
99
|
+
target: formatPath(p.source),
|
|
100
100
|
lineMarker: formatLineMarker(p.lineRange),
|
|
101
101
|
body: p.destination ?? "",
|
|
102
102
|
}));
|
|
103
103
|
export const buildSend = (p) => parseSingleStatement(buildHeredoc({
|
|
104
104
|
op: "SEND", suffix: randomSuffix(),
|
|
105
105
|
signal: `[${p.status}]`,
|
|
106
|
-
|
|
106
|
+
target: p.recipient !== undefined ? formatPath(p.recipient) : "",
|
|
107
107
|
lineMarker: "",
|
|
108
108
|
body: p.body ?? "",
|
|
109
109
|
}));
|
|
110
110
|
export const buildExec = (p) => parseSingleStatement(buildHeredoc({
|
|
111
111
|
op: "EXEC", suffix: randomSuffix(),
|
|
112
112
|
signal: p.runtime !== undefined ? `[${p.runtime}]` : "",
|
|
113
|
-
|
|
113
|
+
target: p.cwd !== undefined ? formatPath(p.cwd) : "",
|
|
114
114
|
lineMarker: "",
|
|
115
115
|
body: p.command ?? "",
|
|
116
116
|
}));
|
package/dist/server/dsl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dsl.js","sourceRoot":"","sources":["../../src/server/dsl.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,sEAAsE;AACtE,iEAAiE;AACjE,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,8BAA8B;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,0EAA0E;AAC1E,0DAA0D;AAC1D,MAAM,YAAY,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAExG,MAAM,UAAU,GAAG,CAAC,IAA0B,EAAU,EAAE;IACtD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACvD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,EAA0B,EAAU,EAAE;IAC5D,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAC/C,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,KAAK;QAAE,OAAO,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC;IACrE,OAAO,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,IAAwB,EAAU,EAAE;IACpD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO,IAAI,IAAI,GAAG,CAAC;AACvB,CAAC,CAAC;AAEF,yEAAyE;AACzE,uEAAuE;AACvE,4CAA4C;AAC5C,MAAM,YAAY,GAAG,CAAC,EAClB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"dsl.js","sourceRoot":"","sources":["../../src/server/dsl.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ export interface ClientEnvelope {
|
|
|
21
21
|
runId: number;
|
|
22
22
|
runName: string;
|
|
23
23
|
runPersona: string | null;
|
|
24
|
-
clientLoopId: number;
|
|
24
|
+
clientLoopId: number | null;
|
|
25
25
|
}
|
|
26
26
|
export declare const generateSessionName: () => string;
|
|
27
27
|
export declare const generateRunName: () => string;
|
|
@@ -36,6 +36,7 @@ export declare const attachToSession: (db: Db, sessionId: number, opts?: {
|
|
|
36
36
|
runName?: string;
|
|
37
37
|
persona?: string | null;
|
|
38
38
|
}) => Promise<ClientEnvelope>;
|
|
39
|
+
export declare const ensureClientLoop: (db: Db, runId: number) => Promise<number>;
|
|
39
40
|
export declare const listRunsForSession: (db: Db, sessionId: number) => Promise<RunRow[]>;
|
|
40
41
|
export declare const closeClientLoop: (db: Db, loopId: number, status: 200 | 499) => Promise<void>;
|
|
41
42
|
export declare const listSessions: (db: Db) => Promise<SessionRow[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/server/envelope.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,EAAE,EAAc,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,MAAM;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/server/envelope.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,EAAE,EAAc,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,MAAM;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACrB;AAMD,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAWD,eAAO,MAAM,mBAAmB,QAAO,MAA2B,CAAC;AACnE,eAAO,MAAM,eAAe,QAAO,MAAuB,CAAC;AAE3D,eAAO,MAAM,oBAAoB,GAAU,IAAI,EAAE,EAAE,OAAM;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,KAAG,OAAO,CAAC,cAAc,CAe9K,CAAC;AAgCF,eAAO,MAAM,eAAe,GAAU,IAAI,EAAE,EAAE,WAAW,MAAM,EAAE,OAAM;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,KAAG,OAAO,CAAC,cAAc,CAUjK,CAAC;AAKF,eAAO,MAAM,gBAAgB,GAAU,IAAI,EAAE,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,MAAM,CAI5E,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,IAAI,EAAE,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAEpF,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,IAAI,EAAE,EAAE,QAAQ,MAAM,EAAE,QAAQ,GAAG,GAAG,GAAG,KAAG,OAAO,CAAC,IAAI,CAE7F,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,IAAI,EAAE,KAAG,OAAO,CAAC,UAAU,EAAE,CAE/D,CAAC;AAIF,eAAO,MAAM,wBAAwB,GAAU,IAAI,EAAE,EAAE,WAAW,MAAM,EAAE,aAAa,MAAM,GAAG,IAAI,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAI3H,CAAC;AAIF,eAAO,MAAM,oBAAoB,GAAU,IAAI,EAAE,EAAE,WAAW,MAAM,EAAE,SAAS,MAAM,GAAG,IAAI,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAInH,CAAC"}
|
package/dist/server/envelope.js
CHANGED
|
@@ -26,14 +26,11 @@ export const createClientEnvelope = async (db, opts = {}) => {
|
|
|
26
26
|
const run = await db.envelope_insert_run.get({ session_id: session.id, name: runName, persona: null });
|
|
27
27
|
if (run === undefined)
|
|
28
28
|
throw new Error("createClientEnvelope: run insert returned no row");
|
|
29
|
-
const loop = await db.envelope_insert_client_loop.get({ run_id: run.id });
|
|
30
|
-
if (loop === undefined)
|
|
31
|
-
throw new Error("createClientEnvelope: loop insert returned no row");
|
|
32
29
|
return {
|
|
33
30
|
sessionId: session.id, sessionName: session.name,
|
|
34
31
|
projectRoot: session.project_root, sessionPersona: session.persona,
|
|
35
32
|
runId: run.id, runName: run.name, runPersona: run.persona,
|
|
36
|
-
clientLoopId:
|
|
33
|
+
clientLoopId: null,
|
|
37
34
|
};
|
|
38
35
|
};
|
|
39
36
|
// Resolve the run inside a session. Three modes:
|
|
@@ -75,16 +72,22 @@ export const attachToSession = async (db, sessionId, opts = {}) => {
|
|
|
75
72
|
if (session === undefined)
|
|
76
73
|
throw new Error(`session ${sessionId} not found`);
|
|
77
74
|
const run = await resolveRun(db, session.id, opts);
|
|
78
|
-
const loop = await db.envelope_insert_client_loop.get({ run_id: run.id });
|
|
79
|
-
if (loop === undefined)
|
|
80
|
-
throw new Error("attachToSession: loop insert returned no row");
|
|
81
75
|
return {
|
|
82
76
|
sessionId: session.id, sessionName: session.name,
|
|
83
77
|
projectRoot: session.project_root, sessionPersona: session.persona,
|
|
84
78
|
runId: run.id, runName: run.name, runPersona: run.persona,
|
|
85
|
-
clientLoopId:
|
|
79
|
+
clientLoopId: null,
|
|
86
80
|
};
|
|
87
81
|
};
|
|
82
|
+
// Lazy client-loop allocator. Called from dispatchAsClient on the first
|
|
83
|
+
// client-origin op for this connection; subsequent ops reuse the same
|
|
84
|
+
// loop until the connection closes.
|
|
85
|
+
export const ensureClientLoop = async (db, runId) => {
|
|
86
|
+
const loop = await db.envelope_insert_client_loop.get({ run_id: runId });
|
|
87
|
+
if (loop === undefined)
|
|
88
|
+
throw new Error("ensureClientLoop: loop insert returned no row");
|
|
89
|
+
return loop.id;
|
|
90
|
+
};
|
|
88
91
|
export const listRunsForSession = async (db, sessionId) => {
|
|
89
92
|
return await db.envelope_list_runs_for_session.all({ session_id: sessionId });
|
|
90
93
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/server/envelope.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,kDAAkD;
|
|
1
|
+
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/server/envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,20 +4,20 @@ export interface LogEntryWire {
|
|
|
4
4
|
run_id: number;
|
|
5
5
|
loop_id: number;
|
|
6
6
|
turn_id: number;
|
|
7
|
-
|
|
7
|
+
sequence: number;
|
|
8
8
|
at: string;
|
|
9
9
|
origin: string;
|
|
10
10
|
op: string;
|
|
11
11
|
suffix: string;
|
|
12
12
|
signal: unknown;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
scheme: string | null;
|
|
14
|
+
username: string | null;
|
|
15
|
+
password: string | null;
|
|
16
|
+
hostname: string | null;
|
|
17
|
+
port: number | null;
|
|
18
|
+
pathname: string | null;
|
|
19
|
+
params: unknown;
|
|
20
|
+
fragment: string | null;
|
|
21
21
|
lineMarker: unknown;
|
|
22
22
|
tx: unknown;
|
|
23
23
|
mimetype_tx: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logEntry.d.ts","sourceRoot":"","sources":["../../src/server/logEntry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAc,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,
|
|
1
|
+
{"version":3,"file":"logEntry.d.ts","sourceRoot":"","sources":["../../src/server/logEntry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAc,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAClB;AAQD,eAAO,MAAM,aAAa,GAAU,IAAI,EAAE,EAAE,IAAI,MAAM,KAAG,OAAO,CAAC,YAAY,CA8B5E,CAAC"}
|
package/dist/server/logEntry.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Hydrate a log_entries row for the wire. Re-parses JSON-encoded columns
|
|
2
|
-
// (signal,
|
|
2
|
+
// (signal, params, lineMarker, tx, rx) so the client receives
|
|
3
3
|
// structured values, not opaque strings.
|
|
4
4
|
const parseJsonOrNull = (v) => {
|
|
5
5
|
if (v === null || v === undefined)
|
|
@@ -17,20 +17,20 @@ export const fetchLogEntry = async (db, id) => {
|
|
|
17
17
|
run_id: row.run_id,
|
|
18
18
|
loop_id: row.loop_id,
|
|
19
19
|
turn_id: row.turn_id,
|
|
20
|
-
|
|
20
|
+
sequence: row.sequence,
|
|
21
21
|
at: row.at,
|
|
22
22
|
origin: row.origin,
|
|
23
23
|
op: row.op,
|
|
24
24
|
suffix: row.suffix,
|
|
25
25
|
signal: parseJsonOrNull(row.signal),
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
26
|
+
scheme: row.scheme,
|
|
27
|
+
username: row.username,
|
|
28
|
+
password: row.password,
|
|
29
|
+
hostname: row.hostname,
|
|
30
|
+
port: row.port,
|
|
31
|
+
pathname: row.pathname,
|
|
32
|
+
params: parseJsonOrNull(row.params),
|
|
33
|
+
fragment: row.fragment,
|
|
34
34
|
lineMarker: parseJsonOrNull(row.lineMarker),
|
|
35
35
|
tx: parseJsonOrNull(row.tx),
|
|
36
36
|
mimetype_tx: row.mimetype_tx,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logEntry.js","sourceRoot":"","sources":["../../src/server/logEntry.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,
|
|
1
|
+
{"version":3,"file":"logEntry.js","sourceRoot":"","sources":["../../src/server/logEntry.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,8DAA8D;AAC9D,yCAAyC;AAgCzC,MAAM,eAAe,GAAG,CAAC,CAAU,EAAW,EAAE;IAC5C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,EAAM,EAAE,EAAU,EAAyB,EAAE;IAC7E,MAAM,GAAG,GAAG,MAAO,EAAE,CAAC,eAA8B,CAAC,GAAG,CAA0B,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1F,IAAI,GAAG,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;IAC1E,OAAO;QACH,EAAE,EAAE,GAAG,CAAC,EAAY;QACpB,MAAM,EAAE,GAAG,CAAC,MAAgB;QAC5B,OAAO,EAAE,GAAG,CAAC,OAAiB;QAC9B,OAAO,EAAE,GAAG,CAAC,OAAiB;QAC9B,QAAQ,EAAE,GAAG,CAAC,QAAkB;QAChC,EAAE,EAAE,GAAG,CAAC,EAAY;QACpB,MAAM,EAAE,GAAG,CAAC,MAAgB;QAC5B,EAAE,EAAE,GAAG,CAAC,EAAY;QACpB,MAAM,EAAE,GAAG,CAAC,MAAgB;QAC5B,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;QACnC,MAAM,EAAE,GAAG,CAAC,MAAuB;QACnC,QAAQ,EAAE,GAAG,CAAC,QAAyB;QACvC,QAAQ,EAAE,GAAG,CAAC,QAAyB;QACvC,QAAQ,EAAE,GAAG,CAAC,QAAyB;QACvC,IAAI,EAAE,GAAG,CAAC,IAAqB;QAC/B,QAAQ,EAAE,GAAG,CAAC,QAAyB;QACvC,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;QACnC,QAAQ,EAAE,GAAG,CAAC,QAAyB;QACvC,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;QAC3C,EAAE,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,WAAW,EAAE,GAAG,CAAC,WAAqB;QACtC,EAAE,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,WAAW,EAAE,GAAG,CAAC,WAAqB;QACtC,SAAS,EAAE,GAAG,CAAC,SAAmB;QAClC,MAAM,EAAE,GAAG,CAAC,MAAgB;KAC/B,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_dispatchAsClient.d.ts","sourceRoot":"","sources":["../../../src/server/methods/_dispatchAsClient.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"_dispatchAsClient.d.ts","sourceRoot":"","sources":["../../../src/server/methods/_dispatchAsClient.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK3D,MAAM,WAAW,sBAAsB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,gBAAgB,GAAU,KAAK,cAAc,EAAE,WAAW,eAAe,KAAG,OAAO,CAAC,sBAAsB,CA0BtH,CAAC"}
|
|
@@ -5,11 +5,16 @@
|
|
|
5
5
|
// result for the RPC response.
|
|
6
6
|
import { insertClientTurn } from "../clientTurn.js";
|
|
7
7
|
import { fetchLogEntry } from "../logEntry.js";
|
|
8
|
+
import { ensureClientLoop } from "../envelope.js";
|
|
8
9
|
export const dispatchAsClient = async (ctx, statement) => {
|
|
9
10
|
if (ctx.session === null) {
|
|
10
11
|
throw new Error("dispatchAsClient requires an attached session");
|
|
11
12
|
}
|
|
12
|
-
const { sessionId, runId
|
|
13
|
+
const { sessionId, runId } = ctx.session;
|
|
14
|
+
if (ctx.session.clientLoopId === null) {
|
|
15
|
+
ctx.session.clientLoopId = await ensureClientLoop(ctx.db, runId);
|
|
16
|
+
}
|
|
17
|
+
const clientLoopId = ctx.session.clientLoopId;
|
|
13
18
|
const turnId = await insertClientTurn(ctx.db, clientLoopId);
|
|
14
19
|
const result = await ctx.engine.dispatch({
|
|
15
20
|
statement,
|
|
@@ -17,7 +22,7 @@ export const dispatchAsClient = async (ctx, statement) => {
|
|
|
17
22
|
runId,
|
|
18
23
|
loopId: clientLoopId,
|
|
19
24
|
turnId,
|
|
20
|
-
|
|
25
|
+
sequence: 1,
|
|
21
26
|
origin: "client",
|
|
22
27
|
onDispatch: (logEntryId) => {
|
|
23
28
|
void (async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_dispatchAsClient.js","sourceRoot":"","sources":["../../../src/server/methods/_dispatchAsClient.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yEAAyE;AACzE,yEAAyE;AACzE,wEAAwE;AACxE,+BAA+B;AAI/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"_dispatchAsClient.js","sourceRoot":"","sources":["../../../src/server/methods/_dispatchAsClient.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yEAAyE;AACzE,yEAAyE;AACzE,wEAAwE;AACxE,+BAA+B;AAI/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOlD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,GAAmB,EAAE,SAA0B,EAAmC,EAAE;IACvH,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;IACzC,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;QACpC,GAAG,CAAC,OAAO,CAAC,YAAY,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;QACrC,SAAS;QACT,SAAS;QACT,KAAK;QACL,MAAM,EAAE,YAAY;QACpB,MAAM;QACN,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE;YACvB,KAAK,CAAC,KAAK,IAAI,EAAE;gBACb,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;gBACtD,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACtD,CAAC,CAAC,EAAE,CAAC;QACT,CAAC;KACJ,CAAC,CAAC;IACH,OAAO,MAAgC,CAAC;AAC5C,CAAC,CAAC"}
|
|
@@ -32,11 +32,11 @@ export const register = (registry) => {
|
|
|
32
32
|
registry.registerMethod("entry.read", {
|
|
33
33
|
handler: async (params, ctx) => {
|
|
34
34
|
const p = (params ?? {});
|
|
35
|
-
if (typeof p.
|
|
36
|
-
throw new Error("entry.read requires params.
|
|
37
|
-
const parsed = parsePath(p.
|
|
35
|
+
if (typeof p.target !== "string" || p.target.length === 0)
|
|
36
|
+
throw new Error("entry.read requires params.target: string");
|
|
37
|
+
const parsed = parsePath(p.target);
|
|
38
38
|
if (parsed === null)
|
|
39
|
-
throw new Error(`entry.read: path must be URL-shaped (scheme://pathname); got: ${p.
|
|
39
|
+
throw new Error(`entry.read: path must be URL-shaped (scheme://pathname); got: ${p.target}`);
|
|
40
40
|
const sessionId = p.sessionId ?? ctx.session?.sessionId;
|
|
41
41
|
if (sessionId === undefined)
|
|
42
42
|
throw new Error("entry.read requires a sessionId (either via params or session attach)");
|
|
@@ -47,7 +47,7 @@ export const register = (registry) => {
|
|
|
47
47
|
},
|
|
48
48
|
description: "Read the full entry shape (channels + tags + metadata) at the given path.",
|
|
49
49
|
params: {
|
|
50
|
-
|
|
50
|
+
target: "string — entry path (URL-shaped: scheme://pathname)",
|
|
51
51
|
sessionId: "number? — defaults to the connection's attached session",
|
|
52
52
|
},
|
|
53
53
|
requiresInit: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry_read.js","sourceRoot":"","sources":["../../../src/server/methods/entry_read.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,gCAAgC;AAoBhC,MAAM,SAAS,GAAG,CAAC,CAAS,EAA+C,EAAE;IACzE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,KAAK,EAAE,EAAM,EAAE,SAAiB,EAAE,MAAc,EAAE,QAAgB,EAA8B,EAAE;IACjH,MAAM,GAAG,GAAG,MAAO,EAAE,CAAC,iBAAgC,CAAC,GAAG,CAAsF;QAC5I,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ;KAC1C,CAAC,CAAC;IACH,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,WAAW,GAAG,MAAO,EAAE,CAAC,mBAAkC,CAAC,GAAG,CAAqF,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/K,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC1B,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACtG,CAAC;IAED,MAAM,OAAO,GAAG,MAAO,EAAE,CAAC,cAA6B,CAAC,GAAG,CAAkB,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAEnG,OAAO;QACH,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,QAAQ;QACR,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;KAClC,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,QAAwB,EAAQ,EAAE;IACvD,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE;QAClC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;YAC3B,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAW,CAAC;YACnC,IAAI,OAAO,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"entry_read.js","sourceRoot":"","sources":["../../../src/server/methods/entry_read.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop_cancel.d.ts","sourceRoot":"","sources":["../../../src/server/methods/loop_cancel.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AAMvD,eAAO,MAAM,QAAQ,GAAI,UAAU,cAAc,KAAG,IAenD,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// loop.cancel — abort the run's active drain. Fires the drain's
|
|
2
|
+
// AbortController, which cascades to engine.runLoop's loop signal, which
|
|
3
|
+
// in turn aborts in-flight scheme operations (exec spawns, future
|
|
4
|
+
// SSE/WS). Queued loops in the run remain enqueued for a subsequent
|
|
5
|
+
// loop.run to pick up.
|
|
6
|
+
//
|
|
7
|
+
// Pairs with loop.run for "redirect" UX: cancel the runaway loop, then
|
|
8
|
+
// send a fresh prompt. Without this, the user would have to wait for
|
|
9
|
+
// the loop to hit max_turns / strike out.
|
|
10
|
+
export const register = (registry) => {
|
|
11
|
+
registry.registerMethod("loop.cancel", {
|
|
12
|
+
handler: async (params, ctx) => {
|
|
13
|
+
if (ctx.session === null)
|
|
14
|
+
throw new Error("loop.cancel requires an attached session");
|
|
15
|
+
const p = (params ?? {});
|
|
16
|
+
const reason = (typeof p.reason === "string" && p.reason.length > 0) ? p.reason : "user_cancelled";
|
|
17
|
+
const cancelled = ctx.daemon.cancelDrain(ctx.session.runId, reason);
|
|
18
|
+
return { cancelled, runId: ctx.session.runId, reason };
|
|
19
|
+
},
|
|
20
|
+
description: "Abort the run's active drain. Returns {cancelled: true} if a drain was running; {cancelled: false} if the run was already idle. Cancelled loops close at status 499. Queued (but not yet claimed) loops remain enqueued; subsequent loop.run resumes the queue.",
|
|
21
|
+
params: {
|
|
22
|
+
reason: "string? — optional human-readable cancellation reason; defaults to 'user_cancelled'",
|
|
23
|
+
},
|
|
24
|
+
requiresInit: true,
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=loop_cancel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop_cancel.js","sourceRoot":"","sources":["../../../src/server/methods/loop_cancel.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,yEAAyE;AACzE,kEAAkE;AAClE,oEAAoE;AACpE,uBAAuB;AACvB,EAAE;AACF,uEAAuE;AACvE,qEAAqE;AACrE,0CAA0C;AAQ1C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,QAAwB,EAAQ,EAAE;IACvD,QAAQ,CAAC,cAAc,CAAC,aAAa,EAAE;QACnC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;YAC3B,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YACtF,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAW,CAAC;YACnC,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC;YACnG,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACpE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAC3D,CAAC;QACD,WAAW,EAAE,iQAAiQ;QAC9Q,MAAM,EAAE;YACJ,MAAM,EAAE,qFAAqF;SAChG;QACD,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;AACP,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop_run.d.ts","sourceRoot":"","sources":["../../../src/server/methods/loop_run.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"loop_run.d.ts","sourceRoot":"","sources":["../../../src/server/methods/loop_run.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AA4BvD,eAAO,MAAM,QAAQ,GAAI,UAAU,cAAc,KAAG,IAgHnD,CAAC"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
// loop.run — model-driven loop.
|
|
2
|
-
//
|
|
3
|
-
//
|
|
1
|
+
// loop.run — model-driven loop. Validates params, resolves provider,
|
|
2
|
+
// delegates to daemon.inject. inject decides: active drain → write prompt
|
|
3
|
+
// entry for next turn; idle → enqueue + start drain.
|
|
4
4
|
import { readFile } from "node:fs/promises";
|
|
5
|
-
import { fetchLogEntry } from "../logEntry.js";
|
|
6
5
|
import { PATHS } from "../../index.js";
|
|
7
6
|
import { parseAliasesFromEnv, instantiateProvider } from "../../core/ProviderRegistry.js";
|
|
8
|
-
import { DEFAULT_LOOP_FLAGS } from "../../core/scheme-types.js";
|
|
9
7
|
export const register = (registry) => {
|
|
10
8
|
registry.registerMethod("loop.run", {
|
|
11
9
|
handler: async (params, ctx) => {
|
|
@@ -21,8 +19,13 @@ export const register = (registry) => {
|
|
|
21
19
|
if (typeof p.flags !== "object" || p.flags === null || Array.isArray(p.flags)) {
|
|
22
20
|
throw new Error("loop.run: flags must be an object");
|
|
23
21
|
}
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
for (const bool of ["yolo", "noProposals", "noWeb", "noInteraction"]) {
|
|
23
|
+
if (p.flags[bool] !== undefined && typeof p.flags[bool] !== "boolean") {
|
|
24
|
+
throw new Error(`loop.run: flags.${bool} must be a boolean`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (p.flags.mode !== undefined && p.flags.mode !== "ask" && p.flags.mode !== "act") {
|
|
28
|
+
throw new Error("loop.run: flags.mode must be 'ask' or 'act'");
|
|
26
29
|
}
|
|
27
30
|
}
|
|
28
31
|
const loopPersona = p.persona ?? null;
|
|
@@ -50,52 +53,53 @@ export const register = (registry) => {
|
|
|
50
53
|
}
|
|
51
54
|
const { sessionId, runId } = ctx.session;
|
|
52
55
|
const systemPrompt = await readFile(PATHS.instructionsSystem, "utf8");
|
|
53
|
-
// packet.system.persona — default from persona.md. issue #150 will
|
|
54
|
-
// add loop.run({persona}) and session.attach({persona}) overrides;
|
|
55
|
-
// until then every loop carries the default.
|
|
56
56
|
const persona = await readFile(PATHS.defaultPersona, "utf8");
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const
|
|
61
|
-
|
|
57
|
+
// Delegate to the daemon's unified inject surface. Active-drain
|
|
58
|
+
// → write prompt entry for next turn (returns immediately).
|
|
59
|
+
// Idle run → enqueue + start drain (await drain to completion).
|
|
60
|
+
const injected = await ctx.daemon.inject({
|
|
61
|
+
sessionId, runId, prompt: p.prompt,
|
|
62
|
+
provider, persona, systemPrompt,
|
|
63
|
+
maxTurns, flags: p.flags, personaOverride: loopPersona,
|
|
62
64
|
});
|
|
63
|
-
if (
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
65
|
+
if (injected.action === "injected_next_turn") {
|
|
66
|
+
// Active drain — prompt landed in the current loop's
|
|
67
|
+
// next-turn slot. Return immediately; the existing
|
|
68
|
+
// drain's notifications surface progress.
|
|
69
|
+
return {
|
|
70
|
+
loopId: injected.loopId,
|
|
71
|
+
turnSeq: injected.turnSeq,
|
|
72
|
+
action: "injected_next_turn",
|
|
73
|
+
finalStatus: 100,
|
|
74
|
+
hitMaxTurns: false,
|
|
75
|
+
turnIds: [],
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
// enqueued_new_loop:
|
|
79
|
+
// - Drain started by THIS call: firstLoopPromise is the
|
|
80
|
+
// promise for the loop just enqueued; await it.
|
|
81
|
+
// - Drain was already active (concurrent loop.run race
|
|
82
|
+
// where engine.inject returned null): the loop is in
|
|
83
|
+
// the queue, the existing drain will claim it. No
|
|
84
|
+
// firstLoopPromise — return immediately with status=100
|
|
85
|
+
// and let the client subscribe to loop/terminated.
|
|
86
|
+
if (injected.firstLoopPromise === undefined) {
|
|
87
|
+
return {
|
|
88
|
+
loopId: injected.loopId,
|
|
89
|
+
action: "enqueued_new_loop",
|
|
90
|
+
finalStatus: 100,
|
|
91
|
+
hitMaxTurns: false,
|
|
92
|
+
turnIds: [],
|
|
93
|
+
};
|
|
75
94
|
}
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
95
|
+
const first = await injected.firstLoopPromise;
|
|
96
|
+
return {
|
|
97
|
+
loopId: first.loopId,
|
|
98
|
+
turnIds: first.turnIds,
|
|
99
|
+
finalStatus: first.finalStatus,
|
|
100
|
+
hitMaxTurns: first.hitMaxTurns,
|
|
101
|
+
action: "enqueued_new_loop",
|
|
81
102
|
};
|
|
82
|
-
const result = await ctx.engine.runLoop({
|
|
83
|
-
provider,
|
|
84
|
-
messages: [
|
|
85
|
-
{ role: "system", content: systemPrompt },
|
|
86
|
-
{ role: "user", content: p.prompt },
|
|
87
|
-
],
|
|
88
|
-
persona,
|
|
89
|
-
sessionId, runId, loopId, maxTurns,
|
|
90
|
-
origin: "model",
|
|
91
|
-
onDispatch,
|
|
92
|
-
});
|
|
93
|
-
ctx.notify({ sessionId }, "loop/terminated", {
|
|
94
|
-
loopId,
|
|
95
|
-
finalStatus: result.finalStatus,
|
|
96
|
-
hitMaxTurns: result.hitMaxTurns,
|
|
97
|
-
});
|
|
98
|
-
return { loopId, ...result };
|
|
99
103
|
},
|
|
100
104
|
description: "Run a model-driven loop with a prompt. Optional per-call `alias` resolves a PLURNK_MODEL_<alias> override. Optional `flags.yolo:true` enables server-side YOLO (daemon auto-accepts proposals in-process; intended for benchmarks and automation, NOT standard client UX — see client SPEC §6.3 for client-side YOLO). Optional `persona` sets the loop-level persona override (highest precedence in the cascade loops > runs > sessions > PLURNK_PERSONA file). Streams log/entry notifications; fires loop/terminated on completion.",
|
|
101
105
|
params: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop_run.js","sourceRoot":"","sources":["../../../src/server/methods/loop_run.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,
|
|
1
|
+
{"version":3,"file":"loop_run.js","sourceRoot":"","sources":["../../../src/server/methods/loop_run.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,14 +4,14 @@ export const register = (registry) => {
|
|
|
4
4
|
registry.registerMethod("op.edit", {
|
|
5
5
|
handler: async (params, ctx) => {
|
|
6
6
|
const p = (params ?? {});
|
|
7
|
-
if (typeof p.
|
|
8
|
-
throw new Error("op.edit requires params.
|
|
7
|
+
if (typeof p.target !== "string" || p.target.length === 0)
|
|
8
|
+
throw new Error("op.edit requires params.target: string");
|
|
9
9
|
const statement = buildEdit(p);
|
|
10
10
|
return dispatchAsClient(ctx, statement);
|
|
11
11
|
},
|
|
12
12
|
description: "EDIT — write or update an entry's body.",
|
|
13
13
|
params: {
|
|
14
|
-
|
|
14
|
+
target: "string — entry path (e.g. known://france/capital)",
|
|
15
15
|
content: "string? — entry body (empty/omitted clears)",
|
|
16
16
|
tags: "string[]? — tag set",
|
|
17
17
|
lineRange: "LineMarker? — insertion point or replace range",
|