@corenel/tools-web 0.1.0 → 0.2.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.
Files changed (48) hide show
  1. package/dist/budgetGate.d.ts +21 -0
  2. package/dist/budgetGate.d.ts.map +1 -0
  3. package/dist/budgetGate.js +41 -0
  4. package/dist/budgetGate.js.map +1 -0
  5. package/dist/contextDocs.d.ts +54 -0
  6. package/dist/contextDocs.d.ts.map +1 -0
  7. package/dist/contextDocs.js +145 -0
  8. package/dist/contextDocs.js.map +1 -0
  9. package/dist/core/protocol.d.ts +32 -2
  10. package/dist/core/protocol.d.ts.map +1 -1
  11. package/dist/idb.d.ts +9 -0
  12. package/dist/idb.d.ts.map +1 -1
  13. package/dist/idb.js +15 -0
  14. package/dist/idb.js.map +1 -1
  15. package/dist/memory/local.d.ts.map +1 -1
  16. package/dist/memory/local.js.map +1 -1
  17. package/dist/prompts/history.d.ts.map +1 -1
  18. package/dist/prompts/history.js +11 -6
  19. package/dist/prompts/history.js.map +1 -1
  20. package/dist/runWatchdog.d.ts +20 -0
  21. package/dist/runWatchdog.d.ts.map +1 -0
  22. package/dist/runWatchdog.js +66 -0
  23. package/dist/runWatchdog.js.map +1 -0
  24. package/dist/runtime.d.ts +355 -0
  25. package/dist/runtime.d.ts.map +1 -0
  26. package/dist/runtime.js +711 -0
  27. package/dist/runtime.js.map +1 -0
  28. package/dist/runtime.testHost.d.ts +9 -0
  29. package/dist/runtime.testHost.d.ts.map +1 -0
  30. package/dist/runtime.testHost.js +53 -0
  31. package/dist/runtime.testHost.js.map +1 -0
  32. package/dist/storageQuota.d.ts +25 -0
  33. package/dist/storageQuota.d.ts.map +1 -0
  34. package/dist/storageQuota.js +89 -0
  35. package/dist/storageQuota.js.map +1 -0
  36. package/dist/storageRegistry.d.ts +53 -0
  37. package/dist/storageRegistry.d.ts.map +1 -0
  38. package/dist/storageRegistry.js +40 -0
  39. package/dist/storageRegistry.js.map +1 -0
  40. package/dist/workerClient.d.ts +43 -3
  41. package/dist/workerClient.d.ts.map +1 -1
  42. package/dist/workerClient.js +72 -5
  43. package/dist/workerClient.js.map +1 -1
  44. package/dist/workerHandler.d.ts +7 -0
  45. package/dist/workerHandler.d.ts.map +1 -1
  46. package/dist/workerHandler.js +46 -7
  47. package/dist/workerHandler.js.map +1 -1
  48. package/package.json +19 -29
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { RuntimeHost, SessionStorePort } from './runtime';
2
+ /** In-memory SessionStorePort backed by a Map — enough for the runtime's
3
+ * load/create/save/delete/list calls without a real IndexedDB store. */
4
+ export declare function makeSessionStore(): SessionStorePort;
5
+ /** Build a fully-stubbed RuntimeHost. Every field the engine reads has a inert
6
+ * default (no-op guard allow, zero-priced model, empty constraints); pass
7
+ * `overrides` to swap in the behavior a specific test needs to observe. */
8
+ export declare function makeHost(overrides?: Partial<RuntimeHost>): RuntimeHost;
9
+ //# sourceMappingURL=runtime.testHost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.testHost.d.ts","sourceRoot":"","sources":["../runtime.testHost.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAoB,gBAAgB,EAAa,MAAM,WAAW,CAAC;AAI5F;wEACwE;AACxE,wBAAgB,gBAAgB,IAAI,gBAAgB,CAsBnD;AAWD;;2EAE2E;AAC3E,wBAAgB,QAAQ,CAAC,SAAS,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,WAAW,CAgB1E"}
@@ -0,0 +1,53 @@
1
+ /** In-memory SessionStorePort backed by a Map — enough for the runtime's
2
+ * load/create/save/delete/list calls without a real IndexedDB store. */
3
+ export function makeSessionStore() {
4
+ const map = new Map();
5
+ let n = 0;
6
+ return {
7
+ async list(surface) {
8
+ return [...map.values()].filter((s) => (s.surface ?? 'agent') === surface);
9
+ },
10
+ async get(id) {
11
+ return map.get(id) ?? null;
12
+ },
13
+ async create(title, surface) {
14
+ const s = { id: `s${++n}`, title, createdAt: Date.now(), updatedAt: Date.now(), messages: [], surface };
15
+ map.set(s.id, s);
16
+ return s;
17
+ },
18
+ async save(s) {
19
+ map.set(s.id, s);
20
+ },
21
+ async delete(id) {
22
+ map.delete(id);
23
+ },
24
+ };
25
+ }
26
+ const FAKE_FS = { kind: 'memory', label: 'test-root', isLocalDisk: false, writable: true };
27
+ function makeWorkspace() {
28
+ return {
29
+ get: () => FAKE_FS,
30
+ whenReady: async () => { },
31
+ };
32
+ }
33
+ /** Build a fully-stubbed RuntimeHost. Every field the engine reads has a inert
34
+ * default (no-op guard allow, zero-priced model, empty constraints); pass
35
+ * `overrides` to swap in the behavior a specific test needs to observe. */
36
+ export function makeHost(overrides = {}) {
37
+ const defaultModel = { provider: 'test', label: 'Test Model', inPrice: 0, outPrice: 0, contextWindow: 128000 };
38
+ const host = {
39
+ workerDeps: {},
40
+ workspace: makeWorkspace,
41
+ installFilesResolver: () => { },
42
+ sessions: makeSessionStore(),
43
+ modelInfo: () => defaultModel,
44
+ price: () => 0,
45
+ guard: async () => ({ allowed: true }),
46
+ recordUsage: () => { },
47
+ constraints: () => ({}),
48
+ compression: () => 'off',
49
+ ...overrides,
50
+ };
51
+ return host;
52
+ }
53
+ //# sourceMappingURL=runtime.testHost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.testHost.js","sourceRoot":"","sources":["../runtime.testHost.ts"],"names":[],"mappings":"AASA;wEACwE;AACxE,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC5C,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,OAAuB;YAChC,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC;QAC7E,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,EAAU;YAClB,OAAO,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,OAAuB;YACjD,MAAM,CAAC,GAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;YACtH,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACjB,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,CAAe;YACxB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,EAAU;YACrB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAA4B,CAAC;AAErH,SAAS,aAAa;IACpB,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO;QAClB,SAAS,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;KAC1B,CAAC;AACJ,CAAC;AAED;;2EAE2E;AAC3E,MAAM,UAAU,QAAQ,CAAC,YAAkC,EAAE;IAC3D,MAAM,YAAY,GAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;IAC1H,MAAM,IAAI,GAAgB;QACxB,UAAU,EAAE,EAA+B;QAC3C,SAAS,EAAE,aAAa;QACxB,oBAAoB,EAAE,GAAG,EAAE,GAAE,CAAC;QAC9B,QAAQ,EAAE,gBAAgB,EAAE;QAC5B,SAAS,EAAE,GAAG,EAAE,CAAC,YAAY;QAC7B,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACd,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtC,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC;QACrB,WAAW,EAAE,GAAqB,EAAE,CAAC,CAAC,EAAE,CAAC;QACzC,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;QACxB,GAAG,SAAS;KACb,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,25 @@
1
+ /** Reference cap for localStorage. Browsers do not expose it, and ~5 MB of
2
+ * UTF-16 code units is the near-universal value; used only to render a meter. */
3
+ export declare const LOCALSTORAGE_LIMIT_BYTES: number;
4
+ export interface EstimateResult {
5
+ usage: number;
6
+ quota: number;
7
+ supported: boolean;
8
+ }
9
+ /** Byte length of a stored value: ArrayBuffer views (typed arrays) and ArrayBuffer
10
+ * by their byte length, text as UTF-8, anything else by its JSON serialized form. */
11
+ export declare function byteLen(v: string | Uint8Array | undefined | null | object): number;
12
+ export declare function readEstimate(): Promise<EstimateResult>;
13
+ export declare function isPersisted(): Promise<boolean>;
14
+ /** Ask the browser to keep this origin's data. Chrome grants silently on
15
+ * engagement; Firefox prompts — so callers fire this from a moment the user
16
+ * understands, not at boot. Asks at most once per session, never when already
17
+ * granted, and never throws. */
18
+ export declare function requestPersist(): Promise<boolean>;
19
+ /** Bytes charged to localStorage by the matching keys. Browsers bill UTF-16
20
+ * code units for both key and value, hence the doubling. */
21
+ export declare function localStorageBytes(pred?: (key: string) => boolean): {
22
+ bytes: number;
23
+ items: number;
24
+ };
25
+ //# sourceMappingURL=storageQuota.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storageQuota.d.ts","sourceRoot":"","sources":["../storageQuota.ts"],"names":[],"mappings":"AAMA;iFACiF;AACjF,eAAO,MAAM,wBAAwB,QAAkB,CAAC;AAExD,MAAM,WAAW,cAAc;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE;AAEpF;qFACqF;AACrF,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAMlF;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC,CAO5D;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAMpD;AAKD;;;gCAGgC;AAChC,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAUvD;AAED;4DAC4D;AAC5D,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAYnG"}
@@ -0,0 +1,89 @@
1
+ /* Origin storage primitives: how much room the browser gives us, how much is
2
+ * used, and whether it will keep our data. Deliberately free of app-specific
3
+ * category names — the host registers those (see storageRegistry.ts). */
4
+ const utf8 = new TextEncoder();
5
+ /** Reference cap for localStorage. Browsers do not expose it, and ~5 MB of
6
+ * UTF-16 code units is the near-universal value; used only to render a meter. */
7
+ export const LOCALSTORAGE_LIMIT_BYTES = 5 * 1024 * 1024;
8
+ /** Byte length of a stored value: ArrayBuffer views (typed arrays) and ArrayBuffer
9
+ * by their byte length, text as UTF-8, anything else by its JSON serialized form. */
10
+ export function byteLen(v) {
11
+ if (v == null)
12
+ return 0;
13
+ if (ArrayBuffer.isView(v))
14
+ return v.byteLength;
15
+ if (typeof v === 'string')
16
+ return utf8.encode(v).length;
17
+ if (Object.prototype.toString.call(v) === '[object ArrayBuffer]')
18
+ return v.byteLength;
19
+ try {
20
+ return utf8.encode(JSON.stringify(v) ?? '').length;
21
+ }
22
+ catch {
23
+ return 0;
24
+ }
25
+ }
26
+ export async function readEstimate() {
27
+ try {
28
+ const s = navigator.storage;
29
+ if (!s || typeof s.estimate !== 'function')
30
+ return { usage: 0, quota: 0, supported: false };
31
+ const e = await s.estimate();
32
+ return { usage: e.usage ?? 0, quota: e.quota ?? 0, supported: true };
33
+ }
34
+ catch {
35
+ return { usage: 0, quota: 0, supported: false };
36
+ }
37
+ }
38
+ export async function isPersisted() {
39
+ try {
40
+ const s = navigator.storage;
41
+ if (!s || typeof s.persisted !== 'function')
42
+ return false;
43
+ return await s.persisted();
44
+ }
45
+ catch {
46
+ return false;
47
+ }
48
+ }
49
+ let persistAsked = false;
50
+ let persistResult = false;
51
+ /** Ask the browser to keep this origin's data. Chrome grants silently on
52
+ * engagement; Firefox prompts — so callers fire this from a moment the user
53
+ * understands, not at boot. Asks at most once per session, never when already
54
+ * granted, and never throws. */
55
+ export async function requestPersist() {
56
+ try {
57
+ if (await isPersisted())
58
+ return true;
59
+ if (persistAsked)
60
+ return persistResult;
61
+ const s = navigator.storage;
62
+ if (!s || typeof s.persist !== 'function')
63
+ return false;
64
+ persistAsked = true;
65
+ persistResult = await s.persist();
66
+ return persistResult;
67
+ }
68
+ catch {
69
+ return false;
70
+ }
71
+ }
72
+ /** Bytes charged to localStorage by the matching keys. Browsers bill UTF-16
73
+ * code units for both key and value, hence the doubling. */
74
+ export function localStorageBytes(pred) {
75
+ let bytes = 0;
76
+ let items = 0;
77
+ try {
78
+ for (let i = 0; i < localStorage.length; i++) {
79
+ const k = localStorage.key(i);
80
+ if (!k || (pred && !pred(k)))
81
+ continue;
82
+ bytes += (k.length + (localStorage.getItem(k)?.length ?? 0)) * 2;
83
+ items++;
84
+ }
85
+ }
86
+ catch { /* storage unavailable (private mode) — report what we have */ }
87
+ return { bytes, items };
88
+ }
89
+ //# sourceMappingURL=storageQuota.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storageQuota.js","sourceRoot":"","sources":["../storageQuota.ts"],"names":[],"mappings":"AAAA;;yEAEyE;AAEzE,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;AAE/B;iFACiF;AACjF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAIxD;qFACqF;AACrF,MAAM,UAAU,OAAO,CAAC,CAAkD;IACxE,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,CAAC,CAAC;IACxB,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,UAAU,CAAC;IAC/C,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACxD,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,sBAAsB;QAAE,OAAQ,CAAiB,CAAC,UAAU,CAAC;IACvG,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;AACjF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,UAAU;YAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC5F,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7B,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC;QAC1D,OAAO,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;AAC3B,CAAC;AAED,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,IAAI,aAAa,GAAG,KAAK,CAAC;AAE1B;;;gCAGgC;AAChC,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,IAAI,MAAM,WAAW,EAAE;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,YAAY;YAAE,OAAO,aAAa,CAAC;QACvC,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC;QACxD,YAAY,GAAG,IAAI,CAAC;QACpB,aAAa,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;AAC3B,CAAC;AAED;4DAC4D;AAC5D,MAAM,UAAU,iBAAiB,CAAC,IAA+B;IAC/D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAE,SAAS;YACvC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACjE,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,8DAA8D,CAAC,CAAC;IAC1E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { type StoreName } from './idb';
2
+ export interface CategoryMeasurement {
3
+ bytes: number;
4
+ items: number;
5
+ }
6
+ export interface RetentionPolicy {
7
+ /** categoryId -> how many records to keep. */
8
+ keepN: Record<string, number>;
9
+ /** categoryId -> drop records older than N days (0 disables). */
10
+ maxAgeDays: Record<string, number>;
11
+ /** Evict evictable categories automatically when usage crosses the threshold. */
12
+ autoPrune: boolean;
13
+ /** Percent of the origin quota at which auto-prune engages. */
14
+ thresholdPct: number;
15
+ }
16
+ export interface PruneResult {
17
+ dropped: number;
18
+ bytes: number;
19
+ }
20
+ export interface CategoryExport {
21
+ filename: string;
22
+ blob: Blob;
23
+ }
24
+ export interface StorageCategory {
25
+ id: string;
26
+ label: string;
27
+ hint?: string;
28
+ /** Optional copy for the clear-confirmation dialog, when the label alone
29
+ * ("Clear {label}?") would overstate what clear() actually removes (e.g. a
30
+ * category whose label names a broader concept than its clear() touches).
31
+ * Falls back to the generic "Clear {label}?" phrasing when omitted. */
32
+ confirmHint?: string;
33
+ /** Protected categories hold irreplaceable user data: auto-prune skips them
34
+ * and the UI demands an explicit confirm before clearing. */
35
+ protected: boolean;
36
+ measure(): Promise<CategoryMeasurement>;
37
+ clear(): Promise<void>;
38
+ prune?(policy: RetentionPolicy): Promise<PruneResult>;
39
+ export?(): Promise<CategoryExport>;
40
+ }
41
+ /** Register (or replace, by id) a category. Replacement keeps the original
42
+ * position so the panel's row order is stable across re-registration. */
43
+ export declare function registerStorageCategory(c: StorageCategory): void;
44
+ export declare function listStorageCategories(): StorageCategory[];
45
+ export declare function clearStorageCategories(): void;
46
+ /** Measure every category. A failing category yields a zeroed row flagged
47
+ * `error` rather than failing the whole panel. */
48
+ export declare function measureCategories(): Promise<Record<string, CategoryMeasurement & {
49
+ error?: boolean;
50
+ }>>;
51
+ /** Byte total across one store of the shared multi-store DB. */
52
+ export declare function measureIdbStore(store: StoreName): Promise<CategoryMeasurement>;
53
+ //# sourceMappingURL=storageRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storageRegistry.d.ts","sourceRoot":"","sources":["../storageRegistry.ts"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD,MAAM,WAAW,mBAAmB;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAErE,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,iFAAiF;IACjF,SAAS,EAAE,OAAO,CAAC;IACnB,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAC/D,MAAM,WAAW,cAAc;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE;AAEhE,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;2EAGuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;iEAC6D;IAC7D,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,KAAK,CAAC,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;CACpC;AAID;yEACyE;AACzE,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,eAAe,GAAG,IAAI,CAEhE;AAED,wBAAgB,qBAAqB,IAAI,eAAe,EAAE,CAEzD;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED;kDACkD;AAClD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CAO5G;AAED,gEAAgE;AAChE,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAKpF"}
@@ -0,0 +1,40 @@
1
+ /* The storage category registry. The kernel owns the SHAPE of a category and
2
+ * the measuring/aggregating machinery; the host registers the concrete
3
+ * categories, so no app-specific name appears here. */
4
+ import { byteLen } from './storageQuota';
5
+ import { idbGetAll } from './idb';
6
+ const registry = new Map();
7
+ /** Register (or replace, by id) a category. Replacement keeps the original
8
+ * position so the panel's row order is stable across re-registration. */
9
+ export function registerStorageCategory(c) {
10
+ registry.set(c.id, c);
11
+ }
12
+ export function listStorageCategories() {
13
+ return [...registry.values()];
14
+ }
15
+ export function clearStorageCategories() {
16
+ registry.clear();
17
+ }
18
+ /** Measure every category. A failing category yields a zeroed row flagged
19
+ * `error` rather than failing the whole panel. */
20
+ export async function measureCategories() {
21
+ const out = {};
22
+ await Promise.all(listStorageCategories().map(async (c) => {
23
+ try {
24
+ out[c.id] = await c.measure();
25
+ }
26
+ catch {
27
+ out[c.id] = { bytes: 0, items: 0, error: true };
28
+ }
29
+ }));
30
+ return out;
31
+ }
32
+ /** Byte total across one store of the shared multi-store DB. */
33
+ export async function measureIdbStore(store) {
34
+ const all = await idbGetAll(store);
35
+ let bytes = 0;
36
+ for (const v of all)
37
+ bytes += byteLen(v);
38
+ return { bytes, items: all.length };
39
+ }
40
+ //# sourceMappingURL=storageRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storageRegistry.js","sourceRoot":"","sources":["../storageRegistry.ts"],"names":[],"mappings":"AAAA;;uDAEuD;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAC;AAoClD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;AAEpD;yEACyE;AACzE,MAAM,UAAU,uBAAuB,CAAC,CAAkB;IACxD,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC;AAED;kDACkD;AAClD,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,GAAG,GAA8D,EAAE,CAAC;IAC1E,MAAM,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACxD,IAAI,CAAC;YAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;QAAC,CAAC;QACtC,MAAM,CAAC;YAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,CAAC;IAC5D,CAAC,CAAC,CAAC,CAAC;IACJ,OAAO,GAAG,CAAC;AACb,CAAC;AAED,gEAAgE;AAChE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAgB;IACpD,MAAM,GAAG,GAAG,MAAM,SAAS,CAA+B,KAAK,CAAC,CAAC;IACjE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,GAAG;QAAE,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACzC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;AACtC,CAAC"}
@@ -1,12 +1,14 @@
1
1
  import type { ChatCompletionMessageParam } from 'openai/resources/chat/completions';
