chopin-ai 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +1 -2
  2. package/dist/agent.d.ts +5 -5
  3. package/dist/agent.js +7 -11
  4. package/dist/agent.js.map +1 -1
  5. package/dist/bin.js +7 -2
  6. package/dist/bin.js.map +1 -1
  7. package/dist/chat.js +7 -0
  8. package/dist/chat.js.map +1 -1
  9. package/dist/credentials.d.ts +5 -1
  10. package/dist/credentials.js +18 -0
  11. package/dist/credentials.js.map +1 -1
  12. package/dist/header.d.ts +1 -0
  13. package/dist/header.js +7 -1
  14. package/dist/header.js.map +1 -1
  15. package/dist/home.d.ts +22 -3
  16. package/dist/home.js +11 -3
  17. package/dist/home.js.map +1 -1
  18. package/dist/project.d.ts +19 -2
  19. package/dist/project.js +111 -26
  20. package/dist/project.js.map +1 -1
  21. package/dist/rsi/control.d.ts +34 -0
  22. package/dist/rsi/control.js +142 -0
  23. package/dist/rsi/control.js.map +1 -0
  24. package/dist/rsi/evolve.d.ts +15 -0
  25. package/dist/rsi/evolve.js +314 -0
  26. package/dist/rsi/evolve.js.map +1 -0
  27. package/dist/rsi/export.d.ts +6 -0
  28. package/dist/rsi/export.js +25 -0
  29. package/dist/rsi/export.js.map +1 -0
  30. package/dist/rsi/harvest.d.ts +87 -0
  31. package/dist/rsi/harvest.js +274 -0
  32. package/dist/rsi/harvest.js.map +1 -0
  33. package/dist/rsi/held.d.ts +29 -0
  34. package/dist/rsi/held.js +45 -0
  35. package/dist/rsi/held.js.map +1 -0
  36. package/dist/rsi/lifecycle.d.ts +8 -0
  37. package/dist/rsi/lifecycle.js +25 -0
  38. package/dist/rsi/lifecycle.js.map +1 -0
  39. package/dist/rsi/models.d.ts +25 -0
  40. package/dist/rsi/models.js +71 -0
  41. package/dist/rsi/models.js.map +1 -0
  42. package/dist/rsi/records.d.ts +14 -0
  43. package/dist/rsi/records.js +20 -0
  44. package/dist/rsi/records.js.map +1 -0
  45. package/dist/rsi/round.d.ts +62 -0
  46. package/dist/rsi/round.js +333 -0
  47. package/dist/rsi/round.js.map +1 -0
  48. package/dist/rsi/schedule.d.ts +14 -0
  49. package/dist/rsi/schedule.js +42 -0
  50. package/dist/rsi/schedule.js.map +1 -0
  51. package/dist/rsi/summary.d.ts +5 -0
  52. package/dist/rsi/summary.js +41 -0
  53. package/dist/rsi/summary.js.map +1 -0
  54. package/dist/serve.js +52 -29
  55. package/dist/serve.js.map +1 -1
  56. package/dist/transcript.js +6 -1
  57. package/dist/transcript.js.map +1 -1
  58. package/package.json +11 -12
  59. package/dist/browser.d.ts +0 -2
  60. package/dist/browser.js +0 -9
  61. package/dist/browser.js.map +0 -1
  62. package/dist/web.d.ts +0 -3
  63. package/dist/web.js +0 -20
  64. package/dist/web.js.map +0 -1
package/dist/project.js CHANGED
@@ -1,23 +1,41 @@
1
1
  import { spawn } from "node:child_process";
2
2
  import { createHash, randomBytes } from "node:crypto";
3
+ import { once } from "node:events";
3
4
  import { chmod, mkdir, open, readdir, readFile, realpath, rm, stat } from "node:fs/promises";
4
- import { basename, dirname, join } from "node:path";
5
+ import { basename, dirname, extname, join } from "node:path";
5
6
  import { setTimeout as sleep } from "node:timers/promises";
6
7
  import { fileURLToPath } from "node:url";
7
8
  import { BACKGROUND_CONTEXT } from "@earendil-works/chord/context";
9
+ import { InMemoryCredentialStore } from "@earendil-works/pi-ai";
8
10
  import { localDaemon } from "@earendil-works/pi-env";
