@openpond/evals 0.11.20 → 0.11.21

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 (69) hide show
  1. package/dist/connected-evidence/collector-coverage-contracts.js +160 -0
  2. package/dist/connected-evidence/index.js +1 -0
  3. package/dist/execution-contracts.js +1 -1
  4. package/dist/javascript-isolate-node.js +2 -1
  5. package/dist/javascript-isolate-process-source.js +1 -1
  6. package/dist/javascript-isolate-process.js +2 -1
  7. package/dist/javascript-isolate.js +2 -1
  8. package/dist/javascript-verifier-worker-source.js +1 -1
  9. package/dist/native-conversations/codex-window-inventory.js +97 -0
  10. package/dist/native-conversations/collector-acquisition.js +149 -0
  11. package/dist/native-conversations/collector-branches.js +1 -0
  12. package/dist/native-conversations/collector-calendar-gate.js +19 -0
  13. package/dist/native-conversations/collector-contracts.js +4 -3
  14. package/dist/native-conversations/collector-coverage.js +100 -0
  15. package/dist/native-conversations/collector-cron.js +43 -0
  16. package/dist/native-conversations/collector-schedule.js +61 -0
  17. package/dist/native-conversations/collector-service-files.js +51 -0
  18. package/dist/native-conversations/collector-snapshots.js +70 -0
  19. package/dist/native-conversations/collector-source-cache.js +41 -0
  20. package/dist/native-conversations/collector-store.js +43 -8
  21. package/dist/native-conversations/collector.js +189 -261
  22. package/dist/native-conversations/history.js +9 -0
  23. package/dist/native-conversations/index.js +1 -0
  24. package/dist/native-conversations/location.js +4 -2
  25. package/dist/native-conversations/supervisor.js +131 -81
  26. package/dist/sql-execution-node.js +2 -1
  27. package/dist/tasksets.js +1 -1
  28. package/dist/types/connected-evidence/collector-coverage-contracts.d.ts +98 -0
  29. package/dist/types/connected-evidence/collector-coverage-contracts.d.ts.map +1 -0
  30. package/dist/types/connected-evidence/index.d.ts +1 -0
  31. package/dist/types/connected-evidence/index.d.ts.map +1 -1
  32. package/dist/types/javascript-isolate-node.d.ts.map +1 -1
  33. package/dist/types/javascript-isolate-process.d.ts.map +1 -1
  34. package/dist/types/javascript-isolate.d.ts.map +1 -1
  35. package/dist/types/native-conversations/codex-window-inventory.d.ts +12 -0
  36. package/dist/types/native-conversations/codex-window-inventory.d.ts.map +1 -0
  37. package/dist/types/native-conversations/collector-acquisition.d.ts +17 -0
  38. package/dist/types/native-conversations/collector-acquisition.d.ts.map +1 -0
  39. package/dist/types/native-conversations/collector-branches.d.ts.map +1 -1
  40. package/dist/types/native-conversations/collector-calendar-gate.d.ts +9 -0
  41. package/dist/types/native-conversations/collector-calendar-gate.d.ts.map +1 -0
  42. package/dist/types/native-conversations/collector-contracts.d.ts +41 -5
  43. package/dist/types/native-conversations/collector-contracts.d.ts.map +1 -1
  44. package/dist/types/native-conversations/collector-coverage.d.ts +62 -0
  45. package/dist/types/native-conversations/collector-coverage.d.ts.map +1 -0
  46. package/dist/types/native-conversations/collector-cron.d.ts +20 -0
  47. package/dist/types/native-conversations/collector-cron.d.ts.map +1 -0
  48. package/dist/types/native-conversations/collector-schedule.d.ts +13 -0
  49. package/dist/types/native-conversations/collector-schedule.d.ts.map +1 -0
  50. package/dist/types/native-conversations/collector-service-files.d.ts +20 -0
  51. package/dist/types/native-conversations/collector-service-files.d.ts.map +1 -0
  52. package/dist/types/native-conversations/collector-snapshots.d.ts +25 -0
  53. package/dist/types/native-conversations/collector-snapshots.d.ts.map +1 -0
  54. package/dist/types/native-conversations/collector-source-cache.d.ts +31 -0
  55. package/dist/types/native-conversations/collector-source-cache.d.ts.map +1 -0
  56. package/dist/types/native-conversations/collector-store.d.ts +11 -2
  57. package/dist/types/native-conversations/collector-store.d.ts.map +1 -1
  58. package/dist/types/native-conversations/collector.d.ts +5 -1
  59. package/dist/types/native-conversations/collector.d.ts.map +1 -1
  60. package/dist/types/native-conversations/history.d.ts +7 -0
  61. package/dist/types/native-conversations/history.d.ts.map +1 -1
  62. package/dist/types/native-conversations/index.d.ts +1 -0
  63. package/dist/types/native-conversations/index.d.ts.map +1 -1
  64. package/dist/types/native-conversations/location.d.ts.map +1 -1
  65. package/dist/types/native-conversations/supervisor.d.ts +4 -3
  66. package/dist/types/native-conversations/supervisor.d.ts.map +1 -1
  67. package/dist/types/sql-execution-node.d.ts.map +1 -1
  68. package/package.json +3 -2
  69. package/schemas/learning/v1/package.schema.json +0 -1
