@wirecat/drive-cli 0.2.0 → 0.4.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 (90) hide show
  1. package/README.md +9 -8
  2. package/dist/api-contract.d.ts.map +1 -1
  3. package/dist/api-contract.js +4 -2
  4. package/dist/api-contract.js.map +1 -1
  5. package/dist/bin/drive.js +16 -20
  6. package/dist/bin/drive.js.map +1 -1
  7. package/dist/catalog-commands.d.ts +13 -0
  8. package/dist/catalog-commands.d.ts.map +1 -0
  9. package/dist/catalog-commands.js +111 -0
  10. package/dist/catalog-commands.js.map +1 -0
  11. package/dist/catalog.d.ts +43 -0
  12. package/dist/catalog.d.ts.map +1 -0
  13. package/dist/catalog.js +107 -0
  14. package/dist/catalog.js.map +1 -0
  15. package/dist/config.d.ts +8 -0
  16. package/dist/config.d.ts.map +1 -1
  17. package/dist/config.js +17 -3
  18. package/dist/config.js.map +1 -1
  19. package/dist/errors.d.ts.map +1 -1
  20. package/dist/errors.js +13 -5
  21. package/dist/errors.js.map +1 -1
  22. package/dist/extraction.d.ts +1 -1
  23. package/dist/extraction.d.ts.map +1 -1
  24. package/dist/extraction.js +9 -5
  25. package/dist/extraction.js.map +1 -1
  26. package/dist/failure.d.ts +65 -0
  27. package/dist/failure.d.ts.map +1 -0
  28. package/dist/failure.js +86 -0
  29. package/dist/failure.js.map +1 -0
  30. package/dist/google-api.d.ts.map +1 -1
  31. package/dist/google-api.js +3 -1
  32. package/dist/google-api.js.map +1 -1
  33. package/dist/google.d.ts +5 -0
  34. package/dist/google.d.ts.map +1 -1
  35. package/dist/google.js +80 -12
  36. package/dist/google.js.map +1 -1
  37. package/dist/knowledge-commands.d.ts.map +1 -1
  38. package/dist/knowledge-commands.js +150 -113
  39. package/dist/knowledge-commands.js.map +1 -1
  40. package/dist/knowledge.d.ts +2 -2
  41. package/dist/knowledge.d.ts.map +1 -1
  42. package/dist/knowledge.js +11 -5
  43. package/dist/knowledge.js.map +1 -1
  44. package/dist/login.d.ts +1 -1
  45. package/dist/login.d.ts.map +1 -1
  46. package/dist/login.js +11 -5
  47. package/dist/login.js.map +1 -1
  48. package/dist/mcp.d.ts +22 -4
  49. package/dist/mcp.d.ts.map +1 -1
  50. package/dist/mcp.js +7 -15
  51. package/dist/mcp.js.map +1 -1
  52. package/dist/model.d.ts +67 -11
  53. package/dist/model.d.ts.map +1 -1
  54. package/dist/model.js +17 -0
  55. package/dist/model.js.map +1 -1
  56. package/dist/policy.d.ts.map +1 -1
  57. package/dist/policy.js +11 -4
  58. package/dist/policy.js.map +1 -1
  59. package/dist/profile-lock.d.ts.map +1 -1
  60. package/dist/profile-lock.js +4 -2
  61. package/dist/profile-lock.js.map +1 -1
  62. package/dist/program.d.ts.map +1 -1
  63. package/dist/program.js +191 -152
  64. package/dist/program.js.map +1 -1
  65. package/dist/registry.d.ts +7 -1
  66. package/dist/registry.d.ts.map +1 -1
  67. package/dist/registry.js +28 -2
  68. package/dist/registry.js.map +1 -1
  69. package/dist/remote-commands.d.ts.map +1 -1
  70. package/dist/remote-commands.js +95 -76
  71. package/dist/remote-commands.js.map +1 -1
  72. package/dist/scope.d.ts +3 -0
  73. package/dist/scope.d.ts.map +1 -0
  74. package/dist/scope.js +15 -0
  75. package/dist/scope.js.map +1 -0
  76. package/dist/state.d.ts.map +1 -1
  77. package/dist/state.js +27 -6
  78. package/dist/state.js.map +1 -1
  79. package/dist/store.d.ts +4 -2
  80. package/dist/store.d.ts.map +1 -1
  81. package/dist/store.js +90 -10
  82. package/dist/store.js.map +1 -1
  83. package/dist/sync.d.ts +6 -2
  84. package/dist/sync.d.ts.map +1 -1
  85. package/dist/sync.js +121 -52
  86. package/dist/sync.js.map +1 -1
  87. package/dist/tokens.d.ts.map +1 -1
  88. package/dist/tokens.js +8 -4
  89. package/dist/tokens.js.map +1 -1
  90. package/package.json +7 -4
