@plurnk/plurnk-service 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/SPEC.md +35 -26
  2. package/dist/core/ChannelWrite.d.ts +10 -0
  3. package/dist/core/ChannelWrite.d.ts.map +1 -1
  4. package/dist/core/ChannelWrite.js.map +1 -1
  5. package/dist/core/Engine.d.ts +9 -1
  6. package/dist/core/Engine.d.ts.map +1 -1
  7. package/dist/core/Engine.js +260 -53
  8. package/dist/core/Engine.js.map +1 -1
  9. package/dist/core/line-marker.d.ts +23 -0
  10. package/dist/core/line-marker.d.ts.map +1 -0
  11. package/dist/core/line-marker.js +321 -0
  12. package/dist/core/line-marker.js.map +1 -0
  13. package/dist/core/matcher.d.ts +14 -0
  14. package/dist/core/matcher.d.ts.map +1 -0
  15. package/dist/core/matcher.js +195 -0
  16. package/dist/core/matcher.js.map +1 -0
  17. package/dist/core/mimetype-binary.d.ts +6 -0
  18. package/dist/core/mimetype-binary.d.ts.map +1 -0
  19. package/dist/core/mimetype-binary.js +82 -0
  20. package/dist/core/mimetype-binary.js.map +1 -0
  21. package/dist/core/packet-wire.d.ts.map +1 -1
  22. package/dist/core/packet-wire.js +97 -21
  23. package/dist/core/packet-wire.js.map +1 -1
  24. package/dist/core/path-mimetype.d.ts +3 -0
  25. package/dist/core/path-mimetype.d.ts.map +1 -0
  26. package/dist/core/path-mimetype.js +47 -0
  27. package/dist/core/path-mimetype.js.map +1 -0
  28. package/dist/core/scheme-types.d.ts +5 -0
  29. package/dist/core/scheme-types.d.ts.map +1 -1
  30. package/dist/core/scheme-types.js.map +1 -1
  31. package/dist/schemes/Exec.d.ts +30 -1
  32. package/dist/schemes/Exec.d.ts.map +1 -1
  33. package/dist/schemes/Exec.js +229 -6
  34. package/dist/schemes/Exec.js.map +1 -1
  35. package/dist/schemes/File.d.ts +4 -0
  36. package/dist/schemes/File.d.ts.map +1 -1
  37. package/dist/schemes/File.js +107 -23
  38. package/dist/schemes/File.js.map +1 -1
  39. package/dist/schemes/Log.d.ts +2 -0
  40. package/dist/schemes/Log.d.ts.map +1 -1
  41. package/dist/schemes/Log.js +82 -13
  42. package/dist/schemes/Log.js.map +1 -1
  43. package/dist/schemes/Plurnk.js +3 -3
  44. package/dist/schemes/Plurnk.js.map +1 -1
  45. package/dist/schemes/_entry-crud.d.ts +2 -0
  46. package/dist/schemes/_entry-crud.d.ts.map +1 -1
  47. package/dist/schemes/_entry-crud.js +1 -0
  48. package/dist/schemes/_entry-crud.js.map +1 -1
  49. package/dist/schemes/_entry-find.d.ts.map +1 -1
  50. package/dist/schemes/_entry-find.js +64 -15
  51. package/dist/schemes/_entry-find.js.map +1 -1
  52. package/dist/schemes/_entry-ops.d.ts +3 -0
  53. package/dist/schemes/_entry-ops.d.ts.map +1 -1
  54. package/dist/schemes/_entry-ops.js +268 -55
  55. package/dist/schemes/_entry-ops.js.map +1 -1
  56. package/dist/schemes/_entry-send.d.ts.map +1 -1
  57. package/dist/schemes/_entry-send.js +14 -7
  58. package/dist/schemes/_entry-send.js.map +1 -1
  59. package/dist/server/ClientConnection.d.ts +3 -2
  60. package/dist/server/ClientConnection.d.ts.map +1 -1
  61. package/dist/server/ClientConnection.js +4 -1
  62. package/dist/server/ClientConnection.js.map +1 -1
  63. package/dist/server/Daemon.d.ts +40 -1
  64. package/dist/server/Daemon.d.ts.map +1 -1
  65. package/dist/server/Daemon.js +319 -1
  66. package/dist/server/Daemon.js.map +1 -1
  67. package/dist/server/MethodRegistry.d.ts +29 -0
  68. package/dist/server/MethodRegistry.d.ts.map +1 -1
  69. package/dist/server/MethodRegistry.js.map +1 -1
  70. package/dist/server/dsl.d.ts +2 -2
  71. package/dist/server/dsl.d.ts.map +1 -1
  72. package/dist/server/dsl.js +10 -10
  73. package/dist/server/dsl.js.map +1 -1
  74. package/dist/server/methods/entry_read.js +5 -5
  75. package/dist/server/methods/entry_read.js.map +1 -1
  76. package/dist/server/methods/loop_cancel.d.ts +3 -0
  77. package/dist/server/methods/loop_cancel.d.ts.map +1 -0
  78. package/dist/server/methods/loop_cancel.js +27 -0
  79. package/dist/server/methods/loop_cancel.js.map +1 -0
  80. package/dist/server/methods/loop_run.d.ts.map +1 -1
  81. package/dist/server/methods/loop_run.js +46 -47
  82. package/dist/server/methods/loop_run.js.map +1 -1
  83. package/dist/server/methods/op_edit.js +3 -3
  84. package/dist/server/methods/op_edit.js.map +1 -1
  85. package/dist/server/methods/op_hide.js +3 -3
  86. package/dist/server/methods/op_hide.js.map +1 -1
  87. package/dist/server/methods/op_read.js +3 -3
  88. package/dist/server/methods/op_read.js.map +1 -1
  89. package/dist/server/methods/op_show.js +3 -3
  90. package/dist/server/methods/op_show.js.map +1 -1
  91. package/migrations/001_schema.sql +1 -1
  92. package/package.json +5 -4