@@ -0,0 +1,62 @@
1
+ import { type CollectorCoverageManifest, type CollectorCoverageSession } from "../connected-evidence/collector-coverage-contracts.js";
2
+ import type { CollectorConnection } from "./collector-contracts.js";
3
+ import type { CollectorStore } from "./collector-store.js";
4
+ /** Retains the latest acquisition inventory independently of queue receipts.
5
+ * Native paths are hashed; this authority never stores transcript bytes. */
6
+ export declare class CollectorCoverage {
7
+ private readonly store;
8
+ constructor(store: CollectorStore);
9
+ begin(connection: CollectorConnection, jobId: string, startedAt: string, to: string): void;
10
+ record(connectionId: string, session: CollectorCoverageSession): void;
11
+ manifest(connectionId: string): CollectorCoverageManifest | null;
12
+ finish(connectionId: string, listingComplete: boolean): {
13
+ schemaVersion: "openpond.collectorCoverageManifest.v1";
14
+ jobId: string;
15
+ connectionId: string;
16
+ connectionRevision: number;
17
+ machineId: string;
18
+ sourceInstanceId: string;
19
+ from: string | null;
20
+ to: string;
21
+ startedAt: string;
22
+ finishedAt: string | null;
23
+ listingComplete: boolean;
24
+ pendingOperations: number;
25
+ sessions: {
26
+ sourceKeyHash: string;
27
+ nativeRevisionHash: string | null;
28
+ state: "failed" | "skipped" | "reading" | "admitted";
29
+ reason: "no_eligible_boundaries" | "native_session_not_ready" | "source_read_failed" | "source_revision_unavailable" | null;
30
+ unknownTimeBoundaries: number;
31
+ normalized: {
32
+ sessionHash: string;
33
+ boundaries: {
34
+ id: string;
35
+ inputHash: string;
36
+ revisionHash: string;
37
+ occurredAt: string;
38
+ }[];
39
+ }[];
40
+ }[];
41
+ };
42
+ summary(connectionId: string): {
43
+ jobId: string;
44
+ manifestHash: string;
45
+ sourceInventoryHash: string;
46
+ eligibleBoundaryHash: string;
47
+ from: string | null;
48
+ to: string;
49
+ finishedAt: string | null;
50
+ conversations: number;
51
+ eligibleTurns: number;
52
+ admittedSessions: number;
53
+ skippedSessions: number;
54
+ failedSessions: number;
55
+ unknownTimeBoundaries: number;
56
+ pendingOperations: number;
57
+ listingComplete: boolean;
58
+ complete: boolean;
59
+ } | null;
60
+ static sourceKey(scanKey: string): string;
61
+ }
62
+ //# sourceMappingURL=collector-coverage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector-coverage.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/collector-coverage.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC9B,MAAM,uDAAuD,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;4EAC4E;AAC5E,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,cAAc;IAKlD,KAAK,CACH,UAAU,EAAE,mBAAmB,EAC/B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM;IA6BZ,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB;IA6C9D,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,yBAAyB,GAAG,IAAI;IAiBhE,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAarD,OAAO,CAAC,YAAY,EAAE,MAAM;;;;;;;;;;;;;;;;;;IAI5B,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM;CAGjC"}
@@ -0,0 +1,20 @@
1
+ export interface ImportCalendar {
2
+ minute: number[];
3
+ hour: number[];
4
+ month: number[];
5
+ dayOfMonth: number[];
6
+ dayOfWeek: number[];
7
+ anyDayOfMonth: boolean;
8
+ anyDayOfWeek: boolean;
9
+ }
10
+ /** Standard five-field cron: numbers, names, wildcards, lists, ranges and steps.
11
+ * Excludes seconds and Quartz/randomized extensions so runs stay deterministic. */
12
+ export declare function parseImportCron(expression: string, now?: Date): {
13
+ expression: string;
14
+ calendar: ImportCalendar;
15
+ interval: import("cron-parser").CronExpression;
16
+ };
17
+ /** Deliberately self-contained: the same function is embedded in the tiny OS
18
+ * launcher, which has no package imports and never reads source transcripts. */
19
+ export declare function importCalendarMatches(calendar: ImportCalendar, now: Date): boolean;
20
+ //# sourceMappingURL=collector-cron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector-cron.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/collector-cron.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;mFACmF;AACnF,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAa;;;;EA0BnE;AAED;gFACgF;AAChF,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAOlF"}
@@ -0,0 +1,13 @@
1
+ import type { CollectorSchedule } from "./collector-contracts.js";
2
+ export declare const SYNC_WEEKDAYS: readonly ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
3
+ /** Calendar times follow the host timezone, including daylight-saving changes. */
4
+ export declare function syncTime(value: string): string;
5
+ export declare function validateCollectorSchedule(schedule: CollectorSchedule): CollectorSchedule;
6
+ export declare function scheduleExpression(schedule: CollectorSchedule): string;
7
+ export declare function scheduleDescription(schedule: CollectorSchedule): string;
8
+ export declare function localDay(now: Date): string;
9
+ export declare function scheduledMinute(now: Date): string;
10
+ export declare function nextScheduledSync(schedule: CollectorSchedule, now?: Date): string;
11
+ /** Reject delayed wake deliveries and duplicate launches within a scheduled minute. */
12
+ export declare function scheduledSyncDue(schedule: CollectorSchedule | null, lastMinute: string | null, now?: Date): boolean;
13
+ //# sourceMappingURL=collector-schedule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector-schedule.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/collector-schedule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,eAAO,MAAM,aAAa,4DAA6D,CAAC;AAExF,kFAAkF;AAClF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI9C;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,iBAAiB,CAYxF;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAKtE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,UAI9D;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,IAAI,UAEjC;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,IAAI,UAExC;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,OAAa,GAAG,MAAM,CASvF;AAED,uFAAuF;AACvF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,OAAa,WAG/G"}
@@ -0,0 +1,20 @@
1
+ import type { CollectorSchedule } from "./collector-contracts.js";
2
+ export declare const xml: (value: string) => string;
3
+ export declare const systemdQuote: (value: string) => string;
4
+ export declare const windowsQuote: (value: string) => string;
5
+ export declare function collectorServiceFiles(input: {
6
+ name: string;
7
+ executable: string;
8
+ args: string[];
9
+ gatePath: string;
10
+ environment: [string, string][];
11
+ schedules: CollectorSchedule[];
12
+ }): {
13
+ gate: string;
14
+ service: string;
15
+ timer: string;
16
+ plist: string;
17
+ windowsTask(user: string, script: string): string;
18
+ powershell: string;
19
+ };
20
+ //# sourceMappingURL=collector-service-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector-service-files.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/collector-service-files.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAIlE,eAAO,MAAM,GAAG,GAAI,OAAO,MAAM,WAAyG,CAAC;AAC3I,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,WAAgH,CAAC;AAC3J,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,WAA2E,CAAC;AAEtH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAAC,SAAS,EAAE,iBAAiB,EAAE,CAAC;CACrI;;;;;sBAmCqB,MAAM,UAAU,MAAM;;EAK3C"}
@@ -0,0 +1,25 @@
1
+ import type { DatabaseSync } from "node:sqlite";
2
+ import type { CollectorAdmission } from "./collector-contracts.js";
3
+ export declare class CollectorQueueFullError extends Error {
4
+ constructor();
5
+ }
6
+ /** Batches reference an immutable source snapshot instead of duplicating the
7
+ * whole transcript once for every twenty selected turns. */
8
+ export declare class CollectorSnapshots {
9
+ private readonly database;
10
+ constructor(database: DatabaseSync);
11
+ prepare(files: CollectorAdmission["files"]): {
12
+ hash: string;
13
+ payload: string;
14
+ bytes: number;
15
+ };
16
+ exists(hash: string): boolean;
17
+ retain(id: string, snapshot: ReturnType<CollectorSnapshots["prepare"]>): void;
18
+ files(id: string): CollectorAdmission["files"];
19
+ bytes(connectionId?: string): number;
20
+ collect(): void;
21
+ /** Upgrade retained queues only in the owned worker, never in a status read.
22
+ * Each operation commits independently so interruption preserves all work. */
23
+ migrate(cancelled: () => boolean): Promise<void>;
24
+ }
25
+ //# sourceMappingURL=collector-snapshots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector-snapshots.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/collector-snapshots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,qBAAa,uBAAwB,SAAQ,KAAK;;CAEjD;AAED;4DAC4D;AAC5D,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,YAAY;IAOnD,OAAO,CAAC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC;;;;;IAI1C,MAAM,CAAC,IAAI,EAAE,MAAM;IAGnB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAItE,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC;IAK9C,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM;IAK3B,OAAO;IAIP;kFAC8E;IACxE,OAAO,CAAC,SAAS,EAAE,MAAM,OAAO;CAkBvC"}
@@ -0,0 +1,31 @@
1
+ import { type CollectorCoverageManifest, type CollectorCoverageSession } from "../connected-evidence/collector-coverage-contracts.js";
2
+ import type { CollectorConnection } from "./collector-contracts.js";
3
+ import type { CollectorStore } from "./collector-store.js";
4
+ /** Reuse a settled source read only for the same revision and event-time window.
5
+ * Admission remains owned by the durable queue and boundary checkpoints. */
6
+ export declare class CollectorSourceCache {
7
+ private readonly store;
8
+ constructor(store: CollectorStore);
9
+ private selection;
10
+ read(connection: CollectorConnection, until: string, sessionKey: string, revision: string): {
11
+ sourceKeyHash: string;
12
+ nativeRevisionHash: string | null;
13
+ state: "failed" | "skipped" | "reading" | "admitted";
14
+ reason: "no_eligible_boundaries" | "native_session_not_ready" | "source_read_failed" | "source_revision_unavailable" | null;
15
+ unknownTimeBoundaries: number;
16
+ normalized: {
17
+ sessionHash: string;
18
+ boundaries: {
19
+ id: string;
20
+ inputHash: string;
21
+ revisionHash: string;
22
+ occurredAt: string;
23
+ }[];
24
+ }[];
25
+ } | null;
26
+ retain(connection: CollectorConnection, until: string, sessionKey: string, revision: string, raw: CollectorCoverageSession): void;
27
+ /** Earlier collectors retained both scan revisions and settled coverage.
28
+ * Preserve that evidence when upgrading a partially completed import. */
29
+ seed(connection: CollectorConnection, until: string, prior: CollectorCoverageManifest | null): void;
30
+ }
31
+ //# sourceMappingURL=collector-source-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector-source-cache.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/collector-source-cache.ts"],"names":[],"mappings":"AACA,OAAO,EAAkC,KAAK,yBAAyB,EAAE,KAAK,wBAAwB,EAAE,MAAM,uDAAuD,CAAC;AACtK,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;4EAC4E;AAC5E,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,cAAc;IAMlD,OAAO,CAAC,SAAS;IAKjB,IAAI,CAAC,UAAU,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;IAOzF,MAAM,CAAC,UAAU,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,wBAAwB;IAS1H;6EACyE;IACzE,IAAI,CAAC,UAAU,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,GAAG,IAAI;CAW7F"}
@@ -1,9 +1,13 @@
1
1
  import { DatabaseSync } from "node:sqlite";
