@the-focus-ai/artifacts 1.2.0 → 1.2.1

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 (41) hide show
  1. package/README.md +13 -2
  2. package/dist/src/cli.d.ts.map +1 -1
  3. package/dist/src/cli.js +31 -3
  4. package/dist/src/cli.js.map +1 -1
  5. package/dist/src/doc-asset-collect.d.ts +29 -0
  6. package/dist/src/doc-asset-collect.d.ts.map +1 -0
  7. package/dist/src/doc-asset-collect.js +112 -0
  8. package/dist/src/doc-asset-collect.js.map +1 -0
  9. package/dist/src/doc-asset-rewrite.d.ts +6 -0
  10. package/dist/src/doc-asset-rewrite.d.ts.map +1 -0
  11. package/dist/src/doc-asset-rewrite.js +15 -0
  12. package/dist/src/doc-asset-rewrite.js.map +1 -0
  13. package/dist/src/front-matter.d.ts +36 -0
  14. package/dist/src/front-matter.d.ts.map +1 -0
  15. package/dist/src/front-matter.js +105 -0
  16. package/dist/src/front-matter.js.map +1 -0
  17. package/dist/src/http.d.ts +3 -0
  18. package/dist/src/http.d.ts.map +1 -1
  19. package/dist/src/http.js +41 -0
  20. package/dist/src/http.js.map +1 -1
  21. package/dist/src/index.d.ts +4 -0
  22. package/dist/src/index.d.ts.map +1 -1
  23. package/dist/src/index.js +4 -0
  24. package/dist/src/index.js.map +1 -1
  25. package/dist/src/living-doc.d.ts +24 -3
  26. package/dist/src/living-doc.d.ts.map +1 -1
  27. package/dist/src/living-doc.js +113 -23
  28. package/dist/src/living-doc.js.map +1 -1
  29. package/dist/src/remote-api.d.ts +8 -0
  30. package/dist/src/remote-api.d.ts.map +1 -1
  31. package/dist/src/remote-api.js +5 -1
  32. package/dist/src/remote-api.js.map +1 -1
  33. package/dist/src/storage/doc-asset-content.d.ts +55 -0
  34. package/dist/src/storage/doc-asset-content.d.ts.map +1 -0
  35. package/dist/src/storage/doc-asset-content.js +145 -0
  36. package/dist/src/storage/doc-asset-content.js.map +1 -0
  37. package/dist/src/storage/living-doc-metadata.d.ts +9 -3
  38. package/dist/src/storage/living-doc-metadata.d.ts.map +1 -1
  39. package/dist/src/storage/living-doc-metadata.js +25 -9
  40. package/dist/src/storage/living-doc-metadata.js.map +1 -1
  41. package/package.json +9 -2
package/README.md CHANGED
@@ -31,6 +31,14 @@ See [docs/deploy.md](docs/deploy.md) for Vercel project, custom domain, pull-req
31
31
 
32
32
  Use Artifacts when an agent has produced a local HTML file or static directory and needs to return a URL instead of attaching files or asking a human to set up hosting.
33
33
 
