@the-focus-ai/artifacts 1.0.3 → 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.
Files changed (44) hide show
  1. package/README.md +44 -3
  2. package/dist/src/cli.d.ts +2 -1
  3. package/dist/src/cli.d.ts.map +1 -1
  4. package/dist/src/cli.js +122 -15
  5. package/dist/src/cli.js.map +1 -1
  6. package/dist/src/diff.d.ts +16 -0
  7. package/dist/src/diff.d.ts.map +1 -0
  8. package/dist/src/diff.js +90 -0
  9. package/dist/src/diff.js.map +1 -0
  10. package/dist/src/http.d.ts +2 -0
  11. package/dist/src/http.d.ts.map +1 -1
  12. package/dist/src/http.js +21 -0
  13. package/dist/src/http.js.map +1 -1
  14. package/dist/src/index.d.ts +3 -0
  15. package/dist/src/index.d.ts.map +1 -1
  16. package/dist/src/index.js +3 -0
  17. package/dist/src/index.js.map +1 -1
  18. package/dist/src/living-doc.d.ts +163 -0
  19. package/dist/src/living-doc.d.ts.map +1 -0
  20. package/dist/src/living-doc.js +566 -0
  21. package/dist/src/living-doc.js.map +1 -0
  22. package/dist/src/local-config.d.ts.map +1 -1
  23. package/dist/src/local-config.js.map +1 -1
  24. package/dist/src/login-flow.d.ts +1 -0
  25. package/dist/src/login-flow.d.ts.map +1 -1
  26. package/dist/src/login-flow.js +1 -1
  27. package/dist/src/login-flow.js.map +1 -1
  28. package/dist/src/publication.d.ts +6 -0
  29. package/dist/src/publication.d.ts.map +1 -1
  30. package/dist/src/publication.js +29 -0
  31. package/dist/src/publication.js.map +1 -1
  32. package/dist/src/remote-api.d.ts +31 -0
  33. package/dist/src/remote-api.d.ts.map +1 -1
  34. package/dist/src/remote-api.js +60 -0
  35. package/dist/src/remote-api.js.map +1 -1
  36. package/dist/src/storage/living-doc-metadata.d.ts +159 -0
  37. package/dist/src/storage/living-doc-metadata.d.ts.map +1 -0
  38. package/dist/src/storage/living-doc-metadata.js +400 -0
  39. package/dist/src/storage/living-doc-metadata.js.map +1 -0
  40. package/dist/src/storage/publication-metadata.d.ts +3 -0
  41. package/dist/src/storage/publication-metadata.d.ts.map +1 -1
  42. package/dist/src/storage/publication-metadata.js +9 -2
  43. package/dist/src/storage/publication-metadata.js.map +1 -1
  44. package/package.json +10 -2
package/README.md CHANGED
@@ -35,7 +35,10 @@ Install/run the CLI through npm or the repo-local script:
35
35
 
36
36
  ```bash
37
37
  npx @the-focus-ai/artifacts publish ./artifact.html
38
+ npx @the-focus-ai/artifacts publish ./report.html --title "Q2 Results"
38
39
  pnpm artifacts publish ./artifact.html
40
+ pnpm artifacts publish ./dist --open
41
+ pbpaste | pnpm artifacts publish - --open
39
42
  ```
40
43
 
41
44
  Log in once with a browser, or store a pre-issued Publisher Token non-interactively:
@@ -46,14 +49,16 @@ pnpm artifacts login --token tfai_pub_...
46
49
  pnpm artifacts whoami
47
50
  ```
48
51
 
49
- The publishing path accepts one local HTML file or one local directory and returns a canonical unlisted Publication URL. In agent workflows, publish the generated Artifact and include the printed URL in the final response:
52
+ The publishing path accepts one local HTML file, one local directory, or standard input (`-`), and returns a canonical unlisted Publication URL. In agent workflows, publish the generated Artifact and include the printed URL in the final response:
50
53
 
51
54
  ```bash
52
55
  THEFOCUS_ARTIFACTS_TOKEN=tfai_pub_... \
53
56
  fnox exec -- pnpm artifacts publish ./artifact.html
