@plurnk/plurnk-service 0.4.0 → 0.6.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/README.md +13 -44
- package/SPEC.md +546 -445
- package/bin/plurnk-service.js +2 -1
- package/dist/core/ChannelWrite.d.ts +5 -0
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/Engine.d.ts +8 -5
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +190 -99
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/PluginLoader.js +6 -6
- package/dist/core/PluginLoader.js.map +1 -1
- package/dist/core/ProviderInstantiate.d.ts +4 -0
- package/dist/core/ProviderInstantiate.d.ts.map +1 -0
- package/dist/core/ProviderInstantiate.js +41 -0
- package/dist/core/ProviderInstantiate.js.map +1 -0
- package/dist/core/ProviderRegistry.d.ts.map +1 -1
- package/dist/core/ProviderRegistry.js +1 -1
- package/dist/core/ProviderRegistry.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 +4 -20
- package/dist/core/SchemeRegistry.js.map +1 -1
- package/dist/core/line-marker.js +3 -3
- package/dist/core/line-marker.js.map +1 -1
- package/dist/core/matcher.d.ts +4 -6
- package/dist/core/matcher.d.ts.map +1 -1
- package/dist/core/matcher.js +61 -184
- package/dist/core/matcher.js.map +1 -1
- package/dist/core/mimetype-binary.js +1 -1
- package/dist/core/mimetype-binary.js.map +1 -1
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +130 -30
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/scheme-types.d.ts +3 -26
- package/dist/core/scheme-types.d.ts.map +1 -1
- package/dist/core/scheme-types.js +5 -8
- package/dist/core/scheme-types.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -1
- package/dist/index.js.map +1 -1
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +12 -24
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/File.d.ts +1 -0
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +11 -5
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Log.d.ts +1 -0
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +10 -4
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/_entry-ops.d.ts +1 -1
- package/dist/schemes/_entry-ops.d.ts.map +1 -1
- package/dist/schemes/_entry-ops.js +15 -20
- package/dist/schemes/_entry-ops.js.map +1 -1
- package/dist/server/Daemon.d.ts +11 -0
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +18 -0
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/MethodRegistry.d.ts +2 -2
- package/dist/server/MethodRegistry.d.ts.map +1 -1
- package/dist/server/methods/loop_resolve.js +2 -2
- package/dist/server/methods/loop_resolve.js.map +1 -1
- package/dist/server/methods/loop_run.d.ts.map +1 -1
- package/dist/server/methods/loop_run.js +2 -1
- package/dist/server/methods/loop_run.js.map +1 -1
- package/dist/server/methods/providers_list.js +1 -1
- package/dist/server/methods/providers_list.js.map +1 -1
- package/package.json +17 -12
package/dist/core/matcher.js
CHANGED
|
@@ -1,195 +1,72 @@
|
|
|
1
|
-
// Body-matcher
|
|
2
|
-
//
|
|
3
|
-
//
|
|
1
|
+
// Body-matcher adapter — delegates to @plurnk/plurnk-mimetypes for the
|
|
2
|
+
// actual dialect dispatch. The framework parses the matcher's leading
|
|
3
|
+
// prefix internally (xpath `//`, jsonpath `$`, regex `/.../`, glob
|
|
4
|
+
// otherwise) and routes to per-mimetype handlers. plurnk-service catches
|
|
5
|
+
// the framework's typed errors and maps them to HTTP-shaped status codes
|
|
6
|
+
// the model can act on.
|
|
4
7
|
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
8
|
+
// Status mapping (per plurnk-service#172 + plurnk-grammar#19):
|
|
9
|
+
// UnsupportedDialectError → 415 (dialect not supported for mimetype, or binary content)
|
|
10
|
+
// InvalidExpressionError → 400 (model authored a malformed matcher body)
|
|
11
|
+
// QueryParseFailureError → 203 (source can't be parsed for the dialect;
|
|
12
|
+
// returns raw content as text/markdown with
|
|
13
|
+
// `reason` so the model can fall back to
|
|
14
|
+
// regex/visual parsing on the bytes)
|
|
15
|
+
// Empty match array → 204 (matcher applied, zero results)
|
|
16
|
+
// Match array → 200 (matcher applied, results in body)
|
|
9
17
|
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
// on a wrong mimetype family returns 415. Binary entries are 415 across
|
|
17
|
-
// the board (§2).
|
|
18
|
-
//
|
|
19
|
-
// Result shape (AGENTS.md "Matcher return semantics rework"):
|
|
20
|
-
// Body is a JSON array of per-match objects `{line, matched, matching?}`.
|
|
21
|
-
// `line`: 1-indexed source line of the match.
|
|
22
|
-
// `matched`: extracted value, polymorphic by extractor:
|
|
23
|
-
// bare regex → string (full match)
|
|
24
|
-
// anon captures → array of capture strings
|
|
25
|
-
// named captures → object {name: value, …}; mixed anon mixes in "1"/"2"
|
|
26
|
-
// jsonpath → JSON value at the path
|
|
27
|
-
// xpath text/attr → string
|
|
28
|
-
// xpath node → serialized XML string
|
|
29
|
-
// `matching`: per-instance discriminator when matcher targets multiple
|
|
30
|
-
// instances (jsonpath wildcards, xpath multi-match). Omitted otherwise.
|
|
31
|
-
// Empty matches → status 204, no body.
|
|
32
|
-
// Result mimetype is always "application/json" for matcher results.
|
|
33
|
-
import { isBinaryMimetype } from "./mimetype-binary.js";
|
|
34
|
-
const isXmlFamily = (mimetype) => mimetype === "text/html" || mimetype === "application/xml" || mimetype.endsWith("+xml");
|
|
35
|
-
const isJsonFamily = (mimetype) => mimetype === "application/json" || mimetype.endsWith("+json");
|
|
36
|
-
// Count newlines in content[0..offset) to compute 1-indexed source line.
|
|
37
|
-
const lineOfOffset = (content, offset, baseLine) => {
|
|
38
|
-
let line = baseLine;
|
|
39
|
-
for (let i = 0; i < offset && i < content.length; i++) {
|
|
40
|
-
if (content.charCodeAt(i) === 0x0a)
|
|
41
|
-
line++;
|
|
42
|
-
}
|
|
43
|
-
return line;
|
|
44
|
-
};
|
|
45
|
-
// Extract `matched` shape from a RegExp match result.
|
|
46
|
-
// - No captures: string (full match)
|
|
47
|
-
// - Anon only: array of capture strings
|
|
48
|
-
// - Named (any): object with name keys; anon captures merged in as "1", "2", …
|
|
49
|
-
const matchedFromRegex = (m) => {
|
|
50
|
-
const anonCount = m.length - 1; // m[0] is full match
|
|
51
|
-
const groups = m.groups;
|
|
52
|
-
const hasNamed = groups !== undefined && Object.keys(groups).length > 0;
|
|
53
|
-
if (anonCount === 0 && !hasNamed)
|
|
54
|
-
return m[0]; // bare match
|
|
55
|
-
if (hasNamed) {
|
|
56
|
-
// Object form: named captures by name, anon captures by positional key.
|
|
57
|
-
const obj = { ...groups };
|
|
58
|
-
// Identify which capture indices are named (so we don't double-count).
|
|
59
|
-
// RegExp doesn't expose this directly; collect named values and check
|
|
60
|
-
// each anon position for presence in groups.
|
|
61
|
-
const namedValues = new Set(Object.values(groups));
|
|
62
|
-
for (let i = 1; i <= anonCount; i++) {
|
|
63
|
-
const v = m[i];
|
|
64
|
-
// Heuristic: include anon-indexed capture if it's not the same
|
|
65
|
-
// reference as a named one. Imperfect when values collide; the
|
|
66
|
-
// common case (truly distinct anon + named) works.
|
|
67
|
-
if (!namedValues.has(v))
|
|
68
|
-
obj[String(i)] = v;
|
|
69
|
-
}
|
|
70
|
-
return obj;
|
|
71
|
-
}
|
|
72
|
-
// Anonymous-only: array of captures.
|
|
73
|
-
const arr = [];
|
|
74
|
-
for (let i = 1; i <= anonCount; i++)
|
|
75
|
-
arr.push(m[i]);
|
|
76
|
-
return arr;
|
|
77
|
-
};
|
|
18
|
+
// 203 is HTTP-creative ("Non-Authoritative Information") — the runtime
|
|
19
|
+
// produced content but not in the structured form the matcher requested.
|
|
20
|
+
// Model sees the raw text plus a reason field and decides whether to
|
|
21
|
+
// retry, fall back, or fix source. Choice ratified by user (#172).
|
|
22
|
+
import { UnsupportedDialectError, InvalidExpressionError, QueryParseFailureError, } from "@plurnk/plurnk-mimetypes";
|
|
23
|
+
import { TEXT_PRIMITIVE_MIMETYPE } from "./mimetype-binary.js";
|
|
78
24
|
const prettyJson = (value) => JSON.stringify(value, null, 2);
|
|
79
|
-
//
|
|
80
|
-
//
|
|
81
|
-
//
|
|
82
|
-
//
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const globToLineRegex = (glob) => {
|
|
89
|
-
let pattern = "^";
|
|
90
|
-
let i = 0;
|
|
91
|
-
while (i < glob.length) {
|
|
92
|
-
const c = glob[i];
|
|
93
|
-
if (c === "*") {
|
|
94
|
-
pattern += ".*";
|
|
95
|
-
}
|
|
96
|
-
else if (c === "?") {
|
|
97
|
-
pattern += ".";
|
|
98
|
-
}
|
|
99
|
-
else if (c === "[") {
|
|
100
|
-
// Character class — pass through with `!` → `^` per glob convention.
|
|
101
|
-
let cls = "[";
|
|
102
|
-
i++;
|
|
103
|
-
if (i < glob.length && (glob[i] === "!" || glob[i] === "^")) {
|
|
104
|
-
cls += "^";
|
|
105
|
-
i++;
|
|
106
|
-
}
|
|
107
|
-
while (i < glob.length && glob[i] !== "]") {
|
|
108
|
-
cls += glob[i];
|
|
109
|
-
i++;
|
|
110
|
-
}
|
|
111
|
-
cls += "]";
|
|
112
|
-
pattern += cls;
|
|
113
|
-
}
|
|
114
|
-
else if (".+(){}|^$\\".includes(c)) {
|
|
115
|
-
pattern += `\\${c}`;
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
pattern += c;
|
|
119
|
-
}
|
|
120
|
-
i++;
|
|
121
|
-
}
|
|
122
|
-
pattern += "$";
|
|
123
|
-
return new RegExp(pattern);
|
|
25
|
+
// Apply a `<L>`-slice baseLine offset to per-match line numbers. The
|
|
26
|
+
// framework returns line numbers relative to the content it received;
|
|
27
|
+
// when the matcher runs inside an `<L>` slice, those need to be shifted
|
|
28
|
+
// back to original-source coordinates.
|
|
29
|
+
const shiftLines = (matches, baseLine) => {
|
|
30
|
+
if (baseLine === 1)
|
|
31
|
+
return [...matches];
|
|
32
|
+
const offset = baseLine - 1;
|
|
33
|
+
return matches.map((m) => ({ ...m, line: m.line + offset }));
|
|
124
34
|
};
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
//
|
|
128
|
-
//
|
|
129
|
-
//
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
export const matchAgainstContent = (body, content, mimetype, baseLine = 1) => {
|
|
134
|
-
if (isBinaryMimetype(mimetype)) {
|
|
135
|
-
return { status: 415, error: `cannot match against binary mimetype \`${mimetype}\`` };
|
|
136
|
-
}
|
|
137
|
-
if (body.dialect === "regex") {
|
|
138
|
-
let re;
|
|
139
|
-
try {
|
|
140
|
-
re = new RegExp(body.pattern, body.flags);
|
|
35
|
+
export const matchAgainstContent = async (body, content, mimetype, mimetypes, baseLine = 1) => {
|
|
36
|
+
try {
|
|
37
|
+
// Framework dispatches dialect by leading prefix of `body.raw`.
|
|
38
|
+
// `hint` carries the source mimetype so the framework selects the
|
|
39
|
+
// right per-mimetype handler without re-detecting from content.
|
|
40
|
+
const rawMatches = await mimetypes.query({ content, hint: mimetype }, body.raw);
|
|
41
|
+
if (rawMatches.length === 0) {
|
|
42
|
+
return { status: 204, matches: 0 };
|
|
141
43
|
}
|
|
142
|
-
|
|
143
|
-
|
|
44
|
+
const adjusted = shiftLines(rawMatches, baseLine);
|
|
45
|
+
return {
|
|
46
|
+
status: 200,
|
|
47
|
+
body: prettyJson(adjusted),
|
|
48
|
+
matches: adjusted.length,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
if (err instanceof UnsupportedDialectError) {
|
|
53
|
+
return { status: 415, error: err.message };
|
|
144
54
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
for (const m of content.matchAll(re)) {
|
|
148
|
-
const line = lineOfOffset(content, m.index ?? 0, baseLine);
|
|
149
|
-
rows.push({ line, matched: matchedFromRegex(m) });
|
|
150
|
-
}
|
|
55
|
+
if (err instanceof InvalidExpressionError) {
|
|
56
|
+
return { status: 400, error: err.message };
|
|
151
57
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
58
|
+
if (err instanceof QueryParseFailureError) {
|
|
59
|
+
// 203 soft fallback: return raw content as text so the model
|
|
60
|
+
// can fall back to regex/visual parsing or fix the source.
|
|
61
|
+
return {
|
|
62
|
+
status: 203,
|
|
63
|
+
body: content,
|
|
64
|
+
mimetype: TEXT_PRIMITIVE_MIMETYPE,
|
|
65
|
+
reason: err.message,
|
|
66
|
+
};
|
|
158
67
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
return { status: 200, body: prettyJson(rows), matches: rows.length };
|
|
162
|
-
}
|
|
163
|
-
if (body.dialect === "xpath") {
|
|
164
|
-
if (!isXmlFamily(mimetype))
|
|
165
|
-
return { status: 415, error: `xpath requires xml/html mimetype; got \`${mimetype}\`` };
|
|
166
|
-
return { status: 501, error: "xpath not implemented (see plurnk-mimetypes#3)" };
|
|
68
|
+
// Unexpected — let it propagate so the engine logs it as a 500.
|
|
69
|
+
throw err;
|
|
167
70
|
}
|
|
168
|
-
if (body.dialect === "jsonpath") {
|
|
169
|
-
if (!isJsonFamily(mimetype))
|
|
170
|
-
return { status: 415, error: `jsonpath requires json mimetype; got \`${mimetype}\`` };
|
|
171
|
-
return { status: 501, error: "jsonpath not implemented (see plurnk-mimetypes#3)" };
|
|
172
|
-
}
|
|
173
|
-
// glob in READ body = line filter (plurnk-grammar#17 ratification).
|
|
174
|
-
// Each content line tested against the glob pattern; matching lines
|
|
175
|
-
// yield `{line, matched: <lineContent>}` rows. Complements regex
|
|
176
|
-
// (substring/capture extraction); glob is the grep-like primitive.
|
|
177
|
-
let re;
|
|
178
|
-
try {
|
|
179
|
-
re = globToLineRegex(body.raw);
|
|
180
|
-
}
|
|
181
|
-
catch (err) {
|
|
182
|
-
return { status: 400, error: err instanceof Error ? err.message : String(err) };
|
|
183
|
-
}
|
|
184
|
-
const lines = content.split("\n");
|
|
185
|
-
const rows = [];
|
|
186
|
-
lines.forEach((line, i) => {
|
|
187
|
-
if (re.test(line)) {
|
|
188
|
-
rows.push({ line: baseLine + i, matched: line });
|
|
189
|
-
}
|
|
190
|
-
});
|
|
191
|
-
if (rows.length === 0)
|
|
192
|
-
return { status: 204, matches: 0 };
|
|
193
|
-
return { status: 200, body: prettyJson(rows), matches: rows.length };
|
|
194
71
|
};
|
|
195
72
|
//# sourceMappingURL=matcher.js.map
|
package/dist/core/matcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../src/core/matcher.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../src/core/matcher.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,sEAAsE;AACtE,mEAAmE;AACnE,yEAAyE;AACzE,yEAAyE;AACzE,wBAAwB;AACxB,EAAE;AACF,+DAA+D;AAC/D,4FAA4F;AAC5F,8EAA8E;AAC9E,6EAA6E;AAC7E,+EAA+E;AAC/E,4EAA4E;AAC5E,wEAAwE;AACxE,oEAAoE;AACpE,uEAAuE;AACvE,EAAE;AACF,uEAAuE;AACvE,yEAAyE;AACzE,qEAAqE;AACrE,mEAAmE;AAInE,OAAO,EACH,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAW/D,MAAM,UAAU,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAE9E,qEAAqE;AACrE,sEAAsE;AACtE,wEAAwE;AACxE,uCAAuC;AACvC,MAAM,UAAU,GAAG,CAAC,OAA8B,EAAE,QAAgB,EAAgB,EAAE;IAClF,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACpC,IAAiB,EACjB,OAAe,EACf,QAAgB,EAChB,SAAoB,EACpB,WAAmB,CAAC,EACA,EAAE;IACtB,IAAI,CAAC;QACD,gEAAgE;QAChE,kEAAkE;QAClE,gEAAgE;QAChE,MAAM,UAAU,GAAiB,MAAM,SAAS,CAAC,KAAK,CAClD,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAC3B,IAAI,CAAC,GAAG,CACX,CAAC;QACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACvC,CAAC;QACD,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAClD,OAAO;YACH,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC1B,OAAO,EAAE,QAAQ,CAAC,MAAM;SAC3B,CAAC;IACN,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,GAAG,YAAY,uBAAuB,EAAE,CAAC;YACzC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/C,CAAC;QACD,IAAI,GAAG,YAAY,sBAAsB,EAAE,CAAC;YACxC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/C,CAAC;QACD,IAAI,GAAG,YAAY,sBAAsB,EAAE,CAAC;YACxC,6DAA6D;YAC7D,2DAA2D;YAC3D,OAAO;gBACH,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,uBAAuB;gBACjC,MAAM,EAAE,GAAG,CAAC,OAAO;aACtB,CAAC;QACN,CAAC;QACD,gEAAgE;QAChE,MAAM,GAAG,CAAC;IACd,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Mimetype classifiers used at op-handler boundaries.
|
|
2
2
|
//
|
|
3
3
|
// `isBinaryMimetype` — enforces 415 on binary entries for READ/EDIT/
|
|
4
|
-
// SHOW/HIDE (
|
|
4
|
+
// SHOW/HIDE (SPEC.md §16.9 — binary entries → 415).
|
|
5
5
|
//
|
|
6
6
|
// `isLineNavigableMimetype` — decides whether the render layer prefixes
|
|
7
7
|
// each line with `N:\t` on READ output. Line-oriented mimetypes (text,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mimetype-binary.js","sourceRoot":"","sources":["../../src/core/mimetype-binary.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,EAAE;AACF,qEAAqE;AACrE,
|
|
1
|
+
{"version":3,"file":"mimetype-binary.js","sourceRoot":"","sources":["../../src/core/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,0BAA0B,GAAwB,IAAI,GAAG,CAAC;IAC5D,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,wBAAwB;IACxB,wBAAwB;IACxB,iBAAiB;CACpB,CAAC,CAAC;AAEH,mEAAmE;AACnE,+DAA+D;AAC/D,MAAM,wBAAwB,GAAwB,IAAI,GAAG,CAAC;IAC1D,kBAAkB;IAClB,iBAAiB;IACjB,WAAW;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAW,EAAE;IAC1D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACtC,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAClC,IAAI,0BAA0B,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3D,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACxG,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,uEAAuE;AACvE,mEAAmE;AACnE,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAW,EAAE,CACxD,QAAQ,KAAK,kBAAkB,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAElE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,QAAgB,EAAW,EAAE;IACjE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,gBAAgB,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACzD,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1E,gEAAgE;IAChE,yEAAyE;IACzE,mEAAmE;IACnE,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,sEAAsE;AACtE,oEAAoE;AACpE,mEAAmE;AACnE,wEAAwE;AACxE,wEAAwE;AACxE,qEAAqE;AACrE,gEAAgE;AAChE,aAAa;AACb,EAAE;AACF,mEAAmE;AACnE,kFAAkF;AAClF,MAAM,CAAC,MAAM,uBAAuB,GAAG,eAAe,CAAC;AAEvD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,QAAmC,EAAU,EAAE;IACrF,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC9F,OAAO,uBAAuB,CAAC;IACnC,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet-wire.d.ts","sourceRoot":"","sources":["../../src/core/packet-wire.js"],"names":[],"mappings":"AAsBO,yDAYN;
|
|
1
|
+
{"version":3,"file":"packet-wire.d.ts","sourceRoot":"","sources":["../../src/core/packet-wire.js"],"names":[],"mappings":"AAsBO,yDAYN;AASM,qDAgBN;AAIM;;;IAGN"}
|
package/dist/core/packet-wire.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// Section headers follow the `# Plurnk System X` convention so the model
|
|
12
12
|
// sees consistent framing across every section it might receive. Sections
|
|
13
13
|
// with no content are omitted entirely (no empty headers in the wire).
|
|
14
|
-
import { isLineNavigableMimetype } from "
|
|
14
|
+
import { isLineNavigableMimetype } from "@plurnk/plurnk-schemes";
|
|
15
15
|
// Render packet.system → system message content (markdown string).
|
|
16
16
|
// {system_definition verbatim}
|
|
17
17
|
// # Plurnk System Instructions (persona)
|
|
@@ -34,7 +34,9 @@ export const renderSystemContent = (system) => {
|
|
|
34
34
|
// # Plurnk System User Prompt
|
|
35
35
|
// # Plurnk System Budget (token budget table — only when present)
|
|
36
36
|
// # Plurnk System Errors (telemetry errors — only when present)
|
|
37
|
-
// # Plurnk System Requirements (per-turn rules
|
|
37
|
+
// # Plurnk System Requirements (static per-turn rules — only when present)
|
|
38
|
+
// Requirements renders LAST so the contract the model has to honor is the
|
|
39
|
+
// most recent thing in the user message — closest to the assistant turn.
|
|
38
40
|
export const renderUserContent = (user) => {
|
|
39
41
|
const parts = [];
|
|
40
42
|
if (typeof user.prompt === "string" && user.prompt.length > 0) {
|
|
@@ -90,6 +92,18 @@ const canonicalJson = (obj) => {
|
|
|
90
92
|
sorted[k] = obj[k];
|
|
91
93
|
return JSON.stringify(sorted);
|
|
92
94
|
};
|
|
95
|
+
// Wrap a body in heredoc fences. Leading `\n` always (separates the
|
|
96
|
+
// opening fence from the first body character — necessary because
|
|
97
|
+
// numbered bodies start with `1:\t…` which would otherwise collide
|
|
98
|
+
// visually with the fence's closing `:`). Trailing `\n` only when the
|
|
99
|
+
// body doesn't already end with one — otherwise you get a doubled
|
|
100
|
+
// newline that renders as a blank line before the closing fence, which
|
|
101
|
+
// reads as "the content has a trailing blank line" when actually it
|
|
102
|
+
// doesn't. The body's own whitespace decides the shape.
|
|
103
|
+
const wrapHeredocBody = (fence, body) => {
|
|
104
|
+
const sep = body.endsWith("\n") ? "" : "\n";
|
|
105
|
+
return `<<${fence}:\n${body}${sep}:${fence}`;
|
|
106
|
+
};
|
|
93
107
|
// Heredoc block for one channel of one entry. Fence is `URI#channel`
|
|
94
108
|
// (plurnk-grammar-native form) so model emissions and entry projections
|
|
95
109
|
// share one syntax. When `channel` is null/empty the fence is path-only —
|
|
@@ -98,8 +112,67 @@ const canonicalJson = (obj) => {
|
|
|
98
112
|
// Body is line-numbered.
|
|
99
113
|
const renderHeredoc = (uri, channel, body) => {
|
|
100
114
|
const fence = channel ? `${uri}#${channel}` : uri;
|
|
101
|
-
|
|
102
|
-
|
|
115
|
+
return wrapHeredocBody(fence, numberLines(body));
|
|
116
|
+
};
|
|
117
|
+
// Re-render a plurnk statement (from log_entries.tx) as the heredoc form
|
|
118
|
+
// the model would have emitted. Used by the log render so the model sees
|
|
119
|
+
// its own ops in its own native syntax — what it wrote, mirrored back.
|
|
120
|
+
//
|
|
121
|
+
// Faithfulness over cleverness: render the parts as recorded. `target.raw`
|
|
122
|
+
// preserves exactly what the model wrote (URL with fragment, bare path,
|
|
123
|
+
// etc.) instead of round-tripping through scheme/pathname/fragment fields.
|
|
124
|
+
// Returns null when tx isn't a parseable PlurnkStatement (callers fall
|
|
125
|
+
// back to the meta line alone).
|
|
126
|
+
//
|
|
127
|
+
// Signal renders to `[…]`:
|
|
128
|
+
// - array of strings (tags) → `[tag1,tag2]`
|
|
129
|
+
// - number (status code, e.g. SEND[200]) → `[200]`
|
|
130
|
+
// - string (runtime, e.g. EXEC[python]) → `[python]`
|
|
131
|
+
// - null/missing → omitted
|
|
132
|
+
// All plurnk statements share the same syntactic frame; signal type
|
|
133
|
+
// varies by op but renders uniformly.
|
|
134
|
+
const renderStatementHeredoc = (tx) => {
|
|
135
|
+
if (tx === null || typeof tx !== "object" || typeof tx.op !== "string" || tx.op.length === 0)
|
|
136
|
+
return null;
|
|
137
|
+
const op = tx.op;
|
|
138
|
+
const suffix = typeof tx.suffix === "string" ? tx.suffix : "";
|
|
139
|
+
let signalStr = "";
|
|
140
|
+
const signal = tx.signal;
|
|
141
|
+
if (Array.isArray(signal)) {
|
|
142
|
+
const tags = signal.filter((t) => typeof t === "string");
|
|
143
|
+
if (tags.length > 0)
|
|
144
|
+
signalStr = `[${tags.join(",")}]`;
|
|
145
|
+
}
|
|
146
|
+
else if (typeof signal === "number") {
|
|
147
|
+
signalStr = `[${signal}]`;
|
|
148
|
+
}
|
|
149
|
+
else if (typeof signal === "string" && signal.length > 0) {
|
|
150
|
+
signalStr = `[${signal}]`;
|
|
151
|
+
}
|
|
152
|
+
let targetStr = "";
|
|
153
|
+
const target = tx.target;
|
|
154
|
+
if (target !== null && typeof target === "object" && typeof target.raw === "string") {
|
|
155
|
+
targetStr = `(${target.raw})`;
|
|
156
|
+
}
|
|
157
|
+
let markerStr = "";
|
|
158
|
+
const lm = tx.lineMarker;
|
|
159
|
+
if (lm !== null && typeof lm === "object" && typeof lm.first === "number") {
|
|
160
|
+
markerStr = typeof lm.last === "number" ? `<${lm.first},${lm.last}>` : `<${lm.first}>`;
|
|
161
|
+
}
|
|
162
|
+
let body;
|
|
163
|
+
if (typeof tx.body === "string")
|
|
164
|
+
body = tx.body;
|
|
165
|
+
else if (tx.body !== null && typeof tx.body === "object" && typeof tx.body.raw === "string")
|
|
166
|
+
body = tx.body.raw;
|
|
167
|
+
else
|
|
168
|
+
body = "";
|
|
169
|
+
// Character-perfect: no padding around body. The body string IS
|
|
170
|
+
// whatever the model wrote between the colons, including any leading
|
|
171
|
+
// or trailing whitespace it chose. Adding `\n` here would inflate
|
|
172
|
+
// single-line emissions into multi-line and nudge the model toward
|
|
173
|
+
// verbose forms — and it would violate the grammar's "body content
|
|
174
|
+
// is character-perfect" guarantee on the way back.
|
|
175
|
+
return `<<${op}${suffix}${signalStr}${targetStr}${markerStr}:${body}:${op}${suffix}`;
|
|
103
176
|
};
|
|
104
177
|
// Render a (scheme, pathname) tuple as the URI the model should SEE.
|
|
105
178
|
// Null scheme → bare pathname. The `file` scheme never reaches this
|
|
@@ -115,6 +188,11 @@ const renderModelUri = (scheme, pathname) => {
|
|
|
115
188
|
// heredoc blocks. meta describes the entry; nested `channels` carries
|
|
116
189
|
// per-channel mimetype/tokens so the model doesn't have to READ to
|
|
117
190
|
// learn the shape of a channel's content.
|
|
191
|
+
//
|
|
192
|
+
// Empty channels are omitted entirely (no meta entry, no body block) —
|
|
193
|
+
// an empty stderr is an infohazard: the model has to read it and infer
|
|
194
|
+
// "this is intentionally blank." Absence carries the same information
|
|
195
|
+
// with zero tokens spent.
|
|
118
196
|
const renderIndexEntries = (entries) => entries.map((e) => {
|
|
119
197
|
const uri = renderModelUri(e.scheme, e.pathname);
|
|
120
198
|
const defaultChannel = e.defaultChannel ?? "";
|
|
@@ -125,7 +203,7 @@ const renderIndexEntries = (entries) => entries.map((e) => {
|
|
|
125
203
|
const blocks = [];
|
|
126
204
|
for (const [channelName, ch] of Object.entries(e.channels ?? {})) {
|
|
127
205
|
const content = ch?.content;
|
|
128
|
-
if (typeof content !== "string")
|
|
206
|
+
if (typeof content !== "string" || content.length === 0)
|
|
129
207
|
continue;
|
|
130
208
|
const channelInfo = {};
|
|
131
209
|
if (typeof ch.mimetype === "string")
|
|
@@ -153,12 +231,15 @@ const renderIndexEntries = (entries) => entries.map((e) => {
|
|
|
153
231
|
// the next packet's user.telemetry.errors[] per SPEC §15.1. (Forward:
|
|
154
232
|
// meta will gain tokensBefore/After + linesBefore/After to convey
|
|
155
233
|
// change scope without carrying the body content.)
|
|
156
|
-
//
|
|
157
|
-
//
|
|
158
|
-
//
|
|
159
|
-
//
|
|
160
|
-
//
|
|
161
|
-
//
|
|
234
|
+
//
|
|
235
|
+
// Per-entry render: one meta JSON line plus a body block that the model
|
|
236
|
+
// can read to know what it did. Two body cases:
|
|
237
|
+
// 1. READ@200 with content → render rx.content under the target fence.
|
|
238
|
+
// The model asked for content; show it the content. (Matcher is in
|
|
239
|
+
// meta.matcher, count is in meta.matches.)
|
|
240
|
+
// 2. Every other op → re-emit tx as a heredoc in the model's native
|
|
241
|
+
// syntax. The model wrote this; mirror it back so the log is a true
|
|
242
|
+
// record of its actions instead of a row of opaque status codes.
|
|
162
243
|
const renderLogEntries = (entries) => entries.map((e) => {
|
|
163
244
|
const meta = {};
|
|
164
245
|
const coordinate = typeof e.coordinate === "string" ? e.coordinate : null;
|
|
@@ -196,16 +277,6 @@ const renderLogEntries = (entries) => entries.map((e) => {
|
|
|
196
277
|
// READ@200: expose the response body. READ@204 (successfully empty —
|
|
197
278
|
// 0 matcher hits, sentinel slice, or empty source) has no body to
|
|
198
279
|
// render; the meta line carries the signal via `matches` / status code.
|
|
199
|
-
// EDIT@200/201: surface the unified diff so the model sees what
|
|
200
|
-
// changed without an explicit follow-up READ. Catches wrong-marker
|
|
201
|
-
// mistakes on the next turn (M.12).
|
|
202
|
-
if (op === "EDIT" && (e.status === 200 || e.status === 201)) {
|
|
203
|
-
const rx = typeof e.rx === "string" ? safeParse(e.rx) : e.rx;
|
|
204
|
-
if (rx !== null && typeof rx === "object" && typeof rx.diff === "string" && rx.diff.length > 0) {
|
|
205
|
-
const fence = target ?? `log://${coordinate}`;
|
|
206
|
-
return `${metaLine}\n<<${fence}:\n${rx.diff}\n:${fence}`;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
280
|
if (op === "READ" && e.status === 200) {
|
|
210
281
|
const rx = typeof e.rx === "string" ? safeParse(e.rx) : e.rx;
|
|
211
282
|
if (rx !== null && typeof rx === "object" && typeof rx.content === "string" && rx.content.length > 0) {
|
|
@@ -215,16 +286,24 @@ const renderLogEntries = (entries) => entries.map((e) => {
|
|
|
215
286
|
// navigable (JSON, XML, HTML) render verbatim — line
|
|
216
287
|
// numbers in the wrapper would collide with structural
|
|
217
288
|
// navigation (jsonpath/xpath) used on these formats.
|
|
218
|
-
// Classifier is consumer-side in this repo (
|
|
219
|
-
// "Matcher return semantics rework" / plurnk-grammar#17).
|
|
289
|
+
// Classifier is consumer-side in this repo (SPEC.md §16.6).
|
|
220
290
|
const mimetype = typeof rx.mimetype === "string" ? rx.mimetype : "text/plain";
|
|
221
291
|
if (isLineNavigableMimetype(mimetype)) {
|
|
222
292
|
const start = typeof rx.startLine === "number" ? rx.startLine : 1;
|
|
223
|
-
return `${metaLine}\n
|
|
293
|
+
return `${metaLine}\n${wrapHeredocBody(fence, numberLines(rx.content, start))}`;
|
|
224
294
|
}
|
|
225
|
-
return `${metaLine}\n
|
|
295
|
+
return `${metaLine}\n${wrapHeredocBody(fence, rx.content)}`;
|
|
226
296
|
}
|
|
227
297
|
}
|
|
298
|
+
// Every other op: re-emit the model's statement. EDIT, EXEC, SEND,
|
|
299
|
+
// COPY, MOVE, FIND, SHOW, HIDE — each gets its native heredoc form
|
|
300
|
+
// back. Without this the log row is a status code with no record
|
|
301
|
+
// of what the model actually wrote, and the model has to back into
|
|
302
|
+
// its own actions by inference (see reasoning.md trace from the
|
|
303
|
+
// pre-fix count-files run).
|
|
304
|
+
const heredoc = renderStatementHeredoc(e.tx);
|
|
305
|
+
if (heredoc !== null)
|
|
306
|
+
return `${metaLine}\n${heredoc}`;
|
|
228
307
|
return metaLine;
|
|
229
308
|
}).join("\n");
|
|
230
309
|
const renderActionTarget = (target) => {
|
|
@@ -233,9 +312,30 @@ const renderActionTarget = (target) => {
|
|
|
233
312
|
const rendered = renderModelUri(target.scheme, target.pathname);
|
|
234
313
|
return rendered.length > 0 ? rendered : null;
|
|
235
314
|
};
|
|
236
|
-
// Render
|
|
237
|
-
//
|
|
238
|
-
//
|
|
239
|
-
//
|
|
240
|
-
|
|
315
|
+
// Render TelemetryEvent[] → meta line per event, optionally followed by
|
|
316
|
+
// an N:\t-prefixed snippet block when the event carries `snippet` (the
|
|
317
|
+
// convention plurnk-service uses for content-offset positions — model
|
|
318
|
+
// sees its own offending bytes alongside the error, not an abstract
|
|
319
|
+
// message it can't trace).
|
|
320
|
+
//
|
|
321
|
+
// Snippet renders verbatim — already N:\t-prefixed at production time
|
|
322
|
+
// (Engine.#extractSnippet). The fence is `error://<line>` to give the
|
|
323
|
+
// model a stable URI shape it can ignore or reference; the `error://`
|
|
324
|
+
// scheme isn't writable, it just identifies "this block is locator
|
|
325
|
+
// context, not addressable content."
|
|
326
|
+
//
|
|
327
|
+
// `snippet` is stripped from the meta JSON so the snippet appears once,
|
|
328
|
+
// in the body block, not also as a quoted string in the meta.
|
|
329
|
+
const renderTelemetryErrors = (errors) => errors.map((e) => {
|
|
330
|
+
const snippet = typeof e.snippet === "string" ? e.snippet : null;
|
|
331
|
+
const meta = { ...e };
|
|
332
|
+
if (snippet !== null)
|
|
333
|
+
delete meta.snippet;
|
|
334
|
+
const metaLine = `* ${canonicalJson(meta)}`;
|
|
335
|
+
if (snippet === null || snippet.length === 0)
|
|
336
|
+
return metaLine;
|
|
337
|
+
const line = typeof e.position?.line === "number" ? e.position.line : 0;
|
|
338
|
+
const fence = `error://${line}`;
|
|
339
|
+
return `${metaLine}\n${wrapHeredocBody(fence, snippet)}`;
|
|
340
|
+
}).join("\n");
|
|
241
341
|
//# sourceMappingURL=packet-wire.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet-wire.js","sourceRoot":"","sources":["../../src/core/packet-wire.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"packet-wire.js","sourceRoot":"","sources":["../../src/core/packet-wire.js"],"names":[],"mappings":"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"}
|