scoutline 0.18.0 → 0.19.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 +12 -0
- package/dist/command-invocation.d.ts +21 -1
- package/dist/command-invocation.d.ts.map +1 -1
- package/dist/command-invocation.js +8 -1
- package/dist/command-invocation.js.map +1 -1
- package/dist/commands/history.d.ts +120 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +249 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +671 -20
- package/dist/index.js.map +1 -1
- package/dist/lib/artifacts.d.ts +149 -0
- package/dist/lib/artifacts.d.ts.map +1 -0
- package/dist/lib/artifacts.js +380 -0
- package/dist/lib/artifacts.js.map +1 -0
- package/dist/lib/async-file-lock.d.ts +18 -0
- package/dist/lib/async-file-lock.d.ts.map +1 -1
- package/dist/lib/async-file-lock.js +31 -1
- package/dist/lib/async-file-lock.js.map +1 -1
- package/dist/lib/quota-mapping.d.ts +0 -14
- package/dist/lib/quota-mapping.d.ts.map +1 -1
- package/dist/lib/quota-mapping.js +0 -23
- package/dist/lib/quota-mapping.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact store core (save-artifacts epic, ticket T1).
|
|
3
|
+
*
|
|
4
|
+
* Three primitives every later save/history ticket builds on:
|
|
5
|
+
* - `newRequestId(now)` — `<UTC compact>-<4 lowercase hex>` (e.g.
|
|
6
|
+
* `20260829T142233Z-7f3a`). Timestamp from the INJECTED `now` (repo
|
|
7
|
+
* time-injection rule — never `Date.now()` for the timestamp part),
|
|
8
|
+
* hex tail from `crypto.randomBytes(2)` (injectable for hermetic
|
|
9
|
+
* tests). Lexicographically sortable; filesystem-safe.
|
|
10
|
+
* - `resolveArtifactsDir(env)` — `SCOUTLINE_ARTIFACTS_DIR` wins, else
|
|
11
|
+
* `<resolveConfigRootPure(env)>/artifacts`.
|
|
12
|
+
* - `writeArtifact(dir, requestId, content, { format, force })` — an
|
|
13
|
+
* atomic artifact write that REFUSES overwrites: the pre-check the
|
|
14
|
+
* `atomicReplaceFile` primitive deliberately lacks. The refusal leaves
|
|
15
|
+
* an existing target byte-identical (checked before any write); with
|
|
16
|
+
* `force` the replacement rides the same atomic rename.
|
|
17
|
+
*
|
|
18
|
+
* Ticket T2 adds the metadata side of the clean-report split — the
|
|
19
|
+
* `index.json` log under the artifacts dir:
|
|
20
|
+
* - `appendLogEntry(dir, entry, options?)` — one versioned save entry
|
|
21
|
+
* appended under the `artifacts-write` file lock (the cache-write
|
|
22
|
+
* precedent), so concurrent CLI invocations never lose or tear
|
|
23
|
+
* entries. Resolves with a stderr notice when a corrupt pre-existing
|
|
24
|
+
* log was reset by the append.
|
|
25
|
+
* - `readLog(dir)` — lock-free, fail-open: a missing store reads as
|
|
26
|
+
* `{version:1, entries:[]}`; a corrupt or unrecognized file reads the
|
|
27
|
+
* same plus a notice for stderr. Never throws.
|
|
28
|
+
*/
|
|
29
|
+
import { randomBytes as cryptoRandomBytes, randomUUID } from "node:crypto";
|
|
30
|
+
import * as os from "node:os";
|
|
31
|
+
import * as path from "node:path";
|
|
32
|
+
import * as fs from "node:fs/promises";
|
|
33
|
+
import { atomicReplaceFile, resolveConfigRootPure, } from "./config-store.js";
|
|
34
|
+
import { FileError } from "./errors.js";
|
|
35
|
+
import { DEFAULT_LOCK_STALE_MS, DEFAULT_LOCK_TIMEOUT_MS, withAsyncFileLock, } from "./async-file-lock.js";
|
|
36
|
+
import pkg from "../../package.json" with { type: "json" };
|
|
37
|
+
/** UTC compact timestamp `YYYYMMDDTHHMMSSZ` — fixed width, lex-sortable. */
|
|
38
|
+
function utcCompactTimestamp(now) {
|
|
39
|
+
const pad2 = (value) => String(value).padStart(2, "0");
|
|
40
|
+
return (`${String(now.getUTCFullYear()).padStart(4, "0")}` +
|
|
41
|
+
`${pad2(now.getUTCMonth() + 1)}${pad2(now.getUTCDate())}` +
|
|
42
|
+
`T${pad2(now.getUTCHours())}${pad2(now.getUTCMinutes())}${pad2(now.getUTCSeconds())}Z`);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Build a request id from the injected instant: `<UTC compact>-<4 hex>`,
|
|
46
|
+
* e.g. `20260829T142233Z-7f3a`. The hex tail comes from two random bytes
|
|
47
|
+
* per call, so ids generated within the same second still differ.
|
|
48
|
+
* Sorting ids lexicographically sorts them chronologically (same-second
|
|
49
|
+
* ids tie — order between them is not defined).
|
|
50
|
+
*/
|
|
51
|
+
export function newRequestId(now, randomBytes = cryptoRandomBytes) {
|
|
52
|
+
const bytes = randomBytes(2);
|
|
53
|
+
const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
54
|
+
return `${utcCompactTimestamp(new Date(now))}-${hex}`;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Artifacts root: `SCOUTLINE_ARTIFACTS_DIR` (canonical SCOUTLINE_* name, no
|
|
58
|
+
* legacy alias) wins; otherwise the config root's `artifacts/` sibling.
|
|
59
|
+
* Pure — the caller supplies env and platform; the convenience wrapper is
|
|
60
|
+
* left to the command layer (T2/T3) so tests never touch process.env.
|
|
61
|
+
*/
|
|
62
|
+
export function resolveArtifactsDir(env, platform = { homedir: os.homedir() }) {
|
|
63
|
+
return (env.SCOUTLINE_ARTIFACTS_DIR || path.join(resolveConfigRootPure(env, platform), "artifacts"));
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Existence check that sees through NOTHING: {@link fs.lstat}, not
|
|
67
|
+
* {@link fs.stat}, so a dangling symlink (stat: ENOENT) still counts as
|
|
68
|
+
* an existing entry and is never silently replaced by a force=false
|
|
69
|
+
* write (review fixup: the dangling-symlink hole).
|
|
70
|
+
*/
|
|
71
|
+
async function entryExists(filePath) {
|
|
72
|
+
try {
|
|
73
|
+
await fs.lstat(filePath);
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
if (error.code === "ENOENT")
|
|
78
|
+
return false;
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Write one master artifact `<artifactsDir>/<requestId>.json|.md` through
|
|
84
|
+
* {@link atomicReplaceFile} so the 0700-dir / 0600-temp / fsync / rename
|
|
85
|
+
* discipline is inherited, never reimplemented. The one addition that
|
|
86
|
+
* primitive lacks: without `force`, an existing target throws
|
|
87
|
+
* {@link FileError} (`FILE_ERROR`, exit 1 — owner ruling, no new code)
|
|
88
|
+
* BEFORE any write, leaving the file byte-identical. Resolves with the
|
|
89
|
+
* target path (the later log's `masterPath`).
|
|
90
|
+
*
|
|
91
|
+
* Review fixup (atomic no-overwrite): the existence check and the write
|
|
92
|
+
* are serialized through the shared `artifacts-write` lock (the same
|
|
93
|
+
* identity {@link appendLogEntry} uses), and the check is re-run INSIDE
|
|
94
|
+
* the critical section. Two concurrent saves racing on the same
|
|
95
|
+
* requestId (or a same-path export) can no longer both pass the
|
|
96
|
+
* pre-check and have the second silently overwrite the first — the
|
|
97
|
+
* loser gets the FileError. `force` writes ride the same lock so a
|
|
98
|
+
* forced replace cannot interleave with a concurrent no-force refusal
|
|
99
|
+
* window; atomicReplaceFile keeps the replacement itself atomic.
|
|
100
|
+
*/
|
|
101
|
+
export async function writeArtifact(dir, requestId, content, options = {}) {
|
|
102
|
+
const extension = options.format === "markdown" ? "md" : "json";
|
|
103
|
+
const target = path.join(dir, `${requestId}.${extension}`);
|
|
104
|
+
const refuse = () => new FileError(`Refusing to overwrite existing artifact: ${target}`, "Pass --save-force to overwrite the existing artifact.");
|
|
105
|
+
await withAsyncFileLock(dir, ARTIFACTS_LOG_LOCK_IDENTITY, async () => {
|
|
106
|
+
if (!options.force && (await entryExists(target)))
|
|
107
|
+
throw refuse();
|
|
108
|
+
await atomicReplaceFile(target, content);
|
|
109
|
+
}, {
|
|
110
|
+
timeoutMs: options.lock?.timeoutMs ?? DEFAULT_LOCK_TIMEOUT_MS,
|
|
111
|
+
staleMs: options.lock?.staleMs ?? DEFAULT_LOCK_STALE_MS,
|
|
112
|
+
setTimeout: options.lock?.setTimeout,
|
|
113
|
+
timeoutLabel: "Artifacts master write",
|
|
114
|
+
});
|
|
115
|
+
return target;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Atomic check-and-place for the export copy: creates the target's
|
|
119
|
+
* directory as needed (0700 when newly created; pre-existing directories
|
|
120
|
+
* keep their permissions), writes the content to a unique 0600 temp file
|
|
121
|
+
* in that directory (fsync'd),
|
|
122
|
+
* then makes the target via {@link fs.link} — an atomic exclusive create
|
|
123
|
+
* that fails with EEXIST when the target appeared meanwhile. Resolves
|
|
124
|
+
* `true` when placed, `false` when the target already existed (which is
|
|
125
|
+
* left byte-identical — the link never touched it). Review fixup: closes
|
|
126
|
+
* the export TOCTOU the exists-recheck could only narrow (check and
|
|
127
|
+
* place are one atomic step now).
|
|
128
|
+
*/
|
|
129
|
+
export async function atomicPlaceNoClobber(filePath, contents) {
|
|
130
|
+
const root = path.dirname(filePath);
|
|
131
|
+
// Harden only directories WE created (review r5, race-closed r7): a
|
|
132
|
+
// pre-mkdir stat goes stale if a concurrent creator makes `root` first,
|
|
133
|
+
// so decide "ours" from the non-recursive mkdir itself — EEXIST means
|
|
134
|
+
// someone else made it and its permissions are not ours to change.
|
|
135
|
+
await fs.mkdir(path.dirname(root), { recursive: true, mode: 0o700 });
|
|
136
|
+
let created = false;
|
|
137
|
+
try {
|
|
138
|
+
await fs.mkdir(root, { mode: 0o700 });
|
|
139
|
+
created = true;
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
if (error.code !== "EEXIST")
|
|
143
|
+
throw error;
|
|
144
|
+
}
|
|
145
|
+
if (created && process.platform !== "win32")
|
|
146
|
+
await fs.chmod(root, 0o700);
|
|
147
|
+
const tempPath = path.join(root, `.${path.basename(filePath)}.${process.pid}.${randomUUID()}.tmp`);
|
|
148
|
+
const handle = await fs.open(tempPath, "wx", 0o600);
|
|
149
|
+
let closed = false;
|
|
150
|
+
try {
|
|
151
|
+
await handle.writeFile(contents);
|
|
152
|
+
await handle.sync();
|
|
153
|
+
// Our temp file's identity, captured while the fd is still open.
|
|
154
|
+
const mine = await handle.stat();
|
|
155
|
+
await handle.close();
|
|
156
|
+
closed = true;
|
|
157
|
+
try {
|
|
158
|
+
await fs.link(tempPath, filePath);
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
if (error.code === "EEXIST")
|
|
162
|
+
return false;
|
|
163
|
+
throw error;
|
|
164
|
+
}
|
|
165
|
+
// Swap guard (review r6): fs.link resolves the PATH, so in a writable,
|
|
166
|
+
// non-sticky directory another local user can replace tempPath between
|
|
167
|
+
// our close and the link — Node has no linkat(AT_EMPTY_PATH) to pin the
|
|
168
|
+
// fd. Verify the placed entry IS our inode; never export swapped-in
|
|
169
|
+
// content.
|
|
170
|
+
const placed = await fs.stat(filePath);
|
|
171
|
+
if (placed.dev !== mine.dev || placed.ino !== mine.ino) {
|
|
172
|
+
await fs.unlink(filePath).catch(() => { });
|
|
173
|
+
throw new FileError("Refusing to export: the staged temp file was replaced while placing the artifact.", "Retry the save; if this recurs, export into a directory other users cannot write.");
|
|
174
|
+
}
|
|
175
|
+
// Durability (review r4): fsync the directory so the new entry itself
|
|
176
|
+
// survives power loss — file-data fsync alone can lose the link-in
|
|
177
|
+
// (POSIX only; Windows has no directory-sync primitive).
|
|
178
|
+
if (process.platform !== "win32") {
|
|
179
|
+
const dirHandle = await fs.open(root, "r");
|
|
180
|
+
try {
|
|
181
|
+
await dirHandle.sync();
|
|
182
|
+
}
|
|
183
|
+
finally {
|
|
184
|
+
await dirHandle.close().catch(() => { });
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
189
|
+
finally {
|
|
190
|
+
// Leak guard (review r4): close the temp handle even when writeFile or
|
|
191
|
+
// sync rejected — open handles block the unlink below on platforms
|
|
192
|
+
// that forbid unlinking open files.
|
|
193
|
+
if (!closed)
|
|
194
|
+
await handle.close().catch(() => { });
|
|
195
|
+
await fs.unlink(tempPath).catch(() => { });
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// ---------------------------------------------------------------------------
|
|
199
|
+
// Metadata log (`index.json`) — ticket T2. The log is the metadata half of
|
|
200
|
+
// the clean-report split: reports carry content + requestId only, the log
|
|
201
|
+
// carries the "which provider did what and why" story joined by requestId.
|
|
202
|
+
// ---------------------------------------------------------------------------
|
|
203
|
+
/** Log filename under the artifacts dir (DESIGN.md D5). */
|
|
204
|
+
export const ARTIFACTS_LOG_FILENAME = "index.json";
|
|
205
|
+
/** The log's own version namespace — independent of the report schemaVersion. */
|
|
206
|
+
export const ARTIFACTS_LOG_VERSION = 1;
|
|
207
|
+
/** Fixed lock identity serializing every index.json append (cache-write precedent). */
|
|
208
|
+
const ARTIFACTS_LOG_LOCK_IDENTITY = "artifacts-write";
|
|
209
|
+
/** CLI version stamped into each entry (the src/index.ts pkg-import idiom). */
|
|
210
|
+
export const CLI_VERSION = pkg.version;
|
|
211
|
+
function emptyLog() {
|
|
212
|
+
return { version: ARTIFACTS_LOG_VERSION, entries: [] };
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Structural guard for one entry: every field of the {@link SaveLogEntry}
|
|
216
|
+
* shape is type-checked BEFORE the cast, and `masterPath` must be a bare
|
|
217
|
+
* filename (no path separators, no dot segments) so a hostile persisted
|
|
218
|
+
* entry cannot steer `history show`'s `path.join(dir, masterPath)` read
|
|
219
|
+
* outside the artifacts dir (review fixup: the unvalidated-entry hole).
|
|
220
|
+
*/
|
|
221
|
+
function asSaveLogEntry(value) {
|
|
222
|
+
if (typeof value !== "object" || value === null)
|
|
223
|
+
return undefined;
|
|
224
|
+
const e = value;
|
|
225
|
+
if (e.kind !== "save")
|
|
226
|
+
return undefined;
|
|
227
|
+
if (typeof e.requestId !== "string" || e.requestId.length === 0)
|
|
228
|
+
return undefined;
|
|
229
|
+
if (typeof e.timestamp !== "number" || !Number.isFinite(e.timestamp))
|
|
230
|
+
return undefined;
|
|
231
|
+
// Reject finite-but-out-of-Date-range values: history list/stats render
|
|
232
|
+
// via new Date(ms).toISOString(), which throws RangeError on them — the
|
|
233
|
+
// entry must fail validation here so the log fails open instead (review
|
|
234
|
+
// fixup).
|
|
235
|
+
if (!Number.isFinite(new Date(e.timestamp).getTime()))
|
|
236
|
+
return undefined;
|
|
237
|
+
if (typeof e.command !== "string" || e.command.length === 0)
|
|
238
|
+
return undefined;
|
|
239
|
+
if (typeof e.args !== "object" || e.args === null || Array.isArray(e.args))
|
|
240
|
+
return undefined;
|
|
241
|
+
const provider = e.provider;
|
|
242
|
+
if (typeof provider !== "object" || provider === null)
|
|
243
|
+
return undefined;
|
|
244
|
+
if (provider.mode === "single") {
|
|
245
|
+
if (typeof provider.effective !== "string" || provider.effective.length === 0)
|
|
246
|
+
return undefined;
|
|
247
|
+
if (provider.requested !== undefined && typeof provider.requested !== "string")
|
|
248
|
+
return undefined;
|
|
249
|
+
}
|
|
250
|
+
else if (provider.mode === "fanout") {
|
|
251
|
+
if (!Array.isArray(provider.arms) ||
|
|
252
|
+
provider.arms.length === 0 ||
|
|
253
|
+
!provider.arms.every((arm) => typeof arm === "string" && arm.length > 0)) {
|
|
254
|
+
return undefined;
|
|
255
|
+
}
|
|
256
|
+
if (provider.requested !== undefined && typeof provider.requested !== "string")
|
|
257
|
+
return undefined;
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
return undefined;
|
|
261
|
+
}
|
|
262
|
+
if (typeof e.outputFormat !== "string")
|
|
263
|
+
return undefined;
|
|
264
|
+
if (e.artifactFormat !== "json" && e.artifactFormat !== "markdown")
|
|
265
|
+
return undefined;
|
|
266
|
+
if (typeof e.cliVersion !== "string" || e.cliVersion.length === 0)
|
|
267
|
+
return undefined;
|
|
268
|
+
if (typeof e.masterPath !== "string")
|
|
269
|
+
return undefined;
|
|
270
|
+
const bare = e.masterPath;
|
|
271
|
+
if (bare.length === 0 ||
|
|
272
|
+
bare.includes("/") ||
|
|
273
|
+
bare.includes("\\") ||
|
|
274
|
+
bare.includes("\0") || // NUL passes the checks below yet ERRs the read path (greptile P1)
|
|
275
|
+
bare.startsWith(".") ||
|
|
276
|
+
bare !== path.basename(bare)) {
|
|
277
|
+
return undefined;
|
|
278
|
+
}
|
|
279
|
+
if (e.exportPath !== undefined && typeof e.exportPath !== "string")
|
|
280
|
+
return undefined;
|
|
281
|
+
return value;
|
|
282
|
+
}
|
|
283
|
+
/** Structural guard: exactly `{version:1, entries:[...]}` with EVERY entry a valid {@link SaveLogEntry} — anything else is fail-open fodder. */
|
|
284
|
+
function asArtifactsLog(value) {
|
|
285
|
+
if (typeof value !== "object" || value === null)
|
|
286
|
+
return undefined;
|
|
287
|
+
const candidate = value;
|
|
288
|
+
if (candidate.version !== ARTIFACTS_LOG_VERSION || !Array.isArray(candidate.entries)) {
|
|
289
|
+
return undefined;
|
|
290
|
+
}
|
|
291
|
+
const entries = [];
|
|
292
|
+
let corruptEntry = false;
|
|
293
|
+
for (const raw of candidate.entries) {
|
|
294
|
+
const entry = asSaveLogEntry(raw);
|
|
295
|
+
if (entry === undefined) {
|
|
296
|
+
corruptEntry = true;
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
entries.push(entry);
|
|
300
|
+
}
|
|
301
|
+
return { log: { version: ARTIFACTS_LOG_VERSION, entries }, corruptEntry };
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Lock-free, fail-open read of `<dir>/index.json`. A missing store is the
|
|
305
|
+
* normal empty case (no notice); a corrupt or unrecognized file degrades to
|
|
306
|
+
* an empty log plus a notice the caller flushes on stderr. NEVER throws —
|
|
307
|
+
* `history` is a read-only inventory (D7), not a failure surface.
|
|
308
|
+
*/
|
|
309
|
+
export async function readLog(dir) {
|
|
310
|
+
const file = path.join(dir, ARTIFACTS_LOG_FILENAME);
|
|
311
|
+
let raw;
|
|
312
|
+
try {
|
|
313
|
+
raw = await fs.readFile(file, "utf8");
|
|
314
|
+
}
|
|
315
|
+
catch (error) {
|
|
316
|
+
if (error.code === "ENOENT")
|
|
317
|
+
return { log: emptyLog() };
|
|
318
|
+
const code = error.code ?? "unknown";
|
|
319
|
+
return {
|
|
320
|
+
log: emptyLog(),
|
|
321
|
+
notice: `Artifacts log ${file} is unreadable (${code}); continuing with an empty log.`,
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
let parsed;
|
|
325
|
+
try {
|
|
326
|
+
parsed = JSON.parse(raw);
|
|
327
|
+
}
|
|
328
|
+
catch {
|
|
329
|
+
return {
|
|
330
|
+
log: emptyLog(),
|
|
331
|
+
notice: `Artifacts log ${file} is corrupt (invalid JSON); ignoring existing entries.`,
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
const log = asArtifactsLog(parsed);
|
|
335
|
+
if (!log) {
|
|
336
|
+
return {
|
|
337
|
+
log: emptyLog(),
|
|
338
|
+
notice: `Artifacts log ${file} has an unrecognized shape (expected {"version":1,"entries":[...]}); ignoring existing entries.`,
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
if (log.corruptEntry) {
|
|
342
|
+
// Review fixup: one entry failing the full SaveLogEntry shape makes
|
|
343
|
+
// the whole log untrustworthy — fail open with the kept valid
|
|
344
|
+
// entries dropped: an empty log plus a notice, never a throw.
|
|
345
|
+
return {
|
|
346
|
+
log: emptyLog(),
|
|
347
|
+
notice: `Artifacts log ${file} contains an entry that does not match the log schema; ignoring existing entries.`,
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
return { log: log.log };
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Append one entry to `<dir>/index.json`, serialized through the
|
|
354
|
+
* `artifacts-write` file lock — the cache-write precedent (src/lib/cache.ts):
|
|
355
|
+
* concurrent CLI invocations read-modify-write under one lockfile, so a
|
|
356
|
+
* Promise.all of appends persists every entry intact (no lost update, no
|
|
357
|
+
* torn entry). The write itself rides atomicReplaceFile (0700 dir / 0600
|
|
358
|
+
* temp / fsync / rename). Resolves with a stderr notice when a corrupt
|
|
359
|
+
* pre-existing log was reset by this append; write and lock-acquire
|
|
360
|
+
* failures propagate — the save hook (T3) wraps them into FileError.
|
|
361
|
+
*/
|
|
362
|
+
export async function appendLogEntry(dir, entry, options = {}) {
|
|
363
|
+
let notice;
|
|
364
|
+
await withAsyncFileLock(dir, ARTIFACTS_LOG_LOCK_IDENTITY, async () => {
|
|
365
|
+
const current = await readLog(dir);
|
|
366
|
+
notice = current.notice;
|
|
367
|
+
const next = {
|
|
368
|
+
version: ARTIFACTS_LOG_VERSION,
|
|
369
|
+
entries: [...current.log.entries, entry],
|
|
370
|
+
};
|
|
371
|
+
await atomicReplaceFile(path.join(dir, ARTIFACTS_LOG_FILENAME), `${JSON.stringify(next, null, 2)}\n`);
|
|
372
|
+
}, {
|
|
373
|
+
timeoutMs: options.timeoutMs ?? DEFAULT_LOCK_TIMEOUT_MS,
|
|
374
|
+
staleMs: options.staleMs ?? DEFAULT_LOCK_STALE_MS,
|
|
375
|
+
setTimeout: options.setTimeout,
|
|
376
|
+
timeoutLabel: "Artifacts log write",
|
|
377
|
+
});
|
|
378
|
+
return notice;
|
|
379
|
+
}
|
|
380
|
+
//# sourceMappingURL=artifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/lib/artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,6 +65,24 @@ export declare class LockTimeoutError extends Error {
|
|
|
65
65
|
readonly label: string;
|
|
66
66
|
constructor(label: string, detail: string);
|
|
67
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Ownership-safe stale-lock break (review fixup): unlink the lock at
|
|
70
|
+
* `lockPath` ONLY if it still refers to the exact file that was statted
|
|
71
|
+
* as stale — the statted `ino`/`dev` pair. A naked `fs.unlink(lockPath)`
|
|
72
|
+
* can race a second waiter that already broke the same stale lock and
|
|
73
|
+
* re-acquired it: the newcomer's fresh lock would be destroyed and two
|
|
74
|
+
* holders end up inside the critical section. The re-stat narrows the
|
|
75
|
+
* race to the unavoidable unlink-by-name window (Node has no
|
|
76
|
+
* unlink-by-inode); the statted-inode verification is what keeps the
|
|
77
|
+
* common crash-recovery path from destroying a live successor's lock.
|
|
78
|
+
*
|
|
79
|
+
* Exported for tests (they must be able to pin the not-ours-don't-touch
|
|
80
|
+
* branch without staging a real multi-process race).
|
|
81
|
+
*/
|
|
82
|
+
export declare function breakStaleLock(lockPath: string, statted: {
|
|
83
|
+
readonly ino: number;
|
|
84
|
+
readonly dev: number;
|
|
85
|
+
}): Promise<void>;
|
|
68
86
|
/**
|
|
69
87
|
* Serialize a critical section via an exclusive lockfile.
|
|
70
88
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-file-lock.d.ts","sourceRoot":"","sources":["../../src/lib/async-file-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,qBAAqB,QAAiB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mEAAmE;IACnE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IACxC,wEAAwE;IACxE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,YAAY,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAIxC;CACF;AAmBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"async-file-lock.d.ts","sourceRoot":"","sources":["../../src/lib/async-file-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,qBAAqB,QAAiB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mEAAmE;IACnE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IACxC,wEAAwE;IACxE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,YAAY,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAIxC;CACF;AAmBD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACtD,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,CAAC,CAAC,CA4GZ"}
|
|
@@ -62,6 +62,34 @@ function isEexistError(err) {
|
|
|
62
62
|
function isEnoentError(err) {
|
|
63
63
|
return err instanceof Error && "code" in err && err.code === "ENOENT";
|
|
64
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Ownership-safe stale-lock break (review fixup): unlink the lock at
|
|
67
|
+
* `lockPath` ONLY if it still refers to the exact file that was statted
|
|
68
|
+
* as stale — the statted `ino`/`dev` pair. A naked `fs.unlink(lockPath)`
|
|
69
|
+
* can race a second waiter that already broke the same stale lock and
|
|
70
|
+
* re-acquired it: the newcomer's fresh lock would be destroyed and two
|
|
71
|
+
* holders end up inside the critical section. The re-stat narrows the
|
|
72
|
+
* race to the unavoidable unlink-by-name window (Node has no
|
|
73
|
+
* unlink-by-inode); the statted-inode verification is what keeps the
|
|
74
|
+
* common crash-recovery path from destroying a live successor's lock.
|
|
75
|
+
*
|
|
76
|
+
* Exported for tests (they must be able to pin the not-ours-don't-touch
|
|
77
|
+
* branch without staging a real multi-process race).
|
|
78
|
+
*/
|
|
79
|
+
export async function breakStaleLock(lockPath, statted) {
|
|
80
|
+
let current;
|
|
81
|
+
try {
|
|
82
|
+
current = await fs.stat(lockPath);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
if (isEnoentError(error))
|
|
86
|
+
return; // already gone — nothing to break
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
if (current.ino !== statted.ino || current.dev !== statted.dev)
|
|
90
|
+
return;
|
|
91
|
+
await fs.unlink(lockPath).catch(() => { });
|
|
92
|
+
}
|
|
65
93
|
/**
|
|
66
94
|
* Serialize a critical section via an exclusive lockfile.
|
|
67
95
|
*
|
|
@@ -153,7 +181,9 @@ export async function withAsyncFileLock(stateDir, identityHash, fn, options) {
|
|
|
153
181
|
throw statErr;
|
|
154
182
|
}
|
|
155
183
|
if (Date.now() - stat.mtimeMs > options.staleMs) {
|
|
156
|
-
|
|
184
|
+
// Ownership-safe break: only unlink while the path still holds
|
|
185
|
+
// the exact inode we deemed stale (see breakStaleLock).
|
|
186
|
+
await breakStaleLock(lockPath, stat);
|
|
157
187
|
// Back off after stale-break attempt to avoid a tight loop if
|
|
158
188
|
// the unlink failed or another waiter re-acquired immediately.
|
|
159
189
|
await sleep(500);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-file-lock.js","sourceRoot":"","sources":["../../src/lib/async-file-lock.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"async-file-lock.js","sourceRoot":"","sources":["../../src/lib/async-file-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAC7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AA2BpD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,yEAAyE;IAChE,KAAK,CAAS;IACvB,YAAY,KAAa,EAAE,MAAc;QACvC,KAAK,CAAC,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,GAAY;IACjC,OAAO,GAAG,YAAY,KAAK,IAAI,MAAM,IAAI,GAAG,IAAK,GAAyB,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC/F,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,GAAY;IACjC,OAAO,GAAG,YAAY,KAAK,IAAI,MAAM,IAAI,GAAG,IAAK,GAAyB,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC/F,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,OAAuD;IAEvD,IAAI,OAA4C,CAAC;IACjD,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,aAAa,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,kCAAkC;QACpE,MAAM,KAAK,CAAC;IACd,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG;QAAE,OAAO;IACvE,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAA4B,EAC5B,YAAoB,EACpB,EAAoB,EACpB,OAA6B;IAE7B,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,CAAC;IAExC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC;IAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,YAAY,OAAO,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IAChD,wEAAwE;IACxE,wEAAwE;IACxE,mEAAmE;IACnE,oEAAoE;IACpE,yCAAyC;IACzC,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxF,MAAM,WAAW,GAAG,GAAqB,EAAE,CACzC,IAAI,gBAAgB,CAAC,OAAO,CAAC,YAAY,EAAE,oCAAoC,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,GAAqB,EAAE,CAC1C,IAAI,gBAAgB,CAClB,OAAO,CAAC,YAAY,EACpB,uCAAuC,OAAO,CAAC,SAAS,IAAI,CAC7D,CAAC;IAEJ,sEAAsE;IACtE,iEAAiE;IACjE,mCAAmC;IACnC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAiB,EAAE,CAC1C,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACpC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,YAAY,CAAC,EAAE,CAAC,CAAC;YACjB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACxB,CAAC,CAAC;QACF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;YACnB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEL,SAAS,CAAC;QACR,IAAI,MAAM,EAAE,OAAO;YAAE,MAAM,WAAW,EAAE,CAAC;QACzC,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,8DAA8D;YAC9D,6DAA6D;YAC7D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAC;YACnC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;gBAC1B,MAAM,YAAY,EAAE,CAAC;YACvB,CAAC;YACD,+DAA+D;YAC/D,+DAA+D;YAC/D,mEAAmE;YACnE,gEAAgE;YAChE,iEAAiE;YACjE,cAAc;YACd,IAAI,IAAyC,CAAC;YAC9C,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBACjB,IAAI,aAAa,CAAC,OAAO,CAAC;oBAAE,SAAS;gBACrC,MAAM,OAAO,CAAC;YAChB,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;gBAChD,+DAA+D;gBAC/D,wDAAwD;gBACxD,MAAM,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBACrC,8DAA8D;gBAC9D,+DAA+D;gBAC/D,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YACjB,8DAA8D;YAC9D,kEAAkE;YAClE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;gBAC1B,MAAM,YAAY,EAAE,CAAC;YACvB,CAAC;YACD,SAAS;QACX,CAAC;QACD,mEAAmE;QACnE,gEAAgE;QAChE,yDAAyD;QACzD,IAAI,YAAY,GAAG,IAAI,CAAC;QACxB,IAAI,YAAiD,CAAC;QACtD,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,IAAI,CAAC,YAAY;gBAAE,OAAO;YAC1B,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC5D,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAClD,CAAC,CAAC;QACF,IAAI,CAAC;YACH,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;YAChD,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,YAAY,GAAG,KAAK,CAAC;YACrB,IAAI,YAAY,KAAK,SAAS;gBAAE,YAAY,CAAC,YAAY,CAAC,CAAC;YAC3D,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACrC,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -205,20 +205,6 @@ export declare const TAVILY_CAPABILITY_TO_ENDPOINT: Readonly<Record<ProviderCapa
|
|
|
205
205
|
* Firecrawl capabilities. All four consume the shared `Credits` pool.
|
|
206
206
|
*/
|
|
207
207
|
export declare const FIRECRAWL_CREDIT_CAPABILITIES: readonly ProviderCapability[];
|
|
208
|
-
/**
|
|
209
|
-
* Linkup capabilities. Search, reader, and research all bill against
|
|
210
|
-
* the shared `credits` pool reported by GET /v1/credits/balance; the
|
|
211
|
-
* quota category is exposed with an unknown limit (#49), so only the
|
|
212
|
-
* alias name is static here.
|
|
213
|
-
*/
|
|
214
|
-
export declare const LINKUP_CREDIT_CAPABILITIES: readonly ProviderCapability[];
|
|
215
|
-
/**
|
|
216
|
-
* Spider.cloud capabilities. All four bill against the shared `credits`
|
|
217
|
-
* pool reported by GET /data/credits (remaining-only signal). Not in
|
|
218
|
-
* {@link CAPABILITY_MAPPINGS}: the authority policy is always-unknown,
|
|
219
|
-
* so there is no alias for the scorer to resolve.
|
|
220
|
-
*/
|
|
221
|
-
export declare const SPIDER_CREDIT_CAPABILITIES: readonly ProviderCapability[];
|
|
222
208
|
/**
|
|
223
209
|
* The static capability→category mapping table. Built once at module
|
|
224
210
|
* load from the per-provider capability lists so a future capability
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-mapping.d.ts","sourceRoot":"","sources":["../../src/lib/quota-mapping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAClF;IAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAE3E;;;;GAIG;AACH,MAAM,MAAM,kBAAkB;AAC5B;;;;GAIG;AACD,4BAA4B;AAC9B;;;;GAIG;GACD,iBAAiB;AACnB;;;GAGG;GACD,kBAAkB;AACpB;;GAEG;GACD,gBAAgB;AAClB;;;;GAIG;GACD,oBAAoB;AACtB;;;;;GAKG;GACD,iBAAiB,CAAC;AAMtB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C;;;;;;;;OAQG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CAC5C;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAClD,MAAM,CAAC,QAAQ,GAAG,wBAAwB,EAAE,SAAS,MAAM,EAAE,CAAC,CAc/D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,kBAAkB,EAShE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,kBAAkB,EAOpE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,kBAAkB,EAIjE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,SAAS,kBAAkB,EAMrE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAClD,MAAM,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC,CAoB/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B,EAAE,SAAS,kBAAkB,EAKtE,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"quota-mapping.d.ts","sourceRoot":"","sources":["../../src/lib/quota-mapping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAClF;IAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAE3E;;;;GAIG;AACH,MAAM,MAAM,kBAAkB;AAC5B;;;;GAIG;AACD,4BAA4B;AAC9B;;;;GAIG;GACD,iBAAiB;AACnB;;;GAGG;GACD,kBAAkB;AACpB;;GAEG;GACD,gBAAgB;AAClB;;;;GAIG;GACD,oBAAoB;AACtB;;;;;GAKG;GACD,iBAAiB,CAAC;AAMtB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C;;;;;;;;OAQG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CAC5C;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAClD,MAAM,CAAC,QAAQ,GAAG,wBAAwB,EAAE,SAAS,MAAM,EAAE,CAAC,CAc/D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,kBAAkB,EAShE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,kBAAkB,EAOpE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,kBAAkB,EAIjE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,SAAS,kBAAkB,EAMrE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAClD,MAAM,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC,CAoB/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B,EAAE,SAAS,kBAAkB,EAKtE,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,sBAAsB,EAuDhE,CAAC;AAMF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,gBAAgB,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,uBAAuB,EA6DzE,CAAC;AAMF;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EACT,4BAA4B,GAC5B,iBAAiB,GACjB,kBAAkB,GAClB,gBAAgB,GAChB,oBAAoB,GACpB,wBAAwB,GACxB,iBAAiB,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAMD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,UAAU,GACnB,uBAAuB,GAAG,SAAS,CAErC;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,UAAU,EACpB,UAAU,EAAE,kBAAkB,GAC7B,sBAAsB,GAAG,SAAS,CAEpC;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAChD,UAAU,EAAE,kBAAkB,EAC9B,OAAO,GAAE,QAAQ,CACf,MAAM,CAAC,QAAQ,GAAG,wBAAwB,EAAE,SAAS,MAAM,EAAE,CAAC,CAC/B,GAChC,SAAS,MAAM,EAAE,CAMnB;AA+BD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,QAAQ,CACrC,MAAM,CAAC,QAAQ,GAAG,wBAAwB,EAAE,SAAS,MAAM,EAAE,CAAC,CAC/D,CAAC;IACF;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;CAC7D;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,UAAU,EACpB,UAAU,EAAE,kBAAkB,EAC9B,OAAO,GAAE,YAAiB,GACzB,eAAe,CAwGjB;AAMD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,kBAAkB,EAC9B,UAAU,EAAE,SAAS,UAAU,EAAE,EACjC,OAAO,GAAE,YAAY,GAAG;IACtB;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;CAC3C,GACL,SAAS,cAAc,EAAE,CAqE3B"}
|
|
@@ -165,29 +165,6 @@ export const FIRECRAWL_CREDIT_CAPABILITIES = [
|
|
|
165
165
|
"crawl",
|
|
166
166
|
"map",
|
|
167
167
|
];
|
|
168
|
-
/**
|
|
169
|
-
* Linkup capabilities. Search, reader, and research all bill against
|
|
170
|
-
* the shared `credits` pool reported by GET /v1/credits/balance; the
|
|
171
|
-
* quota category is exposed with an unknown limit (#49), so only the
|
|
172
|
-
* alias name is static here.
|
|
173
|
-
*/
|
|
174
|
-
export const LINKUP_CREDIT_CAPABILITIES = [
|
|
175
|
-
"search",
|
|
176
|
-
"reader",
|
|
177
|
-
"research",
|
|
178
|
-
];
|
|
179
|
-
/**
|
|
180
|
-
* Spider.cloud capabilities. All four bill against the shared `credits`
|
|
181
|
-
* pool reported by GET /data/credits (remaining-only signal). Not in
|
|
182
|
-
* {@link CAPABILITY_MAPPINGS}: the authority policy is always-unknown,
|
|
183
|
-
* so there is no alias for the scorer to resolve.
|
|
184
|
-
*/
|
|
185
|
-
export const SPIDER_CREDIT_CAPABILITIES = [
|
|
186
|
-
"search",
|
|
187
|
-
"reader",
|
|
188
|
-
"crawl",
|
|
189
|
-
"map",
|
|
190
|
-
];
|
|
191
168
|
/**
|
|
192
169
|
* The static capability→category mapping table. Built once at module
|
|
193
170
|
* load from the per-provider capability lists so a future capability
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-mapping.js","sourceRoot":"","sources":["../../src/lib/quota-mapping.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"quota-mapping.js","sourceRoot":"","sources":["../../src/lib/quota-mapping.ts"],"names":[],"mappings":"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"}
|