@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.
- package/dist/connected-evidence/collector-coverage-contracts.js +160 -0
- package/dist/connected-evidence/index.js +1 -0
- package/dist/execution-contracts.js +1 -1
- package/dist/javascript-isolate-node.js +2 -1
- package/dist/javascript-isolate-process-source.js +1 -1
- package/dist/javascript-isolate-process.js +2 -1
- package/dist/javascript-isolate.js +2 -1
- package/dist/javascript-verifier-worker-source.js +1 -1
- package/dist/native-conversations/codex-window-inventory.js +97 -0
- package/dist/native-conversations/collector-acquisition.js +149 -0
- package/dist/native-conversations/collector-branches.js +1 -0
- package/dist/native-conversations/collector-calendar-gate.js +19 -0
- package/dist/native-conversations/collector-contracts.js +4 -3
- package/dist/native-conversations/collector-coverage.js +100 -0
- package/dist/native-conversations/collector-cron.js +43 -0
- package/dist/native-conversations/collector-schedule.js +61 -0
- package/dist/native-conversations/collector-service-files.js +51 -0
- package/dist/native-conversations/collector-snapshots.js +70 -0
- package/dist/native-conversations/collector-source-cache.js +41 -0
- package/dist/native-conversations/collector-store.js +43 -8
- package/dist/native-conversations/collector.js +189 -261
- package/dist/native-conversations/history.js +9 -0
- package/dist/native-conversations/index.js +1 -0
- package/dist/native-conversations/location.js +4 -2
- package/dist/native-conversations/supervisor.js +131 -81
- package/dist/sql-execution-node.js +2 -1
- package/dist/tasksets.js +1 -1
- package/dist/types/connected-evidence/collector-coverage-contracts.d.ts +98 -0
- package/dist/types/connected-evidence/collector-coverage-contracts.d.ts.map +1 -0
- package/dist/types/connected-evidence/index.d.ts +1 -0
- package/dist/types/connected-evidence/index.d.ts.map +1 -1
- package/dist/types/javascript-isolate-node.d.ts.map +1 -1
- package/dist/types/javascript-isolate-process.d.ts.map +1 -1
- package/dist/types/javascript-isolate.d.ts.map +1 -1
- package/dist/types/native-conversations/codex-window-inventory.d.ts +12 -0
- package/dist/types/native-conversations/codex-window-inventory.d.ts.map +1 -0
- package/dist/types/native-conversations/collector-acquisition.d.ts +17 -0
- package/dist/types/native-conversations/collector-acquisition.d.ts.map +1 -0
- package/dist/types/native-conversations/collector-branches.d.ts.map +1 -1
- package/dist/types/native-conversations/collector-calendar-gate.d.ts +9 -0
- package/dist/types/native-conversations/collector-calendar-gate.d.ts.map +1 -0
- package/dist/types/native-conversations/collector-contracts.d.ts +41 -5
- package/dist/types/native-conversations/collector-contracts.d.ts.map +1 -1
- package/dist/types/native-conversations/collector-coverage.d.ts +62 -0
- package/dist/types/native-conversations/collector-coverage.d.ts.map +1 -0
- package/dist/types/native-conversations/collector-cron.d.ts +20 -0
- package/dist/types/native-conversations/collector-cron.d.ts.map +1 -0
- package/dist/types/native-conversations/collector-schedule.d.ts +13 -0
- package/dist/types/native-conversations/collector-schedule.d.ts.map +1 -0
- package/dist/types/native-conversations/collector-service-files.d.ts +20 -0
- package/dist/types/native-conversations/collector-service-files.d.ts.map +1 -0
- package/dist/types/native-conversations/collector-snapshots.d.ts +25 -0
- package/dist/types/native-conversations/collector-snapshots.d.ts.map +1 -0
- package/dist/types/native-conversations/collector-source-cache.d.ts +31 -0
- package/dist/types/native-conversations/collector-source-cache.d.ts.map +1 -0
- package/dist/types/native-conversations/collector-store.d.ts +11 -2
- package/dist/types/native-conversations/collector-store.d.ts.map +1 -1
- package/dist/types/native-conversations/collector.d.ts +5 -1
- package/dist/types/native-conversations/collector.d.ts.map +1 -1
- package/dist/types/native-conversations/history.d.ts +7 -0
- package/dist/types/native-conversations/history.d.ts.map +1 -1
- package/dist/types/native-conversations/index.d.ts +1 -0
- package/dist/types/native-conversations/index.d.ts.map +1 -1
- package/dist/types/native-conversations/location.d.ts.map +1 -1
- package/dist/types/native-conversations/supervisor.d.ts +4 -3
- package/dist/types/native-conversations/supervisor.d.ts.map +1 -1
- package/dist/types/sql-execution-node.d.ts.map +1 -1
- package/package.json +3 -2
- package/schemas/learning/v1/package.schema.json +0 -1
|
@@ -7,6 +7,8 @@ import { homedir } from "node:os";
|
|
|
7
7
|
import { isAbsolute, join } from "node:path";
|
|
8
8
|
import { contentHash } from "@openpond/harness";
|
|
9
9
|
import { CollectorStore } from "./collector-store.js";
|
|
10
|
+
import { validateCollectorSchedule } from "./collector-schedule.js";
|
|
11
|
+
import { collectorServiceFiles } from "./collector-service-files.js";
|
|
10
12
|
const execute = promisify(execFile);
|
|
11
13
|
const command = async (file, args) => {
|
|
12
14
|
await execute(file, args, {
|
|
@@ -15,12 +17,6 @@ const command = async (file, args) => {
|
|
|
15
17
|
windowsHide: true,
|
|
16
18
|
});
|
|
17
19
|
};
|
|
18
|
-
const xml = (value) => value
|
|
19
|
-
.replace(/&/gu, "&")
|
|
20
|
-
.replace(/</gu, "<")
|
|
21
|
-
.replace(/>/gu, ">")
|
|
22
|
-
.replace(/"/gu, """);
|
|
23
|
-
const systemd = (value) => `"${value.replace(/\\/gu, "\\\\").replace(/"/gu, '\\"').replace(/%/gu, "%%").replace(/\$/gu, "$$")}"`;
|
|
24
20
|
function identity(directory) {
|
|
25
21
|
return `openpond-import-${contentHash(directory).slice(0, 16)}`;
|
|
26
22
|
}
|
|
@@ -70,86 +66,154 @@ export async function controlCollector(directory, action, connectionId) {
|
|
|
70
66
|
store.close();
|
|
71
67
|
}
|
|
72
68
|
}
|
|
73
|
-
/**
|
|
69
|
+
/** Install calendar triggers only. Registration never launches an import. */
|
|
74
70
|
export async function installCollectorService(input) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
throw new Error("
|
|
71
|
+
// Reloading a launchd calendar also terminates its active process. Preserve
|
|
72
|
+
// the current import instead of silently cancelling it during a settings edit.
|
|
73
|
+
if (process.platform === "darwin" && (await collectorStatus(input.directory)).running)
|
|
74
|
+
throw new Error("Wait for the current import to finish, or cancel it, before changing its macOS schedule.");
|
|
75
|
+
if (!isAbsolute(input.directory) || !isAbsolute(input.executable) ||
|
|
76
|
+
[input.directory, input.executable, ...input.args].some(value => /[\r\n\0]/u.test(value)))
|
|
77
|
+
throw new Error("Collector jobs require absolute paths and single-line arguments.");
|
|
79
78
|
const retainedRuntime = await retainAppImageRuntime(input);
|
|
80
79
|
if (retainedRuntime)
|
|
81
80
|
input = { ...input, ...retainedRuntime, environment: { ...input.environment, ELECTRON_RUN_AS_NODE: "1", APPIMAGE_EXTRACT_AND_RUN: "1" } };
|
|
82
81
|
const environment = Object.entries(input.environment ?? {});
|
|
83
|
-
if (environment.some(([key, value]) => !["OPENPOND_HOME", "ELECTRON_RUN_AS_NODE", "APPIMAGE_EXTRACT_AND_RUN"].includes(key) ||
|
|
84
|
-
typeof value !== "string" ||
|
|
85
|
-
/[\r\n\0]/u.test(value)))
|
|
82
|
+
if (environment.some(([key, value]) => !["OPENPOND_HOME", "ELECTRON_RUN_AS_NODE", "APPIMAGE_EXTRACT_AND_RUN"].includes(key) || typeof value !== "string" || /[\r\n\0]/u.test(value)))
|
|
86
83
|
throw new Error("Unsupported service environment setting.");
|
|
87
84
|
const home = input.home ?? homedir(), name = identity(input.directory);
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
85
|
+
const store = await CollectorStore.open(input.directory);
|
|
86
|
+
let schedules;
|
|
87
|
+
try {
|
|
88
|
+
schedules = store.connections().map(connection => store.schedule(connection.id)).filter((schedule) => schedule !== null);
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
store.close();
|
|
92
|
+
}
|
|
93
|
+
const gatePath = join(input.directory, "calendar-gate.cjs");
|
|
94
|
+
const files = collectorServiceFiles({ name, gatePath, executable: input.executable,
|
|
95
|
+
args: [...input.args, "import", "service", "run", "--scheduled", "--collector-dir", input.directory], environment, schedules });
|
|
96
|
+
await atomicServiceFile(gatePath, files.gate, { mode: 0o600 });
|
|
96
97
|
if (process.platform === "linux") {
|
|
97
98
|
const directory = join(home, ".config/systemd/user");
|
|
98
99
|
await mkdir(directory, { recursive: true, mode: 0o700 });
|
|
99
|
-
|
|
100
|
-
await
|
|
101
|
-
await
|
|
100
|
+
// Remove the old login enablement without stopping an already owned job.
|
|
101
|
+
await optionalCommand("systemctl", ["--user", "disable", `${name}.service`]);
|
|
102
|
+
await atomicServiceFile(join(directory, `${name}.service`), files.service, { mode: 0o600 });
|
|
103
|
+
if (schedules.length) {
|
|
104
|
+
await atomicServiceFile(join(directory, `${name}.timer`), files.timer, { mode: 0o600 });
|
|
105
|
+
await command("systemctl", ["--user", "daemon-reload"]);
|
|
106
|
+
await command("systemctl", ["--user", "enable", "--now", `${name}.timer`]);
|
|
107
|
+
await command("systemctl", ["--user", "restart", `${name}.timer`]);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
await optionalCommand("systemctl", ["--user", "disable", "--now", `${name}.timer`]);
|
|
111
|
+
await rm(join(directory, `${name}.timer`), { force: true });
|
|
112
|
+
await command("systemctl", ["--user", "daemon-reload"]);
|
|
113
|
+
}
|
|
102
114
|
}
|
|
103
115
|
else if (process.platform === "darwin") {
|
|
104
|
-
const directory = join(home, "Library/LaunchAgents");
|
|
116
|
+
const directory = join(home, "Library/LaunchAgents"), file = join(directory, `${name}.plist`);
|
|
105
117
|
await mkdir(directory, { recursive: true, mode: 0o700 });
|
|
106
|
-
|
|
107
|
-
|
|
118
|
+
await optionalCommand("launchctl", ["bootout", `gui/${process.getuid()}/${name}`]);
|
|
119
|
+
if (schedules.length) {
|
|
120
|
+
await atomicServiceFile(file, files.plist, { mode: 0o600 });
|
|
121
|
+
await command("launchctl", ["bootstrap", `gui/${process.getuid()}`, file]);
|
|
122
|
+
}
|
|
123
|
+
else
|
|
124
|
+
await rm(file, { force: true });
|
|
125
|
+
}
|
|
126
|
+
else if (process.platform === "win32") {
|
|
127
|
+
if (!schedules.length)
|
|
128
|
+
await optionalCommand("schtasks", ["/Delete", "/TN", name, "/F"]);
|
|
129
|
+
else {
|
|
130
|
+
const user = (await execute("whoami", [], { timeout: 5000, maxBuffer: 1024 })).stdout.trim();
|
|
131
|
+
const file = join(input.directory, "scheduled-task.xml"), script = join(input.directory, "start-collector.ps1");
|
|
132
|
+
await mkdir(input.directory, { recursive: true, mode: 0o700 });
|
|
133
|
+
await atomicServiceFile(script, files.powershell, { mode: 0o600 });
|
|
134
|
+
await atomicServiceFile(file, files.windowsTask(user, script), { mode: 0o600 });
|
|
135
|
+
await command("schtasks", ["/Create", "/TN", name, "/XML", file, "/F"]);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else
|
|
139
|
+
throw new Error("Scheduled imports need a supported OS scheduler. Use import sync manually on this OS.");
|
|
140
|
+
return { name, platform: process.platform, status: await collectorStatus(input.directory) };
|
|
141
|
+
}
|
|
142
|
+
// Absence is allowed only when removing an optional trigger. Installation and
|
|
143
|
+
// activation failures remain errors and never claim that a schedule is enabled.
|
|
144
|
+
async function optionalCommand(file, args) {
|
|
145
|
+
try {
|
|
146
|
+
await command(file, args);
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
const result = error;
|
|
150
|
+
if (result.code === "ENOENT" || !/not (?:loaded|found|exist)|does not exist|No such|could not be found|cannot find|not been loaded/iu.test(result.stderr ?? result.message))
|
|
151
|
+
throw error;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/** Serialize OS/config updates; a failed installation restores retained intent. */
|
|
155
|
+
export async function setCollectorSchedule(input, connectionId, schedule) {
|
|
156
|
+
if (schedule !== null)
|
|
157
|
+
schedule = validateCollectorSchedule(schedule);
|
|
158
|
+
if (process.platform === "darwin" && (await collectorStatus(input.directory)).running)
|
|
159
|
+
throw new Error("Wait for the current import to finish, or cancel it, before changing its macOS schedule.");
|
|
160
|
+
const store = await CollectorStore.open(input.directory), token = randomUUID();
|
|
161
|
+
let prior;
|
|
162
|
+
store.database.exec("BEGIN IMMEDIATE");
|
|
163
|
+
try {
|
|
164
|
+
const connection = store.connections().find(item => item.id === connectionId);
|
|
165
|
+
if (!connection || (schedule && connection.state === "disconnected"))
|
|
166
|
+
throw new Error("Select a connected source before scheduling imports.");
|
|
167
|
+
const owner = store.setting("scheduleOwner");
|
|
168
|
+
if (owner) {
|
|
169
|
+
const { pid } = JSON.parse(owner);
|
|
170
|
+
let alive = true;
|
|
171
|
+
try {
|
|
172
|
+
process.kill(pid, 0);
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
alive = error.code !== "ESRCH";
|
|
176
|
+
}
|
|
177
|
+
if (alive)
|
|
178
|
+
throw new Error("Another schedule update is in progress. Try again shortly.");
|
|
179
|
+
}
|
|
180
|
+
prior = store.setting(`schedule:${connectionId}`);
|
|
181
|
+
store.set("scheduleOwner", JSON.stringify({ pid: process.pid, token }));
|
|
182
|
+
store.set(`schedule:${connectionId}`, schedule ? JSON.stringify(schedule) : "");
|
|
183
|
+
store.database.exec("COMMIT");
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
store.database.exec("ROLLBACK");
|
|
187
|
+
store.close();
|
|
188
|
+
throw error;
|
|
189
|
+
}
|
|
190
|
+
try {
|
|
191
|
+
await installCollectorService(input);
|
|
192
|
+
return store.status();
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
store.set(`schedule:${connectionId}`, prior ?? "");
|
|
108
196
|
try {
|
|
109
|
-
await
|
|
110
|
-
loaded = true;
|
|
197
|
+
await installCollectorService(input);
|
|
111
198
|
}
|
|
112
199
|
catch {
|
|
113
|
-
|
|
200
|
+
throw new Error(`Schedule installation failed and OS rollback could not be verified. Review the OS scheduler. ${error instanceof Error ? error.message : ""}`);
|
|
114
201
|
}
|
|
115
|
-
|
|
116
|
-
await command("launchctl", [
|
|
117
|
-
"bootout",
|
|
118
|
-
`gui/${process.getuid()}/${name}`,
|
|
119
|
-
]);
|
|
120
|
-
await writeFile(file, `<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>Label</key><string>${name}</string><key>ProgramArguments</key><array>${[input.executable, ...launch].map((value) => `<string>${xml(value)}</string>`).join("")}</array><key>EnvironmentVariables</key><dict>${environment.map(([key, value]) => `<key>${xml(key)}</key><string>${xml(value)}</string>`).join("")}</dict><key>RunAtLoad</key><true/><key>KeepAlive</key><dict><key>SuccessfulExit</key><false/></dict><key>ThrottleInterval</key><integer>5</integer></dict></plist>`, { mode: 0o600 });
|
|
121
|
-
await command("launchctl", ["bootstrap", `gui/${process.getuid()}`, file]);
|
|
202
|
+
throw error;
|
|
122
203
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
await mkdir(input.directory, { recursive: true });
|
|
127
|
-
const quoted = (value) => `"${value.replace(/(\\*)"/gu, '$1$1\\"').replace(/(\\+)$/u, "$1$1")}"`;
|
|
128
|
-
const script = join(input.directory, "start-collector.ps1");
|
|
129
|
-
const ps = (value) => `'${value.replace(/'/gu, "''")}'`;
|
|
130
|
-
await writeFile(script, `${environment.map(([key, value]) => `$env:${key} = ${ps(value)}`).join("\n")}\n& ${[input.executable, ...launch].map(ps).join(" ")}\nexit $LASTEXITCODE\n`, { mode: 0o600 });
|
|
131
|
-
await writeFile(file, `<?xml version="1.0"?><Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"><Triggers><LogonTrigger><Enabled>true</Enabled><UserId>${xml(user)}</UserId></LogonTrigger></Triggers><Principals><Principal id="Owner"><UserId>${xml(user)}</UserId><LogonType>InteractiveToken</LogonType><RunLevel>LeastPrivilege</RunLevel></Principal></Principals><Settings><MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy><DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries><StopIfGoingOnBatteries>false</StopIfGoingOnBatteries><ExecutionTimeLimit>PT0S</ExecutionTimeLimit><RestartOnFailure><Interval>PT1M</Interval><Count>999</Count></RestartOnFailure></Settings><Actions Context="Owner"><Exec><Command>powershell.exe</Command><Arguments>${xml(["-NoProfile", "-NonInteractive", "-File", script].map(quoted).join(" "))}</Arguments></Exec></Actions></Task>`, { mode: 0o600 });
|
|
132
|
-
await command("schtasks", ["/Create", "/TN", name, "/XML", file, "/F"]);
|
|
204
|
+
finally {
|
|
205
|
+
store.set("scheduleOwner", "");
|
|
206
|
+
store.close();
|
|
133
207
|
}
|
|
134
|
-
else
|
|
135
|
-
throw new Error("This OS has no qualified per-user supervisor. Run the collector in the foreground.");
|
|
136
|
-
return {
|
|
137
|
-
name,
|
|
138
|
-
platform: process.platform,
|
|
139
|
-
status: await collectorStatus(input.directory),
|
|
140
|
-
};
|
|
141
208
|
}
|
|
142
209
|
/** Removing supervision preserves receipts, pending uploads and retained datasets. */
|
|
143
210
|
export async function uninstallCollectorService(directory, home = homedir()) {
|
|
144
211
|
await controlCollector(directory, "stop");
|
|
145
212
|
const name = identity(directory);
|
|
146
213
|
if (process.platform === "linux") {
|
|
147
|
-
await
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
"--now",
|
|
151
|
-
`${name}.service`,
|
|
152
|
-
]);
|
|
214
|
+
await optionalCommand("systemctl", ["--user", "disable", "--now", `${name}.timer`]);
|
|
215
|
+
await rm(join(home, ".config/systemd/user", `${name}.timer`), { force: true });
|
|
216
|
+
await command("systemctl", ["--user", "disable", "--now", `${name}.service`]);
|
|
153
217
|
await rm(join(home, ".config/systemd/user", `${name}.service`), {
|
|
154
218
|
force: true,
|
|
155
219
|
});
|
|
@@ -169,30 +233,16 @@ export async function uninstallCollectorService(directory, home = homedir()) {
|
|
|
169
233
|
}
|
|
170
234
|
else
|
|
171
235
|
throw new Error("No per-user supervisor is available.");
|
|
236
|
+
await rm(join(directory, "calendar-gate.cjs"), { force: true });
|
|
172
237
|
if (process.platform === "linux")
|
|
173
238
|
await removeAppImageRuntimes(directory);
|
|
174
|
-
|
|
175
|
-
}
|
|
176
|
-
export async function startCollectorService(directory) {
|
|
177
|
-
await controlCollector(directory, "start");
|
|
178
|
-
const name = identity(directory);
|
|
239
|
+
const store = await CollectorStore.open(directory);
|
|
179
240
|
try {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
else if (process.platform === "darwin")
|
|
183
|
-
await command("launchctl", [
|
|
184
|
-
"kickstart",
|
|
185
|
-
"-k",
|
|
186
|
-
`gui/${process.getuid()}/${name}`,
|
|
187
|
-
]);
|
|
188
|
-
else if (process.platform === "win32")
|
|
189
|
-
await command("schtasks", ["/Run", "/TN", name]);
|
|
190
|
-
else
|
|
191
|
-
throw new Error("No per-user supervisor is available.");
|
|
241
|
+
for (const connection of store.connections())
|
|
242
|
+
store.set(`schedule:${connection.id}`, "");
|
|
192
243
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
throw error;
|
|
244
|
+
finally {
|
|
245
|
+
store.close();
|
|
196
246
|
}
|
|
197
247
|
return collectorStatus(directory);
|
|
198
248
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
-
import { sqlExecutionProcessSource } from "./sql-execution-process-source.js";
|
|
3
2
|
import { assertBoundedTaskJson } from "./task-schema.js";
|
|
4
3
|
import { assertSqlExecutionRequest, SqlExecutionResultSchema } from "./sql-execution-contract.js";
|
|
5
4
|
export * from "./sql-execution-contract.js";
|
|
@@ -9,6 +8,8 @@ export async function executeSqlInProcess(input) {
|
|
|
9
8
|
if (!Number.isSafeInteger(input.timeoutMs) || input.timeoutMs < 1 || input.timeoutMs > 30_000)
|
|
10
9
|
throw new Error("sql_timeout_invalid");
|
|
11
10
|
const request = assertSqlExecutionRequest(input.request);
|
|
11
|
+
const { sqlExecutionProcessSource } = await import("./sql-execution-process-source.js");
|
|
12
|
+
input.signal?.throwIfAborted();
|
|
12
13
|
const { signal } = input;
|
|
13
14
|
const program = `globalThis.__openpondSqlInput = JSON.parse(${JSON.stringify(JSON.stringify(request))});\n${sqlExecutionProcessSource}`;
|
|
14
15
|
return new Promise((resolve, reject) => {
|
package/dist/tasksets.js
CHANGED
|
@@ -89,7 +89,7 @@ export const TasksetReleaseContentSchema = z.object({
|
|
|
89
89
|
tools: z.array(ToolDeclarationSchema).max(200),
|
|
90
90
|
capabilities: z.array(CapabilityRequirementSchema).max(200),
|
|
91
91
|
tasks: z.array(TaskRecordSchema).min(1).max(1_000_000),
|
|
92
|
-
graders: z.array(GraderSpecSchema).
|
|
92
|
+
graders: z.array(GraderSpecSchema).max(1_000),
|
|
93
93
|
verifierSetRelease: z.object({ id: ReleaseIdSchema, contentHash: ReleaseHashSchema }).strict().optional(),
|
|
94
94
|
metrics: TasksetMetricPolicySchema.optional(),
|
|
95
95
|
metadata: MetadataSchema,
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const CollectorCoverageSessionSchema: z.ZodObject<{
|
|
3
|
+
sourceKeyHash: z.ZodString;
|
|
4
|
+
nativeRevisionHash: z.ZodNullable<z.ZodString>;
|
|
5
|
+
state: z.ZodEnum<{
|
|
6
|
+
failed: "failed";
|
|
7
|
+
skipped: "skipped";
|
|
8
|
+
reading: "reading";
|
|
9
|
+
admitted: "admitted";
|
|
10
|
+
}>;
|
|
11
|
+
reason: z.ZodNullable<z.ZodEnum<{
|
|
12
|
+
no_eligible_boundaries: "no_eligible_boundaries";
|
|
13
|
+
native_session_not_ready: "native_session_not_ready";
|
|
14
|
+
source_read_failed: "source_read_failed";
|
|
15
|
+
source_revision_unavailable: "source_revision_unavailable";
|
|
16
|
+
}>>;
|
|
17
|
+
unknownTimeBoundaries: z.ZodNumber;
|
|
18
|
+
normalized: z.ZodArray<z.ZodObject<{
|
|
19
|
+
sessionHash: z.ZodString;
|
|
20
|
+
boundaries: z.ZodArray<z.ZodObject<{
|
|
21
|
+
id: z.ZodString;
|
|
22
|
+
inputHash: z.ZodString;
|
|
23
|
+
revisionHash: z.ZodString;
|
|
24
|
+
occurredAt: z.ZodISODateTime;
|
|
25
|
+
}, z.core.$strict>>;
|
|
26
|
+
}, z.core.$strict>>;
|
|
27
|
+
}, z.core.$strict>;
|
|
28
|
+
export declare const CollectorCoverageManifestSchema: z.ZodObject<{
|
|
29
|
+
schemaVersion: z.ZodLiteral<"openpond.collectorCoverageManifest.v1">;
|
|
30
|
+
jobId: z.ZodString;
|
|
31
|
+
connectionId: z.ZodString;
|
|
32
|
+
connectionRevision: z.ZodNumber;
|
|
33
|
+
machineId: z.ZodString;
|
|
34
|
+
sourceInstanceId: z.ZodString;
|
|
35
|
+
from: z.ZodNullable<z.ZodISODateTime>;
|
|
36
|
+
to: z.ZodISODateTime;
|
|
37
|
+
startedAt: z.ZodISODateTime;
|
|
38
|
+
finishedAt: z.ZodNullable<z.ZodISODateTime>;
|
|
39
|
+
listingComplete: z.ZodBoolean;
|
|
40
|
+
pendingOperations: z.ZodNumber;
|
|
41
|
+
sessions: z.ZodArray<z.ZodObject<{
|
|
42
|
+
sourceKeyHash: z.ZodString;
|
|
43
|
+
nativeRevisionHash: z.ZodNullable<z.ZodString>;
|
|
44
|
+
state: z.ZodEnum<{
|
|
45
|
+
failed: "failed";
|
|
46
|
+
skipped: "skipped";
|
|
47
|
+
reading: "reading";
|
|
48
|
+
admitted: "admitted";
|
|
49
|
+
}>;
|
|
50
|
+
reason: z.ZodNullable<z.ZodEnum<{
|
|
51
|
+
no_eligible_boundaries: "no_eligible_boundaries";
|
|
52
|
+
native_session_not_ready: "native_session_not_ready";
|
|
53
|
+
source_read_failed: "source_read_failed";
|
|
54
|
+
source_revision_unavailable: "source_revision_unavailable";
|
|
55
|
+
}>>;
|
|
56
|
+
unknownTimeBoundaries: z.ZodNumber;
|
|
57
|
+
normalized: z.ZodArray<z.ZodObject<{
|
|
58
|
+
sessionHash: z.ZodString;
|
|
59
|
+
boundaries: z.ZodArray<z.ZodObject<{
|
|
60
|
+
id: z.ZodString;
|
|
61
|
+
inputHash: z.ZodString;
|
|
62
|
+
revisionHash: z.ZodString;
|
|
63
|
+
occurredAt: z.ZodISODateTime;
|
|
64
|
+
}, z.core.$strict>>;
|
|
65
|
+
}, z.core.$strict>>;
|
|
66
|
+
}, z.core.$strict>>;
|
|
67
|
+
}, z.core.$strict>;
|
|
68
|
+
export type CollectorCoverageManifest = z.infer<typeof CollectorCoverageManifestSchema>;
|
|
69
|
+
export type CollectorCoverageSession = z.infer<typeof CollectorCoverageSessionSchema>;
|
|
70
|
+
export declare const CollectorCoverageSummarySchema: z.ZodObject<{
|
|
71
|
+
jobId: z.ZodString;
|
|
72
|
+
manifestHash: z.ZodString;
|
|
73
|
+
sourceInventoryHash: z.ZodString;
|
|
74
|
+
eligibleBoundaryHash: z.ZodString;
|
|
75
|
+
from: z.ZodNullable<z.ZodISODateTime>;
|
|
76
|
+
to: z.ZodISODateTime;
|
|
77
|
+
finishedAt: z.ZodNullable<z.ZodISODateTime>;
|
|
78
|
+
conversations: z.ZodNumber;
|
|
79
|
+
eligibleTurns: z.ZodNumber;
|
|
80
|
+
admittedSessions: z.ZodNumber;
|
|
81
|
+
skippedSessions: z.ZodNumber;
|
|
82
|
+
failedSessions: z.ZodNumber;
|
|
83
|
+
unknownTimeBoundaries: z.ZodNumber;
|
|
84
|
+
pendingOperations: z.ZodNumber;
|
|
85
|
+
listingComplete: z.ZodBoolean;
|
|
86
|
+
complete: z.ZodBoolean;
|
|
87
|
+
}, z.core.$strict>;
|
|
88
|
+
export type CollectorCoverageSummary = z.infer<typeof CollectorCoverageSummarySchema>;
|
|
89
|
+
export declare function hashCollectorEligibleBoundaries(input: Array<{
|
|
90
|
+
id: string;
|
|
91
|
+
inputHash: string;
|
|
92
|
+
revisionHash: string;
|
|
93
|
+
}>): {
|
|
94
|
+
hash: string;
|
|
95
|
+
count: number;
|
|
96
|
+
};
|
|
97
|
+
export declare function summarizeCollectorCoverage(raw: CollectorCoverageManifest): CollectorCoverageSummary;
|
|
98
|
+
//# sourceMappingURL=collector-coverage-contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collector-coverage-contracts.d.ts","sourceRoot":"","sources":["../../../../../src/connected-evidence/collector-coverage-contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;kBA+BhC,CAAC;AAEZ,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAoExC,CAAC;AACL,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,+BAA+B,CACvC,CAAC;AACF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAC5C,OAAO,8BAA8B,CACtC,CAAC;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;kBAmBhC,CAAC;AACZ,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAC5C,OAAO,8BAA8B,CACtC,CAAC;AAEF,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;;;EAYtE;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,yBAAyB,GAC7B,wBAAwB,CAwD1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/connected-evidence/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/connected-evidence/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javascript-isolate-node.d.ts","sourceRoot":"","sources":["../../../../src/javascript-isolate-node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"javascript-isolate-node.d.ts","sourceRoot":"","sources":["../../../../src/javascript-isolate-node.ts"],"names":[],"mappings":"AACA,OAAO,EAAkC,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAGtG,+EAA+E;AAC/E,wBAAsB,gCAAgC,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAwCtG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javascript-isolate-process.d.ts","sourceRoot":"","sources":["../../../../src/javascript-isolate-process.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"javascript-isolate-process.d.ts","sourceRoot":"","sources":["../../../../src/javascript-isolate-process.ts"],"names":[],"mappings":"AACA,OAAO,EAAmE,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAGvI,oFAAoF;AACpF,wBAAsB,iCAAiC,CAAC,KAAK,EAAE,sBAAsB,GAAG;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CA0DvI"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javascript-isolate.d.ts","sourceRoot":"","sources":["../../../../src/javascript-isolate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"javascript-isolate.d.ts","sourceRoot":"","sources":["../../../../src/javascript-isolate.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,UAAU,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;CAClE;AAED,qBAAa,+BAAgC,SAAQ,KAAK;gBAC5C,OAAO,EAAE,MAAM;CAC5B;AAED,kFAAkF;AAClF,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAuC9F;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAKlF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Streaming inventory may prove an irrelevant source without retaining it.
|
|
2
|
+
* It never truncates a selected conversation into an admissible snapshot. */
|
|
3
|
+
export declare function inspectCodexWindow(input: {
|
|
4
|
+
path: string;
|
|
5
|
+
sessionId: string;
|
|
6
|
+
since: string | null;
|
|
7
|
+
until: string;
|
|
8
|
+
check(): Promise<void>;
|
|
9
|
+
}): Promise<{
|
|
10
|
+
sha256: string;
|
|
11
|
+
} | null>;
|
|
12
|
+
//# sourceMappingURL=codex-window-inventory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-window-inventory.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/codex-window-inventory.ts"],"names":[],"mappings":"AAIA;6EAC6E;AAC7E,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CA+DrC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type CollectorConnection, type CollectorRun } from "./collector-contracts.js";
|
|
2
|
+
import type { CollectorStore } from "./collector-store.js";
|
|
3
|
+
/** One pass over a frozen listing per page. Unchanged revisions are cheap; a
|
|
4
|
+
* failed source is tried again only in a later explicitly launched job. */
|
|
5
|
+
export declare function acquireCollectorSource(input: {
|
|
6
|
+
store: CollectorStore;
|
|
7
|
+
connection: CollectorConnection;
|
|
8
|
+
until: string;
|
|
9
|
+
check(): Promise<void>;
|
|
10
|
+
drain(): Promise<void>;
|
|
11
|
+
progress(update: Partial<CollectorRun>): void;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
export declare class CollectorInterruptedError extends Error {
|
|
14
|
+
}
|
|
15
|
+
export declare class CollectorScopeChangedError extends Error {
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=collector-acquisition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collector-acquisition.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/collector-acquisition.ts"],"names":[],"mappings":"AAMA,OAAO,EAAsB,KAAK,mBAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC3G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK3D;2EAC2E;AAC3E,wBAAsB,sBAAsB,CAAC,KAAK,EAAE;IAClD,KAAK,EAAE,cAAc,CAAC;IACtB,UAAU,EAAE,mBAAmB,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;CAC/C,iBAoHA;AAED,qBAAa,yBAA0B,SAAQ,KAAK;CAAG;AACvD,qBAAa,0BAA2B,SAAQ,KAAK;CAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector-branches.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/collector-branches.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAgB,MAAM,gBAAgB,CAAC;AAK1G,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAM1I;AAeD,wBAAsB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;;;;;;;;;;GAQ9G;AAED,oGAAoG;AACpG,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB;;;;;
|
|
1
|
+
{"version":3,"file":"collector-branches.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/collector-branches.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAgB,MAAM,gBAAgB,CAAC;AAK1G,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAM1I;AAeD,wBAAsB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;;;;;;;;;;GAQ9G;AAED,oGAAoG;AACpG,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB;;;;;GA0BvI"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CollectorSchedule } from "./collector-contracts.js";
|
|
2
|
+
/** A tiny, dependency-free process for OS schedulers that cannot express cron.
|
|
3
|
+
* An unmatched calendar exits before importing the CLI or opening source files. */
|
|
4
|
+
export declare function collectorCalendarGate(input: {
|
|
5
|
+
executable: string;
|
|
6
|
+
args: string[];
|
|
7
|
+
schedules: CollectorSchedule[];
|
|
8
|
+
}): string;
|
|
9
|
+
//# sourceMappingURL=collector-calendar-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collector-calendar-gate.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/collector-calendar-gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAIlE;mFACmF;AACnF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,iBAAiB,EAAE,CAAA;CAAE,UAclH"}
|
|
@@ -1,14 +1,40 @@
|
|
|
1
1
|
import type { NativeSource } from "./contracts.js";
|
|
2
2
|
import type { CollectorBackfillProgress } from "./collector-progress.js";
|
|
3
|
+
import type { CollectorCoverageManifest, CollectorCoverageSummary } from "../connected-evidence/collector-coverage-contracts.js";
|
|
3
4
|
export declare const COLLECTOR_DEFAULTS: {
|
|
4
|
-
readonly reconcileMs: 30000;
|
|
5
5
|
readonly heartbeatMs: 10000;
|
|
6
6
|
readonly staleMs: 60000;
|
|
7
7
|
readonly maxPending: 10000;
|
|
8
8
|
readonly maxBytes: number;
|
|
9
9
|
readonly batchCases: 20;
|
|
10
|
-
readonly
|
|
10
|
+
readonly runMs: number;
|
|
11
|
+
readonly requestMs: 60000;
|
|
12
|
+
readonly attemptsPerRun: 3;
|
|
11
13
|
};
|
|
14
|
+
export type CollectorSchedule = {
|
|
15
|
+
frequency: "hourly";
|
|
16
|
+
} | {
|
|
17
|
+
frequency: "cron";
|
|
18
|
+
expression: string;
|
|
19
|
+
} | {
|
|
20
|
+
frequency: "daily";
|
|
21
|
+
time: string;
|
|
22
|
+
} | {
|
|
23
|
+
frequency: "weekly";
|
|
24
|
+
time: string;
|
|
25
|
+
day: number;
|
|
26
|
+
};
|
|
27
|
+
export interface CollectorRun {
|
|
28
|
+
id: string;
|
|
29
|
+
state: "running" | "completed" | "failed" | "cancelled";
|
|
30
|
+
phase: "discovering" | "reading" | "uploading";
|
|
31
|
+
startedAt: string;
|
|
32
|
+
finishedAt: string | null;
|
|
33
|
+
processed: number;
|
|
34
|
+
discovered: number;
|
|
35
|
+
uploaded: number;
|
|
36
|
+
error: string | null;
|
|
37
|
+
}
|
|
12
38
|
export interface CollectorDestinations {
|
|
13
39
|
taskDatasetId: string | null;
|
|
14
40
|
conversationDatasetId: string | null;
|
|
@@ -26,6 +52,8 @@ export interface CollectorConnection {
|
|
|
26
52
|
apiBaseUrl: string;
|
|
27
53
|
account?: string;
|
|
28
54
|
accountBaseUrl?: string;
|
|
55
|
+
/** The account store used at connection time; credentials stay in that store. */
|
|
56
|
+
credentialHome?: string;
|
|
29
57
|
destinations?: CollectorDestinations;
|
|
30
58
|
requestedSyncRevision?: number;
|
|
31
59
|
/** Locally completed work, retained before the hosted acknowledgement is sent. */
|
|
@@ -34,6 +62,7 @@ export interface CollectorConnection {
|
|
|
34
62
|
projectId: string;
|
|
35
63
|
revision: number;
|
|
36
64
|
since: string | null;
|
|
65
|
+
/** Hosted registration metadata; local recurrence is an explicit schedule. */
|
|
37
66
|
keepSyncing: boolean;
|
|
38
67
|
state: "active" | "paused" | "disconnected";
|
|
39
68
|
}
|
|
@@ -43,6 +72,7 @@ export interface CollectorStatus {
|
|
|
43
72
|
desiredState: "running" | "stopped";
|
|
44
73
|
pid: number | null;
|
|
45
74
|
heartbeatAt: string | null;
|
|
75
|
+
timezone: string;
|
|
46
76
|
connections: {
|
|
47
77
|
id: string;
|
|
48
78
|
state: CollectorConnection["state"];
|
|
@@ -58,6 +88,12 @@ export interface CollectorStatus {
|
|
|
58
88
|
backfill: CollectorBackfillProgress;
|
|
59
89
|
pendingBytes: number;
|
|
60
90
|
lastAdmissionAt: string | null;
|
|
91
|
+
since: string | null;
|
|
92
|
+
schedule: CollectorSchedule | null;
|
|
93
|
+
nextRunAt: string | null;
|
|
94
|
+
lastSuccessfulSyncAt: string | null;
|
|
95
|
+
run: CollectorRun | null;
|
|
96
|
+
coverage: CollectorCoverageSummary | null;
|
|
61
97
|
requestedSyncRevision: number;
|
|
62
98
|
completedSyncRevision: number;
|
|
63
99
|
acknowledgedSyncRevision: number;
|
|
@@ -81,12 +117,12 @@ export interface CollectorAdmission {
|
|
|
81
117
|
}
|
|
82
118
|
/** Credentials are resolved by the process host, never persisted in source metadata or queue entries. */
|
|
83
119
|
export interface CollectorTransport {
|
|
84
|
-
|
|
120
|
+
publishCoverage(connection: CollectorConnection, manifest: CollectorCoverageManifest, signal?: AbortSignal): Promise<void>;
|
|
85
121
|
heartbeat(connection: CollectorConnection, input: {
|
|
86
122
|
pendingOperations: number;
|
|
87
123
|
error: string | null;
|
|
88
124
|
completedSyncRevision: number;
|
|
89
|
-
}): Promise<CollectorRemoteControl>;
|
|
90
|
-
admit(connection: CollectorConnection, entry: CollectorAdmission): Promise<void>;
|
|
125
|
+
}, signal?: AbortSignal): Promise<CollectorRemoteControl>;
|
|
126
|
+
admit(connection: CollectorConnection, entry: CollectorAdmission, signal?: AbortSignal): Promise<void>;
|
|
91
127
|
}
|
|
92
128
|
//# sourceMappingURL=collector-contracts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector-contracts.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/collector-contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"collector-contracts.d.ts","sourceRoot":"","sources":["../../../../../src/native-conversations/collector-contracts.ts"],"names":[],"mappings":"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"}
|