package/README.md CHANGED
@@ -82,7 +82,7 @@ There is no replacement model downloader or implicit download here. Missing mode
82
82
  ## Keep it current
83
83
 
84
84
  ```sh
85
- drive personal sync --max 200 --json
85
+ drive personal sync --limit 200 --json
86
86
  drive personal folders remove FOLDER_ID
87
87
  drive personal sync --json
88
88
  ```
@@ -111,8 +111,9 @@ Search covers body text, nested tables and footnotes from all tabs. Images, head
111
111
  comments and suggested edits are excluded. Image assets are not downloaded. Search text and Google’s native Markdown export are separate representations; inspect the export
112
112
  when layout or tab coverage matters.
113
113
 
114
- Folder scans cap at 10,000 entries. Text caps at 200,000 characters and snapshots at 50 MiB, with
115
- bounded pagination. Oversized input is refused rather than truncated. Google's native export
114
+ One sync reads at most 10,000 entries under the chosen folders, and at most 10,000 changes from
115
+ Google's change feed; past either, it stops with nothing lost and says what to do. Text caps at
116
+ 200,000 characters and snapshots at 50 MiB, with bounded pagination. Oversized input is refused rather than truncated. Google's native export
116
117
  also has its own 10 MB limit. Documents changing during export remain pending for retry.
117
118
 
118
119
  ## Development
@@ -140,18 +141,18 @@ See [architecture](docs/dev/ARCHITECTURE.md), [testing](docs/dev/TESTING.md),
140
141
  drive personal tags add DOC_ID project-budget review
141
142
  drive personal documents list --tag review
142
143
  drive personal notes add DOC_ID 'Check the assumptions' --title Review
143
- drive personal people list DOC_ID
144
+ drive personal identities list DOC_ID
144
145
  drive personal documents context DOC_ID
145
146
  drive personal facts add DOC_ID 'Budget approved for Q4' --type decision --scope work
146
147
  drive personal memories add DOC_ID 'Q4 budget, in short' --scope work --kind summary
147
148
  drive personal memories extract DOC_ID --scope work
148
149
  drive personal documents history DOC_ID
149
- drive api methods --service docs
150
+ drive api list --service docs
150
151
  ```
151
152
 
152
153
  AI extraction explicitly sends selected cached text to the configured model. It previews proposals
153
154
  unless `--save` is given; saved proposals include source quotes, snapshot hashes and model authorship.
154
- Use the shared model setup with `models configure --provider openai --model MODEL_ID`. Provider keys
155
+ Use the shared model setup with `models set --provider openai --model MODEL_ID`. Provider keys
155
156
  come from the corresponding API-key environment variable and never enter regular configuration.
156
157
  Source content changes and scope removals mark source-backed memories stale. User notes stay local.
157
158
 
@@ -167,14 +168,14 @@ isolated sources and mocked provider requests; see the [testing guide](docs/dev/
167
168
  ## Shared CLI conventions
168
169
 
169
170
  Drive now uses MAX's API generation approach: committed Google Discovery snapshots feed a
170
- provider adapter into cli-base's shared code generators. cli-messaging builds the generated
171
+ provider adapter into cli-base's shared code generators. cli-core builds the generated
171
172
  commands and validates their input; Google's SDK remains the transport. `pnpm generate` rebuilds
172
173
  types, validators, the operation manifest, coverage and [command reference](docs/commands.md).
173
174
  `pnpm generate:check` checks freshness offline. Only `pnpm spec:sync` fetches a new public specification.
174
175
 
175
176
  ```sh
176
177
  drive personal api drive-files-get --help
177
- drive schema docs.documents.batchUpdate --json
178
+ drive api show docs.documents.batchUpdate --json
178
179
  drive personal --dry-run api drive-files-get --file-id synthetic-doc --json
179
180
  drive complete zsh
180
181
  drive personal --read-only mcp --tools --json
