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.
Files changed (65) hide show
  1. package/README.md +42 -0
  2. package/dist/capabilities/science.d.ts +15 -0
  3. package/dist/capabilities/science.d.ts.map +1 -1
  4. package/dist/capabilities/science.js +79 -0
  5. package/dist/capabilities/science.js.map +1 -1
  6. package/dist/commands/science.d.ts +13 -0
  7. package/dist/commands/science.d.ts.map +1 -1
  8. package/dist/commands/science.js +243 -48
  9. package/dist/commands/science.js.map +1 -1
  10. package/dist/index.d.ts +12 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +66 -32
  13. package/dist/index.js.map +1 -1
  14. package/dist/lib/async-job-state.d.ts +17 -0
  15. package/dist/lib/async-job-state.d.ts.map +1 -1
  16. package/dist/lib/async-job-state.js +29 -0
  17. package/dist/lib/async-job-state.js.map +1 -1
  18. package/dist/lib/batch-manifest.d.ts +9 -0
  19. package/dist/lib/batch-manifest.d.ts.map +1 -1
  20. package/dist/lib/batch-manifest.js +8 -0
  21. package/dist/lib/batch-manifest.js.map +1 -1
  22. package/dist/lib/cache.d.ts +89 -10
  23. package/dist/lib/cache.d.ts.map +1 -1
  24. package/dist/lib/cache.js +190 -42
  25. package/dist/lib/cache.js.map +1 -1
  26. package/dist/lib/execution.d.ts +6 -6
  27. package/dist/lib/execution.d.ts.map +1 -1
  28. package/dist/lib/execution.js +7 -5
  29. package/dist/lib/execution.js.map +1 -1
  30. package/dist/lib/mcp-client.d.ts.map +1 -1
  31. package/dist/lib/mcp-client.js +9 -6
  32. package/dist/lib/mcp-client.js.map +1 -1
  33. package/dist/lib/redact.d.ts +3 -0
  34. package/dist/lib/redact.d.ts.map +1 -1
  35. package/dist/lib/redact.js +24 -4
  36. package/dist/lib/redact.js.map +1 -1
  37. package/dist/lib/tool-cache.d.ts +6 -4
  38. package/dist/lib/tool-cache.d.ts.map +1 -1
  39. package/dist/lib/tool-cache.js +9 -7
  40. package/dist/lib/tool-cache.js.map +1 -1
  41. package/dist/providers/exa/adapter.d.ts +7 -0
  42. package/dist/providers/exa/adapter.d.ts.map +1 -1
  43. package/dist/providers/exa/adapter.js +11 -3
  44. package/dist/providers/exa/adapter.js.map +1 -1
  45. package/dist/providers/firecrawl/adapter.d.ts.map +1 -1
  46. package/dist/providers/firecrawl/adapter.js +12 -4
  47. package/dist/providers/firecrawl/adapter.js.map +1 -1
  48. package/dist/providers/linkup/adapter.d.ts.map +1 -1
  49. package/dist/providers/linkup/adapter.js +13 -12
  50. package/dist/providers/linkup/adapter.js.map +1 -1
  51. package/dist/providers/openalex/adapter.d.ts.map +1 -1
  52. package/dist/providers/openalex/adapter.js +2 -0
  53. package/dist/providers/openalex/adapter.js.map +1 -1
  54. package/dist/providers/parallel/adapter.d.ts.map +1 -1
  55. package/dist/providers/parallel/adapter.js +17 -6
  56. package/dist/providers/parallel/adapter.js.map +1 -1
  57. package/dist/providers/registry.d.ts +12 -0
  58. package/dist/providers/registry.d.ts.map +1 -1
  59. package/dist/providers/registry.js +12 -0
  60. package/dist/providers/registry.js.map +1 -1
  61. package/dist/providers/tavily/adapter.d.ts.map +1 -1
  62. package/dist/providers/tavily/adapter.js +12 -5
  63. package/dist/providers/tavily/adapter.js.map +1 -1
  64. package/package.json +1 -1
  65. 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;AAWH,OAAO,EAAe,KAAK,YAAY,EAAmB,MAAM,yBAAyB,CAAC;AAI1F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAyCvD,eAAO,MAAM,YAAY,QA+BjB,CAAC;AAuGT,yEAAyE;AACzE,eAAO,MAAM,cAAc,EAAE,YAK5B,CAAC;AA4FF,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;AAobD,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;AAuHD,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,mBAAmB,EACzB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAiajB"}
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"}