scoutline 0.2.0 → 0.6.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 +240 -18
- package/dist/capabilities/diagnostics.d.ts +70 -32
- package/dist/capabilities/diagnostics.d.ts.map +1 -1
- package/dist/capabilities/diagnostics.js +97 -46
- package/dist/capabilities/diagnostics.js.map +1 -1
- package/dist/capabilities/reader.d.ts +227 -0
- package/dist/capabilities/reader.d.ts.map +1 -0
- package/dist/capabilities/reader.js +100 -0
- package/dist/capabilities/reader.js.map +1 -0
- package/dist/capabilities/repository.d.ts +221 -0
- package/dist/capabilities/repository.d.ts.map +1 -0
- package/dist/capabilities/repository.js +172 -0
- package/dist/capabilities/repository.js.map +1 -0
- package/dist/commands/cache.d.ts +106 -0
- package/dist/commands/cache.d.ts.map +1 -0
- package/dist/commands/cache.js +203 -0
- package/dist/commands/cache.js.map +1 -0
- package/dist/commands/doctor.d.ts +17 -6
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +42 -17
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/read.d.ts +74 -14
- package/dist/commands/read.d.ts.map +1 -1
- package/dist/commands/read.js +257 -117
- package/dist/commands/read.js.map +1 -1
- package/dist/commands/repo.d.ts +53 -7
- package/dist/commands/repo.d.ts.map +1 -1
- package/dist/commands/repo.js +104 -123
- package/dist/commands/repo.js.map +1 -1
- package/dist/commands/repository-explorer.d.ts +147 -0
- package/dist/commands/repository-explorer.d.ts.map +1 -0
- package/dist/commands/repository-explorer.js +550 -0
- package/dist/commands/repository-explorer.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +209 -34
- package/dist/index.js.map +1 -1
- package/dist/lib/cache.d.ts +123 -18
- package/dist/lib/cache.d.ts.map +1 -1
- package/dist/lib/cache.js +324 -49
- package/dist/lib/cache.js.map +1 -1
- package/dist/lib/errors.d.ts +24 -1
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +33 -2
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/execution.d.ts +119 -5
- package/dist/lib/execution.d.ts.map +1 -1
- package/dist/lib/execution.js +216 -10
- package/dist/lib/execution.js.map +1 -1
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/mcp-client.d.ts +29 -5
- package/dist/lib/mcp-client.d.ts.map +1 -1
- package/dist/lib/mcp-client.js +88 -88
- package/dist/lib/mcp-client.js.map +1 -1
- package/dist/lib/tool-cache.d.ts +86 -0
- package/dist/lib/tool-cache.d.ts.map +1 -0
- package/dist/lib/tool-cache.js +123 -0
- package/dist/lib/tool-cache.js.map +1 -0
- package/dist/providers/minimax/adapter.d.ts +6 -4
- package/dist/providers/minimax/adapter.d.ts.map +1 -1
- package/dist/providers/minimax/adapter.js +64 -57
- package/dist/providers/minimax/adapter.js.map +1 -1
- package/dist/providers/minimax/coding-plan-client.d.ts +60 -0
- package/dist/providers/minimax/coding-plan-client.d.ts.map +1 -0
- package/dist/providers/minimax/coding-plan-client.js +204 -0
- package/dist/providers/minimax/coding-plan-client.js.map +1 -0
- package/dist/providers/minimax/media.d.ts +60 -6
- package/dist/providers/minimax/media.d.ts.map +1 -1
- package/dist/providers/minimax/media.js +147 -7
- package/dist/providers/minimax/media.js.map +1 -1
- package/dist/providers/minimax/quota-client.d.ts +13 -6
- package/dist/providers/minimax/quota-client.d.ts.map +1 -1
- package/dist/providers/minimax/quota-client.js +5 -0
- package/dist/providers/minimax/quota-client.js.map +1 -1
- package/dist/providers/minimax/vision-attestations.d.ts +23 -0
- package/dist/providers/minimax/vision-attestations.d.ts.map +1 -1
- package/dist/providers/minimax/vision-attestations.js +35 -10
- package/dist/providers/minimax/vision-attestations.js.map +1 -1
- package/dist/providers/minimax/vision-conformance.d.ts +8 -6
- package/dist/providers/minimax/vision-conformance.d.ts.map +1 -1
- package/dist/providers/minimax/vision-conformance.js +8 -6
- package/dist/providers/minimax/vision-conformance.js.map +1 -1
- package/dist/providers/minimax/vision-revisions.d.ts +8 -1
- package/dist/providers/minimax/vision-revisions.d.ts.map +1 -1
- package/dist/providers/minimax/vision-revisions.js +13 -6
- package/dist/providers/minimax/vision-revisions.js.map +1 -1
- package/dist/providers/selection.d.ts +3 -3
- package/dist/providers/selection.js +3 -3
- package/dist/providers/types.d.ts +66 -32
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js.map +1 -1
- package/dist/providers/zai/adapter.d.ts.map +1 -1
- package/dist/providers/zai/adapter.js +71 -5
- package/dist/providers/zai/adapter.js.map +1 -1
- package/dist/providers/zai/encoded-error.d.ts +90 -0
- package/dist/providers/zai/encoded-error.d.ts.map +1 -0
- package/dist/providers/zai/encoded-error.js +169 -0
- package/dist/providers/zai/encoded-error.js.map +1 -0
- package/dist/providers/zai/reader.d.ts +82 -0
- package/dist/providers/zai/reader.d.ts.map +1 -0
- package/dist/providers/zai/reader.js +490 -0
- package/dist/providers/zai/reader.js.map +1 -0
- package/dist/providers/zai/repository.d.ts +76 -0
- package/dist/providers/zai/repository.d.ts.map +1 -0
- package/dist/providers/zai/repository.js +715 -0
- package/dist/providers/zai/repository.js.map +1 -0
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAwCpE,SAAS,SAAS;IAChB,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,aAAa,CAC1B,UAA8B,EAC9B,GAAsB,EACtB,KAAoC,EACpC,MAAoB;IAEpB,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAA2B,CAAC;IACrE,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IACvC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,0BAA0B,CAAC,UAAU,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,wBAAwB,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;QACvF,KAAK;QACL,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAmC;IAEnC,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5C,MAAM,WAAW,GAA6B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAClF,QAAQ,EAAE,UAAU,CAAC,EAAE;QACvB,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7C,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;KAC7C,CAAC,CAAC,CAAC;IAEJ,MAAM,SAAS,GAAyB,IAAI,CAAC,OAAO;QAClD,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC1B,GAAG,KAAK;YACR,MAAM,EAAE,SAAkB;YAC1B,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAE,gBAA0B,CAAC,CAAC,CAAE,gBAA0B;SACrF,CAAC,CAAC;QACL,CAAC,CAAC,MAAM,YAAY,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAEnD,gEAAgE;IAChE,qEAAqE;IACrE,4CAA4C;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IAE3F,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,kBAAkB,EAAE,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC;QAC9D,mBAAmB,EAAE,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC;QAChE,IAAI,EAAE;YACJ,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,mBAAmB,EAAE,SAAS,EAAE,IAAI,EAAE;SACvC;QACD,SAAS;QACT,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,YAAY,CACzB,WAAqC,EACrC,IAAmC,EACnC,OAAiB;IAEjB,MAAM,iBAAiB,GAAG,WAAW;SAClC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACtD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IAEjC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,iBAAiB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9B,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAC1E,CACF,CAAC;IAEF,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/B,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,SAAkB,EAAE,MAAM,EAAE,gBAAyB,EAAE,CAAC;QACrF,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,IAAa,EAAE,CAAC;QAC7C,CAAC;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAE9E,CAAC;QACF,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,OAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,MAAyB;IACtD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACxF,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,UAAU;QAAE,OAAO,CAAC,CAAC;IAClD,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,CAAC,CAAC;IACjE,OAAO,CAAC,CAAC;AACX,CAAC;AAmBD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,IAA+B;IAE/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IACxC,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuD1B,CAAC,IAAI,EAAE,CAAC"}
|
package/dist/commands/read.d.ts
CHANGED
|
@@ -1,21 +1,45 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Web reader command
|
|
2
|
+
* Web reader command — thin handler over the Reader Capability
|
|
3
|
+
* (DESIGN.md §18, reader-migration-core-flows, reader-migration-tech-plan
|
|
4
|
+
* Ticket 04).
|
|
3
5
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* The handler applies parse-level validation only (URL scheme, --extract
|
|
7
|
+
* mode), delegates to `capability.fetch(request)` through shared
|
|
8
|
+
* execution, then projects the normalized `ReaderFetchResult` into the
|
|
9
|
+
* public v1 envelope(s) (content read vs extract read). The Adapter
|
|
10
|
+
* (providers/zai/reader.ts) owns URL rewrite, credentials, transport,
|
|
11
|
+
* raw response parsing, cache identity, and retry/terminal
|
|
12
|
+
* classification; the handler owns projection (`--max-chars` truncation,
|
|
13
|
+
* `--extract` slicing), output-mode presentation, and the
|
|
14
|
+
* schema-version-1 envelope migration.
|
|
8
15
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
16
|
+
* Provider selection, capability support, configuration, Adapter
|
|
17
|
+
* construction, and adapter.reader agreement live in `src/index.ts`.
|
|
18
|
+
*
|
|
19
|
+
* Handler interface (P6-07A pattern): `deps: ReadHandlerDependencies`
|
|
20
|
+
* is REQUIRED — production and direct tests cross the same compile-
|
|
21
|
+
* checked Interface. An optional trailing `CommandContext` follows when
|
|
22
|
+
* a caller wants to surface per-invocation context; the handler does
|
|
23
|
+
* not currently read it. A `CommandContext` is NOT a valid substitute
|
|
24
|
+
* for `deps`.
|
|
25
|
+
*
|
|
26
|
+
* Output-mode behavior (core-flows table):
|
|
27
|
+
*
|
|
28
|
+
* - data: the envelope object (content or extract).
|
|
29
|
+
* - json / pretty: standard `{success, data, timestamp}` envelope.
|
|
30
|
+
* - compact / markdown / refs / tty:
|
|
31
|
+
* * content read → the `content` string directly (presentations).
|
|
32
|
+
* * extract read → JSON fallback (the extract envelope object);
|
|
33
|
+
* no presentation override because extracted items are data,
|
|
34
|
+
* not prose.
|
|
35
|
+
*
|
|
36
|
+
* `--full-envelope` is silently accepted and ignored (D3): the v1
|
|
37
|
+
* envelope is always returned.
|
|
15
38
|
*/
|
|
16
|
-
import { type ExtractMode } from "../lib/extract.js";
|
|
17
39
|
import type { CommandContext, CommandResult } from "../command-invocation.js";
|
|
18
|
-
import type {
|
|
40
|
+
import type { ReaderCapability } from "../capabilities/reader.js";
|
|
41
|
+
import type { ExecutionDependencies } from "../lib/execution.js";
|
|
42
|
+
import { type ExtractMode } from "../lib/extract.js";
|
|
19
43
|
export interface ReadOptions {
|
|
20
44
|
format?: "markdown" | "text";
|
|
21
45
|
noImages?: boolean;
|
|
@@ -26,9 +50,45 @@ export interface ReadOptions {
|
|
|
26
50
|
keepImgDataUrl?: boolean;
|
|
27
51
|
withImagesSummary?: boolean;
|
|
28
52
|
maxChars?: number;
|
|
53
|
+
/**
|
|
54
|
+
* Silently accepted and ignored at v1 (core-flows D3). The envelope
|
|
55
|
+
* is always returned. Retained on the options type so callers and
|
|
56
|
+
* `handleRead` parse it without errors; it never reaches the Adapter
|
|
57
|
+
* request, the cache identity, or the projection.
|
|
58
|
+
*/
|
|
29
59
|
fullEnvelope?: boolean;
|
|
30
60
|
extract?: ExtractMode;
|
|
31
61
|
}
|
|
32
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Dependencies injected by `src/index.ts` after Provider selection,
|
|
64
|
+
* capability support check, configuration check, Adapter construction,
|
|
65
|
+
* and adapter.reader agreement. The handler never resolves a Provider
|
|
66
|
+
* descriptor itself. Required — a caller that omits `deps` is malformed
|
|
67
|
+
* and fails loudly (a `CommandContext` is NOT a valid substitute).
|
|
68
|
+
*/
|
|
69
|
+
export interface ReadHandlerDependencies {
|
|
70
|
+
readonly capability: ReaderCapability;
|
|
71
|
+
readonly execution: ExecutionDependencies;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Read web page content through the injected Reader Capability.
|
|
75
|
+
*
|
|
76
|
+
* Ordering:
|
|
77
|
+
* 1. Parse-level validation (URL scheme, --extract mode). Throws
|
|
78
|
+
* `ValidationError` BEFORE the Adapter or shared execution is
|
|
79
|
+
* reached.
|
|
80
|
+
* 2. Build the Provider-neutral request and delegate to
|
|
81
|
+
* `executeProviderOperation` with shared cache + retry policy.
|
|
82
|
+
* 3. Project the normalized result:
|
|
83
|
+
* - `--extract` slicing into the extract envelope (sets `mode`,
|
|
84
|
+
* `items`, `originalItemCount`); `--max-chars` is IGNORED.
|
|
85
|
+
* - Otherwise, `--max-chars` truncation on `content` (sets
|
|
86
|
+
* `truncated`, `originalContentLength`).
|
|
87
|
+
* 4. Set presentations so text-oriented modes (compact/markdown/
|
|
88
|
+
* refs/tty) emit `content` directly for content reads. Extract
|
|
89
|
+
* reads omit presentations; text modes then fall back to JSON
|
|
90
|
+
* (the extract envelope), matching the core-flows table.
|
|
91
|
+
*/
|
|
92
|
+
export declare function read(url: string, options: ReadOptions | undefined, deps: ReadHandlerDependencies, _context?: CommandContext): Promise<CommandResult>;
|
|
33
93
|
export declare const READ_HELP: string;
|
|
34
94
|
//# sourceMappingURL=read.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/commands/read.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/commands/read.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAIjE,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAM7E,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;CAC3C;AAkID;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,IAAI,CACxB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,WAAW,YAAK,EACzB,IAAI,EAAE,uBAAuB,EAC7B,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,aAAa,CAAC,CA6CxB;AAaD,eAAO,MAAM,SAAS,QAwFd,CAAC"}
|
package/dist/commands/read.js
CHANGED
|
@@ -1,165 +1,305 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Web reader command
|
|
2
|
+
* Web reader command — thin handler over the Reader Capability
|
|
3
|
+
* (DESIGN.md §18, reader-migration-core-flows, reader-migration-tech-plan
|
|
4
|
+
* Ticket 04).
|
|
3
5
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* The handler applies parse-level validation only (URL scheme, --extract
|
|
7
|
+
* mode), delegates to `capability.fetch(request)` through shared
|
|
8
|
+
* execution, then projects the normalized `ReaderFetchResult` into the
|
|
9
|
+
* public v1 envelope(s) (content read vs extract read). The Adapter
|
|
10
|
+
* (providers/zai/reader.ts) owns URL rewrite, credentials, transport,
|
|
11
|
+
* raw response parsing, cache identity, and retry/terminal
|
|
12
|
+
* classification; the handler owns projection (`--max-chars` truncation,
|
|
13
|
+
* `--extract` slicing), output-mode presentation, and the
|
|
14
|
+
* schema-version-1 envelope migration.
|
|
8
15
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
16
|
+
* Provider selection, capability support, configuration, Adapter
|
|
17
|
+
* construction, and adapter.reader agreement live in `src/index.ts`.
|
|
18
|
+
*
|
|
19
|
+
* Handler interface (P6-07A pattern): `deps: ReadHandlerDependencies`
|
|
20
|
+
* is REQUIRED — production and direct tests cross the same compile-
|
|
21
|
+
* checked Interface. An optional trailing `CommandContext` follows when
|
|
22
|
+
* a caller wants to surface per-invocation context; the handler does
|
|
23
|
+
* not currently read it. A `CommandContext` is NOT a valid substitute
|
|
24
|
+
* for `deps`.
|
|
25
|
+
*
|
|
26
|
+
* Output-mode behavior (core-flows table):
|
|
27
|
+
*
|
|
28
|
+
* - data: the envelope object (content or extract).
|
|
29
|
+
* - json / pretty: standard `{success, data, timestamp}` envelope.
|
|
30
|
+
* - compact / markdown / refs / tty:
|
|
31
|
+
* * content read → the `content` string directly (presentations).
|
|
32
|
+
* * extract read → JSON fallback (the extract envelope object);
|
|
33
|
+
* no presentation override because extracted items are data,
|
|
34
|
+
* not prose.
|
|
35
|
+
*
|
|
36
|
+
* `--full-envelope` is silently accepted and ignored (D3): the v1
|
|
37
|
+
* envelope is always returned.
|
|
15
38
|
*/
|
|
16
|
-
import {
|
|
39
|
+
import { executeReaderOperation } from "../lib/execution.js";
|
|
40
|
+
import { OUTPUT_MODES } from "../lib/output.js";
|
|
17
41
|
import { ValidationError } from "../lib/errors.js";
|
|
18
42
|
import { extract, isExtractMode } from "../lib/extract.js";
|
|
43
|
+
// ---------------------------------------------------------------------------
|
|
44
|
+
// Parse-level validation
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
19
46
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* gist.github.com/<user>/<id> -> gist.github.com/<user>/<id>/raw
|
|
25
|
-
* gist.github.com/<user>/<id>#file-... -> gist.github.com/<user>/<id>/raw
|
|
26
|
-
*
|
|
27
|
-
* Leaves alone: URLs that already end in /raw, /raw/<rev>, or have a query string.
|
|
47
|
+
* Validate the URL at parse time. Only `http://` and `https://` schemes
|
|
48
|
+
* are accepted; everything else is a terminal `ValidationError` that
|
|
49
|
+
* fires BEFORE Provider resolution. Mirrors the v0.2 contract so direct
|
|
50
|
+
* handler tests keep their assertion shape.
|
|
28
51
|
*/
|
|
29
|
-
function
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
// Only rewrite gist.github.com (not github.com/owner/repo — that's different)
|
|
34
|
-
const m = url.match(/^(https?:\/\/gist\.github\.com\/[^/]+\/[^/#?]+)(?:[/?#]|$)/);
|
|
35
|
-
if (!m)
|
|
36
|
-
return url;
|
|
37
|
-
const base = m[1];
|
|
38
|
-
// Append /raw, preserve any fragment (file anchor still meaningful)
|
|
39
|
-
const frag = url.indexOf("#") >= 0 ? url.slice(url.indexOf("#")) : "";
|
|
40
|
-
return `${base}/raw${frag}`;
|
|
52
|
+
function validateUrl(url) {
|
|
53
|
+
if (!url.startsWith("http://") && !url.startsWith("https://")) {
|
|
54
|
+
throw new ValidationError("URL must start with http:// or https://");
|
|
55
|
+
}
|
|
41
56
|
}
|
|
42
57
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* output and makes truncation limits harder to reason about.
|
|
58
|
+
* Validate `--extract` mode at parse time. An invalid value is a
|
|
59
|
+
* terminal `ValidationError` that fires BEFORE Provider resolution.
|
|
46
60
|
*/
|
|
47
|
-
function
|
|
48
|
-
if (
|
|
49
|
-
|
|
50
|
-
if (response && typeof response === "object") {
|
|
51
|
-
const obj = response;
|
|
52
|
-
if (typeof obj.content === "string") {
|
|
53
|
-
return { content: obj.content, original: response };
|
|
54
|
-
}
|
|
61
|
+
function validateExtractMode(mode) {
|
|
62
|
+
if (mode !== undefined && !isExtractMode(mode)) {
|
|
63
|
+
throw new ValidationError(`Invalid --extract mode: ${mode}. Use one of: code, links, tables, headings`);
|
|
55
64
|
}
|
|
56
|
-
// Fallback: stringify whatever we got
|
|
57
|
-
return { content: JSON.stringify(response), original: response };
|
|
58
65
|
}
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
// Projection helpers
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
59
69
|
/**
|
|
60
|
-
*
|
|
61
|
-
*
|
|
70
|
+
* Apply `--max-chars` truncation to content. Mirrors the v0.2 contract:
|
|
71
|
+
* slice to `max - 1`, trim trailing whitespace, and append `…`. Returns
|
|
72
|
+
* the original text and `truncated: false` when no truncation occurs.
|
|
62
73
|
*/
|
|
63
|
-
function
|
|
74
|
+
function truncateContent(content, max) {
|
|
64
75
|
const originalLen = content.length;
|
|
65
76
|
if (!max || max <= 0 || originalLen <= max) {
|
|
66
77
|
return { text: content, originalLen, truncated: false };
|
|
67
78
|
}
|
|
68
79
|
return { text: content.slice(0, max - 1).trimEnd() + "…", originalLen, truncated: true };
|
|
69
80
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
const
|
|
79
|
-
if (
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
noGfm: options.noGfm,
|
|
92
|
-
keepImgDataUrl: options.keepImgDataUrl,
|
|
93
|
-
withImagesSummary: options.withImagesSummary,
|
|
94
|
-
});
|
|
95
|
-
const { content: rawContent } = extractContent(response);
|
|
96
|
-
// --extract short-circuits: returns the extracted slice as a JSON array,
|
|
97
|
-
// bypassing truncation and envelope logic.
|
|
98
|
-
if (options.extract) {
|
|
99
|
-
const extracted = extract(rawContent, options.extract);
|
|
100
|
-
if (context) {
|
|
101
|
-
context.notice(`ℹ️ extracted ${extracted.length} ${options.extract}`);
|
|
102
|
-
}
|
|
103
|
-
return { kind: "data", data: extracted };
|
|
104
|
-
}
|
|
105
|
-
const { text, originalLen, truncated } = truncate(rawContent, options.maxChars);
|
|
106
|
-
if (truncated && context) {
|
|
107
|
-
context.notice(`⚠️ content truncated from ${originalLen.toLocaleString()} to ${text.length.toLocaleString()} chars; use a higher --max-chars or omit it for full content`);
|
|
108
|
-
}
|
|
109
|
-
// Default: content-only (drops title/metadata/external envelope).
|
|
110
|
-
// --full-envelope, json, or pretty keeps the structured object.
|
|
111
|
-
const wantEnvelope = options.fullEnvelope || outputMode === "json" || outputMode === "pretty";
|
|
112
|
-
if (wantEnvelope) {
|
|
113
|
-
const envelope = response && typeof response === "object"
|
|
114
|
-
? { ...response, content: text }
|
|
115
|
-
: { content: text };
|
|
116
|
-
return { kind: "data", data: envelope };
|
|
117
|
-
}
|
|
118
|
-
return { kind: "data", data: text };
|
|
81
|
+
/**
|
|
82
|
+
* Build the Provider-neutral ReaderFetchRequest from ReadOptions. Built
|
|
83
|
+
* as a single fresh object so the readonly invariants on
|
|
84
|
+
* `ReaderFetchRequest` are honored. `--max-chars`, `--extract`,
|
|
85
|
+
* `--full-envelope`, `--no-cache`, and output mode NEVER appear here —
|
|
86
|
+
* they are projections applied after the cached normalized result.
|
|
87
|
+
*/
|
|
88
|
+
function buildReaderRequest(url, options) {
|
|
89
|
+
const request = { url };
|
|
90
|
+
if (options.format)
|
|
91
|
+
request.format = options.format;
|
|
92
|
+
if (options.noImages !== undefined)
|
|
93
|
+
request.retainImages = !options.noImages;
|
|
94
|
+
if (options.withLinks !== undefined)
|
|
95
|
+
request.withLinksSummary = options.withLinks;
|
|
96
|
+
if (options.noGfm !== undefined)
|
|
97
|
+
request.noGfm = options.noGfm;
|
|
98
|
+
if (options.keepImgDataUrl !== undefined)
|
|
99
|
+
request.keepImgDataUrl = options.keepImgDataUrl;
|
|
100
|
+
if (options.withImagesSummary !== undefined) {
|
|
101
|
+
request.withImagesSummary = options.withImagesSummary;
|
|
119
102
|
}
|
|
120
|
-
|
|
121
|
-
|
|
103
|
+
if (options.timeout !== undefined)
|
|
104
|
+
request.timeout = options.timeout;
|
|
105
|
+
return request;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Build the v1 content-read envelope. `truncated` and
|
|
109
|
+
* `originalContentLength` are projection state recomputed on every read;
|
|
110
|
+
* the cache stores the full content.
|
|
111
|
+
*/
|
|
112
|
+
function buildContentEnvelope(result, text, originalLen, truncated) {
|
|
113
|
+
// Preserve metadata/external verbatim when present on the cached
|
|
114
|
+
// result. Built as a fresh object so the readonly invariants on
|
|
115
|
+
// `ReaderFetchResult` are honored.
|
|
116
|
+
const envelope = {
|
|
117
|
+
schemaVersion: 1,
|
|
118
|
+
url: result.url,
|
|
119
|
+
finalUrl: result.finalUrl,
|
|
120
|
+
title: result.title,
|
|
121
|
+
content: text,
|
|
122
|
+
contentFormat: result.contentFormat,
|
|
123
|
+
truncated,
|
|
124
|
+
originalContentLength: originalLen,
|
|
125
|
+
};
|
|
126
|
+
if (result.metadata !== undefined)
|
|
127
|
+
envelope.metadata = result.metadata;
|
|
128
|
+
if (result.external !== undefined)
|
|
129
|
+
envelope.external = result.external;
|
|
130
|
+
return envelope;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Build the v1 extract-read envelope. `items` carry the extracted
|
|
134
|
+
* slice; `originalItemCount` and `truncated` report projection state.
|
|
135
|
+
* `--max-chars` is intentionally IGNORED for extract reads
|
|
136
|
+
* (truncating a code block or link list mid-item is harmful).
|
|
137
|
+
*/
|
|
138
|
+
function buildExtractEnvelope(result, mode, items) {
|
|
139
|
+
return {
|
|
140
|
+
schemaVersion: 1,
|
|
141
|
+
url: result.url,
|
|
142
|
+
finalUrl: result.finalUrl,
|
|
143
|
+
mode,
|
|
144
|
+
items,
|
|
145
|
+
truncated: false,
|
|
146
|
+
originalItemCount: items.length,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
// ---------------------------------------------------------------------------
|
|
150
|
+
// Handler
|
|
151
|
+
// ---------------------------------------------------------------------------
|
|
152
|
+
/**
|
|
153
|
+
* Read web page content through the injected Reader Capability.
|
|
154
|
+
*
|
|
155
|
+
* Ordering:
|
|
156
|
+
* 1. Parse-level validation (URL scheme, --extract mode). Throws
|
|
157
|
+
* `ValidationError` BEFORE the Adapter or shared execution is
|
|
158
|
+
* reached.
|
|
159
|
+
* 2. Build the Provider-neutral request and delegate to
|
|
160
|
+
* `executeProviderOperation` with shared cache + retry policy.
|
|
161
|
+
* 3. Project the normalized result:
|
|
162
|
+
* - `--extract` slicing into the extract envelope (sets `mode`,
|
|
163
|
+
* `items`, `originalItemCount`); `--max-chars` is IGNORED.
|
|
164
|
+
* - Otherwise, `--max-chars` truncation on `content` (sets
|
|
165
|
+
* `truncated`, `originalContentLength`).
|
|
166
|
+
* 4. Set presentations so text-oriented modes (compact/markdown/
|
|
167
|
+
* refs/tty) emit `content` directly for content reads. Extract
|
|
168
|
+
* reads omit presentations; text modes then fall back to JSON
|
|
169
|
+
* (the extract envelope), matching the core-flows table.
|
|
170
|
+
*/
|
|
171
|
+
export async function read(url, options = {}, deps, _context) {
|
|
172
|
+
// 1. Parse-level validation BEFORE Provider/Adapter work.
|
|
173
|
+
validateUrl(url);
|
|
174
|
+
validateExtractMode(options.extract);
|
|
175
|
+
// 2. Build the Provider-neutral request. Only fields that affect
|
|
176
|
+
// the Provider request or the cache identity appear here;
|
|
177
|
+
// --max-chars, --extract, --full-envelope, --no-cache, and
|
|
178
|
+
// output mode never enter the request.
|
|
179
|
+
const request = buildReaderRequest(url, options);
|
|
180
|
+
const result = await executeReaderOperation(deps.capability.fetch, request, { noCache: options.noCache === true }, deps.execution);
|
|
181
|
+
// 3. Projection.
|
|
182
|
+
if (options.extract) {
|
|
183
|
+
const items = extract(result.content, options.extract);
|
|
184
|
+
const envelope = buildExtractEnvelope(result, options.extract, items);
|
|
185
|
+
// No presentation override for extract reads: text modes fall
|
|
186
|
+
// back to JSON (the envelope) because extracted items are data,
|
|
187
|
+
// not prose.
|
|
188
|
+
return { kind: "data", data: envelope };
|
|
122
189
|
}
|
|
190
|
+
const { text, originalLen, truncated } = truncateContent(result.content, options.maxChars);
|
|
191
|
+
const envelope = buildContentEnvelope(result, text, originalLen, truncated);
|
|
192
|
+
// 4. Presentations: text-oriented modes emit `content` directly for
|
|
193
|
+
// content reads (D4 — Reader content is naturally prose). All
|
|
194
|
+
// four text modes share the same value because the page body is
|
|
195
|
+
// the same prose regardless of mode.
|
|
196
|
+
return {
|
|
197
|
+
kind: "data",
|
|
198
|
+
data: envelope,
|
|
199
|
+
presentations: {
|
|
200
|
+
compact: text,
|
|
201
|
+
markdown: text,
|
|
202
|
+
refs: text,
|
|
203
|
+
tty: text,
|
|
204
|
+
},
|
|
205
|
+
};
|
|
123
206
|
}
|
|
124
|
-
//
|
|
207
|
+
// ---------------------------------------------------------------------------
|
|
208
|
+
// Help
|
|
209
|
+
// ---------------------------------------------------------------------------
|
|
210
|
+
/**
|
|
211
|
+
* Canonical output-mode list for `--output-format`. Derived from the
|
|
212
|
+
* shared `OUTPUT_MODES` contract so the help text cannot drift from
|
|
213
|
+
* the accepted set.
|
|
214
|
+
*/
|
|
215
|
+
const OUTPUT_MODE_LIST = OUTPUT_MODES.join(" | ");
|
|
125
216
|
export const READ_HELP = `
|
|
126
|
-
Read Command - Fetch and parse web
|
|
217
|
+
Read Command - Fetch and parse web pages (Provider Capability)
|
|
127
218
|
|
|
128
219
|
Usage: scoutline read <url> [options]
|
|
129
220
|
|
|
130
221
|
URL handling:
|
|
131
|
-
gist.github.com/<user>/<id> URLs are auto-rewritten to /raw
|
|
132
|
-
file content instead of rendered HTML
|
|
222
|
+
gist.github.com/<user>/<id> URLs are auto-rewritten to /raw by the
|
|
223
|
+
Z.AI Adapter so you get pure file content instead of rendered HTML
|
|
224
|
+
chrome (Sign in / Star / Fork / Embed). The rewritten URL surfaces
|
|
225
|
+
as finalUrl in the v1 result.
|
|
226
|
+
|
|
227
|
+
Provider selection (precedence: --provider, then SCOUTLINE_PROVIDER,
|
|
228
|
+
then zai):
|
|
229
|
+
- The 'read' command participates in Provider selection.
|
|
230
|
+
- Z.AI advertises the reader Capability and supplies the Adapter;
|
|
231
|
+
selecting zai routes Read through it.
|
|
232
|
+
- MiniMax does NOT advertise reader. Selecting minimax (explicitly
|
|
233
|
+
or via SCOUTLINE_PROVIDER) returns UNSUPPORTED_CAPABILITY with
|
|
234
|
+
no fallback to Z.AI.
|
|
133
235
|
|
|
134
236
|
Options:
|
|
135
237
|
--format <f> Output format: markdown (default), text
|
|
136
238
|
--no-images Remove images from output
|
|
137
|
-
--no-cache
|
|
239
|
+
--no-cache Bypass the response cache for this invocation
|
|
138
240
|
--with-links Include links summary
|
|
139
241
|
--with-images-summary Include images summary
|
|
140
242
|
--no-gfm Disable GitHub Flavored Markdown
|
|
141
243
|
--keep-img-data-url Keep image data URLs in output
|
|
142
244
|
--timeout <s> Request timeout in seconds (default: 20)
|
|
143
|
-
--max-chars <n> Truncate content to <n> chars (
|
|
144
|
-
--full-envelope
|
|
145
|
-
|
|
245
|
+
--max-chars <n> Truncate content to <n> chars (content reads only)
|
|
246
|
+
--full-envelope Silently accepted and ignored. The envelope is always
|
|
247
|
+
returned at schema-version-1 (deprecation: D3).
|
|
248
|
+
--extract <m> Pull a specific slice out as a typed envelope with
|
|
249
|
+
mode/items/originalItemCount. Mode is one of:
|
|
250
|
+
code | links | tables | headings
|
|
251
|
+
|
|
252
|
+
Common Options:
|
|
253
|
+
--provider <id> Override the active Provider (zai | minimax)
|
|
254
|
+
--output-format <mode> One of: ${OUTPUT_MODE_LIST} (default: data)
|
|
255
|
+
-O <mode> Alias for --output-format
|
|
146
256
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
257
|
+
Output format (schema-version-1 migration):
|
|
258
|
+
Content read (default):
|
|
259
|
+
{
|
|
260
|
+
"schemaVersion": 1,
|
|
261
|
+
"url": "<the URL you passed>",
|
|
262
|
+
"finalUrl": "<the URL the Adapter fetched>",
|
|
263
|
+
"title": "<page title or null>",
|
|
264
|
+
"content": "<page body as markdown/text>",
|
|
265
|
+
"contentFormat": "markdown" | "text",
|
|
266
|
+
"truncated": false,
|
|
267
|
+
"originalContentLength": <number>
|
|
268
|
+
}
|
|
269
|
+
Extract read (--extract <mode>):
|
|
270
|
+
{
|
|
271
|
+
"schemaVersion": 1,
|
|
272
|
+
"url": "<the URL you passed>",
|
|
273
|
+
"finalUrl": "<the URL the Adapter fetched>",
|
|
274
|
+
"mode": "code" | "links" | "tables" | "headings",
|
|
275
|
+
"items": [<typed items per mode>],
|
|
276
|
+
"truncated": false,
|
|
277
|
+
"originalItemCount": <number>
|
|
278
|
+
}
|
|
279
|
+
--max-chars applies ONLY to content reads (sets truncated:true and
|
|
280
|
+
originalContentLength). --max-chars is IGNORED for extract reads —
|
|
281
|
+
truncating a code block or link list mid-item is harmful.
|
|
282
|
+
|
|
283
|
+
Output modes for read results:
|
|
284
|
+
- data: raw schema-version-1 envelope object.
|
|
285
|
+
- json / pretty: standard {success, data, timestamp} envelope
|
|
286
|
+
(indent 0 for json, indent 2 for pretty).
|
|
287
|
+
- compact / markdown / refs / tty:
|
|
288
|
+
* content read → the content string is emitted directly (Reader
|
|
289
|
+
content is naturally prose).
|
|
290
|
+
* extract read → JSON fallback (the extract envelope object).
|
|
291
|
+
Extracted items are data, not prose, so the text-oriented modes
|
|
292
|
+
do not synthesize a presentation for them.
|
|
150
293
|
|
|
151
294
|
Examples:
|
|
152
295
|
scoutline read https://docs.example.com/api
|
|
153
296
|
scoutline read https://github.com/owner/repo --format text
|
|
154
|
-
scoutline read https://gist.github.com/user/abc123 #
|
|
297
|
+
scoutline read https://gist.github.com/user/abc123 # finalUrl shows /raw
|
|
155
298
|
scoutline read https://blog.example.com/post --no-images --with-links
|
|
156
299
|
scoutline read https://example.com/long-article --max-chars 2000
|
|
157
|
-
scoutline read https://react.dev/learn/hooks --extract code #
|
|
158
|
-
scoutline read https://example.com/page --extract links #
|
|
300
|
+
scoutline read https://react.dev/learn/hooks --extract code # code blocks
|
|
301
|
+
scoutline read https://example.com/page --extract links # links
|
|
159
302
|
scoutline read https://en.wikipedia.org/wiki/X --extract headings # section outline
|
|
160
|
-
|
|
161
|
-
Output format:
|
|
162
|
-
Content string by default; structured object with --full-envelope or -O json;
|
|
163
|
-
JSON array of extracted elements with --extract.
|
|
303
|
+
scoutline --provider minimax read https://example.com/ # UNSUPPORTED_CAPABILITY
|
|
164
304
|
`.trim();
|
|
165
305
|
//# sourceMappingURL=read.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/commands/read.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/commands/read.ts"],"names":[],"mappings":"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"}
|