@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.
Files changed (92) hide show
  1. package/SPEC.md +35 -26
  2. package/dist/core/ChannelWrite.d.ts +10 -0
  3. package/dist/core/ChannelWrite.d.ts.map +1 -1
  4. package/dist/core/ChannelWrite.js.map +1 -1
  5. package/dist/core/Engine.d.ts +9 -1
  6. package/dist/core/Engine.d.ts.map +1 -1
  7. package/dist/core/Engine.js +260 -53
  8. package/dist/core/Engine.js.map +1 -1
  9. package/dist/core/line-marker.d.ts +23 -0
  10. package/dist/core/line-marker.d.ts.map +1 -0
  11. package/dist/core/line-marker.js +321 -0
  12. package/dist/core/line-marker.js.map +1 -0
  13. package/dist/core/matcher.d.ts +14 -0
  14. package/dist/core/matcher.d.ts.map +1 -0
  15. package/dist/core/matcher.js +195 -0
  16. package/dist/core/matcher.js.map +1 -0
  17. package/dist/core/mimetype-binary.d.ts +6 -0
  18. package/dist/core/mimetype-binary.d.ts.map +1 -0
  19. package/dist/core/mimetype-binary.js +82 -0
  20. package/dist/core/mimetype-binary.js.map +1 -0
  21. package/dist/core/packet-wire.d.ts.map +1 -1
  22. package/dist/core/packet-wire.js +97 -21
  23. package/dist/core/packet-wire.js.map +1 -1
  24. package/dist/core/path-mimetype.d.ts +3 -0
  25. package/dist/core/path-mimetype.d.ts.map +1 -0
  26. package/dist/core/path-mimetype.js +47 -0
  27. package/dist/core/path-mimetype.js.map +1 -0
  28. package/dist/core/scheme-types.d.ts +5 -0
  29. package/dist/core/scheme-types.d.ts.map +1 -1
  30. package/dist/core/scheme-types.js.map +1 -1
  31. package/dist/schemes/Exec.d.ts +30 -1
  32. package/dist/schemes/Exec.d.ts.map +1 -1
  33. package/dist/schemes/Exec.js +229 -6
  34. package/dist/schemes/Exec.js.map +1 -1
  35. package/dist/schemes/File.d.ts +4 -0
  36. package/dist/schemes/File.d.ts.map +1 -1
  37. package/dist/schemes/File.js +107 -23
  38. package/dist/schemes/File.js.map +1 -1
  39. package/dist/schemes/Log.d.ts +2 -0
  40. package/dist/schemes/Log.d.ts.map +1 -1
  41. package/dist/schemes/Log.js +82 -13
  42. package/dist/schemes/Log.js.map +1 -1
  43. package/dist/schemes/Plurnk.js +3 -3
  44. package/dist/schemes/Plurnk.js.map +1 -1
  45. package/dist/schemes/_entry-crud.d.ts +2 -0
  46. package/dist/schemes/_entry-crud.d.ts.map +1 -1
  47. package/dist/schemes/_entry-crud.js +1 -0
  48. package/dist/schemes/_entry-crud.js.map +1 -1
  49. package/dist/schemes/_entry-find.d.ts.map +1 -1
  50. package/dist/schemes/_entry-find.js +64 -15
  51. package/dist/schemes/_entry-find.js.map +1 -1
  52. package/dist/schemes/_entry-ops.d.ts +3 -0
  53. package/dist/schemes/_entry-ops.d.ts.map +1 -1
  54. package/dist/schemes/_entry-ops.js +268 -55
  55. package/dist/schemes/_entry-ops.js.map +1 -1
  56. package/dist/schemes/_entry-send.d.ts.map +1 -1
  57. package/dist/schemes/_entry-send.js +14 -7
  58. package/dist/schemes/_entry-send.js.map +1 -1
  59. package/dist/server/ClientConnection.d.ts +3 -2
  60. package/dist/server/ClientConnection.d.ts.map +1 -1
  61. package/dist/server/ClientConnection.js +4 -1
  62. package/dist/server/ClientConnection.js.map +1 -1
  63. package/dist/server/Daemon.d.ts +40 -1
  64. package/dist/server/Daemon.d.ts.map +1 -1
  65. package/dist/server/Daemon.js +319 -1
  66. package/dist/server/Daemon.js.map +1 -1
  67. package/dist/server/MethodRegistry.d.ts +29 -0
  68. package/dist/server/MethodRegistry.d.ts.map +1 -1
  69. package/dist/server/MethodRegistry.js.map +1 -1
  70. package/dist/server/dsl.d.ts +2 -2
  71. package/dist/server/dsl.d.ts.map +1 -1
  72. package/dist/server/dsl.js +10 -10
  73. package/dist/server/dsl.js.map +1 -1
  74. package/dist/server/methods/entry_read.js +5 -5
  75. package/dist/server/methods/entry_read.js.map +1 -1
  76. package/dist/server/methods/loop_cancel.d.ts +3 -0
  77. package/dist/server/methods/loop_cancel.d.ts.map +1 -0
  78. package/dist/server/methods/loop_cancel.js +27 -0
  79. package/dist/server/methods/loop_cancel.js.map +1 -0
  80. package/dist/server/methods/loop_run.d.ts.map +1 -1
  81. package/dist/server/methods/loop_run.js +46 -47
  82. package/dist/server/methods/loop_run.js.map +1 -1
  83. package/dist/server/methods/op_edit.js +3 -3
  84. package/dist/server/methods/op_edit.js.map +1 -1
  85. package/dist/server/methods/op_hide.js +3 -3
  86. package/dist/server/methods/op_hide.js.map +1 -1
  87. package/dist/server/methods/op_read.js +3 -3
  88. package/dist/server/methods/op_read.js.map +1 -1
  89. package/dist/server/methods/op_show.js +3 -3
  90. package/dist/server/methods/op_show.js.map +1 -1
  91. package/migrations/001_schema.sql +1 -1
  92. package/package.json +5 -4
