@corenel/tools-web 0.1.0 → 0.3.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/dist/budgetGate.d.ts +21 -0
- package/dist/budgetGate.d.ts.map +1 -0
- package/dist/budgetGate.js +41 -0
- package/dist/budgetGate.js.map +1 -0
- package/dist/contextDocs.d.ts +54 -0
- package/dist/contextDocs.d.ts.map +1 -0
- package/dist/contextDocs.js +145 -0
- package/dist/contextDocs.js.map +1 -0
- package/dist/core/protocol.d.ts +58 -2
- package/dist/core/protocol.d.ts.map +1 -1
- package/dist/idb.d.ts +9 -0
- package/dist/idb.d.ts.map +1 -1
- package/dist/idb.js +15 -0
- package/dist/idb.js.map +1 -1
- package/dist/memory/local.d.ts.map +1 -1
- package/dist/memory/local.js.map +1 -1
- package/dist/prompts/history.d.ts.map +1 -1
- package/dist/prompts/history.js +11 -6
- package/dist/prompts/history.js.map +1 -1
- package/dist/runWatchdog.d.ts +20 -0
- package/dist/runWatchdog.d.ts.map +1 -0
- package/dist/runWatchdog.js +66 -0
- package/dist/runWatchdog.js.map +1 -0
- package/dist/runtime.d.ts +444 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +858 -0
- package/dist/runtime.js.map +1 -0
- package/dist/runtime.testHost.d.ts +9 -0
- package/dist/runtime.testHost.d.ts.map +1 -0
- package/dist/runtime.testHost.js +53 -0
- package/dist/runtime.testHost.js.map +1 -0
- package/dist/storageQuota.d.ts +25 -0
- package/dist/storageQuota.d.ts.map +1 -0
- package/dist/storageQuota.js +89 -0
- package/dist/storageQuota.js.map +1 -0
- package/dist/storageRegistry.d.ts +53 -0
- package/dist/storageRegistry.d.ts.map +1 -0
- package/dist/storageRegistry.js +40 -0
- package/dist/storageRegistry.js.map +1 -0
- package/dist/workerClient.d.ts +61 -3
- package/dist/workerClient.d.ts.map +1 -1
- package/dist/workerClient.js +72 -5
- package/dist/workerClient.js.map +1 -1
- package/dist/workerHandler.d.ts +15 -0
- package/dist/workerHandler.d.ts.map +1 -1
- package/dist/workerHandler.js +105 -62
- package/dist/workerHandler.js.map +1 -1
- package/package.json +19 -29
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type RunConstraints, type Breach, type BudgetState } from '@corenel/harness/core/budget';
|
|
2
|
+
import type { Usage } from '@corenel/harness/providers/gateway';
|
|
3
|
+
export interface BudgetGate {
|
|
4
|
+
onUsage(usage: Usage): Promise<{
|
|
5
|
+
action: 'continue' | 'stop';
|
|
6
|
+
model?: string;
|
|
7
|
+
}>;
|
|
8
|
+
readonly currentModel: string;
|
|
9
|
+
}
|
|
10
|
+
export interface BudgetGateOpts {
|
|
11
|
+
constraints: RunConstraints;
|
|
12
|
+
price?: (usage: Usage, model: string) => number;
|
|
13
|
+
onBreach?: (breach: Breach, state: BudgetState) => Promise<{
|
|
14
|
+
continue: boolean;
|
|
15
|
+
model?: string;
|
|
16
|
+
}>;
|
|
17
|
+
model: string;
|
|
18
|
+
now?: () => number;
|
|
19
|
+
}
|
|
20
|
+
export declare function makeBudgetGate(opts: BudgetGateOpts): BudgetGate;
|
|
21
|
+
//# sourceMappingURL=budgetGate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budgetGate.d.ts","sourceRoot":"","sources":["../budgetGate.ts"],"names":[],"mappings":"AAMA,OAAO,EAAe,KAAK,cAAc,EAAE,KAAK,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC/G,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAC;AAEhE,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AACD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,cAAc,CAAC;IAC5B,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAChD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClG,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,UAAU,CA2B/D"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/* Shared main-thread run-budget gate. Owns a BudgetMeter, the breach latch, and
|
|
2
|
+
* the current (post-degrade) model. Both the worker client and the direct
|
|
3
|
+
* main-thread runPrompt path feed it per-turn usage; the caller wires the
|
|
4
|
+
* returned action to its own transport (worker abort/set-model, or an
|
|
5
|
+
* AbortController + runAgent getModel). Extracted verbatim from workerClient so
|
|
6
|
+
* the worker path is behavior-identical. */
|
|
7
|
+
import { BudgetMeter } from '@corenel/harness/core/budget';
|
|
8
|
+
export function makeBudgetGate(opts) {
|
|
9
|
+
const meter = new BudgetMeter(opts.constraints, opts.now ?? (() => performance.now()));
|
|
10
|
+
let currentModel = opts.model;
|
|
11
|
+
// Latches a breach so a soft "keep going" answer isn't re-asked every turn.
|
|
12
|
+
// Reset to false when the meter recovers (breach() -> null) or on a degrade
|
|
13
|
+
// (model change), so a later, possibly worse breach can still fire.
|
|
14
|
+
let breachHandled = false;
|
|
15
|
+
return {
|
|
16
|
+
get currentModel() { return currentModel; },
|
|
17
|
+
async onUsage(usage) {
|
|
18
|
+
meter.add({ inTok: usage.promptTokens, outTok: usage.completionTokens, cost: opts.price?.(usage, currentModel) });
|
|
19
|
+
const b = meter.breach();
|
|
20
|
+
if (!b) {
|
|
21
|
+
breachHandled = false;
|
|
22
|
+
return { action: 'continue' };
|
|
23
|
+
}
|
|
24
|
+
if (breachHandled || !opts.onBreach)
|
|
25
|
+
return { action: 'continue' };
|
|
26
|
+
breachHandled = true; // prevents re-entrancy while the host is asking
|
|
27
|
+
const r = await opts.onBreach(b, meter.state());
|
|
28
|
+
if (!r.continue)
|
|
29
|
+
return { action: 'stop' };
|
|
30
|
+
if (r.model) {
|
|
31
|
+
currentModel = r.model;
|
|
32
|
+
breachHandled = false; // a degrade lets a later, worse breach re-fire
|
|
33
|
+
return { action: 'continue', model: r.model };
|
|
34
|
+
}
|
|
35
|
+
// else: plain `{ continue: true }` (soft warn) — stay latched so the
|
|
36
|
+
// still-breached meter does not re-prompt on every following turn.
|
|
37
|
+
return { action: 'continue' };
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=budgetGate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budgetGate.js","sourceRoot":"","sources":["../budgetGate.ts"],"names":[],"mappings":"AAAA;;;;;4CAK4C;AAC5C,OAAO,EAAE,WAAW,EAAsD,MAAM,8BAA8B,CAAC;AAe/G,MAAM,UAAU,cAAc,CAAC,IAAoB;IACjD,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACvF,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;IAC9B,4EAA4E;IAC5E,4EAA4E;IAC5E,oEAAoE;IACpE,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,OAAO;QACL,IAAI,YAAY,KAAK,OAAO,YAAY,CAAC,CAAC,CAAC;QAC3C,KAAK,CAAC,OAAO,CAAC,KAAY;YACxB,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;YAClH,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,CAAC,EAAE,CAAC;gBAAC,aAAa,GAAG,KAAK,CAAC;gBAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;YAAC,CAAC;YACjE,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;YACnE,aAAa,GAAG,IAAI,CAAC,CAAC,gDAAgD;YACtE,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,CAAC,CAAC,QAAQ;gBAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAC3C,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBACZ,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC;gBACvB,aAAa,GAAG,KAAK,CAAC,CAAC,+CAA+C;gBACtE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;YAChD,CAAC;YACD,qEAAqE;YACrE,mEAAmE;YACnE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAChC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export interface ContextDoc {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
mime: string;
|
|
5
|
+
text: string;
|
|
6
|
+
tokens: number;
|
|
7
|
+
addedAt: number;
|
|
8
|
+
}
|
|
9
|
+
export type StoredContextDoc = ContextDoc & {
|
|
10
|
+
sessionId: string;
|
|
11
|
+
};
|
|
12
|
+
export interface ContextDocsPersistence {
|
|
13
|
+
/** All docs for the current identity, any session. */
|
|
14
|
+
load(): Promise<StoredContextDoc[]>;
|
|
15
|
+
put(doc: StoredContextDoc): void;
|
|
16
|
+
del(id: string): void;
|
|
17
|
+
}
|
|
18
|
+
export declare const DOC_TOKEN_CAP = 32000;
|
|
19
|
+
export declare const SESSION_DOCS_TOKEN_CAP = 64000;
|
|
20
|
+
/** The file-picker accept list — single source for the UI's <input accept>. */
|
|
21
|
+
export declare const UPLOAD_ACCEPT = "text/*,image/*,.md,.txt,.csv,.tsv,.json,.yaml,.yml,.xml,.html,.htm,.css,.js,.jsx,.ts,.tsx,.py,.go,.rs,.java,.c,.h,.cpp,.hpp,.cs,.rb,.php,.sh,.ps1,.sql,.toml,.ini,.cfg,.conf,.log,.prmd,.pdflow,.svg";
|
|
22
|
+
/** Route an upload: images ride the one-shot attachments path, text-like files
|
|
23
|
+
* become context docs, everything else (pdf/office/binaries) is rejected. */
|
|
24
|
+
export declare function classifyUpload(name: string, mime: string): 'doc' | 'image' | 'unsupported';
|
|
25
|
+
/** Cheap binary sniff on decoded text — a NUL byte means this wasn't text. */
|
|
26
|
+
export declare function looksBinary(text: string): boolean;
|
|
27
|
+
export declare class ContextDocError extends Error {
|
|
28
|
+
}
|
|
29
|
+
export declare function setContextDocsTokenEstimator(fn: (text: string) => number): void;
|
|
30
|
+
/** Install host persistence and hydrate from it (fire-and-forget; a failed load
|
|
31
|
+
* degrades to the in-memory store instead of crashing). */
|
|
32
|
+
export declare function installContextDocsPersistence(p: ContextDocsPersistence): void;
|
|
33
|
+
export declare function listDocs(sessionId: string): ContextDoc[];
|
|
34
|
+
export declare function addDoc(sessionId: string, input: {
|
|
35
|
+
name: string;
|
|
36
|
+
mime: string;
|
|
37
|
+
text: string;
|
|
38
|
+
}): ContextDoc;
|
|
39
|
+
export declare function removeDoc(sessionId: string, id: string): void;
|
|
40
|
+
/** Drop every doc a session owns — called by AgentRuntime.deleteSession. */
|
|
41
|
+
export declare function deleteDocsForSession(sessionId: string): void;
|
|
42
|
+
export declare function subscribeContextDocs(cb: () => void): () => void;
|
|
43
|
+
/** Subscribe a component to one session's docs (stable snapshot reference). */
|
|
44
|
+
export declare function useContextDocs(sessionId: string): ContextDoc[];
|
|
45
|
+
/** Test/reset hook — drops every doc and the installed persistence. */
|
|
46
|
+
export declare function clearContextDocs(): void;
|
|
47
|
+
/** Drop every doc from the live map and notify subscribers, WITHOUT touching the
|
|
48
|
+
* installed persistence adapter — unlike `clearContextDocs` (test/reset hook, which
|
|
49
|
+
* also nulls `persistence` and would silently disable later put/del). Callers that
|
|
50
|
+
* clear a persisted store (e.g. the storage panel) must reset both layers: the
|
|
51
|
+
* adapter's own backing store AND this in-memory map, or the chips/runtime
|
|
52
|
+
* injection keep showing stale docs after persistence has already been wiped. */
|
|
53
|
+
export declare function resetContextDocs(): void;
|
|
54
|
+
//# sourceMappingURL=contextDocs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextDocs.d.ts","sourceRoot":"","sources":["../contextDocs.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAElE,MAAM,WAAW,sBAAsB;IACrC,sDAAsD;IACtD,IAAI,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACpC,GAAG,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,eAAO,MAAM,aAAa,QAAS,CAAC;AACpC,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C,+EAA+E;AAC/E,eAAO,MAAM,aAAa,yMAAyM,CAAC;AAIpO;6EAC6E;AAC7E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,aAAa,CAK1F;AAED,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKjD;AAED,qBAAa,eAAgB,SAAQ,KAAK;CAAG;AAI7C,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAE/E;AAOD;2DAC2D;AAC3D,wBAAgB,6BAA6B,CAAC,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAuB7E;AAGD,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,CAExD;AAED,wBAAgB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,CAqBzG;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAM7D;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAM5D;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAG/D;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,CAE9D;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED;;;;;iFAKiF;AACjF,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/* Per-session context documents — the store behind "+ context" uploads. A doc is
|
|
2
|
+
* a PERSISTENT chip: its text is injected into the composed system context on
|
|
3
|
+
* every turn of its session until removed (runtime.ts appends the blocks where
|
|
4
|
+
* contextProviders resolve). Host-agnostic by injection: persistence (default
|
|
5
|
+
* in-memory) and the token estimator (default chars/4) are installed by the host
|
|
6
|
+
* so this module takes no ui-kit or IndexedDB dependency and stays testable.
|
|
7
|
+
* Caps bound context-window occupancy — provider prompt caching only cuts cost,
|
|
8
|
+
* not window usage — and breaches throw ContextDocError with the user-facing
|
|
9
|
+
* message the UI shows verbatim. */
|
|
10
|
+
import { useSyncExternalStore } from 'react';
|
|
11
|
+
export const DOC_TOKEN_CAP = 32000;
|
|
12
|
+
export const SESSION_DOCS_TOKEN_CAP = 64000;
|
|
13
|
+
/** The file-picker accept list — single source for the UI's <input accept>. */
|
|
14
|
+
export const UPLOAD_ACCEPT = 'text/*,image/*,.md,.txt,.csv,.tsv,.json,.yaml,.yml,.xml,.html,.htm,.css,.js,.jsx,.ts,.tsx,.py,.go,.rs,.java,.c,.h,.cpp,.hpp,.cs,.rb,.php,.sh,.ps1,.sql,.toml,.ini,.cfg,.conf,.log,.prmd,.pdflow,.svg';
|
|
15
|
+
const TEXT_EXTS = new Set(['md', 'txt', 'csv', 'tsv', 'json', 'yaml', 'yml', 'xml', 'html', 'htm', 'css', 'js', 'jsx', 'ts', 'tsx', 'py', 'go', 'rs', 'java', 'c', 'h', 'cpp', 'hpp', 'cs', 'rb', 'php', 'sh', 'ps1', 'sql', 'toml', 'ini', 'cfg', 'conf', 'log', 'prmd', 'pdflow', 'svg']);
|
|
16
|
+
/** Route an upload: images ride the one-shot attachments path, text-like files
|
|
17
|
+
* become context docs, everything else (pdf/office/binaries) is rejected. */
|
|
18
|
+
export function classifyUpload(name, mime) {
|
|
19
|
+
if (mime.startsWith('image/'))
|
|
20
|
+
return 'image';
|
|
21
|
+
const ext = (name.split('.').pop() || '').toLowerCase();
|
|
22
|
+
if (mime.startsWith('text/') || mime === 'application/json' || TEXT_EXTS.has(ext))
|
|
23
|
+
return 'doc';
|
|
24
|
+
return 'unsupported';
|
|
25
|
+
}
|
|
26
|
+
/** Cheap binary sniff on decoded text — a NUL byte means this wasn't text. */
|
|
27
|
+
export function looksBinary(text) {
|
|
28
|
+
for (let i = 0; i < text.length; i++) {
|
|
29
|
+
if (text.charCodeAt(i) === 0)
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
export class ContextDocError extends Error {
|
|
35
|
+
}
|
|
36
|
+
// chars/4 heuristic default; the host installs ui-kit's estimateTokens (BPE-aware).
|
|
37
|
+
let estimator = (t) => Math.max(1, Math.ceil(t.length / 4));
|
|
38
|
+
export function setContextDocsTokenEstimator(fn) {
|
|
39
|
+
estimator = fn;
|
|
40
|
+
}
|
|
41
|
+
let persistence = null;
|
|
42
|
+
let docs = new Map();
|
|
43
|
+
const subs = new Set();
|
|
44
|
+
const emit = () => { for (const f of subs) {
|
|
45
|
+
try {
|
|
46
|
+
f();
|
|
47
|
+
}
|
|
48
|
+
catch { /* a bad listener can't break the store */ }
|
|
49
|
+
} };
|
|
50
|
+
/** Install host persistence and hydrate from it (fire-and-forget; a failed load
|
|
51
|
+
* degrades to the in-memory store instead of crashing). */
|
|
52
|
+
export function installContextDocsPersistence(p) {
|
|
53
|
+
persistence = p;
|
|
54
|
+
void p.load().then((rows) => {
|
|
55
|
+
const loaded = new Map();
|
|
56
|
+
const loadedIds = new Set();
|
|
57
|
+
for (const row of [...rows].sort((a, b) => a.addedAt - b.addedAt)) {
|
|
58
|
+
const { sessionId, ...doc } = row;
|
|
59
|
+
loaded.set(sessionId, [...(loaded.get(sessionId) ?? []), doc]);
|
|
60
|
+
loadedIds.add(doc.id);
|
|
61
|
+
}
|
|
62
|
+
// Merge, don't clobber: a doc can be addDoc()'d (and already persisted via
|
|
63
|
+
// persistence.put) after install() but before this load() resolves. Re-apply
|
|
64
|
+
// any such in-memory docs not present in the loaded snapshot so they survive
|
|
65
|
+
// hydration instead of silently vanishing from the live UI.
|
|
66
|
+
for (const [sessionId, current] of docs) {
|
|
67
|
+
for (const doc of current) {
|
|
68
|
+
if (loadedIds.has(doc.id))
|
|
69
|
+
continue;
|
|
70
|
+
loaded.set(sessionId, [...(loaded.get(sessionId) ?? []), doc].sort((a, b) => a.addedAt - b.addedAt));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
docs = loaded;
|
|
74
|
+
emit();
|
|
75
|
+
}).catch(() => { });
|
|
76
|
+
}
|
|
77
|
+
const EMPTY = [];
|
|
78
|
+
export function listDocs(sessionId) {
|
|
79
|
+
return docs.get(sessionId) ?? EMPTY;
|
|
80
|
+
}
|
|
81
|
+
export function addDoc(sessionId, input) {
|
|
82
|
+
const tokens = estimator(input.text);
|
|
83
|
+
if (tokens > DOC_TOKEN_CAP) {
|
|
84
|
+
throw new ContextDocError(`"${input.name}" is too large (~${tokens.toLocaleString('en-US')} tokens; the per-file limit is ${DOC_TOKEN_CAP.toLocaleString('en-US')}). Add it to the workspace instead.`);
|
|
85
|
+
}
|
|
86
|
+
const total = listDocs(sessionId).reduce((n, d) => n + d.tokens, 0);
|
|
87
|
+
if (total + tokens > SESSION_DOCS_TOKEN_CAP) {
|
|
88
|
+
throw new ContextDocError(`Adding "${input.name}" would exceed this chat's context-document budget (${SESSION_DOCS_TOKEN_CAP.toLocaleString('en-US')} tokens). Remove a document first.`);
|
|
89
|
+
}
|
|
90
|
+
const doc = {
|
|
91
|
+
id: 'cdoc_' + Date.now().toString(36) + Math.random().toString(36).slice(2, 8),
|
|
92
|
+
name: input.name,
|
|
93
|
+
mime: input.mime,
|
|
94
|
+
text: input.text,
|
|
95
|
+
tokens,
|
|
96
|
+
addedAt: Date.now(),
|
|
97
|
+
};
|
|
98
|
+
docs.set(sessionId, [...listDocs(sessionId), doc]);
|
|
99
|
+
emit();
|
|
100
|
+
persistence?.put({ ...doc, sessionId });
|
|
101
|
+
return doc;
|
|
102
|
+
}
|
|
103
|
+
export function removeDoc(sessionId, id) {
|
|
104
|
+
const cur = docs.get(sessionId);
|
|
105
|
+
if (!cur || !cur.some((d) => d.id === id))
|
|
106
|
+
return;
|
|
107
|
+
docs.set(sessionId, cur.filter((d) => d.id !== id));
|
|
108
|
+
emit();
|
|
109
|
+
persistence?.del(id);
|
|
110
|
+
}
|
|
111
|
+
/** Drop every doc a session owns — called by AgentRuntime.deleteSession. */
|
|
112
|
+
export function deleteDocsForSession(sessionId) {
|
|
113
|
+
const cur = docs.get(sessionId);
|
|
114
|
+
if (!cur)
|
|
115
|
+
return;
|
|
116
|
+
for (const d of cur)
|
|
117
|
+
persistence?.del(d.id);
|
|
118
|
+
docs.delete(sessionId);
|
|
119
|
+
emit();
|
|
120
|
+
}
|
|
121
|
+
export function subscribeContextDocs(cb) {
|
|
122
|
+
subs.add(cb);
|
|
123
|
+
return () => { subs.delete(cb); };
|
|
124
|
+
}
|
|
125
|
+
/** Subscribe a component to one session's docs (stable snapshot reference). */
|
|
126
|
+
export function useContextDocs(sessionId) {
|
|
127
|
+
return useSyncExternalStore(subscribeContextDocs, () => listDocs(sessionId), () => listDocs(sessionId));
|
|
128
|
+
}
|
|
129
|
+
/** Test/reset hook — drops every doc and the installed persistence. */
|
|
130
|
+
export function clearContextDocs() {
|
|
131
|
+
docs = new Map();
|
|
132
|
+
persistence = null;
|
|
133
|
+
emit();
|
|
134
|
+
}
|
|
135
|
+
/** Drop every doc from the live map and notify subscribers, WITHOUT touching the
|
|
136
|
+
* installed persistence adapter — unlike `clearContextDocs` (test/reset hook, which
|
|
137
|
+
* also nulls `persistence` and would silently disable later put/del). Callers that
|
|
138
|
+
* clear a persisted store (e.g. the storage panel) must reset both layers: the
|
|
139
|
+
* adapter's own backing store AND this in-memory map, or the chips/runtime
|
|
140
|
+
* injection keep showing stale docs after persistence has already been wiped. */
|
|
141
|
+
export function resetContextDocs() {
|
|
142
|
+
docs = new Map();
|
|
143
|
+
emit();
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=contextDocs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextDocs.js","sourceRoot":"","sources":["../contextDocs.ts"],"names":[],"mappings":"AAAA;;;;;;;;oCAQoC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAmB7C,MAAM,CAAC,MAAM,aAAa,GAAG,KAAM,CAAC;AACpC,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAM,CAAC;AAE7C,+EAA+E;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,sMAAsM,CAAC;AAEpO,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAE5R;6EAC6E;AAC7E,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,IAAY;IACvD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAC;IAC9C,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACxD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,kBAAkB,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAChG,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;CAAG;AAE7C,oFAAoF;AACpF,IAAI,SAAS,GAA6B,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACtF,MAAM,UAAU,4BAA4B,CAAC,EAA4B;IACvE,SAAS,GAAG,EAAE,CAAC;AACjB,CAAC;AAED,IAAI,WAAW,GAAkC,IAAI,CAAC;AACtD,IAAI,IAAI,GAAG,IAAI,GAAG,EAAwB,CAAC;AAC3C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAc,CAAC;AACnC,MAAM,IAAI,GAAG,GAAS,EAAE,GAAG,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAAC,IAAI,CAAC;QAAC,CAAC,EAAE,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,0CAA0C,CAAC,CAAC;AAAC,CAAC,CAAC,CAAC,CAAC;AAEzH;2DAC2D;AAC3D,MAAM,UAAU,6BAA6B,CAAC,CAAyB;IACrE,WAAW,GAAG,CAAC,CAAC;IAChB,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YAClE,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC/D,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;QACD,2EAA2E;QAC3E,6EAA6E;QAC7E,6EAA6E;QAC7E,4DAA4D;QAC5D,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;YACxC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAAE,SAAS;gBACpC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACvG,CAAC;QACH,CAAC;QACD,IAAI,GAAG,MAAM,CAAC;QACd,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAqC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,KAAK,GAAiB,EAAE,CAAC;AAC/B,MAAM,UAAU,QAAQ,CAAC,SAAiB;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,SAAiB,EAAE,KAAmD;IAC3F,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,MAAM,GAAG,aAAa,EAAE,CAAC;QAC3B,MAAM,IAAI,eAAe,CAAC,IAAI,KAAK,CAAC,IAAI,oBAAoB,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,kCAAkC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;IAC1M,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACpE,IAAI,KAAK,GAAG,MAAM,GAAG,sBAAsB,EAAE,CAAC;QAC5C,MAAM,IAAI,eAAe,CAAC,WAAW,KAAK,CAAC,IAAI,uDAAuD,sBAAsB,CAAC,cAAc,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;IAC5L,CAAC;IACD,MAAM,GAAG,GAAe;QACtB,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9E,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM;QACN,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;KACpB,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACnD,IAAI,EAAE,CAAC;IACP,WAAW,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IACxC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAAiB,EAAE,EAAU;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QAAE,OAAO;IAClD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACpD,IAAI,EAAE,CAAC;IACP,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACvB,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,KAAK,MAAM,CAAC,IAAI,GAAG;QAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvB,IAAI,EAAE,CAAC;AACT,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EAAc;IACjD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACb,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO,oBAAoB,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1G,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,gBAAgB;IAC9B,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;IACjB,WAAW,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,CAAC;AACT,CAAC;AAED;;;;;iFAKiF;AACjF,MAAM,UAAU,gBAAgB;IAC9B,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;IACjB,IAAI,EAAE,CAAC;AACT,CAAC"}
|
package/dist/core/protocol.d.ts
CHANGED
|
@@ -7,13 +7,27 @@ import type { NodeSpec, RunNodeResult } from '@corenel/harness/dag/executeNode';
|
|
|
7
7
|
import type { NodeOutput, NodeEvent } from '@corenel/protocol';
|
|
8
8
|
import type { FileOp } from '@corenel/protocol';
|
|
9
9
|
import type { ToolDecl } from '@corenel/protocol';
|
|
10
|
+
import type { FileServiceKind } from '@corenel/protocol';
|
|
10
11
|
/** Lightweight provider metadata sent with a run so the worker's file tools can
|
|
11
|
-
* describe write risk in permission prompts (LOCAL DISK vs virtual workspace).
|
|
12
|
+
* describe write risk in permission prompts (LOCAL DISK vs virtual workspace).
|
|
13
|
+
* `cacheId` lets the worker's derived caches (the project graph) key + persist the
|
|
14
|
+
* same way the main thread does. */
|
|
12
15
|
export interface FileMeta {
|
|
13
|
-
kind:
|
|
16
|
+
kind: FileServiceKind;
|
|
14
17
|
label: string;
|
|
15
18
|
isLocalDisk: boolean;
|
|
16
19
|
writable: boolean;
|
|
20
|
+
cacheId?: string;
|
|
21
|
+
}
|
|
22
|
+
/** Project-graph config carried to the worker, where localStorage is unavailable
|
|
23
|
+
* (structurally matches the app's GraphConfig). The worker applies it as an override
|
|
24
|
+
* so graph gating + the index filter respect the user's settings. */
|
|
25
|
+
export interface GraphConfigWire {
|
|
26
|
+
enabled: boolean;
|
|
27
|
+
nodeCap: number;
|
|
28
|
+
nodeCapEnabled: boolean;
|
|
29
|
+
include: string;
|
|
30
|
+
exclude: string;
|
|
17
31
|
}
|
|
18
32
|
export type MainToWorker = {
|
|
19
33
|
kind: 'run';
|
|
@@ -27,16 +41,42 @@ export type MainToWorker = {
|
|
|
27
41
|
debug?: boolean;
|
|
28
42
|
fileMeta?: FileMeta;
|
|
29
43
|
scope?: string;
|
|
44
|
+
graphConfig?: GraphConfigWire;
|
|
30
45
|
/** True when the caller wired a propose_edit reviewer (onEditReview) — the
|
|
31
46
|
* worker then BLOCKS propose_edit on the review. Surfaces with no mid-run
|
|
32
47
|
* review UI (the standalone agent page) leave it unset and keep the
|
|
33
48
|
* non-blocking acknowledgment. */
|
|
34
49
|
reviewEdits?: boolean;
|
|
50
|
+
/** Workspace-relative path of the editor buffer the agent is editing, so
|
|
51
|
+
* propose_edit can validate (compile) a proposal before surfacing the diff. */
|
|
52
|
+
editorFile?: string;
|
|
35
53
|
/** Tools contributed by connected sidecars (capability servers). The worker
|
|
36
54
|
* exposes them to the model as proxy tools whose calls forward to the main
|
|
37
55
|
* thread (tool-request) — same shape as the file bridge. The main thread
|
|
38
56
|
* holds the sidecar connection and gates the call before it crosses. */
|
|
39
57
|
remoteTools?: ToolDecl[];
|
|
58
|
+
/** The chat session this run belongs to — offloaded blobs are stored under it.
|
|
59
|
+
* Absent for sessionless runs (DAG nodes), which land in `_unattached`. */
|
|
60
|
+
sessionId?: string;
|
|
61
|
+
/** Capability seam (Task 3): restrict this run's tool registry to these
|
|
62
|
+
* names. Unknown names are ignored; absent = the full registry (today's
|
|
63
|
+
* behavior, byte-identical). */
|
|
64
|
+
toolNames?: string[];
|
|
65
|
+
/** Sampling temperature for this run. Vetted for model support BEFORE it
|
|
66
|
+
* reaches here — reasoning-family models reject a non-default value. */
|
|
67
|
+
temperature?: number;
|
|
68
|
+
/** Tool names to REMOVE from the combined registry (builtin + MCP +
|
|
69
|
+
* sidecar). Unlike `toolNames`, this cannot silently drop tools the main
|
|
70
|
+
* thread never sees. */
|
|
71
|
+
toolDeny?: string[];
|
|
72
|
+
/** Crew delegation: the agents this run may `call_agent`, with their
|
|
73
|
+
* identities ALREADY composed. Resolved on the main thread because a
|
|
74
|
+
* global-scope crew agent lives in the config workspace, which the
|
|
75
|
+
* worker's file proxy cannot reach. Absent/empty = no call_agent. */
|
|
76
|
+
crewDelegates?: {
|
|
77
|
+
name: string;
|
|
78
|
+
system: string;
|
|
79
|
+
}[];
|
|
40
80
|
} | {
|
|
41
81
|
kind: 'run-node';
|
|
42
82
|
runId: number;
|
|
@@ -49,10 +89,26 @@ export type MainToWorker = {
|
|
|
49
89
|
debug?: boolean;
|
|
50
90
|
fileMeta?: FileMeta;
|
|
51
91
|
scope?: string;
|
|
92
|
+
graphConfig?: GraphConfigWire;
|
|
52
93
|
remoteTools?: ToolDecl[];
|
|
94
|
+
}
|
|
95
|
+
/** Host settings the worker cannot infer, sent once before any run.
|
|
96
|
+
*
|
|
97
|
+
* The worker is its OWN module graph, so anything the host configured on the
|
|
98
|
+
* main thread (the state dot-dir, today) is unset there unless it is told.
|
|
99
|
+
* The worker entry used to hardcode '.prompd', which made a Corenel worker
|
|
100
|
+
* read and write Prompd's directory — the same bug the shared boot had, in
|
|
101
|
+
* the one place a second module graph hides it. */
|
|
102
|
+
| {
|
|
103
|
+
kind: 'configure';
|
|
104
|
+
stateDir?: string;
|
|
53
105
|
} | {
|
|
54
106
|
kind: 'abort';
|
|
55
107
|
runId: number;
|
|
108
|
+
} | {
|
|
109
|
+
kind: 'set-model';
|
|
110
|
+
runId: number;
|
|
111
|
+
model: string;
|
|
56
112
|
} | {
|
|
57
113
|
kind: 'token-response';
|
|
58
114
|
id: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../core/protocol.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../core/protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/idb.d.ts
CHANGED
|
@@ -7,6 +7,15 @@ export declare function idbPut<T>(store: StoreName, key: string, value: T): Prom
|
|
|
7
7
|
export declare function idbGet<T>(store: StoreName, key: string): Promise<T | undefined>;
|
|
8
8
|
export declare function idbGetAll<T>(store: StoreName): Promise<T[]>;
|
|
9
9
|
export declare function idbKeys(store: StoreName): Promise<string[]>;
|
|
10
|
+
export interface IdbEntry<T> {
|
|
11
|
+
key: string;
|
|
12
|
+
value: T;
|
|
13
|
+
}
|
|
14
|
+
/** Read every key/value pair from a store as a single consistent snapshot.
|
|
15
|
+
* Queues getAllKeys() and getAll() on ONE readonly transaction, so the pairing
|
|
16
|
+
* cannot be desynced by a write (autosave, sync, delete) landing between two
|
|
17
|
+
* separate transactions — unlike calling idbKeys() and idbGetAll() apart. */
|
|
18
|
+
export declare function idbEntries<T>(store: StoreName): Promise<IdbEntry<T>[]>;
|
|
10
19
|
export declare function idbDelete(store: StoreName, key: string): Promise<void>;
|
|
11
20
|
export declare function idbClear(store: StoreName): Promise<void>;
|
|
12
21
|
//# sourceMappingURL=idb.d.ts.map
|
package/dist/idb.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idb.d.ts","sourceRoot":"","sources":["../idb.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"idb.d.ts","sourceRoot":"","sources":["../idb.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,MAAM,sFAAuF,CAAC;AAC3G,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAchD;yDACyD;AACzD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAM/C;AAiDD,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhF;AAED,wBAAsB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAGrF;AAED,wBAAsB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAGjE;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAIjE;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IAAI,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE;AAEtD;;;6EAG6E;AAC7E,wBAAsB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAQ5E;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAExD"}
|
package/dist/idb.js
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
import { isStorageFullError, reportStorageFull, reportStorageOk } from './storageHealth';
|
|
5
5
|
const DB_BASE = 'prompd.agent';
|
|
6
6
|
const VERSION = 5;
|
|
7
|
+
// 'sessions' and 'recall' are LEGACY (file-backed stores replaced them,
|
|
8
|
+
// 2026-07); kept in the schema so existing DBs open without a version bump.
|
|
7
9
|
export const STORES = ['memory', 'kv', 'sessions', 'recall', 'files', 'config', 'config-history'];
|
|
8
10
|
// Per-identity database name. The anonymous scope keeps the bare `prompd.agent`
|
|
9
11
|
// DB (so pre-existing local data is preserved); each signed-in identity gets its
|
|
@@ -91,6 +93,19 @@ export async function idbKeys(store) {
|
|
|
91
93
|
const keys = await reqP(db.transaction(store).objectStore(store).getAllKeys());
|
|
92
94
|
return keys.map(String);
|
|
93
95
|
}
|
|
96
|
+
/** Read every key/value pair from a store as a single consistent snapshot.
|
|
97
|
+
* Queues getAllKeys() and getAll() on ONE readonly transaction, so the pairing
|
|
98
|
+
* cannot be desynced by a write (autosave, sync, delete) landing between two
|
|
99
|
+
* separate transactions — unlike calling idbKeys() and idbGetAll() apart. */
|
|
100
|
+
export async function idbEntries(store) {
|
|
101
|
+
const db = await open();
|
|
102
|
+
const os = db.transaction(store).objectStore(store);
|
|
103
|
+
const [keys, values] = await Promise.all([
|
|
104
|
+
reqP(os.getAllKeys()),
|
|
105
|
+
reqP(os.getAll()),
|
|
106
|
+
]);
|
|
107
|
+
return keys.map((k, i) => ({ key: String(k), value: values[i] }));
|
|
108
|
+
}
|
|
94
109
|
export function idbDelete(store, key) {
|
|
95
110
|
return write(store, (s) => s.delete(key));
|
|
96
111
|
}
|
package/dist/idb.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idb.js","sourceRoot":"","sources":["../idb.ts"],"names":[],"mappings":"AAAA;;yDAEyD;AAEzD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEzF,MAAM,OAAO,GAAG,cAAc,CAAC;AAC/B,MAAM,OAAO,GAAG,CAAC,CAAC;AAClB,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAU,CAAC;AAG3G,gFAAgF;AAChF,iFAAiF;AACjF,iFAAiF;AACjF,+EAA+E;AAC/E,8DAA8D;AAC9D,IAAI,SAAS,GAAG,MAAM,CAAC;AACvB,SAAS,MAAM;IACb,OAAO,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,SAAS,EAAE,CAAC;AACpE,CAAC;AAED,IAAI,SAAS,GAAgC,IAAI,CAAC;AAElD;yDACyD;AACzD,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO;IAChC,SAAS,GAAG,KAAK,CAAC;IAClB,MAAM,IAAI,GAAG,SAAS,CAAC;IACvB,SAAS,GAAG,IAAI,CAAC;IACjB,IAAI,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAwB,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,IAAI;IACX,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,SAAS,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;QAC9C,GAAG,CAAC,eAAe,GAAG,GAAG,EAAE;YACzB,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YACtB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAChE,CAAC;QACH,CAAC,CAAC;QACF,GAAG,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,IAAI,CAAI,GAAkB;IACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,GAAG,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,IAAI,CAAC,EAAkB;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,EAAE,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAChC,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACpC,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;wFAEwF;AACxF,KAAK,UAAU,KAAK,CAAC,KAAgB,EAAE,MAAmC;IACxE,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,eAAe,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;YAAC,iBAAiB,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QAC3D,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AAED,MAAM,UAAU,MAAM,CAAI,KAAgB,EAAE,GAAW,EAAE,KAAQ;IAC/D,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAI,KAAgB,EAAE,GAAW;IAC3D,MAAM,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;IACxB,OAAO,IAAI,CAAI,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAkB,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,KAAgB;IACjD,MAAM,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;IACxB,OAAO,IAAI,CAAM,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,EAAqB,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAgB;IAC5C,MAAM,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;IACxB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAgB,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9F,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAgB,EAAE,GAAW;IACrD,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAgB;IACvC,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,CAAC"}
|
|
1
|
+
{"version":3,"file":"idb.js","sourceRoot":"","sources":["../idb.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../memory/local.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../memory/local.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAOhF;mFACmF;AACnF,qBAAa,mBAAoB,YAAW,eAAe;IACnD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAM5D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAevD,IAAI,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAKvC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxC;AAED,qBAAa,kBAAmB,YAAW,cAAc;IACjD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAG9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGlC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAI/C"}
|
package/dist/memory/local.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../memory/local.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../memory/local.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../prompts/history.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,qEAAqE;AACrE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../prompts/history.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,qEAAqE;AACrE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAwBD,kEAAkE;AAClE,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAWvE;AAED,iDAAiD;AACjD,wBAAsB,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAKzD;AAED,+DAA+D;AAC/D,wBAAsB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAExE;AAED;;yDAEyD;AACzD,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAe7D;AAED,sEAAsE;AACtE,wBAAsB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D"}
|
package/dist/prompts/history.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Snapshots are whole-workspace (the config tree is a handful of small .md files),
|
|
9
9
|
* which keeps restore trivial and diff-free. */
|
|
10
|
-
import { idbGet, idbGetAll, idbKeys, idbPut, idbDelete } from '../idb';
|
|
10
|
+
import { idbGet, idbGetAll, idbEntries, idbKeys, idbPut, idbDelete } from '../idb';
|
|
11
11
|
import { configWorkspace } from '@corenel/harness/prompts/host';
|
|
12
12
|
import { seedConfig } from '@corenel/harness/prompts/config';
|
|
13
13
|
const STORE = 'config-history';
|
|
@@ -17,14 +17,19 @@ function freshId() {
|
|
|
17
17
|
seq += 1;
|
|
18
18
|
return `c-${Date.now().toString(36)}-${seq.toString(36)}`;
|
|
19
19
|
}
|
|
20
|
-
/** Read every config file (path -> content), skipping empty-dir .keep markers.
|
|
20
|
+
/** Read every config file (path -> content), skipping empty-dir .keep markers.
|
|
21
|
+
*
|
|
22
|
+
* ONE transaction for keys and values. Reading them in two transactions pairs by
|
|
23
|
+
* array index across a gap a write can land in, so a concurrent edit would store
|
|
24
|
+
* a file's content under a different file's name — and because the snapshot is
|
|
25
|
+
* persisted as a commit, restoring it later would write that corruption back into
|
|
26
|
+
* the working copy. */
|
|
21
27
|
async function snapshotWorkingCopy() {
|
|
22
|
-
const [keys, vals] = await Promise.all([idbKeys('config'), idbGetAll('config')]);
|
|
23
28
|
const files = {};
|
|
24
|
-
for (
|
|
25
|
-
if (
|
|
29
|
+
for (const { key, value } of await idbEntries('config')) {
|
|
30
|
+
if (key.endsWith(`/${KEEP}`) || key === KEEP)
|
|
26
31
|
continue;
|
|
27
|
-
files[
|
|
32
|
+
files[key] = value ?? '';
|
|
28
33
|
}
|
|
29
34
|
return files;
|
|
30
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../prompts/history.ts"],"names":[],"mappings":"AAAA;;;;;;;;gDAQgD;AAChD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../prompts/history.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface RunWatchdog {
|
|
2
|
+
/** Feed every AgentEvent through this — tracks tool in-flight and re-arms. */
|
|
3
|
+
onEvent(e: {
|
|
4
|
+
type: string;
|
|
5
|
+
id?: string;
|
|
6
|
+
}): void;
|
|
7
|
+
/** Pause while a blocking UI (ask form / edit review) waits on the user. */
|
|
8
|
+
pause(): void;
|
|
9
|
+
/** (Re)arm — call after the blocking UI resolves, and once at run start. */
|
|
10
|
+
bump(): void;
|
|
11
|
+
/** Stop all timers (run settled). */
|
|
12
|
+
clear(): void;
|
|
13
|
+
}
|
|
14
|
+
export declare const WATCHDOG_SOFT_MS = 45000;
|
|
15
|
+
export declare const WATCHDOG_TOOL_HARD_MS: number;
|
|
16
|
+
export declare function createRunWatchdog(onTimeout: (reason: 'silent' | 'tool-hard-cap') => void, opts?: {
|
|
17
|
+
softMs?: number;
|
|
18
|
+
hardMs?: number;
|
|
19
|
+
}): RunWatchdog;
|
|
20
|
+
//# sourceMappingURL=runWatchdog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runWatchdog.d.ts","sourceRoot":"","sources":["../runWatchdog.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,WAAW;IAC1B,8EAA8E;IAC9E,OAAO,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChD,4EAA4E;IAC5E,KAAK,IAAI,IAAI,CAAC;IACd,4EAA4E;IAC5E,IAAI,IAAI,IAAI,CAAC;IACb,qCAAqC;IACrC,KAAK,IAAI,IAAI,CAAC;CACf;AAED,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AACtC,eAAO,MAAM,qBAAqB,QAAiB,CAAC;AAEpD,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,GAAG,eAAe,KAAK,IAAI,EACvD,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1C,WAAW,CAoDb"}
|