@@ -1 +1 @@
1
- {"version":3,"file":"api-contract.d.ts","sourceRoot":"","sources":["../src/api-contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAA;AAC9B,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,iBAI1C,CAAA;AACD,eAAO,MAAM,eAAe,SAAU,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SA6B5G,CAAA"}
1
+ {"version":3,"file":"api-contract.d.ts","sourceRoot":"","sources":["../src/api-contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAA;AAC9B,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,iBAO1C,CAAA;AACD,eAAO,MAAM,eAAe,SAAU,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SA6B5G,CAAA"}
@@ -1,12 +1,14 @@
1
1
  import { CliError } from "@wirecat/cli-base";
2
- import { apiJson, checkApiBody, checkApiParameter } from "@wirecat/cli-messaging/cli";
2
+ import { apiJson, checkApiBody, checkApiParameter } from "@wirecat/cli-core/cli";
3
3
  import { operations } from "./generated/manifest.js";
4
4
  import { schemas } from "./generated/schemas.js";
5
5
  export { operations, schemas };
6
6
  export const operationOf = (name) => {
7
7
  const operation = operations.find((item) => item.id === name);
8
8
  if (!operation)
9
- throw new CliError("validation_error", "unknown Google method; run drive api methods");
9
+ throw new CliError("validation_error", "unknown Google method; run drive api list", {
10
+ reason: "api.unknown-method",
11
+ });
10
12
  return operation;
11
13
  };
12
14
  export const validateRequest = (name, params, body) => {
@@ -1 +1 @@
1
- {"version":3,"file":"api-contract.js","sourceRoot":"","sources":["../src/api-contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-contract.js","sourceRoot":"","sources":["../src/api-contract.ts"],"names":[],"mappings":"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"}
package/dist/bin/drive.js CHANGED
@@ -1,41 +1,37 @@
1
1
  #!/usr/bin/env node
2
2
  import { execFile } from "node:child_process";
3
- import { CliError, exitCodeFor, isCliError } from "@wirecat/cli-base";
3
+ import { CliError, catchCrashes, processStreams } from "@wirecat/cli-base";
4
4
  import { CommanderError } from "commander";
5
+ import { interactiveOf, REASONS, reportFailure } from "../failure.js";
5
6
  import { createProgram } from "../program.js";
7
+ const args = process.argv.slice(2);
8
+ const tty = process.stdout.isTTY === true;
9
+ const release = catchCrashes({ cli: "drive", interactive: interactiveOf(args, tty), reasons: REASONS });
6
10
  const controller = new AbortController();
7
11
  const cancelled = () => controller.abort();
8
12
  process.once("SIGINT", cancelled);
9
13
  process.once("SIGTERM", cancelled);
14
+ let program;
10
15
  try {
11
- await createProgram({
16
+ program = createProgram({
12
17
  signal: controller.signal,
13
18
  openBrowser: (url) => new Promise((resolve, reject) => {
14
19
  const command = process.platform === "darwin" ? "open" : process.platform === "win32" ? "rundll32.exe" : "xdg-open";
15
- const args = process.platform === "win32" ? ["url.dll,FileProtocolHandler", url] : [url];
16
- execFile(command, args, { timeout: 10000, windowsHide: true }, (error) => error ? reject(new CliError("configuration_error", "open the printed Google sign-in URL")) : resolve());
20
+ const browserArgs = process.platform === "win32" ? ["url.dll,FileProtocolHandler", url] : [url];
21
+ execFile(command, browserArgs, { timeout: 10000, windowsHide: true }, (error) => error ? reject(new CliError("configuration_error", "open the printed Google sign-in URL")) : resolve());
17
22
  }),
18
- }).parseAsync(process.argv);
23
+ });
24
+ await program.parseAsync(process.argv);
19
25
  }
20
26
  catch (error) {
21
- if (error instanceof CommanderError) {
22
- if (error.exitCode === 0)
23
- process.exitCode = 0;
24
- else {
25
- process.stderr.write(`${JSON.stringify({ error: { code: "validation_error", message: "invalid command arguments; use drive --help" } })}\n`);
26
- process.exitCode = exitCodeFor("validation_error");
27
- }
28
- }
29
- else {
30
- const safe = isCliError(error)
31
- ? error
32
- : new CliError("provider_error", "operation failed; credential and provider details were not logged");
33
- process.stderr.write(`${JSON.stringify({ error: { code: safe.code, message: safe.message, ...safe.details } })}\n`);
34
- process.exitCode = exitCodeFor(safe.code);
35
- }
27
+ if (error instanceof CommanderError && error.exitCode === 0)
28
+ process.exitCode = 0;
29
+ else
30
+ process.exitCode = reportFailure(error, { args, program, streams: processStreams, tty });
36
31
  }
37
32
  finally {
38
33
  process.removeListener("SIGINT", cancelled);
39
34
  process.removeListener("SIGTERM", cancelled);
35
+ release();
40
36
  }
41
37
  //# sourceMappingURL=drive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"drive.js","sourceRoot":"","sources":["../../src/bin/drive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drive.js","sourceRoot":"","sources":["../../src/bin/drive.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EAAgB,cAAc,EAAE,MAAM,WAAW,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAClC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAA;AACzC,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;AACvG,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;AACxC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;AAC1C,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;AACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;AAClC,IAAI,OAA4B,CAAA;AAChC,IAAI,CAAC;IACH,OAAO,GAAG,aAAa,CAAC;QACtB,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CACnB,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpC,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAA;YACrG,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YAC/F,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAC9E,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,qBAAqB,EAAE,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CACvG,CAAA;QACH,CAAC,CAAC;KACL,CAAC,CAAA;IACF,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AACxC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,IAAI,KAAK,YAAY,cAAc,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;;QAC5E,OAAO,CAAC,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,CAAA;AAC/F,CAAC;QAAS,CAAC;IACT,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAC3C,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAC5C,OAAO,EAAE,CAAA;AACX,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { Command } from "commander";
2
+ import type { DocumentIndex } from "./model.js";
3
+ interface Helpers {
4
+ env: NodeJS.ProcessEnv;
5
+ selected(): string;
6
+ output(value: unknown): void;
7
+ positive(input: string): number;
8
+ offset(input: string): number;
9
+ withIndex<T>(fn: (index: DocumentIndex) => Promise<T>): Promise<T>;
10
+ }
11
+ export declare const installCatalogCommands: (program: Command, helpers: Helpers) => void;
12
+ export {};
13
+ //# sourceMappingURL=catalog-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-commands.d.ts","sourceRoot":"","sources":["../src/catalog-commands.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAK/C,UAAU,OAAO;IACf,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,QAAQ,IAAI,MAAM,CAAA;IAClB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IAC/B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IAC7B,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACnE;AACD,eAAO,MAAM,sBAAsB,YAAa,OAAO,WAAW,OAAO,SA0IxE,CAAA"}
@@ -0,0 +1,111 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ import { annotate } from "@wirecat/cli-base/commands";
3
+ import { parseLucene, validateQuery } from "@wirecat/cli-base/query";
4
+ import { CATALOG_QUERY } from "@wirecat/cli-core/store";
5
+ import { catalogFiles, catalogOutput, catalogTree } from "./catalog.js";
6
+ import { activeProfile, fileId } from "./config.js";
7
+ import { lockProfile } from "./profile-lock.js";
8
+ import { examples } from "./registry.js";
9
+ import { readState } from "./state.js";
10
+ export const installCatalogCommands = (program, helpers) => {
11
+ const { env, selected, output, positive, offset, withIndex } = helpers;
12
+ const catalog = program.command("catalog").description("browse stored Drive files and folders offline");
13
+ const run = async (fn, write = false) => {
14
+ const profile = activeProfile(env, selected());
15
+ const lock = write ? await lockProfile(env, selected()) : undefined;
16
+ try {
17
+ return await withIndex(async (index) => {
18
+ if (!index.catalog)
19
+ throw new CliError("configuration_error", "index has no shared catalog adapter", {
20
+ reason: "catalog.unavailable",
21
+ });
22
+ lock?.assertHeld();
23
+ const value = await fn({ ...index, catalog: index.catalog }, profile.principal);
24
+ lock?.assertHeld();
25
+ return value;
26
+ });
27
+ }
28
+ finally {
29
+ await lock?.release();
30
+ }
31
+ };
32
+ const entry = async (index, principal, id) => {
33
+ const found = await index.catalog?.get(principal, fileId(id));
34
+ if (!found)
35
+ throw new CliError("not_found", "file or folder is not in the active local catalog; run catalog import or sync", {
36
+ reason: "catalog.not-found",
37
+ });
38
+ return found;
39
+ };
40
+ const local = (command, mutates = false) => {
41
+ annotate(command, { local: true, mutates });
42
+ return command;
43
+ };
44
+ examples(local(catalog.command("import").description("put cached file and folder metadata into the shared database"), true), ["drive personal catalog import --offline"]).action(async () => output(await run(async (index, principal) => {
45
+ const state = readState(env, selected(), principal);
46
+ return index.catalog.import(principal, catalogFiles(state, activeProfile(env, selected()).roots));
47
+ }, true)));
48
+ examples(local(catalog.command("show").description("show stored metadata and the stable file or folder reference")), [
49
+ "drive personal catalog show FILE_ID --offline",
50
+ ])
51
+ .argument("<file>", "Google file or folder id, or its Drive URL")
52
+ .action(async (id) => output(await run(async (index, principal) => catalogOutput(await entry(index, principal, id)))));
53
+ const list = async (words, args, search) => {
54
+ const ast = words.length
55
+ ? validateQuery(parseLucene(words.join(" "), { defaultField: search ? "text" : "none" }), CATALOG_QUERY)
56
+ : undefined;
57
+ output(await run(async (index, principal) => {
58
+ const result = await index.catalog.list(principal, {
59
+ ast,
60
+ limit: args.limit,
61
+ offset: (args.page - 1) * args.limit,
62
+ });
63
+ return { items: result.items.map(catalogOutput), has_more: result.hasMore };
64
+ }));
65
+ };
66
+ for (const action of ["list", "search"]) {
67
+ const command = examples(local(catalog
68
+ .command(action)
69
+ .description(action === "list"
70
+ ? "list cached files and folders using metadata queries"
71
+ : "search cached names, descriptions, types and observed people")), [
72
+ action === "list"
73
+ ? 'drive personal catalog list "parent:FOLDER_ID AND kind:file" --offline'
74
+ : 'drive personal catalog search "budget AND person:Rin*" --offline',
75
+ ])
76
+ .argument(action === "list" ? "[query...]" : "<query...>", "metadata query: kind, mime, name, parent, person, tag; AND, OR, NOT")
77
+ .option("--limit <n>", "how many entries to return (at most 1000)", positive, 50)
78
+ .option("--page <n>", "which page to return", positive, 1)
79
+ .action(async (words, args) => list(words, args, action === "search"));
80
+ annotate(command, { query: CATALOG_QUERY, output: { entity: "document" } });
81
+ }
82
+ examples(local(catalog.command("tree").description("show the cached hierarchy below a folder or all selected roots")), ["drive personal catalog tree --offline", "drive personal catalog tree FOLDER_ID --depth 3 --offline"])
83
+ .argument("[folder]", "Google folder id or URL; defaults to the explicitly selected profile's roots")
84
+ .option("--depth <n>", "maximum descendant depth, from 0 to 50", offset, 5)
85
+ .action(async (id, args) => output(await run(async (index, principal) => {
86
+ const items = [];
87
+ for (let skip = 0; skip < 10000; skip += 1000) {
88
+ const page = await index.catalog.list(principal, { limit: 1000, offset: skip });
89
+ items.push(...page.items);
90
+ if (!page.hasMore)
91
+ break;
92
+ }
93
+ const roots = id ? [fileId(id)] : activeProfile(env, selected()).roots;
94
+ return {
95
+ items: catalogTree(items, roots.map((root) => `${root}.md`), args.depth),
96
+ };
97
+ })));
98
+ const tags = catalog.command("tags").description("add owner tags to cached files or folders");
99
+ for (const action of ["list", "add", "remove"]) {
100
+ const command = examples(local(tags.command(action).description(`${action} local tags on a cached file or folder`), action !== "list"), [`drive personal catalog tags ${action} FOLDER_ID${action === "list" ? "" : " project"} --offline`]).argument("<file>", "Google file or folder id, or its Drive URL");
101
+ if (action !== "list")
102
+ command.argument("<tags...>", "local tag names");
103
+ command.action(async (id, values) => output(await run(async (index, principal) => {
104
+ const found = await entry(index, principal, id);
105
+ if (!index.knowledge)
106
+ throw new CliError("configuration_error", "index has no shared knowledge adapter");
107
+ return index.knowledge.tags(principal, found.ref, action, action === "list" ? undefined : values);
108
+ }, action !== "list")));
109
+ }
110
+ };
111
+ //# sourceMappingURL=catalog-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-commands.js","sourceRoot":"","sources":["../src/catalog-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { CatalogEntry, CatalogInput, CatalogQuery } from "@wirecat/cli-core/store";
2
+ import { type FileMetadata, type SyncState } from "./model.js";
3
+ export declare const catalogInput: (file: FileMetadata) => CatalogInput;
4
+ export interface SourceCatalog {
5
+ import(principal: string, files: FileMetadata[]): Promise<{
6
+ entries: number;
7
+ retired: number;
8
+ }>;
9
+ get(principal: string, id: string): Promise<CatalogEntry | undefined>;
10
+ list(principal: string, query?: CatalogQuery): Promise<{
11
+ items: CatalogEntry[];
12
+ hasMore: boolean;
13
+ }>;
14
+ }
15
+ export declare const catalogFiles: (state: SyncState, roots: string[]) => FileMetadata[];
16
+ export interface CatalogTree {
17
+ item: Pick<CatalogEntry, "ref" | "name" | "kind" | "url" | "content"> & {
18
+ id: string;
19
+ };
20
+ children: CatalogTree[];
21
+ truncated: boolean;
22
+ }
23
+ export declare const catalogTree: (entries: CatalogEntry[], roots: string[], depth: number) => CatalogTree[];
24
+ export declare const catalogId: (entry: CatalogEntry) => string;
25
+ export declare const catalogOutput: (entry: CatalogEntry) => {
26
+ id: string;
27
+ ref: string;
28
+ kind: "file" | "folder";
29
+ name: string;
30
+ parents: string[];
31
+ url: string | undefined;
32
+ mime: string | undefined;
33
+ size: number | undefined;
34
+ created_at: string | undefined;
35
+ modified_at: string | undefined;
36
+ observed_at: string;
37
+ description: string | undefined;
38
+ actors: import("@wirecat/cli-core/store").CatalogActor[] | undefined;
39
+ provider_metadata: unknown;
40
+ active: boolean;
41
+ content: "indexed" | "metadata" | "unreadable";
42
+ };
43
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACvF,OAAO,EAAE,KAAK,YAAY,EAAU,KAAK,SAAS,EAAE,MAAM,YAAY,CAAA;AAGtE,eAAO,MAAM,YAAY,SAAU,YAAY,KAAG,YAwBhD,CAAA;AACF,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC/F,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAA;IACrE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CACpG;AACD,eAAO,MAAM,YAAY,UAAW,SAAS,SAAS,MAAM,EAAE,KAAG,YAAY,EAY5E,CAAA;AACD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IACtF,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,SAAS,EAAE,OAAO,CAAA;CACnB;AACD,eAAO,MAAM,WAAW,YAAa,YAAY,EAAE,SAAS,MAAM,EAAE,SAAS,MAAM,KAAG,WAAW,EA0ChG,CAAA;AACD,eAAO,MAAM,SAAS,UAAW,YAAY,KAAG,MAA+C,CAAA;AAC/F,eAAO,MAAM,aAAa,UAAW,YAAY;IAC/C,EAAE;IACF,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,OAAO;IACP,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,UAAU;IACV,WAAW;IACX,WAAW;IACX,WAAW;IACX,MAAM;IACN,iBAAiB;IACjB,MAAM;IACN,OAAO;CACP,CAAA"}
@@ -0,0 +1,107 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ import { FOLDER } from "./model.js";
3
+ import { within } from "./scope.js";
4
+ export const catalogInput = (file) => ({
5
+ externalId: `${file.id}.md`,
6
+ kind: file.mime === FOLDER ? "folder" : "file",
7
+ name: file.name,
8
+ parents: file.parents.map((id) => `${id}.md`),
9
+ url: file.url,
10
+ mime: file.mime,
11
+ size: file.size,
12
+ createdAt: file.createdAt,
13
+ modifiedAt: file.modifiedAt,
14
+ description: file.description,
15
+ actors: [
16
+ ...(file.owners ?? []).map((actor) => ({ ...actor, role: "owner" })),
17
+ ...(file.lastModifiedBy ? [{ ...file.lastModifiedBy, role: "editor" }] : []),
18
+ ],
19
+ metadata: file.providerMetadata ?? file,
20
+ frontMatter: {
21
+ source: "google-drive",
22
+ sourceUrl: file.url,
23
+ fileId: file.id,
24
+ mime: file.mime,
25
+ owners: file.owners ?? [],
26
+ lastModifiedBy: file.lastModifiedBy ?? null,
27
+ },
28
+ });
29
+ export const catalogFiles = (state, roots) => {
30
+ const folders = state.pending?.folders ?? state.folders;
31
+ const files = new Map(Object.values(state.documents).map((doc) => [doc.metadata.id, doc.metadata]));
32
+ for (const skip of state.skipped)
33
+ if (skip.file)
34
+ files.set(skip.id, skip.file);
35
+ for (const file of Object.values(folders))
36
+ files.set(file.id, file);
37
+ for (const job of state.pending?.jobs ?? []) {
38
+ if (job.kind === "remove")
39
+ files.delete(job.id);
40
+ else if (job.file)
41
+ files.set(job.id, job.file);
42
+ }
43
+ return [...files.values()].filter((file) => within(file, roots, folders));
44
+ };
45
+ export const catalogTree = (entries, roots, depth) => {
46
+ if (!Number.isSafeInteger(depth) || depth < 0 || depth > 50)
47
+ throw new CliError("validation_error", "tree depth must be between 0 and 50", { reason: "catalog.depth-invalid" });
48
+ const byId = new Map(entries.map((entry) => [entry.externalId, entry]));
49
+ const children = new Map();
50
+ for (const entry of entries)
51
+ for (const parent of entry.parents) {
52
+ const list = children.get(parent) ?? [];
53
+ list.push(entry);
54
+ children.set(parent, list);
55
+ }
56
+ let count = 0;
57
+ const node = (item, level, ancestors) => {
58
+ if (ancestors.has(item.externalId))
59
+ throw new CliError("invalid_response", "local folder ancestry contains a cycle", { reason: "catalog.cycle" });
60
+ if (++count > 10000)
61
+ throw new CliError("validation_error", "tree output exceeds 10000 nodes; choose a smaller folder", {
62
+ reason: "catalog.tree-limit",
63
+ });
64
+ const found = children.get(item.externalId) ?? [];
65
+ const next = new Set([...ancestors, item.externalId]);
66
+ return {
67
+ item: {
68
+ id: catalogId(item),
69
+ ref: item.ref,
70
+ name: item.name,
71
+ kind: item.kind,
72
+ url: item.url,
73
+ content: item.content,
74
+ },
75
+ children: level >= depth ? [] : found.map((child) => node(child, level + 1, next)),
76
+ truncated: level >= depth && found.length > 0,
77
+ };
78
+ };
79
+ return roots.map((id) => {
80
+ const entry = byId.get(id);
81
+ if (entry?.kind !== "folder")
82
+ throw new CliError("not_found", "folder is not in the active local catalog; run catalog import or sync", {
83
+ reason: "catalog.not-found",
84
+ });
85
+ return node(entry, 0, new Set());
86
+ });
87
+ };
88
+ export const catalogId = (entry) => entry.externalId.replace(/\.md$/, "");
89
+ export const catalogOutput = (entry) => ({
90
+ id: catalogId(entry),
91
+ ref: entry.ref,
92
+ kind: entry.kind,
93
+ name: entry.name,
94
+ parents: entry.parents.map((id) => id.replace(/\.md$/, "")),
95
+ url: entry.url,
96
+ mime: entry.mime,
97
+ size: entry.size,
98
+ created_at: entry.createdAt,
99
+ modified_at: entry.modifiedAt,
100
+ observed_at: entry.observedAt,
101
+ description: entry.description,
102
+ actors: entry.actors,
103
+ provider_metadata: entry.metadata,
104
+ active: entry.active,
105
+ content: entry.content,
106
+ });
107
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -15,9 +15,11 @@ export declare const ConfigSchema: v.StrictObjectSchema<{
15
15
  }, undefined>, undefined>, undefined>;
16
16
  readonly readOnly: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
17
17
  readonly permissions: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.PicklistSchema<readonly ["deny", "readonly", "ask", "allow"], undefined>, undefined>, undefined>;
18
+ readonly maxTextChars: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 2000000, undefined>]>, undefined>;
18
19
  readonly principal: v.StringSchema<undefined>;
19
20
  readonly roots: v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>]>, undefined>;
20
21
  readonly storage: v.PicklistSchema<["keyring", "file"], undefined>;
22
+ readonly pictureSearch: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
21
23
  }, undefined>, undefined>;
22
24
  readonly defaults: v.OptionalSchema<v.StrictObjectSchema<{
23
25
  embeddingProvider: v.OptionalSchema<v.PicklistSchema<["local", "openai"], undefined>, undefined>;
@@ -34,6 +36,7 @@ export declare const ConfigSchema: v.StrictObjectSchema<{
34
36
  }, undefined>, undefined>, undefined>;
35
37
  readOnly: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
36
38
  permissions: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.PicklistSchema<readonly ["deny", "readonly", "ask", "allow"], undefined>, undefined>, undefined>;
39
+ maxTextChars: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 2000000, undefined>]>, undefined>;
37
40
  }, undefined>, undefined>;