2
- import type { CollectorAdmission, CollectorConnection, CollectorStatus } from "./collector-contracts.js";
2
+ import type { CollectorAdmission, CollectorConnection, CollectorStatus, CollectorSchedule } from "./collector-contracts.js";
3
3
  import { CollectorProgress } from "./collector-progress.js";
4
+ import { CollectorCoverage } from "./collector-coverage.js";
5
+ import { CollectorSnapshots } from "./collector-snapshots.js";
4
6
  export declare class CollectorStore {
5
7
  readonly database: DatabaseSync;
6
8
  readonly progress: CollectorProgress;
9
+ readonly snapshots: CollectorSnapshots;
10
+ readonly coverage: CollectorCoverage;
7
11
  private constructor();
8
12
  static open(directory: string): Promise<CollectorStore>;
9
13
  close(): void;
@@ -19,13 +23,18 @@ export declare class CollectorStore {
19
23
  enqueue(entry: CollectorAdmission, revisions: {
20
24
  id: string;
21
25
  revision: string;
22
- }[], progressSessionKey?: string): void;
26
+ }[], progressSessionKey?: string, snapshot?: {
27
+ hash: string;
28
+ payload: string;
29
+ bytes: number;
30
+ }): void;
23
31
  next(connectionId: string): {
24
32
  entry: CollectorAdmission;
25
33
  attempts: number;
26
34
  } | null;