54
57
  ```
55
58
 
56
- Publisher Tokens are issued only to verified emails ending exactly in `@thefocus.ai`, are stored hashed server-side, and can be stored locally with `artifacts login --token <token>` or supplied non-interactively with `THEFOCUS_ARTIFACTS_TOKEN` (which overrides local config). Local CLI token state is stored under `~/.config/thefocus-artifacts/` with restricted file permissions where supported; `artifacts whoami` validates the active token through the hosted Artifacts API, `artifacts list` shows the current Publisher's active and removed Publications, and `artifacts logout` removes local token state.
59
+ Pass `--title "Report Name"` to set a human-readable title for the Publication (visible via `artifacts list`).
60
+
61
+ Publisher Tokens are issued only to verified emails ending exactly in `@thefocus.ai`, are stored hashed server-side, and can be stored locally with `npx @the-focus-ai/artifacts login --token <token>` or supplied non-interactively with `THEFOCUS_ARTIFACTS_TOKEN` (which overrides local config). Local CLI token state is stored under `~/.config/thefocus-artifacts/` with restricted file permissions where supported; `npx @the-focus-ai/artifacts whoami` validates the active token through the hosted Artifacts API, `npx @the-focus-ai/artifacts list` shows the current Publisher's active and removed Publications (with titles), and `npx @the-focus-ai/artifacts logout` removes local token state.
57
62
 
58
63
  Normal npm CLI usage only needs a Publisher Token. Infrastructure secrets such as `DATABASE_URL` and `BLOB_READ_WRITE_TOKEN` are required only for local development of the server/Vercel functions or deployed server-side API routes; publishers and agents running `npx @the-focus-ai/artifacts ...` should not set those secrets locally.
59
64
 
@@ -73,7 +78,7 @@ THEFOCUS_ARTIFACTS_TOKEN=tfai_pub_... \
73
78
  fnox exec -- pnpm artifacts publish ./dist
74
79
  ```
75
80
 
76
- Use `--entry-page path/to/page.html` to choose a different HTML Entry Page inside a directory Artifact. Use `--new` to force a fresh Publication during the Revision Window, or `--update <Publication URL>` to intentionally update an older active Publication URL.
81
+ Use `--entry-page path/to/page.html` to choose a different HTML Entry Page inside a directory Artifact. Use `--title "Report Name"` to set a human-readable title (shown in `list`). Use `--new` to force a fresh Publication during the Revision Window, or `--update <Publication URL>` to intentionally update an older active Publication URL.
77
82
 
78
83
  Other CLI management commands:
79
84
 
@@ -87,3 +92,39 @@ pnpm artifacts logout
87
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.
88
93
 
89
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":";AAOA,OAAO,EAGN,KAAK,mBAAmB,EACxB,MAAM,WAAW,CAAC;AAQnB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAON,KAAK,uBAAuB,EAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAEN,KAAK,wBAAwB,EAC7B,MAAM,mCAAmC,CAAC;AAE3C,MAAM,WAAW,eAAe;IAC/B,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,CACnB,cAAc,EAAE,MAAM,KAClB,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;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7C,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAClC;AAED,wBAAsB,MAAM,CAC3B,IAAI,EAAE,MAAM,EAAE,EACd,YAAY,GAAE,eAAoB,GAChC,OAAO,CAAC,MAAM,CAAC,CAuLjB"}
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,13 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import { realpathSync } from "node:fs";
3
- import { realpath } from "node:fs/promises";
3
+ import { readFile, realpath, writeFile, mkdir } from "node:fs/promises";
4
+ import { join } from "node:path";
4
5
  import { createInterface } from "node:readline/promises";
5
6
  import { fileURLToPath } from "node:url";
6
7
  import { authenticatePublisherToken, createNeonPublisherTokenStore, } from "./auth.js";
7
8
  import { clearLocalPublisherConfig, defaultConfigDir, FilePublicationStateStore, resolvePublisherToken, writeLocalPublisherConfig, } from "./local-config.js";
8
- import { loginWithBrowserFlow } from "./login-flow.js";
9
+ import { loginWithBrowserFlow, openDefaultBrowser } from "./login-flow.js";
9
10
  import { absolutePublicationUrl, defaultPublicBaseUrl, publishArtifactFromEnvironment, publishArtifactSummary, removePublicationFromEnvironment, removePublicationSummary, } from "./publication.js";
