@plurnk/plurnk-schemes 1.4.0 → 1.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 +36 -14
- package/SPEC.md +136 -54
- package/dist/Manifest.d.ts.map +1 -1
- package/dist/Manifest.js +2 -1
- package/dist/Manifest.js.map +1 -1
- package/dist/Matcher.js +2 -2
- package/dist/Matcher.js.map +1 -1
- package/dist/OutputScheme.js +1 -1
- package/dist/OutputScheme.js.map +1 -1
- package/dist/Results.d.ts +16 -1
- package/dist/Results.d.ts.map +1 -1
- package/dist/Results.js +36 -6
- package/dist/Results.js.map +1 -1
- package/dist/Slicer.d.ts +7 -16
- package/dist/Slicer.d.ts.map +1 -1
- package/dist/Slicer.js +87 -41
- package/dist/Slicer.js.map +1 -1
- package/dist/ctx.d.ts +41 -36
- package/dist/ctx.d.ts.map +1 -1
- package/dist/edit-receipt.d.ts +1 -0
- package/dist/edit-receipt.d.ts.map +1 -1
- package/dist/edit-statement.d.ts +5 -0
- package/dist/edit-statement.d.ts.map +1 -0
- package/dist/edit-statement.js +2 -0
- package/dist/edit-statement.js.map +1 -0
- package/dist/handler.d.ts +10 -5
- package/dist/handler.d.ts.map +1 -1
- package/dist/handler.js +6 -6
- package/dist/handler.js.map +1 -1
- package/dist/index.d.ts +6 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +4 -4
- package/dist/DefaultRead.d.ts +0 -15
- package/dist/DefaultRead.d.ts.map +0 -1
- package/dist/DefaultRead.js +0 -51
- package/dist/DefaultRead.js.map +0 -1
package/README.md
CHANGED
|
@@ -25,28 +25,42 @@ Ship a scheme by publishing a package — **under any scope** (`@acme/whatever`;
|
|
|
25
25
|
|
|
26
26
|
```ts
|
|
27
27
|
import type {
|
|
28
|
-
|
|
28
|
+
RepresentationPreparationRequest, RepresentationPreparationResult,
|
|
29
|
+
SchemeHandler, SchemeManifest, SchemeCtx,
|
|
29
30
|
} from "@plurnk/plurnk-schemes";
|
|
30
31
|
|
|
31
32
|
export default class Foo implements SchemeHandler {
|
|
32
33
|
static manifest: SchemeManifest = { /* step 3 */ };
|
|
33
34
|
|
|
34
|
-
async
|
|
35
|
-
|
|
35
|
+
async prepareRepresentation(
|
|
36
|
+
{ target, pathname }: RepresentationPreparationRequest,
|
|
37
|
+
ctx: SchemeCtx,
|
|
38
|
+
): Promise<RepresentationPreparationResult> {
|
|
39
|
+
const { content, mimetype } = await acquire(target);
|
|
40
|
+
const written = await ctx.entries.write(pathname, {
|
|
41
|
+
channels: { body: { content, mimetype } },
|
|
42
|
+
});
|
|
43
|
+
return written.status >= 400 ? written : { status: 200 };
|
|
36
44
|
}
|
|
37
45
|
}
|
|
38
46
|
```
|
|
39
47
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
48
|
+
Core owns READ. A stored scheme needs no READ method; an acquisition scheme
|
|
49
|
+
implements scope-blind `prepareRepresentation`, writes its complete channels,
|
|
50
|
+
and lets core select the channel and apply operation-owned semantics. Exact
|
|
51
|
+
READ, exact FIND, and COPY/MOVE source selection all reuse that acquisition;
|
|
52
|
+
the producer receives none of their scopes, matchers, or channel choices.
|
|
53
|
+
Implement only
|
|
54
|
+
the remaining delegated methods you support—`find`, `editBatch`, `send`, and
|
|
55
|
+
the other optional methods in `SchemeHandler`. COPY and MOVE are engine-owned
|
|
56
|
+
compositions over `ctx.entries` and `editBatch`, so plugins do not override
|
|
57
|
+
them or author COPY/MOVE effect envelopes. A regional `editBatch`
|
|
44
58
|
returns `EditBatchResult` with its typed `EditBatchReceipt`; the engine validates
|
|
45
59
|
and projects it.
|
|
46
60
|
The optional synchronous `attributions(context)` hook may return no, one, or
|
|
47
61
|
many opaque tags for each provider emission attempt ({§plugin-attribution}).
|
|
48
62
|
`implements SchemeHandler` gives compile-time signature checking. The statement
|
|
49
|
-
and path types (`
|
|
63
|
+
and path types (`FindStatement`, `SendStatement`, `UrlPath`, etc.) are re-exported
|
|
50
64
|
from this package, so you depend on and peer (`^1`) only
|
|
51
65
|
`@plurnk/plurnk-schemes`; grammar rides underneath.
|
|
52
66
|
|
|
@@ -66,16 +80,24 @@ static manifest: SchemeManifest = {
|
|
|
66
80
|
writableBy: ["model", "client"],
|
|
67
81
|
volatile: false,
|
|
68
82
|
modelVisible: true,
|
|
83
|
+
textEditScopes: true, // use the standard text-edit capability
|
|
69
84
|
glyph: "🦊", // optional client-only display marker
|
|
70
|
-
example: "
|
|
85
|
+
example: "## READ0 (foo://thing/42)", // concise hot-path operation example set
|
|
71
86
|
documentation, // deep doc from docs/foo.md, pulled at worker://plurnk/docs/foo.md
|
|
72
87
|
};
|
|
73
88
|
```
|
|
74
89
|
|
|
75
|
-
- **`example`** — the scheme's
|
|
90
|
+
- **`example`** — the scheme's concise **hot-path** operation example set, rendered in the live resource catalogue every turn (like an execs runtime's `example`). Use one or more complete operations separated by blank lines; depth goes in `documentation`. Omit → not advertised.
|
|
76
91
|
- **`documentation`** — the **deep doc** (ops, channels, edge cases). The consumer materializes it as a pull-able `worker://plurnk/docs/<name>.md` entry the model READs on demand — off the hot path. Mirrors `ExecInfo.documentation`. **Convention:** keep it in a **`docs/<name>.md`** file (root) and load it at module init with the snippet above — `../` resolves the same from `src/` (test) and `dist/` (built); add `docs/**/*` to `files`. A missing file fails-hard at import.
|
|
77
92
|
- **`glyph`** — optional opaque client display metadata. It is discoverable through the client capability wire and never rendered into model teaching; clients choose fallback, fonts, and theme.
|
|
78
93
|
|
|
94
|
+
Declare `textEditScopes: true` only when `editBatch` accepts PLURNK's shared
|
|
95
|
+
text-coordinate algebra. Core's universal READ projection derives and resolves
|
|
96
|
+
any model-facing line anchor; scheme handlers receive numeric
|
|
97
|
+
`ResolvedEditStatement` coordinates only. Delegate those edits to
|
|
98
|
+
`ctx.entries.operations.editBatch`; it owns the anchor recheck and atomic
|
|
99
|
+
collision guard.
|
|
100
|
+
|
|
79
101
|
### 4. Self-doc: terse pushes, depth pulls
|
|
80
102
|
|
|
81
103
|
`example` renders every turn — keep it terse. `documentation` is the deep prose; the consumer materializes it at `worker://plurnk/docs/<name>.md` for the model to READ on demand. Don't dump prose into `example` (it floods the hot path) — put it in `documentation`.
|
|
@@ -87,15 +109,15 @@ That's the whole contract: declare, `implements SchemeHandler`, manifest with se
|
|
|
87
109
|
### Types
|
|
88
110
|
|
|
89
111
|
- Manifest/flags: `SchemeManifest` (including `example` / `documentation` self-doc and client-only `glyph`), `SchemeFlagAffinity`, and `WriterTier`; contracts-owned `LoopFlags` / `DEFAULT_LOOP_FLAGS` are re-exported.
|
|
90
|
-
- Behavior contract: `SchemeHandler`
|
|
91
|
-
- Results: universal `SchemeResult` plus RFC 9457 `ProblemDetails`, optional `EntryResult` / `ProposalResult` / `PassthroughResult` authoring shapes, `SchemeResultBase`,
|
|
92
|
-
- Capability ctx: `SchemeCtx` and its entry, channel,
|
|
112
|
+
- Behavior contract: `SchemeHandler`, numeric-only `ResolvedEditStatement` (also exported as `EditStatement`), and optional `PacketSectionTransformer` (`PacketSectionDraft`); the remaining re-exported scheme-facing grammar types (`PlurnkStatement` + per-op statements + `ParsedPath` / `LocalPath` / `UrlPath`).
|
|
113
|
+
- Results: universal `SchemeResult` plus RFC 9457 `ProblemDetails`, optional `EntryResult` / `ProposalResult` / `PassthroughResult` authoring shapes, `SchemeResultBase`, matcher navigation `MatchEvidence`, and target-shaped standard `EntryFindResult` pagination/count metadata.
|
|
114
|
+
- Capability ctx: `SchemeCtx` and its entry, channel, notification, projection, and subscription domains. Entry schemes can reuse typed standard operations with semantic commons/worker ownership.
|
|
93
115
|
|
|
94
116
|
### Helpers (`export default class`, static methods)
|
|
95
117
|
|
|
96
118
|
- `SchemeResolver.forLoop(handlers, flags)` — active-scheme resolution under loop flags.
|
|
97
119
|
- `MimetypeClassifier.isBinary` / `.isJson` / `.normalizeAutoText` (+ `TEXT_PRIMITIVE_MIMETYPE` named export) - registry-free mimetype taxonomy and scheme-local helpers. Configured consumers use `Mimetypes.classify()` for handler-aware binary decisions.
|
|
98
|
-
- `Slicer.lines` / `.linesRaw` / `.textReplacement` / `.lineMarkerEdit` / `.lineMarkerEditBatch` - universal text-region projection and same-snapshot replacement; `Slicer.page` handles ordered results
|
|
120
|
+
- `Slicer.lines` / `.linesRaw` / `.textReplacement` / `.lineMarkerEdit` / `.lineMarkerEditBatch` - universal text-region projection and same-snapshot replacement; `Slicer.page` handles ordered results, and `.coversAvailable` derives complete coverage from their compact `RangeExtent`.
|
|
99
121
|
- `PathMimetype.resolve(pathname, default, mimetypes)` — path-extension mimetype resolver.
|
|
100
122
|
- `Matcher.matchAgainstContent(body, content, mimetype, mimetypes)` - boolean resource selection over `Mimetypes.query` (glob/regex/jsonpath/xpath), returning locator/exact-region `MatchEvidence`.
|
|
101
123
|
- `Results.problem` / `.failure` / `.assert` / `.assertReadResult` / `.assertMatchEvidenceList` / `.attachInstance` / `.isEntry` / `.isProposal` / `.isPassthrough` / `.isErrorStatus` - RFC 9457 result builders, validators, durable-occurrence attachment, and guards.
|
package/SPEC.md
CHANGED
|
@@ -25,6 +25,7 @@ class Notes {
|
|
|
25
25
|
writableBy: ["model", "client"],
|
|
26
26
|
volatile: false,
|
|
27
27
|
modelVisible: true,
|
|
28
|
+
textEditScopes: true,
|
|
28
29
|
flags: { /* optional SchemeFlagAffinity */ },
|
|
29
30
|
};
|
|
30
31
|
}
|
|
@@ -39,9 +40,10 @@ class Notes {
|
|
|
39
40
|
| `writableBy` | Subset of `["model", "client", "plurnk", "plugin"]`; empty declares an immutable scheme. Consumer returns 403 for outside-set writes. |
|
|
40
41
|
| `volatile` | Boolean. |
|
|
41
42
|
| `modelVisible` | Boolean. |
|
|
42
|
-
| `folderScopes?` | `true` declares that a trailing slash on FIND
|
|
43
|
+
| `folderScopes?` | `true` declares that a trailing slash on FIND is a collection scope. Absent/false means `/` is ordinary resource syntax. |
|
|
44
|
+
| `textEditScopes?` | `true` declares the shared textual EDIT coordinate and collision contract. For model-writable schemes, core's universal READ projector publishes line anchors and core resolves them for every anchor-bearing text selection; handlers receive only numeric coordinates and route standard entry mutation through `ctx.entries.operations.editBatch`. Absent/false or no model write authority rejects model-facing anchors before handler invocation. |
|
|
43
45
|
| `flags?` | Optional exact `SchemeFlagAffinity`; see {§manifest-flag-affinity}. |
|
|
44
|
-
| `example?` | The scheme's
|
|
46
|
+
| `example?` | The scheme's concise **hot-path** operation example set (e.g. `"## READ0 (foo://thing/42)"`) — renders in the live resource catalogue every turn. One or more complete operations may be separated by blank lines; keep semantics in `documentation`. Omit → not advertised. |
|
|
45
47
|
| `documentation?` | The **deep doc** (semantics / channels / edge cases). Consumer materializes it as a pull-able `worker://plurnk/docs/<name>.md` entry READ on demand; never hits the hot path. Mirrors `ExecInfo.documentation`. |
|
|
46
48
|
| §manifest-client-display `glyph?` | Non-empty opaque client presentation glyph. It is projected through {§client-display-capabilities}; omission delegates identity fallback to the client. It never enters model teaching. |
|
|
47
49
|
| `foldedByDefault?` | Entries land FOLDED, off the ranked manifest surface (READable via address, not poured into the ranked view). For executor-output streams (`<tag>://`) — containment one level up. Absent/false → ranked/first-class. |
|
|
@@ -66,31 +68,35 @@ Proposal behavior is not scheme affinity. A handler proposes by returning 202;
|
|
|
66
68
|
the consumer's proposal lifecycle decides whether a client, loop auto,
|
|
67
69
|
`noProposals`, or a timeout resolves it.
|
|
68
70
|
|
|
69
|
-
§manifest-self-doc **Self-doc split (terse pushes, depth pulls).** `example` is the hot-path
|
|
71
|
+
§manifest-self-doc **Self-doc split (terse pushes, depth pulls).** `example` is the hot-path operation example set rendered every turn — keep it terse. `documentation` is the deep prose (every op, channel, status code, gotcha); the consumer materializes it as a pull-able **`worker://plurnk/docs/<name>.md`** entry the model READs on demand, off the hot path. Both live on the manifest; the consumer decides what's pushed vs pulled. `glyph` is client display metadata under {§manifest-client-display}, not self-documentation.
|
|
70
72
|
|
|
71
73
|
**Authoring convention — `docs/<name>.md`.** The contract field stays a plain `string`, but a sibling SHOULD keep the deep doc in a **`docs/<name>.md`** file at the package root rather than inline, and load it into the manifest at module init — e.g. `documentation: await readFile(new URL("../docs/<name>.md", import.meta.url), "utf-8")` (top-level await; `../` resolves identically from `src/` in test and `dist/` once built). Ship it by adding `docs/**/*` to `files`. This keeps prose out of the handler source and gives editors real Markdown; the contract and the consumer's `worker://plurnk/docs/<name>.md` materialization are unchanged. A missing file fails-hard at import (no silent empty doc).
|
|
72
74
|
|
|
73
75
|
## §2 Interface
|
|
74
76
|
|
|
75
77
|
Sister scheme handlers implement op methods consumed by plurnk-service via
|
|
76
|
-
dispatch.
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
**`SchemeHandler`** interface
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
dispatch. The consumer owns READ for every `category: "data"` scheme and owns
|
|
79
|
+
exact-target FIND over its canonical representation; no handler method can
|
|
80
|
+
replace either projection. Other absent operation methods return **501**. The
|
|
81
|
+
exported **`SchemeHandler`** interface gives operation methods their grammar
|
|
82
|
+
statement and `ctx`, while representation preparation receives a deliberately
|
|
83
|
+
narrower request. `editBatch` returns the typed `EditBatchResult`
|
|
84
|
+
specialization:
|
|
82
85
|
|
|
83
86
|
```ts
|
|
84
|
-
import type { EditBatchResult, SchemeHandler } from "@plurnk/plurnk-schemes";
|
|
87
|
+
import type { EditBatchResult, ResolvedEditStatement, SchemeHandler } from "@plurnk/plurnk-schemes";
|
|
85
88
|
|
|
86
89
|
export interface SchemeHandler {
|
|
87
90
|
ready?(): Promise<void>;
|
|
88
91
|
close?(): Promise<void>;
|
|
89
|
-
resolveEntryAddress?(target: ParsedPath, ctx: SchemeCtx): Promise<EntryAddress | null>;
|
|
92
|
+
resolveEntryAddress?(target: ParsedPath, ctx: SchemeCtx): Promise<EntryAddress | SchemeResult | null>;
|
|
93
|
+
prepareRepresentation?(
|
|
94
|
+
request: RepresentationPreparationRequest,
|
|
95
|
+
ctx: SchemeCtx,
|
|
96
|
+
): Promise<RepresentationPreparationResult>;
|
|
90
97
|
prepareFind?(statement: FindStatement, ctx: SchemeCtx): Promise<SchemeResult>;
|
|
91
|
-
read?(statement: ReadStatement, ctx: SchemeCtx): Promise<SchemeResult>;
|
|
92
98
|
find?(statement: FindStatement, ctx: SchemeCtx): Promise<SchemeResult>;
|
|
93
|
-
editBatch?(statements: readonly
|
|
99
|
+
editBatch?(statements: readonly ResolvedEditStatement[], ctx: SchemeCtx): Promise<EditBatchResult>;
|
|
94
100
|
send?(statement: SendStatement, ctx: SchemeCtx): Promise<SchemeResult>;
|
|
95
101
|
exec?(statement: ExecStatement, ctx: SchemeCtx): Promise<SchemeResult>;
|
|
96
102
|
work?(statement: WorkStatement, ctx: SchemeCtx): Promise<SchemeResult>;
|
|
@@ -101,26 +107,70 @@ export interface SchemeHandler {
|
|
|
101
107
|
}
|
|
102
108
|
```
|
|
103
109
|
|
|
104
|
-
`
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
`
|
|
113
|
-
|
|
114
|
-
|
|
110
|
+
§resolved-edit-statement `ResolvedEditStatement` is the scheme-facing EDIT
|
|
111
|
+
shape: its `lineMarker` is `LineMarker | null` and therefore contains numbers
|
|
112
|
+
only. Core resolves the model-facing {§text-line-anchor-syntax} before invoking
|
|
113
|
+
`SchemeHandler.editBatch` or `EntryOperationCaps.editBatch`; an unresolved
|
|
114
|
+
anchor crossing that boundary is an internal contract violation. The barrel's
|
|
115
|
+
compatibility export named `EditStatement` aliases this resolved shape, so
|
|
116
|
+
existing plugins do not inherit the model parser's anchor representation.
|
|
117
|
+
The anchor precondition remains core-private. A public handler declaring
|
|
118
|
+
`textEditScopes: true` MUST route its standard textual mutation through
|
|
119
|
+
`ctx.entries.operations.editBatch`, which rechecks that precondition at the
|
|
120
|
+
snapshot owner and lands with the consumer's compare-and-swap. Applying the
|
|
121
|
+
numeric coordinates independently would discard the declared collision
|
|
122
|
+
contract. Core-owned special resources enforce the equivalent invariant inside
|
|
123
|
+
their mutation adapter.
|
|
124
|
+
|
|
125
|
+
§read-preparation `prepareRepresentation?` is the optional, operation-neutral
|
|
126
|
+
acquisition seam for one exact resource. Core first resolves its canonical
|
|
127
|
+
pathname and owner, binds `ctx.entries`/channels/subscriptions to that owner,
|
|
128
|
+
and removes the channel fragment. The request is exactly
|
|
129
|
+
`{ target, pathname }`: READ coordinates, FIND matchers, the selected channel,
|
|
130
|
+
and operation intent are structurally unavailable.
|
|
131
|
+
|
|
132
|
+
A stored scheme omits the hook. An acquired scheme writes its complete channel
|
|
133
|
+
topology through `ctx.entries` and returns `200` readiness. A live scheme first
|
|
134
|
+
seeds those same canonical channels, opens a subscription, and may return `102`
|
|
135
|
+
only while production remains live. Other statuses are exact terminal results.
|
|
136
|
+
Per-channel producer status belongs durably on that channel as
|
|
137
|
+
`producerResult`; no transient preparation result may carry content, channel
|
|
138
|
+
selection, or channel outcomes. After `200`, core alone selects the authored
|
|
139
|
+
channel, applies tag/binary/text rules (including markerless `<1,16>`), and
|
|
140
|
+
composes that channel's producer evidence. Cold and warm reads therefore have
|
|
141
|
+
identical semantics.
|
|
142
|
+
|
|
143
|
+
Exact FIND uses the same `prepareRepresentation?` seam and then the standard
|
|
144
|
+
entry query; the queried default channel's durable producer result composes
|
|
145
|
+
with that exact query just as it does with exact READ. `prepareFind?` is only
|
|
146
|
+
the optional broad-scope discovery seam
|
|
147
|
+
used before standard entry selection when no custom broad `find()` exists. A
|
|
148
|
+
custom `find()` may own genuinely different candidate enumeration, but never
|
|
149
|
+
exact-resource materialization or READ coordinates. Every standard query uses
|
|
150
|
+
the same canonical identity as `ctx.entries`; URL authority cannot disappear
|
|
151
|
+
between preparation and lookup.
|
|
152
|
+
|
|
153
|
+
An exact COPY/MOVE source also resolves and prepares through this seam before
|
|
154
|
+
core selects its canonical stored channel. COPY/MOVE retain their own source
|
|
155
|
+
scope algebra: an absent source scope means the complete channel and an explicit
|
|
156
|
+
scope preserves raw source separators. Neither distinction is exposed to the
|
|
157
|
+
producer. A live `102` leaves the composition unapplied; a ready representation
|
|
158
|
+
is selected from the same channels used by READ and exact FIND. A selected
|
|
159
|
+
channel's producer failure aborts before destination mutation; successful
|
|
160
|
+
non-`200` content remains eligible for transfer.
|
|
115
161
|
|
|
116
162
|
§entry-address-resolution `resolveEntryAddress?` gives a client observation the
|
|
117
163
|
same address law as model-facing operations without creating a second CRUD
|
|
118
|
-
protocol.
|
|
164
|
+
protocol. Core removes the channel fragment and target-slot pathname aliases
|
|
165
|
+
{§path-parentheses} before invocation; query and other identity components
|
|
166
|
+
remain exact. The hook returns the canonical stored `pathname` and a semantic
|
|
167
|
+
owner:
|
|
119
168
|
|
|
120
169
|
| Return | Meaning |
|
|
121
170
|
|-----------------------------------------|---------------------------------------------------|
|
|
122
171
|
| `{ pathname, owner: "commons" }` | Resolve in the shared workspace namespace |
|
|
123
172
|
| `{ pathname, owner: "worker" }` | Resolve in the calling worker's namespace |
|
|
173
|
+
| Non-success `SchemeResult` | Preserve an expected address refusal exactly |
|
|
124
174
|
| `null` | The selector names no client-visible entry |
|
|
125
175
|
| Hook absent | Use the standard pathname and `commons` ownership |
|
|
126
176
|
|
|
@@ -151,8 +201,9 @@ hook.
|
|
|
151
201
|
|
|
152
202
|
The entry CRUD primitives (`readEntry`/`writeEntry`/`deleteEntry`) are not handler operations; schemes use `ctx.entries`. Proposal application is the optional `applyResolution` handler hook described in §3.bis.
|
|
153
203
|
|
|
154
|
-
OPEN and FOLD are not handler methods. They curate visibility
|
|
155
|
-
core-owned log; an entry scheme has no visibility state and
|
|
204
|
+
OPEN and FOLD are not handler methods. They curate visibility by filtering tags
|
|
205
|
+
on the core-owned log; an entry scheme has no visibility or tag state and
|
|
206
|
+
receives 501.
|
|
156
207
|
|
|
157
208
|
§scheme-edit-batch-receipt **Regional mutation receipts.** COPY and MOVE are not
|
|
158
209
|
handler methods. The engine composes their source and
|
|
@@ -179,6 +230,7 @@ interface AppliedEditBatchReceipt {
|
|
|
179
230
|
readonly unit: EditReceiptUnit;
|
|
180
231
|
readonly before: number;
|
|
181
232
|
readonly after: number;
|
|
233
|
+
readonly parseIssues?: number;
|
|
182
234
|
readonly effects: readonly EditEffectReceipt[];
|
|
183
235
|
}
|
|
184
236
|
|
|
@@ -187,6 +239,7 @@ interface ReviewerReplacementEditBatchReceipt {
|
|
|
187
239
|
readonly unit: EditReceiptUnit;
|
|
188
240
|
readonly before: number;
|
|
189
241
|
readonly after: number;
|
|
242
|
+
readonly parseIssues?: number;
|
|
190
243
|
readonly disposition: "reviewer-replaced";
|
|
191
244
|
readonly superseded: readonly string[];
|
|
192
245
|
readonly replacement: EditEffectReceipt;
|
|
@@ -212,8 +265,17 @@ cannot be known. The consumer projects the replacement once on the durable
|
|
|
212
265
|
proposal-owning row and projects each authored marker's superseded disposition
|
|
213
266
|
on its own row.
|
|
214
267
|
|
|
268
|
+
`context` is an ordered, source-numbered projection of the landed result. For a
|
|
269
|
+
consumer-selected count `C`, it contains up to `C` surrounding lines and the
|
|
270
|
+
first and last `C` landed lines at each result boundary. Overlapping windows
|
|
271
|
+
coalesce and coordinate jumps expose an omitted middle. A deletion instead
|
|
272
|
+
contains up to `C` lines on each side of its join.
|
|
273
|
+
|
|
215
274
|
The engine validates that receipt and owns the ordered COPY/MOVE resource
|
|
216
275
|
effects shown to consumers; plugins do not invent a second effect envelope.
|
|
276
|
+
`parseIssues`, when present, is the positive parser-recovery count for the
|
|
277
|
+
complete resulting revision. Zero and unavailable evidence are omitted. The
|
|
278
|
+
hint is advisory: inspection failure does not reverse a landed mutation.
|
|
217
279
|
|
|
218
280
|
## §3 Helpers exported by this repo
|
|
219
281
|
|
|
@@ -222,12 +284,13 @@ effects shown to consumers; plugins do not invent a second effect envelope.
|
|
|
222
284
|
- Manifest/flags: `SchemeManifest`, `SchemeFlagAffinity`, and `WriterTier`; contracts-owned `LoopFlags` and `DEFAULT_LOOP_FLAGS` are re-exported for compatibility.
|
|
223
285
|
- Mutation receipts: `EditBatchResult`, `EditBatchReceipt`, `EditReceipt`, `EditEffectReceipt`, and `EditReceiptUnit`.
|
|
224
286
|
- §scheme-packet-transform **Packet-section transformation.** A scheme may implement `transformSections(sections: PacketSectionDraft[]) → PacketSectionDraft[] | Promise<…>` to add, remove, or reorder sections before core measures the packet. The exact draft shape is `{ name; slot: "system"|"user"; header: string|null; content }`; no token measurement exists at this boundary. Core invokes implementations in registration order and applies `PacketSections.assertDrafts` to the initial list and every returned list. Names are non-empty and unique within the packet.
|
|
225
|
-
- Behavior contract: `SchemeHandler` (§2). Scheme-facing grammar types re-exported here so siblings pin only this package: `PlurnkStatement` + the per-op statement types (`ReadStatement`, `FindStatement`, `OpenStatement`, `FoldStatement`, `
|
|
287
|
+
- Behavior contract: `SchemeHandler` (§2). Scheme-facing grammar types re-exported here so siblings pin only this package: `PlurnkStatement` + the per-op statement types (`ReadStatement`, `FindStatement`, `OpenStatement`, `FoldStatement`, `CopyStatement`, `MoveStatement`, `SendStatement`, `ExecStatement`, `WorkStatement`, `ForkStatement`, `KillStatement`, `PlanStatement`) and path types (`ParsedPath` = `LocalPath` | `UrlPath`). EDIT uses `ResolvedEditStatement`, also exported under the compatibility name `EditStatement`, under {§resolved-edit-statement}.
|
|
226
288
|
- Target syntax: contracts-owned `PathSyntax` is re-exported for the shared exact-versus-path-glob classifier {§path-glob}.
|
|
227
289
|
- Discovery: `SchemeDiscovery` (behavior class) with `SchemeInfo` / `SchemeDiscoveryResult` / `DiscoverOptions` (§6).
|
|
228
|
-
- §executor-scheme-output Executor-scheme ("an executor is a scheme"): `OutputScheme.manifestFromRuntime(decl)` derives a read-only-output `SchemeManifest` from an executor's `RuntimeDecl` (zero scheme-authoring)
|
|
290
|
+
- §executor-scheme-output Executor-scheme ("an executor is a scheme"): `OutputScheme.manifestFromRuntime(decl)` derives a read-only-output `SchemeManifest` from an executor's `RuntimeDecl` (zero scheme-authoring). Executor output is a canonical entry and therefore inherits core's exact READ projection under {§read-preparation}; no executor-specific READ helper exists. `Summarize.summarize(content, mimetype)` -> `OrientIndex` is the structural-only EXEC-receipt index (no content - universal-receipt containment). A per-tag executor-scheme supplies its manifest via instance `get manifest()` (§2 `SchemeHandler.manifest?`).
|
|
229
291
|
- Results: `SchemeResult` is the universal operation-result contract. Statuses below 400 carry no `problem`; statuses 400–599 require RFC 9457 `ProblemDetails`, and the legacy `error` member is forbidden. `EntryResult`, `ProposalResult`, and `PassthroughResult` are optional conventional shapes, not engine routing discriminators. Guards inspect those optional shapes; proposal routing itself is engine-owned and follows status plus operation semantics.
|
|
230
|
-
- Standard
|
|
292
|
+
- Standard `EntryFindResult` exposes only its paged `results`, complete `matchingPathCount` / `matchLocationCount`, content weights, and typed range. Each resource-mode `EntryCatalogItem` is a nonempty, default-first array of flat `EntryCatalogChannel` objects; a scope is the one-element `EntryCatalogScopeGroup`. Exact matcher mode returns flat `MatchEvidence` locations. Pagination is the materialization bound; no path-owning channel wrapper, hidden `matches`, `pathnames`, or overflow-only result collection exists.
|
|
293
|
+
- §scheme-catalog-parse-issues An `EntryCatalogChannel` may carry a positive `parseIssues` count when its exact content projection reported parser recovery sites. Zero and unavailable evidence are omitted. This is advisory metadata and never a validity gate or operation failure.
|
|
231
294
|
- Capability ctx (see §3.bis): `SchemeCtx`, `StreamSubscription`, and the domain capabilities. Entry authors additionally receive `EntryOperationCaps`, semantic `EntryOwner`/`EntryAddress`, and typed standard-operation results. `editBatch` receives every same-turn EDIT for one canonical resource and channel; it validates against one snapshot and commits one revision or none. There is no sequential single-EDIT fallback.
|
|
232
295
|
|
|
233
296
|
Behavior ships as `export default class` (one class per file, static methods) — the ecosystem class paradigm. Type-only modules, the barrel, and the frozen `DEFAULT_LOOP_FLAGS` constant are the only non-class files.
|
|
@@ -281,12 +344,15 @@ entry channels beyond Unicode text.
|
|
|
281
344
|
| `readableBytes(chunks, mimetype)` | Project one async byte source under the mimetype family's bounded-input policy. |
|
|
282
345
|
| `identity(mimetype)` | Return the opaque identity of configured projection behavior for cache and materialization freshness. |
|
|
283
346
|
| `isBinary(mimetype)` | Classify through the configured registry; installed handler declarations remain authoritative. |
|
|
347
|
+
| `parseIssues(content, mimetype)` | Return positive parser-recovery evidence, or omit unavailable/clean evidence, under {§mimetype-parse-issues}. |
|
|
284
348
|
| `ProjectedText` | Derived Unicode plus its output mimetype, source mimetype, and opaque projection identity. |
|
|
285
349
|
|
|
286
350
|
A returned object is present even when its `content` is `""`; only `null`
|
|
287
351
|
denotes absence. Consumers must not infer projection presence from content
|
|
288
|
-
length.
|
|
289
|
-
|
|
352
|
+
length. Thrown readable, identity, and classification calls are execution
|
|
353
|
+
failures whose causes propagate; they must never be converted to `null`.
|
|
354
|
+
Parser-recovery inspection is deliberately non-gating: its implementation
|
|
355
|
+
surfaces tooling failure as a Notice and returns `undefined`.
|
|
290
356
|
`ProjectionInputLimitError` is the projection boundary's exported name for the
|
|
291
357
|
configured mimetype family's typed bounded-input failure.
|
|
292
358
|
|
|
@@ -308,6 +374,11 @@ Successful results carry schemes-owned, boundary-validated normalization
|
|
|
308
374
|
evidence containing both the authored and canonical coordinates. Producers do
|
|
309
375
|
not emit or proactively teach the tolerated form.
|
|
310
376
|
|
|
377
|
+
A harmless end-bound overshoot clamps rather than erroring: an oversized line
|
|
378
|
+
range ends at the final line, an exact end line beyond the content ends at EOF,
|
|
379
|
+
and an oversized end column ends at its line's final code point. Start-line and
|
|
380
|
+
start-column overshoots remain 416 errors.
|
|
381
|
+
|
|
311
382
|
- `Slicer.lines(content, marker)` returns the selected text, source
|
|
312
383
|
`startLine`, and complete resolved `region`; `Slicer.linesRaw` preserves
|
|
313
384
|
original newline separators for COPY/MOVE source transfer.
|
|
@@ -317,15 +388,19 @@ not emit or proactively teach the tolerated form.
|
|
|
317
388
|
- `Slicer.lineMarkerEdit` applies one replacement.
|
|
318
389
|
- `Slicer.lineMarkerEditBatch` validates all replacements against one snapshot,
|
|
319
390
|
rejects overlaps, and applies all or none.
|
|
320
|
-
- `Slicer.page(items, marker)` is the separate ordered-result
|
|
321
|
-
helper; it accepts only one or two integer positions
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
391
|
+
- `Slicer.page(items, marker, options?)` is the separate ordered-result
|
|
392
|
+
pagination helper; it accepts only one or two integer positions and can name
|
|
393
|
+
an operation-owned range unit. `allowEmpty` preserves an otherwise valid
|
|
394
|
+
positive request when an upstream filter yields no items.
|
|
395
|
+
- `Slicer.coversAvailable(range)` derives whether a successful range selected
|
|
396
|
+
the complete available extent; that fact is never serialized separately.
|
|
397
|
+
|
|
398
|
+
A successful line or pagination selection carries the contracts-owned
|
|
399
|
+
`RangeExtent` {§range-extent}; a 416 carries the same extent without
|
|
400
|
+
`returned`. Exact regions use `region` instead. An exact-region failure,
|
|
401
|
+
including a failed tolerated three-coordinate scope, carries
|
|
402
|
+
`requestedCoordinates` exactly as authored; an invalid-arity text scope does
|
|
403
|
+
likewise. Both carry `columnKind: "unicodeCodePoints"`.
|
|
329
404
|
|
|
330
405
|
### §path-extension-mimetype Path-extension mimetype — `PathMimetype`
|
|
331
406
|
|
|
@@ -338,7 +413,7 @@ endpoints and `total: 0`.
|
|
|
338
413
|
- `Results.problem(owner, code, status, detail, extensions?)` — build and validate RFC 9457 Problem Details with a stable `https://problems.plurnk.dev/<owner>/<code>` type.
|
|
339
414
|
- `Results.failure(owner, code, status, detail, fields?, extensions?)` — build and validate a failed operation result.
|
|
340
415
|
- `Results.assert(result)` — validate the complete success/failure discrimination and reject malformed plugin output.
|
|
341
|
-
- `Results.assertMatchEvidence(evidence)` / `assertMatchEvidenceList(evidence)` - enforce the exact `{
|
|
416
|
+
- `Results.assertMatchEvidence(evidence)` / `assertMatchEvidenceList(evidence)` - enforce the exact `{ locator?, region? }` shape and shared `TextRegion` contract.
|
|
342
417
|
- `Results.assertReadResult(result)` - validate the universal operation result plus any `region` and `matches` it exposes.
|
|
343
418
|
- `Results.attachInstance(result, uri)` — attach the durable occurrence URI to a failed result.
|
|
344
419
|
|
|
@@ -347,18 +422,18 @@ durable `instance`, because only it knows the committed log coordinate. A
|
|
|
347
422
|
malformed handler result is a plugin contract violation and fails hard; the
|
|
348
423
|
consumer does not invent a fallback error or reinterpret arbitrary fields.
|
|
349
424
|
The same discrimination applies to every `SchemeCtx` capability result:
|
|
350
|
-
entries
|
|
425
|
+
entries and channels never return a bare failure status.
|
|
351
426
|
|
|
352
427
|
### Matcher dispatch - `Matcher` {§matcher-dispatch}
|
|
353
428
|
|
|
354
429
|
- `Matcher.matchAgainstContent(body, content, mimetype, mimetypes)` is the body-matcher adapter over `Mimetypes.query` (glob/regex/jsonpath/xpath).
|
|
355
430
|
- A match returns status 200 and `matches: MatchEvidence[]`.
|
|
356
|
-
`MatchEvidence` is `{
|
|
431
|
+
`MatchEvidence` is `{locator?, region?}`. `locator` preserves a structural locator;
|
|
357
432
|
`region` is a complete four-coordinate `TextRegion` only when the finding has
|
|
358
433
|
an honest exact or nearest-enclosing mapping into the text the model can READ.
|
|
359
|
-
Each item must contain at least one of `
|
|
434
|
+
Each item must contain at least one of `locator` or `region`; other fields violate
|
|
360
435
|
the shared evidence contract.
|
|
361
|
-
- The matcher is a boolean resource selector. It does not replace content with matched values or choose a retrieval window.
|
|
436
|
+
- The matcher is a boolean resource selector. It does not replace content with matched values or choose a retrieval window. FIND owns selection and pagination; exact READ owns text projection.
|
|
362
437
|
- Empty results return 204 with `matches: []`; `UnsupportedDialectError` maps to 415; `InvalidExpressionError` maps to 400; `QueryParseFailureError` maps to 203 with raw content, text/markdown, and `reason`.
|
|
363
438
|
- A multi-resource matcher omits candidates that return 415 when at least one candidate supports the dialect. If no candidate supports it, the matcher returns the first exact 415 Problem. An unreadable binary marker therefore cannot poison a repository-wide text search or masquerade as a match.
|
|
364
439
|
|
|
@@ -371,22 +446,24 @@ database schemas, prepared-statement names, and private service modules.
|
|
|
371
446
|
**Interfaces only**: this repo exports the contract and the consumer injects
|
|
372
447
|
its implementation.
|
|
373
448
|
|
|
374
|
-
`SchemeCtx` carries per-dispatch identity (`workspaceId`/`workerId`/`loopId`/`turnId`/`writer`/`signal`) plus **
|
|
449
|
+
`SchemeCtx` carries per-dispatch identity (`workspaceId`/`workerId`/`loopId`/`turnId`/`writer`/`signal`) plus **five live capability namespaces** replacing raw `db`:
|
|
375
450
|
|
|
376
451
|
- `entries` — direct storage over the scheme's own namespace
|
|
377
452
|
(`read`/`write`/`delete`) plus `operations`, the standard PLURNK
|
|
378
453
|
`READ`/`EDIT`/`FIND`/`SEND` implementation for entry-bearing schemes.
|
|
379
454
|
A write may omit channel state to select the `static` default; a successful
|
|
380
455
|
storage read always returns each channel's persisted lifecycle state.
|
|
456
|
+
Optional `attributes` are scheme-private durable metadata. They are scoped to
|
|
457
|
+
that entry, replaced only when explicitly written, and never projected into
|
|
458
|
+
model content, catalogs, or client entry data.
|
|
381
459
|
Standard operations are bound to the handler's manifest. Their optional
|
|
382
460
|
owner is semantic: `"commons"` (default) or the current `"worker"`; database
|
|
383
461
|
owner IDs are not part of the plugin contract. A handler may implement its
|
|
384
|
-
own op method instead. In particular, a handler with `find()` owns FIND
|
|
385
|
-
|
|
462
|
+
own op method instead. In particular, a handler with `find()` owns FIND; one
|
|
463
|
+
without it receives the standard stored-entry behavior.
|
|
386
464
|
- `channels` — content writes + state (`append`/`replace`/`setState`).
|
|
387
|
-
- `tags` — entry tags (`add`/`remove`/`list`).
|
|
388
465
|
- `notify` — between-turn client signal (`streamEvent`, metadata-only); not model-facing. (No `wakeWorker`: the worker wake carries subscription-close context that only exists at stream completion, so it lives on `subscriptions.close`. Only streaming schemes wake a worker, always via close.)
|
|
389
|
-
- `projection` — the text and bounded-byte projection capability in {§scheme-projection}. Acquisition schemes own
|
|
466
|
+
- `projection` — the text and bounded-byte projection capability in {§scheme-projection}. Acquisition schemes own source representations; they do not instantiate or second-guess the reader family. `null` means no readable projection.
|
|
390
467
|
- §scheme-subscriptions `subscriptions` — one streaming lifecycle:
|
|
391
468
|
|
|
392
469
|
| Surface | Lifetime | Contract |
|
|
@@ -397,9 +474,14 @@ its implementation.
|
|
|
397
474
|
|
|
398
475
|
`notifyChunk` appends and emits one stream event. Its optional stateless
|
|
399
476
|
`mimetype` retypes the channel only when the stored type differs.
|
|
400
|
-
`close` validates and persists the exact
|
|
401
|
-
channel state
|
|
402
|
-
|
|
477
|
+
`close(result, summary?, channelStates?)` validates and persists the exact
|
|
478
|
+
universal `SchemeResult`, settles channel state (exact named overrides, then the
|
|
479
|
+
result-status default), unregisters the live handle, and wakes the worker.
|
|
480
|
+
`summary` is presentation only; it never replaces or reconstructs the result.
|
|
481
|
+
An override names an existing channel and is exactly `closed` or `errored`;
|
|
482
|
+
invalid overrides fail before any channel state is changed. This permits one
|
|
483
|
+
multi-channel producer to preserve successful evidence beside an independently
|
|
484
|
+
failed representation without inventing another settlement path.
|
|
403
485
|
|
|
404
486
|
There is **no `visibility` capability**: entry-level SHOW/HIDE was removed in the index/visibility teardown — SHOW/HIDE now collapse/expand `log://` rows, a log-side concern with no entry-visibility for a scheme to set.
|
|
405
487
|
|
package/dist/Manifest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Manifest.d.ts","sourceRoot":"","sources":["../src/Manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,cAAc,EAAc,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Manifest.d.ts","sourceRoot":"","sources":["../src/Manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,cAAc,EAAc,MAAM,YAAY,CAAC;AAwBjF,MAAM,CAAC,OAAO,OAAO,QAAQ;;IACzB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,cAAc,CA8CjE;CAgDJ"}
|
package/dist/Manifest.js
CHANGED
|
@@ -9,6 +9,7 @@ const MANIFEST_FIELD_NAMES = new Set(Object.keys({
|
|
|
9
9
|
volatile: true,
|
|
10
10
|
modelVisible: true,
|
|
11
11
|
folderScopes: true,
|
|
12
|
+
textEditScopes: true,
|
|
12
13
|
foldedByDefault: true,
|
|
13
14
|
flags: true,
|
|
14
15
|
example: true,
|
|
@@ -60,7 +61,7 @@ export default class Manifest {
|
|
|
60
61
|
}
|
|
61
62
|
Manifest.#boolean(manifest, "volatile");
|
|
62
63
|
Manifest.#boolean(manifest, "modelVisible");
|
|
63
|
-
for (const field of ["folderScopes", "foldedByDefault"])
|
|
64
|
+
for (const field of ["folderScopes", "textEditScopes", "foldedByDefault"])
|
|
64
65
|
Manifest.#optionalBoolean(manifest, field);
|
|
65
66
|
for (const field of ["example", "documentation", "storedScheme"])
|
|
66
67
|
Manifest.#optionalString(manifest, field);
|
package/dist/Manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Manifest.js","sourceRoot":"","sources":["../src/Manifest.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Manifest.js","sourceRoot":"","sources":["../src/Manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/Matcher.js
CHANGED
|
@@ -16,7 +16,7 @@ export default class Matcher {
|
|
|
16
16
|
for (const match of matches) {
|
|
17
17
|
const regions = match.regions ?? [];
|
|
18
18
|
if (regions.length === 0 && match.matching !== undefined) {
|
|
19
|
-
const item = Results.assertMatchEvidence({
|
|
19
|
+
const item = Results.assertMatchEvidence({ locator: match.matching });
|
|
20
20
|
const key = JSON.stringify(item);
|
|
21
21
|
if (!seen.has(key)) {
|
|
22
22
|
seen.add(key);
|
|
@@ -26,7 +26,7 @@ export default class Matcher {
|
|
|
26
26
|
}
|
|
27
27
|
for (const region of regions) {
|
|
28
28
|
const item = Results.assertMatchEvidence({
|
|
29
|
-
...(match.matching === undefined ? {} : {
|
|
29
|
+
...(match.matching === undefined ? {} : { locator: match.matching }),
|
|
30
30
|
region,
|
|
31
31
|
});
|
|
32
32
|
const key = JSON.stringify(item);
|
package/dist/Matcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Matcher.js","sourceRoot":"","sources":["../src/Matcher.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,0EAA0E;AAC1E,kBAAkB;AAClB,EAAE;AACF,sEAAsE;AACtE,gFAAgF;AAIhF,OAAO,EACH,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,OAAkD,MAAM,cAAc,CAAC;AAS9E,MAAM,CAAC,OAAO,OAAO,OAAO;IACxB,MAAM,CAAC,SAAS,CAAC,OAA8B;QAC3C,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;YACpC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACvD,MAAM,IAAI,GAAG,OAAO,CAAC,mBAAmB,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"Matcher.js","sourceRoot":"","sources":["../src/Matcher.ts"],"names":[],"mappings":"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"}
|
package/dist/OutputScheme.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// per-tag runtime declaration. An
|
|
3
3
|
// executor authors NO SchemeManifest: its `plurnk.runtimes[]` entry already
|
|
4
4
|
// carries name / glyph / example / output-channels, and everything else is the shared
|
|
5
|
-
// read-only-output default. So `
|
|
5
|
+
// read-only-output default. So EXEC runtime `sh` gets `sh://` for free, and a multi-tag
|
|
6
6
|
// executor (search/news/images) derives a distinct manifest per tag.
|
|
7
7
|
export default class OutputScheme {
|
|
8
8
|
// The read-only-output default. An executor-scheme is a read-VIEW over
|
package/dist/OutputScheme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutputScheme.js","sourceRoot":"","sources":["../src/OutputScheme.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,kCAAkC;AAClC,4EAA4E;AAC5E,sFAAsF;AACtF,
|
|
1
|
+
{"version":3,"file":"OutputScheme.js","sourceRoot":"","sources":["../src/OutputScheme.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,kCAAkC;AAClC,4EAA4E;AAC5E,sFAAsF;AACtF,wFAAwF;AACxF,qEAAqE;AAcrE,MAAM,CAAC,OAAO,OAAO,YAAY;IAC7B,uEAAuE;IACvE,wEAAwE;IACxE,6EAA6E;IAC7E,wEAAwE;IACxE,qEAAqE;IACrE,0EAA0E;IAC1E,MAAM,CAAC,mBAAmB,CAAC,IAAiB;QACxC,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,CAAC,QAAQ,CAAC;YACtB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,IAAI;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;SACxB,CAAC;IACN,CAAC;CACJ"}
|
package/dist/Results.d.ts
CHANGED
|
@@ -16,8 +16,21 @@ export interface SchemeResult {
|
|
|
16
16
|
export interface SchemeResultBase extends SchemeResult {
|
|
17
17
|
readonly problem?: ProblemDetails;
|
|
18
18
|
}
|
|
19
|
+
export interface ChannelProducerResult extends SchemeResultBase {
|
|
20
|
+
readonly content?: never;
|
|
21
|
+
readonly mimetype?: never;
|
|
22
|
+
readonly channel?: never;
|
|
23
|
+
readonly startLine?: never;
|
|
24
|
+
readonly lineAnchorIdentity?: never;
|
|
25
|
+
readonly lineAnchors?: never;
|
|
26
|
+
readonly region?: never;
|
|
27
|
+
readonly matches?: never;
|
|
28
|
+
readonly range?: never;
|
|
29
|
+
}
|
|
30
|
+
export interface RepresentationPreparationResult extends SchemeResultBase {
|
|
31
|
+
}
|
|
19
32
|
export interface MatchEvidence {
|
|
20
|
-
readonly
|
|
33
|
+
readonly locator?: string;
|
|
21
34
|
readonly region?: TextRegion;
|
|
22
35
|
}
|
|
23
36
|
export interface EntryResult extends SchemeResultBase {
|
|
@@ -57,6 +70,8 @@ export default class Results {
|
|
|
57
70
|
static assertMatchEvidence(evidence: unknown): MatchEvidence;
|
|
58
71
|
static assertMatchEvidenceList(evidence: unknown): ReadonlyArray<MatchEvidence>;
|
|
59
72
|
static assertReadResult<T extends SchemeResult>(result: T): T;
|
|
73
|
+
static assertRepresentationPreparation<T extends RepresentationPreparationResult>(result: T): T;
|
|
74
|
+
static assertChannelProducerResult<T extends ChannelProducerResult>(result: T): T;
|
|
60
75
|
static assertScopeNormalizations(value: unknown): ReadonlyArray<ScopeNormalization>;
|
|
61
76
|
static assert<T extends SchemeResult>(result: T): T;
|
|
62
77
|
static attachInstance<T extends SchemeResult>(result: T, instance: string): T;
|