scoutline 0.6.4 → 0.9.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 (148) hide show
  1. package/README.md +19 -12
  2. package/bin/scoutline.js +2 -3
  3. package/dist/capabilities/crawl.d.ts +93 -0
  4. package/dist/capabilities/crawl.d.ts.map +1 -0
  5. package/dist/capabilities/crawl.js +62 -0
  6. package/dist/capabilities/crawl.js.map +1 -0
  7. package/dist/capabilities/diagnostics.d.ts +45 -43
  8. package/dist/capabilities/diagnostics.d.ts.map +1 -1
  9. package/dist/capabilities/diagnostics.js +58 -71
  10. package/dist/capabilities/diagnostics.js.map +1 -1
  11. package/dist/capabilities/map.d.ts +81 -0
  12. package/dist/capabilities/map.d.ts.map +1 -0
  13. package/dist/capabilities/map.js +60 -0
  14. package/dist/capabilities/map.js.map +1 -0
  15. package/dist/capabilities/quota.d.ts +11 -0
  16. package/dist/capabilities/quota.d.ts.map +1 -1
  17. package/dist/capabilities/quota.js +1 -1
  18. package/dist/capabilities/quota.js.map +1 -1
  19. package/dist/capabilities/research.d.ts +98 -0
  20. package/dist/capabilities/research.d.ts.map +1 -0
  21. package/dist/capabilities/research.js +71 -0
  22. package/dist/capabilities/research.js.map +1 -0
  23. package/dist/capabilities/search.d.ts +19 -1
  24. package/dist/capabilities/search.d.ts.map +1 -1
  25. package/dist/commands/crawl.d.ts +46 -0
  26. package/dist/commands/crawl.d.ts.map +1 -0
  27. package/dist/commands/crawl.js +170 -0
  28. package/dist/commands/crawl.js.map +1 -0
  29. package/dist/commands/doctor.d.ts +7 -8
  30. package/dist/commands/doctor.d.ts.map +1 -1
  31. package/dist/commands/doctor.js +40 -34
  32. package/dist/commands/doctor.js.map +1 -1
  33. package/dist/commands/map.d.ts +39 -0
  34. package/dist/commands/map.d.ts.map +1 -0
  35. package/dist/commands/map.js +121 -0
  36. package/dist/commands/map.js.map +1 -0
  37. package/dist/commands/quota.d.ts +23 -0
  38. package/dist/commands/quota.d.ts.map +1 -1
  39. package/dist/commands/quota.js +21 -4
  40. package/dist/commands/quota.js.map +1 -1
  41. package/dist/commands/read.d.ts.map +1 -1
  42. package/dist/commands/read.js +7 -1
  43. package/dist/commands/read.js.map +1 -1
  44. package/dist/commands/repo.js +1 -1
  45. package/dist/commands/research.d.ts +62 -0
  46. package/dist/commands/research.d.ts.map +1 -0
  47. package/dist/commands/research.js +314 -0
  48. package/dist/commands/research.js.map +1 -0
  49. package/dist/commands/search.d.ts +3 -1
  50. package/dist/commands/search.d.ts.map +1 -1
  51. package/dist/commands/search.js +26 -10
  52. package/dist/commands/search.js.map +1 -1
  53. package/dist/index.d.ts +45 -0
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +291 -13
  56. package/dist/index.js.map +1 -1
  57. package/dist/lib/cache.d.ts +13 -0
  58. package/dist/lib/cache.d.ts.map +1 -1
  59. package/dist/lib/cache.js +15 -0
  60. package/dist/lib/cache.js.map +1 -1
  61. package/dist/lib/execution.d.ts +105 -1
  62. package/dist/lib/execution.d.ts.map +1 -1
  63. package/dist/lib/execution.js +73 -1
  64. package/dist/lib/execution.js.map +1 -1
  65. package/dist/lib/redact.d.ts +2 -1
  66. package/dist/lib/redact.d.ts.map +1 -1
  67. package/dist/lib/redact.js +14 -1
  68. package/dist/lib/redact.js.map +1 -1
  69. package/dist/lib/research-state.d.ts +104 -0
  70. package/dist/lib/research-state.d.ts.map +1 -0
  71. package/dist/lib/research-state.js +214 -0
  72. package/dist/lib/research-state.js.map +1 -0
  73. package/dist/lib/search-topic.d.ts +21 -0
  74. package/dist/lib/search-topic.d.ts.map +1 -0
  75. package/dist/lib/search-topic.js +36 -0
  76. package/dist/lib/search-topic.js.map +1 -0
  77. package/dist/providers/brave/adapter.d.ts +42 -0
  78. package/dist/providers/brave/adapter.d.ts.map +1 -0
  79. package/dist/providers/brave/adapter.js +504 -0
  80. package/dist/providers/brave/adapter.js.map +1 -0
  81. package/dist/providers/brave/client.d.ts +161 -0
  82. package/dist/providers/brave/client.d.ts.map +1 -0
  83. package/dist/providers/brave/client.js +297 -0
  84. package/dist/providers/brave/client.js.map +1 -0
  85. package/dist/providers/brave/credentials.d.ts +33 -0
  86. package/dist/providers/brave/credentials.d.ts.map +1 -0
  87. package/dist/providers/brave/credentials.js +55 -0
  88. package/dist/providers/brave/credentials.js.map +1 -0
  89. package/dist/providers/brave/diagnostics.d.ts +46 -0
  90. package/dist/providers/brave/diagnostics.d.ts.map +1 -0
  91. package/dist/providers/brave/diagnostics.js +76 -0
  92. package/dist/providers/brave/diagnostics.js.map +1 -0
  93. package/dist/providers/brave/quota.d.ts +86 -0
  94. package/dist/providers/brave/quota.d.ts.map +1 -0
  95. package/dist/providers/brave/quota.js +247 -0
  96. package/dist/providers/brave/quota.js.map +1 -0
  97. package/dist/providers/exa/adapter.d.ts +58 -0
  98. package/dist/providers/exa/adapter.d.ts.map +1 -0
  99. package/dist/providers/exa/adapter.js +892 -0
  100. package/dist/providers/exa/adapter.js.map +1 -0
  101. package/dist/providers/exa/client.d.ts +143 -0
  102. package/dist/providers/exa/client.d.ts.map +1 -0
  103. package/dist/providers/exa/client.js +328 -0
  104. package/dist/providers/exa/client.js.map +1 -0
  105. package/dist/providers/exa/credentials.d.ts +34 -0
  106. package/dist/providers/exa/credentials.d.ts.map +1 -0
  107. package/dist/providers/exa/credentials.js +56 -0
  108. package/dist/providers/exa/credentials.js.map +1 -0
  109. package/dist/providers/exa/diagnostics.d.ts +42 -0
  110. package/dist/providers/exa/diagnostics.d.ts.map +1 -0
  111. package/dist/providers/exa/diagnostics.js +69 -0
  112. package/dist/providers/exa/diagnostics.js.map +1 -0
  113. package/dist/providers/minimax/adapter.d.ts.map +1 -1
  114. package/dist/providers/minimax/adapter.js +7 -2
  115. package/dist/providers/minimax/adapter.js.map +1 -1
  116. package/dist/providers/minimax/vision-conformance.d.ts +2 -2
  117. package/dist/providers/minimax/vision-conformance.js +2 -2
  118. package/dist/providers/registry.d.ts.map +1 -1
  119. package/dist/providers/registry.js +6 -0
  120. package/dist/providers/registry.js.map +1 -1
  121. package/dist/providers/tavily/adapter.d.ts +62 -0
  122. package/dist/providers/tavily/adapter.d.ts.map +1 -0
  123. package/dist/providers/tavily/adapter.js +975 -0
  124. package/dist/providers/tavily/adapter.js.map +1 -0
  125. package/dist/providers/tavily/client.d.ts +184 -0
  126. package/dist/providers/tavily/client.d.ts.map +1 -0
  127. package/dist/providers/tavily/client.js +486 -0
  128. package/dist/providers/tavily/client.js.map +1 -0
  129. package/dist/providers/tavily/credentials.d.ts +34 -0
  130. package/dist/providers/tavily/credentials.d.ts.map +1 -0
  131. package/dist/providers/tavily/credentials.js +56 -0
  132. package/dist/providers/tavily/credentials.js.map +1 -0
  133. package/dist/providers/tavily/diagnostics.d.ts +44 -0
  134. package/dist/providers/tavily/diagnostics.d.ts.map +1 -0
  135. package/dist/providers/tavily/diagnostics.js +70 -0
  136. package/dist/providers/tavily/diagnostics.js.map +1 -0
  137. package/dist/providers/tavily/quota.d.ts +60 -0
  138. package/dist/providers/tavily/quota.d.ts.map +1 -0
  139. package/dist/providers/tavily/quota.js +186 -0
  140. package/dist/providers/tavily/quota.js.map +1 -0
  141. package/dist/providers/types.d.ts +14 -2
  142. package/dist/providers/types.d.ts.map +1 -1
  143. package/dist/providers/types.js +1 -1
  144. package/dist/providers/types.js.map +1 -1
  145. package/dist/providers/zai/adapter.d.ts.map +1 -1
  146. package/dist/providers/zai/adapter.js +13 -2
  147. package/dist/providers/zai/adapter.js.map +1 -1
  148. package/package.json +1 -1
