@plurnk/plurnk-service 0.7.0 → 0.8.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 +104 -74
- package/bin/plurnk-service.ts +132 -0
- package/dist/Paths.d.ts +8 -0
- package/dist/Paths.d.ts.map +1 -0
- package/dist/Paths.js +47 -0
- package/dist/Paths.js.map +1 -0
- package/dist/content/index.d.ts +9 -0
- package/dist/content/index.d.ts.map +1 -0
- package/dist/content/index.js +10 -0
- package/dist/content/index.js.map +1 -0
- package/dist/content/line-marker.d.ts +26 -0
- package/dist/content/line-marker.d.ts.map +1 -0
- package/dist/content/line-marker.js +323 -0
- package/dist/content/line-marker.js.map +1 -0
- package/dist/content/matcher.d.ts +15 -0
- package/dist/content/matcher.d.ts.map +1 -0
- package/dist/content/matcher.js +112 -0
- package/dist/content/matcher.js.map +1 -0
- package/dist/content/mimetype-binary.d.ts +9 -0
- package/dist/content/mimetype-binary.d.ts.map +1 -0
- package/dist/content/mimetype-binary.js +86 -0
- package/dist/content/mimetype-binary.js.map +1 -0
- package/dist/content/path-mimetype.d.ts +6 -0
- package/dist/content/path-mimetype.d.ts.map +1 -0
- package/dist/content/path-mimetype.js +49 -0
- package/dist/content/path-mimetype.js.map +1 -0
- package/dist/content/read-resolve.d.ts +20 -0
- package/dist/content/read-resolve.d.ts.map +1 -0
- package/dist/content/read-resolve.js +60 -0
- package/dist/content/read-resolve.js.map +1 -0
- package/dist/core/ChannelWrite.d.ts +33 -30
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js +43 -41
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/Engine.d.ts +14 -10
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +269 -94
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/EnvFlags.d.ts +6 -3
- package/dist/core/EnvFlags.d.ts.map +1 -1
- package/dist/core/EnvFlags.js +62 -60
- package/dist/core/EnvFlags.js.map +1 -1
- package/dist/core/PluginLoader.d.ts +6 -3
- package/dist/core/PluginLoader.d.ts.map +1 -1
- package/dist/core/PluginLoader.js +77 -73
- package/dist/core/PluginLoader.js.map +1 -1
- package/dist/core/ProviderInstantiate.d.ts +4 -2
- package/dist/core/ProviderInstantiate.d.ts.map +1 -1
- package/dist/core/ProviderInstantiate.js +23 -22
- package/dist/core/ProviderInstantiate.js.map +1 -1
- package/dist/core/SchemeRegistry.d.ts +1 -1
- package/dist/core/SchemeRegistry.d.ts.map +1 -1
- package/dist/core/SchemeRegistry.js +3 -3
- package/dist/core/SchemeRegistry.js.map +1 -1
- package/dist/core/git-membership.d.ts +8 -0
- package/dist/core/git-membership.d.ts.map +1 -0
- package/dist/core/git-membership.js +125 -0
- package/dist/core/git-membership.js.map +1 -0
- package/dist/core/packet-wire.d.ts +47 -6
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +376 -312
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/resolveForLoop.d.ts +14 -0
- package/dist/core/resolveForLoop.d.ts.map +1 -0
- package/dist/core/resolveForLoop.js +34 -0
- package/dist/core/resolveForLoop.js.map +1 -0
- package/dist/core/results.d.ts +40 -0
- package/dist/core/results.d.ts.map +1 -0
- package/dist/core/results.js +52 -0
- package/dist/core/results.js.map +1 -0
- package/dist/core/scheme-types.d.ts +5 -4
- package/dist/core/scheme-types.d.ts.map +1 -1
- package/dist/core/scheme-types.js +4 -4
- package/dist/core/scheme-types.js.map +1 -1
- package/dist/core/types.d.ts +27 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +17 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +1 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -43
- package/dist/index.js.map +1 -1
- package/dist/schemes/Exec.d.ts +1 -0
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +37 -21
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/File.d.ts +0 -1
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +32 -66
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Known.d.ts.map +1 -1
- package/dist/schemes/Known.js +13 -13
- package/dist/schemes/Known.js.map +1 -1
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +8 -52
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/Plurnk.d.ts.map +1 -1
- package/dist/schemes/Plurnk.js +13 -13
- package/dist/schemes/Plurnk.js.map +1 -1
- package/dist/schemes/Skill.d.ts.map +1 -1
- package/dist/schemes/Skill.js +13 -13
- package/dist/schemes/Skill.js.map +1 -1
- package/dist/schemes/Unknown.d.ts.map +1 -1
- package/dist/schemes/Unknown.js +13 -13
- 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 +55 -50
- package/dist/schemes/_entry-crud.js.map +1 -1
- package/dist/schemes/_entry-find.d.ts +10 -3
- package/dist/schemes/_entry-find.d.ts.map +1 -1
- package/dist/schemes/_entry-find.js +99 -77
- package/dist/schemes/_entry-find.js.map +1 -1
- package/dist/schemes/_entry-manifest.d.ts +6 -0
- package/dist/schemes/_entry-manifest.d.ts.map +1 -0
- package/dist/schemes/_entry-manifest.js +45 -0
- package/dist/schemes/_entry-manifest.js.map +1 -0
- package/dist/schemes/_entry-ops.d.ts +7 -4
- package/dist/schemes/_entry-ops.d.ts.map +1 -1
- package/dist/schemes/_entry-ops.js +198 -316
- package/dist/schemes/_entry-ops.js.map +1 -1
- package/dist/schemes/_entry-send.d.ts +4 -1
- package/dist/schemes/_entry-send.d.ts.map +1 -1
- package/dist/schemes/_entry-send.js +57 -55
- package/dist/schemes/_entry-send.js.map +1 -1
- package/dist/server/ClientConnection.js +3 -3
- package/dist/server/ClientConnection.js.map +1 -1
- package/dist/server/Daemon.d.ts +5 -5
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +221 -176
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/clientTurn.d.ts +4 -1
- package/dist/server/clientTurn.d.ts.map +1 -1
- package/dist/server/clientTurn.js +19 -17
- package/dist/server/clientTurn.js.map +1 -1
- package/dist/server/dsl.d.ts +19 -16
- package/dist/server/dsl.d.ts.map +1 -1
- package/dist/server/dsl.js +127 -105
- package/dist/server/dsl.js.map +1 -1
- package/dist/server/envelope.d.ts +22 -19
- package/dist/server/envelope.d.ts.map +1 -1
- package/dist/server/envelope.js +116 -102
- package/dist/server/envelope.js.map +1 -1
- package/dist/server/logEntry.d.ts +4 -1
- package/dist/server/logEntry.d.ts.map +1 -1
- package/dist/server/logEntry.js +41 -39
- package/dist/server/logEntry.js.map +1 -1
- package/dist/server/methods/_dispatchAsClient.d.ts +3 -1
- package/dist/server/methods/_dispatchAsClient.d.ts.map +1 -1
- package/dist/server/methods/_dispatchAsClient.js +31 -29
- package/dist/server/methods/_dispatchAsClient.js.map +1 -1
- package/dist/server/methods/discover.d.ts +3 -1
- package/dist/server/methods/discover.d.ts.map +1 -1
- package/dist/server/methods/discover.js +8 -6
- package/dist/server/methods/discover.js.map +1 -1
- package/dist/server/methods/entry_read.d.ts +4 -1
- package/dist/server/methods/entry_read.d.ts.map +1 -1
- package/dist/server/methods/entry_read.js +54 -52
- package/dist/server/methods/entry_read.js.map +1 -1
- package/dist/server/methods/log_read.d.ts +4 -1
- package/dist/server/methods/log_read.d.ts.map +1 -1
- package/dist/server/methods/log_read.js +38 -36
- package/dist/server/methods/log_read.js.map +1 -1
- package/dist/server/methods/loop_cancel.d.ts +3 -1
- package/dist/server/methods/loop_cancel.d.ts.map +1 -1
- package/dist/server/methods/loop_cancel.js +19 -17
- package/dist/server/methods/loop_cancel.js.map +1 -1
- package/dist/server/methods/loop_resolve.d.ts +3 -1
- package/dist/server/methods/loop_resolve.d.ts.map +1 -1
- package/dist/server/methods/loop_resolve.js +42 -40
- package/dist/server/methods/loop_resolve.js.map +1 -1
- package/dist/server/methods/loop_run.d.ts +3 -1
- package/dist/server/methods/loop_run.d.ts.map +1 -1
- package/dist/server/methods/loop_run.js +104 -102
- package/dist/server/methods/loop_run.js.map +1 -1
- package/dist/server/methods/op_copy.d.ts +3 -1
- package/dist/server/methods/op_copy.d.ts.map +1 -1
- package/dist/server/methods/op_copy.js +25 -23
- package/dist/server/methods/op_copy.js.map +1 -1
- package/dist/server/methods/op_dispatch.d.ts +3 -1
- package/dist/server/methods/op_dispatch.d.ts.map +1 -1
- package/dist/server/methods/op_dispatch.js +18 -16
- package/dist/server/methods/op_dispatch.js.map +1 -1
- package/dist/server/methods/op_edit.d.ts +3 -1
- package/dist/server/methods/op_edit.d.ts.map +1 -1
- package/dist/server/methods/op_edit.js +23 -21
- package/dist/server/methods/op_edit.js.map +1 -1
- package/dist/server/methods/op_exec.d.ts +3 -1
- package/dist/server/methods/op_exec.d.ts.map +1 -1
- package/dist/server/methods/op_exec.js +20 -18
- package/dist/server/methods/op_exec.js.map +1 -1
- package/dist/server/methods/op_find.d.ts +3 -1
- package/dist/server/methods/op_find.d.ts.map +1 -1
- package/dist/server/methods/op_find.js +23 -21
- package/dist/server/methods/op_find.js.map +1 -1
- package/dist/server/methods/op_hide.d.ts +3 -1
- package/dist/server/methods/op_hide.d.ts.map +1 -1
- package/dist/server/methods/op_hide.js +23 -21
- package/dist/server/methods/op_hide.js.map +1 -1
- package/dist/server/methods/op_move.d.ts +3 -1
- package/dist/server/methods/op_move.d.ts.map +1 -1
- package/dist/server/methods/op_move.js +23 -21
- package/dist/server/methods/op_move.js.map +1 -1
- package/dist/server/methods/op_parse.d.ts +3 -1
- package/dist/server/methods/op_parse.d.ts.map +1 -1
- package/dist/server/methods/op_parse.js +24 -22
- package/dist/server/methods/op_parse.js.map +1 -1
- package/dist/server/methods/op_read.d.ts +3 -1
- package/dist/server/methods/op_read.d.ts.map +1 -1
- package/dist/server/methods/op_read.js +23 -21
- package/dist/server/methods/op_read.js.map +1 -1
- package/dist/server/methods/op_send.d.ts +3 -1
- package/dist/server/methods/op_send.d.ts.map +1 -1
- package/dist/server/methods/op_send.js +22 -20
- package/dist/server/methods/op_send.js.map +1 -1
- package/dist/server/methods/op_show.d.ts +3 -1
- package/dist/server/methods/op_show.d.ts.map +1 -1
- package/dist/server/methods/op_show.js +23 -21
- package/dist/server/methods/op_show.js.map +1 -1
- package/dist/server/methods/ping.d.ts +3 -1
- package/dist/server/methods/ping.d.ts.map +1 -1
- package/dist/server/methods/ping.js +8 -6
- package/dist/server/methods/ping.js.map +1 -1
- package/dist/server/methods/providers_list.d.ts +3 -1
- package/dist/server/methods/providers_list.d.ts.map +1 -1
- package/dist/server/methods/providers_list.js +19 -17
- package/dist/server/methods/providers_list.js.map +1 -1
- package/dist/server/methods/session_attach.d.ts +3 -1
- package/dist/server/methods/session_attach.d.ts.map +1 -1
- package/dist/server/methods/session_attach.js +43 -41
- package/dist/server/methods/session_attach.js.map +1 -1
- package/dist/server/methods/session_create.d.ts +3 -1
- package/dist/server/methods/session_create.d.ts.map +1 -1
- package/dist/server/methods/session_create.js +51 -49
- package/dist/server/methods/session_create.js.map +1 -1
- package/dist/server/methods/session_list.d.ts +3 -1
- package/dist/server/methods/session_list.d.ts.map +1 -1
- package/dist/server/methods/session_list.js +9 -7
- package/dist/server/methods/session_list.js.map +1 -1
- package/dist/server/methods/session_runs.d.ts +3 -1
- package/dist/server/methods/session_runs.d.ts.map +1 -1
- package/dist/server/methods/session_runs.js +19 -17
- package/dist/server/methods/session_runs.js.map +1 -1
- package/dist/server/methods/session_set_persona.d.ts +3 -1
- package/dist/server/methods/session_set_persona.d.ts.map +1 -1
- package/dist/server/methods/session_set_persona.js +28 -26
- package/dist/server/methods/session_set_persona.js.map +1 -1
- package/dist/server/methods/session_set_root.d.ts +3 -1
- package/dist/server/methods/session_set_root.d.ts.map +1 -1
- package/dist/server/methods/session_set_root.js +31 -29
- package/dist/server/methods/session_set_root.js.map +1 -1
- package/dist/server/yolo.d.ts +3 -1
- package/dist/server/yolo.d.ts.map +1 -1
- package/dist/server/yolo.js +15 -13
- package/dist/server/yolo.js.map +1 -1
- package/package.json +74 -30
- package/bin/plurnk-service.js +0 -112
- /package/migrations/{001_schema.sql → 0000-00-00.01_schema.sql} +0 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// Mimetype classifiers used at op-handler boundaries.
|
|
2
|
+
//
|
|
3
|
+
// `isBinaryMimetype` — enforces 415 on binary entries for READ/EDIT/
|
|
4
|
+
// SHOW/HIDE (SPEC.md §16.9 — binary entries → 415).
|
|
5
|
+
//
|
|
6
|
+
// `isLineNavigableMimetype` — decides whether the render layer prefixes
|
|
7
|
+
// each line with `N:\t` on READ output. Line-oriented mimetypes (text,
|
|
8
|
+
// markdown, source code, line-aligned configs) get `N:\t`. Tree-oriented
|
|
9
|
+
// mimetypes (JSON, XML, HTML) don't — line numbers would conflict with
|
|
10
|
+
// the structural navigation those formats use (jsonpath, xpath).
|
|
11
|
+
//
|
|
12
|
+
// Local heuristic until @plurnk/plurnk-mimetypes exposes per-mimetype
|
|
13
|
+
// metadata via its public API (HandlerInfo flags exist at registry
|
|
14
|
+
// level; not queryable per-mimetype yet — see plurnk-mimetypes#3).
|
|
15
|
+
export default class MimetypeBinary {
|
|
16
|
+
static #TEXT_APPLICATION_MIMETYPES = new Set([
|
|
17
|
+
"application/json",
|
|
18
|
+
"application/yaml",
|
|
19
|
+
"application/toml",
|
|
20
|
+
"application/xml",
|
|
21
|
+
"application/javascript",
|
|
22
|
+
"application/typescript",
|
|
23
|
+
"application/sql",
|
|
24
|
+
]);
|
|
25
|
+
// Mimetypes that are structurally tree-navigated rather than line-
|
|
26
|
+
// navigated. READ output of these doesn't get `N:\t` prefixes.
|
|
27
|
+
static #TREE_NAVIGABLE_MIMETYPES = new Set([
|
|
28
|
+
"application/json",
|
|
29
|
+
"application/xml",
|
|
30
|
+
"text/html",
|
|
31
|
+
]);
|
|
32
|
+
// Text primitive for the agent contract: text/markdown is the default
|
|
33
|
+
// text mimetype anywhere plurnk-service auto-derives a text result.
|
|
34
|
+
// text/plain is reserved for explicit scheme-manifest declarations
|
|
35
|
+
// (exec subprocess streams) and client-set entries. Rationale: markdown
|
|
36
|
+
// is a strict superset of plain text — any plain text is valid markdown
|
|
37
|
+
// — so the agent gets markdown-aware processing capability for free,
|
|
38
|
+
// and never needs to decide "is this markdown enough to mark as
|
|
39
|
+
// markdown?"
|
|
40
|
+
//
|
|
41
|
+
// Use this at any consumer-side auto-derivation point (file scheme
|
|
42
|
+
// extension fallback, log rx wrap, etc.) to normalize text/plain → text/markdown.
|
|
43
|
+
static TEXT_PRIMITIVE_MIMETYPE = "text/markdown";
|
|
44
|
+
static isBinaryMimetype(mimetype) {
|
|
45
|
+
if (mimetype.length === 0)
|
|
46
|
+
return false;
|
|
47
|
+
const slash = mimetype.indexOf("/");
|
|
48
|
+
if (slash === -1)
|
|
49
|
+
return true;
|
|
50
|
+
const type = mimetype.slice(0, slash);
|
|
51
|
+
if (type === "text")
|
|
52
|
+
return false;
|
|
53
|
+
if (MimetypeBinary.#TEXT_APPLICATION_MIMETYPES.has(mimetype))
|
|
54
|
+
return false;
|
|
55
|
+
if (mimetype.endsWith("+json") || mimetype.endsWith("+xml") || mimetype.endsWith("+yaml"))
|
|
56
|
+
return false;
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
// JSON-family check — used by `<L>` dispatch to pick structural slicer
|
|
60
|
+
// (sliceJsonItems) over line slicer (sliceLines) for JSON sources.
|
|
61
|
+
// Matches application/json plus +json suffix variants per RFC 6839.
|
|
62
|
+
static isJsonMimetype(mimetype) {
|
|
63
|
+
return mimetype === "application/json" || mimetype.endsWith("+json");
|
|
64
|
+
}
|
|
65
|
+
static isLineNavigableMimetype(mimetype) {
|
|
66
|
+
if (mimetype.length === 0)
|
|
67
|
+
return false;
|
|
68
|
+
if (MimetypeBinary.isBinaryMimetype(mimetype))
|
|
69
|
+
return false;
|
|
70
|
+
if (MimetypeBinary.#TREE_NAVIGABLE_MIMETYPES.has(mimetype))
|
|
71
|
+
return false;
|
|
72
|
+
if (mimetype.endsWith("+json") || mimetype.endsWith("+xml"))
|
|
73
|
+
return false;
|
|
74
|
+
// Everything text-ish that isn't tree-shaped is line-navigable.
|
|
75
|
+
// text/plain, text/markdown, text/csv, text/javascript, text/typescript,
|
|
76
|
+
// application/yaml, application/toml, application/javascript, etc.
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
static normalizeAutoTextMimetype(mimetype) {
|
|
80
|
+
if (mimetype === null || mimetype === undefined || mimetype === "" || mimetype === "text/plain") {
|
|
81
|
+
return MimetypeBinary.TEXT_PRIMITIVE_MIMETYPE;
|
|
82
|
+
}
|
|
83
|
+
return mimetype;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=mimetype-binary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mimetype-binary.js","sourceRoot":"","sources":["../../src/content/mimetype-binary.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,EAAE;AACF,qEAAqE;AACrE,oDAAoD;AACpD,EAAE;AACF,wEAAwE;AACxE,uEAAuE;AACvE,yEAAyE;AACzE,uEAAuE;AACvE,iEAAiE;AACjE,EAAE;AACF,sEAAsE;AACtE,mEAAmE;AACnE,mEAAmE;AAEnE,MAAM,CAAC,OAAO,OAAO,cAAc;IAC/B,MAAM,CAAC,2BAA2B,GAAwB,IAAI,GAAG,CAAC;QAC9D,kBAAkB;QAClB,kBAAkB;QAClB,kBAAkB;QAClB,iBAAiB;QACjB,wBAAwB;QACxB,wBAAwB;QACxB,iBAAiB;KACpB,CAAC,CAAC;IAEH,mEAAmE;IACnE,+DAA+D;IAC/D,MAAM,CAAC,yBAAyB,GAAwB,IAAI,GAAG,CAAC;QAC5D,kBAAkB;QAClB,iBAAiB;QACjB,WAAW;KACd,CAAC,CAAC;IAEH,sEAAsE;IACtE,oEAAoE;IACpE,mEAAmE;IACnE,wEAAwE;IACxE,wEAAwE;IACxE,qEAAqE;IACrE,gEAAgE;IAChE,aAAa;IACb,EAAE;IACF,mEAAmE;IACnE,kFAAkF;IAClF,MAAM,CAAC,uBAAuB,GAAG,eAAe,CAAC;IAEjD,MAAM,CAAC,gBAAgB,CAAC,QAAgB;QACpC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtC,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;QAClC,IAAI,cAAc,CAAC,2BAA2B,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3E,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QACxG,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,uEAAuE;IACvE,mEAAmE;IACnE,oEAAoE;IACpE,MAAM,CAAC,cAAc,CAAC,QAAgB;QAClC,OAAO,QAAQ,KAAK,kBAAkB,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,CAAC,uBAAuB,CAAC,QAAgB;QAC3C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACxC,IAAI,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5D,IAAI,cAAc,CAAC,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QACzE,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1E,gEAAgE;QAChE,yEAAyE;QACzE,mEAAmE;QACnE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,yBAAyB,CAAC,QAAmC;QAChE,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC9F,OAAO,cAAc,CAAC,uBAAuB,CAAC;QAClD,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Mimetypes } from "@plurnk/plurnk-mimetypes";
|
|
2
|
+
export default class PathMimetype {
|
|
3
|
+
#private;
|
|
4
|
+
static resolveEntryMimetype(pathname: string, schemeDefault: string, mimetypes: Mimetypes | undefined): Promise<string>;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=path-mimetype.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-mimetype.d.ts","sourceRoot":"","sources":["../../src/content/path-mimetype.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAG1D,MAAM,CAAC,OAAO,OAAO,YAAY;;WAiBhB,oBAAoB,CAC7B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,SAAS,GAAG,SAAS,GACjC,OAAO,CAAC,MAAM,CAAC;CAQrB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Path-extension mimetype resolver for entry schemes per plurnk-grammar
|
|
2
|
+
// 0.14.0 §Paths: "Path suffix (`.json`, `.md`, `.txt`, etc.) declares
|
|
3
|
+
// mimetype; absent suffix defers to scheme default."
|
|
4
|
+
//
|
|
5
|
+
// Plurnk-service implements this uniformly across entry schemes: a
|
|
6
|
+
// pathname's extension drives the effective mimetype (via the sibling
|
|
7
|
+
// Mimetypes detect service), and the scheme manifest's channel default
|
|
8
|
+
// is the fallback when no extension is present.
|
|
9
|
+
//
|
|
10
|
+
// This makes structural ops (`<L>` item-index, matcher dialect dispatch)
|
|
11
|
+
// fire correctly without content-sniffing: a model writing JSON to
|
|
12
|
+
// `known://users.json` opts into JSON treatment via the `.json` suffix,
|
|
13
|
+
// while `known://notes` (no suffix) stays at Known's default of
|
|
14
|
+
// `text/markdown`.
|
|
15
|
+
//
|
|
16
|
+
// Consistent across:
|
|
17
|
+
// - known://users.json → application/json
|
|
18
|
+
// - known://notes.md → text/markdown
|
|
19
|
+
// - known://config.yaml → application/yaml
|
|
20
|
+
// - known://users → scheme default (text/markdown for Known)
|
|
21
|
+
import MimetypeBinary from "./mimetype-binary.js";
|
|
22
|
+
export default class PathMimetype {
|
|
23
|
+
// Extract the suffix (everything after the last dot in the last segment)
|
|
24
|
+
// from a pathname. Empty if no dot in the last segment.
|
|
25
|
+
static #extractExtension(pathname) {
|
|
26
|
+
const lastSlash = pathname.lastIndexOf("/");
|
|
27
|
+
const lastSegment = lastSlash === -1 ? pathname : pathname.slice(lastSlash + 1);
|
|
28
|
+
const lastDot = lastSegment.lastIndexOf(".");
|
|
29
|
+
if (lastDot <= 0)
|
|
30
|
+
return ""; // leading-dot files (".env") aren't an extension
|
|
31
|
+
return lastSegment.slice(lastDot); // includes the leading "."
|
|
32
|
+
}
|
|
33
|
+
// Resolve a pathname → effective mimetype.
|
|
34
|
+
// 1. If the pathname has an extension, query Mimetypes.detect({ ext })
|
|
35
|
+
// and use what comes back (normalized via the text-primitive rule —
|
|
36
|
+
// text/plain → text/markdown).
|
|
37
|
+
// 2. Otherwise (no extension or no Mimetypes service), fall back to
|
|
38
|
+
// `schemeDefault` (typically the scheme manifest's channel default).
|
|
39
|
+
static async resolveEntryMimetype(pathname, schemeDefault, mimetypes) {
|
|
40
|
+
const ext = PathMimetype.#extractExtension(pathname);
|
|
41
|
+
if (ext.length > 0 && mimetypes !== undefined) {
|
|
42
|
+
const detected = await mimetypes.detect({ ext });
|
|
43
|
+
if (detected !== null)
|
|
44
|
+
return MimetypeBinary.normalizeAutoTextMimetype(detected);
|
|
45
|
+
}
|
|
46
|
+
return schemeDefault;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=path-mimetype.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-mimetype.js","sourceRoot":"","sources":["../../src/content/path-mimetype.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,sEAAsE;AACtE,qDAAqD;AACrD,EAAE;AACF,mEAAmE;AACnE,sEAAsE;AACtE,uEAAuE;AACvE,gDAAgD;AAChD,EAAE;AACF,yEAAyE;AACzE,mEAAmE;AACnE,wEAAwE;AACxE,gEAAgE;AAChE,mBAAmB;AACnB,EAAE;AACF,qBAAqB;AACrB,gDAAgD;AAChD,6CAA6C;AAC7C,gDAAgD;AAChD,wEAAwE;AAGxE,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,YAAY;IAC7B,yEAAyE;IACzE,wDAAwD;IACxD,MAAM,CAAC,iBAAiB,CAAC,QAAgB;QACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAChF,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,OAAO,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC,CAAE,iDAAiD;QAC/E,OAAO,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,2BAA2B;IACnE,CAAC;IAED,2CAA2C;IAC3C,uEAAuE;IACvE,uEAAuE;IACvE,kCAAkC;IAClC,oEAAoE;IACpE,wEAAwE;IACxE,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAC7B,QAAgB,EAChB,aAAqB,EACrB,SAAgC;QAEhC,MAAM,GAAG,GAAG,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YACjD,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO,cAAc,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,aAAa,CAAC;IACzB,CAAC;CACJ"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { LineMarker, MatcherBody } from "@plurnk/plurnk-grammar";
|
|
2
|
+
import type { Mimetypes } from "@plurnk/plurnk-mimetypes";
|
|
3
|
+
export interface ReadSliceResult {
|
|
4
|
+
status: number;
|
|
5
|
+
content: string | null;
|
|
6
|
+
mimetype: string;
|
|
7
|
+
startLine?: number | null;
|
|
8
|
+
matches?: number;
|
|
9
|
+
reason?: string;
|
|
10
|
+
}
|
|
11
|
+
export default class ReadResolve {
|
|
12
|
+
static resolve(opts: {
|
|
13
|
+
content: string;
|
|
14
|
+
mimetype: string;
|
|
15
|
+
lineMarker: LineMarker | null;
|
|
16
|
+
body: MatcherBody | null;
|
|
17
|
+
mimetypes: Mimetypes | undefined;
|
|
18
|
+
}): Promise<ReadSliceResult>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=read-resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-resolve.d.ts","sourceRoot":"","sources":["../../src/content/read-resolve.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAK1D,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,CAAC,OAAO,OAAO,WAAW;WACf,OAAO,CAAC,IAAI,EAAE;QACvB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;QAC9B,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;QACzB,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;KACpC,GAAG,OAAO,CAAC,eAAe,CAAC;CA2C/B"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Shared READ slice→match resolution for entry-bearing schemes (Known/Skill/
|
|
2
|
+
// Unknown/Exec/Plurnk via `_entry-ops`), plus `Log` and `File`. `<L>` scopes,
|
|
3
|
+
// the body matches within the scope: slice-then-match (plurnk.md slot order
|
|
4
|
+
// `<L>?:body?`). `<L>` dispatches on source mimetype — JSON → item index
|
|
5
|
+
// (sliceJsonItems), line-navigable → line index (sliceLines). Callers bind their
|
|
6
|
+
// own (content, mimetype) and wrap the result (e.g. `_entry-ops` adds `channel`).
|
|
7
|
+
import LineMarkerOps from "./line-marker.js";
|
|
8
|
+
import Matcher from "./matcher.js";
|
|
9
|
+
import MimetypeBinary from "./mimetype-binary.js";
|
|
10
|
+
export default class ReadResolve {
|
|
11
|
+
static async resolve(opts) {
|
|
12
|
+
const { content, mimetype, lineMarker, body, mimetypes } = opts;
|
|
13
|
+
let workingContent = content;
|
|
14
|
+
let workingStart = 1;
|
|
15
|
+
let workingMimetypeForSlice = MimetypeBinary.TEXT_PRIMITIVE_MIMETYPE;
|
|
16
|
+
if (lineMarker !== null) {
|
|
17
|
+
if (MimetypeBinary.isJsonMimetype(mimetype)) {
|
|
18
|
+
const sliced = LineMarkerOps.sliceJsonItems(content, lineMarker);
|
|
19
|
+
if (sliced.status !== 200)
|
|
20
|
+
return { status: sliced.status, content: null, mimetype };
|
|
21
|
+
workingContent = sliced.body ?? "[]";
|
|
22
|
+
workingStart = null;
|
|
23
|
+
workingMimetypeForSlice = "application/json";
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
const sliced = LineMarkerOps.sliceLines(content, lineMarker);
|
|
27
|
+
if (sliced.status !== 200)
|
|
28
|
+
return { status: sliced.status, content: null, mimetype };
|
|
29
|
+
workingContent = sliced.text ?? "";
|
|
30
|
+
workingStart = sliced.startLine ?? null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (body !== null) {
|
|
34
|
+
if (mimetypes === undefined)
|
|
35
|
+
return { status: 500, content: null, mimetype };
|
|
36
|
+
const matched = await Matcher.matchAgainstContent(body, workingContent, mimetype, mimetypes, workingStart ?? 1);
|
|
37
|
+
if (matched.status === 204)
|
|
38
|
+
return { status: 204, content: "", mimetype: "text/markdown", startLine: null, matches: 0 };
|
|
39
|
+
if (matched.status === 203) {
|
|
40
|
+
// Dialect-parse-failure fallback: raw source as text/markdown; reason surfaces why.
|
|
41
|
+
return { status: 203, content: matched.body ?? "", mimetype: matched.mimetype ?? "text/markdown", startLine: 1, reason: matched.reason };
|
|
42
|
+
}
|
|
43
|
+
if (matched.status !== 200)
|
|
44
|
+
return { status: matched.status, content: null, mimetype };
|
|
45
|
+
return { status: 200, content: matched.body ?? "", mimetype: "text/markdown", startLine: null, matches: matched.matches };
|
|
46
|
+
}
|
|
47
|
+
if (lineMarker !== null) {
|
|
48
|
+
// `<L>` slice mimetype follows the source family: line-navigable → text/markdown,
|
|
49
|
+
// JSON → application/json (structure preserved for compose). Empty / `[]` → 204.
|
|
50
|
+
const isEmptyJsonArray = workingMimetypeForSlice === "application/json" && workingContent === "[]";
|
|
51
|
+
if (workingContent === "" || isEmptyJsonArray)
|
|
52
|
+
return { status: 204, content: "", mimetype: workingMimetypeForSlice, startLine: null };
|
|
53
|
+
return { status: 200, content: workingContent, mimetype: workingMimetypeForSlice, startLine: workingStart };
|
|
54
|
+
}
|
|
55
|
+
if (content === "")
|
|
56
|
+
return { status: 204, content: "", mimetype, startLine: null };
|
|
57
|
+
return { status: 200, content, mimetype, startLine: 1 };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=read-resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-resolve.js","sourceRoot":"","sources":["../../src/content/read-resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,34 +22,37 @@ export interface TelemetryEventPayload {
|
|
|
22
22
|
event: object;
|
|
23
23
|
}
|
|
24
24
|
export type TelemetryEventNotify = (sessionId: number, payload: TelemetryEventPayload) => void;
|
|
25
|
-
export
|
|
26
|
-
|
|
27
|
-
channel:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
channel:
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
entryId:
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
status:
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
entryId:
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
25
|
+
export default class ChannelWrite {
|
|
26
|
+
#private;
|
|
27
|
+
static appendToChannel(db: Db, { entryId, channel, chunk, notify }: {
|
|
28
|
+
entryId: number;
|
|
29
|
+
channel: string;
|
|
30
|
+
chunk: string;
|
|
31
|
+
notify?: StreamEventNotify;
|
|
32
|
+
}): Promise<void>;
|
|
33
|
+
static setChannelState(db: Db, { entryId, channel, state, notify }: {
|
|
34
|
+
entryId: number;
|
|
35
|
+
channel: string;
|
|
36
|
+
state: ChannelState;
|
|
37
|
+
notify?: StreamEventNotify;
|
|
38
|
+
}): Promise<void>;
|
|
39
|
+
static openSubscription(db: Db, { runId, entryId, scheme, handle }: {
|
|
40
|
+
runId: number;
|
|
41
|
+
entryId: number;
|
|
42
|
+
scheme: string;
|
|
43
|
+
handle: string;
|
|
44
|
+
}): Promise<number>;
|
|
45
|
+
static closeSubscription(db: Db, { subscriptionId, status }: {
|
|
46
|
+
subscriptionId: number;
|
|
47
|
+
status: number;
|
|
48
|
+
}): Promise<void>;
|
|
49
|
+
static findActiveSubscription(db: Db, { runId, entryId }: {
|
|
50
|
+
runId: number;
|
|
51
|
+
entryId: number;
|
|
52
|
+
}): Promise<{
|
|
53
|
+
id: number;
|
|
54
|
+
scheme: string;
|
|
55
|
+
handle: string;
|
|
56
|
+
} | null>;
|
|
57
|
+
}
|
|
55
58
|
//# sourceMappingURL=ChannelWrite.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelWrite.d.ts","sourceRoot":"","sources":["../../src/core/ChannelWrite.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,EAAE,EAAc,MAAM,SAAS,CAAC;AAE9C,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtE,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAQvF,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;AAQ9D,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ChannelWrite.d.ts","sourceRoot":"","sources":["../../src/core/ChannelWrite.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,EAAE,EAAc,MAAM,SAAS,CAAC;AAE9C,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtE,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAQvF,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;AAQ9D,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAC;AAQ/F,MAAM,CAAC,OAAO,OAAO,YAAY;;WAQhB,eAAe,CACxB,EAAE,EAAE,EAAE,EACN,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;KAAE,GACrH,OAAO,CAAC,IAAI,CAAC;WASH,eAAe,CACxB,EAAE,EAAE,EAAE,EACN,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,YAAY,CAAC;QAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;KAAE,GAC3H,OAAO,CAAC,IAAI,CAAC;WASH,gBAAgB,CACzB,EAAE,EAAE,EAAE,EACN,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GACvG,OAAO,CAAC,MAAM,CAAC;WAML,iBAAiB,CAC1B,EAAE,EAAE,EAAE,EACN,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GACvE,OAAO,CAAC,IAAI,CAAC;WAIH,sBAAsB,CAC/B,EAAE,EAAE,EAAE,EACN,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GACvD,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAIpE"}
|
|
@@ -5,45 +5,47 @@
|
|
|
5
5
|
// Helpers update entry_channels (content / state) and subscriptions, and emit
|
|
6
6
|
// stream/event notifications scoped to the entry's session via an optional
|
|
7
7
|
// callback the daemon wires in.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
8
|
+
export default class ChannelWrite {
|
|
9
|
+
static #channelMeta(db) { return db.channel_meta; }
|
|
10
|
+
static #appendStmt(db) { return db.append_to_channel; }
|
|
11
|
+
static #stateStmt(db) { return db.set_channel_state; }
|
|
12
|
+
static #openSubStmt(db) { return db.open_subscription; }
|
|
13
|
+
static #closeSubStmt(db) { return db.close_subscription; }
|
|
14
|
+
static #findActiveStmt(db) { return db.find_active_subscription; }
|
|
15
|
+
static async appendToChannel(db, { entryId, channel, chunk, notify }) {
|
|
16
|
+
const result = await ChannelWrite.#appendStmt(db).run({ chunk, entry_id: entryId, channel });
|
|
17
|
+
if (result.changes === 0)
|
|
18
|
+
return;
|
|
19
|
+
if (notify === undefined)
|
|
20
|
+
return;
|
|
21
|
+
const meta = await ChannelWrite.#channelMeta(db).get({ entry_id: entryId, channel });
|
|
22
|
+
if (meta === undefined)
|
|
23
|
+
return;
|
|
24
|
+
notify(meta.session_id, { entryId, channel, state: meta.state, contentLength: meta.contentLength });
|
|
25
|
+
}
|
|
26
|
+
static async setChannelState(db, { entryId, channel, state, notify }) {
|
|
27
|
+
const result = await ChannelWrite.#stateStmt(db).run({ state, entry_id: entryId, channel });
|
|
28
|
+
if (result.changes === 0)
|
|
29
|
+
return;
|
|
30
|
+
if (notify === undefined)
|
|
31
|
+
return;
|
|
32
|
+
const meta = await ChannelWrite.#channelMeta(db).get({ entry_id: entryId, channel });
|
|
33
|
+
if (meta === undefined)
|
|
34
|
+
return;
|
|
35
|
+
notify(meta.session_id, { entryId, channel, state: meta.state, contentLength: meta.contentLength });
|
|
36
|
+
}
|
|
37
|
+
static async openSubscription(db, { runId, entryId, scheme, handle }) {
|
|
38
|
+
const row = await ChannelWrite.#openSubStmt(db).get({ run_id: runId, entry_id: entryId, scheme, handle });
|
|
39
|
+
if (row === undefined)
|
|
40
|
+
throw new Error("openSubscription: INSERT ... RETURNING produced no row");
|
|
41
|
+
return row.id;
|
|
42
|
+
}
|
|
43
|
+
static async closeSubscription(db, { subscriptionId, status }) {
|
|
44
|
+
await ChannelWrite.#closeSubStmt(db).run({ status, subscription_id: subscriptionId });
|
|
45
|
+
}
|
|
46
|
+
static async findActiveSubscription(db, { runId, entryId }) {
|
|
47
|
+
const row = await ChannelWrite.#findActiveStmt(db).get({ run_id: runId, entry_id: entryId });
|
|
48
|
+
return row ?? null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
49
51
|
//# sourceMappingURL=ChannelWrite.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelWrite.js","sourceRoot":"","sources":["../../src/core/ChannelWrite.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,mEAAmE;AACnE,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,gCAAgC;AAoDhC,MAAM,
|
|
1
|
+
{"version":3,"file":"ChannelWrite.js","sourceRoot":"","sources":["../../src/core/ChannelWrite.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Engine.d.ts
CHANGED
|
@@ -46,23 +46,25 @@ export interface ProposalPendingEvent {
|
|
|
46
46
|
attrs: object;
|
|
47
47
|
flags: LoopFlags;
|
|
48
48
|
}
|
|
49
|
-
export declare const fingerprintTurn: (ops: ReadonlyArray<PlurnkStatement>) => string;
|
|
50
|
-
export declare const detectCycle: (history: ReadonlyArray<string>, minCycles: number, maxCyclePeriod: number) => {
|
|
51
|
-
detected: false;
|
|
52
|
-
} | {
|
|
53
|
-
detected: true;
|
|
54
|
-
period: number;
|
|
55
|
-
cycles: number;
|
|
56
|
-
};
|
|
57
49
|
export default class Engine {
|
|
58
50
|
#private;
|
|
59
|
-
|
|
51
|
+
static computeCeiling(contextSize: number | null, config: number): number | null;
|
|
52
|
+
static fingerprintTurn(ops: ReadonlyArray<PlurnkStatement>): string;
|
|
53
|
+
static detectCycle(history: ReadonlyArray<string>, minCycles: number, maxCyclePeriod: number): {
|
|
54
|
+
detected: false;
|
|
55
|
+
} | {
|
|
56
|
+
detected: true;
|
|
57
|
+
period: number;
|
|
58
|
+
cycles: number;
|
|
59
|
+
};
|
|
60
|
+
constructor({ db, schemes, mimetypes, streamEventNotify, wakeRunNotify, telemetryEventNotify, tokenize }: {
|
|
60
61
|
db: Db;
|
|
61
62
|
schemes: SchemeRegistry;
|
|
62
63
|
mimetypes?: Mimetypes;
|
|
63
64
|
streamEventNotify?: StreamEventNotify;
|
|
64
65
|
wakeRunNotify?: WakeRunNotify;
|
|
65
66
|
telemetryEventNotify?: TelemetryEventNotify;
|
|
67
|
+
tokenize?: (text: string) => number;
|
|
66
68
|
});
|
|
67
69
|
runLoop({ provider, messages, persona, requirements, sessionId, runId, loopId, maxTurns, maxStrikes, minCycles, maxCyclePeriod, origin, signal, onDispatch, }: {
|
|
68
70
|
provider: Provider;
|
|
@@ -83,7 +85,7 @@ export default class Engine {
|
|
|
83
85
|
turnIds: number[];
|
|
84
86
|
finalStatus: number;
|
|
85
87
|
hitMaxTurns: boolean;
|
|
86
|
-
reason: "max_turns" | "strike_threshold" | "external" | null;
|
|
88
|
+
reason: "max_turns" | "strike_threshold" | "budget_overflow" | "external" | null;
|
|
87
89
|
}>;
|
|
88
90
|
runTurn({ provider, messages, persona, requirements, sessionId, runId, loopId, origin, signal, onDispatch, turnNumber, maxTurns, }: {
|
|
89
91
|
provider: Provider;
|
|
@@ -103,6 +105,8 @@ export default class Engine {
|
|
|
103
105
|
status: number;
|
|
104
106
|
statuses: number[];
|
|
105
107
|
fingerprint: string;
|
|
108
|
+
budgetStruck: boolean;
|
|
109
|
+
budgetHardStop: boolean;
|
|
106
110
|
}>;
|
|
107
111
|
dispatch(context: DispatchContext): Promise<DispatchResult>;
|
|
108
112
|
resolveProposal(logEntryId: number, resolution: ProposalResolution): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../../src/core/Engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAA4D,MAAM,wBAAwB,CAAC;AAMxH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAiB,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,EAAE,EAAc,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../../src/core/Engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAA4D,MAAM,wBAAwB,CAAC;AAMxH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAiB,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,EAAE,EAAc,MAAM,SAAS,CAAC;AAK9C,OAAO,KAAK,EAAmD,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AA4EhG,KAAK,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvD,KAAK,WAAW,GAAG;IAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAG9E,OAAO,KAAK,EAAE,QAAQ,EAAsD,MAAM,0BAA0B,CAAC;AA6C7G,KAAK,eAAe,GAAG;IACnB,SAAS,EAAE,eAAe,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C,CAAC;AAEF,KAAK,cAAc,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAOjF,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC9D,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,EAAE,gBAAgB,CAAC;IAK3B,IAAI,CAAC,EAAE,MAAM,CAAC;IAKd,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD,MAAM,WAAW,oBAAoB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,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;CACpB;AAuGD,MAAM,CAAC,OAAO,OAAO,MAAM;;IACvB,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAUhF,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,MAAM;IAQnE,MAAM,CAAC,WAAW,CACd,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,EAC9B,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACvB;QAAE,QAAQ,EAAE,KAAK,CAAA;KAAE,GAAG;QAAE,QAAQ,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;gBAiE/D,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAE,EAAE;QACtG,EAAE,EAAE,EAAE,CAAC;QACP,OAAO,EAAE,cAAc,CAAC;QACxB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;QACtC,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;QAC5C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;KACvC;IA2DK,OAAO,CAAC,EACV,QAAQ,EAAE,QAAQ,EAAE,OAAY,EAAE,YAAiB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAC7E,QAAa,EAAE,UAA6B,EAC5C,SAAoE,EACpE,cAAqF,EACrF,MAAgB,EAAE,MAAM,EAAE,UAAU,GACvC,EAAE;QACC,QAAQ,EAAE,QAAQ,CAAC;QACnB,QAAQ,EAAE,WAAW,EAAE,CAAC;QAIxB,OAAO,CAAC,EAAE,MAAM,CAAC;QAIjB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;KAC7C,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,WAAW,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,UAAU,GAAG,IAAI,CAAA;KAAE,CAAC;IAqHzJ,OAAO,CAAC,EACV,QAAQ,EAAE,QAAQ,EAAE,OAAY,EAAE,YAAiB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAgB,EAAE,MAAM,EAAE,UAAU,EACnH,UAAc,EAAE,QAAa,GAChC,EAAE;QACC,QAAQ,EAAE,QAAQ,CAAC;QACnB,QAAQ,EAAE,WAAW,EAAE,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QACjD,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;QAK1C,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC;IAslBlI,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IA6JjE,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,GAAG,IAAI;IAYzE,kBAAkB,IAAI,MAAM,EAAE;IAQxB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBpD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAChD;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAC7C;IAgCD,iBAAiB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAAG,IAAI;CA0Y3E"}
|