9
- import { AgentService, launchToken, listen } from "@chopin-ai/harness-pi";
10
- import { DirectoryWorkspaceProvider } from "@chopin-ai/workspace";
11
- import { agentSetup, webApp } from "./agent.js";
12
- import { chopinHome, writeWhole } from "./home.js";
11
+ import { AgentService, DAEMON_PATH, launchToken, listen } from "@chopin-ai/harness-pi";
12
+ import { LayerVersions } from "@chopin-ai/core";
13
+ import { DirectoryWorkspaceProvider, LoopbackWorkspaceProvider } from "@chopin-ai/workspace";
14
+ import { agentSetup } from "./agent.js";
15
+ import { chopinHome, rsiDirectory, writeWhole } from "./home.js";
13
16
  import { exclusive } from "./lock.js";
14
- import { chopinModels } from "./credentials.js";
17
+ import { chopinCredentials, chopinModels } from "./credentials.js";
15
18
  import { resolveModel } from "./model.js";
19
+ import { loopControl } from "./rsi/control.js";
20
+ import { evolving } from "./rsi/evolve.js";
21
+ import { exportTranscripts } from "./rsi/export.js";
22
+ import { evolveIfDue } from "./rsi/schedule.js";
16
23
  import { errorChain } from "@chopin-ai/harness-pi/protocol";
24
+ /** How often a running service writes out the conversations the loop learns from, and checks whether the loop is due. */
25
+ const EXPORT_MS = 60_000;
26
+ const EVOLVE_CHECK_MS = 10 * 60_000;
17
27
  /** The signal that asks a project's service to hand over once its agent has nothing left to do. */
18
28
  export const HAND_OVER = "SIGUSR2";
19
- /** The built entry, which runs the daemon; the same file whether this module runs from the sources or the build. */
20
- const BIN = fileURLToPath(new URL("../dist/bin.js", import.meta.url));
29
+ /**
30
+ * The source hooks' URL, which they record in a process they run from the sources. Tests load the sources their own
31
+ * way, so their daemons run the build.
32
+ */
33
+ const SOURCE_HOOKS = Reflect.get(globalThis, Symbol.for("chopin-ai.source-hooks"));
34
+ const FROM_SOURCES = typeof SOURCE_HOOKS === "string";
35
+ /** The entry that runs the daemon and the loop, from the sources or the build as this process runs. */
36
+ const BIN = fileURLToPath(new URL(FROM_SOURCES ? "bin.ts" : "../dist/bin.js", import.meta.url));
37
+ /** The node arguments that start that entry: the source hooks alone, never this process's other options. */
38
+ const CHOPIN = [...(FROM_SOURCES ? ["--import", SOURCE_HOOKS] : []), BIN];
21
39
  const IDLE_MS = 5 * 60_000;
22
40
  const LEAVE_GRACE_MS = 10_000;