@@ -17,7 +17,7 @@
17
17
  * Under `--no-tools` the command returns after metadata + configured-state
18
18
  * evaluation and constructs no Adapter and no transport (FR-034).
19
19
  */
20
- import { deriveSharedCapabilities, deriveZaiOnlyCapabilities, diagnosticErrorFromError, } from "../capabilities/diagnostics.js";
20
+ import { deriveCapabilityMatrix, diagnosticErrorFromError } from "../capabilities/diagnostics.js";
21
21
  import { executeProviderOperation } from "../lib/execution.js";
22
22
  import { UnsupportedCapabilityError } from "../lib/errors.js";
23
23
  import { redactSecrets, configuredSecrets } from "../lib/redact.js";
@@ -43,14 +43,13 @@ async function probeProvider(descriptor, env, sleep, random) {
43
43
  });
44
44
  }
45
45
  /**
46
- * Build a schema-version-1 {@link DiagnosticsReport}. Inventory
47
- * (`sharedCapabilities`, `zaiOnlyCapabilities`) is derived purely from
48
- * `deps.descriptors` — no descriptor.create(), no transport, no
49
- * production registry import. Under `--no-tools` the command returns
50
- * after metadata + configured-state evaluation. Otherwise each
51
- * configured Provider is probed through shared execution with settled
52
- * collection, preserving registry order and normalized redacted
53
- * failures.
46
+ * Build a schema-version-2 {@link DiagnosticsReport}. Inventory
47
+ * (`capabilityMatrix`) is derived purely from `deps.descriptors` — no
48
+ * descriptor.create(), no transport, no production registry import.
49
+ * Under `--no-tools` the command returns after metadata +
50
+ * configured-state evaluation. Otherwise each configured Provider is
51
+ * probed through shared execution with settled collection, preserving
52
+ * registry order and normalized redacted failures.
54
53
  */
