agent-conveyor 0.1.11 → 0.1.13

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.
@@ -82,6 +82,58 @@ export interface AppWakeupDispatchPlan {
82
82
  total_actions: number;
83
83
  };
84
84
  }
85
+ export type AppAutopilotDesiredState = "active" | "stopped" | "unconfigured";
86
+ export type AppAutopilotQuiescenceState = "monitoring" | "not_applicable" | "stop_recommended";
87
+ export interface AppAutopilotRoleAutomation {
88
+ blocker: string | null;
89
+ can_create: boolean;
90
+ interval_minutes: number;
91
+ kind: "heartbeat";
92
+ name: string;
93
+ prompt: string;
94
+ role: AppLoopRole;
95
+ rrule: string;
96
+ target_thread_id: string | null;
97
+ target_thread_title: string | null;
98
+ }
99
+ export interface AppAutopilotPlan {
100
+ automation_specs: AppAutopilotRoleAutomation[];
101
+ control: {
102
+ dispatcher_command: string;
103
+ note: string;
104
+ status_command: string;
105
+ stop_command: string;
106
+ wakeup_dispatch_command: string;
107
+ };
108
+ desired_state: AppAutopilotDesiredState;
109
+ dispatcher: AppWakeupPlan["dispatcher"];
110
+ interval_minutes: number;
111
+ last_policy_event: {
112
+ event_id: string;
113
+ event_type: string;
114
+ recorded_at: string;
115
+ } | null;
116
+ quiescence: {
117
+ quiet_after: string | null;
118
+ quiet_cycles: number;
119
+ reason: string | null;
120
+ recommended_action: "continue" | "stop_autopilot";
121
+ state: AppAutopilotQuiescenceState;
122
+ threshold_cycles: number;
123
+ };
124
+ status: AppLoopStatus;
125
+ summary: {
126
+ blocked_automations: number;
127
+ creatable_automations: number;
128
+ dispatcher_required: boolean;
129
+ quiescence_recommended: boolean;
130
+ total_automations: number;
131
+ };
132
+ task: {
133
+ id: string;
134
+ name: string;
135
+ };
136
+ }
85
137
  export declare function appLoopStatusSync(database: DatabaseSync, options: {
86
138
  dbPath?: string | null;
87
139
  dispatcherId: string;
@@ -89,6 +141,18 @@ export declare function appLoopStatusSync(database: DatabaseSync, options: {
89
141
  now: string;
90
142
  taskName: string;
91
143
  }): AppLoopStatus;
144
+ export declare function appAutopilotPlanSync(database: DatabaseSync, options: {
145
+ dbPath?: string | null;
146
+ dispatchIntervalSeconds: number;
147
+ dispatcherId: string;
148
+ desiredState?: AppAutopilotDesiredState | null;
149
+ heartbeatIntervalMinutes: number;
150
+ quietAfterCycles: number;
151
+ heartbeatStaleSeconds: number;
152
+ now: string;
153
+ taskName: string;
154
+ watchIterations: number;
155
+ }): AppAutopilotPlan;
92
156
  export declare function appWakeupPlanSync(database: DatabaseSync, options: {
93
157
  dbPath?: string | null;
94
158
  dispatcherId: string;
@@ -100,6 +100,85 @@ export function appLoopStatusSync(database, options) {
100
100
  worker,
101
101
  };
102
102
  }
103
+ export function appAutopilotPlanSync(database, options) {
104
+ const status = appLoopStatusSync(database, {
105
+ dbPath: options.dbPath ?? null,
106
+ dispatcherId: options.dispatcherId,
107
+ heartbeatStaleSeconds: options.heartbeatStaleSeconds,
108
+ now: options.now,
109
+ taskName: options.taskName,
110
+ });
111
+ const lastPolicy = latestAppAutopilotPolicyEvent(database, status.task.id, options.dispatcherId);
112
+ const desiredState = options.desiredState ?? lastPolicy?.desired_state ?? "unconfigured";
113
+ const quiescence = appAutopilotQuiescenceSync(database, {
114
+ desiredState,
115
+ dispatcherId: options.dispatcherId,
116
+ quietAfterCycles: options.quietAfterCycles,
117
+ status,
118
+ taskId: status.task.id,
119
+ });
120
+ const dispatcherCommand = [
121
+ "conveyor dispatch --watch",
122
+ `--watch-iterations ${options.watchIterations}`,
123
+ `--interval ${formatNumber(options.dispatchIntervalSeconds)}`,
124
+ `--dispatcher-id ${shellQuote(options.dispatcherId)}`,
125
+ pathFlag(options.dbPath ?? null).trim(),
126
+ ].filter(Boolean).join(" ");
127
+ const automationSpecs = ["manager", "worker"].map((role) => {
128
+ const roleStatus = role === "manager" ? status.manager : status.worker;
129
+ const wakeup = roleWakeup(role, roleStatus, status.task.name, options.dbPath ?? null, roleStatus.lease.state);
130
+ const name = `Conveyor ${status.task.name} ${role} heartbeat`;
131
+ return {
132
+ blocker: roleStatus.codex_app_thread_id
133
+ ? null
134
+ : `No Codex app thread id is registered for the ${role}; register app thread metadata before creating an app heartbeat automation.`,
135
+ can_create: Boolean(roleStatus.codex_app_thread_id),
136
+ interval_minutes: options.heartbeatIntervalMinutes,
137
+ kind: "heartbeat",
138
+ name,
139
+ prompt: wakeup.prompt,
140
+ role,
141
+ rrule: `FREQ=MINUTELY;INTERVAL=${options.heartbeatIntervalMinutes}`,
142
+ target_thread_id: roleStatus.codex_app_thread_id,
143
+ target_thread_title: roleStatus.codex_app_thread_title,
144
+ };
145
+ });
146
+ const creatable = automationSpecs.filter((spec) => spec.can_create).length;
147
+ return {
148
+ automation_specs: automationSpecs,
149
+ control: {
150
+ dispatcher_command: dispatcherCommand,
151
+ note: "A plain shell CLI cannot call Codex app thread tools. Create or pause these heartbeat automations from a Codex app session, then use this CLI for status/start/stop receipts.",
152
+ status_command: `conveyor app-autopilot status ${shellQuote(status.task.name)}${pathFlag(options.dbPath ?? null)} --json`,
153
+ stop_command: `conveyor app-autopilot stop ${shellQuote(status.task.name)}${pathFlag(options.dbPath ?? null)} --json`,
154
+ wakeup_dispatch_command: `conveyor app-wakeup-dispatch ${shellQuote(status.task.name)} --dispatcher-id ${shellQuote(options.dispatcherId)}${pathFlag(options.dbPath ?? null)} --json`,
155
+ },
156
+ desired_state: desiredState,
157
+ dispatcher: {
158
+ command: dispatcherCommand,
159
+ required: status.dispatch.state !== "healthy",
160
+ state: status.dispatch.state,
161
+ },
162
+ interval_minutes: options.heartbeatIntervalMinutes,
163
+ last_policy_event: lastPolicy
164
+ ? {
165
+ event_id: lastPolicy.event_id,
166
+ event_type: lastPolicy.event_type,
167
+ recorded_at: lastPolicy.recorded_at,
168
+ }
169
+ : null,
170
+ quiescence,
171
+ status,
172
+ summary: {
173
+ blocked_automations: automationSpecs.length - creatable,
174
+ creatable_automations: creatable,
175
+ dispatcher_required: status.dispatch.state !== "healthy",
176
+ quiescence_recommended: quiescence.recommended_action === "stop_autopilot",
177
+ total_automations: automationSpecs.length,
178
+ },
179
+ task: status.task,
180
+ };
181
+ }
103
182
  export function appWakeupPlanSync(database, options) {
104
183
  const status = appLoopStatusSync(database, options);
105
184
  const wakeups = [];
@@ -189,6 +268,12 @@ export function directInboxPollCommand(role, taskName, dbPath) {
189
268
  const inbox = role === "manager" ? "manager-inbox" : "worker-inbox";
190
269
  return `conveyor ${inbox} ${shellQuote(taskName)} --consume-next --wait --timeout 60${pathFlag(dbPath ?? null)} --json`;
191
270
  }
271
+ function workerNotifyManagerCommand(taskName, dbPath) {
272
+ return `conveyor enqueue-notify-manager ${shellQuote(taskName)} --message ${shellQuote("<compact completion/blocker report with files, commands, evidence, residual risk, and next recommended worker task>")} --correlation-id ${shellQuote("<worker-result-id>")}${pathFlag(dbPath ?? null)} --json`;
273
+ }
274
+ function workerNotifyDispatchCommand(dbPath) {
275
+ return `conveyor dispatch --watch --watch-iterations 1 --interval 2 --dispatcher-id dispatch-local${pathFlag(dbPath ?? null)} --json`;
276
+ }
192
277
  function roleStatus(options) {
193
278
  const hasTmux = Boolean(options.tmuxSession);
194
279
  return {
@@ -211,9 +296,19 @@ function roleStatus(options) {
211
296
  function roleWakeup(role, status, taskName, dbPath, state) {
212
297
  const pollCommand = appHeartbeatPollCommand(role, taskName, dbPath);
213
298
  const directInboxCommand = directInboxPollCommand(role, taskName, dbPath);
299
+ const workerNotifyCommand = workerNotifyManagerCommand(taskName, dbPath);
300
+ const workerDispatchCommand = workerNotifyDispatchCommand(dbPath);
214
301
  const roleInstruction = role === "manager"
215
302
  ? "If an item is consumed, verify worker claims before recording conclusions, require concrete evidence, update Conveyor state as appropriate, and produce exactly one next worker task."
216
303
  : "If an item is consumed, execute only that single worker instruction and return exact commands, compact evidence, blockers or residual risk, and exactly one next recommended worker task.";
304
+ const durableWorkerNotification = role === "worker"
305
+ ? [
306
+ "Before your final answer after any consumed item, notify the manager durably; a direct app-thread final answer is not a manager receipt and is not task completion.",
307
+ `Run: ${workerNotifyCommand}`,
308
+ `Then run: ${workerDispatchCommand}`,
309
+ "If either notify/dispatch command fails, include that failure as the blocker and do not claim the manager was notified.",
310
+ ]
311
+ : [];
217
312
  return {
218
313
  prompt: [
219
314
  "Use the manage-codex-workers skill.",
@@ -221,6 +316,7 @@ function roleWakeup(role, status, taskName, dbPath, state) {
221
316
  `Run: ${pollCommand}`,
222
317
  `If the heartbeat result asks for direct inbox polling, run: ${directInboxCommand}`,
223
318
  roleInstruction,
319
+ ...durableWorkerNotification,
224
320
  "If no item is consumed, stop after a one-line idle receipt.",
225
321
  "Idle polling is not completion and does not authorize heartbeat teardown.",
226
322
  ].join("\n"),
@@ -236,6 +332,103 @@ function dispatchLeaseState(value, now, staleSeconds) {
236
332
  const state = leaseState(value, now, staleSeconds);
237
333
  return state === "healthy" ? "healthy" : state === "stale" ? "stale" : "missing";
238
334
  }
335
+ function latestAppAutopilotPolicyEvent(database, taskId, dispatcherId) {
336
+ const row = database.prepare(`
337
+ select id, event_type, timestamp
338
+ from telemetry_events
339
+ where task_id = ?
340
+ and event_type in ('app_autopilot_started', 'app_autopilot_stopped')
341
+ and json_extract(correlation_json, '$.dispatcher_id') = ?
342
+ order by timestamp desc, rowid desc
343
+ limit 1
344
+ `).get(taskId, dispatcherId);
345
+ if (!row) {
346
+ return null;
347
+ }
348
+ return {
349
+ desired_state: row.event_type === "app_autopilot_started" ? "active" : "stopped",
350
+ event_id: row.id,
351
+ event_type: row.event_type,
352
+ recorded_at: row.timestamp,
353
+ };
354
+ }
355
+ function appAutopilotQuiescenceSync(database, options) {
356
+ const threshold = Math.max(0, options.quietAfterCycles);
357
+ if (options.desiredState !== "active" || threshold === 0) {
358
+ return {
359
+ quiet_after: null,
360
+ quiet_cycles: 0,
361
+ reason: null,
362
+ recommended_action: "continue",
363
+ state: "not_applicable",
364
+ threshold_cycles: threshold,
365
+ };
366
+ }
367
+ const anchor = database.prepare(`
368
+ select max(timestamp) as timestamp
369
+ from telemetry_events
370
+ where task_id = ?
371
+ and (
372
+ event_type in ('command_created', 'dispatch_inbox_consumed')
373
+ or (
374
+ event_type = 'app_autopilot_started'
375
+ and json_extract(correlation_json, '$.dispatcher_id') = ?
376
+ )
377
+ )
378
+ `).get(options.taskId, options.dispatcherId);
379
+ const quietAfter = anchor?.timestamp ?? null;
380
+ if (!quietAfter) {
381
+ return {
382
+ quiet_after: null,
383
+ quiet_cycles: 0,
384
+ reason: "No app-autopilot start or task command receipt anchors the quiet-cycle window.",
385
+ recommended_action: "continue",
386
+ state: "monitoring",
387
+ threshold_cycles: threshold,
388
+ };
389
+ }
390
+ const heartbeatRows = database.prepare(`
391
+ select actor, count(*) as count
392
+ from telemetry_events
393
+ where task_id = ?
394
+ and event_type = 'app_heartbeat'
395
+ and timestamp > ?
396
+ and actor in ('manager', 'worker')
397
+ group by actor
398
+ `).all(options.taskId, quietAfter);
399
+ let managerHeartbeats = 0;
400
+ let workerHeartbeats = 0;
401
+ for (const row of heartbeatRows) {
402
+ if (row.actor === "manager") {
403
+ managerHeartbeats = Number(row.count);
404
+ }
405
+ else if (row.actor === "worker") {
406
+ workerHeartbeats = Number(row.count);
407
+ }
408
+ }
409
+ const quietCycles = Math.min(managerHeartbeats, workerHeartbeats);
410
+ const idleHealthy = options.status.ok && options.status.next_actions.length === 0;
411
+ if (idleHealthy && quietCycles >= threshold) {
412
+ return {
413
+ quiet_after: quietAfter,
414
+ quiet_cycles: quietCycles,
415
+ reason: `No app-loop action has been recorded for ${quietCycles} healthy heartbeat cycle(s) since ${quietAfter}. Stop autopilot or wait for an external unblock before restarting.`,
416
+ recommended_action: "stop_autopilot",
417
+ state: "stop_recommended",
418
+ threshold_cycles: threshold,
419
+ };
420
+ }
421
+ return {
422
+ quiet_after: quietAfter,
423
+ quiet_cycles: quietCycles,
424
+ reason: idleHealthy
425
+ ? `Healthy idle loop has ${quietCycles}/${threshold} quiet heartbeat cycle(s) since ${quietAfter}.`
426
+ : "Loop still has pending health actions, so quiet-cycle stop is not evaluated.",
427
+ recommended_action: "continue",
428
+ state: "monitoring",
429
+ threshold_cycles: threshold,
430
+ };
431
+ }
239
432
  function leaseState(value, now, staleSeconds) {
240
433
  if (!value) {
241
434
  return "missing";
@@ -257,6 +450,9 @@ function ageSeconds(value, now) {
257
450
  function pathFlag(dbPath) {
258
451
  return dbPath ? ` --path ${shellQuote(dbPath)}` : "";
259
452
  }
453
+ function formatNumber(value) {
454
+ return Number.isInteger(value) ? String(value) : String(value);
455
+ }
260
456
  function shellQuote(value) {
261
457
  return `'${value.replace(/'/g, "'\"'\"'")}'`;
262
458
  }
@@ -1 +1 @@
1
- {"version":3,"file":"app-autonomy.js","sourceRoot":"","sources":["../../src/runtime/app-autonomy.ts"],"names":[],"mappings":"AA2FA,MAAM,UAAU,iBAAiB,CAC/B,QAAsB,EACtB,OAMC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAElF,CAAC;IACd,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;GAmBhC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAA8C,CAAC;IAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC;;;;;;;;GAQ1C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAsC,CAAC;IAElE,MAAM,OAAO,GAAG,UAAU,CAAC;QACzB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;QAC9B,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;QACpD,eAAe,EAAE,OAAO,CAAC,yBAAyB;QAClD,IAAI,EAAE,OAAO,CAAC,YAAY;QAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,OAAO,CAAC,kBAAkB;QACrC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,iBAAiB;QACnC,WAAW,EAAE,OAAO,CAAC,oBAAoB;QACzC,WAAW,EAAE,OAAO,CAAC,oBAAoB;KAC1C,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,UAAU,CAAC;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;QAC9B,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;QACpD,eAAe,EAAE,OAAO,CAAC,wBAAwB;QACjD,IAAI,EAAE,OAAO,CAAC,WAAW;QACzB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,OAAO,CAAC,iBAAiB;QACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,gBAAgB;QAClC,WAAW,EAAE,OAAO,CAAC,mBAAmB;QACxC,WAAW,EAAE,OAAO,CAAC,mBAAmB;KACzC,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,IAAI,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC3H,MAAM,QAAQ,GAAG;QACf,aAAa,EAAE,OAAO,CAAC,YAAY;QACnC,iBAAiB,EAAE,iBAAiB,EAAE,SAAS,IAAI,IAAI;QACvD,KAAK,EAAE,aAAa;KACrB,CAAC;IACF,MAAM,WAAW,GAAwB,EAAE,CAAC;IAC5C,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACjC,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,kDAAkD,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE;YAC/H,MAAM,EAAE,YAAY,OAAO,CAAC,YAAY,OAAO,QAAQ,CAAC,KAAK,GAAG;SACjE,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACtC,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,OAAO,CAAC,YAAY,IAAI,SAAS;YACzC,MAAM,EAAE,wBAAwB,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG;YACtD,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACrC,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,MAAM,CAAC,YAAY,IAAI,SAAS;YACxC,MAAM,EAAE,uBAAuB,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG;YACpD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,QAAQ;QACR,OAAO;QACP,YAAY,EAAE,WAAW;QACzB,EAAE,EAAE,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS;QACzG,IAAI;QACJ,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,QAAsB,EACtB,OAMC;IAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5H,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACzH,CAAC;IACD,OAAO;QACL,UAAU,EAAE;YACV,OAAO,EAAE,6CAA6C,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE;YAC3H,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS;YAC7C,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK;SAC7B;QACD,MAAM;QACN,OAAO;KACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,QAAsB,EACtB,OAMC;IAED,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACnF,MAAM,OAAO,GAAI,CAAC,SAAS,EAAE,QAAQ,CAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5D,MAAM,UAAU,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACjF,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,GAAG,IAAI,wBAAwB;gBACvC,IAAI;gBACJ,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,iBAA0B;gBAClC,MAAM,EAAE;oBACN,EAAE,EAAE,UAAU,CAAC,mBAAmB;oBAClC,KAAK,EAAE,UAAU,CAAC,sBAAsB;iBACzC;aACF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACtB,OAAO;gBACL,OAAO,EAAE,gDAAgD,IAAI,kGAAkG;gBAC/J,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI;gBACJ,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,wBAAiC;gBACzC,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI;YACJ,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,eAAwB;YAChC,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,eAAe,CAAC,CAAC,MAAM,CAAC;IACnF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,wBAAwB,CAAC,CAAC,MAAM,CAAC;IAC9F,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC,MAAM,CAAC;IACvF,OAAO;QACL,OAAO;QACP,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE;YACP,OAAO;YACP,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ;YAC7C,aAAa,EAAE,KAAK;YACpB,OAAO;YACP,aAAa,EAAE,OAAO,CAAC,MAAM;SAC9B;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAiB,EAAE,QAAgB,EAAE,MAAsB;IACjG,OAAO,0BAA0B,UAAU,CAAC,QAAQ,CAAC,WAAW,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC;AAC3G,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,MAAsB;IAC3E,OAAO,4BAA4B,UAAU,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,MAAsB;IAC3E,OAAO,4BAA4B,UAAU,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAiB,EAAE,QAAgB,EAAE,MAAsB;IAChG,MAAM,KAAK,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC;IACpE,OAAO,YAAY,KAAK,IAAI,UAAU,CAAC,QAAQ,CAAC,sCAAsC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC;AAC1H,CAAC;AAED,SAAS,UAAU,CAAC,OAYnB;IACC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7C,OAAO;QACL,mBAAmB,EAAE,OAAO,CAAC,QAAQ;QACrC,sBAAsB,EAAE,OAAO,CAAC,WAAW;QAC3C,oBAAoB,EAAE,sBAAsB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC;QAC5F,KAAK,EAAE;YACL,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC;YAC7D,iBAAiB,EAAE,OAAO,CAAC,eAAe;YAC1C,mBAAmB,EAAE,OAAO,CAAC,qBAAqB;YAClD,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,qBAAqB,CAAC;SACvF;QACD,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,YAAY,EAAE,uBAAuB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC;QACrF,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QACxC,UAAU,EAAE,OAAO,CAAC,SAAS;QAC7B,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;KAC5E,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CACjB,IAAiB,EACjB,MAAyB,EACzB,QAAgB,EAChB,MAAqB,EACrB,KAAwB;IAExB,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpE,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1E,MAAM,eAAe,GAAG,IAAI,KAAK,SAAS;QACxC,CAAC,CAAC,uLAAuL;QACzL,CAAC,CAAC,2LAA2L,CAAC;IAChM,OAAO;QACL,MAAM,EAAE;YACN,qCAAqC;YACrC,eAAe,IAAI,8BAA8B,QAAQ,GAAG;YAC5D,QAAQ,WAAW,EAAE;YACrB,+DAA+D,kBAAkB,EAAE;YACnF,eAAe;YACf,6DAA6D;YAC7D,2EAA2E;SAC5E,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,MAAM,EAAE,GAAG,IAAI,iBAAiB,KAAK,GAAG;QACxC,IAAI;QACJ,MAAM,EAAE;YACN,EAAE,EAAE,MAAM,CAAC,mBAAmB;YAC9B,KAAK,EAAE,MAAM,CAAC,sBAAsB;SACrC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAoB,EAAE,GAAW,EAAE,YAAoB;IACjF,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;IACnD,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACnF,CAAC;AAED,SAAS,UAAU,CAAC,KAAoB,EAAE,GAAW,EAAE,YAAoB;IACzE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACnC,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;AACnE,CAAC;AAED,SAAS,UAAU,CAAC,KAAoB,EAAE,GAAW;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,QAAQ,CAAC,MAAqB;IACrC,OAAO,MAAM,CAAC,CAAC,CAAC,WAAW,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"app-autonomy.js","sourceRoot":"","sources":["../../src/runtime/app-autonomy.ts"],"names":[],"mappings":"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"}
@@ -304,11 +304,22 @@ conveyor app-heartbeat "$TASK" --role worker --json
304
304
  conveyor app-loop-status "$TASK" --json
305
305
  conveyor app-wakeup-plan "$TASK" --json
306
306
  conveyor app-wakeup-dispatch "$TASK" --json
307
+ conveyor app-autopilot start "$TASK" --json
307
308
  ```
308
309
 
309
310
  Use `app-loop-status` as the operator status surface. If it reports stale
310
311
  manager, worker, or Dispatch leases, use `app-wakeup-plan` to get the exact
311
312
  thread prompt to send through Codex app automation or `send_message_to_thread`.
313
+ Use `app-autopilot start` from the operator session to record the pair-level
314
+ heartbeat policy and emit the exact Codex app heartbeat automation specs plus a
315
+ bounded Dispatch watch command. `app-autopilot stop` records the teardown policy
316
+ decision; it does not itself delete Codex app automations because that action
317
+ belongs to the Codex app automation layer.
318
+ Each operator pulse should inspect `app-autopilot status --json`; if
319
+ `plan.quiescence.recommended_action` is `stop_autopilot`, record
320
+ `app-autopilot stop`, pause/delete the app heartbeat automations, and report the
321
+ blocked or idle state once instead of continuing to wake healthy sessions with
322
+ empty `next_actions`.
312
323
  Use `app-wakeup-dispatch` when the manager needs a durable Conveyor receipt for
313
324
  which app wake actions were prepared, skipped, or blocked. It only prepares
314
325
  adapter-ready actions; direct app-thread delivery remains an app/operator
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-conveyor",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "description": "Local agent manager/worker conveyor control plane for Codex sessions.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -67,6 +67,12 @@ Skill behavior:
67
67
  loop until no inbox item remains or `max_iterations` is reached. Consuming a
68
68
  `continue_iteration` inbox item advances the Ralph-loop run's durable
69
69
  `current_iteration` and writes `ralph_loop_iteration_advanced` telemetry.
70
+ After completing or blocking on any consumed item, the worker must run the
71
+ generated `conveyor enqueue-notify-manager ... --json` command and then run
72
+ the generated one-iteration `conveyor dispatch --watch ... --json` command
73
+ before its final app-thread answer. If either command fails, treat that as
74
+ the blocker; a direct app-thread final answer alone is not manager
75
+ notification and is not task completion.
70
76
  9. After each worker pass, require concrete evidence and structured
71
77
  `loop-evidence adversarial-check` proof before queueing another
72
78
  `enqueue-continue-iteration`.
@@ -89,6 +95,24 @@ Idle polling rule for Codex app/no-tmux sessions:
89
95
  A timeout is not completion; it is only a quiet poll interval.
90
96
  - Keep `conveyor dispatch --watch --dispatcher-id dispatch-local` running so
91
97
  Dispatch can route new messages into those inboxes.
98
+ - After a worker consumes and acts on a manager instruction, require a durable
99
+ `conveyor enqueue-notify-manager <task> --message ... --json` receipt plus a
100
+ one-iteration Dispatch run before treating the worker pass as reported. A
101
+ direct Codex app final answer is local thread text; it does not notify the
102
+ manager inbox or prove the manager saw the result.
103
+ - Prefer `conveyor app-autopilot start <task> --json` from the operator or
104
+ manager session when setting up a Codex app/no-tmux pair for autonomous
105
+ heartbeat management. It records a durable pair-level heartbeat policy and
106
+ emits manager/worker Codex app heartbeat automation specs plus the bounded
107
+ Dispatch watch command. Use `conveyor app-autopilot status <task> --json` to
108
+ inspect the current policy, loop health, and `plan.quiescence`. If
109
+ `plan.quiescence.recommended_action` is `stop_autopilot`, the operator should
110
+ record `conveyor app-autopilot stop <task> --json` and pause/delete the Codex
111
+ app heartbeat automations instead of sending another idle pulse. Use
112
+ `--quiet-after N` to tune the number of paired manager/worker idle
113
+ heartbeats required before that recommendation. The CLI cannot create or
114
+ delete Codex app automations by itself; apply the emitted automation specs
115
+ through Codex app automation tools.
92
116
  - Use `conveyor app-loop-status <task> --json` as the operator status surface,
93
117
  and `conveyor app-wakeup-plan <task> --json` to produce exact stale-thread
94
118
  wake prompts for Codex app automation or `send_message_to_thread`.