38
41
  readonly defaultProfile: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
39
42
  }, undefined>;
@@ -62,13 +65,18 @@ export declare const activeProfile: (env: NodeJS.ProcessEnv, name: string) => {
62
65
  permissions?: {
63
66
  [x: string]: "allow" | "ask" | "deny" | "readonly";
64
67
  } | undefined;
68
+ maxTextChars?: number | undefined;
65
69
  principal: string;
66
70
  roots: string[];
67
71
  storage: "file" | "keyring";
72
+ pictureSearch?: boolean | undefined;
68
73
  };
69
74
  export interface OAuthApplication {
70
75
  clientId: string;
71
76
  clientSecret?: string;
72
77
  }
78
+ export declare const checkTextLimit: (value: unknown) => number;
79
+ export declare const textLimit: (env: NodeJS.ProcessEnv, name: string) => number;
80
+ export declare const pictureSearch: (env: NodeJS.ProcessEnv, name: string) => boolean;
73
81
  export declare const application: (env: NodeJS.ProcessEnv, file?: string) => OAuthApplication;
74
82
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAc5B,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAIvB,CAAA;AACF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,YAAY,CAAC,CAAA;AACvD,eAAO,MAAM,KAAK,QAAS,MAAM,CAAC,UAAU,sCAAiE,CAAA;AAC7G,eAAO,MAAM,UAAU,QAAS,MAAM,CAAC,UAAU,KAAG,MAMnD,CAAA;AACD,eAAO,MAAM,WAAW,QAAS,MAAM,CAAC,UAAU,UAAU,MAAM,SAIjE,CAAA;AACD,eAAO,MAAM,WAAW,6BAAoB,CAAA;AAC5C,eAAO,MAAM,MAAM,UAAW,MAAM,KAAG,MAUtC,CAAA;AACD,eAAO,MAAM,aAAa,QAAS,MAAM,CAAC,UAAU,QAAQ,MAAM;;;;;;;;;;;;;;;;;;;;;;CAKjE,CAAA;AACD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AACD,eAAO,MAAM,WAAW,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG,gBA6BnE,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAgB5B,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAIvB,CAAA;AACF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,YAAY,CAAC,CAAA;AACvD,eAAO,MAAM,KAAK,QAAS,MAAM,CAAC,UAAU,sCAAiE,CAAA;AAC7G,eAAO,MAAM,UAAU,QAAS,MAAM,CAAC,UAAU,KAAG,MAMnD,CAAA;AACD,eAAO,MAAM,WAAW,QAAS,MAAM,CAAC,UAAU,UAAU,MAAM,SAIjE,CAAA;AACD,eAAO,MAAM,WAAW,6BAAoB,CAAA;AAC5C,eAAO,MAAM,MAAM,UAAW,MAAM,KAAG,MAUtC,CAAA;AACD,eAAO,MAAM,aAAa,QAAS,MAAM,CAAC,UAAU,QAAQ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;CAOjE,CAAA;AACD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AACD,eAAO,MAAM,cAAc,UAAW,OAAO,KAAG,MAS/C,CAAA;AACD,eAAO,MAAM,SAAS,QAAS,MAAM,CAAC,UAAU,QAAQ,MAAM,KAAG,MACkC,CAAA;AACnG,eAAO,MAAM,aAAa,QAAS,MAAM,CAAC,UAAU,QAAQ,MAAM,KAAG,OACpB,CAAA;AACjD,eAAO,MAAM,WAAW,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG,gBA6BnE,CAAA"}
package/dist/config.js CHANGED
@@ -1,19 +1,22 @@
1
1
  import { readFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { CliError, loadConfigFile, resolvePaths, saveConfigFile } from "@wirecat/cli-base";
4
- import { AI_ENTRIES, usableProfileName } from "@wirecat/cli-messaging/cli";
5
- import { LEVELS } from "@wirecat/cli-messaging/sends";
4
+ import { AI_ENTRIES, usableProfileName } from "@wirecat/cli-core/cli";
5
+ import { MAX_TEXT_CHARS } from "@wirecat/cli-core/documents";
6
+ import { LEVELS } from "@wirecat/cli-core/sends";
6
7
  import * as v from "valibot";
7
8
  import { WIRECAT_APPLICATION } from "./oauth-application.js";
8
9
  const Common = {
9
10
  ...AI_ENTRIES,
10
11
  readOnly: v.optional(v.boolean()),
11
12
  permissions: v.optional(v.record(v.string(), v.picklist(LEVELS))),
13
+ maxTextChars: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(MAX_TEXT_CHARS))),
12
14
  };
