scoutline 0.21.2 → 0.21.3
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 +42 -0
- package/dist/capabilities/science.d.ts +15 -0
- package/dist/capabilities/science.d.ts.map +1 -1
- package/dist/capabilities/science.js +79 -0
- package/dist/capabilities/science.js.map +1 -1
- package/dist/commands/science.d.ts +13 -0
- package/dist/commands/science.d.ts.map +1 -1
- package/dist/commands/science.js +243 -48
- package/dist/commands/science.js.map +1 -1
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +66 -32
- package/dist/index.js.map +1 -1
- package/dist/lib/async-job-state.d.ts +17 -0
- package/dist/lib/async-job-state.d.ts.map +1 -1
- package/dist/lib/async-job-state.js +29 -0
- package/dist/lib/async-job-state.js.map +1 -1
- package/dist/lib/batch-manifest.d.ts +9 -0
- package/dist/lib/batch-manifest.d.ts.map +1 -1
- package/dist/lib/batch-manifest.js +8 -0
- package/dist/lib/batch-manifest.js.map +1 -1
- package/dist/lib/cache.d.ts +89 -10
- package/dist/lib/cache.d.ts.map +1 -1
- package/dist/lib/cache.js +190 -42
- package/dist/lib/cache.js.map +1 -1
- package/dist/lib/execution.d.ts +6 -6
- package/dist/lib/execution.d.ts.map +1 -1
- package/dist/lib/execution.js +7 -5
- package/dist/lib/execution.js.map +1 -1
- package/dist/lib/mcp-client.d.ts.map +1 -1
- package/dist/lib/mcp-client.js +9 -6
- package/dist/lib/mcp-client.js.map +1 -1
- package/dist/lib/redact.d.ts +3 -0
- package/dist/lib/redact.d.ts.map +1 -1
- package/dist/lib/redact.js +24 -4
- package/dist/lib/redact.js.map +1 -1
- package/dist/lib/tool-cache.d.ts +6 -4
- package/dist/lib/tool-cache.d.ts.map +1 -1
- package/dist/lib/tool-cache.js +9 -7
- package/dist/lib/tool-cache.js.map +1 -1
- package/dist/providers/exa/adapter.d.ts +7 -0
- package/dist/providers/exa/adapter.d.ts.map +1 -1
- package/dist/providers/exa/adapter.js +11 -3
- package/dist/providers/exa/adapter.js.map +1 -1
- package/dist/providers/firecrawl/adapter.d.ts.map +1 -1
- package/dist/providers/firecrawl/adapter.js +12 -4
- package/dist/providers/firecrawl/adapter.js.map +1 -1
- package/dist/providers/linkup/adapter.d.ts.map +1 -1
- package/dist/providers/linkup/adapter.js +13 -12
- package/dist/providers/linkup/adapter.js.map +1 -1
- package/dist/providers/openalex/adapter.d.ts.map +1 -1
- package/dist/providers/openalex/adapter.js +2 -0
- package/dist/providers/openalex/adapter.js.map +1 -1
- package/dist/providers/parallel/adapter.d.ts.map +1 -1
- package/dist/providers/parallel/adapter.js +17 -6
- package/dist/providers/parallel/adapter.js.map +1 -1
- package/dist/providers/registry.d.ts +12 -0
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +12 -0
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/tavily/adapter.d.ts.map +1 -1
- package/dist/providers/tavily/adapter.js +12 -5
- package/dist/providers/tavily/adapter.js.map +1 -1
- package/package.json +1 -1
- package/skills/scoutline/SKILL.md +89 -81
package/README.md
CHANGED
|
@@ -323,6 +323,48 @@ rewrite the whole log under a write lock. Measured appends stay well under
|
|
|
323
323
|
100ms through ~20k entries; segmented-log/compaction is the named future
|
|
324
324
|
policy for larger journals.
|
|
325
325
|
|
|
326
|
+
### Process Isolation (`--isolated`)
|
|
327
|
+
|
|
328
|
+
`--isolated` runs in process-isolated state: unique artifacts namespace
|
|
329
|
+
and per-process caches. Several `scoutline` processes sharing one home
|
|
330
|
+
directory never read each other's caches or artifact stores — built for
|
|
331
|
+
high-throughput headless concurrency. Pass the flag — `SCOUTLINE_ISOLATED=1`
|
|
332
|
+
in the environment engages only part of the contract: the artifact
|
|
333
|
+
store, the MCP client's tool and response caches, and `batch`'s per-op
|
|
334
|
+
refusals honor the variable,
|
|
335
|
+
but the capability response caches (main's factory) and `watch`/
|
|
336
|
+
`research`/`crawl` do not. Prefer `--isolated`.
|
|
337
|
+
|
|
338
|
+
| Refused under `--isolated` | Why |
|
|
339
|
+
| --- | --- |
|
|
340
|
+
| `watch` (all subcommands) | Persistent snapshot ring + never-pruned change log |
|
|
341
|
+
| `research` | Async-job resume state under `SCOUTLINE_CACHE_DIR/research` |
|
|
342
|
+
| `crawl` | Async-job resume state under `SCOUTLINE_CACHE_DIR/crawl` |
|
|
343
|
+
| `batch` ops whose `command` is `research`/`crawl` | Rejected per op, naming the index |
|
|
344
|
+
|
|
345
|
+
`map` is allowed (synchronous, stateless). `research` and `crawl` are
|
|
346
|
+
credit-intensive and resume an interrupted job instead of paying for a
|
|
347
|
+
second one; that resume works by finding the job's state file under the
|
|
348
|
+
shared cache root — exactly the shared state an isolated run must not
|
|
349
|
+
touch. Bringing it under the per-pid contract would hide it from the next
|
|
350
|
+
run and silently break the double-charge guard, so the rejections name the
|
|
351
|
+
store and the remedy (`drop --isolated to keep resume state`) instead of
|
|
352
|
+
running with silently broken state.
|
|
353
|
+
|
|
354
|
+
What isolates: the response cache (`<cache root>/cache/isolated/<pid>/`),
|
|
355
|
+
the tool-discovery cache (`<cache root>/tools/isolated/<pid>/`), and the
|
|
356
|
+
`--save` artifact store (`<artifacts root>/isolated/<pid>/`). Isolated
|
|
357
|
+
subtrees stay inside their parent so the usual LRU/TTL eviction bounds
|
|
358
|
+
them while the process lives. A cache injected through the embedding API
|
|
359
|
+
still wins over the isolated default, and shared-state persistence (usage
|
|
360
|
+
ledger, quota snapshots, background quota refresh) is skipped entirely.
|
|
361
|
+
|
|
362
|
+
`cache stats`/`clear`/`prune` are non-isolated views — they skip the
|
|
363
|
+
`isolated/` subdirectories, so a cleanup in one process never deletes
|
|
364
|
+
another's in-flight entries. See
|
|
365
|
+
[docs/configuration.md](https://github.com/vikasagarwal101/scoutline/blob/main/docs/configuration.md#process-isolation---isolated)
|
|
366
|
+
for the full contract.
|
|
367
|
+
|
|
326
368
|
## Capability Matrix
|
|
327
369
|
|
|
328
370
|
The matrix below is generated from the production provider registry
|
|
@@ -190,4 +190,19 @@ export declare function validateScienceSearchRequest(request: ScienceSearchReque
|
|
|
190
190
|
* grammar throws `ValidationError`.
|
|
191
191
|
*/
|
|
192
192
|
export declare function validateScienceGetRequest(request: ScienceGetRequest): void;
|
|
193
|
+
/**
|
|
194
|
+
* Total decoder for a cached science SEARCH entry (the normalized
|
|
195
|
+
* `readonly ScienceWork[]` an arm's invoke produced). Returns the typed
|
|
196
|
+
* array, or `null` when the raw value is not a well-formed works array
|
|
197
|
+
* — a malformed cached entry is a miss (the consult site re-invokes and
|
|
198
|
+
* overwrites). Never throws.
|
|
199
|
+
*/
|
|
200
|
+
export declare function decodeScienceWorks(value: unknown): readonly ScienceWork[] | null;
|
|
201
|
+
/**
|
|
202
|
+
* Total decoder for a cached science GET entry (one normalized
|
|
203
|
+
* `ScienceWork`). Returns the typed work, or `null` on any malformed
|
|
204
|
+
* shape — same miss-and-overwrite contract as
|
|
205
|
+
* {@link decodeScienceWorks}. Never throws.
|
|
206
|
+
*/
|
|
207
|
+
export declare function decodeScienceWork(value: unknown): ScienceWork | null;
|
|
193
208
|
//# sourceMappingURL=science.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"science.d.ts","sourceRoot":"","sources":["../../src/capabilities/science.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"science.d.ts","sourceRoot":"","sources":["../../src/capabilities/science.ts"],"names":[],"mappings":"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"}
|
|
@@ -107,4 +107,83 @@ export function validateScienceGetRequest(request) {
|
|
|
107
107
|
throw new ValidationError(`Invalid identifier: expected a bare DOI, numeric PMID, or arXiv id`);
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
// Total cached-entry decoders (issue #140; DESIGN D4 response cache)
|
|
112
|
+
// ---------------------------------------------------------------------------
|
|
113
|
+
/**
|
|
114
|
+
* Shape guard for one `ScienceWork`. `title` and `url` are required
|
|
115
|
+
* strings; every KNOWN optional field is type-checked (a wrong-typed
|
|
116
|
+
* field is a malformed entry → the caller treats it as a cache miss and
|
|
117
|
+
* re-fetches, overwriting). UNKNOWN extra keys are kept verbatim — the
|
|
118
|
+
* decoder must never drop fields a future enrichment added before the
|
|
119
|
+
* entry was cached (cached shapes survive round-trip). Total: never
|
|
120
|
+
* throws, never coerces.
|
|
121
|
+
*/
|
|
122
|
+
function isScienceWorkShape(value) {
|
|
123
|
+
if (value === null || typeof value !== "object" || Array.isArray(value))
|
|
124
|
+
return false;
|
|
125
|
+
const work = value;
|
|
126
|
+
if (typeof work.title !== "string" || typeof work.url !== "string")
|
|
127
|
+
return false;
|
|
128
|
+
if (work.identifiers !== undefined) {
|
|
129
|
+
const ids = work.identifiers;
|
|
130
|
+
if (ids === null || typeof ids !== "object" || Array.isArray(ids))
|
|
131
|
+
return false;
|
|
132
|
+
const record = ids;
|
|
133
|
+
for (const key of ["doi", "pmid", "arxivId"]) {
|
|
134
|
+
const v = record[key];
|
|
135
|
+
if (v !== undefined && typeof v !== "string")
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (work.authors !== undefined) {
|
|
140
|
+
if (!Array.isArray(work.authors) || !work.authors.every((a) => typeof a === "string")) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (work.year !== undefined && !Number.isFinite(work.year))
|
|
145
|
+
return false;
|
|
146
|
+
if (work.venue !== undefined && typeof work.venue !== "string")
|
|
147
|
+
return false;
|
|
148
|
+
if (work.summary !== undefined && typeof work.summary !== "string")
|
|
149
|
+
return false;
|
|
150
|
+
if (work.citationCount !== undefined && !Number.isFinite(work.citationCount))
|
|
151
|
+
return false;
|
|
152
|
+
if (work.pdfUrl !== undefined && typeof work.pdfUrl !== "string")
|
|
153
|
+
return false;
|
|
154
|
+
if (work.openAccess !== undefined && typeof work.openAccess !== "boolean")
|
|
155
|
+
return false;
|
|
156
|
+
if (work.type !== undefined && typeof work.type !== "string")
|
|
157
|
+
return false;
|
|
158
|
+
if (work.language !== undefined && typeof work.language !== "string")
|
|
159
|
+
return false;
|
|
160
|
+
if (work.updated !== undefined && typeof work.updated !== "string")
|
|
161
|
+
return false;
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Total decoder for a cached science SEARCH entry (the normalized
|
|
166
|
+
* `readonly ScienceWork[]` an arm's invoke produced). Returns the typed
|
|
167
|
+
* array, or `null` when the raw value is not a well-formed works array
|
|
168
|
+
* — a malformed cached entry is a miss (the consult site re-invokes and
|
|
169
|
+
* overwrites). Never throws.
|
|
170
|
+
*/
|
|
171
|
+
export function decodeScienceWorks(value) {
|
|
172
|
+
if (!Array.isArray(value))
|
|
173
|
+
return null;
|
|
174
|
+
for (const row of value) {
|
|
175
|
+
if (!isScienceWorkShape(row))
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
return value;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Total decoder for a cached science GET entry (one normalized
|
|
182
|
+
* `ScienceWork`). Returns the typed work, or `null` on any malformed
|
|
183
|
+
* shape — same miss-and-overwrite contract as
|
|
184
|
+
* {@link decodeScienceWorks}. Never throws.
|
|
185
|
+
*/
|
|
186
|
+
export function decodeScienceWork(value) {
|
|
187
|
+
return isScienceWorkShape(value) ? value : null;
|
|
188
|
+
}
|
|
110
189
|
//# sourceMappingURL=science.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"science.js","sourceRoot":"","sources":["../../src/capabilities/science.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAM7B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;AAgK5E,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E,oEAAoE;AACpE,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAEtD,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,eAAe,CACvB,iBAAiB,IAAI,uDAAuD,CAC7E,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,eAAe,CACvB,uBAAuB,IAAI,gDAAgD,CAC5E,CAAC;IACJ,CAAC;AACH,CAAC;AASD,mEAAmE;AACnE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAC7C,kEAAkE;AAClE,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAC5C,4DAA4D;AAC5D,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AACrD,oBAAoB;AACpB,MAAM,YAAY,GAAG,OAAO,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAkB;IAElB,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,OAAO,CAAC;IACtD,IAAI,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,OAAO,CAAC;IAC1D,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,MAAM,CAAC;IACjD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAC1C,OAA6B;IAE7B,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACrE,MAAM,IAAI,eAAe,CAAC,0DAA0D,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;IACpC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAA0B;IAClE,IACE,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;QACtC,sBAAsB,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,EACnD,CAAC;QACD,MAAM,IAAI,eAAe,CACvB,oEAAoE,CACrE,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"science.js","sourceRoot":"","sources":["../../src/capabilities/science.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,5 +56,18 @@ export interface HandleScienceOptions {
|
|
|
56
56
|
*/
|
|
57
57
|
readonly registerInterrupt?: (handler: () => void) => () => void;
|
|
58
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* T7: derive the journal entry's cacheKey from a supplier science
|
|
61
|
+
* cache identity. Science identities are `{supplier, capability:
|
|
62
|
+
* "science.search"|"science.get", credentialFingerprint, request}` —
|
|
63
|
+
* the `supplier`/`capability` naming differs from the
|
|
64
|
+
* provider-capability identities the capture wrapper keys off, so the
|
|
65
|
+
* journal derives the SAME partitioned-key shape the supplier's
|
|
66
|
+
* response cache is keyed under (since #140 science consults and
|
|
67
|
+
* fills that cache at its own invoke sites, deriving the key right
|
|
68
|
+
* there): `buildProviderCacheKey` over the identity, namespace
|
|
69
|
+
* verbatim.
|
|
70
|
+
*/
|
|
71
|
+
export declare function scienceCacheKey(identity: unknown): string | undefined;
|
|
59
72
|
export declare function handleScience(args: string[], outputMode: OutputMode, deps: HandlerDependencies, options?: HandleScienceOptions): Promise<number>;
|
|
60
73
|
//# sourceMappingURL=science.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"science.d.ts","sourceRoot":"","sources":["../../src/commands/science.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;
|
|
1
|
+
{"version":3,"file":"science.d.ts","sourceRoot":"","sources":["../../src/commands/science.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAeH,OAAO,EAAe,KAAK,YAAY,EAAmB,MAAM,yBAAyB,CAAC;AAK1F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AA4CvD,eAAO,MAAM,YAAY,QAgCjB,CAAC;AAuGT,yEAAyE;AACzE,eAAO,MAAM,cAAc,EAAE,YAK5B,CAAC;AA+FF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG;IACzD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B,CA6BA;AA2gBD,MAAM,WAAW,oBAAoB;IACnC,kEAAkE;IAClE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;CAClE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAqBrE;AA0HD,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,mBAAmB,EACzB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAshBjB"}
|