@integrity-labs/agt-cli 0.28.230 → 0.28.232

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.
@@ -37,7 +37,7 @@ import {
37
37
  requireHost,
38
38
  safeWriteJsonAtomic,
39
39
  setConfigHash
40
- } from "../chunk-L55H4BIT.js";
40
+ } from "../chunk-FPWZQRJE.js";
41
41
  import {
42
42
  getProjectDir as getProjectDir2,
43
43
  getReadyTasks,
@@ -3478,6 +3478,7 @@ var STANDUP_TEMPLATES = /* @__PURE__ */ new Set(["daily-standup", "end-of-day-su
3478
3478
  var TASK_UPDATE_TEMPLATES = /* @__PURE__ */ new Set(["hourly-status", "task-update"]);
3479
3479
  var PLAN_TEMPLATES = /* @__PURE__ */ new Set(["morning-plan"]);
3480
3480
  var KANBAN_WORK_TEMPLATES = /* @__PURE__ */ new Set(["kanban-work"]);
3481
+ var TOOL_DELIVERED_TEMPLATES = /* @__PURE__ */ new Set(["performance-review"]);
3481
3482
  function isPlainScheduledTemplate(templateId) {
3482
3483
  return !STANDUP_TEMPLATES.has(templateId) && !TASK_UPDATE_TEMPLATES.has(templateId) && !PLAN_TEMPLATES.has(templateId) && !KANBAN_WORK_TEMPLATES.has(templateId);
3483
3484
  }
@@ -4551,6 +4552,11 @@ var SCHEDULED_CARD_DELIVERY_CONTRACT = `
4551
4552
  [delivery contract \u2014 system]
4552
4553
  The result you write on this card IS the message that will be delivered to the user. Delivery happens automatically from the card \u2014 never send, post, or message it yourself.
4553
4554
  If \u2014 and ONLY if \u2014 the task above contains explicit opt-out wording the user typed ("DO NOT notify me unless \u2026", "only if X", "stay silent unless \u2026") and that condition is NOT met this run, call kanban_done with suppress_delivery: true \u2014 your result is still recorded on the card but will NOT be messaged to the user. That is how you honor the user's do-not-notify instruction; a "nothing urgent" / "all quiet" result WITHOUT the flag would still be DELIVERED as a message. (Legacy fallback: writing exactly ${SUPPRESS_SENTINEL} alone as the result also suppresses.) If the task asks for a digest/report WITHOUT opt-out wording, a zero-item report is a valid deliverable \u2014 deliver it.`;
4555
+ var SCHEDULED_CARD_TOOL_DELIVERY_INSTRUCTION = `
4556
+
4557
+ ---
4558
+ [delivery contract \u2014 system]
4559
+ This task delivers its result by CALLING A TOOL, not via this card. Follow the task instructions above and call the tool they name \u2014 for the weekly performance review that is submit_performance_review, which delivers the rating form to your manager. That tool call is what reaches the recipient. This card is only your working record: writing a summary here does NOT deliver anything and is NOT a substitute for the tool call. Make the tool call, then note briefly on the card what you sent and mark it done.`;
4554
4560
  var SCHEDULED_CARD_PLAN_INSTRUCTION = `
4555
4561
 
4556
4562
  ---
@@ -4559,7 +4565,7 @@ This is a board-PLANNING task. Review your current board with kanban_list, then
4559
4565
  async function routeScheduledTaskViaKanban(codeName, agentId, task, prompt) {
4560
4566
  const priorRuns = await fetchPriorScheduledRuns(agentId, task.taskId);
4561
4567
  const contextBlocks = buildScheduledTaskContextBlocks({ priorRuns, timezone: task.timezone });
4562
- const cardDescription = contextBlocks + (PLAN_TEMPLATES.has(task.templateId) ? prompt + SCHEDULED_CARD_PLAN_INSTRUCTION : prompt + SCHEDULED_CARD_DELIVERY_CONTRACT);
4568
+ const cardDescription = contextBlocks + (TOOL_DELIVERED_TEMPLATES.has(task.templateId) ? prompt + SCHEDULED_CARD_TOOL_DELIVERY_INSTRUCTION : PLAN_TEMPLATES.has(task.templateId) ? prompt + SCHEDULED_CARD_PLAN_INSTRUCTION : prompt + SCHEDULED_CARD_DELIVERY_CONTRACT);
4563
4569
  const { run_id, kanban_item_id } = await startRun({
4564
4570
  agent_id: agentId,
4565
4571
  source_type: "scheduled_task",
@@ -4581,7 +4587,8 @@ async function routeScheduledTaskViaKanban(codeName, agentId, task, prompt) {
4581
4587
  const suppressionTeaching = (task.deliveryPolicy ?? "always") === "conditional" ? `THIS task is CONDITIONAL: quiet runs stay SILENT automatically. Write your findings on the card and mark it done \u2014 if nothing met the user's criteria, NOTHING will be sent (no flag needed). If something DID meet the criteria and the user must be told, call kanban_done with suppress_delivery: false AND delivery_reason naming the concrete trigger that fired (e.g. "urgent email from the CEO", "CI failing on main"); a vacuous reason like "status check" or "all clear" is rejected and stays silent. That explicit, justified assert is the ONLY way this result reaches the user.
4582
4588
  ` : `If \u2014 and ONLY if \u2014 the task description contains explicit opt-out wording the user typed (e.g. "DO NOT notify me unless urgent", "only if X", "stay silent unless \u2026") and that condition is NOT met this run, call kanban_done with suppress_delivery: true \u2014 your result stays on the card but will NOT be messaged to the user. That is how you honor the user's do-not-notify instruction: a "nothing urgent" result without the flag would still be DELIVERED as a message. A report with zero items is only a valid deliverable when the task asks for a digest WITHOUT opt-out wording \u2014 when in doubt, deliver.
4583
4589
  `;
4584
- const nudge = `You have a new scheduled task on your kanban board: id=${kanban_item_id} title=${JSON.stringify(task.name)}. Call kanban_move("${kanban_item_id}", "in_progress"), do the work described on the card, then write the finished result onto the card and mark it done. Do NOT send, post, or message the result to anyone yourself \u2014 the result you write on the card IS the message that will be delivered to the user; delivery happens automatically from the card.
4590
+ const nudge = TOOL_DELIVERED_TEMPLATES.has(task.templateId) ? `You have a new scheduled task on your kanban board: id=${kanban_item_id} title=${JSON.stringify(task.name)}. Call kanban_move("${kanban_item_id}", "in_progress"), then do the work described on the card. This task DELIVERS VIA A TOOL, not the card: you MUST call the tool the task specifies \u2014 for the weekly performance review that is submit_performance_review \u2014 to actually deliver it. Writing a summary to the card does NOT send anything and is NOT a substitute for the tool call. After the tool call, note briefly on the card what you sent and mark it done.
4591
+ ` + formatRunMarker(run_id) : `You have a new scheduled task on your kanban board: id=${kanban_item_id} title=${JSON.stringify(task.name)}. Call kanban_move("${kanban_item_id}", "in_progress"), do the work described on the card, then write the finished result onto the card and mark it done. Do NOT send, post, or message the result to anyone yourself \u2014 the result you write on the card IS the message that will be delivered to the user; delivery happens automatically from the card.
4585
4592
  ` + suppressionTeaching + formatRunMarker(run_id);
4586
4593
  let injectStatus;
4587
4594
  try {
@@ -6419,7 +6426,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
6419
6426
  var lastVersionCheckAt = 0;
6420
6427
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
6421
6428
  var lastResponsivenessProbeAt = 0;
6422
- var agtCliVersion = true ? "0.28.230" : "dev";
6429
+ var agtCliVersion = true ? "0.28.232" : "dev";
6423
6430
  function resolveBrewPath(execFileSync2) {
6424
6431
  try {
6425
6432
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();