@@ -0,0 +1,195 @@
1
+ // Body-matcher dispatch for FIND / READ / SHOW / HIDE (plurnk.md
2
+ // §"Body matcher dispatch"). The grammar parser classifies the dialect
3
+ // at parse time and emits a discriminated MatcherBody:
4
+ //
5
+ // { dialect: "xpath", raw, ... }
6
+ // { dialect: "regex", raw, pattern, flags }
7
+ // { dialect: "jsonpath", raw, ... }
8
+ // { dialect: "glob", raw }
9
+ //
10
+ // Regex + glob are universal text matching. xpath + jsonpath are
11
+ // inherently mimetype-bound and belong on per-mimetype handlers in
12
+ // @plurnk/plurnk-mimetypes (plurnk-mimetypes#3). 501 with sibling-issue
13
+ // pointer until landed.
14
+ //
15
+ // Mimetype-mismatch rule (AGENTS.md "Resolved ambiguities" §1): dialect
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
+ };
78
+ const prettyJson = (value) => JSON.stringify(value, null, 2);
79
+ // Convert a shell-style glob pattern to a RegExp for full-line matching.
80
+ // Per plurnk-grammar#17 closing comment, glob in READ body is a line
81
+ // filter: each content line tested against the glob; matching lines
82
+ // yield rows. Conventions match shell globs:
83
+ // `TODO*` → starts with TODO (`^TODO.*$`)
84
+ // `*TODO*` → contains TODO (`^.*TODO.*$`)
85
+ // `*.log` → ends with `.log` (`^.*\.log$`)
86
+ // `[Tt]odo*`→ char class anchor (`^[Tt]odo.*$`)
87
+ // Model controls anchoring via the pattern; no implicit "contains" wrapping.
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);
124
+ };
125
+ // Apply a matcher against text content. Returns a JSON-array body of
126
+ // per-match objects on success, or status 204 with no body when there
127
+ // are zero matches.
128
+ //
129
+ // `baseLine` is the 1-indexed line of `content[0]` in the original
130
+ // source. When the matcher runs against the full content, baseLine=1;
131
+ // when called from inside a `<L>` slice path, baseLine = slice startLine
132
+ // so per-match line numbers are reported in original-source coordinates.
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);
141
+ }
142
+ catch (err) {
143
+ return { status: 400, error: err instanceof Error ? err.message : String(err) };
144
+ }
145
+ const rows = [];
146
+ if (body.flags.includes("g")) {
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
+ }
151
+ }
152
+ else {
153
+ const m = re.exec(content);
154
+ if (m !== null) {
155
+ const line = lineOfOffset(content, m.index, baseLine);
156
+ rows.push({ line, matched: matchedFromRegex(m) });
157
+ }
158
+ }
159
+ if (rows.length === 0)
160
+ return { status: 204, matches: 0 };
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)" };
167
+ }
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
+ };
195
+ //# sourceMappingURL=matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../src/core/matcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare const isBinaryMimetype: (mimetype: string) => boolean;
2
+ export declare const isJsonMimetype: (mimetype: string) => boolean;
3
+ export declare const isLineNavigableMimetype: (mimetype: string) => boolean;
4
+ export declare const TEXT_PRIMITIVE_MIMETYPE = "text/markdown";
5
+ export declare const normalizeAutoTextMimetype: (mimetype: string | null | undefined) => string;
6
+ //# sourceMappingURL=mimetype-binary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mimetype-binary.d.ts","sourceRoot":"","sources":["../../src/core/mimetype-binary.ts"],"names":[],"mappings":"AAiCA,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,KAAG,OASnD,CAAC;AAKF,eAAO,MAAM,cAAc,GAAI,UAAU,MAAM,KAAG,OACe,CAAC;AAElE,eAAO,MAAM,uBAAuB,GAAI,UAAU,MAAM,KAAG,OAS1D,CAAC;AAaF,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AAEvD,eAAO,MAAM,yBAAyB,GAAI,UAAU,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,MAK/E,CAAC"}
@@ -0,0 +1,82 @@
1
+ // Mimetype classifiers used at op-handler boundaries.
2
+ //
3
+ // `isBinaryMimetype` — enforces 415 on binary entries for READ/EDIT/
4
+ // SHOW/HIDE (AGENTS.md "Resolved ambiguities" §2).
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
+ const TEXT_APPLICATION_MIMETYPES = new Set([
16
+ "application/json",
17
+ "application/yaml",
18
+ "application/toml",
19
+ "application/xml",
20
+ "application/javascript",
21
+ "application/typescript",
22
+ "application/sql",
23
+ ]);
24
+ // Mimetypes that are structurally tree-navigated rather than line-
25
+ // navigated. READ output of these doesn't get `N:\t` prefixes.
26
+ const TREE_NAVIGABLE_MIMETYPES = new Set([
27
+ "application/json",
28
+ "application/xml",
29
+ "text/html",
30
+ ]);
31
+ export const isBinaryMimetype = (mimetype) => {
32
+ if (mimetype.length === 0)
33
+ return false;
34
+ const slash = mimetype.indexOf("/");
35
+ if (slash === -1)
36
+ return true;
37
+ const type = mimetype.slice(0, slash);
38
+ if (type === "text")
39
+ return false;
40
+ if (TEXT_APPLICATION_MIMETYPES.has(mimetype))
41
+ return false;
42
+ if (mimetype.endsWith("+json") || mimetype.endsWith("+xml") || mimetype.endsWith("+yaml"))
43
+ return false;
44
+ return true;
45
+ };
46
+ // JSON-family check — used by `<L>` dispatch to pick structural slicer
47
+ // (sliceJsonItems) over line slicer (sliceLines) for JSON sources.
48
+ // Matches application/json plus +json suffix variants per RFC 6839.
49
+ export const isJsonMimetype = (mimetype) => mimetype === "application/json" || mimetype.endsWith("+json");
50
+ export const isLineNavigableMimetype = (mimetype) => {
51
+ if (mimetype.length === 0)
52
+ return false;
53
+ if (isBinaryMimetype(mimetype))
54
+ return false;
55
+ if (TREE_NAVIGABLE_MIMETYPES.has(mimetype))
56
+ return false;
57
+ if (mimetype.endsWith("+json") || mimetype.endsWith("+xml"))
58
+ return false;
59
+ // Everything text-ish that isn't tree-shaped is line-navigable.
60
+ // text/plain, text/markdown, text/csv, text/javascript, text/typescript,
61
+ // application/yaml, application/toml, application/javascript, etc.
62
+ return true;
63
+ };
64
+ // Text primitive for the agent contract: text/markdown is the default
65
+ // text mimetype anywhere plurnk-service auto-derives a text result.
66
+ // text/plain is reserved for explicit scheme-manifest declarations
67
+ // (exec subprocess streams) and client-set entries. Rationale: markdown
68
+ // is a strict superset of plain text — any plain text is valid markdown
69
+ // — so the agent gets markdown-aware processing capability for free,
70
+ // and never needs to decide "is this markdown enough to mark as
71
+ // markdown?"
72
+ //
73
+ // Use this at any consumer-side auto-derivation point (file scheme
74
+ // extension fallback, log rx wrap, etc.) to normalize text/plain → text/markdown.
75
+ export const TEXT_PRIMITIVE_MIMETYPE = "text/markdown";
76
+ export const normalizeAutoTextMimetype = (mimetype) => {
77
+ if (mimetype === null || mimetype === undefined || mimetype === "" || mimetype === "text/plain") {
78
+ return TEXT_PRIMITIVE_MIMETYPE;
79
+ }
80
+ return mimetype;
81
+ };
82
+ //# sourceMappingURL=mimetype-binary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mimetype-binary.js","sourceRoot":"","sources":["../../src/core/mimetype-binary.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,EAAE;AACF,qEAAqE;AACrE,mDAAmD;AACnD,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":"AAoBO,yDAYN;AAOM,qDAcN;AAIM;;;IAGN"}
1
+ {"version":3,"file":"packet-wire.d.ts","sourceRoot":"","sources":["../../src/core/packet-wire.js"],"names":[],"mappings":"AAsBO,yDAYN;AAOM,qDAgBN;AAIM;;;IAGN"}
@@ -11,6 +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 "./mimetype-binary.js";
14
15
  // Render packet.system → system message content (markdown string).
