@producible/cereworker-cerebellum-client 26.520.1

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Producible
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,238 @@
1
+ export interface CerebellumStatus {
2
+ healthy: boolean;
3
+ modelName: string;
4
+ uptimeSeconds: number;
5
+ tasksRegistered: number;
6
+ }
7
+ export interface TaskState {
8
+ taskId: string;
9
+ description: string;
10
+ status: 'pending' | 'running' | 'waiting' | 'completed';
11
+ lastRun?: number;
12
+ scheduleHint: string;
13
+ schedule?: TaskSchedule;
14
+ metadata?: Record<string, string>;
15
+ }
16
+ export interface TaskAction {
17
+ taskId: string;
18
+ action: 'invoke' | 'skip' | 'defer' | 'cancel' | 'invoke_task' | 'continue_task' | 'retry_task' | 'report_issue' | 'noop';
19
+ reason: string;
20
+ scheduledFor?: string;
21
+ slotKey?: string;
22
+ }
23
+ export type SchedulerStatus = 'registered' | 'pending_cerebellum' | 'registration_failed' | 'running' | 'disabled';
24
+ export type TaskSchedule = {
25
+ type: 'interval';
26
+ every: number;
27
+ unit: 'minutes' | 'hours' | 'days' | 'weeks';
28
+ } | {
29
+ type: 'daily_at';
30
+ time: string;
31
+ timezone?: string;
32
+ catchUpPolicy?: 'none' | 'once';
33
+ } | {
34
+ type: 'one_shot';
35
+ dueAt: string;
36
+ timezone?: string;
37
+ catchUpPolicy?: 'none' | 'once';
38
+ };
39
+ export interface HeartbeatEvent {
40
+ timestamp: number;
41
+ actions: TaskAction[];
42
+ }
43
+ export interface SupervisorTaskState {
44
+ taskId: string;
45
+ description: string;
46
+ enabled: boolean;
47
+ kind: 'recurring' | 'one_shot';
48
+ executionSurface?: 'browser' | 'api' | 'either' | 'none';
49
+ scheduleHint: string;
50
+ schedule: TaskSchedule;
51
+ status: 'pending' | 'idle' | 'running' | 'success' | 'failure' | 'cancelled';
52
+ createdAt?: string;
53
+ lastRunAt?: string;
54
+ lastScheduledSlot?: string;
55
+ schedulerStatus?: SchedulerStatus;
56
+ lastSummary?: string;
57
+ metadata?: Record<string, string>;
58
+ }
59
+ export interface SupervisorState {
60
+ timestamp: number;
61
+ timezone: string;
62
+ tasks: SupervisorTaskState[];
63
+ activeTaskIds: string[];
64
+ browserAvailable: boolean;
65
+ channelsAvailable: boolean;
66
+ cerebrumBusy: boolean;
67
+ fineTuneRunning: boolean;
68
+ }
69
+ export interface VerificationCheck {
70
+ name: string;
71
+ passed: boolean;
72
+ description: string;
73
+ }
74
+ export interface VerificationResult {
75
+ passed: boolean;
76
+ checks: VerificationCheck[];
77
+ modelVerdict: boolean;
78
+ }
79
+ export interface RecoveryBrowserTab {
80
+ id: string;
81
+ title?: string;
82
+ url: string;
83
+ active: boolean;
84
+ }
85
+ export interface RecoveryBrowserState {
86
+ currentUrl?: string;
87
+ activeTabId?: string;
88
+ tabs?: RecoveryBrowserTab[];
89
+ }
90
+ export interface RecoveryProgressEntry {
91
+ source: 'tool' | 'checkpoint';
92
+ action: string;
93
+ summary: string;
94
+ toolName?: string;
95
+ url?: string;
96
+ tabId?: string;
97
+ stateChanging: boolean;
98
+ isError: boolean;
99
+ checkpointStatus?: 'done' | 'in_progress';
100
+ }
101
+ export interface RecoveryTaskCheckpoint {
102
+ step: string;
103
+ status: 'done' | 'in_progress';
104
+ evidence: string;
105
+ summary: string;
106
+ }
107
+ export interface RecoveryBoundary {
108
+ id: string;
109
+ kind: 'tool' | 'checkpoint' | 'completion' | 'stall' | 'recovery';
110
+ action: string;
111
+ summary: string;
112
+ createdAt: number;
113
+ stateChanging: boolean;
114
+ browserState?: RecoveryBrowserState;
115
+ url?: string;
116
+ tabId?: string;
117
+ evidence?: string;
118
+ checkpointStatus?: 'done' | 'in_progress';
119
+ }
120
+ export type TurnOutcome = 'completed' | 'completed_no_text' | 'ended_on_tool_calls' | 'completion_signal_missing' | 'aborted' | 'stalled' | 'protocol_error';
121
+ export type StreamContentKind = 'text' | 'tool-call' | 'empty' | 'other' | 'error';
122
+ export interface TurnRecoveryRequest {
123
+ conversationId: string;
124
+ turnId: string;
125
+ attempt: number;
126
+ cause: 'stall' | 'completion';
127
+ phase: string;
128
+ activeToolName?: string;
129
+ activeToolCallId?: string;
130
+ stallRetryCount: number;
131
+ completionRetryCount: number;
132
+ finishReason?: string;
133
+ turnOutcome: TurnOutcome;
134
+ lastContentKind: StreamContentKind;
135
+ elapsedSeconds?: number;
136
+ partialContent?: string;
137
+ latestUserMessage?: string;
138
+ browserState: RecoveryBrowserState;
139
+ progressEntries: RecoveryProgressEntry[];
140
+ taskCheckpoints: RecoveryTaskCheckpoint[];
141
+ latestBoundary?: RecoveryBoundary;
142
+ recentBoundaries: RecoveryBoundary[];
143
+ repetitionSignals: string[];
144
+ }
145
+ export interface TurnRecoveryAssessment {
146
+ action: 'wait' | 'retry' | 'stop';
147
+ operatorMessage: string;
148
+ modelMessage: string;
149
+ diagnosis: string;
150
+ nextStep: string;
151
+ completedSteps: string[];
152
+ waitSeconds?: number;
153
+ }
154
+ export interface AgentHealthAction {
155
+ agentId: string;
156
+ action: 'ok' | 'ping' | 'retry' | 'cancel' | 'timeout';
157
+ reason: string;
158
+ }
159
+ export interface AgentStateInput {
160
+ id: string;
161
+ task: string;
162
+ status: string;
163
+ spawnedAt: number;
164
+ lastActivityAt: number;
165
+ timeoutMs: number;
166
+ messagesCount: number;
167
+ toolCallsCount: number;
168
+ retryCount: number;
169
+ progressNote?: string;
170
+ progressPercent?: number;
171
+ lastProgressAt?: number;
172
+ deadlineAt?: number;
173
+ }
174
+ export interface SystemStatus {
175
+ healthy: boolean;
176
+ modelName: string;
177
+ uptimeSeconds: number;
178
+ tasksRegistered: number;
179
+ agentsTotal: number;
180
+ agentsRunning: number;
181
+ agentsCompleted: number;
182
+ agentsFailed: number;
183
+ pendingActions: AgentHealthAction[];
184
+ }
185
+ export interface FineTuneStatus {
186
+ status: 'idle' | 'running' | 'completed' | 'failed';
187
+ jobId: string;
188
+ progress: number;
189
+ currentStep: number;
190
+ totalSteps: number;
191
+ currentLoss: number;
192
+ error: string;
193
+ checkpointPath: string;
194
+ startedAt: number;
195
+ completedAt: number;
196
+ }
197
+ export interface FineTuneStartResult {
198
+ jobId: string;
199
+ started: boolean;
200
+ error: string;
201
+ }
202
+ export interface TrainingPairInput {
203
+ instruction: string;
204
+ response: string;
205
+ source: string;
206
+ createdAt: number;
207
+ }
208
+ export declare class CerebellumClient {
209
+ private address;
210
+ private connected;
211
+ private client;
212
+ constructor(address?: string);
213
+ connect(): Promise<void>;
214
+ disconnect(): Promise<void>;
215
+ isConnected(): boolean;
216
+ getStatus(): Promise<CerebellumStatus | null>;
217
+ registerTask(description: string, scheduleHint: string, metadata?: Record<string, string>, schedule?: TaskSchedule): Promise<string | null>;
218
+ unregisterTask(taskId: string): Promise<void>;
219
+ listTasks(): Promise<TaskState[]>;
220
+ syncManagedTasks(tasks: SupervisorTaskState[], timezone: string): Promise<number>;
221
+ reportSupervisorState(request: SupervisorState): Promise<TaskAction[]>;
222
+ subscribeHeartbeat(intervalSeconds?: number): AsyncIterable<HeartbeatEvent>;
223
+ verifyToolResult(toolName: string, toolArgs: Record<string, string>, toolOutput: string, claimedSuccess: boolean): Promise<VerificationResult | null>;
224
+ assessTurnRecovery(request: TurnRecoveryRequest): Promise<TurnRecoveryAssessment | null>;
225
+ reportAgentStates(agents: AgentStateInput[]): Promise<AgentHealthAction[]>;
226
+ getSystemStatus(): Promise<SystemStatus | null>;
227
+ ingestTrainingData(pairs: TrainingPairInput[]): Promise<number>;
228
+ startFineTune(config?: {
229
+ method?: string;
230
+ epochs?: number;
231
+ learningRate?: number;
232
+ batchSize?: number;
233
+ }): Promise<FineTuneStartResult>;
234
+ getFineTuneStatus(): Promise<FineTuneStatus | null>;
235
+ private serializeTaskSchedule;
236
+ private deserializeTaskSchedule;
237
+ }
238
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js ADDED
@@ -0,0 +1,553 @@
1
+ import * as grpc from '@grpc/grpc-js';
2
+ import * as protoLoader from '@grpc/proto-loader';
3
+ import { existsSync } from 'fs';
4
+ import { fileURLToPath } from 'url';
5
+ import { dirname, resolve } from 'path';
6
+ export class CerebellumClient {
7
+ address;
8
+ connected = false;
9
+ client = null;
10
+ constructor(address = 'localhost:50051') {
11
+ this.address = address;
12
+ }
13
+ async connect() {
14
+ const currentDir = dirname(fileURLToPath(import.meta.url));
15
+ // Look for proto bundled with this package first, fall back to monorepo root
16
+ let protoPath = resolve(currentDir, '../proto/cerebellum.proto');
17
+ if (!existsSync(protoPath)) {
18
+ protoPath = resolve(currentDir, '../../../proto/cerebellum.proto');
19
+ }
20
+ if (!existsSync(protoPath)) {
21
+ this.connected = false;
22
+ throw new Error(`Proto file not found at ${protoPath}. Reinstall @producible/cereworker-cerebellum-client.`);
23
+ }
24
+ const packageDefinition = protoLoader.loadSync(protoPath, {
25
+ keepCase: false,
26
+ longs: Number,
27
+ enums: String,
28
+ defaults: true,
29
+ oneofs: true,
30
+ });
31
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
+ const proto = grpc.loadPackageDefinition(packageDefinition);
33
+ const CerebellumService = proto.cereworker.cerebellum.Cerebellum;
34
+ this.client = new CerebellumService(this.address, grpc.credentials.createInsecure());
35
+ // Test connection with a deadline
36
+ try {
37
+ await new Promise((resolve, reject) => {
38
+ const deadline = new Date(Date.now() + 5000);
39
+ this.client.waitForReady(deadline, (err) => {
40
+ if (err)
41
+ reject(err);
42
+ else
43
+ resolve();
44
+ });
45
+ });
46
+ this.connected = true;
47
+ }
48
+ catch (err) {
49
+ this.connected = false;
50
+ throw err;
51
+ }
52
+ }
53
+ async disconnect() {
54
+ if (this.client) {
55
+ this.client.close();
56
+ this.client = null;
57
+ }
58
+ this.connected = false;
59
+ }
60
+ isConnected() {
61
+ return this.connected;
62
+ }
63
+ async getStatus() {
64
+ if (!this.connected)
65
+ return null;
66
+ return new Promise((resolve, reject) => {
67
+ this.client.getStatus({}, (err, response) => {
68
+ if (err) {
69
+ reject(err);
70
+ return;
71
+ }
72
+ resolve({
73
+ healthy: response.healthy,
74
+ modelName: response.modelName,
75
+ uptimeSeconds: response.uptimeSeconds,
76
+ tasksRegistered: response.tasksRegistered,
77
+ });
78
+ });
79
+ });
80
+ }
81
+ async registerTask(description, scheduleHint, metadata, schedule) {
82
+ if (!this.connected)
83
+ return null;
84
+ return new Promise((resolve, reject) => {
85
+ this.client.registerTask({
86
+ description,
87
+ scheduleHint,
88
+ metadata: metadata || {},
89
+ schedule: this.serializeTaskSchedule(schedule),
90
+ }, (err, response) => {
91
+ if (err) {
92
+ reject(err);
93
+ return;
94
+ }
95
+ resolve(response.taskId);
96
+ });
97
+ });
98
+ }
99
+ async unregisterTask(taskId) {
100
+ if (!this.connected)
101
+ return;
102
+ return new Promise((resolve, reject) => {
103
+ this.client.unregisterTask({ taskId }, (err) => {
104
+ if (err)
105
+ reject(err);
106
+ else
107
+ resolve();
108
+ });
109
+ });
110
+ }
111
+ async listTasks() {
112
+ if (!this.connected)
113
+ return [];
114
+ return new Promise((resolve, reject) => {
115
+ this.client.listTasks({}, (err, response) => {
116
+ if (err) {
117
+ reject(err);
118
+ return;
119
+ }
120
+ resolve((response.tasks || []).map((t) => ({
121
+ taskId: t.taskId,
122
+ description: t.description,
123
+ status: t.status,
124
+ lastRun: t.lastRun,
125
+ scheduleHint: t.scheduleHint,
126
+ schedule: this.deserializeTaskSchedule(t.schedule),
127
+ metadata: t.metadata,
128
+ })));
129
+ });
130
+ });
131
+ }
132
+ async syncManagedTasks(tasks, timezone) {
133
+ if (!this.connected)
134
+ return 0;
135
+ return new Promise((resolve, reject) => {
136
+ this.client.syncManagedTasks({
137
+ timezone,
138
+ tasks: tasks.map((task) => ({
139
+ taskId: task.taskId,
140
+ description: task.description,
141
+ enabled: task.enabled,
142
+ kind: task.kind,
143
+ scheduleHint: task.scheduleHint,
144
+ schedule: this.serializeTaskSchedule(task.schedule),
145
+ status: task.status,
146
+ createdAt: task.createdAt ?? '',
147
+ lastRunAt: task.lastRunAt ?? '',
148
+ lastScheduledSlot: task.lastScheduledSlot ?? '',
149
+ schedulerStatus: task.schedulerStatus ?? '',
150
+ lastSummary: task.lastSummary ?? '',
151
+ metadata: task.metadata ?? {},
152
+ })),
153
+ }, (err, response) => {
154
+ if (err) {
155
+ reject(err);
156
+ return;
157
+ }
158
+ resolve(response.syncedCount ?? 0);
159
+ });
160
+ });
161
+ }
162
+ async reportSupervisorState(request) {
163
+ if (!this.connected)
164
+ return [];
165
+ return new Promise((resolve, reject) => {
166
+ this.client.reportSupervisorState({
167
+ timestamp: request.timestamp,
168
+ timezone: request.timezone,
169
+ activeTaskIds: request.activeTaskIds,
170
+ browserAvailable: request.browserAvailable,
171
+ channelsAvailable: request.channelsAvailable,
172
+ cerebrumBusy: request.cerebrumBusy,
173
+ fineTuneRunning: request.fineTuneRunning,
174
+ tasks: request.tasks.map((task) => ({
175
+ taskId: task.taskId,
176
+ description: task.description,
177
+ enabled: task.enabled,
178
+ kind: task.kind,
179
+ scheduleHint: task.scheduleHint,
180
+ schedule: this.serializeTaskSchedule(task.schedule),
181
+ status: task.status,
182
+ createdAt: task.createdAt ?? '',
183
+ lastRunAt: task.lastRunAt ?? '',
184
+ lastScheduledSlot: task.lastScheduledSlot ?? '',
185
+ schedulerStatus: task.schedulerStatus ?? '',
186
+ lastSummary: task.lastSummary ?? '',
187
+ metadata: task.metadata ?? {},
188
+ })),
189
+ }, (err, response) => {
190
+ if (err) {
191
+ reject(err);
192
+ return;
193
+ }
194
+ resolve((response.actions || []).map((action) => ({
195
+ taskId: action.taskId,
196
+ action: action.action,
197
+ reason: action.reason,
198
+ scheduledFor: action.scheduledFor || undefined,
199
+ slotKey: action.slotKey || undefined,
200
+ })));
201
+ });
202
+ });
203
+ }
204
+ async *subscribeHeartbeat(intervalSeconds = 30) {
205
+ if (!this.connected)
206
+ return;
207
+ const stream = this.client.subscribeHeartbeat({ intervalSeconds });
208
+ try {
209
+ for await (const event of stream) {
210
+ yield {
211
+ timestamp: event.timestamp,
212
+ actions: (event.actions || []).map((a) => ({
213
+ taskId: a.taskId,
214
+ action: a.action,
215
+ reason: a.reason,
216
+ scheduledFor: a.scheduledFor || undefined,
217
+ slotKey: a.slotKey || undefined,
218
+ })),
219
+ };
220
+ }
221
+ }
222
+ catch (err) {
223
+ // Stream ended or connection lost
224
+ if (err?.code !== grpc.status.CANCELLED) {
225
+ throw err;
226
+ }
227
+ }
228
+ }
229
+ async verifyToolResult(toolName, toolArgs, toolOutput, claimedSuccess) {
230
+ if (!this.connected)
231
+ return null;
232
+ return new Promise((resolve, reject) => {
233
+ const deadline = new Date(Date.now() + 5_000);
234
+ this.client.verifyToolResult({
235
+ toolName,
236
+ toolArgs,
237
+ toolOutput,
238
+ claimedSuccess,
239
+ }, { deadline }, (err, response) => {
240
+ if (err) {
241
+ reject(err);
242
+ return;
243
+ }
244
+ resolve({
245
+ passed: response.passed,
246
+ modelVerdict: response.modelVerdict,
247
+ checks: (response.checks || []).map((c) => ({
248
+ name: c.name,
249
+ passed: c.passed,
250
+ description: c.description,
251
+ })),
252
+ });
253
+ });
254
+ });
255
+ }
256
+ async assessTurnRecovery(request) {
257
+ if (!this.connected)
258
+ return null;
259
+ return new Promise((resolve, reject) => {
260
+ const deadline = new Date(Date.now() + 5_000);
261
+ this.client.assessTurnRecovery({
262
+ conversationId: request.conversationId,
263
+ turnId: request.turnId,
264
+ attempt: request.attempt,
265
+ cause: request.cause,
266
+ phase: request.phase,
267
+ activeToolName: request.activeToolName ?? '',
268
+ activeToolCallId: request.activeToolCallId ?? '',
269
+ stallRetryCount: request.stallRetryCount,
270
+ completionRetryCount: request.completionRetryCount,
271
+ finishReason: request.finishReason ?? '',
272
+ turnOutcome: request.turnOutcome,
273
+ lastContentKind: request.lastContentKind,
274
+ elapsedSeconds: request.elapsedSeconds ?? 0,
275
+ partialContent: request.partialContent ?? '',
276
+ latestUserMessage: request.latestUserMessage ?? '',
277
+ browserState: {
278
+ currentUrl: request.browserState.currentUrl ?? '',
279
+ activeTabId: request.browserState.activeTabId ?? '',
280
+ tabs: (request.browserState.tabs ?? []).map((tab) => ({
281
+ id: tab.id,
282
+ title: tab.title ?? '',
283
+ url: tab.url,
284
+ active: tab.active,
285
+ })),
286
+ },
287
+ progressEntries: request.progressEntries.map((entry) => ({
288
+ source: entry.source,
289
+ action: entry.action,
290
+ summary: entry.summary,
291
+ toolName: entry.toolName ?? '',
292
+ url: entry.url ?? '',
293
+ tabId: entry.tabId ?? '',
294
+ stateChanging: entry.stateChanging,
295
+ isError: entry.isError,
296
+ checkpointStatus: entry.checkpointStatus ?? '',
297
+ })),
298
+ taskCheckpoints: request.taskCheckpoints.map((checkpoint) => ({
299
+ step: checkpoint.step,
300
+ status: checkpoint.status,
301
+ evidence: checkpoint.evidence,
302
+ summary: checkpoint.summary,
303
+ })),
304
+ latestBoundary: request.latestBoundary
305
+ ? {
306
+ id: request.latestBoundary.id,
307
+ kind: request.latestBoundary.kind,
308
+ action: request.latestBoundary.action,
309
+ summary: request.latestBoundary.summary,
310
+ createdAt: request.latestBoundary.createdAt,
311
+ stateChanging: request.latestBoundary.stateChanging,
312
+ browserState: request.latestBoundary.browserState
313
+ ? {
314
+ currentUrl: request.latestBoundary.browserState.currentUrl ?? '',
315
+ activeTabId: request.latestBoundary.browserState.activeTabId ?? '',
316
+ tabs: (request.latestBoundary.browserState.tabs ?? []).map((tab) => ({
317
+ id: tab.id,
318
+ title: tab.title ?? '',
319
+ url: tab.url,
320
+ active: tab.active,
321
+ })),
322
+ }
323
+ : undefined,
324
+ url: request.latestBoundary.url ?? '',
325
+ tabId: request.latestBoundary.tabId ?? '',
326
+ evidence: request.latestBoundary.evidence ?? '',
327
+ checkpointStatus: request.latestBoundary.checkpointStatus ?? '',
328
+ }
329
+ : undefined,
330
+ recentBoundaries: request.recentBoundaries.map((boundary) => ({
331
+ id: boundary.id,
332
+ kind: boundary.kind,
333
+ action: boundary.action,
334
+ summary: boundary.summary,
335
+ createdAt: boundary.createdAt,
336
+ stateChanging: boundary.stateChanging,
337
+ browserState: boundary.browserState
338
+ ? {
339
+ currentUrl: boundary.browserState.currentUrl ?? '',
340
+ activeTabId: boundary.browserState.activeTabId ?? '',
341
+ tabs: (boundary.browserState.tabs ?? []).map((tab) => ({
342
+ id: tab.id,
343
+ title: tab.title ?? '',
344
+ url: tab.url,
345
+ active: tab.active,
346
+ })),
347
+ }
348
+ : undefined,
349
+ url: boundary.url ?? '',
350
+ tabId: boundary.tabId ?? '',
351
+ evidence: boundary.evidence ?? '',
352
+ checkpointStatus: boundary.checkpointStatus ?? '',
353
+ })),
354
+ repetitionSignals: request.repetitionSignals,
355
+ }, { deadline }, (err, response) => {
356
+ if (err) {
357
+ reject(err);
358
+ return;
359
+ }
360
+ resolve({
361
+ action: response.action,
362
+ operatorMessage: response.operatorMessage,
363
+ modelMessage: response.modelMessage,
364
+ diagnosis: response.diagnosis,
365
+ nextStep: response.nextStep,
366
+ completedSteps: response.completedSteps ?? [],
367
+ waitSeconds: response.waitSeconds || undefined,
368
+ });
369
+ });
370
+ });
371
+ }
372
+ async reportAgentStates(agents) {
373
+ if (!this.connected)
374
+ return [];
375
+ const grpcAgents = agents.map((a) => ({
376
+ id: a.id,
377
+ task: a.task,
378
+ status: a.status,
379
+ spawnedAt: a.spawnedAt,
380
+ lastActivityAt: a.lastActivityAt,
381
+ timeoutMs: a.timeoutMs,
382
+ messagesCount: a.messagesCount,
383
+ toolCallsCount: a.toolCallsCount,
384
+ retryCount: a.retryCount,
385
+ progressNote: a.progressNote ?? '',
386
+ progressPercent: a.progressPercent ?? -1,
387
+ lastProgressAt: a.lastProgressAt ?? 0,
388
+ deadlineAt: a.deadlineAt ?? 0,
389
+ }));
390
+ return new Promise((resolve, reject) => {
391
+ this.client.reportAgentStates({ agents: grpcAgents }, (err, response) => {
392
+ if (err) {
393
+ reject(err);
394
+ return;
395
+ }
396
+ resolve((response.actions || []).map((a) => ({
397
+ agentId: a.agentId,
398
+ action: a.action,
399
+ reason: a.reason,
400
+ })));
401
+ });
402
+ });
403
+ }
404
+ async getSystemStatus() {
405
+ if (!this.connected)
406
+ return null;
407
+ return new Promise((resolve, reject) => {
408
+ this.client.getSystemStatus({}, (err, response) => {
409
+ if (err) {
410
+ reject(err);
411
+ return;
412
+ }
413
+ resolve({
414
+ healthy: response.healthy,
415
+ modelName: response.modelName,
416
+ uptimeSeconds: response.uptimeSeconds,
417
+ tasksRegistered: response.tasksRegistered,
418
+ agentsTotal: response.agentsTotal,
419
+ agentsRunning: response.agentsRunning,
420
+ agentsCompleted: response.agentsCompleted,
421
+ agentsFailed: response.agentsFailed,
422
+ pendingActions: (response.pendingActions || []).map((a) => ({
423
+ agentId: a.agentId,
424
+ action: a.action,
425
+ reason: a.reason,
426
+ })),
427
+ });
428
+ });
429
+ });
430
+ }
431
+ async ingestTrainingData(pairs) {
432
+ if (!this.connected)
433
+ return 0;
434
+ const grpcPairs = pairs.map((p) => ({
435
+ instruction: p.instruction,
436
+ response: p.response,
437
+ source: p.source,
438
+ createdAt: p.createdAt,
439
+ }));
440
+ return new Promise((resolve, reject) => {
441
+ this.client.ingestTrainingData({ pairs: grpcPairs }, (err, response) => {
442
+ if (err) {
443
+ reject(err);
444
+ return;
445
+ }
446
+ resolve(response.totalPending);
447
+ });
448
+ });
449
+ }
450
+ async startFineTune(config) {
451
+ if (!this.connected)
452
+ return { jobId: '', started: false, error: 'Not connected' };
453
+ return new Promise((resolve, reject) => {
454
+ this.client.startFineTune({
455
+ method: config?.method ?? 'auto',
456
+ epochs: config?.epochs ?? 3,
457
+ learningRate: config?.learningRate ?? 2e-4,
458
+ batchSize: config?.batchSize ?? 4,
459
+ }, (err, response) => {
460
+ if (err) {
461
+ reject(err);
462
+ return;
463
+ }
464
+ resolve({
465
+ jobId: response.jobId,
466
+ started: response.started,
467
+ error: response.error,
468
+ });
469
+ });
470
+ });
471
+ }
472
+ async getFineTuneStatus() {
473
+ if (!this.connected)
474
+ return null;
475
+ return new Promise((resolve, reject) => {
476
+ this.client.getFineTuneStatus({}, (err, response) => {
477
+ if (err) {
478
+ reject(err);
479
+ return;
480
+ }
481
+ resolve({
482
+ status: response.status,
483
+ jobId: response.jobId,
484
+ progress: response.progress,
485
+ currentStep: response.currentStep,
486
+ totalSteps: response.totalSteps,
487
+ currentLoss: response.currentLoss,
488
+ error: response.error,
489
+ checkpointPath: response.checkpointPath,
490
+ startedAt: response.startedAt,
491
+ completedAt: response.completedAt,
492
+ });
493
+ });
494
+ });
495
+ }
496
+ serializeTaskSchedule(schedule) {
497
+ if (!schedule)
498
+ return undefined;
499
+ if (schedule.type === 'interval') {
500
+ return {
501
+ interval: {
502
+ every: schedule.every,
503
+ unit: schedule.unit,
504
+ },
505
+ };
506
+ }
507
+ if (schedule.type === 'daily_at') {
508
+ return {
509
+ dailyAt: {
510
+ time: schedule.time,
511
+ timezone: schedule.timezone ?? '',
512
+ catchUpPolicy: schedule.catchUpPolicy ?? 'once',
513
+ },
514
+ };
515
+ }
516
+ return {
517
+ oneShot: {
518
+ dueAt: schedule.dueAt,
519
+ timezone: schedule.timezone ?? '',
520
+ catchUpPolicy: schedule.catchUpPolicy ?? 'once',
521
+ },
522
+ };
523
+ }
524
+ deserializeTaskSchedule(raw) {
525
+ if (!raw)
526
+ return undefined;
527
+ if (raw.interval && Number(raw.interval.every) > 0) {
528
+ return {
529
+ type: 'interval',
530
+ every: Number(raw.interval.every),
531
+ unit: raw.interval.unit,
532
+ };
533
+ }
534
+ if (raw.dailyAt && raw.dailyAt.time) {
535
+ return {
536
+ type: 'daily_at',
537
+ time: raw.dailyAt.time,
538
+ timezone: raw.dailyAt.timezone || undefined,
539
+ catchUpPolicy: raw.dailyAt.catchUpPolicy || undefined,
540
+ };
541
+ }
542
+ if (raw.oneShot && raw.oneShot.dueAt) {
543
+ return {
544
+ type: 'one_shot',
545
+ dueAt: raw.oneShot.dueAt,
546
+ timezone: raw.oneShot.timezone || undefined,
547
+ catchUpPolicy: raw.oneShot.catchUpPolicy || undefined,
548
+ };
549
+ }
550
+ return undefined;
551
+ }
552
+ }
553
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { CerebellumClient } from './client.js';
2
+ export type { CerebellumStatus, TaskState, TaskAction, SchedulerStatus, TaskSchedule, HeartbeatEvent, SupervisorTaskState, SupervisorState, VerificationResult, VerificationCheck, AgentHealthAction, AgentStateInput, SystemStatus, TurnRecoveryAssessment, TurnRecoveryRequest, } from './client.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EACV,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,eAAe,EACf,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { CerebellumClient } from './client.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@producible/cereworker-cerebellum-client",
3
+ "version": "26.520.1",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "proto"
10
+ ],
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/Producible/CereWorker.git",
17
+ "directory": "packages/cerebellum-client"
18
+ },
19
+ "dependencies": {
20
+ "@grpc/grpc-js": "^1.12.0",
21
+ "@grpc/proto-loader": "^0.7.0",
22
+ "@producible/cereworker-core": "26.520.1"
23
+ },
24
+ "devDependencies": {
25
+ "typescript": "^5.7.3"
26
+ },
27
+ "scripts": {
28
+ "build": "tsc",
29
+ "typecheck": "tsc --noEmit",
30
+ "lint": "eslint src/",
31
+ "clean": "rm -rf dist"
32
+ }
33
+ }
@@ -0,0 +1,287 @@
1
+ syntax = "proto3";
2
+
3
+ package cereworker.cerebellum;
4
+
5
+ service Cerebellum {
6
+ // Heartbeat: cerebellum evaluates what tasks need attention
7
+ rpc Heartbeat(HeartbeatRequest) returns (HeartbeatResponse);
8
+
9
+ // Register a task for heartbeat to manage
10
+ rpc RegisterTask(RegisterTaskRequest) returns (RegisterTaskResponse);
11
+
12
+ // Remove a registered task
13
+ rpc UnregisterTask(UnregisterTaskRequest) returns (UnregisterTaskResponse);
14
+
15
+ // List all registered tasks
16
+ rpc ListTasks(ListTasksRequest) returns (ListTasksResponse);
17
+
18
+ // Bulk-sync the durable managed task registry into Cerebellum's scheduler view.
19
+ rpc SyncManagedTasks(SyncManagedTasksRequest) returns (SyncManagedTasksResponse);
20
+
21
+ // Evaluate scheduler/system state on every heartbeat tick.
22
+ rpc ReportSupervisorState(SupervisorStateRequest) returns (SupervisorStateResponse);
23
+
24
+ // Health check
25
+ rpc GetStatus(StatusRequest) returns (StatusResponse);
26
+
27
+ // Stream heartbeat events to the TypeScript side
28
+ rpc SubscribeHeartbeat(SubscribeRequest) returns (stream HeartbeatEvent);
29
+
30
+ // Verify a tool execution result (Muscle+Skeleton)
31
+ rpc VerifyToolResult(VerifyRequest) returns (VerifyResponse);
32
+
33
+ // Report sub-agent states for health monitoring
34
+ rpc ReportAgentStates(AgentStatesRequest) returns (AgentStatesResponse);
35
+
36
+ // Query overall system status (main agent + sub-agents)
37
+ rpc GetSystemStatus(SystemStatusRequest) returns (SystemStatusResponse);
38
+
39
+ // Instinct: Fine-tuning
40
+ rpc IngestTrainingData(IngestRequest) returns (IngestResponse);
41
+ rpc StartFineTune(FineTuneRequest) returns (FineTuneResponse);
42
+ rpc GetFineTuneStatus(FineTuneStatusRequest) returns (FineTuneStatusResponse);
43
+ }
44
+
45
+ message TaskState {
46
+ string task_id = 1;
47
+ string description = 2;
48
+ string status = 3; // "pending", "running", "waiting", "completed"
49
+ int64 last_run = 4;
50
+ string schedule_hint = 5; // natural language like "every 5 minutes" or "when idle"
51
+ map<string, string> metadata = 6;
52
+ TaskSchedule schedule = 7;
53
+ }
54
+
55
+ message TaskAction {
56
+ string task_id = 1;
57
+ string action = 2; // "invoke", "skip", "defer", "cancel"
58
+ string reason = 3; // cerebellum's reasoning
59
+ string scheduled_for = 4;
60
+ string slot_key = 5;
61
+ }
62
+
63
+ message HeartbeatRequest {
64
+ repeated TaskState tasks = 1;
65
+ string system_summary = 2;
66
+ int64 timestamp = 3;
67
+ }
68
+
69
+ message HeartbeatResponse {
70
+ repeated TaskAction actions = 1;
71
+ }
72
+
73
+ message HeartbeatEvent {
74
+ int64 timestamp = 1;
75
+ repeated TaskAction actions = 2;
76
+ }
77
+
78
+ message RegisterTaskRequest {
79
+ string description = 1;
80
+ string schedule_hint = 2;
81
+ map<string, string> metadata = 3;
82
+ TaskSchedule schedule = 4;
83
+ }
84
+
85
+ message RegisterTaskResponse {
86
+ string task_id = 1;
87
+ }
88
+
89
+ message IntervalTaskSchedule {
90
+ int32 every = 1;
91
+ string unit = 2;
92
+ }
93
+
94
+ message DailyAtTaskSchedule {
95
+ string time = 1;
96
+ string timezone = 2;
97
+ string catch_up_policy = 3;
98
+ }
99
+
100
+ message OneShotTaskSchedule {
101
+ string due_at = 1;
102
+ string timezone = 2;
103
+ string catch_up_policy = 3;
104
+ }
105
+
106
+ message TaskSchedule {
107
+ oneof kind {
108
+ IntervalTaskSchedule interval = 1;
109
+ DailyAtTaskSchedule daily_at = 2;
110
+ OneShotTaskSchedule one_shot = 3;
111
+ }
112
+ }
113
+
114
+ message ManagedTaskDefinition {
115
+ string task_id = 1;
116
+ string description = 2;
117
+ bool enabled = 3;
118
+ string kind = 4;
119
+ string schedule_hint = 5;
120
+ TaskSchedule schedule = 6;
121
+ string status = 7;
122
+ string created_at = 8;
123
+ string last_run_at = 9;
124
+ string last_scheduled_slot = 10;
125
+ string scheduler_status = 11;
126
+ string last_summary = 12;
127
+ map<string, string> metadata = 13;
128
+ }
129
+
130
+ message SyncManagedTasksRequest {
131
+ string timezone = 1;
132
+ repeated ManagedTaskDefinition tasks = 2;
133
+ }
134
+
135
+ message SyncManagedTasksResponse {
136
+ int32 synced_count = 1;
137
+ }
138
+
139
+ message SupervisorStateRequest {
140
+ int64 timestamp = 1;
141
+ string timezone = 2;
142
+ repeated ManagedTaskDefinition tasks = 3;
143
+ repeated string active_task_ids = 4;
144
+ bool browser_available = 5;
145
+ bool channels_available = 6;
146
+ bool cerebrum_busy = 7;
147
+ bool fine_tune_running = 8;
148
+ }
149
+
150
+ message SupervisorStateResponse {
151
+ repeated TaskAction actions = 1;
152
+ }
153
+
154
+ message UnregisterTaskRequest {
155
+ string task_id = 1;
156
+ }
157
+
158
+ message UnregisterTaskResponse {}
159
+
160
+ message ListTasksRequest {}
161
+
162
+ message ListTasksResponse {
163
+ repeated TaskState tasks = 1;
164
+ }
165
+
166
+ message StatusRequest {}
167
+
168
+ message StatusResponse {
169
+ bool healthy = 1;
170
+ string model_name = 2;
171
+ int64 uptime_seconds = 3;
172
+ int32 tasks_registered = 4;
173
+ }
174
+
175
+ message SubscribeRequest {
176
+ int32 interval_seconds = 1; // how often to emit heartbeat events (default: 30)
177
+ }
178
+
179
+ message VerifyRequest {
180
+ string tool_name = 1; // "writeFile", "shell", "readFile", etc.
181
+ map<string, string> tool_args = 2; // arguments passed to the tool
182
+ string tool_output = 3; // output the tool returned
183
+ bool claimed_success = 4; // whether the tool reported success
184
+ }
185
+
186
+ message VerifyCheck {
187
+ string name = 1; // "file_exists", "recently_modified", etc.
188
+ bool passed = 2;
189
+ string description = 3;
190
+ }
191
+
192
+ message VerifyResponse {
193
+ bool passed = 1; // overall verdict
194
+ repeated VerifyCheck checks = 2;
195
+ bool model_verdict = 3; // what the LLM specifically said
196
+ }
197
+
198
+ // Sub-agent monitoring messages
199
+
200
+ message AgentState {
201
+ string id = 1;
202
+ string task = 2;
203
+ string status = 3; // pending, running, completed, failed, cancelled, timeout
204
+ int64 spawned_at = 4;
205
+ int64 last_activity_at = 5;
206
+ int64 timeout_ms = 6;
207
+ int32 messages_count = 7;
208
+ int32 tool_calls_count = 8;
209
+ int32 retry_count = 9;
210
+ string progress_note = 10; // latest progress description from agent
211
+ int32 progress_percent = 11; // 0-100, -1 if unset
212
+ int64 last_progress_at = 12; // timestamp of last progress report (ms)
213
+ int64 deadline_at = 13; // absolute deadline (ms since epoch), 0 = unlimited
214
+ }
215
+
216
+ message AgentHealthAction {
217
+ string agent_id = 1;
218
+ string action = 2; // "ok", "ping", "retry", "cancel", "timeout"
219
+ string reason = 3;
220
+ }
221
+
222
+ message AgentStatesRequest {
223
+ repeated AgentState agents = 1;
224
+ }
225
+
226
+ message AgentStatesResponse {
227
+ repeated AgentHealthAction actions = 1;
228
+ }
229
+
230
+ message SystemStatusRequest {}
231
+
232
+ message SystemStatusResponse {
233
+ bool healthy = 1;
234
+ string model_name = 2;
235
+ int64 uptime_seconds = 3;
236
+ int32 tasks_registered = 4;
237
+ int32 agents_total = 5;
238
+ int32 agents_running = 6;
239
+ int32 agents_completed = 7;
240
+ int32 agents_failed = 8;
241
+ repeated AgentHealthAction pending_actions = 9;
242
+ }
243
+
244
+ // Instinct: Fine-tuning messages
245
+
246
+ message TrainingPair {
247
+ string instruction = 1;
248
+ string response = 2;
249
+ string source = 3;
250
+ int64 created_at = 4;
251
+ }
252
+
253
+ message IngestRequest {
254
+ repeated TrainingPair pairs = 1;
255
+ }
256
+
257
+ message IngestResponse {
258
+ int32 total_pending = 1;
259
+ }
260
+
261
+ message FineTuneRequest {
262
+ string method = 1; // "auto", "lora", "qlora", "full"
263
+ int32 epochs = 2; // default 3
264
+ float learning_rate = 3; // default 2e-4
265
+ int32 batch_size = 4; // default 4
266
+ }
267
+
268
+ message FineTuneResponse {
269
+ string job_id = 1;
270
+ bool started = 2;
271
+ string error = 3;
272
+ }
273
+
274
+ message FineTuneStatusRequest {}
275
+
276
+ message FineTuneStatusResponse {
277
+ string status = 1; // "idle", "running", "completed", "failed"
278
+ string job_id = 2;
279
+ float progress = 3; // 0.0 - 1.0
280
+ int32 current_step = 4;
281
+ int32 total_steps = 5;
282
+ float current_loss = 6;
283
+ string error = 7;
284
+ string checkpoint_path = 8;
285
+ int64 started_at = 9;
286
+ int64 completed_at = 10;
287
+ }