23
41
  /**
@@ -91,10 +109,14 @@ export async function runDaemon(directory, options = {}) {
91
109
  for (const name of await readdir(home))
92
110
  if (name.startsWith(`${basename(paths.record)}.`))
93
111
  await rm(join(home, name), { force: true });
94
- const service = await agentService(paths);
95
- try {
96
- const token = randomBytes(32).toString("base64url");
97
- const server = await listen(service, { authenticate: launchToken(token), web: webApp() });
112
+ const token = randomBytes(32).toString("base64url");
113
+ // Credentials, conversations and the RSI evaluator's records stay out of the agent's reach.
114
+ const workspace = {
115
+ workspaces: new DirectoryWorkspaceProvider(paths.root, { hidden: [await realpath(chopinHome())] }),
116
+ daemon: localDaemon(),
117
+ credentials: chopinCredentials(),
118
+ };
119
+ await serveProject(paths, workspace, { authenticate: launchToken(token) }, async (server, service) => {
98
120
  try {
99
121
  await writeRecord(paths.record, { pid: process.pid, url: `ws://127.0.0.1:${server.port}/`, token, build: options.build ?? await buildId() });
100
122
  for (;;) {
@@ -111,23 +133,82 @@ export async function runDaemon(directory, options = {}) {
111
133
  }
112
134
  finally {
113
135
  await rm(paths.record, { force: true });
114
- await server.close();
115
136
  }
137
+ });
138
+ }
139
+ finally {
140
+ lock.close();
141
+ }
142
+ }
143
+ /**
144
+ * Serves one owner whose workspace someone else runs beside it, reached on a loopback port, until `signal` aborts:
145
+ * the project service of local use, with the workspace started and stopped by whoever runs it.
146
+ */
147
+ export async function serveWorkspace(options) {
148
+ const paths = await pathsOf(options.root);
149
+ const lock = exclusive(paths.lock);
150
+ if (lock === undefined)
151
+ throw new Error(`another service holds the store of ${options.root}`);
152
+ try {
153
+ const workspace = {
154
+ workspaces: new LoopbackWorkspaceProvider({ port: options.workspacePort, root: options.root, daemon: DAEMON_PATH }),
155
+ // Credentials its clients hand over live in memory alone, never on any volume.
156
+ credentials: new InMemoryCredentialStore(),
157
+ inMemory: true,
158
+ };
159
+ const listening = { authenticate: launchToken(options.token), ...(options.hostname !== undefined && { hostname: options.hostname }), ...(options.port !== undefined && { port: options.port }) };
160
+ await serveProject(paths, workspace, listening, async (server) => {
161
+ options.listening?.(server.port);
162
+ if (!options.signal.aborted)
163
+ await once(options.signal, "abort");
164
+ });
165
+ }
166
+ finally {
167
+ lock.close();
168
+ }
169
+ }
170
+ /**
171
+ * Runs the project's service while `during` runs, and writes out what the loop learns from as it goes, so the loop
172
+ * never opens the store itself; the loop runs now and then while the agent has nothing in hand, and its own lock
173
+ * keeps it to one at a time.
174
+ */
175
+ async function serveProject(paths, workspace, listening, during) {
176
+ const service = await agentService(paths, workspace);
177
+ try {
178
+ const server = await listen(service, { ...listening, busy: async () => (await service.working()).length > 0 || (await evolving()), loop: loopControl });
179
+ const exportNow = () => exportTranscripts(service, join(paths.rsi, "transcripts")).catch((error) => console.error(`chopin: ${errorChain(error)}`));
180
+ const exporting = setInterval(exportNow, EXPORT_MS);
181
+ exporting.unref();
182
+ // Credentials held in this process alone are handed to the loop; a home's own the loop reads, and keeps refreshed.
183
+ const loop = workspace.inMemory === true ? { credentials: workspace.credentials } : {};
184
+ const scheduling = setInterval(() => void evolveIfDue(CHOPIN, paths.home, async () => (await service.working()).length === 0, loop)
185
+ .catch((error) => console.error(`chopin: ${errorChain(error)}`)), EVOLVE_CHECK_MS);
186
+ scheduling.unref();
187
+ try {
188
+ await during(server, service);
116
189
  }
117
190
  finally {
118
- await service.close(BACKGROUND_CONTEXT);
191
+ clearInterval(exporting);
192
+ clearInterval(scheduling);
193
+ await exportNow();
194
+ await server.close();
119
195
  }
120
196
  }
121
197
  finally {
122
- lock.close();
198
+ await service.close(BACKGROUND_CONTEXT);
123
199
  }
124
200
  }
125
- async function agentService(paths) {
201
+ async function agentService(paths, { credentials, ...workspace }) {
126
202
  return new AgentService({
127
- ...await agentSetup(),
203
+ ...await agentSetup(credentials),
204
+ credentials: () => credentials,
205
+ layerVersions: {
206
+ global: new LayerVersions(join(rsiDirectory(), "layer")),
207
+ project: new LayerVersions(join(paths.rsi, "layer")),
208
+ anyModel: true,
209
+ },
128
210
  dataDir: paths.data,
129
- workspaces: new DirectoryWorkspaceProvider(paths.root),
130
- daemon: localDaemon(),
211
+ ...workspace,
131
212
  report: (error) => console.error(`chopin: ${errorChain(error)}`),
132
213
  });
133
214
  }
@@ -183,10 +264,13 @@ function buildId() {
183
264
  for (const root of roots) {
184
265
  versions.push(JSON.parse(await readFile(join(root, "..", "package.json"), "utf8")).version);
185
266
  for (const entry of await readdir(root, { recursive: true, withFileTypes: true })) {
186
- if (entry.isFile() && entry.name.endsWith(".js"))
267
+ if (entry.isFile() && extname(entry.name) === extname(BIN))
187
268
  newest = Math.max(newest, (await stat(join(entry.parentPath, entry.name))).mtimeMs);
188
269
  }
189
270
  }
271
+ // From the sources, the hooks that load them are part of the build too.
272
+ if (FROM_SOURCES)
273
+ newest = Math.max(newest, (await stat(fileURLToPath(SOURCE_HOOKS))).mtimeMs);
190
274
  return `${versions.join(",")}:${Math.round(newest)}`;
191
275
  })();