15
16
  // {system_definition verbatim}
16
17
  // # Plurnk System Instructions (persona)
@@ -36,7 +37,9 @@ export const renderSystemContent = (system) => {
36
37
  // # Plurnk System Requirements (per-turn rules incl. Turn N/M marker)
37
38
  export const renderUserContent = (user) => {
38
39
  const parts = [];
39
- parts.push(`# Plurnk System User Prompt\n\n${user.prompt}`);
40
+ if (typeof user.prompt === "string" && user.prompt.length > 0) {
41
+ parts.push(`# Plurnk System User Prompt\n\n${user.prompt}`);
42
+ }
40
43
  const telemetry = user.telemetry ?? { budget: "", errors: [] };
41
44
  if (typeof telemetry.budget === "string" && telemetry.budget.length > 0) {
42
45
  parts.push(`# Plurnk System Budget\n\n${telemetry.budget}`);
@@ -66,6 +69,17 @@ const numberLines = (body, start = 1) => {
66
69
  const numbered = source.split("\n").map((line, i) => `${start + i}:\t${line}`).join("\n");
67
70
  return trailingNewline ? `${numbered}\n` : numbered;
68
71
  };
72
+ // Tolerant JSON parser for log entries' rx/tx fields. The engine
73
+ // pre-parses application/json mimetypes, but render may also receive
74
+ // strings (legacy paths, manual tests). Returns null on parse failure.
75
+ const safeParse = (s) => {
76
+ try {
77
+ return JSON.parse(s);
78
+ }
79
+ catch {
80
+ return null;
81
+ }
82
+ };
69
83
  // Stable JSON: keys sorted alphabetically so the same meta produces the
70
84
  // same string across turns — prefix-cache friendly. Mirrors rummy
71
85
  // plugins/helpers.js canonicalJson.
@@ -128,34 +142,96 @@ const renderIndexEntries = (entries) => entries.map((e) => {
128
142
  ? `* ${canonicalJson(meta)}\n${blocks.join("\n")}`
129
143
  : `* ${canonicalJson(meta)}`;
130
144
  }).join("\n\n");
131
- // Render one Log entry → `* {meta}` line followed by the response body.
132
- // URI is `log://<coordinate>/<op>` per SPEC §10 the trailing /op is
133
- // wire-rendering self-documentation derived from the row's `op` field
134
- // (parsing the URI accepts it or omits it; identification is by
135
- // coordinate). Log entries are single-payload by nature fence carries
136
- // no `#channel` (matches the default-channel convention).
145
+ // Render one Log entry → a single bullet line carrying the meta JSON.
146
+ // No body, no fence every meaningful field is in the JSON. Naming
147
+ // follows the uniform principle: `path` is identity (this log row's
148
+ // own URI), `target` is the URI the action acted on. COPY/MOVE add
149
+ // `source`; currently the engine emits target only (source plumbing
150
+ // pending the COPY/MOVE-specific log shape pass).
151
+ //
152
+ // On error, status >= 400 signals the failure; the message lives in
153
+ // the next packet's user.telemetry.errors[] per SPEC §15.1. (Forward:
154
+ // meta will gain tokensBefore/After + linesBefore/After to convey
155
+ // change scope without carrying the body content.)
156
+ // Per-entry render: one meta JSON line + optionally a body block for
157
+ // ops whose response IS the content the model needs to see. READ is
158
+ // the canonical case — its rx carries the file/entry content the
159
+ // model asked for, and the model can't act on what it can't see. The
160
+ // body block uses the heredoc fence form so it parses the same as
161
+ // index entries (model already knows the shape).
137
162
  const renderLogEntries = (entries) => entries.map((e) => {
138
- const coordinate = e.coordinate ?? "?";
139
- const opSuffix = typeof e.op === "string" && e.op.length > 0 ? `/${e.op}` : "";
140
- const uri = `log://${coordinate}${opSuffix}`;
141
163
  const meta = {};
164
+ const coordinate = typeof e.coordinate === "string" ? e.coordinate : null;
165
+ const op = typeof e.op === "string" && e.op.length > 0 ? e.op : null;
166
+ if (coordinate !== null && op !== null)
167
+ meta.path = `log://${coordinate}/${op}`;
168
+ else if (coordinate !== null)
169
+ meta.path = `log://${coordinate}`;
142
170
  if (typeof e.origin === "string")
143
171
  meta.origin = e.origin;
144
- if (typeof e.op === "string")
145
- meta.op = e.op;
172
+ if (op !== null)
173
+ meta.op = op;
146
174
  if (typeof e.status === "number")
147
175
  meta.status = e.status;
148
- const path = renderLogPath(e.target);
149
- if (path !== null)
150
- meta.path = path;
151
- const rxBody = typeof e.rx === "string" ? e.rx : JSON.stringify(e.rx);
152
- return `* ${canonicalJson(meta)}\n${renderHeredoc(uri, null, rxBody)}`;
153
- }).join("\n\n");
154
- const renderLogPath = (target) => {
176
+ const target = renderActionTarget(e.target);
177
+ if (target !== null)
178
+ meta.target = target;
179
+ // Op-specific meta enrichment for READ: surface the matcher body
180
+ // and match count when a body matcher was used. Without these, the
181
+ // model can't distinguish "0 matches" from "empty content" — both
182
+ // would render as a status-204 line. The matcher comes from the
183
+ // stored statement (tx); the count from the result (rx).
184
+ if (op === "READ") {
185
+ const tx = e.tx;
186
+ if (tx !== null && typeof tx === "object" && tx.body !== null && typeof tx.body === "object") {
187
+ if (typeof tx.body.raw === "string")
188
+ meta.matcher = tx.body.raw;
189
+ }
190
+ const rx = typeof e.rx === "string" ? safeParse(e.rx) : e.rx;
191
+ if (rx !== null && typeof rx === "object" && typeof rx.matches === "number") {
192
+ meta.matches = rx.matches;
193
+ }
194
+ }
195
+ const metaLine = `* ${canonicalJson(meta)}`;
196
+ // READ@200: expose the response body. READ@204 (successfully empty —
197
+ // 0 matcher hits, sentinel slice, or empty source) has no body to
198
+ // 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
+ if (op === "READ" && e.status === 200) {
210
+ const rx = typeof e.rx === "string" ? safeParse(e.rx) : e.rx;
211
+ if (rx !== null && typeof rx === "object" && typeof rx.content === "string" && rx.content.length > 0) {
212
+ const fence = target ?? `log://${coordinate}`;
213
+ // Line-navigable mimetypes (text/markdown, text/plain,
214
+ // source code, etc.) get N:\t prefix per plurnk.md. Tree-
215
+ // navigable (JSON, XML, HTML) render verbatim — line
216
+ // numbers in the wrapper would collide with structural
217
+ // navigation (jsonpath/xpath) used on these formats.
218
+ // Classifier is consumer-side in this repo (see AGENTS.md
219
+ // "Matcher return semantics rework" / plurnk-grammar#17).
220
+ const mimetype = typeof rx.mimetype === "string" ? rx.mimetype : "text/plain";
221
+ if (isLineNavigableMimetype(mimetype)) {
222
+ const start = typeof rx.startLine === "number" ? rx.startLine : 1;
223
+ return `${metaLine}\n<<${fence}:\n${numberLines(rx.content, start)}\n:${fence}`;
224
+ }
225
+ return `${metaLine}\n<<${fence}:\n${rx.content}\n:${fence}`;
226
+ }
227
+ }
228
+ return metaLine;
229
+ }).join("\n");
230
+ const renderActionTarget = (target) => {
155
231
  if (target === null || target === undefined)
156
232
  return null;
157
- const path = renderModelUri(target.scheme, target.pathname);
158
- return path.length > 0 ? path : null;
233
+ const rendered = renderModelUri(target.scheme, target.pathname);
234
+ return rendered.length > 0 ? rendered : null;
159
235
  };
160
236
  // Render TelemetryError[] → bullet list. v0 schema is open per Packet.json
161
237
  // ("Inner shapes intentionally open at v0; consumers populate as needs
@@ -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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"}
@@ -0,0 +1,3 @@
1
+ import type { Mimetypes } from "@plurnk/plurnk-mimetypes";
2
+ export declare const resolveEntryMimetype: (pathname: string, schemeDefault: string, mimetypes: Mimetypes | undefined) => Promise<string>;
3
+ //# sourceMappingURL=path-mimetype.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-mimetype.d.ts","sourceRoot":"","sources":["../../src/core/path-mimetype.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAmB1D,eAAO,MAAM,oBAAoB,GAC7B,UAAU,MAAM,EAChB,eAAe,MAAM,EACrB,WAAW,SAAS,GAAG,SAAS,KACjC,OAAO,CAAC,MAAM,CAOhB,CAAC"}
@@ -0,0 +1,47 @@
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 { normalizeAutoTextMimetype } from "./mimetype-binary.js";
22
+ // Extract the suffix (everything after the last dot in the last segment)
23
+ // from a pathname. Empty if no dot in the last segment.
24
+ const extractExtension = (pathname) => {
25
+ const lastSlash = pathname.lastIndexOf("/");
26
+ const lastSegment = lastSlash === -1 ? pathname : pathname.slice(lastSlash + 1);
27
+ const lastDot = lastSegment.lastIndexOf(".");
28
+ if (lastDot <= 0)
29
+ return ""; // leading-dot files (".env") aren't an extension
30
+ return lastSegment.slice(lastDot); // includes the leading "."
31
+ };
32
+ // Resolve a pathname → effective mimetype.
33
+ // 1. If the pathname has an extension, query Mimetypes.detect({ ext })
34
+ // and use what comes back (normalized via the text-primitive rule —
35
+ // text/plain → text/markdown).
36
+ // 2. Otherwise (no extension or no Mimetypes service), fall back to
37
+ // `schemeDefault` (typically the scheme manifest's channel default).
38
+ export const resolveEntryMimetype = async (pathname, schemeDefault, mimetypes) => {
39
+ const ext = extractExtension(pathname);
40
+ if (ext.length > 0 && mimetypes !== undefined) {
41
+ const detected = await mimetypes.detect({ ext });
42
+ if (detected !== null)
43
+ return normalizeAutoTextMimetype(detected);
44
+ }
45
+ return schemeDefault;
46
+ };
47
+ //# sourceMappingURL=path-mimetype.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-mimetype.js","sourceRoot":"","sources":["../../src/core/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,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,yEAAyE;AACzE,wDAAwD;AACxD,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAU,EAAE;IAClD,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAChF,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC,CAAE,iDAAiD;IAC/E,OAAO,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,2BAA2B;AACnE,CAAC,CAAC;AAEF,2CAA2C;AAC3C,uEAAuE;AACvE,uEAAuE;AACvE,kCAAkC;AAClC,oEAAoE;AACpE,wEAAwE;AACxE,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACrC,QAAgB,EAChB,aAAqB,EACrB,SAAgC,EACjB,EAAE;IACjB,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACjD,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,aAAa,CAAC;AACzB,CAAC,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import type { Db } from "./Db.ts";
2
+ import type { Mimetypes } from "@plurnk/plurnk-mimetypes";
3
+ import type { StreamEventNotify, WakeRunNotify } from "./ChannelWrite.ts";
2
4
  export type WriterTier = "model" | "client" | "system" | "plugin";
3
5
  export interface PlurnkSchemeContext {
4
6
  readonly db: Db;
@@ -8,6 +10,9 @@ export interface PlurnkSchemeContext {
8
10
  readonly turnId: number;
9
11
  readonly writer: WriterTier;
10
12
  readonly signal: AbortSignal | undefined;
13
+ readonly streamEventNotify?: StreamEventNotify;
14
+ readonly wakeRunNotify?: WakeRunNotify;
15
+ readonly mimetypes?: Mimetypes;
11
16
  }
12
17
  export interface SchemeFlagAffinity {
13
18
  readonly excludedInAsk?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"scheme-types.d.ts","sourceRoot":"","sources":["../../src/core/scheme-types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAOlE,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,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;CAC5C;AAED,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC;CACvC;AAED,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CACjC;AAED,eAAO,MAAM,kBAAkB,EAAE,SAMhC,CAAC"}
1
+ {"version":3,"file":"scheme-types.d.ts","sourceRoot":"","sources":["../../src/core/scheme-types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE1E,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAOlE,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,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;IAKzC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAK/C,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IAIvC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC;CACvC;AAED,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CACjC;AAED,eAAO,MAAM,kBAAkB,EAAE,SAMhC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"scheme-types.js","sourceRoot":"","sources":["../../src/core/scheme-types.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAgDjE,MAAM,CAAC,MAAM,kBAAkB,GAAc;IACzC,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,aAAa,EAAE,KAAK;IACpB,WAAW,EAAE,KAAK;CACrB,CAAC"}
1
+ {"version":3,"file":"scheme-types.js","sourceRoot":"","sources":["../../src/core/scheme-types.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAgEjE,MAAM,CAAC,MAAM,kBAAkB,GAAc;IACzC,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,aAAa,EAAE,KAAK;IACpB,WAAW,EAAE,KAAK;CACrB,CAAC"}