27
35
  acknowledge(entry: CollectorAdmission): void;
28
36
  retry(id: string, attempts: number): void;
37
+ schedule(id: string): CollectorSchedule | null;
29
38
  status(): CollectorStatus;
30
39
  }
31
40
  //# sourceMappingURL=collector-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collector-store.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/collector-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,qBAAa,cAAc;IAEL,QAAQ,CAAC,QAAQ,EAAE,YAAY;IADnD,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,OAAO;WAGM,IAAI,CAAC,SAAS,EAAE,MAAM;IAgBnC,KAAK;IAGL,OAAO,CAAC,GAAG,EAAE,MAAM;IAMnB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAO9B,WAAW,IAAI,mBAAmB,EAAE;IAMpC,GAAG,CAAC,UAAU,EAAE,mBAAmB;IAgEnC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAKxC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM;IAUlB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IASxE,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAOlE,OAAO,CACL,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM;IAUlB,OAAO,CACL,KAAK,EAAE,kBAAkB,EACzB,SAAS,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,EAC7C,kBAAkB,CAAC,EAAE,MAAM;IA6C7B,IAAI,CAAC,YAAY,EAAE,MAAM;eAQyB,kBAAkB;;;IAKpE,WAAW,CAAC,KAAK,EAAE,kBAAkB;IA4BrC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAUlC,MAAM,IAAI,eAAe;CAsD1B"}