34
+ Install the agent skill (recommended for coding agents):
35
+
36
+ ```bash
37
+ npx skills add The-Focus-AI/artifacts.thefocus.ai --skill artifacts -g
38
+ ```
39
+
40
+ The hosted skill is published at [https://artifacts.thefocus.ai/skill.md](https://artifacts.thefocus.ai/skill.md). The canonical in-repo copy lives at `skills/artifacts/SKILL.md` and must stay identical to `public/skill.md`.
41
+
34
42
  Install/run the CLI through npm or the repo-local script:
35
43
 
36
44
  ```bash
@@ -97,12 +105,15 @@ Packaging applies built-in safety rules before upload: obvious secret, dependenc
97
105
 
98
106
  A **Living Doc** is a collaborative Markdown document an agent publishes so a human can edit it and comment on it, then the agent pulls that feedback back to continue the work. Unlike a Publication (read-only, static), a Living Doc is mutable and two-party. See [docs/adr/0005-living-docs-agent-human-review-loop.md](docs/adr/0005-living-docs-agent-human-review-loop.md) for the design and [CONTEXT.md](CONTEXT.md) for the vocabulary.
99
107
 
100
- Publishing a Living Doc returns two URLs: a read-only **View Link** (`/d/{opaque}`) and a capability **Review Link** (`/r/{review}`). Hand the Review Link to whoever should give feedback — no login required. They edit the Markdown and leave span-anchored Comments in a CodeMirror editor; edits autosave continuously.
108
+ Publishing a Living Doc returns two URLs: a read-only **View Link** (`/d/{opaque}`) and a capability **Review Link** (`/r/{review}`). Hand the Review Link to whoever should give feedback — no login required. The Review Link opens a WYSIWYG editor (Tiptap) where the Reviewer edits the rendered document directly; edits autosave continuously as Markdown. Selecting text pops up an inline Comment button, and pending agent Suggestions render in the document as tracked changes (strikethrough original, replacement alongside, accept/reject buttons), falling back to sidebar cards when a Suggestion's anchor spans multiple blocks.
109
+
110
+ **YAML front matter is part of the Living Doc.** `doc publish` uploads the file as-is (including a leading `---` … `---` block). Image rewrite and Doc Asset upload never strip front matter. Prefer a `title:` field there when the file has one; `--title` still overrides. The View Link renders the Markdown body only so fences are not shown as horizontal rules — the stored Markdown and `doc pull` output keep the front matter intact.
101
111
 
102
112
  The agent drives the loop through `artifacts doc` subcommands, which print JSON:
103
113
 
104
114
  ```bash
105
- # Publish a Markdown file; prints { opaqueId, reviewId, viewUrl, reviewUrl, title }
115
+ # Publish a Markdown file (front matter preserved); prints
116
+ # { opaqueId, reviewId, viewUrl, reviewUrl, title }
106
117
  THEFOCUS_ARTIFACTS_TOKEN=tfai_pub_... \
107
118
  fnox exec -- pnpm artifacts doc publish ./proposal.md --title "Proposal"
108
119
 
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAQA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,WAAW,CAAC;AAQnB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAOL,KAAK,uBAAuB,EAC7B,MAAM,kBAAkB,CAAC;AAM1B,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,mCAAmC,CAAC;AAE3C,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,aAAa,CAAC,EAAE,wBAAwB,CAAC;IACzC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAC1B,iBAAiB,CAAC,EAAE,CAClB,cAAc,EAAE,MAAM,KACnB,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC9C,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACnC;AAED,wBAAsB,MAAM,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,YAAY,GAAE,eAAoB,GACjC,OAAO,CAAC,MAAM,CAAC,CA0NjB"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAQA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,WAAW,CAAC;AAQnB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAOL,KAAK,uBAAuB,EAC7B,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,mCAAmC,CAAC;AAE3C,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,aAAa,CAAC,EAAE,wBAAwB,CAAC;IACzC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAC1B,iBAAiB,CAAC,EAAE,CAClB,cAAc,EAAE,MAAM,KACnB,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC9C,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACnC;AAED,wBAAsB,MAAM,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,YAAY,GAAE,eAAoB,GACjC,OAAO,CAAC,MAAM,CAAC,CA0NjB"}
package/dist/src/cli.js CHANGED
@@ -8,7 +8,7 @@ import { authenticatePublisherToken, createNeonPublisherTokenStore, } from "./au
8
8
  import { clearLocalPublisherConfig, defaultConfigDir, FilePublicationStateStore, resolvePublisherToken, writeLocalPublisherConfig, } from "./local-config.js";
9
9
  import { loginWithBrowserFlow, openDefaultBrowser } from "./login-flow.js";
10
10
  import { absolutePublicationUrl, defaultPublicBaseUrl, publishArtifactFromEnvironment, publishArtifactSummary, removePublicationFromEnvironment, removePublicationSummary, } from "./publication.js";
11
- import { opaqueIdFromViewReference, } from "./living-doc.js";
11
+ import { collectDocAssets, contentTypeForDocAssetPath, opaqueIdFromViewReference, readCollectedDocAsset, } from "./living-doc.js";
12
12
  import { HttpArtifactApiClient, HttpLivingDocApiClient, } from "./remote-api.js";
