@slopus/happy-agent-client 0.0.83 → 0.0.84
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 +23 -0
- package/dist/happyFileLinks.d.ts +66 -0
- package/dist/happyFileLinks.d.ts.map +1 -0
- package/dist/happyFileLinks.js +298 -0
- package/dist/happyFileLinks.js.map +1 -0
- package/dist/happyReferences.d.ts.map +1 -1
- package/dist/happyReferences.js +1 -74
- package/dist/happyReferences.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/markdownBlocks.d.ts +20 -0
- package/dist/markdownBlocks.d.ts.map +1 -0
- package/dist/markdownBlocks.js +79 -0
- package/dist/markdownBlocks.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -367,3 +367,26 @@ the daemon agree on what is a tag:
|
|
|
367
367
|
|
|
368
368
|
Show a resolved reference as a link whose text is the live title. Indicate a busy entity on the
|
|
369
369
|
link. Show unknown kinds and unresolvable references as inert placeholder text.
|
|
370
|
+
|
|
371
|
+
## File links
|
|
372
|
+
|
|
373
|
+
A file outside the reader's own workspace is linked as an ordinary Markdown link to a `happy-file`
|
|
374
|
+
URL, as API.md specifies under "File links":
|
|
375
|
+
`[Foo.tsx:42](happy-file://agents/<agentId>/packages/app/Foo.tsx#L42-L50)` or
|
|
376
|
+
`[README](happy-file://workspaces/<workspaceId>/README.md)`.
|
|
377
|
+
|
|
378
|
+
- `parseHappyFileLink(url)` returns a `HappyFileLink`, `{ target, path, lines? }`, or `undefined`
|
|
379
|
+
for anything malformed. `target` is `{ type: "agent", agentId }` or
|
|
380
|
+
`{ type: "workspace", workspaceId }`; `path` is decoded and relative to the workspace root;
|
|
381
|
+
`lines` is inclusive, so `#L42` is `{ start: 42, end: 42 }`.
|
|
382
|
+
- `formatHappyFileLink(link)` writes the canonical URL and throws a `TypeError` for an invalid
|
|
383
|
+
link. `happyFileLinkSchema` is the TypeBox schema, and `HAPPY_FILE_LINK_SCHEME` and
|
|
384
|
+
`MAX_HAPPY_FILE_LINK_LENGTH` are the scheme and the longest URL.
|
|
385
|
+
- `renderHappyFileLinksAsText(markdown)` is the fallback for surfaces that cannot open file links:
|
|
386
|
+
each inline link or image to a `happy-file` URL becomes its label. Links in code stay literal.
|
|
387
|
+
The general form is `replaceHappyFileLinks(markdown, replace)`.
|
|
388
|
+
|
|
389
|
+
Resolve an agent link through `GET /v0/agents/:agentId` to its `workspaceId`, then read the file
|
|
390
|
+
from that workspace. Open it read-only inside the reader's own conversation, and show the usual
|
|
391
|
+
"could not open" treatment for a malformed or unresolvable link. Never hand a `happy-file` URL to
|
|
392
|
+
the operating system or a browser.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Happy file links: `[Foo.tsx:42](happy-file://agents/<agentId>/packages/app/Foo.tsx#L42)`, an
|
|
3
|
+
* ordinary Markdown link whose destination names the workspace a file lives in, so the link opens
|
|
4
|
+
* the same file wherever the text is read. A bare `path:line` is read against the reader's own
|
|
5
|
+
* workspace instead. This one implementation is shared by the daemon and every client so they agree
|
|
6
|
+
* on exactly what a link names.
|
|
7
|
+
*
|
|
8
|
+
* The URL grammar is strict: a malformed link is never partly interpreted. Surfaces that cannot open
|
|
9
|
+
* links use the Markdown fallback, which replaces each link with its label.
|
|
10
|
+
*/
|
|
11
|
+
import { type Static } from "@sinclair/typebox";
|
|
12
|
+
/** The URL scheme. Not `happy`, because the Happy mobile app registers `happy://` for deep links. */
|
|
13
|
+
export declare const HAPPY_FILE_LINK_SCHEME = "happy-file";
|
|
14
|
+
/** The longest link URL, in characters. */
|
|
15
|
+
export declare const MAX_HAPPY_FILE_LINK_LENGTH = 4096;
|
|
16
|
+
/**
|
|
17
|
+
* One file link. `path` is decoded and relative to the workspace root; `lines` is inclusive, so
|
|
18
|
+
* `#L42` is `{ start: 42, end: 42 }`. An agent target means that agent's workspace.
|
|
19
|
+
*/
|
|
20
|
+
export declare const happyFileLinkSchema: import("@sinclair/typebox").TObject<{
|
|
21
|
+
target: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
22
|
+
type: import("@sinclair/typebox").TLiteral<"agent">;
|
|
23
|
+
agentId: import("@sinclair/typebox").TString;
|
|
24
|
+
}>, import("@sinclair/typebox").TObject<{
|
|
25
|
+
type: import("@sinclair/typebox").TLiteral<"workspace">;
|
|
26
|
+
workspaceId: import("@sinclair/typebox").TString;
|
|
27
|
+
}>]>;
|
|
28
|
+
path: import("@sinclair/typebox").TString;
|
|
29
|
+
lines: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
30
|
+
start: import("@sinclair/typebox").TInteger;
|
|
31
|
+
end: import("@sinclair/typebox").TInteger;
|
|
32
|
+
}>>;
|
|
33
|
+
}>;
|
|
34
|
+
export type HappyFileLink = Static<typeof happyFileLinkSchema>;
|
|
35
|
+
/** One inline Markdown link to a `happy-file` URL, found by `replaceHappyFileLinks`. */
|
|
36
|
+
export interface HappyFileLinkMatch {
|
|
37
|
+
/** The parsed link, or undefined when the URL is malformed. */
|
|
38
|
+
link: HappyFileLink | undefined;
|
|
39
|
+
/** The destination URL, with Markdown backslash escapes removed. */
|
|
40
|
+
url: string;
|
|
41
|
+
/** The Markdown written between the brackets: the link text, or an image's alt text. */
|
|
42
|
+
label: string;
|
|
43
|
+
/** Whether this is an image, ``. */
|
|
44
|
+
image: boolean;
|
|
45
|
+
/** The whole link exactly as written. */
|
|
46
|
+
source: string;
|
|
47
|
+
}
|
|
48
|
+
/** Parses a `happy-file` URL, or returns undefined when it is anything but a well-formed link. */
|
|
49
|
+
export declare function parseHappyFileLink(url: string): HappyFileLink | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* The canonical URL for a link: every byte of a path segment but the unreserved characters is
|
|
52
|
+
* percent-encoded, and a single line is written `#L42`. Throws a `TypeError` for an invalid link.
|
|
53
|
+
*/
|
|
54
|
+
export declare function formatHappyFileLink(link: HappyFileLink): string;
|
|
55
|
+
/**
|
|
56
|
+
* Replaces every inline Markdown link or image whose destination uses the `happy-file` scheme, in
|
|
57
|
+
* any letter case and whether or not it is well-formed, with `replace`'s text. Links in code spans,
|
|
58
|
+
* fenced code, or behind a backslash-escaped `[` are left alone.
|
|
59
|
+
*/
|
|
60
|
+
export declare function replaceHappyFileLinks(markdown: string, replace: (match: HappyFileLinkMatch) => string): string;
|
|
61
|
+
/**
|
|
62
|
+
* Plain Markdown for surfaces that cannot open file links: each link becomes its label as written.
|
|
63
|
+
* A link with a blank label becomes its decoded path as literal text, or nothing when malformed.
|
|
64
|
+
*/
|
|
65
|
+
export declare function renderHappyFileLinksAsText(markdown: string): string;
|
|
66
|
+
//# sourceMappingURL=happyFileLinks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"happyFileLinks.d.ts","sourceRoot":"","sources":["../sources/happyFileLinks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AAMtD,qGAAqG;AACrG,eAAO,MAAM,sBAAsB,eAAe,CAAC;AAEnD,2CAA2C;AAC3C,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAS/C;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;EAwB/B,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAE/D,wFAAwF;AACxF,MAAM,WAAW,kBAAkB;IAC/B,+DAA+D;IAC/D,IAAI,EAAE,aAAa,GAAG,SAAS,CAAC;IAChC,oEAAoE;IACpE,GAAG,EAAE,MAAM,CAAC;IACZ,wFAAwF;IACxF,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,KAAK,EAAE,OAAO,CAAC;IACf,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;CAClB;AAUD,kGAAkG;AAClG,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CA8BzE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAwB/D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,MAAM,GAC/C,MAAM,CAoCR;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKnE"}
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Happy file links: `[Foo.tsx:42](happy-file://agents/<agentId>/packages/app/Foo.tsx#L42)`, an
|
|
3
|
+
* ordinary Markdown link whose destination names the workspace a file lives in, so the link opens
|
|
4
|
+
* the same file wherever the text is read. A bare `path:line` is read against the reader's own
|
|
5
|
+
* workspace instead. This one implementation is shared by the daemon and every client so they agree
|
|
6
|
+
* on exactly what a link names.
|
|
7
|
+
*
|
|
8
|
+
* The URL grammar is strict: a malformed link is never partly interpreted. Surfaces that cannot open
|
|
9
|
+
* links use the Markdown fallback, which replaces each link with its label.
|
|
10
|
+
*/
|
|
11
|
+
import { Type } from "@sinclair/typebox";
|
|
12
|
+
import { Value } from "@sinclair/typebox/value";
|
|
13
|
+
import { escapeMarkdownText } from "./happyReferences.js";
|
|
14
|
+
import { skipCodeSpan, textBlocks } from "./markdownBlocks.js";
|
|
15
|
+
/** The URL scheme. Not `happy`, because the Happy mobile app registers `happy://` for deep links. */
|
|
16
|
+
export const HAPPY_FILE_LINK_SCHEME = "happy-file";
|
|
17
|
+
/** The longest link URL, in characters. */
|
|
18
|
+
export const MAX_HAPPY_FILE_LINK_LENGTH = 4096;
|
|
19
|
+
const ID_PATTERN = "^[A-Za-z0-9_-]{1,128}$";
|
|
20
|
+
const MAX_LINE = 999_999_999;
|
|
21
|
+
// A decoded path segment: never `.` or `..`, and no `/`, `\`, or control character.
|
|
22
|
+
const SEGMENT = String.raw `(?!\.\.?(?:/|$))[^/\\\u0000-\u001f\u007f-\u009f]+`;
|
|
23
|
+
const lineSchema = Type.Integer({ minimum: 1, maximum: MAX_LINE });
|
|
24
|
+
/**
|
|
25
|
+
* One file link. `path` is decoded and relative to the workspace root; `lines` is inclusive, so
|
|
26
|
+
* `#L42` is `{ start: 42, end: 42 }`. An agent target means that agent's workspace.
|
|
27
|
+
*/
|
|
28
|
+
export const happyFileLinkSchema = Type.Object({
|
|
29
|
+
target: Type.Union([
|
|
30
|
+
Type.Object({ type: Type.Literal("agent"), agentId: Type.String({ pattern: ID_PATTERN }) }, { additionalProperties: false }),
|
|
31
|
+
Type.Object({
|
|
32
|
+
type: Type.Literal("workspace"),
|
|
33
|
+
workspaceId: Type.String({ pattern: ID_PATTERN }),
|
|
34
|
+
}, { additionalProperties: false }),
|
|
35
|
+
]),
|
|
36
|
+
path: Type.String({
|
|
37
|
+
maxLength: MAX_HAPPY_FILE_LINK_LENGTH,
|
|
38
|
+
pattern: `^${SEGMENT}(?:/${SEGMENT})*$`,
|
|
39
|
+
}),
|
|
40
|
+
lines: Type.Optional(Type.Object({ start: lineSchema, end: lineSchema }, { additionalProperties: false })),
|
|
41
|
+
}, { additionalProperties: false });
|
|
42
|
+
const LINK = new RegExp(String.raw `^happy-file://(agents|workspaces)/([A-Za-z0-9_-]{1,128})/([A-Za-z0-9\-._~!$&'*+,;=:@%/]+)` +
|
|
43
|
+
String.raw `(?:#L([1-9][0-9]{0,8})(?:-L([1-9][0-9]{0,8}))?)?$`);
|
|
44
|
+
const SCHEME = /^happy-file:/i;
|
|
45
|
+
const SCHEME_ANYWHERE = /happy-file:/i;
|
|
46
|
+
const ASCII_PUNCTUATION_ESCAPE = /\\([!-/:-@[-`{-~])/g;
|
|
47
|
+
/** Parses a `happy-file` URL, or returns undefined when it is anything but a well-formed link. */
|
|
48
|
+
export function parseHappyFileLink(url) {
|
|
49
|
+
if (url.length > MAX_HAPPY_FILE_LINK_LENGTH)
|
|
50
|
+
return undefined;
|
|
51
|
+
const match = LINK.exec(url);
|
|
52
|
+
if (match === null)
|
|
53
|
+
return undefined;
|
|
54
|
+
const [, kind, id = "", encodedPath = "", start, end] = match;
|
|
55
|
+
const segments = [];
|
|
56
|
+
for (const segment of encodedPath.split("/")) {
|
|
57
|
+
if (segment === "")
|
|
58
|
+
return undefined;
|
|
59
|
+
// Also rejects a `%` that starts no escape, and bytes that are not UTF-8.
|
|
60
|
+
let decoded;
|
|
61
|
+
try {
|
|
62
|
+
decoded = decodeURIComponent(segment);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
// An encoded `%2F` is never a separator, and no file name holds a `/`.
|
|
68
|
+
if (decoded.includes("/"))
|
|
69
|
+
return undefined;
|
|
70
|
+
segments.push(decoded);
|
|
71
|
+
}
|
|
72
|
+
const link = {
|
|
73
|
+
target: kind === "agents"
|
|
74
|
+
? { type: "agent", agentId: id }
|
|
75
|
+
: { type: "workspace", workspaceId: id },
|
|
76
|
+
path: segments.join("/"),
|
|
77
|
+
};
|
|
78
|
+
if (start !== undefined) {
|
|
79
|
+
link.lines = { start: Number(start), end: Number(end ?? start) };
|
|
80
|
+
}
|
|
81
|
+
return isValidLink(link) ? link : undefined;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The canonical URL for a link: every byte of a path segment but the unreserved characters is
|
|
85
|
+
* percent-encoded, and a single line is written `#L42`. Throws a `TypeError` for an invalid link.
|
|
86
|
+
*/
|
|
87
|
+
export function formatHappyFileLink(link) {
|
|
88
|
+
if (!isValidLink(link))
|
|
89
|
+
throw new TypeError("The Happy file link is invalid.");
|
|
90
|
+
const target = link.target.type === "agent"
|
|
91
|
+
? `agents/${link.target.agentId}`
|
|
92
|
+
: `workspaces/${link.target.workspaceId}`;
|
|
93
|
+
let path;
|
|
94
|
+
try {
|
|
95
|
+
path = link.path.split("/").map(encodeSegment).join("/");
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// A lone surrogate has no UTF-8 encoding.
|
|
99
|
+
throw new TypeError("The Happy file link is invalid.");
|
|
100
|
+
}
|
|
101
|
+
const lines = link.lines === undefined
|
|
102
|
+
? ""
|
|
103
|
+
: link.lines.start === link.lines.end
|
|
104
|
+
? `#L${String(link.lines.start)}`
|
|
105
|
+
: `#L${String(link.lines.start)}-L${String(link.lines.end)}`;
|
|
106
|
+
const url = `${HAPPY_FILE_LINK_SCHEME}://${target}/${path}${lines}`;
|
|
107
|
+
if (url.length > MAX_HAPPY_FILE_LINK_LENGTH) {
|
|
108
|
+
throw new TypeError("The Happy file link is too long.");
|
|
109
|
+
}
|
|
110
|
+
return url;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Replaces every inline Markdown link or image whose destination uses the `happy-file` scheme, in
|
|
114
|
+
* any letter case and whether or not it is well-formed, with `replace`'s text. Links in code spans,
|
|
115
|
+
* fenced code, or behind a backslash-escaped `[` are left alone.
|
|
116
|
+
*/
|
|
117
|
+
export function replaceHappyFileLinks(markdown, replace) {
|
|
118
|
+
if (!SCHEME_ANYWHERE.test(markdown))
|
|
119
|
+
return markdown;
|
|
120
|
+
let output = "";
|
|
121
|
+
let position = 0;
|
|
122
|
+
for (const block of textBlocks(markdown)) {
|
|
123
|
+
let index = block.start;
|
|
124
|
+
while (index < block.end) {
|
|
125
|
+
const character = markdown[index];
|
|
126
|
+
if (character === "\\") {
|
|
127
|
+
index += 2;
|
|
128
|
+
}
|
|
129
|
+
else if (character === "`") {
|
|
130
|
+
index = skipCodeSpan(markdown, index, block.end, false);
|
|
131
|
+
}
|
|
132
|
+
else if (character === "[" || (character === "!" && markdown[index + 1] === "[")) {
|
|
133
|
+
const image = character === "!";
|
|
134
|
+
const found = matchInlineLink(markdown, image ? index + 1 : index, block.end);
|
|
135
|
+
if (found === undefined || !SCHEME.test(found.url)) {
|
|
136
|
+
index += image ? 2 : 1;
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
const source = markdown.slice(index, found.end);
|
|
140
|
+
output += markdown.slice(position, index);
|
|
141
|
+
output += replace({
|
|
142
|
+
link: parseHappyFileLink(found.url),
|
|
143
|
+
url: found.url,
|
|
144
|
+
label: found.label,
|
|
145
|
+
image,
|
|
146
|
+
source,
|
|
147
|
+
});
|
|
148
|
+
position = found.end;
|
|
149
|
+
index = found.end;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
index += 1;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return output + markdown.slice(position);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Plain Markdown for surfaces that cannot open file links: each link becomes its label as written.
|
|
160
|
+
* A link with a blank label becomes its decoded path as literal text, or nothing when malformed.
|
|
161
|
+
*/
|
|
162
|
+
export function renderHappyFileLinksAsText(markdown) {
|
|
163
|
+
return replaceHappyFileLinks(markdown, ({ link, label }) => {
|
|
164
|
+
if (label.trim() !== "")
|
|
165
|
+
return label;
|
|
166
|
+
return link === undefined ? "" : escapeMarkdownText(link.path);
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
function isValidLink(link) {
|
|
170
|
+
return (Value.Check(happyFileLinkSchema, link) &&
|
|
171
|
+
(link.lines === undefined || link.lines.end >= link.lines.start));
|
|
172
|
+
}
|
|
173
|
+
function encodeSegment(segment) {
|
|
174
|
+
return encodeURIComponent(segment).replace(/[!'()*]/g, (character) => `%${character.charCodeAt(0).toString(16).toUpperCase()}`);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Matches a CommonMark inline link whose `[` is at `open`: a label with balanced brackets, then
|
|
178
|
+
* `(`, a destination, an optional title, and `)`. Returns the label, the destination with its
|
|
179
|
+
* backslash escapes removed, and the index after the closing parenthesis.
|
|
180
|
+
*/
|
|
181
|
+
function matchInlineLink(markdown, open, end) {
|
|
182
|
+
const close = labelEnd(markdown, open, end);
|
|
183
|
+
if (close === undefined || markdown[close + 1] !== "(")
|
|
184
|
+
return undefined;
|
|
185
|
+
let index = skipWhitespace(markdown, close + 2, end);
|
|
186
|
+
const destination = readDestination(markdown, index, end);
|
|
187
|
+
if (destination === undefined)
|
|
188
|
+
return undefined;
|
|
189
|
+
index = destination.end;
|
|
190
|
+
const beforeTitle = index;
|
|
191
|
+
index = skipWhitespace(markdown, index, end);
|
|
192
|
+
if (index > beforeTitle) {
|
|
193
|
+
const title = titleEnd(markdown, index, end);
|
|
194
|
+
if (title !== undefined)
|
|
195
|
+
index = skipWhitespace(markdown, title, end);
|
|
196
|
+
}
|
|
197
|
+
if (markdown[index] !== ")" || index >= end)
|
|
198
|
+
return undefined;
|
|
199
|
+
return {
|
|
200
|
+
label: markdown.slice(open + 1, close),
|
|
201
|
+
url: destination.url.replace(ASCII_PUNCTUATION_ESCAPE, "$1"),
|
|
202
|
+
end: index + 1,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
/** The index of the `]` that closes the label opened at `open`. */
|
|
206
|
+
function labelEnd(markdown, open, end) {
|
|
207
|
+
let depth = 0;
|
|
208
|
+
let index = open + 1;
|
|
209
|
+
while (index < end) {
|
|
210
|
+
const character = markdown[index];
|
|
211
|
+
if (character === "\\") {
|
|
212
|
+
index += 2;
|
|
213
|
+
}
|
|
214
|
+
else if (character === "`") {
|
|
215
|
+
index = skipCodeSpan(markdown, index, end, false);
|
|
216
|
+
}
|
|
217
|
+
else if (character === "[") {
|
|
218
|
+
depth += 1;
|
|
219
|
+
index += 1;
|
|
220
|
+
}
|
|
221
|
+
else if (character === "]") {
|
|
222
|
+
if (depth === 0)
|
|
223
|
+
return index;
|
|
224
|
+
depth -= 1;
|
|
225
|
+
index += 1;
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
index += 1;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return undefined;
|
|
232
|
+
}
|
|
233
|
+
function readDestination(markdown, start, end) {
|
|
234
|
+
if (markdown[start] === "<") {
|
|
235
|
+
let index = start + 1;
|
|
236
|
+
while (index < end) {
|
|
237
|
+
const character = markdown[index];
|
|
238
|
+
if (character === "\\")
|
|
239
|
+
index += 2;
|
|
240
|
+
else if (character === ">")
|
|
241
|
+
return { url: markdown.slice(start + 1, index), end: index + 1 };
|
|
242
|
+
else if (character === "<" || character === "\n" || character === "\r")
|
|
243
|
+
return undefined;
|
|
244
|
+
else
|
|
245
|
+
index += 1;
|
|
246
|
+
}
|
|
247
|
+
return undefined;
|
|
248
|
+
}
|
|
249
|
+
let depth = 0;
|
|
250
|
+
let index = start;
|
|
251
|
+
while (index < end) {
|
|
252
|
+
const character = markdown[index] ?? "";
|
|
253
|
+
if (character === "\\") {
|
|
254
|
+
index += 2;
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
if (character <= " " || character === "\u007f")
|
|
258
|
+
break;
|
|
259
|
+
if (character === "(")
|
|
260
|
+
depth += 1;
|
|
261
|
+
if (character === ")") {
|
|
262
|
+
if (depth === 0)
|
|
263
|
+
break;
|
|
264
|
+
depth -= 1;
|
|
265
|
+
}
|
|
266
|
+
index += 1;
|
|
267
|
+
}
|
|
268
|
+
if (index === start || depth !== 0)
|
|
269
|
+
return undefined;
|
|
270
|
+
return { url: markdown.slice(start, Math.min(index, end)), end: Math.min(index, end) };
|
|
271
|
+
}
|
|
272
|
+
/** The index after a link title quoted with `"`, `'`, or parentheses. */
|
|
273
|
+
function titleEnd(markdown, start, end) {
|
|
274
|
+
const opening = markdown[start];
|
|
275
|
+
const closing = opening === "(" ? ")" : opening === '"' || opening === "'" ? opening : undefined;
|
|
276
|
+
if (closing === undefined)
|
|
277
|
+
return undefined;
|
|
278
|
+
let index = start + 1;
|
|
279
|
+
while (index < end) {
|
|
280
|
+
const character = markdown[index];
|
|
281
|
+
if (character === "\\")
|
|
282
|
+
index += 2;
|
|
283
|
+
else if (character === closing)
|
|
284
|
+
return index + 1;
|
|
285
|
+
else if (opening === "(" && character === "(")
|
|
286
|
+
return undefined;
|
|
287
|
+
else
|
|
288
|
+
index += 1;
|
|
289
|
+
}
|
|
290
|
+
return undefined;
|
|
291
|
+
}
|
|
292
|
+
function skipWhitespace(markdown, start, end) {
|
|
293
|
+
let index = start;
|
|
294
|
+
while (index < end && /[ \t\r\n]/.test(markdown[index] ?? ""))
|
|
295
|
+
index += 1;
|
|
296
|
+
return index;
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=happyFileLinks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"happyFileLinks.js","sourceRoot":"","sources":["../sources/happyFileLinks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"happyReferences.d.ts","sourceRoot":"","sources":["../sources/happyReferences.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"happyReferences.d.ts","sourceRoot":"","sources":["../sources/happyReferences.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AAKtD,qGAAqG;AACrG,eAAO,MAAM,qBAAqB,YAC9B,UAAU,EACV,OAAO,EACP,WAAW,EACX,SAAS,EACT,SAAS,CACH,CAAC;AACX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMxE,sGAAsG;AACtG,eAAO,MAAM,oBAAoB;;;;;EAQhC,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEjE,oFAAoF;AACpF,MAAM,MAAM,qBAAqB,GAC3B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE,MAAM,WAAW,0BAA0B;IACvC,+FAA+F;IAC/F,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,gGAAgG;AAChG,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAYlD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,kBAAkB,CAElF;AAED,gGAAgG;AAChG,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,0BAA+B,GACzC,qBAAqB,EAAE,CAiBzB;AAED,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAG9E;AAED,8FAA8F;AAC9F,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,sEAAsE;AACtE,wBAAgB,sBAAsB,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,EAC9D,OAAO,GAAE,0BAA+B,GACzC,MAAM,CAMR;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC3C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,MAAM,GAAG,SAAS,EAC1D,OAAO,GAAE,0BAA+B,GACzC,MAAM,CAOR;AAED,iGAAiG;AACjG,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,CAI3E;AAED,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,CASzE;AAED,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD"}
|
package/dist/happyReferences.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { Type } from "@sinclair/typebox";
|
|
11
11
|
import { Value } from "@sinclair/typebox/value";
|
|
12
|
+
import { skipCodeSpan, textBlocks } from "./markdownBlocks.js";
|
|
12
13
|
/** The entity kinds clients resolve. Any other well-formed kind parses and renders as inert text. */
|
|
13
14
|
export const HAPPY_REFERENCE_KINDS = [
|
|
14
15
|
"artifact",
|
|
@@ -35,8 +36,6 @@ const TAG = new RegExp(`<happy-(${KIND_PATTERN})((?:[ \\t]+[a-z][a-z0-9-]*="[^"<
|
|
|
35
36
|
const ATTRIBUTE = /[ \t]+([a-z][a-z0-9-]*)="([^"<>\r\n]*)"/g;
|
|
36
37
|
const ID = new RegExp(`^${ID_PATTERN}$`);
|
|
37
38
|
const VERSION = new RegExp(`^${VERSION_PATTERN}$`);
|
|
38
|
-
const FENCE_OPEN = /^[ \t]*(?:>[ \t]?)*[ \t]*(`{3,}|~{3,})(.*)$/;
|
|
39
|
-
const BLANK_LINE = /^[ \t\r]*$/;
|
|
40
39
|
export function isKnownHappyReferenceKind(kind) {
|
|
41
40
|
return HAPPY_REFERENCE_KINDS.includes(kind);
|
|
42
41
|
}
|
|
@@ -135,78 +134,6 @@ function scan(markdown, streaming) {
|
|
|
135
134
|
}
|
|
136
135
|
return { tags, end: markdown.length };
|
|
137
136
|
}
|
|
138
|
-
/**
|
|
139
|
-
* The runs of Markdown that are neither fenced code nor blank lines, each including its line
|
|
140
|
-
* endings. A code span cannot cross a blank line, so each run bounds the spans inside it. A fence
|
|
141
|
-
* without a closing line runs to the end, which is also how a streaming fence reads.
|
|
142
|
-
*/
|
|
143
|
-
function textBlocks(markdown) {
|
|
144
|
-
const blocks = [];
|
|
145
|
-
let blockStart;
|
|
146
|
-
let fence;
|
|
147
|
-
let lineStart = 0;
|
|
148
|
-
while (lineStart < markdown.length) {
|
|
149
|
-
const newline = markdown.indexOf("\n", lineStart);
|
|
150
|
-
const lineEnd = newline === -1 ? markdown.length : newline + 1;
|
|
151
|
-
const line = markdown.slice(lineStart, newline === -1 ? markdown.length : newline);
|
|
152
|
-
if (fence !== undefined) {
|
|
153
|
-
if (isFenceClose(line, fence))
|
|
154
|
-
fence = undefined;
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
const open = FENCE_OPEN.exec(line);
|
|
158
|
-
const marker = open?.[1];
|
|
159
|
-
const info = open?.[2] ?? "";
|
|
160
|
-
if (marker !== undefined && !(marker.startsWith("`") && info.includes("`"))) {
|
|
161
|
-
if (blockStart !== undefined)
|
|
162
|
-
blocks.push({ start: blockStart, end: lineStart });
|
|
163
|
-
blockStart = undefined;
|
|
164
|
-
fence = { marker: marker.charAt(0), length: marker.length };
|
|
165
|
-
}
|
|
166
|
-
else if (BLANK_LINE.test(line)) {
|
|
167
|
-
if (blockStart !== undefined)
|
|
168
|
-
blocks.push({ start: blockStart, end: lineStart });
|
|
169
|
-
blockStart = undefined;
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
blockStart ??= lineStart;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
lineStart = lineEnd;
|
|
176
|
-
}
|
|
177
|
-
if (blockStart !== undefined)
|
|
178
|
-
blocks.push({ start: blockStart, end: markdown.length });
|
|
179
|
-
return blocks;
|
|
180
|
-
}
|
|
181
|
-
function isFenceClose(line, fence) {
|
|
182
|
-
const close = /^[ \t]*(?:>[ \t]?)*[ \t]*(`+|~+)[ \t\r]*$/.exec(line)?.[1];
|
|
183
|
-
return close !== undefined && close.charAt(0) === fence.marker && close.length >= fence.length;
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* Skips a code span that opens at `start`, returning the index after it. Backticks with no
|
|
187
|
-
* closing run of the same length are literal, except at the end of streaming text, where the
|
|
188
|
-
* closing run may still arrive and everything after the opening run reads as code.
|
|
189
|
-
*/
|
|
190
|
-
function skipCodeSpan(markdown, start, end, open) {
|
|
191
|
-
const length = runLength(markdown, start, "`");
|
|
192
|
-
let index = start + length;
|
|
193
|
-
while (index < end) {
|
|
194
|
-
const next = markdown.indexOf("`", index);
|
|
195
|
-
if (next === -1 || next >= end)
|
|
196
|
-
break;
|
|
197
|
-
const closing = runLength(markdown, next, "`");
|
|
198
|
-
if (closing === length)
|
|
199
|
-
return next + closing;
|
|
200
|
-
index = next + closing;
|
|
201
|
-
}
|
|
202
|
-
return open ? end : start + length;
|
|
203
|
-
}
|
|
204
|
-
function runLength(text, start, character) {
|
|
205
|
-
let index = start;
|
|
206
|
-
while (text[index] === character)
|
|
207
|
-
index += 1;
|
|
208
|
-
return index - start;
|
|
209
|
-
}
|
|
210
137
|
function matchTag(text, start) {
|
|
211
138
|
TAG.lastIndex = start;
|
|
212
139
|
const match = TAG.exec(text);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"happyReferences.js","sourceRoot":"","sources":["../sources/happyReferences.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"happyReferences.js","sourceRoot":"","sources":["../sources/happyReferences.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export type { QueryParameters, QueryValue } from "./endpointUrl.js";
|
|
|
16
16
|
export { applyMessageDelta } from "./applyMessageDelta.js";
|
|
17
17
|
export type { MessageDeltaApplication } from "./applyMessageDelta.js";
|
|
18
18
|
export * from "./requestOptions.js";
|
|
19
|
+
export * from "./happyFileLinks.js";
|
|
19
20
|
export * from "./happyReferences.js";
|
|
20
21
|
export * from "./protocol/agents.js";
|
|
21
22
|
export * from "./protocol/artifacts.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EACR,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACR,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,GACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACH,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,WAAW,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AAErC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EACR,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACR,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,GACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACH,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,WAAW,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AAErC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@ export { beginOAuthSignIn, completeOAuthSignIn, refreshOAuthCredential, } from "
|
|
|
8
8
|
export { endpointUrl } from "./endpointUrl.js";
|
|
9
9
|
export { applyMessageDelta } from "./applyMessageDelta.js";
|
|
10
10
|
export * from "./requestOptions.js";
|
|
11
|
+
export * from "./happyFileLinks.js";
|
|
11
12
|
export * from "./happyReferences.js";
|
|
12
13
|
export * from "./protocol/agents.js";
|
|
13
14
|
export * from "./protocol/artifacts.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAajD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACH,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,GAIzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AAErC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAajD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACH,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,GAIzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AAErC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The parts of Markdown where inline syntax is live: outside fenced code, and outside code spans.
|
|
3
|
+
* Reference tags and file links both scan with these, so they agree on what is code.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The runs of Markdown that are neither fenced code nor blank lines, each including its line
|
|
7
|
+
* endings. A code span cannot cross a blank line, so each run bounds the spans inside it. A fence
|
|
8
|
+
* without a closing line runs to the end, which is also how a streaming fence reads.
|
|
9
|
+
*/
|
|
10
|
+
export declare function textBlocks(markdown: string): {
|
|
11
|
+
start: number;
|
|
12
|
+
end: number;
|
|
13
|
+
}[];
|
|
14
|
+
/**
|
|
15
|
+
* Skips a code span that opens at `start`, returning the index after it. Backticks with no
|
|
16
|
+
* closing run of the same length are literal, except at the end of streaming text, where the
|
|
17
|
+
* closing run may still arrive and everything after the opening run reads as code.
|
|
18
|
+
*/
|
|
19
|
+
export declare function skipCodeSpan(markdown: string, start: number, end: number, open: boolean): number;
|
|
20
|
+
//# sourceMappingURL=markdownBlocks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownBlocks.d.ts","sourceRoot":"","sources":["../sources/markdownBlocks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CA8B7E;AAOD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAWhG"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The parts of Markdown where inline syntax is live: outside fenced code, and outside code spans.
|
|
3
|
+
* Reference tags and file links both scan with these, so they agree on what is code.
|
|
4
|
+
*/
|
|
5
|
+
const FENCE_OPEN = /^[ \t]*(?:>[ \t]?)*[ \t]*(`{3,}|~{3,})(.*)$/;
|
|
6
|
+
const BLANK_LINE = /^[ \t\r]*$/;
|
|
7
|
+
/**
|
|
8
|
+
* The runs of Markdown that are neither fenced code nor blank lines, each including its line
|
|
9
|
+
* endings. A code span cannot cross a blank line, so each run bounds the spans inside it. A fence
|
|
10
|
+
* without a closing line runs to the end, which is also how a streaming fence reads.
|
|
11
|
+
*/
|
|
12
|
+
export function textBlocks(markdown) {
|
|
13
|
+
const blocks = [];
|
|
14
|
+
let blockStart;
|
|
15
|
+
let fence;
|
|
16
|
+
let lineStart = 0;
|
|
17
|
+
while (lineStart < markdown.length) {
|
|
18
|
+
const newline = markdown.indexOf("\n", lineStart);
|
|
19
|
+
const lineEnd = newline === -1 ? markdown.length : newline + 1;
|
|
20
|
+
const line = markdown.slice(lineStart, newline === -1 ? markdown.length : newline);
|
|
21
|
+
if (fence !== undefined) {
|
|
22
|
+
if (isFenceClose(line, fence))
|
|
23
|
+
fence = undefined;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
const open = FENCE_OPEN.exec(line);
|
|
27
|
+
const marker = open?.[1];
|
|
28
|
+
const info = open?.[2] ?? "";
|
|
29
|
+
if (marker !== undefined && !(marker.startsWith("`") && info.includes("`"))) {
|
|
30
|
+
if (blockStart !== undefined)
|
|
31
|
+
blocks.push({ start: blockStart, end: lineStart });
|
|
32
|
+
blockStart = undefined;
|
|
33
|
+
fence = { marker: marker.charAt(0), length: marker.length };
|
|
34
|
+
}
|
|
35
|
+
else if (BLANK_LINE.test(line)) {
|
|
36
|
+
if (blockStart !== undefined)
|
|
37
|
+
blocks.push({ start: blockStart, end: lineStart });
|
|
38
|
+
blockStart = undefined;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
blockStart ??= lineStart;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
lineStart = lineEnd;
|
|
45
|
+
}
|
|
46
|
+
if (blockStart !== undefined)
|
|
47
|
+
blocks.push({ start: blockStart, end: markdown.length });
|
|
48
|
+
return blocks;
|
|
49
|
+
}
|
|
50
|
+
function isFenceClose(line, fence) {
|
|
51
|
+
const close = /^[ \t]*(?:>[ \t]?)*[ \t]*(`+|~+)[ \t\r]*$/.exec(line)?.[1];
|
|
52
|
+
return close !== undefined && close.charAt(0) === fence.marker && close.length >= fence.length;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Skips a code span that opens at `start`, returning the index after it. Backticks with no
|
|
56
|
+
* closing run of the same length are literal, except at the end of streaming text, where the
|
|
57
|
+
* closing run may still arrive and everything after the opening run reads as code.
|
|
58
|
+
*/
|
|
59
|
+
export function skipCodeSpan(markdown, start, end, open) {
|
|
60
|
+
const length = runLength(markdown, start, "`");
|
|
61
|
+
let index = start + length;
|
|
62
|
+
while (index < end) {
|
|
63
|
+
const next = markdown.indexOf("`", index);
|
|
64
|
+
if (next === -1 || next >= end)
|
|
65
|
+
break;
|
|
66
|
+
const closing = runLength(markdown, next, "`");
|
|
67
|
+
if (closing === length)
|
|
68
|
+
return next + closing;
|
|
69
|
+
index = next + closing;
|
|
70
|
+
}
|
|
71
|
+
return open ? end : start + length;
|
|
72
|
+
}
|
|
73
|
+
function runLength(text, start, character) {
|
|
74
|
+
let index = start;
|
|
75
|
+
while (text[index] === character)
|
|
76
|
+
index += 1;
|
|
77
|
+
return index - start;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=markdownBlocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownBlocks.js","sourceRoot":"","sources":["../sources/markdownBlocks.ts"],"names":[],"mappings":"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"}
|