@the-focus-ai/artifacts 1.1.0 → 1.2.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 CHANGED
@@ -92,3 +92,39 @@ pnpm artifacts logout
92
92
  Packaging applies built-in safety rules before upload: obvious secret, dependency, cache, and hidden paths are excluded by default, except `.well-known/`; `.gitignore` is not read in v1; symlinks are rejected; and preflight fails before upload if any file exceeds 25 MB, total Artifact size exceeds 100 MB, or the Artifact has more than 1,000 files. Exclusion output is concise by default; add `--verbose` to print excluded paths.
93
93
 
94
94
  `ARTIFACTS_PUBLIC_BASE_URL` defaults to `https://artifacts.thefocus.ai`; set it only when publishing against a Vercel Preview or another host that serves this app. Published Artifacts are served by the Vercel rewrite from `/a/{opaque}` and nested `/a/{opaque}/{path}` URLs to the API functions with `Cache-Control: no-store` and `X-Robots-Tag: noindex, nofollow` headers.
95
+
96
+ ## Living Docs
97
+
98
+ 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
+
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.
101
+
102
+ The agent drives the loop through `artifacts doc` subcommands, which print JSON:
103
+
104
+ ```bash
105
+ # Publish a Markdown file; prints { opaqueId, reviewId, viewUrl, reviewUrl, title }
106
+ THEFOCUS_ARTIFACTS_TOKEN=tfai_pub_... \
107
+ fnox exec -- pnpm artifacts doc publish ./proposal.md --title "Proposal"
108
+
109
+ # Pull feedback. Cuts an immutable Version and prints the current Markdown,
110
+ # a diff versus the previous Version, and open reviewer Comments.
111
+ pnpm artifacts doc pull https://artifacts.thefocus.ai/d/Ab3xY9kQ
112
+
113
+ # Respond with span-anchored Suggestions and replies to Comments.
114
+ # Body JSON: { "suggestions": [{ "anchorQuote": "...", "replacement": "...",
115
+ # "note": "...", "anchorStart": 123 }],
116
+ # "replies": [{ "parentCommentId": "...", "body": "..." }] }
117
+ # anchorStart (optional) is the quote's character offset in the pulled
118
+ # Markdown; include it whenever the quoted text could appear more than once,
119
+ # since it decides which occurrence an accepted Suggestion replaces.
120
+ pnpm artifacts doc respond https://artifacts.thefocus.ai/d/Ab3xY9kQ --body feedback.json
121
+ cat feedback.json | pnpm artifacts doc respond https://artifacts.thefocus.ai/d/Ab3xY9kQ
122
+
123
+ # List your Living Docs
124
+ pnpm artifacts doc list
125
+
126
+ # Remove a Living Doc (disables both the View Link and the Review Link)
127
+ pnpm artifacts doc remove https://artifacts.thefocus.ai/d/Ab3xY9kQ --yes
128
+ ```
129
+
130
+ Suggestions are never applied automatically — the Reviewer accepts or rejects each one in the editor, and accepting applies the change to the live Markdown at the anchored quote (nearest `anchorStart` when it matches more than once). If the Reviewer has edited the quoted text away, the Suggestion stays pending so its replacement remains visible rather than being marked accepted without applying. Each `doc pull` advances the Version number so both sides can refer back to "as of Version 3." Because the review surface is reachable by anyone holding the Review Link, all inputs are size-capped server-side (2 MB for the Markdown, 64 KB for comments, suggestion text, and replies). Living Docs require `migrations/0005_create_living_docs.sql`.
package/dist/src/cli.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  import { type PublisherTokenStore } from "./auth.js";
3
3
  import type { BrowserLoginResult } from "./login-flow.js";
4
4
  import { type RemovePublicationResult } from "./publication.js";
5
- import { type ArtifactApiClient } from "./remote-api.js";
5
+ import { type ArtifactApiClient, type LivingDocApiClient } from "./remote-api.js";
6
6
  import { type PublicationMetadataStore } from "./storage/publication-metadata.js";