1
+ {"version":3,"file":"collector-store.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/collector-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EAEf,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAA2B,MAAM,0BAA0B,CAAC;AAGvF,qBAAa,cAAc;IAIL,QAAQ,CAAC,QAAQ,EAAE,YAAY;IAHnD,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,OAAO;WAKM,IAAI,CAAC,SAAS,EAAE,MAAM;IAgBnC,KAAK;IAGL,OAAO,CAAC,GAAG,EAAE,MAAM;IAMnB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAO9B,WAAW,IAAI,mBAAmB,EAAE;IAMpC,GAAG,CAAC,UAAU,EAAE,mBAAmB;IAmEnC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAKxC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM;IAUlB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IASxE,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAOlE,OAAO,CACL,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM;IAUlB,OAAO,CACL,KAAK,EAAE,kBAAkB,EACzB,SAAS,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,EAC7C,kBAAkB,CAAC,EAAE,MAAM,EAC3B,QAAQ;;;;KAAsC;IAiDhD,IAAI,CAAC,YAAY,EAAE,MAAM;eAQ6E,kBAAkB;;;IAKxH,WAAW,CAAC,KAAK,EAAE,kBAAkB;IA6BrC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAUlC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAI9C,MAAM,IAAI,eAAe;CAoE1B"}
@@ -1,8 +1,12 @@
1
1
  import { type CollectorTransport } from "./collector-contracts.js";