55
54
  export async function buildDiagnosticsReport(deps) {
56
55
  const secrets = configuredSecrets(deps.env);
@@ -71,10 +70,9 @@ export async function buildDiagnosticsReport(deps) {
71
70
  // it; it never reads `cacheStats()` itself.
72
71
  const cache = deps.cacheSummary === undefined ? undefined : { summary: deps.cacheSummary };
73
72
  return {
74
- schemaVersion: 1,
73
+ schemaVersion: 2,
75
74
  effectiveProvider: deps.effectiveProvider,
76
- sharedCapabilities: deriveSharedCapabilities(deps.descriptors),
77
- zaiOnlyCapabilities: deriveZaiOnlyCapabilities(deps.descriptors),
75
+ capabilityMatrix: deriveCapabilityMatrix(deps.descriptors),
78
76
  node: {
79
77
  version: process.version,
80
78
  visionMcpCompatible: nodeMajor() >= 22,
@@ -143,40 +141,48 @@ Doctor - Provider-aware environment and connectivity diagnostics
143
141
 
144
142
  Usage: scoutline doctor [options]
145
143
 
146
- Reports a schema-version-1 diagnostics report listing every built-in
147
- Provider (zai, minimax) with its configured state, declared
144
+ Reports a schema-version-2 diagnostics report listing every built-in
145
+ Provider (zai, minimax, tavily, exa) with its configured state, declared
148
146
  Capabilities, and connectivity status. The effective Provider (resolved
149
147
  from --provider, SCOUTLINE_PROVIDER, or the default zai) is the
150
- Provider that serves the shared Capabilities shared across every
151
- built-in descriptor. The sharedCapabilities and zaiOnlyCapabilities
152
- fields are derived from descriptor metadata, so they always reflect
153
- the descriptors passed to this command.
148
+ Provider that serves a requested capability. The capabilityMatrix field
149
+ lists, for each advertised capability, which providers supply it —
150
+ derived from descriptor metadata, so it always reflects the descriptors
151
+ passed to this command.
154
152
 
155
153
  Z.AI connectivity is probed through MCP tool discovery; MiniMax
156
154
  connectivity through a single raw quota probe that authenticates
157
- without a generative request.
155
+ without a generative request; Tavily connectivity through a single
156
+ raw quota probe against the Tavily account endpoint; Exa connectivity
157
+ through a single lightweight search request.
158
158
 
159
159
  Repository exploration is a Provider Capability. Z.AI descriptor
160
160
  metadata advertises repository-exploration and the Z.AI Adapter
161
- supplies it; MiniMax advertises and supplies neither. The
162
- sharedCapabilities and zaiOnlyCapabilities fields above reflect that
163
- descriptor state (repository-exploration currently appears in
164
- zaiOnlyCapabilities).
161
+ supplies it; MiniMax, Tavily, and Exa advertise and supply neither. The
162
+ capabilityMatrix field reflects that descriptor state
163
+ (repository-exploration currently lists only Z.AI while MiniMax and
164
+ Tavily lack it).
165
165
 
166
- Reader is a Provider Capability. Z.AI descriptor metadata advertises
167
- reader and the Z.AI Adapter supplies it; MiniMax advertises and
168
- supplies neither. reader currently appears in zaiOnlyCapabilities
169
- alongside repository-exploration.
166
+ Reader is a Provider Capability. Z.AI, Tavily, and Exa descriptor
167
+ metadata all advertise reader; MiniMax advertises and supplies
168
+ neither. The capabilityMatrix field lists Z.AI, Tavily, and Exa for
169
+ reader.
170
+
171
+ Crawl and Map are Provider Capabilities owned by Tavily.
172
+ Z.AI, MiniMax, and Exa do not advertise either; the capabilityMatrix
173
+ lists Tavily alone for each. Research is supplied by Tavily and Exa.
174
+ Selecting Z.AI or MiniMax for crawl, map, or research returns
175
+ UNSUPPORTED_CAPABILITY with no fallback.
170
176
 
171
177
  Public 'repo' and 'read' commands participate in Provider selection.
172
178
  They honour --provider / SCOUTLINE_PROVIDER / the default zai, route
173
- through the Z.AI Adapter's Repository and Reader Capabilities
174
- respectively, and return UNSUPPORTED_CAPABILITY when the selected
175
- Provider does not advertise the requested capability (e.g.
176
- 'repo --provider minimax' or 'read --provider minimax' fail without
177
- falling back to Z.AI). A supported-but-unconfigured Z.AI returns
178
- ConfigurationError; supported-and-configured Z.AI dispatches through
179
- the Repository Explorer / Reader Adapter.
179
+ through the matching Adapter's Repository / Reader Capability, and
180
+ return UNSUPPORTED_CAPABILITY when the selected Provider does not
181
+ advertise the requested capability (e.g. 'repo --provider minimax' or
182
+ 'read --provider minimax' fail without falling back to Z.AI). A
183
+ supported-but-unconfigured Provider returns ConfigurationError; a
184
+ supported-and-configured Provider dispatches through the corresponding
185
+ Adapter.
180
186
 
181
187
  Options:
182
188
  --no-tools Skip every connectivity probe (metadata-only). Under
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Map command — thin handler over the Map Capability
3
+ * (tech-plan §2b, §8).
4
+ *
5
+ * The handler applies parse-level validation (URL scheme), delegates to
6
+ * `capability.fetch(request)` through the generic shared execution
7
+ * wrapper (`executeCachedOperation`), then projects the normalized
8
+ * `MapResult` into the public envelope. The Adapter owns URL validation,
9
+ * credentials, transport, raw response parsing, cache identity, and
10
+ * error normalization; the handler owns output-mode presentation only
11
+ * (no per-page projection — Map returns URLs only).
12
+ *
13
+ * Provider selection, capability support, configuration, Adapter
14
+ * construction, and adapter.map agreement live in `src/index.ts`.
15
+ */
16
+ import type { CommandContext, CommandResult } from "../command-invocation.js";
17
+ import type { MapCapability } from "../capabilities/map.js";
18
+ import type { ExecutionDependencies } from "../lib/execution.js";
19
+ export interface MapOptions {
20
+ readonly depth?: number;
21
+ readonly breadth?: number;
22
+ readonly limit?: number;
23
+ readonly selectPaths?: string;
24
+ readonly excludePaths?: string;
25
+ readonly instructions?: string;
26
+ readonly noCache?: boolean;
27
+ }
28
+ /**
29
+ * Dependencies injected by `src/index.ts` after Provider selection,
30
+ * capability support check, configuration check, Adapter construction,
31
+ * and adapter.map agreement.
32
+ */
33
+ export interface MapHandlerDependencies {
34
+ readonly capability: MapCapability;
35
+ readonly execution: ExecutionDependencies;
36
+ }
37
+ export declare function map(url: string, options: MapOptions | undefined, deps: MapHandlerDependencies, _context?: CommandContext): Promise<CommandResult>;
38
+ export declare const MAP_HELP: string;
39
+ //# sourceMappingURL=map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/commands/map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAyB,MAAM,wBAAwB,CAAC;AACnF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AASjE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;CAC3C;AA2CD,wBAAsB,GAAG,CACvB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,UAAU,YAAK,EACxB,IAAI,EAAE,sBAAsB,EAC5B,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,aAAa,CAAC,CAsBxB;AAQD,eAAO,MAAM,QAAQ,QA0Cb,CAAC"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Map command — thin handler over the Map Capability
3
+ * (tech-plan §2b, §8).
4
+ *
5
+ * The handler applies parse-level validation (URL scheme), delegates to
6
+ * `capability.fetch(request)` through the generic shared execution
7
+ * wrapper (`executeCachedOperation`), then projects the normalized
8
+ * `MapResult` into the public envelope. The Adapter owns URL validation,
9
+ * credentials, transport, raw response parsing, cache identity, and
10
+ * error normalization; the handler owns output-mode presentation only
11
+ * (no per-page projection — Map returns URLs only).
12
+ *
13
+ * Provider selection, capability support, configuration, Adapter
14
+ * construction, and adapter.map agreement live in `src/index.ts`.
15
+ */
16
+ import { executeCachedOperation } from "../lib/execution.js";
17
+ import { OUTPUT_MODES } from "../lib/output.js";
18
+ import { ValidationError } from "../lib/errors.js";
19
+ // ---------------------------------------------------------------------------
20
+ // Parse-level validation
21
+ // ---------------------------------------------------------------------------
22
+ function validateUrl(url) {
23
+ if (!url.startsWith("http://") && !url.startsWith("https://")) {
24
+ throw new ValidationError("URL must start with http:// or https://");
25
+ }
26
+ }
27
+ // ---------------------------------------------------------------------------
28
+ // Request builder
29
+ // ---------------------------------------------------------------------------
30
+ /**
31
+ * Build the Provider-neutral MapRequest from MapOptions. Only fields
32
+ * that affect the Provider request or the cache identity appear here;
33
+ * `--no-cache` and output mode never enter the request.
34
+ */
35
+ function buildMapRequest(url, options) {
36
+ const request = { url };
37
+ if (options.depth !== undefined)
38
+ request.depth = options.depth;
39
+ if (options.breadth !== undefined)
40
+ request.breadth = options.breadth;
41
+ if (options.limit !== undefined)
42
+ request.limit = options.limit;
43
+ if (options.selectPaths !== undefined)
44
+ request.selectPaths = options.selectPaths;
45
+ if (options.excludePaths !== undefined)
46
+ request.excludePaths = options.excludePaths;
47
+ if (options.instructions !== undefined)
48
+ request.instructions = options.instructions;
49
+ return request;
50
+ }
51
+ function buildMapPresentations(urls) {
52
+ const compact = urls.join("\n");
53
+ const markdown = urls.map((u, i) => `${i + 1}. ${u}`).join("\n");
54
+ const refs = urls.map((u, i) => `[${i + 1}] ${u}`).join("\n");
55
+ return { compact, markdown, refs, tty: markdown };
56
+ }
57
+ // ---------------------------------------------------------------------------
58
+ // Handler
59
+ // ---------------------------------------------------------------------------
60
+ export async function map(url, options = {}, deps, _context) {
61
+ validateUrl(url);
62
+ const request = buildMapRequest(url, options);
63
+ const result = await executeCachedOperation(deps.capability.fetch, request, { noCache: options.noCache === true }, deps.execution);
64
+ // Map returns URLs only — no per-page projection or truncation.
65
+ // The envelope is the normalized result verbatim.
66
+ const envelope = {
67
+ schemaVersion: result.schemaVersion,
68
+ baseUrl: result.baseUrl,
69
+ urls: result.urls,
70
+ totalUrls: result.totalUrls,
71
+ };
72
+ return { kind: "data", data: envelope, presentations: buildMapPresentations(result.urls) };
73
+ }
74
+ // ---------------------------------------------------------------------------
75
+ // Help
76
+ // ---------------------------------------------------------------------------
77
+ const OUTPUT_MODE_LIST = OUTPUT_MODES.join(" | ");
78
+ export const MAP_HELP = `
79
+ Map Command - Discover the URL structure of a website (Provider Capability)
80
+
81
+ Usage: scoutline map <url> [options]
82
+
83
+ Maps a website starting from <url>, returning the discovered URL set
84
+ without fetching page contents. Use this for site structure discovery
85
+ before deciding which pages to crawl or read.
86
+
87
+ Provider selection (precedence: --provider, then SCOUTLINE_PROVIDER,
88
+ then the configured default):
89
+ - Tavily advertises the map Capability and supplies the Adapter.
90
+ - Z.AI and MiniMax do NOT advertise map. Selecting them returns
91
+ UNSUPPORTED_CAPABILITY with no fallback.
92
+
93
+ Options:
94
+ --depth <n> Map depth, 1-5 (default: 1)
95
+ --breadth <n> Max links to follow per page, 1-500 (default: 20)
96
+ --limit <n> Total URLs to discover (default: 50)
97
+ --select-paths <rx> Comma-separated regex patterns to select URL paths
98
+ --exclude-paths <rx> Comma-separated regex patterns to exclude URL paths
99
+ --instructions <t> Natural language instructions for page selection
100
+ --no-cache Bypass the response cache for this invocation
101
+
102
+ Common Options:
103
+ --provider <id> Override the active Provider (zai | minimax | tavily | exa)
104
+ --output-format <mode> One of: ${OUTPUT_MODE_LIST} (default: data)
105
+ -O <mode> Alias for --output-format
106
+
107
+ Output format (schema-version-1):
108
+ {
109
+ "schemaVersion": 1,
110
+ "baseUrl": "<the URL you passed>",
111
+ "urls": ["<discovered URL>", ...],
112
+ "totalUrls": <number>
113
+ }
114
+
115
+ Examples:
116
+ scoutline map https://docs.example.com
117
+ scoutline map https://example.com --depth 2 --breadth 10 --limit 20
118
+ scoutline map https://docs.example.com --select-paths "/api/.*,/guide/.*"
119
+ scoutline --provider tavily map https://example.com --depth 3
120
+ `.trim();
121
+ //# sourceMappingURL=map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/commands/map.ts"],"names":[],"mappings":"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"}
@@ -37,14 +37,37 @@ export interface QuotaOptions {
37
37
  * Injectable dependencies for the quota command. `buildDashboard`
38
38
  * resolves the effective/all-provider dashboard; the command only wraps
39
39
  * it for presentation and exit-code selection.
40
+ *
41
+ * `writeStderr` is an OPTIONAL generic stderr sink. When provided, the
42
+ * command collects every `warnings` entry from successful dashboard
43
+ * entries and writes each as a prominent notice — provider-neutral
44
+ * (iterates warnings, never branches on provider name). A Provider that
45
+ * needs to flag a caveat about its quota numbers (e.g. Brave reports a
46
+ * rate-limit window, not spend) populates `warnings`; the command
47
+ * renders it here so the caveat text stays out of the neutral command.
40
48
  */
41
49
  export interface QuotaCommandDependencies {
42
50
  readonly buildDashboard: () => Promise<QuotaDashboard>;
51
+ readonly writeStderr?: (value: string) => void;
52
+ /**
53
+ * Configured credential values used to redact `warnings` text before
54
+ * it reaches stderr. The `warnings` channel is provider-authored, so a
55
+ * future Provider could put value-derived text there; running each
56
+ * warning through `redactCredentialString` keeps the stderr seam under
57
+ * the same redaction as the dashboard data. Optional — when omitted,
58
+ * only the key/regex-based redaction applies.
59
+ */
60
+ readonly secrets?: string[];
43
61
  }
44
62
  /**
45
63
  * Run the quota command. Returns the dashboard as base data with a TTY
46
64
  * presentation override. Exit code is 1 when any dashboard entry failed
47
65
  * (all-provider mode); otherwise 0.
66
+ *
67
+ * Before returning, any `warnings` attached to successful entries are
68
+ * rendered to `writeStderr` (when provided) as prominent notices. This
69
+ * is the provider-neutral caveat channel: it does not branch on
70
+ * provider identity.
48
71
  */
49
72
  export declare function quota(deps: QuotaCommandDependencies): Promise<CommandResult<QuotaDashboard>>;
50
73
  export declare const QUOTA_HELP: string;
@@ -1 +1 @@
1
- {"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../../src/commands/quota.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAIV,cAAc,EACf,MAAM,0BAA0B,CAAC;AAIlC,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAS5E,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,UAAU,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC;CAC/B;AAqFD;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,cAAc,CAAC,CAEzB;AAMD,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;CACxD;AAED;;;;GAIG;AACH,wBAAsB,KAAK,CACzB,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CASxC;AAED,eAAO,MAAM,UAAU,QA2Bf,CAAC"}
1
+ {"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../../src/commands/quota.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAIV,cAAc,EACf,MAAM,0BAA0B,CAAC;AAIlC,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAS5E,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,UAAU,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC;CAC/B;AAuFD;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,cAAc,CAAC,CAEzB;AAMD,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;IACvD,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;;;;;GASG;AACH,wBAAsB,KAAK,CACzB,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAuBxC;AAED,eAAO,MAAM,UAAU,QA2Bf,CAAC"}
@@ -17,7 +17,7 @@ import { quotaFailureFromError } from "../capabilities/quota.js";
17
17
  import { executeProviderOperation } from "../lib/execution.js";
18
18
  import { ConfigurationError, UnsupportedCapabilityError } from "../lib/errors.js";
19
19
  import { getProviderDescriptor } from "../providers/selection.js";
20
- import { redactSecrets, configuredSecrets } from "../lib/redact.js";
20
+ import { redactSecrets, configuredSecrets, redactCredentialString } from "../lib/redact.js";
21
21
  import { formatQuotaDashboard } from "../lib/tty.js";
22
22
  /**
23
23
  * Invoke one Provider's quota Capability through shared execution. The
@@ -42,7 +42,7 @@ async function invokeProviderQuota(descriptor, env, sleep, random) {
42
42
  async function buildDefaultDashboard(deps) {
43
43
  const descriptor = getProviderDescriptor(deps.effectiveProvider, deps.descriptors);
44
44
  if (!descriptor.isConfigured(deps.env)) {
45
- throw new ConfigurationError(`Provider "${deps.effectiveProvider}" is not configured. Set Z_AI_API_KEY or MINIMAX_API_KEY.`);
45
+ throw new ConfigurationError(`Provider "${deps.effectiveProvider}" is not configured. Set its API key (Z_AI_API_KEY, MINIMAX_API_KEY, TAVILY_API_KEY, or BRAVE_SEARCH_API_KEY).`);
46
46
  }
47
47
  const success = await invokeProviderQuota(descriptor, deps.env, deps.sleep, deps.random);
48
48
  return {
@@ -60,9 +60,9 @@ async function buildDefaultDashboard(deps) {
60
60
  * success.
61
61
  */
62
62
  async function buildAllProvidersDashboard(deps) {
63
- const configured = deps.descriptors.filter((d) => d.isConfigured(deps.env));
63
+ const configured = deps.descriptors.filter((d) => d.isConfigured(deps.env) && d.capabilities().has("quota"));
64
64
  if (configured.length === 0) {
65
- throw new ConfigurationError("No provider is configured. Set Z_AI_API_KEY and/or MINIMAX_API_KEY.");
65
+ throw new ConfigurationError("No provider is configured. Set at least one API key (Z_AI_API_KEY, MINIMAX_API_KEY, TAVILY_API_KEY, or BRAVE_SEARCH_API_KEY).");
66
66
  }
67
67
  const secrets = configuredSecrets(deps.env);
68
68
  const settled = await Promise.allSettled(configured.map((d) => invokeProviderQuota(d, deps.env, deps.sleep, deps.random)));
@@ -91,9 +91,26 @@ export async function buildQuotaDashboard(deps) {
91
91
  * Run the quota command. Returns the dashboard as base data with a TTY
92
92
  * presentation override. Exit code is 1 when any dashboard entry failed
93
93
  * (all-provider mode); otherwise 0.
94
+ *
95
+ * Before returning, any `warnings` attached to successful entries are
96
+ * rendered to `writeStderr` (when provided) as prominent notices. This
97
+ * is the provider-neutral caveat channel: it does not branch on
98
+ * provider identity.
94
99
  */
95
100
  export async function quota(deps) {
96
101
  const dashboard = await deps.buildDashboard();
102
+ const writeStderr = deps.writeStderr;
103
+ if (writeStderr) {
104
+ for (const entry of dashboard.providers) {
105
+ if (entry.status === "ok" && entry.warnings && entry.warnings.length > 0) {
106
+ for (const warning of entry.warnings) {
107
+ // Redact before stderr: warnings are provider-authored and a
108
+ // future Provider could embed value-derived text here.
109
+ writeStderr(redactCredentialString(`⚠️ ${entry.provider}: ${warning}\n`, deps.secrets));
110
+ }
111
+ }
112
+ }
113
+ }
97
114
  const hasFailure = dashboard.providers.some((p) => p.status === "error");
98
115
  return {
99
116
  kind: "data",
@@ -1 +1 @@
1
- {"version":3,"file":"quota.js","sourceRoot":"","sources":["../../src/commands/quota.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAElF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAmBrD;;;;;GAKG;AACH,KAAK,UAAU,mBAAmB,CAChC,UAA8B,EAC9B,GAAsB,EACtB,KAAoC,EACpC,MAAoB;IAEpB,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAqB,CAAC;IAC/D,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC;IACjC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,0BAA0B,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AACzF,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,qBAAqB,CAAC,IAAgC;IACnE,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACnF,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,kBAAkB,CAC1B,aAAa,IAAI,CAAC,iBAAiB,2DAA2D,CAC/F,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACzF,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,SAAS,EAAE,CAAC,OAAO,CAAC;KACrB,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,0BAA0B,CACvC,IAAgC;IAEhC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,kBAAkB,CAC1B,qEAAqE,CACtE,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CACjF,CAAC;IACF,MAAM,SAAS,GAAuD,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC5F,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;QACD,OAAO,aAAa,CAClB,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAC1C,OAAO,CACgB,CAAC;IAC5B,CAAC,CAAC,CAAC;IACH,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAgC;IAEhC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;AAC5F,CAAC;AAmBD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,IAA8B;IAE9B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAC9C,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;IACzE,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS;QACf,aAAa,EAAE,EAAE,GAAG,EAAE,oBAAoB,CAAC,SAAS,CAAC,EAAE;QACvD,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BzB,CAAC,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"quota.js","sourceRoot":"","sources":["../../src/commands/quota.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
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"}
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,QA8Fd,CAAC"}
@@ -229,6 +229,11 @@ then zai):
229
229
  - The 'read' command participates in Provider selection.
230
230
  - Z.AI advertises the reader Capability and supplies the Adapter;
231
231
  selecting zai routes Read through it.
232
+ - Tavily also advertises the reader Capability (powered by the
233
+ Tavily extract endpoint). Selecting tavily routes Read through
234
+ the Tavily Adapter. Some Z.AI-only options
235
+ (--with-links, --no-gfm, --keep-img-data-url, --with-images-summary)
236
+ are rejected with UNSUPPORTED_OPTION when tavily is selected.
232
237
  - MiniMax does NOT advertise reader. Selecting minimax (explicitly
233
238
  or via SCOUTLINE_PROVIDER) returns UNSUPPORTED_CAPABILITY with
234
239
  no fallback to Z.AI.
@@ -250,7 +255,7 @@ Options:
250
255
  code | links | tables | headings
251
256
 
252
257
  Common Options:
253
- --provider <id> Override the active Provider (zai | minimax)
258
+ --provider <id> Override the active Provider (zai | minimax | tavily | exa)
254
259
  --output-format <mode> One of: ${OUTPUT_MODE_LIST} (default: data)
255
260
  -O <mode> Alias for --output-format
256
261
 
@@ -301,5 +306,6 @@ Examples:
301
306
  scoutline read https://example.com/page --extract links # links
302
307
  scoutline read https://en.wikipedia.org/wiki/X --extract headings # section outline
303
308
  scoutline --provider minimax read https://example.com/ # UNSUPPORTED_CAPABILITY
309
+ scoutline --provider tavily read https://example.com/ # Tavily-backed extract
304
310
  `.trim();
305
311
  //# sourceMappingURL=read.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/commands/read.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/commands/read.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AASH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAsC7E,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E;;;;;GAKG;AACH,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,eAAe,CAAC,yCAAyC,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,IAA6B;IACxD,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,eAAe,CACvB,2BAA2B,IAAI,6CAA6C,CAC7E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;;GAIG;AACH,SAAS,eAAe,CACtB,OAAe,EACf,GAAY;IAMZ,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IACnC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,WAAW,IAAI,GAAG,EAAE,CAAC;QAC3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC1D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC3F,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,GAAW,EAAE,OAAoB;IAC3D,MAAM,OAAO,GAA8C,EAAE,GAAG,EAAE,CAAC;IACnE,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACpD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,CAAC,YAAY,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC7E,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAClF,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC/D,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS;QAAE,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAC1F,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IACxD,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACrE,OAAO,OAA6B,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAC3B,MAAyB,EACzB,IAAY,EACZ,WAAmB,EACnB,SAAkB;IAElB,iEAAiE;IACjE,gEAAgE;IAChE,mCAAmC;IACnC,MAAM,QAAQ,GAA4B;QACxC,aAAa,EAAE,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,SAAS;QACT,qBAAqB,EAAE,WAAW;KACnC,CAAC;IACF,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;QAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACvE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;QAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACvE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB,CAC3B,MAAyB,EACzB,IAAiB,EACjB,KAAgB;IAEhB,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,IAAI;QACJ,KAAK;QACL,SAAS,EAAE,KAAK;QAChB,iBAAiB,EAAE,KAAK,CAAC,MAAM;KAChC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,GAAW,EACX,OAAO,GAAgB,EAAE,EACzB,IAA6B,EAC7B,QAAyB;IAEzB,0DAA0D;IAC1D,WAAW,CAAC,GAAG,CAAC,CAAC;IACjB,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAErC,iEAAiE;IACjE,6DAA6D;IAC7D,8DAA8D;IAC9D,0CAA0C;IAC1C,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,IAAI,CAAC,UAAU,CAAC,KAAK,EACrB,OAAO,EACP,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,EACrC,IAAI,CAAC,SAAS,CACf,CAAC;IAEF,iBAAiB;IACjB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtE,8DAA8D;QAC9D,gEAAgE;QAChE,aAAa;QACb,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3F,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAE5E,oEAAoE;IACpE,iEAAiE;IACjE,mEAAmE;IACnE,wCAAwC;IACxC,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,QAAQ;QACd,aAAa,EAAE;YACb,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,IAAI;SACV;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,OAAO;AACP,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAElD,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCA2Cc,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDtD,CAAC,IAAI,EAAE,CAAC"}
@@ -115,7 +115,7 @@ Read Options:
115
115
 
116
116
  Common Options:
117
117
  --no-cache Bypass the response cache for this invocation
118
- --provider <id> Override the active Provider (zai | minimax)
118
+ --provider <id> Override the active Provider (zai | minimax | tavily | exa)
119
119
  --output-format <mode> One of: ${OUTPUT_MODE_LIST} (default: data)
120
120
  -O <mode> Alias for --output-format
121
121
 
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Research command — thin handler over the Research Capability
3
+ * (tech-plan §2c, §3, §8).
4
+ *
5
+ * Research runs an asynchronous create→poll lifecycle server-side and
6
+ * costs 4-250 credits per request. The handler shows a wait disclaimer
7
+ * before invoke, sets up a Ctrl-C signal handler that prints the
8
+ * request_id + resume command, and applies `--max-chars` as a report
9
+ * projection after the cached normalized result is produced.
10
+ *
11
+ * The Adapter's `invoke()` owns the full lifecycle (state-file resume,
12
+ * POST, poll loop, completion/failure/404 handling); shared execution
13
+ * wraps it with cache + zero-retry.
14
+ *
15
+ * Provider selection, capability support, configuration, Adapter
16
+ * construction, and adapter.research agreement live in `src/index.ts`.
17
+ *
18
+ * Cache stores the full report; `--max-chars` is a handler projection.
19
+ */
20
+ import type { CommandContext, CommandResult } from "../command-invocation.js";
21
+ import type { ResearchCapability } from "../capabilities/research.js";
22
+ import type { ExecutionDependencies } from "../lib/execution.js";
23
+ export interface ResearchOptions {
24
+ readonly model?: "mini" | "pro" | "auto";
25
+ readonly outputLength?: "short" | "standard" | "long";
26
+ readonly citationFormat?: "numbered" | "mla" | "apa" | "chicago";
27
+ readonly domain?: string;
28
+ readonly maxChars?: number;
29
+ /** Polling timeout in seconds. Default 300. */
30
+ readonly timeout?: number;
31
+ readonly noCache?: boolean;
32
+ }
33
+ /**
34
+ * Dependencies injected by `src/index.ts` after Provider selection,
35
+ * capability support check, configuration check, Adapter construction,
36
+ * and adapter.research agreement.
37
+ */
38
+ export interface ResearchHandlerDependencies {
39
+ readonly capability: ResearchCapability;
40
+ readonly execution: ExecutionDependencies;
41
+ /**
42
+ * Registers a Ctrl-C (SIGINT) handler before invoke. Receives a
43
+ * `print` callback (already bound to the request identity) that
44
+ * reads the state file and prints the request_id + resume command.
45
+ * Returns a cleanup function that removes the handler after the
46
+ * operation completes. Production wires `process.on('SIGINT', ...)`;
47
+ * tests inject a recorder or no-op.
48
+ */
49
+ readonly registerInterrupt?: (print: () => void) => () => void;
50
+ }
51
+ export declare function validateModel(value: unknown): "mini" | "pro" | "auto" | undefined;
52
+ export declare function validateOutputLength(value: unknown): "short" | "standard" | "long" | undefined;
53
+ export declare function validateCitationFormat(value: unknown): "numbered" | "mla" | "apa" | "chicago" | undefined;
54
+ /**
55
+ * Format the Ctrl-C interrupt message. Pure and exported so tests verify
56
+ * the request_id and resume command appear in the output without
57
+ * simulating a real SIGINT. The message goes to stderr.
58
+ */
59
+ export declare function formatInterruptMessage(requestId: string, resumeCommand: string): string;
60
+ export declare function research(query: string, options: ResearchOptions | undefined, deps: ResearchHandlerDependencies, _context?: CommandContext): Promise<CommandResult>;
61
+ export declare const RESEARCH_HELP: string;
62
+ //# sourceMappingURL=research.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research.d.ts","sourceRoot":"","sources":["../../src/commands/research.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EACV,kBAAkB,EAGnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAWjE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IACzC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;IACtD,QAAQ,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;IAC1C;;;;;;;OAOG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;CAChE;AAUD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAgBjF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAgB9F;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,GACb,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAgBpD;AAMD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAUvF;AAqGD,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,eAAe,YAAK,EAC7B,IAAI,EAAE,2BAA2B,EACjC,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,aAAa,CAAC,CAiGxB;AAQD,eAAO,MAAM,aAAa,QAiDlB,CAAC"}