192
276
  return build;
@@ -205,7 +289,7 @@ export function laterBuild(a, b) {
205
289
  async function spawnDaemon(paths) {
206
290
  const log = await open(paths.log, "a");
207
291
  try {
208
- const child = spawn(process.execPath, [BIN, "daemon", paths.root], {
292
+ const child = spawn(process.execPath, [...CHOPIN, "daemon", paths.root], {
209
293
  cwd: paths.root,
210
294
  detached: true,
211
295
  stdio: ["ignore", log.fd, log.fd],
@@ -222,14 +306,17 @@ async function spawnDaemon(paths) {
222
306
  }
223
307
  }
224
308
  async function projectPaths(directory) {
225
- const root = await realpath(directory);
309
+ return pathsOf(await realpath(directory));
310
+ }
311
+ /** Where the service of the project at `root`, a path as the project's workspace sees it, keeps its records. */
312
+ async function pathsOf(root) {
226
313
  const chopin = chopinHome();
227
314
  const home = join(chopin, "projects", createHash("sha256").update(root).digest("hex").slice(0, 16));
228
315
  // The project's store and log hold its conversations; nobody else on the machine reads them.
229
316
  await mkdir(home, { recursive: true });
230
317
  await chmod(home, 0o700);
231
318
  const at = (name) => join(home, name);
232
- return { home: chopin, root, record: at("service.json"), lock: at("service.lock"), log: at("service.log"), data: at("data") };
319
+ return { home: chopin, root, record: at("service.json"), lock: at("service.lock"), log: at("service.log"), data: at("data"), rsi: at("rsi") };
233
320
  }
234
321
  /**
235
322
  * The running service's record. The lock is the authority: a record nobody holds the lock for is left over, and one
@@ -250,9 +337,7 @@ async function writeRecord(file, record) {
250
337
  await writeWhole(file, JSON.stringify(record), 0o600);
251
338
  }
252
339
  function joined(record) {
253
- const page = new URL(record.url.replace(/^ws/, "http"));
254
- page.searchParams.set("token", record.token);
255
- return { url: new URL(record.url), token: record.token, page };
340
+ return { url: new URL(record.url), token: record.token };
256
341
  }
257
342
  function alive(pid) {
258
343
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { type LayerItem } from "@chopin-ai/core";
2
+ import type { CorrectionKind, HeldChange, LoopChange, LoopControl, LoopSettings, LoopStanding } from "@chopin-ai/harness-pi/protocol";
3
+ /** Where the loop stands: the layer version in use, the failures it knows, what waits for the user, what it spent. */
4
+ export declare function loopStanding(): Promise<LoopStanding>;
5
+ /** The changes the loop kept, newest first. */
6
+ export declare function loopChanges(): Promise<LoopChange[]>;
7
+ /**
8
+ * Archives the change in use whose id `id` begins, so new conversations run without it; else why it cannot be. The
9
+ * failure it answered is taken up again, and its proposer is told this change was undone.
10
+ */
11
+ export declare function undoChange(id: string): Promise<{
12
+ undone: LayerItem;
13
+ version: number;
14
+ } | string>;
15
+ /** The kinds of correction the user is asked about, those found in enough sessions, and how many corrections wait for more. */
16
+ export declare function correctionsAsked(): Promise<{
17
+ asking: CorrectionKind[];
18
+ later: number;
19
+ }>;
20
+ /** Learns from every correction of the kind `key`, or dismisses them all; else why it cannot. */
21
+ export declare function answerCorrections(key: string, learn: boolean): Promise<string | undefined>;
22
+ /** The changes the audit held for the user, waiting for a decision. */
23
+ export declare function heldChanges(): Promise<HeldChange[]>;
24
+ /**
25
+ * Approves a held change, which the next round still tests before keeping it, or refuses it, which counts against
26
+ * its kind; else why it cannot.
27
+ */
28
+ export declare function decideHeld(id: string, approve: boolean): Promise<string | undefined>;
29
+ /** How the loop runs, as the settings have it. */
30
+ export declare function loopSettings(): Promise<LoopSettings>;
31
+ /** Changes the loop settings given, a null clearing one, leaving the rest; answers with all of them. */
32
+ export declare function changeLoopSettings(change: Partial<LoopSettings>): Promise<LoopSettings>;
33
+ /** The loop as a service answers its owner's clients from it. */
34
+ export declare const loopControl: LoopControl;
@@ -0,0 +1,142 @@
1
+ import { TRIGGER_SESSIONS, triggered } from "@chopin-ai/core";
2
+ import { changeSettings, readSettings } from "../home.js";
3
+ import { Budget } from "./models.js";
4
+ import { records } from "./records.js";
5
+ /** How many of a kind's corrections the user is shown when asked about it. */
6
+ const CORRECTION_EXAMPLES = 3;
7
+ /** Where the loop stands: the layer version in use, the failures it knows, what waits for the user, what it spent. */
8
+ export async function loopStanding() {
9
+ const kept = records();
10
+ const version = await kept.versions.current();
11
+ const items = await kept.versions.items(version);
12
+ const kinds = await kept.evidence.kinds();
13
+ const settings = await readSettings();
14
+ let shelved = 0;
15
+ for (const found of kinds)
16
+ if (await kept.rejections.shelved(found.key, settings.model ?? "", found.failures.length, await kept.evidence.criteria(found)))
17
+ shelved += 1;
18
+ const corrections = (await kept.evidence.correctionKinds()).filter((kind) => kind.sessions.length >= TRIGGER_SESSIONS).length;
19
+ const weeklyBudgetUsd = settings.rsi?.weeklyBudgetUsd ?? null;
20
+ return {
21
+ version,
22
+ inUse: items.filter((item) => !item.archived).length,
23
+ archived: items.filter((item) => item.archived).length,
24
+ kinds: kinds.length,
25
+ recurring: triggered(kinds).length,
26
+ shelved,
27
+ corrections,
28
+ held: (await kept.held.waiting()).length,
29
+ spentUsd: await new Budget(kept.spend, weeklyBudgetUsd ?? 0).spent(),
30
+ weeklyBudgetUsd,
31
+ };
32
+ }
33
+ /** The changes the loop kept, newest first. */
34
+ export async function loopChanges() {
35
+ const kept = records();
36
+ return (await kept.versions.items(await kept.versions.current())).toReversed()
37
+ .map((item) => ({ id: item.id, added: item.added, kind: item.kind, archived: item.archived, text: item.text ?? `skill ${item.skill}` }));
38
+ }
39
+ /**
40
+ * Archives the change in use whose id `id` begins, so new conversations run without it; else why it cannot be. The
41
+ * failure it answered is taken up again, and its proposer is told this change was undone.
42
+ */
43
+ export async function undoChange(id) {
44
+ const kept = records();
45
+ const matches = (await kept.versions.items(await kept.versions.current())).filter((item) => item.id.startsWith(id) && !item.archived);
46
+ const [undone] = matches;
47
+ if (undone === undefined)
48
+ return `no change in use starts with ${id}`;
49
+ if (matches.length > 1)
50
+ return `${id} names more than one change; give more of it`;
51
+ const version = await kept.versions.commit((all) => all.map((item) => (item.id === undone.id ? { ...item, archived: true } : item)));
52
+ if (undone.source.failure !== undefined) {
53
+ await kept.rejections.record({
54
+ failure: undone.source.failure, candidate: undone.id, text: undone.text ?? `the skill ${undone.skill}`, reason: "the user undid it after it was kept",
55
+ });
56
+ await kept.evidence.reopen(undone.source.failure);
57
+ }
58
+ return { undone, version };
59
+ }
60
+ /** The kinds of correction the user is asked about, those found in enough sessions, and how many corrections wait for more. */
61
+ export async function correctionsAsked() {
62
+ const kinds = await records().evidence.correctionKinds();
63
+ const asking = kinds.filter((kind) => kind.sessions.length >= TRIGGER_SESSIONS);
64
+ return {
65
+ asking: asking.map((kind) => ({
66
+ key: kind.key, sessions: kind.sessions.length, examples: kind.corrections.slice(0, CORRECTION_EXAMPLES).map((correction) => correction.summary),
67
+ })),
68
+ later: kinds.filter((kind) => !asking.includes(kind)).reduce((sum, kind) => sum + kind.corrections.length, 0),
69
+ };
70
+ }
71
+ /** Learns from every correction of the kind `key`, or dismisses them all; else why it cannot. */
72
+ export async function answerCorrections(key, learn) {
73
+ const evidence = records().evidence;
74
+ const kind = (await evidence.correctionKinds()).find((each) => each.key === key && each.sessions.length >= TRIGGER_SESSIONS);
75
+ if (kind === undefined)
76
+ return `no kind of correction ${key} waits for an answer`;
77
+ await evidence.answerKind(kind, learn);
78
+ return undefined;
79
+ }
80
+ /** The changes the audit held for the user, waiting for a decision. */
81
+ export async function heldChanges() {
82
+ return (await records().held.waiting()).map(({ id, failure, proposal, reasons }) => ({
83
+ id, failure, kind: proposal.candidate.kind, ...(proposal.skill !== undefined && { skill: proposal.skill }),
84
+ text: proposal.candidate.text, prediction: proposal.prediction, reasons,
85
+ }));
86
+ }
87
+ /**
88
+ * Approves a held change, which the next round still tests before keeping it, or refuses it, which counts against
89
+ * its kind; else why it cannot.
90
+ */
91
+ export async function decideHeld(id, approve) {
92
+ const kept = records();
93
+ const held = (await kept.held.waiting()).find((each) => each.id === id);
94
+ if (held === undefined)
95
+ return `no change ${id} waits for your review`;
96
+ await kept.held.decide(held, approve ? "approved" : "refused");
97
+ if (!approve) {
98
+ const { candidate, prediction } = held.proposal;
99
+ await kept.rejections.record({ failure: held.failure, candidate: held.id, text: candidate.text, reason: "you refused it on review", prediction });
100
+ }
101
+ return undefined;
102
+ }
103
+ /** How the loop runs, as the settings have it. */
104
+ export async function loopSettings() {
105
+ const rsi = (await readSettings()).rsi ?? {};
106
+ return {
107
+ weeklyBudgetUsd: rsi.weeklyBudgetUsd ?? null,
108
+ regularModel: rsi.regularModel ?? null,
109
+ strongModel: rsi.strongModel ?? null,
110
+ holdForReview: rsi.holdForReview === true,
111
+ };
112
+ }
113
+ /** Changes the loop settings given, a null clearing one, leaving the rest; answers with all of them. */
114
+ export async function changeLoopSettings(change) {
115
+ await changeSettings((current) => {
116
+ const rsi = { ...current.rsi };
117
+ for (const [key, value] of Object.entries(change)) {
118
+ if (value === null)
119
+ delete rsi[key];
120
+ else if (value !== undefined)
121
+ rsi[key] = value;
122
+ }
123
+ return { rsi: rsi };
124
+ });
125
+ return loopSettings();
126
+ }
127
+ /** The loop as a service answers its owner's clients from it. */
128
+ export const loopControl = {
129
+ standing: loopStanding,
130
+ changes: loopChanges,
131
+ undo: async (id) => {
132
+ const undone = await undoChange(id);
133
+ return typeof undone === "string" ? undone : undefined;
134
+ },
135
+ corrections: async () => (await correctionsAsked()).asking,
136
+ answer: answerCorrections,
137
+ held: heldChanges,
138
+ decide: decideHeld,
139
+ settings: loopSettings,
140
+ setSettings: changeLoopSettings,
141
+ };
142
+ //# sourceMappingURL=control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control.js","sourceRoot":"","sources":["../../src/rsi/control.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type Command } from "@chopin-ai/core";
2
+ /** Runs the loop once now: calibrates the judges if they were not today, gathers evidence, and runs due rounds. */
3
+ export declare const evolveCommand: Command;
4
+ /** Whether the loop is running now, in this process or another. */
5
+ export declare function evolving(): Promise<boolean>;
6
+ /** What the loop holds now. */
7
+ export declare const evolveStatusCommand: Command;
8
+ /** Asks the user about each change the audit held; an approved one is tested in the next round, a refused one counts against its kind. */
9
+ export declare const evolveReviewCommand: Command;
10
+ /** The loop's changes, newest first. */
11
+ export declare const evolveLogCommand: Command;
12
+ /** Takes a change back out; it stays in the history and can be restored by a later version. */
13
+ export declare const evolveUndoCommand: Command;
14
+ /** Asks the user about each correction the loop found; a confirmed one becomes a failure to learn from. */
15
+ export declare const evolveCorrectionsCommand: Command;