13
15
  const Profile = v.strictObject({
14
16
  principal: v.string(),
15
17
  roots: v.array(v.pipe(v.string(), v.regex(/^[A-Za-z0-9_-]{1,200}$/))),
16
18
  storage: v.picklist(["keyring", "file"]),
19
+ pictureSearch: v.optional(v.boolean()),
17
20
  ...Common,
18
21
  });
19
22
  export const ConfigSchema = v.strictObject({
@@ -52,9 +55,20 @@ export const fileId = (input) => {
52
55
  export const activeProfile = (env, name) => {
53
56
  const profile = readConfig(env).profiles[profileName(name)];
54
57
  if (!profile)
55
- throw new CliError("authentication_error", `profile ${name} is not signed in — drive ${name} session start`);
58
+ throw new CliError("authentication_error", `profile ${name} is not signed in — drive ${name} session start`, {
59
+ reason: "profile.not-signed-in",
60
+ });
56
61
  return profile;
57
62
  };
63
+ export const checkTextLimit = (value) => {
64
+ if (typeof value !== "number" || !Number.isInteger(value) || value < 1)
65
+ throw new CliError("validation_error", "maxTextChars must be a positive whole number of characters");
66
+ if (value > MAX_TEXT_CHARS)
67
+ throw new CliError("validation_error", `maxTextChars can be at most ${MAX_TEXT_CHARS}: the document readers return at most that many characters`);
68
+ return value;
69
+ };
70
+ export const textLimit = (env, name) => activeProfile(env, name).maxTextChars ?? readConfig(env).defaults?.maxTextChars ?? MAX_TEXT_CHARS;
71
+ export const pictureSearch = (env, name) => activeProfile(env, name).pictureSearch ?? false;
58
72
  export const application = (env, file) => {
59
73
  if (!file) {
60
74
  if (!env.DRIVE_GOOGLE_CLIENT_ID) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,MAAM,mBAAmB,CAAA;AAGxD,eAAO,MAAM,WAAW,UAAW,OAAO,KAAG,QAsC5C,CAAA"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,MAAM,mBAAmB,CAAA;AAGxD,eAAO,MAAM,WAAW,UAAW,OAAO,KAAG,QAkD5C,CAAA"}