7
7
  export interface CliDependencies {
8
8
  env?: NodeJS.ProcessEnv;
@@ -11,6 +11,7 @@ export interface CliDependencies {
11
11
  tokenStore?: PublisherTokenStore;
12
12
  metadataStore?: PublicationMetadataStore;
13
13
  apiClient?: ArtifactApiClient;
14
+ docApiClient?: LivingDocApiClient;
14
15
  configDir?: string;
15
16
  openBrowser?: (url: string) => Promise<void>;
16
17
  stdin?: NodeJS.ReadStream;
@@ -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;AAC1B,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAChF,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,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,CA8MjB"}
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"}
package/dist/src/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { realpathSync } from "node:fs";
3
- import { realpath, writeFile, mkdir } from "node:fs/promises";
3
+ import { readFile, realpath, writeFile, mkdir } from "node:fs/promises";
4
4
  import { join } from "node:path";
5
5
  import { createInterface } from "node:readline/promises";
6
6
  import { fileURLToPath } from "node:url";
@@ -8,7 +8,8 @@ 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 { HttpArtifactApiClient } from "./remote-api.js";
11
+ import { opaqueIdFromViewReference, } from "./living-doc.js";
12
+ import { HttpArtifactApiClient, HttpLivingDocApiClient, } from "./remote-api.js";
12
13
  export async function runCli(argv, dependencies = {}) {
13
14
  const [command, firstArg, ...flags] = argv;
14
15
  const options = parseFlags(command === "publish" ? flags : argv.slice(1));
@@ -170,6 +171,17 @@ export async function runCli(argv, dependencies = {}) {
170
171
  })}\n`);
171
172
  return 0;
172
173
  }
174
+ if (command === "doc") {
175
+ return await runDocCommand(firstArg, flags[0], {
176
+ env,
177
+ configDir,
178
+ options,
179
+ stdout,
180
+ stderr,
181
+ stdin: dependencies.stdin ?? process.stdin,
182
+ docApiClient: dependencies.docApiClient,
183
+ });
184
+ }
173
185
  printUsage(stderr);
174
186
  return 1;
175
187
  }
@@ -178,6 +190,64 @@ export async function runCli(argv, dependencies = {}) {
178
190
  return 1;
179
191
  }
180
192
  }
193
+ async function runDocCommand(subcommand, target, context) {
194
+ const { env, configDir, options, stdout } = context;
195
+ const token = await resolvePublisherToken({ env, configDir });
196
+ if (!token.token)
197
+ throw new Error("A valid Publisher Token is required");
198
+ const client = context.docApiClient ??
199
+ new HttpLivingDocApiClient(options["base-url"] ??
200
+ env.ARTIFACTS_PUBLIC_BASE_URL ??
201
+ defaultPublicBaseUrl);
202
+ if (subcommand === "publish") {
203
+ if (!target)
204
+ throw new Error("doc publish requires a Markdown file path.");
205
+ const markdown = await readFile(target, "utf-8");
206
+ const result = await client.publishDoc(token.token, markdown, {
207
+ title: options.title,
208
+ });
209
+ stdout.write(`${JSON.stringify(result, null, 2)}\n`);
210
+ return 0;
211
+ }
212
+ if (subcommand === "pull") {
213
+ if (!target)
214
+ throw new Error("doc pull requires a Living Doc View URL or id.");
215
+ const result = await client.pullDoc(token.token, opaqueIdFromViewReference(target));
216
+ stdout.write(`${JSON.stringify(result, null, 2)}\n`);
217
+ return 0;
218
+ }
219
+ if (subcommand === "respond") {
220
+ if (!target)
221
+ throw new Error("doc respond requires a Living Doc View URL or id.");
222
+ const raw = options.body
223
+ ? await readFile(options.body, "utf-8")
224
+ : await readStdin(context.stdin);
225
+ const parsed = JSON.parse(raw || "{}");
226
+ const result = await client.respondDoc(token.token, opaqueIdFromViewReference(target), { suggestions: parsed.suggestions, replies: parsed.replies });
227
+ stdout.write(`${JSON.stringify(result, null, 2)}\n`);
228
+ return 0;
229
+ }
230
+ if (subcommand === "list") {
231
+ const result = await client.listDocs(token.token);
232
+ stdout.write(`${JSON.stringify(result, null, 2)}\n`);
233
+ return 0;
234
+ }
235
+ if (subcommand === "remove") {
236
+ if (!target)
237
+ throw new Error("doc remove requires a Living Doc View URL or id.");
238
+ if (!Object.hasOwn(options, "yes")) {
239
+ const confirmed = await confirmRemoval(target, context.stdin, stdout);
240
+ if (!confirmed) {
241
+ stdout.write("Removal cancelled.\n");
242
+ return 1;
243
+ }
244
+ }
245
+ const result = await client.removeDoc(token.token, opaqueIdFromViewReference(target));
246
+ stdout.write(`${JSON.stringify(result, null, 2)}\n`);
247
+ return 0;
248
+ }
249
+ throw new Error("Usage: artifacts doc <publish <file.md>|pull <url>|respond <url>|list|remove <url>>");
250
+ }
181
251
  async function publishWithDefaultApiClient(sourcePath, token, options) {
182
252
  const stateStore = new FilePublicationStateStore(options.configDir);
183
253
  const localSourcePath = await realpath(sourcePath);
@@ -272,13 +342,18 @@ function readStdin(stream) {
272
342
  });
273
343
  }
274
344
  function printUsage(output) {
275
- output.write("Usage: npx @the-focus-ai/artifacts <login|logout|whoami|publish|remove|list>\n" +
345
+ output.write("Usage: npx @the-focus-ai/artifacts <login|logout|whoami|publish|remove|list|doc>\n" +
276
346
  " npx @the-focus-ai/artifacts login [--base-url https://artifacts.thefocus.ai]\n" +
277
347
  ' npx @the-focus-ai/artifacts publish <file.html|directory> [--entry-page index.html] [--title "My Report"] [--base-url https://artifacts.thefocus.ai] [--new] [--update <Publication URL>] [--verbose] [--open]\n' +
278
348
  " npx @the-focus-ai/artifacts remove <Publication URL> [--yes] [--base-url https://artifacts.thefocus.ai]\n" +
279
349
  " npx @the-focus-ai/artifacts list [--base-url https://artifacts.thefocus.ai]\n" +
280
350
  " npx @the-focus-ai/artifacts whoami [--base-url https://artifacts.thefocus.ai]\n" +
281
- " npx @the-focus-ai/artifacts logout\n");
351
+ " npx @the-focus-ai/artifacts logout\n" +
352
+ ' npx @the-focus-ai/artifacts doc publish <file.md> [--title "My Doc"] [--base-url ...]\n' +
353
+ " npx @the-focus-ai/artifacts doc pull <Living Doc View URL or id> [--base-url ...]\n" +
354
+ " npx @the-focus-ai/artifacts doc respond <Living Doc View URL or id> [--body feedback.json] [--base-url ...]\n" +
355
+ " npx @the-focus-ai/artifacts doc list [--base-url ...]\n" +
356
+ " npx @the-focus-ai/artifacts doc remove <Living Doc View URL or id> [--yes] [--base-url ...]\n");
282
357
  }
283
358
  const isDirectRun = process.argv[1]
284
359
  ? fileURLToPath(import.meta.url) === realpathSync(process.argv[1])
@@ -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,16 @@
1
+ export type DiffOp = "context" | "add" | "remove";
2
+ export interface DiffLine {
3
+ op: DiffOp;
4
+ text: string;
5
+ }
6
+ /**
7
+ * Compute a line-oriented diff between two Markdown snapshots using a longest
8
+ * common subsequence. Kept dependency-free and small; it exists to show a
9
+ * Reviewer's changes between two Living Doc Versions, not to be a full patch
10
+ * format.
11
+ */
12
+ export declare function diffLines(before: string, after: string): DiffLine[];
13
+ /** Render a diff as a unified-style text block ( `+`/`-`/` ` prefixes ). */
14
+ export declare function formatUnifiedDiff(before: string, after: string): string;
15
+ export declare function hasChanges(before: string, after: string): boolean;
16
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/diff.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;AAElD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CAoCnE;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIvE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjE"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Compute a line-oriented diff between two Markdown snapshots using a longest
3
+ * common subsequence. Kept dependency-free and small; it exists to show a
4
+ * Reviewer's changes between two Living Doc Versions, not to be a full patch
5
+ * format.
6
+ */
7
+ export function diffLines(before, after) {
8
+ const beforeLines = splitLines(before);
9
+ const afterLines = splitLines(after);
10
+ const lcs = longestCommonSubsequence(beforeLines, afterLines);
11
+ const result = [];
12
+ let beforeIndex = 0;
13
+ let afterIndex = 0;
14
+ for (const common of lcs) {
15
+ while (beforeIndex < beforeLines.length &&
16
+ beforeLines[beforeIndex] !== common) {
17
+ result.push({ op: "remove", text: beforeLines[beforeIndex] });
18
+ beforeIndex += 1;
19
+ }
20
+ while (afterIndex < afterLines.length &&
21
+ afterLines[afterIndex] !== common) {
22
+ result.push({ op: "add", text: afterLines[afterIndex] });
23
+ afterIndex += 1;
24
+ }
25
+ result.push({ op: "context", text: common });
26
+ beforeIndex += 1;
27
+ afterIndex += 1;
28
+ }
29
+ while (beforeIndex < beforeLines.length) {
30
+ result.push({ op: "remove", text: beforeLines[beforeIndex] });
31
+ beforeIndex += 1;
32
+ }
33
+ while (afterIndex < afterLines.length) {
34
+ result.push({ op: "add", text: afterLines[afterIndex] });
35
+ afterIndex += 1;
36
+ }
37
+ return result;
38
+ }
39
+ /** Render a diff as a unified-style text block ( `+`/`-`/` ` prefixes ). */
40
+ export function formatUnifiedDiff(before, after) {
41
+ return diffLines(before, after)
42
+ .map((line) => `${prefixFor(line.op)}${line.text}`)
43
+ .join("\n");
44
+ }
45
+ export function hasChanges(before, after) {
46
+ return before !== after;
47
+ }
48
+ function prefixFor(op) {
49
+ if (op === "add")
50
+ return "+";
51
+ if (op === "remove")
52
+ return "-";
53
+ return " ";
54
+ }
55
+ function splitLines(value) {
56
+ if (value === "")
57
+ return [];
58
+ return value.replace(/\r\n/g, "\n").split("\n");
59
+ }
60
+ function longestCommonSubsequence(a, b) {
61
+ const rows = a.length;
62
+ const cols = b.length;
63
+ const table = Array.from({ length: rows + 1 }, () => new Array(cols + 1).fill(0));
64
+ for (let i = rows - 1; i >= 0; i -= 1) {
65
+ for (let j = cols - 1; j >= 0; j -= 1) {
66
+ table[i][j] =
67
+ a[i] === b[j]
68
+ ? table[i + 1][j + 1] + 1
69
+ : Math.max(table[i + 1][j], table[i][j + 1]);
70
+ }
71
+ }
72
+ const sequence = [];
73
+ let i = 0;
74
+ let j = 0;
75
+ while (i < rows && j < cols) {
76
+ if (a[i] === b[j]) {
77
+ sequence.push(a[i]);
78
+ i += 1;
79
+ j += 1;
80
+ }
81
+ else if (table[i + 1][j] >= table[i][j + 1]) {
82
+ i += 1;
83
+ }
84
+ else {
85
+ j += 1;
86
+ }
87
+ }
88
+ return sequence;
89
+ }
90
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/diff.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,KAAa;IACrD,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,wBAAwB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,MAAM,IAAI,GAAG,EAAE,CAAC;QACzB,OACE,WAAW,GAAG,WAAW,CAAC,MAAM;YAChC,WAAW,CAAC,WAAW,CAAC,KAAK,MAAM,EACnC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC9D,WAAW,IAAI,CAAC,CAAC;QACnB,CAAC;QACD,OACE,UAAU,GAAG,UAAU,CAAC,MAAM;YAC9B,UAAU,CAAC,UAAU,CAAC,KAAK,MAAM,EACjC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACzD,UAAU,IAAI,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7C,WAAW,IAAI,CAAC,CAAC;QACjB,UAAU,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC9D,WAAW,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACzD,UAAU,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,KAAa;IAC7D,OAAO,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;SAC5B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;SAClD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,KAAa;IACtD,OAAO,MAAM,KAAK,KAAK,CAAC;AAC1B,CAAC;AAED,SAAS,SAAS,CAAC,EAAU;IAC3B,IAAI,EAAE,KAAK,KAAK;QAAE,OAAO,GAAG,CAAC;IAC7B,IAAI,EAAE,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IAChC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAC5B,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,wBAAwB,CAAC,CAAW,EAAE,CAAW;IACxD,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,MAAM,KAAK,GAAe,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAC9D,IAAI,KAAK,CAAS,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACpC,CAAC;IACF,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACT,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACX,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;oBACzB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC,IAAI,CAAC,CAAC;YACP,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;aAAM,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9C,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;aAAM,CAAC;YACN,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -2,5 +2,7 @@ import type { IncomingMessage, ServerResponse } from "node:http";
2
2
  import { type ServePublicationInput } from "./publication.js";
3
3
  export declare function writeWebResponseToNodeResponse(webResponse: Response, nodeResponse: ServerResponse): Promise<void>;
4
4
  export declare function servePublicationNodeRequest(nodeRequest: IncomingMessage, nodeResponse: ServerResponse, dependencies: Omit<ServePublicationInput, "request">): Promise<void>;
5
+ export declare function nodeRequestToWebRequest(request: IncomingMessage): Promise<Request>;
6
+ export declare function nodeRequestUrl(request: IncomingMessage): string;
5
7
  export declare function publicationRequestUrl(request: IncomingMessage): string;
6
8
  //# 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,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,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"}
package/dist/src/http.js CHANGED
@@ -21,6 +21,27 @@ export async function servePublicationNodeRequest(nodeRequest, nodeResponse, dep
21
21
  });
22
22
  await writeWebResponseToNodeResponse(response, nodeResponse);
23
23
  }
24
+ export async function nodeRequestToWebRequest(request) {
25
+ const body = await readNodeRequestBody(request);
26
+ return new Request(nodeRequestUrl(request), {
27
+ method: request.method,
28
+ headers: request.headers,
29
+ body: body.length > 0 ? new Uint8Array(body) : undefined,
30
+ });
31
+ }
32
+ export function nodeRequestUrl(request) {
33
+ const host = request.headers.host ?? "localhost";
34
+ const protocol = request.headers["x-forwarded-proto"] ?? "https";
35
+ return `${protocol}://${host}${request.url ?? "/"}`;
36
+ }
37
+ function readNodeRequestBody(request) {
38
+ return new Promise((resolve, reject) => {
39
+ const chunks = [];
40
+ request.on("data", (chunk) => chunks.push(Buffer.from(chunk)));
41
+ request.on("end", () => resolve(Buffer.concat(chunks)));
42
+ request.on("error", reject);
43
+ });
44
+ }
24
45
  export function publicationRequestUrl(request) {
25
46
  const host = request.headers.host ?? "localhost";
26
47
  const protocol = request.headers["x-forwarded-proto"] ?? "https";
@@ -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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"}
@@ -1,8 +1,11 @@
1
1
  export * from "./auth.js";
2
+ export * from "./diff.js";
3
+ export * from "./living-doc.js";
2
4
  export * from "./local-config.js";
3
5
  export * from "./publication.js";
4
6
  export * from "./remote-api.js";
5
7
  export * from "./local-config.js";
6
8
  export * from "./storage/artifact-content.js";
9
+ export * from "./storage/living-doc-metadata.js";
7
10
  export * from "./storage/publication-metadata.js";
8
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC"}
package/dist/src/index.js CHANGED
@@ -1,8 +1,11 @@
1
1
  export * from "./auth.js";
2
+ export * from "./diff.js";
3
+ export * from "./living-doc.js";
2
4
  export * from "./local-config.js";
3
5
  export * from "./publication.js";
4
6
  export * from "./remote-api.js";
5
7
  export * from "./local-config.js";
6
8
  export * from "./storage/artifact-content.js";
9
+ export * from "./storage/living-doc-metadata.js";
7
10
  export * from "./storage/publication-metadata.js";
8
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC"}
@@ -0,0 +1,163 @@
1
+ import { type PublisherTokenStore } from "./auth.js";
2
+ import { type CommentOrigin, type LivingDoc, type LivingDocComment, type LivingDocMetadataStore, type LivingDocSuggestion, type SuggestionStatus } from "./storage/living-doc-metadata.js";
3
+ export declare const livingDocViewPrefix = "/d";
4
+ export declare const livingDocReviewPrefix = "/r";
5
+ export declare const maxLivingDocMarkdownBytes: number;
6
+ export declare const maxLivingDocTextBytes: number;
7
+ export interface PublishLivingDocInput {
8
+ markdown: string;
9
+ publisherEmail: string;
10
+ publicBaseUrl: string;
11
+ store: LivingDocMetadataStore;
12
+ title?: string | null;
13
+ opaqueId?: string;
14
+ reviewId?: string;
15
+ }
16
+ export interface PublishLivingDocResult {
17
+ opaqueId: string;
18
+ reviewId: string;
19
+ title: string | null;
20
+ viewUrl: string;
21
+ reviewUrl: string;
22
+ }
23
+ export declare function publishLivingDoc(input: PublishLivingDocInput): Promise<PublishLivingDocResult>;
24
+ export interface PullLivingDocInput {
25
+ opaqueId: string;
26
+ publisherEmail: string;
27
+ store: LivingDocMetadataStore;
28
+ }
29
+ export interface PulledComment {
30
+ id: string;
31
+ origin: CommentOrigin;
32
+ author: string | null;
33
+ anchorQuote: string;
34
+ body: string;
35
+ createdAt: string;
36
+ }
37
+ export interface PulledSuggestion {
38
+ id: string;
39
+ anchorQuote: string;
40
+ anchorStart: number | null;
41
+ replacement: string;
42
+ note: string | null;
43
+ status: SuggestionStatus;
44
+ }
45
+ export interface PullLivingDocResult {
46
+ opaqueId: string;
47
+ title: string | null;
48
+ versionNumber: number;
49
+ previousVersionNumber: number | null;
50
+ markdown: string;
51
+ diffFromPreviousVersion: string | null;
52
+ openComments: PulledComment[];
53
+ priorSuggestions: PulledSuggestion[];
54
+ }
55
+ /**
56
+ * Cut an immutable Version of the Living Doc and return the current Markdown,
57
+ * a diff versus the previous Version, and the open Reviewer feedback. This is
58
+ * the turn boundary: each pull advances the version number.
59
+ */
60
+ export declare function pullLivingDocFeedback(input: PullLivingDocInput): Promise<PullLivingDocResult>;
61
+ export interface RespondSuggestionInput {
62
+ anchorQuote: string;
63
+ replacement: string;
64
+ note?: string | null;
65
+ anchorStart?: number | null;
66
+ }
67
+ export interface RespondReplyInput {
68
+ parentCommentId: string;
69
+ body: string;
70
+ }
71
+ export interface RespondLivingDocInput {
72
+ opaqueId: string;
73
+ publisherEmail: string;
74
+ store: LivingDocMetadataStore;
75
+ suggestions?: RespondSuggestionInput[];
76
+ replies?: RespondReplyInput[];
77
+ }
78
+ export interface RespondLivingDocResult {
79
+ opaqueId: string;
80
+ versionNumber: number;
81
+ createdSuggestions: PulledSuggestion[];
82
+ createdReplies: PulledComment[];
83
+ }
84
+ /**
85
+ * The agent's half of the round: post span-anchored Suggestions (never applied
86
+ * automatically) and replies to open Comments. Suggestions target the latest
87
+ * pulled Version.
88
+ */
89
+ export declare function respondToLivingDoc(input: RespondLivingDocInput): Promise<RespondLivingDocResult>;
90
+ export interface RemoveLivingDocInput {
91
+ opaqueId: string;
92
+ publisherEmail: string;
93
+ store: LivingDocMetadataStore;
94
+ }
95
+ export interface RemoveLivingDocResult {
96
+ opaqueId: string;
97
+ status: "removed" | "not-found";
98
+ }
99
+ /**
100
+ * Removal disables the Living Doc: the View Link and Review Link both stop
101
+ * serving it. This is the kill switch for a leaked Review Link.
102
+ */
103
+ export declare function removeLivingDoc(input: RemoveLivingDocInput): Promise<RemoveLivingDocResult>;
104
+ export interface ReviewStateResult {
105
+ opaqueId: string;
106
+ title: string | null;
107
+ versionNumber: number;
108
+ markdown: string;
109
+ comments: LivingDocComment[];
110
+ pendingSuggestions: LivingDocSuggestion[];
111
+ }
112
+ export declare function getReviewState(store: LivingDocMetadataStore, reviewId: string): Promise<ReviewStateResult>;
113
+ export declare function saveReviewMarkdown(store: LivingDocMetadataStore, reviewId: string, markdown: string): Promise<LivingDoc>;
114
+ export interface AddReviewerCommentInput {
115
+ anchorQuote: string;
116
+ body: string;
117
+ anchorStart?: number | null;
118
+ anchorEnd?: number | null;
119
+ author?: string | null;
120
+ }
121
+ export declare function addReviewerComment(store: LivingDocMetadataStore, reviewId: string, input: AddReviewerCommentInput): Promise<LivingDocComment>;
122
+ export declare function resolveReviewerComment(store: LivingDocMetadataStore, reviewId: string, commentId: string): Promise<LivingDocComment>;
123
+ export interface DecideSuggestionResult {
124
+ suggestion: LivingDocSuggestion;
125
+ markdown: string;
126
+ applied: boolean;
127
+ occurrenceCount: number;
128
+ }
129
+ /**
130
+ * Accept or reject an agent Suggestion. Accepting applies the change to the
131
+ * live Markdown at the anchored quote — when the quote matches more than one
132
+ * place, the occurrence nearest the Suggestion's anchorStart offset wins. If
133
+ * the quote no longer exists (the Reviewer edited past it), the Suggestion
134
+ * stays pending so its replacement text remains visible on the review surface
135
+ * instead of vanishing with an accepted-but-unapplied status.
136
+ */
137
+ export declare function decideSuggestion(store: LivingDocMetadataStore, reviewId: string, suggestionId: string, decision: Extract<SuggestionStatus, "accepted" | "rejected">): Promise<DecideSuggestionResult>;
138
+ export interface ServeLivingDocViewInput {
139
+ request: Request;
140
+ store: LivingDocMetadataStore;
141
+ }
142
+ export declare function serveLivingDocViewRequest({ request, store, }: ServeLivingDocViewInput): Promise<Response>;
143
+ export interface HandleAgentApiInput {
144
+ request: Request;
145
+ store: LivingDocMetadataStore;
146
+ tokenStore: PublisherTokenStore;
147
+ publicBaseUrl?: string;
148
+ }
149
+ export declare function handleLivingDocAgentApiRequest({ request, store, tokenStore, publicBaseUrl, }: HandleAgentApiInput): Promise<Response>;
150
+ export interface HandleReviewApiInput {
151
+ request: Request;
152
+ store: LivingDocMetadataStore;
153
+ }
154
+ export declare function handleReviewApiRequest({ request, store, }: HandleReviewApiInput): Promise<Response>;
155
+ export declare function livingDocViewUrl(publicBaseUrl: string, opaqueId: string): string;
156
+ export declare function livingDocReviewUrl(publicBaseUrl: string, reviewId: string): string;
157
+ export declare function opaqueIdFromViewUrl(url: string): string | null;
158
+ export declare function reviewIdFromReviewUrl(url: string): string | null;
159
+ export declare function opaqueIdFromViewReference(reference: string): string;
160
+ export declare function livingDocSafetyHeaders(headers?: HeadersInit): Headers;
161
+ export declare function deriveMarkdownTitle(markdown: string): string | null;
162
+ export declare function createReviewId(): string;
163
+ //# sourceMappingURL=living-doc.d.ts.map