2
2
  import type { RunAgentResult } from '@corenel/harness/core/loop';
3
+ import type { GraphConfigWire } from './core/protocol';
3
4
  import type { RunNodeResult, NodeSpec } from '@corenel/harness/dag/executeNode';
4
5
  import type { NodeOutput, NodeEvent } from '@corenel/protocol';
5
- import type { AgentEvent, AskQuestion, AskAnswers, EditReviewOutcome } from '@corenel/protocol';
6
+ import type { AgentEvent, AskQuestion, AskAnswers, EditReviewOutcome, HealRecord, Usage } from '@corenel/protocol';
6
7
  import type { Policy, PermissionCeiling } from '@corenel/harness/guardrail';
7
8
  import type { CompressionConfig } from '@corenel/harness/compression';
8
9
  import type { FileService } from '@corenel/protocol';
9
10
  import type { ToolDecl } from '@corenel/protocol';
11
+ import type { RunConstraints, Breach, BudgetState } from '@corenel/harness/core/budget';
10
12
  /** Options for runNode — like RunOpts but the node's internal turns arrive via
11
13
  * onNodeEvent (the node-tagged stream); onEvent only ever sees a terminal error. */
12
14
  export interface RunNodeOpts {
@@ -47,6 +49,30 @@ export interface RunOpts {
47
49
  onAsk?: (questions: AskQuestion[]) => Promise<AskAnswers | null>;
48
50
  /** Await the user's verdict on a propose_edit (null = run ended unreviewed). */
49
51
  onEditReview?: (callId: string) => Promise<EditReviewOutcome | null>;
52
+ /** Workspace-relative path of the editor buffer the agent edits — lets
53
+ * propose_edit validate a proposal (compile it) before surfacing the diff. */
54
+ editorFile?: string;
55
+ /** Run-budget caps. When set, `run` meters every forwarded `usage` event with
56
+ * a BudgetMeter and calls `onBreach` (once per breach) on the first turn that
57
+ * exceeds a cap. Omit for the pre-existing, unmetered behavior. */
58
+ constraints?: RunConstraints;
59
+ /** Convert a turn's token usage to a cost, given the model that produced it.
60
+ * Omit to meter tokens/time only (no $ cap enforcement). */
61
+ price?: (usage: Usage, model: string) => number;
62
+ /** Called once per breach with the offending Breach and the meter's running
63
+ * state. `{ continue: false }` aborts the run (stop); `{ continue: true,
64
+ * model }` sends `set-model` and keeps running (degrade); `{ continue: true }`
65
+ * with no model is a soft warn — the run continues unchanged. */
66
+ onBreach?: (breach: Breach, state: BudgetState) => Promise<{
67
+ continue: boolean;
68
+ model?: string;
69
+ }>;
70
+ /** The active chat session id — threads through to the worker so offloaded
71
+ * tool outputs are stored with the session. */
72
+ sessionId?: string;
73
+ /** Restrict this run's tool registry to these names (capability seam). Absent
74
+ * = full registry. */
75
+ toolNames?: string[];
50
76
  }
51
77
  export interface WorkerAgent {
52
78
  run(messages: ChatCompletionMessageParam[], opts?: RunOpts): Promise<RunAgentResult>;
@@ -69,13 +95,27 @@ export interface WorkerAgentOpts {
69
95
  /** Identity scope for the worker's per-user IndexedDB namespace. Defaults to
70
96
  * 'anon'. */
71
97
  getScope?: () => string;
98
+ /** Project-graph config to carry to the worker per run (localStorage is absent
99
+ * there). A getter so a Settings change is picked up without recreating the
100
+ * worker. Mirrors getFileService/getRemoteTools. */
101
+ getGraphConfig?: () => GraphConfigWire | undefined;
72
102
  /** Tool declarations from connected sidecars to advertise to the worker for a
73
103
  * run. A getter so connecting/disconnecting a sidecar is picked up per run
74
104
  * without recreating the worker. Mirrors getFileService. */
75
105
  getRemoteTools?: () => ToolDecl[];
76
106
  /** Execute a sidecar tool by name on the main thread (which holds the WS
77
- * connection + governs). Answers the worker's tool-request. */
78
- runRemoteTool?: (name: string, args: Record<string, unknown>) => Promise<string>;
107
+ * connection + governs). Answers the worker's tool-request. `signal` aborts
108
+ * when the calling RUN aborts or ends — long host-side executions
109
+ * (run_strategy fan-outs) must observe it or Stop leaves them running. */
110
+ runRemoteTool?: (name: string, args: Record<string, unknown>, signal?: AbortSignal, host?: {
111
+ ask?: (questions: AskQuestion[]) => Promise<AskAnswers | null>;
112
+ runState?: Record<string, unknown>;
113
+ }) => Promise<string>;
114
+ /** Persist a self-heal record. Called at the SINGLE worker-message choke point
115
+ * for every heal, from BOTH the root run (`event`) and sub-agent/DAG-node
116
+ * (`node-event`) channels — so no surface or nested run can drop heals. The host
117
+ * injects the corpus writer (the kernel client holds no reference to it). */
118
+ onHeal?: (record: HealRecord) => void;
79
119
  }
80
120
  export declare function createWorkerAgent(clientOpts: WorkerAgentOpts): WorkerAgent;
81
121
  //# sourceMappingURL=workerClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workerClient.d.ts","sourceRoot":"","sources":["../workerClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workerClient.d.ts","sourceRoot":"","sources":["../workerClient.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { isAgentLogging, alog } from '@corenel/harness/log';
2
+ import { makeBudgetGate } from './budgetGate';
2
3
  /** Re-phrase a file-mutation permission prompt from the live workspace, so the
3
4
  * stated risk reflects the CURRENT source. Returns null for non-file tools. */
4
5
  function fileWriteSummary(tool, input, svc) {
@@ -29,6 +30,17 @@ export function createWorkerAgent(clientOpts) {
29
30
  fail(message);
30
31
  active.clear();
31
32
  };
33
+ // Per-run abort fan-out for REMOTE tool executions (they run on this thread,
34
+ // so the worker's abort message can't reach them). Aborted when the run's
35
+ // signal fires and on run cleanup (a settled run must not leave side work).
36
+ const remoteAborts = new Map();
37
+ // Per-run bridges for HOST-side remote tools (create_strategy runs on the main
38
+ // thread): its clarify gate must reach the user through the SAME ask UI as
39
+ // ask_user, and share re-interrogation state across its calls within one run.
40
+ // tool-request is client-level but onAsk/runState are run-level, so stash them
41
+ // per runId, mirroring remoteAborts.
42
+ const remoteAsk = new Map();
43
+ const remoteRunState = new Map();
32
44
  /** Build + wire a worker. The token/file bridges and error surfacing are bound
33
45
  * to THIS instance; on error we null `worker` so the next run recreates it. */
34
46
  function make() {
@@ -74,7 +86,7 @@ export function createWorkerAgent(clientOpts) {
74
86
  return;
75
87
  }
76
88
  try {
77
- const result = await exec(m.name, m.args);
89
+ const result = await exec(m.name, m.args, remoteAborts.get(m.runId)?.signal, { ask: remoteAsk.get(m.runId), runState: remoteRunState.get(m.runId) });
78
90
  send({ kind: 'tool-response', id: m.id, ok: true, result });
79
91
  }
80
92
  catch (e) {
@@ -101,7 +113,7 @@ export function createWorkerAgent(clientOpts) {
101
113
  /** Snapshot the LIVE workspace's risk metadata for a run/permission prompt. */
102
114
  function currentFileMeta() {
103
115
  const svc = clientOpts.getFileService?.() || null;
104
- return svc ? { kind: svc.kind, label: svc.label, isLocalDisk: svc.isLocalDisk, writable: svc.writable } : undefined;
116
+ return svc ? { kind: svc.kind, label: svc.label, isLocalDisk: svc.isLocalDisk, writable: svc.writable, cacheId: svc.cacheId } : undefined;
105
117
  }
106
118
  /** Shared driver for a worker run. Wires the per-run event / node-event /
107
119
  * permission / ask / abort bridges, posts the start message, and settles on the
@@ -112,8 +124,33 @@ export function createWorkerAgent(clientOpts) {
112
124
  const send = (msg) => w.postMessage(msg);
113
125
  return new Promise((resolve, reject) => {
114
126
  const runId = ++runSeq;
127
+ const remoteAbort = new AbortController();
128
+ remoteAborts.set(runId, remoteAbort);
129
+ if (opts.onAsk)
130
+ remoteAsk.set(runId, opts.onAsk);
131
+ remoteRunState.set(runId, {});
132
+ // Run-budget metering (only when the caller passed constraints — otherwise
133
+ // this is a no-op, preserving the pre-existing unmetered behavior). The
134
+ // gate's onUsage only reports the resulting action, so capture the
135
+ // triggering Breach here (via the onBreach wrapper) to attach it to the
136
+ // 'budget-stop' event exactly as before.
137
+ let lastBreach;
138
+ const gate = opts.constraints
139
+ ? makeBudgetGate({
140
+ constraints: opts.constraints,
141
+ price: opts.price,
142
+ model: opts.model ?? '',
143
+ onBreach: opts.onBreach
144
+ ? (b, s) => { lastBreach = b; return opts.onBreach(b, s); }
145
+ : undefined,
146
+ })
147
+ : null;
115
148
  const cleanup = () => {
116
149
  active.delete(runId);
150
+ remoteAborts.delete(runId);
151
+ remoteAsk.delete(runId);
152
+ remoteRunState.delete(runId);
153
+ remoteAbort.abort(); // cancel any still-pending remote tool work
117
154
  w.removeEventListener('message', onMessage);
118
155
  opts.signal?.removeEventListener('abort', onAbort);
119
156
  };
@@ -125,11 +162,41 @@ export function createWorkerAgent(clientOpts) {
125
162
  const m = ev.data;
126
163
  if (!('runId' in m) || m.runId !== runId)
127
164
  return;
165
+ // Persist every self-heal at this ONE choke point — from the root run
166
+ // (`event`) AND from sub-agents/DAG nodes (`node-event`) — so no surface or
167
+ // nested run can drop heals (the per-call-site taps did exactly that).
128
168
  if (m.kind === 'event') {
169
+ if (m.event.type === 'heal')
170
+ clientOpts.onHeal?.(m.event.record);
171
+ if (gate && m.event.type === 'usage') {
172
+ const usage = m.event.usage;
173
+ // Forward the usage event to the host BEFORE the breach check/onBreach
174
+ // await — onBreach's degrade projection reads the host's lastUsage,
175
+ // which is only updated inside the host's onEvent handler. Forwarding
176
+ // first ensures degrade sees THIS turn's usage, not the previous one
177
+ // (on a first-turn breach the previous usage is zero, which silently
178
+ // defeats "cheaper than current" and falls back to warn).
179
+ opts.onEvent?.(m.event);
180
+ const r = await gate.onUsage(usage);
181
+ if (r.action === 'stop') {
182
+ send({ kind: 'abort', runId });
183
+ // safe: only reached after onBreach ran, which sets lastBreach
184
+ opts.onEvent?.({ type: 'budget-stop', breach: lastBreach });
185
+ }
186
+ else if (r.model) {
187
+ send({ kind: 'set-model', runId, model: r.model });
188
+ }
189
+ return;
190
+ }
129
191
  opts.onEvent?.(m.event);
130
192
  return;
131
193
  }
132
194
  if (m.kind === 'node-event') {
195
+ // A sub-agent/DAG-node heal is the inner AgentEvent of a 'node-event'
196
+ // NodeEvent (NodeEvent wraps AgentEvent), not the NodeEvent itself.
197
+ const inner = m.event.type === 'node-event' ? m.event.event : null;
198
+ if (inner?.type === 'heal')
199
+ clientOpts.onHeal?.(inner.record);
133
200
  opts.onNodeEvent?.(m.event);
134
201
  return;
135
202
  }
@@ -160,7 +227,7 @@ export function createWorkerAgent(clientOpts) {
160
227
  }
161
228
  terminal(m, done);
162
229
  };
163
- const onAbort = () => send({ kind: 'abort', runId });
230
+ const onAbort = () => { remoteAbort.abort(); send({ kind: 'abort', runId }); };
164
231
  w.addEventListener('message', onMessage);
165
232
  opts.signal?.addEventListener('abort', onAbort, { once: true });
166
233
  start(runId, send);
@@ -170,14 +237,14 @@ export function createWorkerAgent(clientOpts) {
170
237
  run(messages, opts = {}) {
171
238
  return begin(opts, (runId, send) => {
172
239
  alog('client:post-run', runId, { debug: isAgentLogging() });
173
- send({ kind: 'run', runId, messages, model: opts.model, system: opts.system, policy: opts.policy, ceiling: opts.ceiling, compression: opts.compression, debug: isAgentLogging(), fileMeta: currentFileMeta(), scope: getScope(), reviewEdits: !!opts.onEditReview, remoteTools: clientOpts.getRemoteTools?.() ?? [] });
240
+ send({ kind: 'run', runId, messages, model: opts.model, system: opts.system, policy: opts.policy, ceiling: opts.ceiling, compression: opts.compression, debug: isAgentLogging(), fileMeta: currentFileMeta(), scope: getScope(), graphConfig: clientOpts.getGraphConfig?.(), reviewEdits: !!opts.onEditReview, editorFile: opts.editorFile, remoteTools: clientOpts.getRemoteTools?.() ?? [], sessionId: opts.sessionId, toolNames: opts.toolNames });
174
241
  }, (m, done) => { if (m.kind === 'result')
175
242
  done(m.result); });
176
243
  },
177
244
  runNode(node, inputs, opts = {}) {
178
245
  return begin(opts, (runId, send) => {
179
246
  alog('client:post-run-node', runId, node.id, { debug: isAgentLogging() });
180
- send({ kind: 'run-node', runId, node, inputs, model: opts.model, policy: opts.policy, ceiling: opts.ceiling, compression: opts.compression, debug: isAgentLogging(), fileMeta: currentFileMeta(), scope: getScope(), remoteTools: clientOpts.getRemoteTools?.() ?? [] });
247
+ send({ kind: 'run-node', runId, node, inputs, model: opts.model, policy: opts.policy, ceiling: opts.ceiling, compression: opts.compression, debug: isAgentLogging(), fileMeta: currentFileMeta(), scope: getScope(), graphConfig: clientOpts.getGraphConfig?.(), remoteTools: clientOpts.getRemoteTools?.() ?? [] });
181
248
  }, (m, done) => { if (m.kind === 'node-result')
182
249
  done(m.result); });
183
250
  },