scoutline 0.16.0 → 0.17.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 +47 -0
- package/dist/command-invocation.d.ts +2 -2
- package/dist/command-invocation.d.ts.map +1 -1
- package/dist/command-invocation.js +1 -1
- package/dist/command-invocation.js.map +1 -1
- package/dist/commands/research.d.ts +45 -0
- package/dist/commands/research.d.ts.map +1 -1
- package/dist/commands/research.js +152 -4
- package/dist/commands/research.js.map +1 -1
- package/dist/commands/search.d.ts +11 -0
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +31 -2
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/usage.d.ts +101 -0
- package/dist/commands/usage.d.ts.map +1 -0
- package/dist/commands/usage.js +228 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/commands/vision.d.ts +28 -0
- package/dist/commands/vision.d.ts.map +1 -1
- package/dist/commands/vision.js +452 -0
- package/dist/commands/vision.js.map +1 -1
- package/dist/index.d.ts +25 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +572 -10
- package/dist/index.js.map +1 -1
- package/dist/lib/batch-assign.d.ts +61 -0
- package/dist/lib/batch-assign.d.ts.map +1 -0
- package/dist/lib/batch-assign.js +118 -0
- package/dist/lib/batch-assign.js.map +1 -0
- package/dist/lib/batch-manifest.d.ts +183 -0
- package/dist/lib/batch-manifest.d.ts.map +1 -0
- package/dist/lib/batch-manifest.js +644 -0
- package/dist/lib/batch-manifest.js.map +1 -0
- package/dist/lib/batch-runner.d.ts +169 -0
- package/dist/lib/batch-runner.d.ts.map +1 -0
- package/dist/lib/batch-runner.js +357 -0
- package/dist/lib/batch-runner.js.map +1 -0
- package/dist/lib/consumption.d.ts +17 -0
- package/dist/lib/consumption.d.ts.map +1 -1
- package/dist/lib/consumption.js +38 -0
- package/dist/lib/consumption.js.map +1 -1
- package/dist/lib/context-file.d.ts +90 -0
- package/dist/lib/context-file.d.ts.map +1 -0
- package/dist/lib/context-file.js +244 -0
- package/dist/lib/context-file.js.map +1 -0
- package/dist/lib/trigger-detection.d.ts +21 -0
- package/dist/lib/trigger-detection.d.ts.map +1 -1
- package/dist/lib/trigger-detection.js +63 -0
- package/dist/lib/trigger-detection.js.map +1 -1
- package/dist/lib/usage-ledger.d.ts +221 -0
- package/dist/lib/usage-ledger.d.ts.map +1 -0
- package/dist/lib/usage-ledger.js +408 -0
- package/dist/lib/usage-ledger.js.map +1 -0
- package/dist/node-command-invocation-adapter.d.ts +25 -0
- package/dist/node-command-invocation-adapter.d.ts.map +1 -1
- package/dist/node-command-invocation-adapter.js +73 -38
- package/dist/node-command-invocation-adapter.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
- **Tools** - MCP tool discovery, schemas, and raw calls
|
|
23
23
|
- **Code Mode** - TypeScript tool chaining for agent automation
|
|
24
24
|
- **Provider selection** - Run shared capabilities through Z.AI, MiniMax, Tavily, Exa, Brave, Firecrawl, Parallel AI, Perplexity, or Jina AI
|
|
25
|
+
- **Usage ledger** - Local 90-day call-usage history per provider and capability (`scoutline usage`), counters only
|
|
25
26
|
|
|
26
27
|
## Quick Start
|
|
27
28
|
|
|
@@ -205,6 +206,46 @@ every arm runs every sub-query and occurrences span the arms ×
|
|
|
205
206
|
sub-queries grid. Disable the standing switch with
|
|
206
207
|
`scoutline config set fanout false`.
|
|
207
208
|
|
|
209
|
+
### Local Context (`--context` / `--context-stdin`)
|
|
210
|
+
|
|
211
|
+
Steer `research` and `search` with a local notes file (markdown headings and
|
|
212
|
+
question lines; max 256 KiB, text only — NUL-byte detection rejects binary
|
|
213
|
+
input). `--context <path>` reads a file; `--context-stdin` reads the same
|
|
214
|
+
content from standard input. The two flags are mutually exclusive.
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
scoutline research "quokka conservation" --context notes.md # organize (default)
|
|
218
|
+
scoutline research "quokka conservation" --context notes.md --context-mode bias
|
|
219
|
+
cat notes.md | scoutline research "quokka conservation" --context-stdin
|
|
220
|
+
scoutline search "rust async" --context notes.md
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
**Research modes** (`--context-mode organize | bias | both`): `organize`
|
|
224
|
+
(the default) re-presents the provider's report following your file's
|
|
225
|
+
headings — a purely local reordering, so the wire request and the response
|
|
226
|
+
cache key are untouched. `bias` (and `both`) append a capped
|
|
227
|
+
`(focus: ...)` term segment to the query before it is sent: that segment is
|
|
228
|
+
derived from your file and is what leaves your machine under those modes —
|
|
229
|
+
and it changes the cache key, so each mode is a separate (paid) job. The
|
|
230
|
+
resume command printed after an interrupt carries your context flags; with
|
|
231
|
+
`--context-stdin` you must re-pipe the same content unchanged.
|
|
232
|
+
|
|
233
|
+
**Search derivation**: `search --context` derives up to 8 sub-queries from
|
|
234
|
+
the file's headings and questions, always keeps your original query first,
|
|
235
|
+
and merges and dedupes all results. What leaves your machine under
|
|
236
|
+
`search --context`: the derived sub-query strings themselves become the
|
|
237
|
+
search queries — the file is never sent. Under fan-out this multiplies
|
|
238
|
+
cost (N sub-queries × M arms = N×M billable searches, disclosed once on
|
|
239
|
+
stderr). `--context` and `--context-stdin` are mutually exclusive with `--merge`.
|
|
240
|
+
|
|
241
|
+
**Privacy boundary**: parsed file content crosses the network in exactly
|
|
242
|
+
two shapes — the research `bias`/`both` focus segment and the
|
|
243
|
+
search-derived sub-query strings. Everything else stays local: `organize`
|
|
244
|
+
sends nothing derived, JSON outputs record only counts, the source path,
|
|
245
|
+
and a SHA-256 of the content, and no heading, question, term, or file byte
|
|
246
|
+
appears in notices or logs. Without these flags, `research` and `search`
|
|
247
|
+
output is byte-identical to previous releases.
|
|
248
|
+
|
|
208
249
|
## Capability Matrix
|
|
209
250
|
|
|
210
251
|
The matrix below is generated from the production provider registry
|
|
@@ -320,6 +361,7 @@ scoutline repo --help # GitHub repo commands
|
|
|
320
361
|
scoutline doctor --help # Provider diagnostics
|
|
321
362
|
scoutline quota --help # Plan usage
|
|
322
363
|
scoutline cache --help # Local cache inspection, clearing, and pruning
|
|
364
|
+
scoutline usage --help # Local call-usage history (usage.json ledger)
|
|
323
365
|
```
|
|
324
366
|
|
|
325
367
|
### Examples
|
|
@@ -367,6 +409,11 @@ scoutline cache clear # delete every file under cache/ and tools
|
|
|
367
409
|
scoutline cache prune # delete expired entries (effective TTL threshold)
|
|
368
410
|
scoutline cache prune --older-than 168h --provider zai # age override + selectors (AND together)
|
|
369
411
|
|
|
412
|
+
# Usage - local call-usage history (billable attempts, not credits)
|
|
413
|
+
scoutline usage # last 7 days, every provider (usage.json ledger)
|
|
414
|
+
scoutline usage --days 30 # wider UTC-day window
|
|
415
|
+
scoutline usage --provider zai # one provider's rows only
|
|
416
|
+
|
|
370
417
|
# Config - inspect and change settings (scriptable, always redacted)
|
|
371
418
|
scoutline config get # full config dump (credentials masked)
|
|
372
419
|
scoutline config set routing.search tavily,brave
|
|
@@ -26,14 +26,14 @@ export interface TextCommandResult {
|
|
|
26
26
|
export type CommandResult<T = unknown> = DataCommandResult<T> | TextCommandResult;
|
|
27
27
|
export interface CommandContext {
|
|
28
28
|
readonly stdinIsTTY: boolean;
|
|
29
|
-
readStdin(): Promise<string>;
|
|
29
|
+
readStdin(maxBytes?: number): Promise<string>;
|
|
30
30
|
notice(message: string): void;
|
|
31
31
|
}
|
|
32
32
|
export interface CommandInvocationAdapter {
|
|
33
33
|
readonly stdoutIsTTY: boolean;
|
|
34
34
|
readonly stdinIsTTY: boolean;
|
|
35
35
|
readonly environmentOutputMode?: string;
|
|
36
|
-
readStdin(): Promise<string>;
|
|
36
|
+
readStdin(maxBytes?: number): Promise<string>;
|
|
37
37
|
writeStdout(value: string): void;
|
|
38
38
|
writeStderr(value: string): void;
|
|
39
39
|
runQuietly<T>(operation: () => Promise<T>): Promise<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-invocation.d.ts","sourceRoot":"","sources":["../src/command-invocation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAKlD,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;AAErE,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAErF,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,OAAO;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,CAAC;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC;AAElF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,SAAS,
|
|
1
|
+
{"version":3,"file":"command-invocation.d.ts","sourceRoot":"","sources":["../src/command-invocation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAKlD,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;AAErE,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAErF,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,OAAO;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,CAAC;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC;AAElF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAgDD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,wBAAwB,EACjC,QAAQ,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,aAAa,CAAC,EAC7D,UAAU,EAAE,UAAU,EACtB,GAAG,GAAE,MAAM,MAAiB,EAC5B,OAAO,CAAC,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,MAAM,CAAC,CA2CjB"}
|
|
@@ -73,7 +73,7 @@ export async function invokeCommand(adapter, behavior, outputMode, now = Date.no
|
|
|
73
73
|
const resolvedSecrets = secrets ?? configuredSecrets();
|
|
74
74
|
const context = {
|
|
75
75
|
stdinIsTTY: adapter.stdinIsTTY,
|
|
76
|
-
readStdin: () => adapter.readStdin(),
|
|
76
|
+
readStdin: (maxBytes) => adapter.readStdin(maxBytes),
|
|
77
77
|
notice: (message) => {
|
|
78
78
|
notices.push(message);
|
|
79
79
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-invocation.js","sourceRoot":"","sources":["../src/command-invocation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAsCnE,MAAM,iBAAiB,GAA8B,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAE5F,SAAS,gBAAgB,CAAC,IAAgB;IACxC,OAAQ,iBAAuC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,YAAY,CACnB,MAAqB,EACrB,UAAsB,EACtB,GAAiB,EACjB,OAAiB;IAEjB,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAW,CAAC;IACvD,CAAC;IAED,IAAI,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAW,CAAC;QACpD,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,OAAO,mBAAmB,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAiC,EACjC,QAA6D,EAC7D,UAAsB,EACtB,GAAG,GAAiB,IAAI,CAAC,GAAG,EAC5B,OAAkB;IAElB,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,qEAAqE;IACrE,uEAAuE;IACvE,sEAAsE;IACtE,sEAAsE;IACtE,4CAA4C;IAC5C,MAAM,eAAe,GAAG,OAAO,IAAI,iBAAiB,EAAE,CAAC;IAEvD,MAAM,OAAO,GAAmB;QAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"command-invocation.js","sourceRoot":"","sources":["../src/command-invocation.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ import type { CommandContext, CommandResult } from "../command-invocation.js";
|
|
|
21
21
|
import type { ResearchCapability } from "../capabilities/research.js";
|
|
22
22
|
import type { ProviderId } from "../providers/types.js";
|
|
23
23
|
import type { ExecutionDependencies } from "../lib/execution.js";
|
|
24
|
+
import type { ContextSourceContent, ParsedContextText } from "../lib/context-file.js";
|
|
24
25
|
export interface ResearchOptions {
|
|
25
26
|
readonly model?: "mini" | "pro" | "auto";
|
|
26
27
|
readonly outputLength?: "short" | "standard" | "long";
|
|
@@ -30,6 +31,43 @@ export interface ResearchOptions {
|
|
|
30
31
|
/** Polling timeout in seconds. Default 300. */
|
|
31
32
|
readonly timeout?: number;
|
|
32
33
|
readonly noCache?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Local-context plan, Ticket 3 (DESIGN D5): resume-bearing context
|
|
36
|
+
* flags consumed by `buildResearchResumeCommand` only — the wire
|
|
37
|
+
* request builder ignores this field (the D2.5 mutation derives
|
|
38
|
+
* from `ResearchHandlerDependencies.context`, not from here).
|
|
39
|
+
*/
|
|
40
|
+
readonly context?: ResearchResumeContext;
|
|
41
|
+
}
|
|
42
|
+
/** Local-context plan, DESIGN D1: `--context-mode` values (research only). */
|
|
43
|
+
export type ResearchContextMode = "organize" | "bias" | "both";
|
|
44
|
+
/**
|
|
45
|
+
* Local-context plan, Ticket 3 (DESIGN D5): the resume-command view of
|
|
46
|
+
* the context flags. `path` is the original `--context` value (file
|
|
47
|
+
* sources only); `mode` records ONLY an explicitly-set
|
|
48
|
+
* `--context-mode` — undefined (the organize default) stays omitted,
|
|
49
|
+
* matching `buildResearchResumeCommand`'s set-values-only convention.
|
|
50
|
+
*/
|
|
51
|
+
export interface ResearchResumeContext {
|
|
52
|
+
readonly source: "file" | "stdin";
|
|
53
|
+
readonly path?: string;
|
|
54
|
+
readonly mode?: ResearchContextMode;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Local-context plan, Ticket 2: what the handler threads into
|
|
58
|
+
* `research()` for `--context` / `--context-stdin`. The source is read
|
|
59
|
+
* (`readContextSource`) and parsed (`parseContextText`) exactly ONCE
|
|
60
|
+
* in `handleResearch`, BEFORE `executeWithFallback` — stdin drains on
|
|
61
|
+
* the first read, so a per-fallback-attempt read would hand the retry
|
|
62
|
+
* an empty string, silently mutate the request, and hash to a
|
|
63
|
+
* different async-job state file (DESIGN D5's second-paid-job trap).
|
|
64
|
+
* `research()` consumes this field only (D4 remap + D5 envelope field)
|
|
65
|
+
* and never re-reads the source.
|
|
66
|
+
*/
|
|
67
|
+
export interface ResearchContextInput {
|
|
68
|
+
readonly mode: ResearchContextMode;
|
|
69
|
+
readonly content: ContextSourceContent;
|
|
70
|
+
readonly parsed: ParsedContextText;
|
|
33
71
|
}
|
|
34
72
|
/**
|
|
35
73
|
* Dependencies injected by `src/index.ts` after Provider selection,
|
|
@@ -54,6 +92,13 @@ export interface ResearchHandlerDependencies {
|
|
|
54
92
|
* returns a teardown.
|
|
55
93
|
*/
|
|
56
94
|
readonly registerInterrupt?: (stateFilePath: string, resumeCommand: string) => (print: () => void) => () => void;
|
|
95
|
+
/**
|
|
96
|
+
* Local-context plan, Ticket 2 (DESIGN D3/D5): parsed local context
|
|
97
|
+
* from `--context` / `--context-stdin`, read + parsed once in the
|
|
98
|
+
* handler before the fallback executor runs. Absent → byte-identical
|
|
99
|
+
* pre-context behavior (no remap, no envelope field).
|
|
100
|
+
*/
|
|
101
|
+
readonly context?: ResearchContextInput;
|
|
57
102
|
}
|
|
58
103
|
export declare function validateModel(value: unknown): "mini" | "pro" | "auto" | undefined;
|
|
59
104
|
export declare function validateOutputLength(value: unknown): "short" | "standard" | "long" | undefined;
|
|
@@ -1 +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,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"research.d.ts","sourceRoot":"","sources":["../../src/commands/research.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@ import { asyncJobStateDir } from "../lib/cache.js";
|
|
|
24
24
|
import { computeAsyncJobStateHash } from "../lib/async-job-state.js";
|
|
25
25
|
import { OUTPUT_MODES } from "../lib/output.js";
|
|
26
26
|
import { TimeoutError, ValidationError } from "../lib/errors.js";
|
|
27
|
+
import { buildBiasAppend, slug } from "../lib/context-file.js";
|
|
27
28
|
// ---------------------------------------------------------------------------
|
|
28
29
|
// Parse-level validation
|
|
29
30
|
// ---------------------------------------------------------------------------
|
|
@@ -150,6 +151,26 @@ export function buildResearchResumeCommand(query, options, providerId) {
|
|
|
150
151
|
parts.push(`--citation-format ${options.citationFormat}`);
|
|
151
152
|
if (options.domain !== undefined)
|
|
152
153
|
parts.push(`--domain ${shellQuote(options.domain)}`);
|
|
154
|
+
// Local-context plan, Ticket 3 (DESIGN D5): the resume command must
|
|
155
|
+
// carry the context source. Under bias/both, `--context` alone would
|
|
156
|
+
// revert to the organize default, compute the un-mutated query, and
|
|
157
|
+
// hash to a different state file — silently starting a second paid
|
|
158
|
+
// job; under organize it is output-bearing (the resumed run re-maps
|
|
159
|
+
// sections and re-emits the envelope `context` field). Any file
|
|
160
|
+
// source appends `--context <path>` (shell-quoted); stdin sources
|
|
161
|
+
// carry `--context-stdin` — piped bytes cannot be embedded in a
|
|
162
|
+
// shell command, so help notes the user must re-pipe the same
|
|
163
|
+
// content unchanged. `--context-mode` appears only when the original
|
|
164
|
+
// invocation set it explicitly (unset values stay omitted).
|
|
165
|
+
if (options.context?.source === "file" && options.context.path !== undefined) {
|
|
166
|
+
parts.push(`--context ${shellQuote(options.context.path)}`);
|
|
167
|
+
}
|
|
168
|
+
else if (options.context?.source === "stdin") {
|
|
169
|
+
parts.push("--context-stdin");
|
|
170
|
+
}
|
|
171
|
+
if (options.context?.mode !== undefined) {
|
|
172
|
+
parts.push(`--context-mode ${options.context.mode}`);
|
|
173
|
+
}
|
|
153
174
|
return parts.join(" ");
|
|
154
175
|
}
|
|
155
176
|
/**
|
|
@@ -213,6 +234,67 @@ function parseReportSections(report) {
|
|
|
213
234
|
}
|
|
214
235
|
return sections.filter((s) => !/^(sources?|references?|citations?)$/i.test(s.heading));
|
|
215
236
|
}
|
|
237
|
+
/** Local-context DESIGN D4: body for a context heading no provider section matched. */
|
|
238
|
+
const NO_MATCHING_SECTION_BODY = "(no matching section in the provider report)";
|
|
239
|
+
/**
|
|
240
|
+
* Local-context DESIGN D4 (organize mode): re-present the provider's
|
|
241
|
+
* sections following the context file's headings, matching by EXACT
|
|
242
|
+
* slug equality (`slug` from lib/context-file.js — no prefix/fuzzy
|
|
243
|
+
* matching; determinism). All-non-Latin headings slug to "" under the
|
|
244
|
+
* normative ASCII formula; those match by exact RAW heading equality
|
|
245
|
+
* (lowercased, mirroring slug's first step) instead, so an
|
|
246
|
+
* identically-headed provider section still maps while unrelated
|
|
247
|
+
* ""-slug headings never fuse.
|
|
248
|
+
*
|
|
249
|
+
* - Output order: context headings in order. Each takes the bodies of
|
|
250
|
+
* ALL provider sections whose slug is equal, concatenated in
|
|
251
|
+
* provider order. A provider section is consumed by at most ONE
|
|
252
|
+
* context heading — the first in document order whose slug matches
|
|
253
|
+
* it — so a later context heading sharing that slug gets no match.
|
|
254
|
+
* - An unmatched context heading is kept with a placeholder body.
|
|
255
|
+
* - Unmatched provider sections are appended after the mapped block in
|
|
256
|
+
* their original order — never dropped (data-loss rule). With zero
|
|
257
|
+
* context headings the function is a structural no-op.
|
|
258
|
+
*/
|
|
259
|
+
function remapSectionsToContext(sections, contextHeadings) {
|
|
260
|
+
const consumed = new Array(sections.length).fill(false);
|
|
261
|
+
const remapped = [];
|
|
262
|
+
for (const heading of contextHeadings) {
|
|
263
|
+
const key = slug(heading);
|
|
264
|
+
// An all-non-Latin heading slugs to "" under the normative D4 ASCII
|
|
265
|
+
// formula, and ""-equality would fuse every such heading with every
|
|
266
|
+
// other one. Fall back to exact raw-heading equality (lowercased,
|
|
267
|
+
// mirroring slug's first step): an identically-headed provider
|
|
268
|
+
// section still matches, while unrelated ""-slug headings never do.
|
|
269
|
+
// Both parsers trim headings, so no re-trim is needed here.
|
|
270
|
+
const matches = key !== ""
|
|
271
|
+
? (sectionHeading) => slug(sectionHeading) === key
|
|
272
|
+
: (sectionHeading) => sectionHeading.toLowerCase() === heading.toLowerCase();
|
|
273
|
+
const bodies = [];
|
|
274
|
+
for (let i = 0; i < sections.length; i++) {
|
|
275
|
+
if (consumed[i])
|
|
276
|
+
continue;
|
|
277
|
+
const section = sections[i];
|
|
278
|
+
if (section === undefined)
|
|
279
|
+
continue;
|
|
280
|
+
if (matches(section.heading)) {
|
|
281
|
+
consumed[i] = true;
|
|
282
|
+
bodies.push(section.body);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
remapped.push({
|
|
286
|
+
heading,
|
|
287
|
+
body: bodies.length > 0 ? bodies.join("\n\n") : NO_MATCHING_SECTION_BODY,
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
for (let i = 0; i < sections.length; i++) {
|
|
291
|
+
const section = sections[i];
|
|
292
|
+
if (!consumed[i] && section !== undefined) {
|
|
293
|
+
remapped.push(section);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return remapped;
|
|
297
|
+
}
|
|
216
298
|
function buildResearchPresentations(sections, sources) {
|
|
217
299
|
const compact = sections.map((s) => s.body).join("\n\n");
|
|
218
300
|
const markdown = sections.map((s) => `## ${s.heading}\n\n${s.body}`).join("\n\n") +
|
|
@@ -236,7 +318,19 @@ export async function research(query, options = {}, deps, _context) {
|
|
|
236
318
|
if (typeof query !== "string" || query.trim() === "") {
|
|
237
319
|
throw new ValidationError("Research query must contain at least one non-whitespace character");
|
|
238
320
|
}
|
|
239
|
-
const
|
|
321
|
+
const contextInput = deps.context;
|
|
322
|
+
// Local-context plan, Ticket 3 (DESIGN D2.5/D5): under bias/both the
|
|
323
|
+
// parsed focus terms are appended to a LOCAL query copy that feeds
|
|
324
|
+
// ONLY `buildResearchRequest` — the resume command below still
|
|
325
|
+
// receives the ORIGINAL query, so re-running it re-derives the
|
|
326
|
+
// identical mutation (deterministic from query + source bytes; an
|
|
327
|
+
// unchanged source hashes to the same state file). organize is pure
|
|
328
|
+
// local re-presentation and leaves the request untouched (pinned by
|
|
329
|
+
// the Ticket 2 cache-identity golden).
|
|
330
|
+
const wireQuery = contextInput !== undefined && contextInput.mode !== "organize"
|
|
331
|
+
? buildBiasAppend(query, contextInput.parsed.terms)
|
|
332
|
+
: query;
|
|
333
|
+
const request = buildResearchRequest(wireQuery, options);
|
|
240
334
|
// Compute the state-file path AND the canonical resume command for
|
|
241
335
|
// the SIGINT handler. Both are derived from this attempt's
|
|
242
336
|
// capability (re-bound on every candidate the executor walks — the
|
|
@@ -302,21 +396,49 @@ export async function research(query, options = {}, deps, _context) {
|
|
|
302
396
|
? result.report.slice(0, options.maxChars - 1).trimEnd() + "…"
|
|
303
397
|
: result.report;
|
|
304
398
|
const sections = parseReportSections(reportText);
|
|
399
|
+
// Local-context plan, Ticket 2 (DESIGN D4): under organize (and
|
|
400
|
+
// both, which includes it) re-present the provider's sections
|
|
401
|
+
// following the context file's headings. Purely local — the wire
|
|
402
|
+
// request and the cache entry are untouched (pinned by the
|
|
403
|
+
// cache-identity golden test). `bias` alone does not reorganize.
|
|
404
|
+
const effectiveSections = contextInput !== undefined && contextInput.mode !== "bias"
|
|
405
|
+
? remapSectionsToContext(sections, contextInput.parsed.headings)
|
|
406
|
+
: sections;
|
|
305
407
|
const envelope = {
|
|
306
408
|
schemaVersion: result.schemaVersion,
|
|
307
409
|
query: result.query,
|
|
308
410
|
model: result.model,
|
|
309
|
-
sections,
|
|
411
|
+
sections: effectiveSections,
|
|
310
412
|
sources: result.sources,
|
|
311
413
|
};
|
|
312
414
|
if (options.maxChars && options.maxChars > 0 && result.report.length > options.maxChars) {
|
|
313
415
|
envelope.reportTruncated = true;
|
|
314
416
|
envelope.originalReportLength = result.report.length;
|
|
315
417
|
}
|
|
418
|
+
// Local-context plan, Ticket 2 (DESIGN D5): one optional envelope
|
|
419
|
+
// field recording what was parsed locally — counts, hashes, and
|
|
420
|
+
// the path only, never content (D6 privacy boundary). schemaVersion
|
|
421
|
+
// stays 1.
|
|
422
|
+
if (contextInput !== undefined) {
|
|
423
|
+
const contextField = {
|
|
424
|
+
source: contextInput.content.source,
|
|
425
|
+
sha256: contextInput.content.sha256,
|
|
426
|
+
mode: contextInput.mode,
|
|
427
|
+
derived: {
|
|
428
|
+
headings: contextInput.parsed.headings.length,
|
|
429
|
+
questions: contextInput.parsed.questions.length,
|
|
430
|
+
terms: contextInput.parsed.terms.length,
|
|
431
|
+
},
|
|
432
|
+
};
|
|
433
|
+
if (contextInput.content.path !== undefined) {
|
|
434
|
+
contextField.path = contextInput.content.path;
|
|
435
|
+
}
|
|
436
|
+
envelope.context = contextField;
|
|
437
|
+
}
|
|
316
438
|
return {
|
|
317
439
|
kind: "data",
|
|
318
440
|
data: envelope,
|
|
319
|
-
presentations: buildResearchPresentations(
|
|
441
|
+
presentations: buildResearchPresentations(effectiveSections, result.sources),
|
|
320
442
|
};
|
|
321
443
|
}
|
|
322
444
|
finally {
|
|
@@ -339,7 +461,9 @@ and synthesizes a cited report. This is a CREDIT-INTENSIVE operation
|
|
|
339
461
|
Ctrl-C safety: interrupting a research task does NOT lose credits. The
|
|
340
462
|
task keeps running server-side and its request_id is persisted to a state
|
|
341
463
|
file. Re-running the SAME command resumes polling instead of creating a
|
|
342
|
-
second task (no double charge).
|
|
464
|
+
second task (no double charge). If the original run used --context-stdin,
|
|
465
|
+
re-pipe the same content unchanged when resuming — piped bytes cannot be
|
|
466
|
+
embedded in the printed resume command.
|
|
343
467
|
|
|
344
468
|
Provider selection (precedence: --provider, then SCOUTLINE_PROVIDER,
|
|
345
469
|
then the configured default):
|
|
@@ -375,6 +499,25 @@ Options:
|
|
|
375
499
|
--timeout <s> Polling timeout in seconds (default: 300)
|
|
376
500
|
--no-cache Bypass the response cache for this invocation
|
|
377
501
|
|
|
502
|
+
Local context (steer the report from a local notes file; the two
|
|
503
|
+
source flags are mutually exclusive):
|
|
504
|
+
--context <path> Read a text/markdown file (max 256 KiB) as
|
|
505
|
+
research context.
|
|
506
|
+
--context-stdin Read the same content from standard input
|
|
507
|
+
(no value; pipe the file in). Resuming an
|
|
508
|
+
interrupted run re-pipes the same content
|
|
509
|
+
unchanged (see Ctrl-C safety above).
|
|
510
|
+
--context-mode <m> organize (default) | bias | both.
|
|
511
|
+
organize re-presents the returned report
|
|
512
|
+
following your file's headings — purely local:
|
|
513
|
+
the wire request, the cache key, and what leaves
|
|
514
|
+
your machine are unchanged.
|
|
515
|
+
bias/both append a "(focus: ...)" term segment
|
|
516
|
+
to the query. That segment is derived from your
|
|
517
|
+
file and is what leaves your machine under these
|
|
518
|
+
modes; it also changes the cache key, so a
|
|
519
|
+
different mode is a fresh (paid) job.
|
|
520
|
+
|
|
378
521
|
Common Options:
|
|
379
522
|
--provider <id> Override the active Provider (zai | minimax | tavily | exa | brave | firecrawl | parallel | perplexity | jina)
|
|
380
523
|
--output-format <mode> One of: ${OUTPUT_MODE_LIST} (default: data)
|
|
@@ -389,9 +532,14 @@ Output format (schema-version-1):
|
|
|
389
532
|
"sources": [{ "title": "...", "url": "..." }]
|
|
390
533
|
}
|
|
391
534
|
|
|
535
|
+
Under --context an optional "context" field records the source,
|
|
536
|
+
path, sha256, mode, and derived counts — metadata only, never file
|
|
537
|
+
content.
|
|
538
|
+
|
|
392
539
|
Examples:
|
|
393
540
|
scoutline research "Compare React vs Svelte for enterprise apps"
|
|
394
541
|
scoutline research "State of carbon capture 2025" --model pro
|
|
542
|
+
scoutline research "Quokka conservation" --context notes.md
|
|
395
543
|
scoutline research "Quantum computing benchmarks" --citation-format apa
|
|
396
544
|
scoutline --provider tavily research "Rust async runtime comparison"
|
|
397
545
|
`.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"research.js","sourceRoot":"","sources":["../../src/commands/research.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"research.js","sourceRoot":"","sources":["../../src/commands/research.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,6 +41,17 @@ export interface SearchExecutionDependencies {
|
|
|
41
41
|
readonly sleep: (ms: number) => Promise<void>;
|
|
42
42
|
readonly random: () => number;
|
|
43
43
|
readonly retryPolicy?: RetryPolicy;
|
|
44
|
+
/**
|
|
45
|
+
* Optional consumption sink (usage-ledger DESIGN D7 — PB-T2 parity
|
|
46
|
+
* with the fan-out executor and the other billable handlers). When
|
|
47
|
+
* present, every sub-query's `executeSearch` emits one consumption
|
|
48
|
+
* event per billable invoke attempt through it. When absent (the
|
|
49
|
+
* default), no event is emitted and behavior is byte-for-byte
|
|
50
|
+
* identical to before.
|
|
51
|
+
*/
|
|
52
|
+
readonly consume?: ConsumptionSink;
|
|
53
|
+
/** Timestamp source for consumption events; defaults to `Date.now`. */
|
|
54
|
+
readonly now?: () => number;
|
|
44
55
|
}
|
|
45
56
|
interface FormattedResult {
|
|
46
57
|
rank: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAqB,MAAM,0BAA0B,CAAC;AACjG,OAAO,KAAK,EACV,gBAAgB,EAIhB,WAAW,EACX,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAQ5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,KAAK,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAE/E,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,WAAW,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAChC,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/search.js
CHANGED
|
@@ -182,7 +182,7 @@ function splitMergeSubQueries(query) {
|
|
|
182
182
|
return subQueries;
|
|
183
183
|
}
|
|
184
184
|
export async function search(query, options = {}, deps, context) {
|
|
185
|
-
const { capability, cache, sleep, random, retryPolicy } = deps;
|
|
185
|
+
const { capability, cache, sleep, random, retryPolicy, consume, now } = deps;
|
|
186
186
|
// Split query on `|` if --merge is set. Empty fragments are dropped.
|
|
187
187
|
// A literal pipe in a single query can be escaped as `\|` (won't split).
|
|
188
188
|
let subQueries = [query];
|
|
@@ -191,7 +191,16 @@ export async function search(query, options = {}, deps, context) {
|
|
|
191
191
|
}
|
|
192
192
|
const isMerge = subQueries.length > 1;
|
|
193
193
|
const controls = buildControls(options);
|
|
194
|
-
|
|
194
|
+
// DESIGN D7: thread the optional consumption sink + clock through the
|
|
195
|
+
// same conditional-spread shape the fan-out executor uses, so the
|
|
196
|
+
// single-pin path bills exactly like a fan-out arm.
|
|
197
|
+
const executionDeps = {
|
|
198
|
+
cache,
|
|
199
|
+
sleep,
|
|
200
|
+
random,
|
|
201
|
+
...(consume !== undefined ? { consume } : {}),
|
|
202
|
+
...(now !== undefined ? { now } : {}),
|
|
203
|
+
};
|
|
195
204
|
// One executeSearch per sub-query. Each Adapter isolates its own
|
|
196
205
|
// transport per invocation, so the command does not manage client
|
|
197
206
|
// counts or close transports.
|
|
@@ -547,6 +556,25 @@ Options:
|
|
|
547
556
|
--merge Treat the query as multiple sub-queries split on '|'.
|
|
548
557
|
Runs them in parallel, dedupes by URL, ranks by how many
|
|
549
558
|
sub-queries surfaced each result. Escapes: '\\|' for literal pipe.
|
|
559
|
+
--context <path> Read a local notes file (max 256 KiB) and derive up
|
|
560
|
+
to 8 sub-queries from its headings and questions.
|
|
561
|
+
Your query always runs first; the derived
|
|
562
|
+
sub-queries are joined with it through the --merge
|
|
563
|
+
pipeline (deduped, occurrence-ranked).
|
|
564
|
+
What leaves your machine: the derived sub-query
|
|
565
|
+
strings become the search queries — the file
|
|
566
|
+
itself is never sent.
|
|
567
|
+
Mutually exclusive with \`--merge\` and
|
|
568
|
+
\`--context-stdin\`.
|
|
569
|
+
--context-stdin Same as \`--context\`, reading the notes from
|
|
570
|
+
standard input (no value; pipe the file in).
|
|
571
|
+
|
|
572
|
+
Under fan-out every arm runs every sub-query — one stderr notice
|
|
573
|
+
states the math: N sub-queries × M arms = N×M billable searches. In
|
|
574
|
+
JSON data modes \`--context\` wraps the payload as
|
|
575
|
+
{ "context": { counts, sha256 }, "results": [...] } — counts and a
|
|
576
|
+
SHA-256 of the source only, never file content; text modes render the
|
|
577
|
+
results unchanged.
|
|
550
578
|
|
|
551
579
|
Output formats (--output-format / -O):
|
|
552
580
|
data JSON array (default, token-efficient)
|
|
@@ -566,6 +594,7 @@ Examples:
|
|
|
566
594
|
scoutline search "x" -O markdown --max-summary 80 # chat-ready
|
|
567
595
|
scoutline search "x" --fields title,url # field-filtered JSON
|
|
568
596
|
scoutline search --merge "rust async|rust tokio|rust runtime" # multi-query merge
|
|
597
|
+
scoutline search "rust async" --context notes.md # local-context sub-queries
|
|
569
598
|
|
|
570
599
|
Default JSON shape:
|
|
571
600
|
[
|