2
- /** Supervised single owner: acquisition and admission checkpoints survive monitor/service exits. */
2
+ /** A single owned, bounded job. No filesystem watchers or idle network polling. */
3
3
  export declare function runCollector(input: {
4
4
  directory: string;
5
5
  transport: CollectorTransport;
6
6
  signal: AbortSignal;
7
+ connectionIds?: string[];
8
+ trigger?: "manual" | "scheduled";
9
+ maxDurationMs?: number;
10
+ until?: string;
7
11
  }): Promise<void>;
8
12
  //# sourceMappingURL=collector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/collector.ts"],"names":[],"mappings":"AAaA,OAAO,EAGL,KAAK,kBAAkB,EAExB,MAAM,0BAA0B,CAAC;AAElC,oGAAoG;AACpG,wBAAsB,YAAY,CAAC,KAAK,EAAE;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,MAAM,EAAE,WAAW,CAAC;CACrB,iBAoXA"}
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/collector.ts"],"names":[],"mappings":"AAQA,OAAO,EAAgD,KAAK,kBAAkB,EAAkD,MAAM,0BAA0B,CAAC;AAEjK,mFAAmF;AACnF,wBAAsB,YAAY,CAAC,KAAK,EAAE;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,iBAiMA"}
@@ -1,4 +1,11 @@
1
1
  import { type NativeSession, type NativeSource, type NativeBranchInspection, type NativeBranchAnchor } from "./contracts.js";
2
+ export declare function inspectSessionWindow(source: NativeSource, session: NativeSession, input: {
3
+ since: string | null;
4
+ until: string;
5
+ check(): Promise<void>;
6
+ }): Promise<{
7
+ sha256: string;
8
+ } | null>;
2
9
  export declare function listSessions(source: NativeSource, input?: {
3
10
  since?: string;
4
11
  cursor?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/history.ts"],"names":[],"mappings":"AAiBA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAwFxB,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,KAAK,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO;;;GAoJhE;AACD,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAQ1H;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,aAAa,EACtB,KAAK,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,kBAAkB,CAAA;CAAO;;;;;;;GAiE1G"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/history.ts"],"names":[],"mappings":"AAkBA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAqCxB,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE;IAC9F,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;;UAKA;AAqDD,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,KAAK,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO;;;GAoJhE;AACD,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAQ1H;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,aAAa,EACtB,KAAK,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,kBAAkB,CAAA;CAAO;;;;;;;GAiE1G"}
@@ -9,4 +9,5 @@ export * from "./supervisor.js";
9
9
  export * from "./location.js";
10
10
  export * from "./collector-branches.js";
11
11
  export * from "./collector-destinations.js";