@@ -1,16 +1,21 @@
1
+ import { createPatch } from "diff";
2
+ import { isBinaryMimetype, isJsonMimetype, TEXT_PRIMITIVE_MIMETYPE } from "../core/mimetype-binary.js";
3
+ import { sliceLines, sliceJsonItems, applyLineMarkerEdit, applyJsonItemEdit } from "../core/line-marker.js";
4
+ import { matchAgainstContent } from "../core/matcher.js";
5
+ import { resolveEntryMimetype } from "../core/path-mimetype.js";
1
6
  const pathnameOf = (statement) => {
2
- const path = statement.path;
3
- if (path === null)
7
+ const t = statement.target;
8
+ if (t === null)
4
9
  throw new Error("unreachable");
5
- if (path.kind === "url")
6
- return path.pathname;
7
- return path.raw;
10
+ if (t.kind === "url")
11
+ return t.pathname;
12
+ return t.raw;
8
13
  };
9
14
  const fragmentOf = (statement) => {
10
- const path = statement.path;
11
- if (path === null || path.kind !== "url")
15
+ const t = statement.target;
16
+ if (t === null || t.kind !== "url")
12
17
  return null;
13
- return path.fragment;
18
+ return t.fragment;
14
19
  };
15
20
  const resolveChannel = (fragment, channels, defaultChannel) => {
16
21
  const target = fragment ?? defaultChannel;
@@ -19,10 +24,8 @@ const resolveChannel = (fragment, channels, defaultChannel) => {
19
24
  return target;
20
25
  };
21
26
  export const editSessionEntry = async (statement, ctx, manifest) => {
22
- if (statement.path === null)
27
+ if (statement.target === null)
23
28
  return { status: 400, entryId: null, channel: null };
24
- if (statement.lineMarker !== null)
25
- return { status: 501, entryId: null, channel: null };
26
29
  const { db, sessionId, runId } = ctx;
27
30
  const { name: scheme, channels, defaultChannel } = manifest;
28
31
  const fragment = fragmentOf(statement);
@@ -35,6 +38,52 @@ export const editSessionEntry = async (statement, ctx, manifest) => {
35
38
  if (existing === undefined && fragment !== null) {
36
39
  return { status: 404, entryId: null, channel: targetChannel };
37
40
  }
41
+ // Effective mimetype for this entry. Per plurnk-grammar 0.14.0:
42
+ // "Path suffix declares mimetype; absent suffix defers to scheme default."
43
+ // `known://users.json` → application/json (extension wins).
44
+ // `known://users` → text/markdown (scheme manifest default).
45
+ const channelManifestDefault = channels[targetChannel];
46
+ const effectiveMimetype = await resolveEntryMimetype(pathname, channelManifestDefault, ctx.mimetypes);
47
+ // 415 on binary entries (per AGENTS.md "Resolved ambiguities" §2).
48
+ if (existing !== undefined) {
49
+ const channel = await db.ops_read_channel.get({
50
+ session_id: sessionId, scheme, pathname, channel: targetChannel,
51
+ });
52
+ if (channel !== undefined && isBinaryMimetype(channel.mimetype)) {
53
+ return { status: 415, entryId: existing.id, channel: targetChannel };
54
+ }
55
+ }
56
+ if (isBinaryMimetype(effectiveMimetype)) {
57
+ return { status: 415, entryId: existing?.id ?? null, channel: targetChannel };
58
+ }
59
+ const body = statement.body ?? "";
60
+ // Read current content unconditionally for diff generation (M.12 —
61
+ // surface diff in EDIT response so wrong-marker mistakes are visible).
62
+ let originalContent = "";
63
+ if (existing !== undefined) {
64
+ const channel = await db.ops_read_channel.get({
65
+ session_id: sessionId, scheme, pathname, channel: targetChannel,
66
+ });
67
+ originalContent = channel?.content ?? "";
68
+ }
69
+ // `<L>` line marker EDIT semantics. Dispatch on effective mimetype:
70
+ // JSON → applyJsonItemEdit (structural item edit, plurnk-grammar 0.13.0);
71
+ // otherwise → applyLineMarkerEdit (line edit, original semantics).
72
+ // On a non-existent entry, body becomes the content regardless of marker
73
+ // (per "Resolved ambiguities" §3 — sentinels/positions only apply to
74
+ // existing content).
75
+ let newContent;
76
+ if (statement.lineMarker !== null && existing !== undefined) {
77
+ const result = isJsonMimetype(effectiveMimetype)
78
+ ? applyJsonItemEdit(originalContent, statement.lineMarker, body)
79
+ : applyLineMarkerEdit(originalContent, statement.lineMarker, body);
80
+ if (result.status !== 200)
81
+ return { status: result.status, entryId: existing.id, channel: targetChannel };
82
+ newContent = result.result ?? "";
83
+ }
84
+ else {
85
+ newContent = body;
86
+ }
38
87
  let entryId;
39
88
  let createdNow;
40
89
  if (existing === undefined) {
@@ -48,25 +97,26 @@ export const editSessionEntry = async (statement, ctx, manifest) => {
48
97
  entryId = existing.id;
49
98
  createdNow = false;
50
99
  }
51
- const body = statement.body ?? "";
52
- await db.ops_upsert_channel.run({ entry_id: entryId, name: targetChannel, content: body, mimetype: channels[targetChannel] });
100
+ await db.ops_upsert_channel.run({ entry_id: entryId, name: targetChannel, content: newContent, mimetype: effectiveMimetype });
53
101
  await db.crud_write_visibility.run({ run_id: runId, entry_id: entryId, channel: targetChannel });
54
102
  if (Array.isArray(statement.signal)) {
55
103
  for (const tag of statement.signal) {
56
104
  await db.crud_write_tag.run({ entry_id: entryId, tag });
57
105
  }
58
106
  }
59
- return { status: createdNow ? 201 : 200, entryId, channel: targetChannel };
107
+ // M.12 diff: surface what actually changed so model sees the result
108
+ // of its EDIT without a follow-up READ. Skip if content is identical
109
+ // (no-op edit). Path-format string is just the entry's URI for the
110
+ // model's correlation; consumers (digest, intg) parse the unified
111
+ // diff body.
112
+ const diff = originalContent !== newContent
113
+ ? createPatch(`${scheme}://${pathname}`, originalContent, newContent, "current", "proposed")
114
+ : undefined;
115
+ return { status: createdNow ? 201 : 200, entryId, channel: targetChannel, diff };
60
116
  };
61
117
  export const readSessionEntry = async (statement, ctx, manifest) => {
62
- if (statement.path === null)
118
+ if (statement.target === null)
63
119
  return { status: 400, content: null, mimetype: null, channel: null };
64
- if (statement.lineMarker !== null)
65
- return { status: 501, content: null, mimetype: null, channel: null };
66
- if (statement.body !== null)
67
- return { status: 501, content: null, mimetype: null, channel: null };
68
- if (Array.isArray(statement.signal) && statement.signal.length > 0)
69
- return { status: 501, content: null, mimetype: null, channel: null };
70
120
  const { db, sessionId } = ctx;
71
121
  const { name: scheme, channels, defaultChannel } = manifest;
72
122
  const fragment = fragmentOf(statement);
@@ -79,51 +129,214 @@ export const readSessionEntry = async (statement, ctx, manifest) => {
79
129
  });
80
130
  if (row === undefined)
81
131
  return { status: 404, content: null, mimetype: null, channel: targetChannel };
82
- return { status: 200, content: row.content, mimetype: row.mimetype, channel: targetChannel };
132
+ if (isBinaryMimetype(row.mimetype)) {
133
+ return { status: 415, content: null, mimetype: row.mimetype, channel: targetChannel };
134
+ }
135
+ // `[tag]` filter: entry must have ALL requested tags. Mismatch = 404
136
+ // (entry doesn't match the tag-scoped READ).
137
+ if (Array.isArray(statement.signal) && statement.signal.length > 0) {
138
+ const entry = await db.crud_find_session_entry.get({ session_id: sessionId, scheme, pathname });
139
+ if (entry === undefined)
140
+ return { status: 404, content: null, mimetype: null, channel: targetChannel };
141
+ const tagRows = await db.crud_read_tags.all({ entry_id: entry.id });
142
+ const have = new Set(tagRows.map((r) => r.tag));
143
+ for (const want of statement.signal) {
144
+ if (!have.has(want))
145
+ return { status: 404, content: null, mimetype: null, channel: targetChannel };
146
+ }
147
+ }
148
+ // `<L>` scopes; body matches within the scope. Slot order in plurnk.md
149
+ // is `<L>?:body?`, so the natural composition is slice-then-match.
150
+ // `<L>` dispatches on source mimetype (plurnk-grammar 0.13.0):
151
+ // line-navigable (text/markdown, source) → sliceLines (line index)
152
+ // JSON → sliceJsonItems (item index)
153
+ // XML/HTML → sliceLines (defer XML structural)
154
+ let workingContent = row.content;
155
+ let workingStart = 1;
156
+ let workingMimetypeForSlice = TEXT_PRIMITIVE_MIMETYPE;
157
+ if (statement.lineMarker !== null) {
158
+ if (isJsonMimetype(row.mimetype)) {
159
+ const sliced = sliceJsonItems(row.content, statement.lineMarker);
160
+ if (sliced.status !== 200)
161
+ return { status: sliced.status, content: null, mimetype: row.mimetype, channel: targetChannel };
162
+ workingContent = sliced.body ?? "[]";
163
+ workingStart = null;
164
+ workingMimetypeForSlice = "application/json";
165
+ }
166
+ else {
167
+ const sliced = sliceLines(row.content, statement.lineMarker);
168
+ if (sliced.status !== 200)
169
+ return { status: sliced.status, content: null, mimetype: row.mimetype, channel: targetChannel };
170
+ workingContent = sliced.text ?? "";
171
+ workingStart = sliced.startLine ?? null;
172
+ }
173
+ }
174
+ if (statement.body !== null) {
175
+ const matched = matchAgainstContent(statement.body, workingContent, row.mimetype, workingStart ?? 1);
176
+ if (matched.status === 204) {
177
+ return { status: 204, content: "", mimetype: "application/json", channel: targetChannel, startLine: null, matches: 0 };
178
+ }
179
+ if (matched.status !== 200)
180
+ return { status: matched.status, content: null, mimetype: row.mimetype, channel: targetChannel };
181
+ // Matcher result body is a pretty-printed JSON array of per-match
182
+ // rows {line, matched, matching?}; mimetype is JSON regardless of
183
+ // source. startLine=null because line info is denormalized into
184
+ // each row (no parallel array needed).
185
+ return { status: 200, content: matched.body ?? "[]", mimetype: "application/json", channel: targetChannel, startLine: null, matches: matched.matches };
186
+ }
187
+ if (statement.lineMarker !== null) {
188
+ // `<L>` slice mimetype follows the source family:
189
+ // line-navigable source → text/markdown (text primitive)
190
+ // JSON source → application/json (preserve structure for compose)
191
+ // Workspace `<L>` empty case (sentinel <0>/<-1>) is 204.
192
+ // For JSON sources sliceJsonItems returns body="[]" on sentinels;
193
+ // we treat empty array as 204 here for shape consistency.
194
+ const isEmptyJsonArray = workingMimetypeForSlice === "application/json" && workingContent === "[]";
195
+ if (workingContent === "" || isEmptyJsonArray) {
196
+ return { status: 204, content: "", mimetype: workingMimetypeForSlice, channel: targetChannel, startLine: null };
197
+ }
198
+ return { status: 200, content: workingContent, mimetype: workingMimetypeForSlice, channel: targetChannel, startLine: workingStart };
199
+ }
200
+ if (row.content === "") {
201
+ return { status: 204, content: "", mimetype: row.mimetype, channel: targetChannel, startLine: null };
202
+ }
203
+ return { status: 200, content: row.content, mimetype: row.mimetype, channel: targetChannel, startLine: 1 };
204
+ };
205
+ // Paginate a list of items per a `<L>` results marker. Sentinels <0> and
206
+ // <-1> select empty (insertion points have no result content).
207
+ const paginateResults = (items, marker) => {
208
+ const total = items.length;
209
+ const { first, last } = marker;
210
+ if (last === null) {
211
+ if (first === 0 || first === -1)
212
+ return { status: 200, items: [] };
213
+ if (first > 0 && first <= total)
214
+ return { status: 200, items: [items[first - 1]] };
215
+ return { status: 416 };
216
+ }
217
+ let n = first;
218
+ let m = last;
219
+ if (n === 0)
220
+ n = 1;
221
+ if (m === -1)
222
+ m = total;
223
+ if (n < 1 || n > total)
224
+ return { status: 416 };
225
+ if (m < 1 || m > total)
226
+ return { status: 416 };
227
+ if (n > m)
228
+ return { status: 416 };
229
+ return { status: 200, items: items.slice(n - 1, m) };
83
230
  };
84
231
  const setSessionEntryVisibility = async (statement, ctx, manifest, target) => {
85
- if (statement.path === null)
232
+ if (statement.target === null)
86
233
  return { status: 400 };
87
- if (statement.lineMarker !== null)
88
- return { status: 501 };
89
- if (statement.body !== null)
90
- return { status: 501 };
91
- if (Array.isArray(statement.signal) && statement.signal.length > 0)
92
- return { status: 501 };
93
234
  const { db, sessionId, runId } = ctx;
94
235
  const { name: scheme, channels, defaultChannel } = manifest;
95
236
  const fragment = fragmentOf(statement);
96
- const pathname = pathnameOf(statement);
97
- const entry = await db.crud_find_session_entry.get({ session_id: sessionId, scheme, pathname });
98
- if (entry === undefined)
99
- return { status: 404 };
100
- const upsertVis = db.ops_upsert_visibility;
101
- if (fragment === null) {
102
- // Fragment-less SHOW/HIDE flip every channel of the entry.
103
- const existing = await db.ops_list_visibility_for_entry.all({
104
- run_id: runId, entry_id: entry.id,
237
+ const isMultiEntry = statement.body !== null
238
+ || (Array.isArray(statement.signal) && statement.signal.length > 0)
239
+ || statement.lineMarker !== null;
240
+ if (!isMultiEntry) {
241
+ // Single-entry path: exact pathname lookup.
242
+ const pathname = pathnameOf(statement);
243
+ const entry = await db.crud_find_session_entry.get({ session_id: sessionId, scheme, pathname });
244
+ if (entry === undefined)
245
+ return { status: 404 };
246
+ const upsertVis = db.ops_upsert_visibility;
247
+ if (fragment === null) {
248
+ const existing = await db.ops_list_visibility_for_entry.all({
249
+ run_id: runId, entry_id: entry.id,
250
+ });
251
+ const existingByName = new Map(existing.map((r) => [r.channel, r.indexed]));
252
+ let changed = 0;
253
+ for (const channelName of Object.keys(channels)) {
254
+ if (existingByName.get(channelName) === target)
255
+ continue;
256
+ await upsertVis.run({ run_id: runId, entry_id: entry.id, channel: channelName, indexed: target });
257
+ changed += 1;
258
+ }
259
+ return { status: changed === 0 ? 304 : 200 };
260
+ }
261
+ const targetChannel = resolveChannel(fragment, channels, defaultChannel);
262
+ if (targetChannel === null)
263
+ return { status: 400 };
264
+ const current = await db.ops_get_visibility_for_channel.get({
265
+ run_id: runId, entry_id: entry.id, channel: targetChannel,
105
266
  });
106
- const existingByName = new Map(existing.map((r) => [r.channel, r.indexed]));
107
- let changed = 0;
108
- for (const channelName of Object.keys(channels)) {
109
- if (existingByName.get(channelName) === target)
110
- continue;
111
- await upsertVis.run({ run_id: runId, entry_id: entry.id, channel: channelName, indexed: target });
112
- changed += 1;
267
+ if (current?.indexed === target)
268
+ return { status: 304 };
269
+ await upsertVis.run({ run_id: runId, entry_id: entry.id, channel: targetChannel, indexed: target });
270
+ return { status: 200 };
271
+ }
272
+ // Multi-entry path: target is treated as a pathname GLOB scope. Body
273
+ // matcher (glob/regex) further filters by pathname; xpath/jsonpath
274
+ // would filter by content (501 pending plurnk-mimetypes#3). Tag
275
+ // signal filters by tag. <L> paginates the matched results.
276
+ let regexFilter = null;
277
+ let pathnameGlob = null;
278
+ if (statement.body !== null) {
279
+ if (statement.body.dialect === "glob") {
280
+ pathnameGlob = statement.body.raw;
281
+ }
282
+ else if (statement.body.dialect === "regex") {
283
+ try {
284
+ regexFilter = new RegExp(statement.body.pattern, statement.body.flags);
285
+ }
286
+ catch {
287
+ return { status: 400 };
288
+ }
289
+ }
290
+ else {
291
+ return { status: 501 };
113
292
  }
114
- return { status: changed === 0 ? 304 : 200 };
115
293
  }
116
- // Fragment-targeted SHOW/HIDE — flip only that channel.
117
- const targetChannel = resolveChannel(fragment, channels, defaultChannel);
118
- if (targetChannel === null)
119
- return { status: 400 };
120
- const current = await db.ops_get_visibility_for_channel.get({
121
- run_id: runId, entry_id: entry.id, channel: targetChannel,
294
+ const scopePathname = pathnameOf(statement);
295
+ const scopeGlob = scopePathname.length > 0 ? `${scopePathname}*` : null;
296
+ const tags = Array.isArray(statement.signal) ? statement.signal : [];
297
+ const tagsParam = tags.length > 0 ? JSON.stringify(tags) : "[]";
298
+ const rows = await db.find_session_entries.all({
299
+ session_id: sessionId, scheme,
300
+ scope_pathname: scopeGlob,
301
+ pathname_pattern: pathnameGlob,
302
+ tags: tagsParam,
122
303
  });
123
- if (current?.indexed === target)
304
+ let pathnames = rows.map((r) => r.pathname);
305
+ if (regexFilter !== null)
306
+ pathnames = pathnames.filter((p) => regexFilter.test(p));
307
+ if (statement.lineMarker !== null) {
308
+ const page = paginateResults(pathnames, statement.lineMarker);
309
+ if (page.status !== 200)
310
+ return { status: page.status };
311
+ pathnames = page.items ?? [];
312
+ }
313
+ if (pathnames.length === 0)
124
314
  return { status: 304 };
125
- await upsertVis.run({ run_id: runId, entry_id: entry.id, channel: targetChannel, indexed: target });
126
- return { status: 200 };
315
+ // Resolve fragment to a target channel (applies uniformly across matches).
316
+ let scopeChannel = null;
317
+ if (fragment !== null) {
318
+ scopeChannel = resolveChannel(fragment, channels, defaultChannel);
319
+ if (scopeChannel === null)
320
+ return { status: 400 };
321
+ }
322
+ const upsertVis = db.ops_upsert_visibility;
323
+ let changed = 0;
324
+ for (const p of pathnames) {
325
+ const e = await db.crud_find_session_entry.get({ session_id: sessionId, scheme, pathname: p });
326
+ if (e === undefined)
327
+ continue;
328
+ const channelsToFlip = scopeChannel !== null ? [scopeChannel] : Object.keys(channels);
329
+ for (const channelName of channelsToFlip) {
330
+ const current = await db.ops_get_visibility_for_channel.get({
331
+ run_id: runId, entry_id: e.id, channel: channelName,
332
+ });
333
+ if (current?.indexed === target)
334
+ continue;
335
+ await upsertVis.run({ run_id: runId, entry_id: e.id, channel: channelName, indexed: target });
336
+ changed += 1;
337
+ }
338
+ }
339
+ return { status: changed === 0 ? 304 : 200 };
127
340
  };
128
341
  export const showSessionEntry = async (statement, ctx, manifest) => setSessionEntryVisibility(statement, ctx, manifest, 1);
129
342
  export const hideSessionEntry = async (statement, ctx, manifest) => setSessionEntryVisibility(statement, ctx, manifest, 0);
@@ -1 +1 @@
1
- {"version":3,"file":"_entry-ops.js","sourceRoot":"","sources":["../../src/schemes/_entry-ops.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,GAAG,CAAC,SAA0C,EAAU,EAAE;IACtE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;IAC5B,IAAI,IAAI,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;IAC9C,OAAO,IAAI,CAAC,GAAG,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,SAA0C,EAAiB,EAAE;IAC7E,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;IAC5B,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACtD,OAAO,IAAI,CAAC,QAAQ,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,QAAuB,EAAE,QAAgC,EAAE,cAAsB,EAAiB,EAAE;IACxH,MAAM,MAAM,GAAG,QAAQ,IAAI,cAAc,CAAC;IAC1C,IAAI,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,SAAwB,EAAE,GAAwB,EAAE,QAAwB,EAAuB,EAAE;IACxI,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAClF,IAAI,SAAS,CAAC,UAAU,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAExF,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IACrC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC;IAE5D,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IACzE,IAAI,aAAa,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAEjF,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,MAAO,EAAE,CAAC,uBAAsC,CAAC,GAAG,CAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEnI,qDAAqD;IACrD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IAClE,CAAC;IAED,IAAI,OAAe,CAAC;IACpB,IAAI,UAAmB,CAAC;IACxB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,MAAO,EAAE,CAAC,yBAAwC,CAAC,GAAG,CAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChI,IAAI,GAAG,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACnF,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC;QACjB,UAAU,GAAG,IAAI,CAAC;IACtB,CAAC;SAAM,CAAC;QACJ,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC;QACtB,UAAU,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;IAClC,MAAO,EAAE,CAAC,kBAAiC,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC9I,MAAO,EAAE,CAAC,qBAAoC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;IAEjH,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACjC,MAAO,EAAE,CAAC,cAA6B,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5E,CAAC;IACL,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,SAAwB,EAAE,GAAwB,EAAE,QAAwB,EAAuB,EAAE;IACxI,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAClG,IAAI,SAAS,CAAC,UAAU,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACxG,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAClG,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAEzI,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;IAC9B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC;IAE5D,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IACzE,IAAI,aAAa,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAEjG,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,MAAO,EAAE,CAAC,gBAA+B,CAAC,GAAG,CAAwC;QAC7F,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa;KAClE,CAAC,CAAC;IAEH,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IACrG,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;AACjG,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,KAAK,EACnC,SAAwC,EACxC,GAAwB,EACxB,QAAwB,EACxB,MAAa,EACU,EAAE;IACzB,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACpD,IAAI,SAAS,CAAC,UAAU,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC1D,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACpD,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAE3F,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IACrC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC;IAE5D,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,MAAO,EAAE,CAAC,uBAAsC,CAAC,GAAG,CAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAEhD,MAAM,SAAS,GAAG,EAAE,CAAC,qBAAmC,CAAC;IAEzD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACpB,6DAA6D;QAC7D,MAAM,QAAQ,GAAG,MAAO,EAAE,CAAC,6BAA4C,CAAC,GAAG,CAAuC;YAC9G,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE;SACpC,CAAC,CAAC;QACH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE5E,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,IAAI,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,MAAM;gBAAE,SAAS;YACzD,MAAM,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAClG,OAAO,IAAI,CAAC,CAAC;QACjB,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACjD,CAAC;IAED,wDAAwD;IACxD,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IACzE,IAAI,aAAa,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAEnD,MAAM,OAAO,GAAG,MAAO,EAAE,CAAC,8BAA6C,CAAC,GAAG,CAAsB;QAC7F,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,aAAa;KAC5D,CAAC,CAAC;IACH,IAAI,OAAO,EAAE,OAAO,KAAK,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAExD,MAAM,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACpG,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,SAAwC,EAAE,GAAwB,EAAE,QAAwB,EAA2B,EAAE,CAC5J,yBAAyB,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AAE3D,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,SAAwC,EAAE,GAAwB,EAAE,QAAwB,EAA2B,EAAE,CAC5J,yBAAyB,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"_entry-ops.js","sourceRoot":"","sources":["../../src/schemes/_entry-ops.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"_entry-send.d.ts","sourceRoot":"","sources":["../../src/schemes/_entry-send.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAInE,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAeD,eAAO,MAAM,kBAAkB,GAAU,WAAW,aAAa,EAAE,KAAK,mBAAmB,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,UAAU,CAiC/H,CAAC"}
1
+ {"version":3,"file":"_entry-send.d.ts","sourceRoot":"","sources":["../../src/schemes/_entry-send.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAInE,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAeD,eAAO,MAAM,kBAAkB,GAAU,WAAW,aAAa,EAAE,KAAK,mBAAmB,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,UAAU,CAuC/H,CAAC"}
@@ -4,7 +4,7 @@
4
4
  import { deleteEntry } from "./_entry-crud.js";
5
5
  import { findActiveSubscription } from "../core/ChannelWrite.js";
6
6
  const pathnameOf = (statement) => {
7
- const path = statement.path;
7
+ const path = statement.target;
8
8
  if (path === null)
9
9
  return null;
10
10
  if (path.kind === "url")
@@ -12,25 +12,32 @@ const pathnameOf = (statement) => {
12
12
  return path.raw;
13
13
  };
14
14
  const fragmentOf = (statement) => {
15
- const path = statement.path;
15
+ const path = statement.target;
16
16
  if (path === null || path.kind !== "url")
17
17
  return null;
18
18
  return path.fragment;
19
19
  };
20
20
  export const sendToSessionEntry = async (statement, ctx, scheme) => {
21
- if (statement.path === null)
21
+ if (statement.target === null)
22
22
  return { status: 400, error: "directed SEND requires a path" };
23
23
  const status = statement.signal;
24
24
  if (status === null)
25
25
  return { status: 400, error: "SEND requires a numeric status code" };
26
- // SEND[410] Gone — delete the targeted resource (SPEC §3.5).
26
+ // SEND[410] Gone — delete the targeted resource (SPEC §3.5). With a
27
+ // #fragment, deletes just that channel; without, deletes the whole entry.
27
28
  if (status === 410) {
28
- if (fragmentOf(statement) !== null) {
29
- return { status: 400, error: "channel-level deletion (SEND[410] with #fragment) not yet supported" };
30
- }
31
29
  const pathname = pathnameOf(statement);
32
30
  if (pathname === null)
33
31
  return { status: 400 };
32
+ const fragment = fragmentOf(statement);
33
+ if (fragment !== null) {
34
+ const { db, sessionId } = ctx;
35
+ const entry = await db.crud_find_session_entry.get({ session_id: sessionId, scheme, pathname });
36
+ if (entry === undefined)
37
+ return { status: 404 };
38
+ const deleted = await db.crud_delete_channel.get({ entry_id: entry.id, name: fragment });
39
+ return { status: deleted === undefined ? 404 : 200 };
40
+ }
34
41
  const result = await deleteEntry(pathname, ctx, scheme);
35
42
  return { status: result.status };
36
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"_entry-send.js","sourceRoot":"","sources":["../../src/schemes/_entry-send.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_entry-send.js","sourceRoot":"","sources":["../../src/schemes/_entry-send.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { WebSocket } from "ws";
2
2
  import type Engine from "../core/Engine.ts";
3
3
  import type MethodRegistry from "./MethodRegistry.ts";
4
- import type { NotifyTarget, Provider } from "./MethodRegistry.ts";
4
+ import type { DaemonSurface, NotifyTarget, Provider } from "./MethodRegistry.ts";
5
5
  import type { Db } from "../core/Db.ts";
6
6
  import type { ClientEnvelope } from "./envelope.ts";
7
7
  export interface ClientConnectionOptions {
@@ -10,11 +10,12 @@ export interface ClientConnectionOptions {
10
10
  db: Db;
11
11
  engine: Engine;
12
12
  provider: Provider | null;
13
+ daemon: DaemonSurface;
13
14
  broadcast: (target: NotifyTarget, from: ClientConnection, method: string, params?: unknown) => void;
14
15
  }
15
16
  export default class ClientConnection {
16
17
  #private;
17
- constructor({ ws, registry, db, engine, provider, broadcast }: ClientConnectionOptions);
18
+ constructor({ ws, registry, db, engine, provider, daemon, broadcast }: ClientConnectionOptions);
18
19
  get session(): ClientEnvelope | null;
19
20
  sendNotification(method: string, params?: unknown): void;
20
21
  close(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ClientConnection.d.ts","sourceRoot":"","sources":["../../src/server/ClientConnection.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAkB,YAAY,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA+BpD,MAAM,WAAW,uBAAuB;IACpC,EAAE,EAAE,SAAS,CAAC;IACd,QAAQ,EAAE,cAAc,CAAC;IACzB,EAAE,EAAE,EAAE,CAAC;IACP,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACvG;AAED,MAAM,CAAC,OAAO,OAAO,gBAAgB;;gBASrB,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,uBAAuB;IAUtF,IAAI,OAAO,IAAI,cAAc,GAAG,IAAI,CAEnC;IAED,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAMxD,KAAK,IAAI,IAAI;CAwFhB"}
1
+ {"version":3,"file":"ClientConnection.d.ts","sourceRoot":"","sources":["../../src/server/ClientConnection.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAkB,YAAY,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA+BpD,MAAM,WAAW,uBAAuB;IACpC,EAAE,EAAE,SAAS,CAAC;IACd,QAAQ,EAAE,cAAc,CAAC;IACzB,EAAE,EAAE,EAAE,CAAC;IACP,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACvG;AAED,MAAM,CAAC,OAAO,OAAO,gBAAgB;;gBAUrB,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,uBAAuB;IAW9F,IAAI,OAAO,IAAI,cAAc,GAAG,IAAI,CAEnC;IAED,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAMxD,KAAK,IAAI,IAAI;CAyFhB"}
@@ -17,14 +17,16 @@ export default class ClientConnection {
17
17
  #db;
18
18
  #engine;
19
19
  #provider;
20
+ #daemon;
20
21
  #broadcast;
21
22
  #session = null;
22
- constructor({ ws, registry, db, engine, provider, broadcast }) {
23
+ constructor({ ws, registry, db, engine, provider, daemon, broadcast }) {
23
24
  this.#ws = ws;
24
25
  this.#registry = registry;
25
26
  this.#db = db;
26
27
  this.#engine = engine;
27
28
  this.#provider = provider;
29
+ this.#daemon = daemon;
28
30
  this.#broadcast = broadcast;
29
31
  this.#ws.on("message", (data) => this.#handleMessage(data));
30
32
  }
@@ -93,6 +95,7 @@ export default class ClientConnection {
93
95
  db: this.#db,
94
96
  engine: this.#engine,
95
97
  provider: this.#provider,
98
+ daemon: this.#daemon,
96
99
  session: this.#session,
97
100
  attachSession: (envelope) => {
98
101
  if (this.#session !== null) {
@@ -1 +1 @@
1
- {"version":3,"file":"ClientConnection.js","sourceRoot":"","sources":["../../src/server/ClientConnection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClientConnection.js","sourceRoot":"","sources":["../../src/server/ClientConnection.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import Engine from "../core/Engine.ts";
3
3
  import SchemeRegistry from "../core/SchemeRegistry.ts";
4
4
  import { Mimetypes } from "@plurnk/plurnk-mimetypes";
5
5
  import MethodRegistry from "./MethodRegistry.ts";
6
- import type { Provider } from "./MethodRegistry.ts";
6
+ import type { DrainLoopResult, Provider } from "./MethodRegistry.ts";
7
7
  export interface DaemonOptions {
8
8
  host?: string;
9
9
  port?: number;
@@ -39,5 +39,44 @@ export default class Daemon {
39
39
  state: string;
40
40
  contentLength: number;
41
41
  }): void;
42
+ /**
43
+ * Inject a prompt into a run. Two paths:
44
+ * - Active drain: writes a plurnk://prompt/<loop>/<next-turn> entry
45
+ * via Engine.inject. Current loop sees the new prompt at its next
46
+ * turn. Returns immediately with {action: "injected_next_turn"}.
47
+ * - No active drain: enqueues a fresh loop with the prompt at
48
+ * status=100, starts a drain. Returns the drain promise so the
49
+ * caller can await full completion.
50
+ *
51
+ * Rummy parallel: AgentLoop.inject(). Unified surface — both `loop.run`
52
+ * and wake-on-completion go through this method.
53
+ */
54
+ inject(args: {
55
+ sessionId: number;
56
+ runId: number;
57
+ prompt: string;
58
+ provider: Provider;
59
+ persona: string;
60
+ systemPrompt: string;
61
+ maxTurns?: number;
62
+ flags?: {
63
+ yolo?: boolean;
64
+ };
65
+ personaOverride?: string | null;
66
+ }): Promise<{
67
+ action: "injected_next_turn" | "enqueued_new_loop";
68
+ loopId: number;
69
+ turnSeq?: number;
70
+ firstLoopPromise?: Promise<DrainLoopResult>;
71
+ drainPromise?: Promise<unknown>;
72
+ }>;
73
+ /**
74
+ * Cancel the active drain for a run. Fires the drain's AbortController;
75
+ * the engine's per-loop loopAbort cascades from the runLoop signal arg,
76
+ * so in-flight scheme operations (exec spawns, future SSE/WS) tear
77
+ * down. Queued loops in the run remain enqueued — call again if you
78
+ * want them cleared, or rely on subsequent loop.run to resume.
79
+ */
80
+ cancelDrain(runId: number, reason?: string): boolean;
42
81
  }
43
82
  //# sourceMappingURL=Daemon.d.ts.map