@plurnk/plurnk-service 1.3.2 → 1.3.3
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/README.md +9 -0
- package/SPEC.md +49 -17
- package/dist/build-info.json +1 -1
- package/dist/core/ChannelWrite.d.ts +2 -1
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js +7 -6
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/CoreSchemeServices.d.ts +31 -0
- package/dist/core/CoreSchemeServices.d.ts.map +1 -0
- package/dist/core/CoreSchemeServices.js +37 -0
- package/dist/core/CoreSchemeServices.js.map +1 -0
- package/dist/core/Dispatcher.d.ts +5 -2
- package/dist/core/Dispatcher.d.ts.map +1 -1
- package/dist/core/Dispatcher.js +115 -44
- package/dist/core/Dispatcher.js.map +1 -1
- package/dist/core/Engine.d.ts +4 -2
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +29 -10
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/Engine.sql +1 -40
- package/dist/core/LiveSubscriptions.d.ts +8 -0
- package/dist/core/LiveSubscriptions.d.ts.map +1 -0
- package/dist/core/LiveSubscriptions.js +32 -0
- package/dist/core/LiveSubscriptions.js.map +1 -0
- package/dist/core/LoopLifecycle.d.ts +20 -0
- package/dist/core/LoopLifecycle.d.ts.map +1 -0
- package/dist/core/LoopLifecycle.js +56 -0
- package/dist/core/LoopLifecycle.js.map +1 -0
- package/dist/core/LoopLifecycle.sql +60 -0
- package/dist/core/ProposalLifecycle.d.ts +3 -1
- package/dist/core/ProposalLifecycle.d.ts.map +1 -1
- package/dist/core/ProposalLifecycle.js +4 -2
- package/dist/core/ProposalLifecycle.js.map +1 -1
- package/dist/core/SchemeRegistry.d.ts +3 -0
- package/dist/core/SchemeRegistry.d.ts.map +1 -1
- package/dist/core/SchemeRegistry.js +23 -0
- package/dist/core/SchemeRegistry.js.map +1 -1
- package/dist/core/caps/DbSubscriptionCaps.d.ts +3 -2
- package/dist/core/caps/DbSubscriptionCaps.d.ts.map +1 -1
- package/dist/core/caps/DbSubscriptionCaps.js +20 -9
- package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
- package/dist/core/caps/SchemeCtxImpl.d.ts +3 -16
- package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
- package/dist/core/caps/SchemeCtxImpl.js +4 -23
- package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
- package/dist/core/run-ops.sql +1 -1
- package/dist/core/scheme-types.d.ts.map +1 -1
- package/dist/core/scheme-types.js +3 -4
- package/dist/core/scheme-types.js.map +1 -1
- package/dist/schemes/Exec.d.ts +11 -10
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +40 -37
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/ExecOutputScheme.d.ts +8 -6
- package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
- package/dist/schemes/ExecOutputScheme.js +11 -6
- package/dist/schemes/ExecOutputScheme.js.map +1 -1
- package/dist/schemes/File.d.ts +11 -9
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +24 -16
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Log.d.ts +9 -7
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +12 -8
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/Prompt.d.ts +0 -3
- package/dist/schemes/Prompt.d.ts.map +1 -1
- package/dist/schemes/Prompt.js +0 -5
- package/dist/schemes/Prompt.js.map +1 -1
- package/dist/schemes/Skill.d.ts +0 -5
- package/dist/schemes/Skill.d.ts.map +1 -1
- package/dist/schemes/Skill.js +0 -10
- package/dist/schemes/Skill.js.map +1 -1
- package/dist/schemes/Worker.d.ts +12 -10
- package/dist/schemes/Worker.d.ts.map +1 -1
- package/dist/schemes/Worker.js +30 -28
- package/dist/schemes/Worker.js.map +1 -1
- package/dist/server/Daemon.d.ts +9 -1
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +161 -74
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/DaemonLock.d.ts +7 -0
- package/dist/server/DaemonLock.d.ts.map +1 -0
- package/dist/server/DaemonLock.js +85 -0
- package/dist/server/DaemonLock.js.map +1 -0
- package/dist/server/clientTurn.d.ts.map +1 -1
- package/dist/server/clientTurn.js +2 -3
- package/dist/server/clientTurn.js.map +1 -1
- package/dist/server/dispatch-as-plurnk.d.ts.map +1 -1
- package/dist/server/dispatch-as-plurnk.js +20 -2
- package/dist/server/dispatch-as-plurnk.js.map +1 -1
- package/dist/server/drain.sql +4 -8
- package/dist/server/envelope.d.ts.map +1 -1
- package/dist/server/envelope.js +2 -3
- package/dist/server/envelope.js.map +1 -1
- package/dist/server/lifecycle-recovery.sql +68 -0
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +61 -40
- package/dist/service.js.map +1 -1
- package/migrations/0000-00-00.01_schema.sql +5 -5
- package/package.json +16 -15
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export default class LoopLifecycle {
|
|
2
|
+
#db;
|
|
3
|
+
constructor(db) {
|
|
4
|
+
this.#db = db;
|
|
5
|
+
}
|
|
6
|
+
async park(loopId, message) {
|
|
7
|
+
return (await this.#db.lifecycle_park_loop.get({
|
|
8
|
+
loop_id: loopId,
|
|
9
|
+
message,
|
|
10
|
+
})) !== undefined;
|
|
11
|
+
}
|
|
12
|
+
async wake(loopId) {
|
|
13
|
+
return (await this.#db.lifecycle_wake_loop.get({
|
|
14
|
+
loop_id: loopId,
|
|
15
|
+
})) !== undefined;
|
|
16
|
+
}
|
|
17
|
+
async finish(loopId, status, message, terminatedBy = null) {
|
|
18
|
+
return (await this.#db.lifecycle_finish_loop.get({
|
|
19
|
+
loop_id: loopId,
|
|
20
|
+
status,
|
|
21
|
+
message,
|
|
22
|
+
terminated_by: terminatedBy,
|
|
23
|
+
})) !== undefined;
|
|
24
|
+
}
|
|
25
|
+
async status(loopId) {
|
|
26
|
+
const row = await this.#db.lifecycle_loop_status.get({
|
|
27
|
+
loop_id: loopId,
|
|
28
|
+
});
|
|
29
|
+
if (row === undefined)
|
|
30
|
+
throw new Error(`loop ${loopId} does not exist`);
|
|
31
|
+
return row.status;
|
|
32
|
+
}
|
|
33
|
+
async turnIds(loopId) {
|
|
34
|
+
const rows = await this.#db.lifecycle_loop_turns.all({
|
|
35
|
+
loop_id: loopId,
|
|
36
|
+
});
|
|
37
|
+
return rows.map(({ id }) => id);
|
|
38
|
+
}
|
|
39
|
+
async cancelTree(workerId, reason, includeRoot) {
|
|
40
|
+
const params = {
|
|
41
|
+
worker_id: workerId,
|
|
42
|
+
include_root: includeRoot ? 1 : 0,
|
|
43
|
+
message: reason.slice(0, 500),
|
|
44
|
+
};
|
|
45
|
+
const workers = await this.#db.lifecycle_worker_tree.all({
|
|
46
|
+
worker_id: params.worker_id,
|
|
47
|
+
include_root: params.include_root,
|
|
48
|
+
});
|
|
49
|
+
const loops = await this.#db.lifecycle_cancel_worker_tree.all(params);
|
|
50
|
+
return {
|
|
51
|
+
workerIds: workers.map(({ worker_id }) => worker_id),
|
|
52
|
+
loops: loops.map(({ loop_id, worker_id }) => ({ loopId: loop_id, workerId: worker_id })),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=LoopLifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoopLifecycle.js","sourceRoot":"","sources":["../../src/core/LoopLifecycle.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,OAAO,OAAO,aAAa;IAC9B,GAAG,CAAK;IAER,YAAY,EAAM;QACd,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,OAAe;QACtC,OAAO,CAAC,MAAO,IAAI,CAAC,GAAG,CAAC,mBAAkC,CAAC,GAAG,CAAiB;YAC3E,OAAO,EAAE,MAAM;YACf,OAAO;SACV,CAAC,CAAC,KAAK,SAAS,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc;QACrB,OAAO,CAAC,MAAO,IAAI,CAAC,GAAG,CAAC,mBAAkC,CAAC,GAAG,CAAiB;YAC3E,OAAO,EAAE,MAAM;SAClB,CAAC,CAAC,KAAK,SAAS,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,MAAM,CACR,MAAc,EACd,MAA+C,EAC/C,OAAsB,EACtB,YAAY,GAAoB,IAAI;QAEpC,OAAO,CAAC,MAAO,IAAI,CAAC,GAAG,CAAC,qBAAoC,CAAC,GAAG,CAAiB;YAC7E,OAAO,EAAE,MAAM;YACf,MAAM;YACN,OAAO;YACP,aAAa,EAAE,YAAY;SAC9B,CAAC,CAAC,KAAK,SAAS,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc;QACvB,MAAM,GAAG,GAAG,MAAO,IAAI,CAAC,GAAG,CAAC,qBAAoC,CAAC,GAAG,CAAqB;YACrF,OAAO,EAAE,MAAM;SAClB,CAAC,CAAC;QACH,IAAI,GAAG,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,iBAAiB,CAAC,CAAC;QACxE,OAAO,GAAG,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc;QACxB,MAAM,IAAI,GAAG,MAAO,IAAI,CAAC,GAAG,CAAC,oBAAmC,CAAC,GAAG,CAAiB;YACjF,OAAO,EAAE,MAAM;SAClB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,MAAc,EAAE,WAAoB;QACnE,MAAM,MAAM,GAAG;YACX,SAAS,EAAE,QAAQ;YACnB,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;SAChC,CAAC;QACF,MAAM,OAAO,GAAG,MAAO,IAAI,CAAC,GAAG,CAAC,qBAAoC,CAAC,GAAG,CAAwB;YAC5F,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;SACpC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAO,IAAI,CAAC,GAAG,CAAC,4BAA2C,CAAC,GAAG,CAG1E,MAAM,CAAC,CAAC;QACX,OAAO;YACH,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC;YACpD,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;SAC3F,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
-- Durable loop lifecycle transitions. LoopLifecycle is the only TypeScript owner
|
|
2
|
+
-- of these statements; callers request transitions rather than writing status.
|
|
3
|
+
|
|
4
|
+
-- PREP: lifecycle_park_loop
|
|
5
|
+
UPDATE loops
|
|
6
|
+
SET status = 202,
|
|
7
|
+
terminal_message = $message
|
|
8
|
+
WHERE id = $loop_id AND status = 102
|
|
9
|
+
RETURNING id;
|
|
10
|
+
|
|
11
|
+
-- PREP: lifecycle_wake_loop
|
|
12
|
+
UPDATE loops
|
|
13
|
+
SET status = 100
|
|
14
|
+
WHERE id = $loop_id AND status = 202
|
|
15
|
+
RETURNING id;
|
|
16
|
+
|
|
17
|
+
-- PREP: lifecycle_finish_loop
|
|
18
|
+
UPDATE loops
|
|
19
|
+
SET status = $status,
|
|
20
|
+
terminal_message = $message,
|
|
21
|
+
terminated_by = $terminated_by
|
|
22
|
+
WHERE id = $loop_id AND status IN (100, 102, 202)
|
|
23
|
+
RETURNING id;
|
|
24
|
+
|
|
25
|
+
-- PREP: lifecycle_loop_status
|
|
26
|
+
SELECT status FROM loops WHERE id = $loop_id;
|
|
27
|
+
|
|
28
|
+
-- PREP: lifecycle_loop_turns
|
|
29
|
+
SELECT id FROM turns WHERE loop_id = $loop_id ORDER BY sequence, id;
|
|
30
|
+
|
|
31
|
+
-- PREP: lifecycle_worker_tree
|
|
32
|
+
WITH RECURSIVE tree(id, depth) AS (
|
|
33
|
+
SELECT id, 0 FROM workers WHERE id = $worker_id
|
|
34
|
+
UNION ALL
|
|
35
|
+
SELECT child.id, tree.depth + 1
|
|
36
|
+
FROM workers child
|
|
37
|
+
JOIN tree ON child.parent_worker_id = tree.id
|
|
38
|
+
)
|
|
39
|
+
SELECT id AS worker_id, depth
|
|
40
|
+
FROM tree
|
|
41
|
+
WHERE $include_root = 1 OR id <> $worker_id
|
|
42
|
+
ORDER BY depth DESC, id;
|
|
43
|
+
|
|
44
|
+
-- PREP: lifecycle_cancel_worker_tree
|
|
45
|
+
WITH RECURSIVE tree(id) AS (
|
|
46
|
+
SELECT id FROM workers WHERE id = $worker_id
|
|
47
|
+
UNION ALL
|
|
48
|
+
SELECT child.id
|
|
49
|
+
FROM workers child
|
|
50
|
+
JOIN tree ON child.parent_worker_id = tree.id
|
|
51
|
+
)
|
|
52
|
+
UPDATE loops
|
|
53
|
+
SET status = 499,
|
|
54
|
+
terminal_message = $message,
|
|
55
|
+
terminated_by = 'cancel'
|
|
56
|
+
WHERE worker_id IN (
|
|
57
|
+
SELECT id FROM tree WHERE $include_root = 1 OR id <> $worker_id
|
|
58
|
+
)
|
|
59
|
+
AND status IN (100, 102, 202)
|
|
60
|
+
RETURNING id AS loop_id, worker_id;
|
|
@@ -7,6 +7,7 @@ import type { Mimetypes } from "@plurnk/plurnk-mimetypes";
|
|
|
7
7
|
import type { StreamEventNotify, WakeWorkerNotify } from "./ChannelWrite.ts";
|
|
8
8
|
import type { LoopFlags } from "./scheme-types.ts";
|
|
9
9
|
import type { DispatchResult } from "./Dispatcher.ts";
|
|
10
|
+
import type LiveSubscriptions from "./LiveSubscriptions.ts";
|
|
10
11
|
export type ProposalDecision = "accept" | "reject" | "cancel";
|
|
11
12
|
export interface ProposalResolution {
|
|
12
13
|
decision: ProposalDecision;
|
|
@@ -31,7 +32,7 @@ export interface ProposalPendingEvent {
|
|
|
31
32
|
}
|
|
32
33
|
export default class ProposalLifecycle {
|
|
33
34
|
#private;
|
|
34
|
-
constructor({ db, schemes, telemetry, streamEventNotify, wakeWorkerNotify, tokenize, mimetypes, executors, loopSignal }: {
|
|
35
|
+
constructor({ db, schemes, telemetry, streamEventNotify, wakeWorkerNotify, tokenize, mimetypes, executors, loopSignal, liveSubscriptions }: {
|
|
35
36
|
db: Db;
|
|
36
37
|
schemes: SchemeRegistry;
|
|
37
38
|
telemetry: TelemetryChannel;
|
|
@@ -41,6 +42,7 @@ export default class ProposalLifecycle {
|
|
|
41
42
|
mimetypes?: Mimetypes;
|
|
42
43
|
executors: () => ExecutorRegistry | undefined;
|
|
43
44
|
loopSignal: (loopId: number) => AbortSignal | undefined;
|
|
45
|
+
liveSubscriptions: LiveSubscriptions;
|
|
44
46
|
});
|
|
45
47
|
resolve(logEntryId: number, resolution: ProposalResolution): void;
|
|
46
48
|
pendingIds(): number[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProposalLifecycle.d.ts","sourceRoot":"","sources":["../../src/core/ProposalLifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,EAAE,EAAc,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAuB,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ProposalLifecycle.d.ts","sourceRoot":"","sources":["../../src/core/ProposalLifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,EAAE,EAAc,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAuB,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAC;AAQ5D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC9D,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,EAAE,gBAAgB,CAAC;IAI3B,IAAI,CAAC,EAAE,MAAM,CAAC;IAKd,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD,MAAM,WAAW,oBAAoB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IAIjB,gBAAgB,EAAE,OAAO,CAAC;CAC7B;AAmBD,MAAM,CAAC,OAAO,OAAO,iBAAiB;;IAyBlC,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE;QACxI,EAAE,EAAE,EAAE,CAAC;QACP,OAAO,EAAE,cAAc,CAAC;QACxB,SAAS,EAAE,gBAAgB,CAAC;QAC5B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;QACtC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;QACpC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;QACnC,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,SAAS,EAAE,MAAM,gBAAgB,GAAG,SAAS,CAAC;QAC9C,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;QACxD,iBAAiB,EAAE,iBAAiB,CAAC;KACxC,EAWA;IAOD,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,GAAG,IAAI,CAQhE;IAID,UAAU,IAAI,MAAM,EAAE,CAErB;IAOD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAM/B;IAOD,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAAG,IAAI,CAE/D;IAED,aAAa,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAI/C;IAED,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAa/D;IAGK,WAAW,CACb,SAAS,EAAE,eAAe,EAC1B,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,kBAAkB,EAC9B,GAAG,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAC/E,OAAO,CAAC,kBAAkB,CAAC,CA6D7B;IAEK,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAkCjG;CACJ"}
|
|
@@ -30,6 +30,7 @@ export default class ProposalLifecycle {
|
|
|
30
30
|
#executors;
|
|
31
31
|
// Per-loop abort signal, owned by Engine.runLoop — thunked.
|
|
32
32
|
#loopSignal;
|
|
33
|
+
#liveSubscriptions;
|
|
33
34
|
// Proposal lifecycle: pending dispatch pauses waiting for resolution.
|
|
34
35
|
// Dispatch awaits the promise when a scheme returns status 202;
|
|
35
36
|
// Engine.resolveProposal feeds the resolution back in. Map is per-log-
|
|
@@ -41,7 +42,7 @@ export default class ProposalLifecycle {
|
|
|
41
42
|
// event emitter — no priority, no veto chain at this layer; filter
|
|
42
43
|
// chains come later if a real consumer needs them.
|
|
43
44
|
#listeners = [];
|
|
44
|
-
constructor({ db, schemes, telemetry, streamEventNotify, wakeWorkerNotify, tokenize, mimetypes, executors, loopSignal }) {
|
|
45
|
+
constructor({ db, schemes, telemetry, streamEventNotify, wakeWorkerNotify, tokenize, mimetypes, executors, loopSignal, liveSubscriptions }) {
|
|
45
46
|
this.#db = db;
|
|
46
47
|
this.#schemes = schemes;
|
|
47
48
|
this.#telemetry = telemetry;
|
|
@@ -51,6 +52,7 @@ export default class ProposalLifecycle {
|
|
|
51
52
|
this.#mimetypes = mimetypes;
|
|
52
53
|
this.#executors = executors;
|
|
53
54
|
this.#loopSignal = loopSignal;
|
|
55
|
+
this.#liveSubscriptions = liveSubscriptions;
|
|
54
56
|
}
|
|
55
57
|
// External API to feed a resolution into a pending proposal. Called by
|
|
56
58
|
// the loop/resolve RPC handler (Phase E.2), the in-tree auto listener
|
|
@@ -155,7 +157,7 @@ export default class ProposalLifecycle {
|
|
|
155
157
|
const manifest = this.#schemes.manifestFor(schemeName);
|
|
156
158
|
if (manifest === undefined)
|
|
157
159
|
throw new Error(`scheme '${schemeName}' has no manifest`);
|
|
158
|
-
const applyResult = await handler.applyResolution(request, new SchemeCtxImpl(applyCtx, schemeName, manifest));
|
|
160
|
+
const applyResult = await handler.applyResolution(request, new SchemeCtxImpl(applyCtx, schemeName, manifest, this.#liveSubscriptions));
|
|
159
161
|
if (applyResult.status >= 400) {
|
|
160
162
|
return {
|
|
161
163
|
decision: "reject",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProposalLifecycle.js","sourceRoot":"","sources":["../../src/core/ProposalLifecycle.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,aAAa,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"ProposalLifecycle.js","sourceRoot":"","sources":["../../src/core/ProposalLifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,18 +4,21 @@ import type { PacketSection } from "./packet-wire.ts";
|
|
|
4
4
|
import type { SchemeManifest } from "./scheme-types.ts";
|
|
5
5
|
import type ExecutorRegistry from "./ExecutorRegistry.ts";
|
|
6
6
|
import type { Executor } from "./ExecutorRegistry.ts";
|
|
7
|
+
import type { CoreSchemeServices } from "./CoreSchemeServices.ts";
|
|
7
8
|
export default class SchemeRegistry {
|
|
8
9
|
#private;
|
|
9
10
|
constructor(opts?: {
|
|
10
11
|
fetchWeb?: WebFetch;
|
|
11
12
|
});
|
|
12
13
|
register(name: string, handler: object): void;
|
|
14
|
+
bindCore(services: CoreSchemeServices): void;
|
|
13
15
|
registerRuntimeSchemes(executors: ExecutorRegistry): void;
|
|
14
16
|
registerRuntimeScheme(tag: string, executor: Executor): void;
|
|
15
17
|
get(name: string): object | undefined;
|
|
16
18
|
has(name: string): boolean;
|
|
17
19
|
manifestFor(name: string): SchemeManifest | undefined;
|
|
18
20
|
list(): string[];
|
|
21
|
+
ready(): Promise<void>;
|
|
19
22
|
close(): Promise<void>;
|
|
20
23
|
defaultChannelFor(scheme: string | null): string;
|
|
21
24
|
teach(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemeRegistry.d.ts","sourceRoot":"","sources":["../../src/core/SchemeRegistry.ts"],"names":[],"mappings":"AACA,OAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAMzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAA4B,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGlF,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"SchemeRegistry.d.ts","sourceRoot":"","sources":["../../src/core/SchemeRegistry.ts"],"names":[],"mappings":"AACA,OAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAMzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAA4B,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGlF,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAKtD,OAAO,KAAK,EAAqB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAcrF,MAAM,CAAC,OAAO,OAAO,cAAc;;IAe/B,YAAY,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,QAAQ,CAAA;KAAE,EAezC;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAK5C;IAED,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAM3C;IAOD,sBAAsB,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAMxD;IAOD,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAQ3D;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAqC;IAE1E,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAqC;IAE/D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAGpD;IAED,IAAI,IAAI,MAAM,EAAE,CAAkD;IAK5D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAM3B;IAIK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAM3B;IAID,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAI/C;IAWD,KAAK,IAAI,MAAM,CAad;IAID,IAAI,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAW/C;IAOK,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAO3E;IASK,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBjE;IAID,YAAY,IAAI,MAAM,EAAE,CAAoC;IAI5D,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,CAE5C;CACJ"}
|
|
@@ -38,6 +38,7 @@ export default class SchemeRegistry {
|
|
|
38
38
|
// Handler store. Dispatcher supplies one context implementation to bundled
|
|
39
39
|
// and discovered schemes alike.
|
|
40
40
|
#handlers = new Map();
|
|
41
|
+
#coreServices;
|
|
41
42
|
#attributions = []; // #249 — declared attribution tags of discovered external schemes
|
|
42
43
|
// §exec — runtime-tag schemes (sh/node/…) that ALIAS the exec handler for output-entry
|
|
43
44
|
// addressing (sh:///l/t/s). Routable via get(), but NOT separately taught or doc-materialized
|
|
@@ -66,8 +67,19 @@ export default class SchemeRegistry {
|
|
|
66
67
|
register(name, handler) {
|
|
67
68
|
if (this.#handlers.has(name))
|
|
68
69
|
throw new Error(`scheme '${name}' is already registered`);
|
|
70
|
+
const bindCore = handler.bindCore;
|
|
71
|
+
if (this.#coreServices !== undefined && typeof bindCore === "function")
|
|
72
|
+
bindCore.call(handler, this.#coreServices);
|
|
69
73
|
this.#handlers.set(name, handler);
|
|
70
74
|
}
|
|
75
|
+
bindCore(services) {
|
|
76
|
+
this.#coreServices = services;
|
|
77
|
+
for (const handler of new Set(this.#handlers.values())) {
|
|
78
|
+
const bindCore = handler.bindCore;
|
|
79
|
+
if (typeof bindCore === "function")
|
|
80
|
+
bindCore.call(handler, services);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
71
83
|
// §exec / #240 — exec OUTPUT entries address by their runtime TAG as authority
|
|
72
84
|
// (sh:///l/t/s). Register each discovered executor as its OWN per-tag scheme face
|
|
73
85
|
// (ExecOutputScheme): READ/FIND tag-scoped via the executor's manifest, process-KILL
|
|
@@ -106,6 +118,17 @@ export default class SchemeRegistry {
|
|
|
106
118
|
return handler?.manifest ?? handler?.constructor?.manifest;
|
|
107
119
|
}
|
|
108
120
|
list() { return [...this.#handlers.keys()].toSorted(); }
|
|
121
|
+
// Process-readiness boundary for plugin-owned runtime capabilities. Discovery
|
|
122
|
+
// alone proves only that a handler can be imported; ready() proves resources
|
|
123
|
+
// advertised as available at boot can actually be opened.
|
|
124
|
+
async ready() {
|
|
125
|
+
const handlers = new Set(this.#handlers.values());
|
|
126
|
+
for (const handler of handlers) {
|
|
127
|
+
const ready = handler.ready;
|
|
128
|
+
if (ready !== undefined)
|
|
129
|
+
await ready.call(handler);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
109
132
|
// Process-lifecycle boundary for plugin-owned pools/sockets/connections. Runtime
|
|
110
133
|
// aliases may share a handler, so close each object identity exactly once.
|
|
111
134
|
async close() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemeRegistry.js","sourceRoot":"","sources":["../../src/core/SchemeRegistry.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,IAAuB,MAAM,oBAAoB,CAAC;AACzD,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAG7E,OAAO,iBAAiB,MAAM,yBAAyB,CAAC;AACxD,OAAO,gBAAgB,MAAM,gCAAgC,CAAC;AAG9D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"SchemeRegistry.js","sourceRoot":"","sources":["../../src/core/SchemeRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { SubscriptionCaps, SubscriptionHandle } from "@plurnk/plurnk-schemes";
|
|
2
2
|
import type { PlurnkSchemeContext } from "../scheme-types.ts";
|
|
3
|
+
import type LiveSubscriptions from "../LiveSubscriptions.ts";
|
|
3
4
|
export default class DbSubscriptionCaps implements SubscriptionCaps {
|
|
4
5
|
#private;
|
|
5
|
-
constructor(ctx: PlurnkSchemeContext, scheme: string | null);
|
|
6
|
+
constructor(ctx: PlurnkSchemeContext, scheme: string | null, liveSubscriptions: LiveSubscriptions);
|
|
6
7
|
open(pathname: string, handle: SubscriptionHandle, options?: {
|
|
7
8
|
publishedChannel?: string;
|
|
8
9
|
}): Promise<AbortSignal>;
|
|
9
10
|
notifyChunk(channel: string, chunk: string, mimetype?: string): Promise<void>;
|
|
10
|
-
close(reason: "done" | "error", outcome?: string): Promise<void>;
|
|
11
|
+
close(reason: "done" | "error" | "cancelled", outcome?: string): Promise<void>;
|
|
11
12
|
}
|
|
12
13
|
//# sourceMappingURL=DbSubscriptionCaps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbSubscriptionCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbSubscriptionCaps.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAgB,MAAM,wBAAwB,CAAC;AACjG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"DbSubscriptionCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbSubscriptionCaps.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAgB,MAAM,wBAAwB,CAAC;AACjG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,OAAO,KAAK,iBAAiB,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,kBAAmB,YAAW,gBAAgB;;IAU/D,YAAY,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,iBAAiB,EAAE,iBAAiB,EAIhG;IAEK,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAkCtH;IAEK,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOlF;IAEK,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BnF;CACJ"}
|
|
@@ -14,14 +14,16 @@ import CapsResolve from "./CapsResolve.js";
|
|
|
14
14
|
export default class DbSubscriptionCaps {
|
|
15
15
|
#ctx;
|
|
16
16
|
#scheme;
|
|
17
|
+
#liveSubscriptions;
|
|
17
18
|
#pathname = null;
|
|
18
19
|
#entryId = null;
|
|
19
20
|
#subscriptionId = null;
|
|
20
21
|
#publishedChannel = null;
|
|
21
22
|
#unlink = () => { };
|
|
22
|
-
constructor(ctx, scheme) {
|
|
23
|
+
constructor(ctx, scheme, liveSubscriptions) {
|
|
23
24
|
this.#ctx = ctx;
|
|
24
25
|
this.#scheme = scheme;
|
|
26
|
+
this.#liveSubscriptions = liveSubscriptions;
|
|
25
27
|
}
|
|
26
28
|
async open(pathname, handle, options) {
|
|
27
29
|
const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname);
|
|
@@ -34,16 +36,24 @@ export default class DbSubscriptionCaps {
|
|
|
34
36
|
// Compose the worker signal with a fresh controller; a worker abort also
|
|
35
37
|
// force-cancels the sibling's handle.
|
|
36
38
|
const controller = new AbortController();
|
|
39
|
+
this.#liveSubscriptions.register(subscriptionId, {
|
|
40
|
+
cancel: async () => {
|
|
41
|
+
controller.abort("subscription cancelled");
|
|
42
|
+
await handle.cancel();
|
|
43
|
+
},
|
|
44
|
+
});
|
|
37
45
|
const parent = this.#ctx.signal;
|
|
38
46
|
if (parent !== undefined) {
|
|
39
|
-
|
|
40
|
-
void
|
|
41
|
-
|
|
42
|
-
|
|
47
|
+
const cancel = () => {
|
|
48
|
+
void this.#liveSubscriptions.cancel(subscriptionId).catch((err) => {
|
|
49
|
+
console.error("subscription cancellation failed:", err);
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
if (parent.aborted)
|
|
53
|
+
cancel();
|
|
43
54
|
else {
|
|
44
|
-
|
|
45
|
-
parent.
|
|
46
|
-
this.#unlink = () => parent.removeEventListener("abort", onAbort);
|
|
55
|
+
parent.addEventListener("abort", cancel, { once: true });
|
|
56
|
+
this.#unlink = () => parent.removeEventListener("abort", cancel);
|
|
47
57
|
}
|
|
48
58
|
}
|
|
49
59
|
this.#pathname = pathname;
|
|
@@ -67,7 +77,7 @@ export default class DbSubscriptionCaps {
|
|
|
67
77
|
if (entryId === null || subscriptionId === null)
|
|
68
78
|
throw new Error("subscriptions.close: no open subscription");
|
|
69
79
|
const state = reason === "error" ? "errored" : "closed";
|
|
70
|
-
const closeStatus = reason === "error" ? 500 : 200;
|
|
80
|
+
const closeStatus = reason === "error" ? 500 : reason === "cancelled" ? 499 : 200;
|
|
71
81
|
// Every channel of the entry → terminal state, then the registry row
|
|
72
82
|
// closes, then the worker wakes with the scheme's summary.
|
|
73
83
|
const channels = await this.#ctx.db.crud_read_channels.all({ entry_id: entryId });
|
|
@@ -78,6 +88,7 @@ export default class DbSubscriptionCaps {
|
|
|
78
88
|
});
|
|
79
89
|
}
|
|
80
90
|
await ChannelWrite.closeSubscription(this.#ctx.db, { subscriptionId, status: closeStatus });
|
|
91
|
+
this.#liveSubscriptions.unregister(subscriptionId);
|
|
81
92
|
this.#unlink();
|
|
82
93
|
const target = this.#scheme === null ? `file://${this.#pathname}` : `${this.#scheme}://${this.#pathname}`;
|
|
83
94
|
this.#ctx.wakeWorkerNotify?.({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbSubscriptionCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbSubscriptionCaps.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,4CAA4C;AAC5C,yEAAyE;AACzE,+EAA+E;AAC/E,kEAAkE;AAClE,0EAA0E;AAC1E,6EAA6E;AAC7E,2EAA2E;AAC3E,kFAAkF;AAClF,6EAA6E;AAC7E,gFAAgF;AAKhF,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,WAAW,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"DbSubscriptionCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbSubscriptionCaps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,19 @@
|
|
|
1
1
|
import type { SchemeCtx, EntryCaps, ChannelCaps, TagCaps, NotifyCaps, ProjectionCaps, SubscriptionCaps, SchemeManifest, WriterTier } from "@plurnk/plurnk-schemes";
|
|
2
2
|
import type { PlurnkSchemeContext } from "../scheme-types.ts";
|
|
3
|
-
import type
|
|
4
|
-
|
|
5
|
-
import type ExecutorRegistry from "../ExecutorRegistry.ts";
|
|
6
|
-
import type { InjectWorkerNotify, StreamEventNotify, WakeWorkerNotify } from "../ChannelWrite.ts";
|
|
7
|
-
import type { TelemetryEvent } from "../results.ts";
|
|
8
|
-
export default class SchemeCtxImpl implements SchemeCtx, PlurnkSchemeContext {
|
|
9
|
-
readonly db: Db;
|
|
3
|
+
import type LiveSubscriptions from "../LiveSubscriptions.ts";
|
|
4
|
+
export default class SchemeCtxImpl implements SchemeCtx {
|
|
10
5
|
readonly workspaceId: number;
|
|
11
6
|
readonly workerId: number;
|
|
12
7
|
readonly loopId: number;
|
|
13
8
|
readonly turnId: number;
|
|
14
9
|
readonly writer: WriterTier;
|
|
15
10
|
readonly signal: AbortSignal | undefined;
|
|
16
|
-
readonly streamEventNotify: StreamEventNotify | undefined;
|
|
17
|
-
readonly wakeWorkerNotify: WakeWorkerNotify | undefined;
|
|
18
|
-
readonly injectWorker: InjectWorkerNotify | undefined;
|
|
19
|
-
readonly mimetypes: Mimetypes | undefined;
|
|
20
|
-
readonly executors: ExecutorRegistry | undefined;
|
|
21
|
-
readonly tokenize: ((text: string) => number) | undefined;
|
|
22
|
-
readonly defaultChannelFor: ((scheme: string | null) => string) | undefined;
|
|
23
|
-
readonly pushTelemetry: ((event: TelemetryEvent) => void) | undefined;
|
|
24
11
|
readonly entries: EntryCaps;
|
|
25
12
|
readonly channels: ChannelCaps;
|
|
26
13
|
readonly tags: TagCaps;
|
|
27
14
|
readonly notify: NotifyCaps;
|
|
28
15
|
readonly projection: ProjectionCaps;
|
|
29
16
|
readonly subscriptions: SubscriptionCaps;
|
|
30
|
-
constructor(ctx: PlurnkSchemeContext, scheme: string, manifest: SchemeManifest);
|
|
17
|
+
constructor(ctx: PlurnkSchemeContext, scheme: string, manifest: SchemeManifest, liveSubscriptions: LiveSubscriptions);
|
|
31
18
|
}
|
|
32
19
|
//# sourceMappingURL=SchemeCtxImpl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemeCtxImpl.d.ts","sourceRoot":"","sources":["../../../src/core/caps/SchemeCtxImpl.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SchemeCtxImpl.d.ts","sourceRoot":"","sources":["../../../src/core/caps/SchemeCtxImpl.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EACvH,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAO9D,OAAO,KAAK,iBAAiB,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,SAAS;IACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACzC,YAAY,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAanH;CACJ"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
// The single per-handler context.
|
|
2
|
-
//
|
|
3
|
-
// they are compatibility internals, not part of the plugin contract.
|
|
1
|
+
// The single per-handler context. It exposes only the public SchemeCtx contract;
|
|
2
|
+
// daemon collaborators stay constructor-injected into core-owned adapters.
|
|
4
3
|
import DbEntryCaps from "./DbEntryCaps.js";
|
|
5
4
|
import DbChannelCaps from "./DbChannelCaps.js";
|
|
6
5
|
import DbTagCaps from "./DbTagCaps.js";
|
|
@@ -8,49 +7,31 @@ import DbNotifyCaps from "./DbNotifyCaps.js";
|
|
|
8
7
|
import DbSubscriptionCaps from "./DbSubscriptionCaps.js";
|
|
9
8
|
import DbProjectionCaps from "./DbProjectionCaps.js";
|
|
10
9
|
export default class SchemeCtxImpl {
|
|
11
|
-
db;
|
|
12
10
|
workspaceId;
|
|
13
11
|
workerId;
|
|
14
12
|
loopId;
|
|
15
13
|
turnId;
|
|
16
14
|
writer;
|
|
17
15
|
signal;
|
|
18
|
-
streamEventNotify;
|
|
19
|
-
wakeWorkerNotify;
|
|
20
|
-
injectWorker;
|
|
21
|
-
mimetypes;
|
|
22
|
-
executors;
|
|
23
|
-
tokenize;
|
|
24
|
-
defaultChannelFor;
|
|
25
|
-
pushTelemetry;
|
|
26
16
|
entries;
|
|
27
17
|
channels;
|
|
28
18
|
tags;
|
|
29
19
|
notify;
|
|
30
20
|
projection;
|
|
31
21
|
subscriptions;
|
|
32
|
-
constructor(ctx, scheme, manifest) {
|
|
33
|
-
this.db = ctx.db;
|
|
22
|
+
constructor(ctx, scheme, manifest, liveSubscriptions) {
|
|
34
23
|
this.workspaceId = ctx.workspaceId;
|
|
35
24
|
this.workerId = ctx.workerId;
|
|
36
25
|
this.loopId = ctx.loopId;
|
|
37
26
|
this.turnId = ctx.turnId;
|
|
38
27
|
this.writer = ctx.writer;
|
|
39
28
|
this.signal = ctx.signal;
|
|
40
|
-
this.streamEventNotify = ctx.streamEventNotify;
|
|
41
|
-
this.wakeWorkerNotify = ctx.wakeWorkerNotify;
|
|
42
|
-
this.injectWorker = ctx.injectWorker;
|
|
43
|
-
this.mimetypes = ctx.mimetypes;
|
|
44
|
-
this.executors = ctx.executors;
|
|
45
|
-
this.tokenize = ctx.tokenize;
|
|
46
|
-
this.defaultChannelFor = ctx.defaultChannelFor;
|
|
47
|
-
this.pushTelemetry = ctx.pushTelemetry;
|
|
48
29
|
this.entries = new DbEntryCaps(ctx, scheme, manifest);
|
|
49
30
|
this.channels = new DbChannelCaps(ctx, scheme);
|
|
50
31
|
this.tags = new DbTagCaps(ctx, scheme);
|
|
51
32
|
this.notify = new DbNotifyCaps(ctx, scheme);
|
|
52
33
|
this.projection = new DbProjectionCaps(ctx);
|
|
53
|
-
this.subscriptions = new DbSubscriptionCaps(ctx, scheme);
|
|
34
|
+
this.subscriptions = new DbSubscriptionCaps(ctx, scheme, liveSubscriptions);
|
|
54
35
|
}
|
|
55
36
|
}
|
|
56
37
|
//# sourceMappingURL=SchemeCtxImpl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemeCtxImpl.js","sourceRoot":"","sources":["../../../src/core/caps/SchemeCtxImpl.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"SchemeCtxImpl.js","sourceRoot":"","sources":["../../../src/core/caps/SchemeCtxImpl.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,2EAA2E;AAM3E,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AACzD,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAGrD,MAAM,CAAC,OAAO,OAAO,aAAa;IACrB,WAAW,CAAS;IACpB,QAAQ,CAAS;IACjB,MAAM,CAAS;IACf,MAAM,CAAS;IACf,MAAM,CAAa;IACnB,MAAM,CAA0B;IAChC,OAAO,CAAY;IACnB,QAAQ,CAAc;IACtB,IAAI,CAAU;IACd,MAAM,CAAa;IACnB,UAAU,CAAiB;IAC3B,aAAa,CAAmB;IACzC,YAAY,GAAwB,EAAE,MAAc,EAAE,QAAwB,EAAE,iBAAoC;QAChH,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAChF,CAAC;CACJ"}
|
package/dist/core/run-ops.sql
CHANGED
|
@@ -18,7 +18,7 @@ SELECT name FROM workers WHERE id = $worker_id;
|
|
|
18
18
|
-- deliverable a sister COLLECTS by READing worker://<name> (§worker-scheme-collect, the pull side of
|
|
19
19
|
-- the same deliverable the push delta carries). Terminal status → the message is the result (200)
|
|
20
20
|
-- or the abandonment reason; non-terminal → the worker hasn't delivered yet (READ steers to 202).
|
|
21
|
-
-- terminated_by names
|
|
21
|
+
-- terminated_by names an external cancellation so COLLECT renders its marker.
|
|
22
22
|
SELECT r.id AS worker_id, l.status, l.terminal_message, l.terminated_by
|
|
23
23
|
FROM workers r
|
|
24
24
|
JOIN loops l ON l.worker_id = r.id
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheme-types.d.ts","sourceRoot":"","sources":["../../src/core/scheme-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scheme-types.d.ts","sourceRoot":"","sources":["../../src/core/scheme-types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACjG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAItD,YAAY,EACR,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,UAAU,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAKhD,MAAM,MAAM,gBAAgB,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAGxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAMF,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAC/C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAK7C,QAAQ,CAAC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAI/B,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAQtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAI7C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;IAM/D,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CAC5D;AAQD,MAAM,WAAW,wBAAwB;IACrC,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CAC5F"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
// @plurnk/plurnk-schemes plugin; the uniform contract belongs in the service.
|
|
1
|
+
// Core-internal operation context. Public scheme handlers receive the
|
|
2
|
+
// DB-independent SchemeCtx from @plurnk/plurnk-schemes; this shape remains for
|
|
3
|
+
// daemon orchestration and the bundled adapters that own core lifecycle state.
|
|
5
4
|
export { DEFAULT_LOOP_FLAGS } from "./types.js";
|
|
6
5
|
//# sourceMappingURL=scheme-types.js.map
|