12
+ export * from "./collector-schedule.js";
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/index.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/index.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/location.ts"],"names":[],"mappings":"AAIA,wBAAgB,kBAAkB,CAChC,IAAI,SAA4D,UAGjE;AACD,wBAAsB,kBAAkB,CAAC,SAAS,SAAuB,mBAoBxE"}
1
+ {"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/location.ts"],"names":[],"mappings":"AAIA,wBAAgB,kBAAkB,CAChC,IAAI,SAA+B,UAKpC;AACD,wBAAsB,kBAAkB,CAAC,SAAS,SAAuB,mBAoBxE"}
@@ -1,4 +1,4 @@
1
- import type { CollectorConnection } from "./collector-contracts.js";
1
+ import type { CollectorConnection, CollectorSchedule } from "./collector-contracts.js";
2
2
  export interface CollectorServiceSetup {
3
3
  directory: string;
4
4
  executable: string;
@@ -9,13 +9,14 @@ export interface CollectorServiceSetup {
9
9
  export declare function configureCollector(directory: string, connection: CollectorConnection): Promise<void>;
10
10
  export declare function collectorStatus(directory: string): Promise<import("./collector-contracts.js").CollectorStatus>;
11
11
  export declare function controlCollector(directory: string, action: "start" | "stop" | "sync" | "pause" | "resume" | "disconnect", connectionId?: string): Promise<import("./collector-contracts.js").CollectorStatus>;
12
- /** Per-user logon supervision. Installing does not override the retained Stop intent. */
12
+ /** Install calendar triggers only. Registration never launches an import. */
13
13
  export declare function installCollectorService(input: CollectorServiceSetup): Promise<{
14
14
  name: string;
15
15
  platform: "darwin" | "linux" | "win32";
16
16
  status: import("./collector-contracts.js").CollectorStatus;
17
17
  }>;
18
+ /** Serialize OS/config updates; a failed installation restores retained intent. */
19
+ export declare function setCollectorSchedule(input: CollectorServiceSetup, connectionId: string, schedule: CollectorSchedule | null): Promise<import("./collector-contracts.js").CollectorStatus>;
18
20
  /** Removing supervision preserves receipts, pending uploads and retained datasets. */
19
21
  export declare function uninstallCollectorService(directory: string, home?: string): Promise<import("./collector-contracts.js").CollectorStatus>;
20
- export declare function startCollectorService(directory: string): Promise<import("./collector-contracts.js").CollectorStatus>;
21
22
  //# sourceMappingURL=supervisor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/supervisor.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAiBpE,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CACnB,MAAM,CAAC,eAAe,GAAG,sBAAsB,GAAG,0BAA0B,EAAE,MAAM,CAAC,CACtF,CAAC;CACH;AAID,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,mBAAmB,iBAQhC;AACD,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,+DAOtD;AACD,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,EACrE,YAAY,CAAC,EAAE,MAAM,+DA0BtB;AACD,yFAAyF;AACzF,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,qBAAqB;;;;GA+FzE;AACD,sFAAsF;AACtF,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,EACjB,IAAI,SAAY,+DA4BjB;AACD,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,+DAoB5D"}
1
+ {"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/supervisor.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AASvF,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CACnB,MAAM,CAAC,eAAe,GAAG,sBAAsB,GAAG,0BAA0B,EAAE,MAAM,CAAC,CACtF,CAAC;CACH;AAID,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,mBAAmB,iBAQhC;AACD,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,+DAOtD;AACD,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,EACrE,YAAY,CAAC,EAAE,MAAM,+DA0BtB;AACD,6EAA6E;AAC7E,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,qBAAqB;;;;GA0DzE;AAYD,mFAAmF;AACnF,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,+DA+BhI;AACD,sFAAsF;AACtF,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,EACjB,IAAI,SAAY,+DA6BjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"sql-execution-node.d.ts","sourceRoot":"","sources":["../../../../src/sql-execution-node.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuD,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACrJ,cAAc,6BAA6B,CAAC;AAE5C,kFAAkF;AAClF,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,mBAAmB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAsCvJ"}
1
+ {"version":3,"file":"sql-execution-node.d.ts","sourceRoot":"","sources":["../../../../src/sql-execution-node.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuD,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACrJ,cAAc,6BAA6B,CAAC;AAE5C,kFAAkF;AAClF,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,mBAAmB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAwCvJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openpond/evals",
3
- "version": "0.11.20",
3
+ "version": "0.11.21",
4
4
  "description": "Portable Tasksets, graders, evaluation runs, receipts, conformance fixtures, and Work evidence for OpenPond Harnesses",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -167,7 +167,7 @@
167
167
  },
168
168
  "scripts": {
169
169
  "build": "tsx scripts/generate-task-schema-validator.ts && tsx scripts/generate-telemetry-schemas.ts && tsx scripts/generate-learning-schemas.ts && tsx scripts/build.ts",
170
- "typecheck": "tsc --noEmit --project tsconfig.json",
170
+ "typecheck": "node ../../scripts/run-typescript.mjs tsc --noEmit --project tsconfig.json",
171
171
  "test": "vitest run --root ../.. --config vitest.config.ts --project evals",
172
172
  "check:api": "tsx scripts/check-public-package.ts",
173
173
  "check:consumer": "tsx scripts/verify-packed-consumer.ts",
@@ -178,6 +178,7 @@
178
178
  "@jitl/quickjs-singlefile-cjs-release-sync": "0.32.0",
179
179
  "@sqlite.org/sqlite-wasm": "3.53.0-build1",
180
180
  "ajv": "^8.20.0",
181
+ "cron-parser": "^5.6.2",
181
182
  "quickjs-emscripten-core": "0.32.0",
182
183
  "zod": "^4.1.13"
183
184
  },
@@ -158,7 +158,6 @@
158
158
  }
159
159
  },
160
160
  "graders": {
161
- "minItems": 1,
162
161
  "maxItems": 1000,
163
162
  "type": "array",
164
163
  "items": {