13
13
  export async function runCli(argv, dependencies = {}) {
14
14
  const [command, firstArg, ...flags] = argv;
@@ -202,10 +202,38 @@ async function runDocCommand(subcommand, target, context) {
202
202
  if (subcommand === "publish") {
203
203
  if (!target)
204
204
  throw new Error("doc publish requires a Markdown file path.");
205
- const markdown = await readFile(target, "utf-8");
205
+ const markdownPath = await realpath(target);
206
+ const markdown = await readFile(markdownPath, "utf-8");
207
+ const force = options.force === "true";
208
+ const collected = await collectDocAssets({
209
+ markdown,
210
+ markdownPath,
211
+ force,
212
+ });
213
+ const bytesByAssetPath = new Map();
214
+ const assets = [];
215
+ for (const asset of collected.assets) {
216
+ let data = bytesByAssetPath.get(asset.assetPath);
217
+ if (!data) {
218
+ data = (await readCollectedDocAsset(asset)).toString("base64");
219
+ bytesByAssetPath.set(asset.assetPath, data);
220
+ }
221
+ assets.push({
222
+ relativeRef: asset.relativeRef,
223
+ assetPath: asset.assetPath,
224
+ data,
225
+ contentType: contentTypeForDocAssetPath(asset.assetPath),
226
+ });
227
+ }
206
228
  const result = await client.publishDoc(token.token, markdown, {
207
229
  title: options.title,
230
+ assets,
208
231
  });
232
+ if (collected.missing.length > 0) {
233
+ context.stderr.write(`Warning: skipped missing Doc Assets (--force):\n${collected.missing
234
+ .map((path) => ` - ${path}`)
235
+ .join("\n")}\n`);
236
+ }
209
237
  stdout.write(`${JSON.stringify(result, null, 2)}\n`);
210
238
  return 0;
211
239
  }
@@ -349,7 +377,7 @@ function printUsage(output) {
349
377
  " npx @the-focus-ai/artifacts list [--base-url https://artifacts.thefocus.ai]\n" +
350
378
  " npx @the-focus-ai/artifacts whoami [--base-url https://artifacts.thefocus.ai]\n" +
351
379
  " npx @the-focus-ai/artifacts logout\n" +
352
- ' npx @the-focus-ai/artifacts doc publish <file.md> [--title "My Doc"] [--base-url ...]\n' +
380
+ ' npx @the-focus-ai/artifacts doc publish <file.md> [--title "My Doc"] [--force] [--base-url ...]\n' +
353
381
  " npx @the-focus-ai/artifacts doc pull <Living Doc View URL or id> [--base-url ...]\n" +
354
382
  " npx @the-focus-ai/artifacts doc respond <Living Doc View URL or id> [--body feedback.json] [--base-url ...]\n" +
355
383
  " npx @the-focus-ai/artifacts doc list [--base-url ...]\n" +
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export declare const maxDocAssetFileBytes: number;
2
+ export declare const maxDocAssetTotalBytes: number;
3
+ export declare const maxDocAssetFileCount = 1000;
4
+ export interface CollectedDocAsset {
5
+ /** Exact path string from the Markdown image target. */
6
+ relativeRef: string;
7
+ absolutePath: string;
8
+ /** Hosted path under /d/{opaqueId}/… (no `..` segments). */
9
+ assetPath: string;
10
+ size: number;
11
+ }
12
+ export interface CollectDocAssetsResult {
13
+ assets: CollectedDocAsset[];
14
+ missing: string[];
15
+ }
16
+ export interface CollectDocAssetsInput {
17
+ markdown: string;
18
+ markdownPath: string;
19
+ force?: boolean;
20
+ }
21
+ /**
22
+ * Find relative Markdown image refs and resolve them on disk for Doc Asset upload.
23
+ */
24
+ export declare function collectDocAssets(input: CollectDocAssetsInput): Promise<CollectDocAssetsResult>;
25
+ export declare function extractRelativeImageRefs(markdown: string): string[];
26
+ /** Encode a filesystem-relative path as a URL-safe assetPath (no `..`). */
27
+ export declare function toHostedAssetPath(markdownDir: string, absoluteFilePath: string): string;
28
+ export declare function readCollectedDocAsset(asset: CollectedDocAsset): Promise<Buffer>;
29
+ //# sourceMappingURL=doc-asset-collect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-asset-collect.d.ts","sourceRoot":"","sources":["../../src/doc-asset-collect.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,oBAAoB,QAAmB,CAAC;AACrD,eAAO,MAAM,qBAAqB,QAAoB,CAAC;AACvD,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAazC,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CA6FjC;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CASnE;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAUR;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,MAAM,CAAC,CAEjB"}
@@ -0,0 +1,112 @@
1
+ import { lstat, readFile } from "node:fs/promises";
2
+ import { dirname, extname, isAbsolute, relative, resolve, sep, } from "node:path";
3
+ export const maxDocAssetFileBytes = 25 * 1024 * 1024;
4
+ export const maxDocAssetTotalBytes = 100 * 1024 * 1024;
5
+ export const maxDocAssetFileCount = 1000;
6
+ const imageExtensions = new Set([
7
+ ".png",
8
+ ".jpg",
9
+ ".jpeg",
10
+ ".gif",
11
+ ".webp",
12
+ ".svg",
13
+ ]);
14
+ const markdownImageRefRe = /!\[[^\]]*]\(([^)\s]+)(?:\s+"[^"]*")?\)/g;
15
+ /**
16
+ * Find relative Markdown image refs and resolve them on disk for Doc Asset upload.
17
+ */
18
+ export async function collectDocAssets(input) {
19
+ const markdownDir = dirname(resolve(input.markdownPath));
20
+ const refs = [...new Set(extractRelativeImageRefs(input.markdown))];
21
+ const assets = [];
22
+ const missing = [];
23
+ const seenAssetPaths = new Set();
24
+ for (const relativeRef of refs) {
25
+ if (isAbsolute(relativeRef) || /^[a-zA-Z]:[\\/]/.test(relativeRef)) {
26
+ throw new Error(`Doc Asset path must be relative (got absolute path: ${relativeRef})`);
27
+ }
28
+ const absolutePath = resolve(markdownDir, relativeRef);
29
+ let stats;
30
+ try {
31
+ stats = await lstat(absolutePath);
32
+ }
33
+ catch {
34
+ missing.push(relativeRef);
35
+ continue;
36
+ }
37
+ if (stats.isSymbolicLink()) {
38
+ throw new Error(`Doc Asset symlinks are not supported: ${relativeRef}`);
39
+ }
40
+ if (!stats.isFile()) {
41
+ missing.push(relativeRef);
42
+ continue;
43
+ }
44
+ const ext = extname(absolutePath).toLowerCase();
45
+ if (!imageExtensions.has(ext)) {
46
+ throw new Error(`Doc Asset must be an image file (got ${ext || "no extension"}): ${relativeRef}`);
47
+ }
48
+ if (stats.size > maxDocAssetFileBytes) {
49
+ throw new Error(`Doc Asset ${relativeRef} exceeds the 25 MB single-file limit.`);
50
+ }
51
+ const assetPath = toHostedAssetPath(markdownDir, absolutePath);
52
+ if (seenAssetPaths.has(assetPath)) {
53
+ // Same file via another ref — keep first mapping; rewrite handles both refs.
54
+ assets.push({
55
+ relativeRef,
56
+ absolutePath,
57
+ assetPath,
58
+ size: stats.size,
59
+ });
60
+ continue;
61
+ }
62
+ seenAssetPaths.add(assetPath);
63
+ assets.push({
64
+ relativeRef,
65
+ absolutePath,
66
+ assetPath,
67
+ size: stats.size,
68
+ });
69
+ }
70
+ const uniqueFiles = new Map();
71
+ for (const asset of assets) {
72
+ uniqueFiles.set(asset.assetPath, asset);
73
+ }
74
+ if (uniqueFiles.size > maxDocAssetFileCount) {
75
+ throw new Error(`Living Doc has ${uniqueFiles.size} Doc Assets and exceeds the 1,000 file limit.`);
76
+ }
77
+ const totalSize = [...uniqueFiles.values()].reduce((sum, file) => sum + file.size, 0);
78
+ if (totalSize > maxDocAssetTotalBytes) {
79
+ throw new Error(`Living Doc Doc Assets total size exceeds the 100 MB total limit.`);
80
+ }
81
+ if (missing.length > 0 && !input.force) {
82
+ throw new Error(`Missing Doc Asset file(s):\n${missing.map((path) => ` - ${path}`).join("\n")}\nRe-run with --force to publish without them.`);
83
+ }
84
+ const present = assets.filter((asset) => !missing.includes(asset.relativeRef));
85
+ return { assets: present, missing };
86
+ }
87
+ export function extractRelativeImageRefs(markdown) {
88
+ const refs = [];
89
+ for (const match of markdown.matchAll(markdownImageRefRe)) {
90
+ const target = match[1]?.trim();
91
+ if (!target)
92
+ continue;
93
+ if (/^(https?:|data:|mailto:|#)/i.test(target))
94
+ continue;
95
+ refs.push(target);
96
+ }
97
+ return refs;
98
+ }
99
+ /** Encode a filesystem-relative path as a URL-safe assetPath (no `..`). */
100
+ export function toHostedAssetPath(markdownDir, absoluteFilePath) {
101
+ const rel = relative(markdownDir, absoluteFilePath);
102
+ const segments = rel.split(sep).filter((segment) => segment.length > 0);
103
+ const encoded = segments.map((segment) => segment === ".." ? "__parent__" : segment);
104
+ if (encoded.length === 0 || encoded.some((s) => s === ".")) {
105
+ throw new Error(`Could not derive Doc Asset path for ${absoluteFilePath}`);
106
+ }
107
+ return encoded.join("/");
108
+ }
109
+ export async function readCollectedDocAsset(asset) {
110
+ return readFile(asset.absolutePath);
111
+ }
112
+ //# sourceMappingURL=doc-asset-collect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-asset-collect.js","sourceRoot":"","sources":["../../src/doc-asset-collect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Rewrite Markdown image targets using an exact relativeRef → hosted URL map.
3
+ * Leaves http(s)/data/mailto/# targets alone (they never appear in the map).
4
+ */
5
+ export declare function rewriteDocAssetMarkdown(markdown: string, refToHostedUrl: Map<string, string>): string;
6
+ //# sourceMappingURL=doc-asset-rewrite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-asset-rewrite.d.ts","sourceRoot":"","sources":["../../src/doc-asset-rewrite.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,MAAM,CAUR"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Rewrite Markdown image targets using an exact relativeRef → hosted URL map.
3
+ * Leaves http(s)/data/mailto/# targets alone (they never appear in the map).
4
+ */
5
+ export function rewriteDocAssetMarkdown(markdown, refToHostedUrl) {
6
+ if (refToHostedUrl.size === 0)
7
+ return markdown;
8
+ return markdown.replace(/(!\[[^\]]*]\()([^)\s]+)((?:\s+"[^"]*")?\))/g, (full, prefix, target, suffix) => {
9
+ const hosted = refToHostedUrl.get(target.trim());
10
+ if (!hosted)
11
+ return full;
12
+ return `${prefix}${hosted}${suffix}`;
13
+ });
14
+ }
15
+ //# sourceMappingURL=doc-asset-rewrite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-asset-rewrite.js","sourceRoot":"","sources":["../../src/doc-asset-rewrite.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAgB,EAChB,cAAmC;IAEnC,IAAI,cAAc,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC/C,OAAO,QAAQ,CAAC,OAAO,CACrB,6CAA6C,EAC7C,CAAC,IAAI,EAAE,MAAc,EAAE,MAAc,EAAE,MAAc,EAAE,EAAE;QACvD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;IACvC,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,36 @@
1
+ export interface SplitFrontMatter {
2
+ /** Raw YAML between the opening/closing `---` fences, or null if none. */
3
+ matter: string | null;
4
+ body: string;
5
+ }
6
+ /**
7
+ * Split Markdown into optional YAML front matter and the body.
8
+ * Preserves the exact matter text so editors can round-trip without reformat.
9
+ */
10
+ export declare function splitFrontMatter(markdown: string): SplitFrontMatter;
11
+ /**
12
+ * Reassemble Markdown from optional front matter and body.
13
+ * Empty/whitespace-only matter drops the fences entirely.
14
+ */
15
+ export declare function joinFrontMatter(matter: string | null, body: string): string;
16
+ /** Parse front-matter YAML into a plain object, or null if missing/invalid. */
17
+ export declare function parseFrontMatterData(matter: string | null): Record<string, unknown> | null;
18
+ /** Prefer a string `title` from front matter when present. */
19
+ export declare function titleFromFrontMatter(matter: string | null): string | null;
20
+ /**
21
+ * Title for a Living Doc: front-matter `title`, else first heading/line in the
22
+ * body (front matter itself is never used as the title).
23
+ */
24
+ export declare function deriveMarkdownTitle(markdown: string): string | null;
25
+ /** Body only — safe to feed to markdown-it / TipTap. */
26
+ export declare function markdownBody(markdown: string): string;
27
+ /** Serialize a plain object back to YAML suitable for front-matter fences. */
28
+ export declare function serializeFrontMatterData(data: Record<string, unknown>): string;
29
+ /**
30
+ * Parse a single field value from the front-matter editor.
31
+ * Prefer YAML scalars/collections; fall back to the raw string.
32
+ */
33
+ export declare function parseFrontMatterFieldValue(raw: string): unknown;
34
+ /** Format a value for display in a single-line field editor. */
35
+ export declare function formatFrontMatterFieldValue(value: unknown): string;
36
+ //# sourceMappingURL=front-matter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"front-matter.d.ts","sourceRoot":"","sources":["../../src/front-matter.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAInE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAM3E;AAED,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAWhC;AAED,8DAA8D;AAC9D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAOzE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWnE;AAED,wDAAwD;AACxD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,8EAA8E;AAC9E,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAER;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQ/D;AAED,gEAAgE;AAChE,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAOlE"}
@@ -0,0 +1,105 @@
1
+ import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
2
+ // Opening fence at the start of the file, then YAML, then a closing fence.
3
+ const FRONT_MATTER_RE = /^---[ \t]*\r?\n([\s\S]*?)\r?\n---[ \t]*(?:\r?\n|$)([\s\S]*)$/;
4
+ /**
5
+ * Split Markdown into optional YAML front matter and the body.
6
+ * Preserves the exact matter text so editors can round-trip without reformat.
7
+ */
8
+ export function splitFrontMatter(markdown) {
9
+ const match = markdown.match(FRONT_MATTER_RE);
10
+ if (!match)
11
+ return { matter: null, body: markdown };
12
+ return { matter: match[1], body: match[2] ?? "" };
13
+ }
14
+ /**
15
+ * Reassemble Markdown from optional front matter and body.
16
+ * Empty/whitespace-only matter drops the fences entirely.
17
+ */
18
+ export function joinFrontMatter(matter, body) {
19
+ if (matter === null)
20
+ return body;
21
+ const trimmed = matter.replace(/^\uFEFF/, "").replace(/\s+$/, "");
22
+ if (trimmed.length === 0)
23
+ return body;
24
+ const bodyPart = body.replace(/^\r?\n/, "");
25
+ return `---\n${trimmed}\n---\n${bodyPart}`;
26
+ }
27
+ /** Parse front-matter YAML into a plain object, or null if missing/invalid. */
28
+ export function parseFrontMatterData(matter) {
29
+ if (matter === null)
30
+ return null;
31
+ try {
32
+ const data = parseYaml(matter);
33
+ if (data && typeof data === "object" && !Array.isArray(data)) {
34
+ return data;
35
+ }
36
+ return null;
37
+ }
38
+ catch {
39
+ return null;
40
+ }
41
+ }
42
+ /** Prefer a string `title` from front matter when present. */
43
+ export function titleFromFrontMatter(matter) {
44
+ const data = parseFrontMatterData(matter);
45
+ if (!data)
46
+ return null;
47
+ const title = data.title;
48
+ if (typeof title !== "string")
49
+ return null;
50
+ const trimmed = title.trim();
51
+ return trimmed.length > 0 ? trimmed.slice(0, 200) : null;
52
+ }
53
+ /**
54
+ * Title for a Living Doc: front-matter `title`, else first heading/line in the
55
+ * body (front matter itself is never used as the title).
56
+ */
57
+ export function deriveMarkdownTitle(markdown) {
58
+ const { matter, body } = splitFrontMatter(markdown);
59
+ const fromMatter = titleFromFrontMatter(matter);
60
+ if (fromMatter)
61
+ return fromMatter;
62
+ for (const line of body.split("\n")) {
63
+ const heading = line.match(/^#{1,6}\s+(.+?)\s*$/);
64
+ if (heading)
65
+ return heading[1].slice(0, 200);
66
+ if (line.trim().length > 0)
67
+ return line.trim().slice(0, 200);
68
+ }
69
+ return null;
70
+ }
71
+ /** Body only — safe to feed to markdown-it / TipTap. */
72
+ export function markdownBody(markdown) {
73
+ return splitFrontMatter(markdown).body;
74
+ }
75
+ /** Serialize a plain object back to YAML suitable for front-matter fences. */
76
+ export function serializeFrontMatterData(data) {
77
+ return stringifyYaml(data, { lineWidth: 0 }).replace(/\n$/, "");
78
+ }
79
+ /**
80
+ * Parse a single field value from the front-matter editor.
81
+ * Prefer YAML scalars/collections; fall back to the raw string.
82
+ */
83
+ export function parseFrontMatterFieldValue(raw) {
84
+ const trimmed = raw.trim();
85
+ if (trimmed.length === 0)
86
+ return "";
87
+ try {
88
+ return parseYaml(trimmed);
89
+ }
90
+ catch {
91
+ return raw;
92
+ }
93
+ }
94
+ /** Format a value for display in a single-line field editor. */
95
+ export function formatFrontMatterFieldValue(value) {
96
+ if (value === null || value === undefined)
97
+ return "";
98
+ if (typeof value === "string")
99
+ return value;
100
+ if (typeof value === "number" || typeof value === "boolean") {
101
+ return String(value);
102
+ }
103
+ return stringifyYaml(value, { lineWidth: 0 }).replace(/\n$/, "");
104
+ }
105
+ //# sourceMappingURL=front-matter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"front-matter.js","sourceRoot":"","sources":["../../src/front-matter.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  import type { IncomingMessage, ServerResponse } from "node:http";
2
+ import { type ServeLivingDocViewInput } from "./living-doc.js";
2
3
  import { type ServePublicationInput } from "./publication.js";
3
4
  export declare function writeWebResponseToNodeResponse(webResponse: Response, nodeResponse: ServerResponse): Promise<void>;
4
5
  export declare function servePublicationNodeRequest(nodeRequest: IncomingMessage, nodeResponse: ServerResponse, dependencies: Omit<ServePublicationInput, "request">): Promise<void>;
6
+ export declare function serveLivingDocViewNodeRequest(nodeRequest: IncomingMessage, nodeResponse: ServerResponse, dependencies: Omit<ServeLivingDocViewInput, "request">): Promise<void>;
5
7
  export declare function nodeRequestToWebRequest(request: IncomingMessage): Promise<Request>;
6
8
  export declare function nodeRequestUrl(request: IncomingMessage): string;
7
9
  export declare function publicationRequestUrl(request: IncomingMessage): string;
10
+ export declare function livingDocViewRequestUrl(request: IncomingMessage): string;
8
11
  //# sourceMappingURL=http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,kBAAkB,CAAC;AAE1B,wBAAsB,8BAA8B,CAClD,WAAW,EAAE,QAAQ,EACrB,YAAY,EAAE,cAAc,GAC3B,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,eAAe,EAC5B,YAAY,EAAE,cAAc,EAC5B,YAAY,EAAE,IAAI,CAAC,qBAAqB,EAAE,SAAS,CAAC,GACnD,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAOlB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAI/D;AAWD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAKtE"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,kBAAkB,CAAC;AAE1B,wBAAsB,8BAA8B,CAClD,WAAW,EAAE,QAAQ,EACrB,YAAY,EAAE,cAAc,GAC3B,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,eAAe,EAC5B,YAAY,EAAE,cAAc,EAC5B,YAAY,EAAE,IAAI,CAAC,qBAAqB,EAAE,SAAS,CAAC,GACnD,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,6BAA6B,CACjD,WAAW,EAAE,eAAe,EAC5B,YAAY,EAAE,cAAc,EAC5B,YAAY,EAAE,IAAI,CAAC,uBAAuB,EAAE,SAAS,CAAC,GACrD,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAOlB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAI/D;AAWD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAKtE;AA2CD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAMxE"}
package/dist/src/http.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { serveLivingDocViewRequest, } from "./living-doc.js";
1
2
  import { servePublicationRequest, } from "./publication.js";
2
3
  export async function writeWebResponseToNodeResponse(webResponse, nodeResponse) {
3
4
  nodeResponse.statusCode = webResponse.status;
@@ -21,6 +22,17 @@ export async function servePublicationNodeRequest(nodeRequest, nodeResponse, dep
21
22
  });
22
23
  await writeWebResponseToNodeResponse(response, nodeResponse);
23
24
  }
25
+ export async function serveLivingDocViewNodeRequest(nodeRequest, nodeResponse, dependencies) {
26
+ const request = new Request(livingDocViewRequestUrl(nodeRequest), {
27
+ method: nodeRequest.method,
28
+ headers: nodeRequest.headers,
29
+ });
30
+ const response = await serveLivingDocViewRequest({
31
+ request,
32
+ ...dependencies,
33
+ });
34
+ await writeWebResponseToNodeResponse(response, nodeResponse);
35
+ }
24
36
  export async function nodeRequestToWebRequest(request) {
25
37
  const body = await readNodeRequestBody(request);
26
38
  return new Request(nodeRequestUrl(request), {
@@ -80,4 +92,33 @@ function queryPathFromVercelCatchAll(path) {
80
92
  function isString(value) {
81
93
  return typeof value === "string";
82
94
  }
95
+ export function livingDocViewRequestUrl(request) {
96
+ const host = request.headers.host ?? "localhost";
97
+ const protocol = request.headers["x-forwarded-proto"] ?? "https";
98
+ const viewPath = livingDocPathFromVercelRequest(request);
99
+ const search = new URL(request.url ?? "/", "https://localhost").search;
100
+ return `${protocol}://${host}/d/${viewPath}${search}`;
101
+ }
102
+ function livingDocPathFromVercelRequest(request) {
103
+ const queryOpaque = request.query?.opaque;
104
+ const queryPath = request.query?.path;
105
+ if (typeof queryOpaque === "string") {
106
+ return [queryOpaque, queryPathFromVercelCatchAll(queryPath)]
107
+ .filter(Boolean)
108
+ .join("/");
109
+ }
110
+ if (Array.isArray(queryOpaque) && typeof queryOpaque[0] === "string") {
111
+ return [queryOpaque[0], queryPathFromVercelCatchAll(queryPath)]
112
+ .filter(Boolean)
113
+ .join("/");
114
+ }
115
+ const pathname = new URL(request.url ?? "/", "https://localhost").pathname;
116
+ const apiPrefix = "/api/d/";
117
+ if (pathname.startsWith(apiPrefix))
118
+ return pathname.slice(apiPrefix.length);
119
+ const publicPrefix = "/d/";
120
+ if (pathname.startsWith(publicPrefix))
121
+ return pathname.slice(publicPrefix.length);
122
+ return pathname.split("/").filter(Boolean).at(-1) ?? "";
123
+ }
83
124
  //# sourceMappingURL=http.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"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"}