@hua-labs/tap 0.2.3 → 0.2.4

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.
@@ -453,7 +453,7 @@ function createHeadlessLoop(options) {
453
453
  lastPollAt: null
454
454
  };
455
455
  let timer = null;
456
- function log(msg) {
456
+ function log2(msg) {
457
457
  const ts = (/* @__PURE__ */ new Date()).toISOString();
458
458
  console.error(`[${ts}] [headless-loop] ${msg}`);
459
459
  }
@@ -507,7 +507,7 @@ function createHeadlessLoop(options) {
507
507
  writeStateFile();
508
508
  }
509
509
  function startReviewSession(request) {
510
- log(`Starting review for PR #${request.prNumber}`);
510
+ log2(`Starting review for PR #${request.prNumber}`);
511
511
  markAsProcessed(options.stateDir, request);
512
512
  try {
513
513
  writeReviewReceipt(options.commsDir, request, options.agentName);
@@ -533,9 +533,9 @@ function createHeadlessLoop(options) {
533
533
  options.agentName
534
534
  )
535
535
  };
536
- log(`Dispatched review prompt for PR #${request.prNumber} (round 1)`);
536
+ log2(`Dispatched review prompt for PR #${request.prNumber} (round 1)`);
537
537
  } catch (err) {
538
- log(
538
+ log2(
539
539
  `Failed to start review for PR #${request.prNumber}: ${err instanceof Error ? err.message : String(err)}`
540
540
  );
541
541
  unmarkProcessed(options.stateDir, request);
@@ -557,7 +557,7 @@ function createHeadlessLoop(options) {
557
557
  const round = parseReviewOutput(revPath, roundNum);
558
558
  if (!round) return;
559
559
  session.rounds.push(round);
560
- log(
560
+ log2(
561
561
  `PR #${session.request.prNumber} round ${roundNum}: ${round.findingCount} findings, ${round.suggestedDiffLines} suggested diff lines`
562
562
  );
563
563
  const stopSignalPath = path6.join(options.stateDir, "stop-signal");
@@ -569,12 +569,12 @@ function createHeadlessLoop(options) {
569
569
  };
570
570
  const result = evaluate(ctx);
571
571
  if (result.verdict === "stop") {
572
- log(
572
+ log2(
573
573
  `PR #${session.request.prNumber} terminated: ${result.reason} (${result.strategy})`
574
574
  );
575
575
  completeSession(session);
576
576
  } else {
577
- log(
577
+ log2(
578
578
  `PR #${session.request.prNumber} continues to round ${roundNum + 1}`
579
579
  );
580
580
  dispatchFollowUp(session, roundNum + 1);
@@ -584,7 +584,7 @@ function createHeadlessLoop(options) {
584
584
  const SESSION_TIMEOUT_MS = 10 * 60 * 1e3;
585
585
  const elapsed = Date.now() - new Date(session.startedAt).getTime();
586
586
  if (elapsed > SESSION_TIMEOUT_MS && session.rounds.length === 0) {
587
- log(
587
+ log2(
588
588
  `PR #${session.request.prNumber} timed out \u2014 no output after ${Math.round(elapsed / 6e4)}min. Releasing session.`
589
589
  );
590
590
  state.activeSession = null;
@@ -596,7 +596,7 @@ function createHeadlessLoop(options) {
596
596
  session.rounds[session.rounds.length - 1].timestamp
597
597
  ).getTime();
598
598
  if (Date.now() - lastRoundTime > ROUND_TIMEOUT_MS) {
599
- log(
599
+ log2(
600
600
  `PR #${session.request.prNumber} round timeout \u2014 no new output after ${Math.round((Date.now() - lastRoundTime) / 6e4)}min. Completing session.`
601
601
  );
602
602
  completeSession(session);
@@ -627,18 +627,18 @@ function createHeadlessLoop(options) {
627
627
  }
628
628
  state.activeSession = null;
629
629
  state.completedSessions++;
630
- log(
630
+ log2(
631
631
  `PR #${session.request.prNumber} review complete (${session.rounds.length} rounds)`
632
632
  );
633
633
  }
634
634
  return {
635
635
  start() {
636
636
  if (!isHeadlessReviewer()) {
637
- log("Not in headless mode \u2014 loop not started");
637
+ log2("Not in headless mode \u2014 loop not started");
638
638
  return;
639
639
  }
640
640
  state.running = true;
641
- log(
641
+ log2(
642
642
  `Headless review loop started (${envConfig?.role ?? "reviewer"}, poll ${options.pollIntervalMs}ms, max ${terminationConfig.maxRounds} rounds)`
643
643
  );
644
644
  writeStateFile();
@@ -652,7 +652,7 @@ function createHeadlessLoop(options) {
652
652
  timer = null;
653
653
  }
654
654
  writeStateFile();
655
- log("Headless review loop stopped");
655
+ log2("Headless review loop stopped");
656
656
  },
657
657
  getState() {
658
658
  return { ...state };
@@ -684,6 +684,10 @@ var _noGitWarned = false;
684
684
  function _setNoGitWarned() {
685
685
  _noGitWarned = true;
686
686
  }
687
+ var _jsonMode = false;
688
+ function log(message) {
689
+ if (!_jsonMode) console.log(` ${message}`);
690
+ }
687
691
 
688
692
  // src/config/resolve.ts
689
693
  var SHARED_CONFIG_FILE = "tap-config.json";
@@ -698,8 +702,8 @@ function findRepoRoot(startDir = process.cwd()) {
698
702
  if (fs2.existsSync(path2.join(dir, "package.json"))) {
699
703
  if (!_noGitWarned) {
700
704
  _setNoGitWarned();
701
- console.error(
702
- "[tap] warning: No .git directory found. Resolved via package.json. Use --comms-dir to specify explicitly."
705
+ log(
706
+ "No .git directory found. Resolved tap root via package.json. That's fine outside git; use --comms-dir to choose a different comms location."
703
707
  );
704
708
  }
705
709
  return dir;
@@ -710,8 +714,8 @@ function findRepoRoot(startDir = process.cwd()) {
710
714
  }
711
715
  if (!_noGitWarned) {
712
716
  _setNoGitWarned();
713
- console.error(
714
- "[tap] warning: No git repository found. Using cwd as root. Run 'git init' or use --comms-dir."
717
+ log(
718
+ "No git repository or package.json found. Using the current directory as tap root. That's fine outside git; use --comms-dir to choose a different comms location."
715
719
  );
716
720
  }
717
721
  return process.cwd();