10
- import { HttpArtifactApiClient } from "./remote-api.js";
11
+ import { opaqueIdFromViewReference, } from "./living-doc.js";
12
+ import { HttpArtifactApiClient, HttpLivingDocApiClient, } from "./remote-api.js";
11
13
  export async function runCli(argv, dependencies = {}) {
12
14
  const [command, firstArg, ...flags] = argv;
13
15
  const options = parseFlags(command === "publish" ? flags : argv.slice(1));
@@ -27,31 +29,50 @@ export async function runCli(argv, dependencies = {}) {
27
29
  const token = await resolvePublisherToken({ env, configDir });
28
30
  if (!token.token)
29
31
  throw new Error("A valid Publisher Token is required");
32
+ let sourcePath = firstArg;
33
+ if (firstArg === "-") {
34
+ const stdinStream = dependencies.stdin ?? process.stdin;
35
+ if (stdinStream.isTTY) {
36
+ stdout.write("Reading HTML from stdin (press Ctrl+D when finished)...\n");
37
+ }
38
+ const content = await readStdin(stdinStream);
39
+ await mkdir(configDir, { recursive: true });
40
+ const tempFile = join(configDir, "stdin.html");
41
+ await writeFile(tempFile, content, "utf-8");
42
+ sourcePath = tempFile;
43
+ }
30
44
  const result = dependencies.apiClient
31
- ? await dependencies.apiClient.publish(token.token, firstArg, {
45
+ ? await dependencies.apiClient.publish(token.token, sourcePath, {
32
46
  publicBaseUrl: options["base-url"],
33
47
  entryPage: options["entry-page"],
34
48
  forceNew: Object.hasOwn(options, "new"),
35
49
  updatePublicationUrl: options.update,
50
+ title: options["title"],
36
51
  })
37
52
  : dependencies.tokenStore || dependencies.metadataStore
38
- ? await publishArtifactFromEnvironment(firstArg, {
53
+ ? await publishArtifactFromEnvironment(sourcePath, {
39
54
  publicBaseUrl: options["base-url"],
40
55
  entryPage: options["entry-page"],
41
56
  env,
42
57
  configDir,
43
58
  forceNew: Object.hasOwn(options, "new"),
44
59
  updatePublicationUrl: options.update,
60
+ title: options["title"],
45
61
  })
46
- : await publishWithDefaultApiClient(firstArg, token.token, {
62
+ : await publishWithDefaultApiClient(sourcePath, token.token, {
47
63
  env,
48
64
  configDir,
49
65
  publicBaseUrl: options["base-url"],
50
66
  entryPage: options["entry-page"],
51
67
  forceNew: Object.hasOwn(options, "new"),
52
68
  updatePublicationUrl: options.update,
69
+ title: options["title"],
53
70
  });
54
71
  stdout.write(`${publishArtifactSummary(result, { verbose: options.verbose === "true" })}\n`);
72
+ if (Object.hasOwn(options, "open")) {
73
+ const openFn = dependencies.openBrowser ?? openDefaultBrowser;
74
+ await openFn(result.publicationUrl);
75
+ }
55
76
  return 0;
56
77
  }
57
78
  if (command === "remove" && firstArg) {
@@ -150,6 +171,17 @@ export async function runCli(argv, dependencies = {}) {
150
171
  })}\n`);
151
172
  return 0;
152
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
+ }
153
185
  printUsage(stderr);
154
186
  return 1;
155
187
  }
@@ -158,6 +190,64 @@ export async function runCli(argv, dependencies = {}) {
158
190
  return 1;
159
191
  }
160
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
+ }
161
251
  async function publishWithDefaultApiClient(sourcePath, token, options) {
162
252
  const stateStore = new FilePublicationStateStore(options.configDir);
163
253
  const localSourcePath = await realpath(sourcePath);
@@ -173,6 +263,7 @@ async function publishWithDefaultApiClient(sourcePath, token, options) {
173
263
  entryPage: options.entryPage,
174
264
  forceNew: options.forceNew,
175
265
  updatePublicationUrl,
266
+ title: options.title,
176
267
  });
177
268
  try {
178
269
  await stateStore.set({
@@ -212,13 +303,16 @@ function parseFlags(flags) {
212
303
  return parsed;
213
304
  }
214
305
  function formatPublicationList(publications, options) {
215
- const lines = ["LAST UPDATED STATUS PUBLICATION URL"];
306
+ const lines = [
307
+ "LAST UPDATED STATUS TITLE PUBLICATION URL",
308
+ ];
216
309
  if (publications.length === 0) {
217
310
  lines.push("No Publications found.");
218
311
  return lines.join("\n");
219
312
  }
220
313
  for (const publication of publications) {
221
- lines.push(`${publication.updatedAt.toISOString()} ${publication.status.padEnd(8)} ${absolutePublicationUrl(options.publicBaseUrl, publication.publicationUrlPath)}`);
314
+ const title = (publication.title ?? "").slice(0, 30).padEnd(32);
315
+ lines.push(`${publication.updatedAt.toISOString()} ${publication.status.padEnd(8)} ${title}${absolutePublicationUrl(options.publicBaseUrl, publication.publicationUrlPath)}`);
222
316
  }
223
317
  return lines.join("\n");
224
318
  }
@@ -239,14 +333,27 @@ async function confirmRemoval(publicationUrl, stdin, stdout) {
239
333
  stdout.write("");
240
334
  }
241
335
  }
336
+ function readStdin(stream) {
337
+ return new Promise((resolve, reject) => {
338
+ const chunks = [];
339
+ stream.on("data", (chunk) => chunks.push(Buffer.from(chunk)));
340
+ stream.on("end", () => resolve(Buffer.concat(chunks).toString("utf-8")));
341
+ stream.on("error", reject);
342
+ });
343
+ }
242
344
  function printUsage(output) {
243
- output.write("Usage: artifacts <login|logout|whoami|publish|remove|list>\n" +
244
- " artifacts login [--base-url https://artifacts.thefocus.ai]\n" +
245
- " artifacts publish <file.html|directory> [--entry-page index.html] [--base-url https://artifacts.thefocus.ai] [--new] [--update <Publication URL>] [--verbose]\n" +
246
- " artifacts remove <Publication URL> [--yes] [--base-url https://artifacts.thefocus.ai]\n" +
247
- " artifacts list [--base-url https://artifacts.thefocus.ai]\n" +
248
- " artifacts whoami [--base-url https://artifacts.thefocus.ai]\n" +
249
- " artifacts logout\n");
345
+ output.write("Usage: npx @the-focus-ai/artifacts <login|logout|whoami|publish|remove|list|doc>\n" +
346
+ " npx @the-focus-ai/artifacts login [--base-url https://artifacts.thefocus.ai]\n" +
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' +
348
+ " npx @the-focus-ai/artifacts remove <Publication URL> [--yes] [--base-url https://artifacts.thefocus.ai]\n" +
349
+ " npx @the-focus-ai/artifacts list [--base-url https://artifacts.thefocus.ai]\n" +
350
+ " npx @the-focus-ai/artifacts whoami [--base-url https://artifacts.thefocus.ai]\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");
250
357
  }
251
358
  const isDirectRun = process.argv[1]
252
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":"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"}
@@ -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":"AAEA,OAAO,EACL,uBAAuB,GAExB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,WAAqB,EACrB,YAA4B;IAE5B,YAAY,CAAC,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC;IAC7C,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACzC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACtB,YAAY,CAAC,GAAG,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1D,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,WAA4B,EAC5B,YAA4B,EAC5B,YAAoD;IAEpD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE;QAC9D,MAAM,EAAE,WAAW,CAAC,MAAM;KAC3B,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC;QAC7C,OAAO;QACP,GAAG,YAAY;KAChB,CAAC,CAAC;IACH,MAAM,8BAA8B,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAwB;IAExB,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;QAC1C,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAsB;QACvC,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KACzD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAwB;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC;IACjE,OAAO,GAAG,QAAQ,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAwB;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAwB;IAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC;IACjE,MAAM,YAAY,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;IAC5D,OAAO,GAAG,QAAQ,MAAM,IAAI,MAAM,YAAY,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,6BAA6B,CAAC,OAAwB;IAC7D,MAAM,WAAW,GACf,OAGD,CAAC,KAAK,EAAE,MAAM,CAAC;IAChB,MAAM,SAAS,GACb,OAGD,CAAC,KAAK,EAAE,IAAI,CAAC;IACd,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,CAAC,WAAW,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC;aACzD,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACrE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC;aAC5D,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC;IAC3E,MAAM,SAAS,GAAG,SAAS,CAAC;IAC5B,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,KAAK,CAAC;IAC3B,IAAI,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC;QACnC,OAAO,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,2BAA2B,CAAC,IAAa;IAChD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChE,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACnC,CAAC"}
@@ -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"}