@probelabs/visor 0.1.176 → 0.1.177

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 (85) hide show
  1. package/dist/frontends/slack-frontend.d.ts.map +1 -1
  2. package/dist/index.js +126 -23
  3. package/dist/output/traces/{run-2026-03-10T15-37-04-236Z.ndjson → run-2026-03-10T16-21-38-082Z.ndjson} +84 -84
  4. package/dist/output/traces/{run-2026-03-10T15-37-44-748Z.ndjson → run-2026-03-10T16-22-15-059Z.ndjson} +1812 -1812
  5. package/dist/sdk/{a2a-frontend-W54ZZ32L.mjs → a2a-frontend-BPWLYLCG.mjs} +2 -2
  6. package/dist/sdk/a2a-frontend-HBUSNE3K.mjs +1658 -0
  7. package/dist/sdk/a2a-frontend-HBUSNE3K.mjs.map +1 -0
  8. package/dist/sdk/{check-provider-registry-7HSDAKHQ.mjs → check-provider-registry-HW4QPPSA.mjs} +2 -2
  9. package/dist/sdk/{check-provider-registry-MJYNLB37.mjs → check-provider-registry-OY2EESIO.mjs} +5 -5
  10. package/dist/sdk/{check-provider-registry-VE6LQPLY.mjs → check-provider-registry-TRHN5ZBY.mjs} +5 -5
  11. package/dist/sdk/{chunk-4E34HRCW.mjs → chunk-2LCF5H5K.mjs} +73 -28
  12. package/dist/sdk/chunk-2LCF5H5K.mjs.map +1 -0
  13. package/dist/sdk/{chunk-66PTDQAO.mjs → chunk-ADQVGGKA.mjs} +3 -3
  14. package/dist/sdk/{chunk-SEA2FWEC.mjs → chunk-BWC5R2UB.mjs} +2 -2
  15. package/dist/sdk/{chunk-Y2DYDGGY.mjs → chunk-FNBSDOQM.mjs} +3 -3
  16. package/dist/sdk/{chunk-Y2DYDGGY.mjs.map → chunk-FNBSDOQM.mjs.map} +1 -1
  17. package/dist/sdk/chunk-GVTWESYN.mjs +516 -0
  18. package/dist/sdk/chunk-GVTWESYN.mjs.map +1 -0
  19. package/dist/sdk/chunk-OHOBWVPP.mjs +1502 -0
  20. package/dist/sdk/chunk-OHOBWVPP.mjs.map +1 -0
  21. package/dist/sdk/chunk-OPI632LK.mjs +739 -0
  22. package/dist/sdk/chunk-OPI632LK.mjs.map +1 -0
  23. package/dist/sdk/{chunk-R3FNZRE4.mjs → chunk-XLDVWRKQ.mjs} +73 -28
  24. package/dist/sdk/chunk-XLDVWRKQ.mjs.map +1 -0
  25. package/dist/sdk/{chunk-OK4MLC3R.mjs → chunk-Y6PVSFCS.mjs} +49 -9
  26. package/dist/sdk/chunk-Y6PVSFCS.mjs.map +1 -0
  27. package/dist/sdk/{failure-condition-evaluator-RTT5SLVL.mjs → failure-condition-evaluator-63BECZYF.mjs} +3 -3
  28. package/dist/sdk/failure-condition-evaluator-HL33X7MH.mjs +18 -0
  29. package/dist/sdk/{github-frontend-C4GG62PI.mjs → github-frontend-FP6WKNZR.mjs} +3 -3
  30. package/dist/sdk/github-frontend-U2U42CKV.mjs +1386 -0
  31. package/dist/sdk/github-frontend-U2U42CKV.mjs.map +1 -0
  32. package/dist/sdk/{host-6GGO2BQE.mjs → host-6SBCE4VK.mjs} +4 -4
  33. package/dist/sdk/host-NYUSWEE4.mjs +87 -0
  34. package/dist/sdk/host-NYUSWEE4.mjs.map +1 -0
  35. package/dist/sdk/{routing-DXVYOXAS.mjs → routing-PFFCQJV2.mjs} +4 -4
  36. package/dist/sdk/routing-SFP4D6O3.mjs +26 -0
  37. package/dist/sdk/{schedule-tool-R7NSHTPJ.mjs → schedule-tool-45NAALKS.mjs} +2 -2
  38. package/dist/sdk/{schedule-tool-LL7XDILD.mjs → schedule-tool-DN2DSXIX.mjs} +5 -5
  39. package/dist/sdk/{schedule-tool-GKKVOQB7.mjs → schedule-tool-KVZN5LP6.mjs} +5 -5
  40. package/dist/sdk/{schedule-tool-handler-O3L2R5OJ.mjs → schedule-tool-handler-57JBEICD.mjs} +5 -5
  41. package/dist/sdk/{schedule-tool-handler-5GTQ6SFI.mjs → schedule-tool-handler-6MPP5DXK.mjs} +2 -2
  42. package/dist/sdk/{schedule-tool-handler-ZZGJ3UFR.mjs → schedule-tool-handler-GEXHYH3X.mjs} +5 -5
  43. package/dist/sdk/sdk.js +75 -15
  44. package/dist/sdk/sdk.js.map +1 -1
  45. package/dist/sdk/sdk.mjs +4 -4
  46. package/dist/sdk/slack-frontend-XKSIOUXB.mjs +910 -0
  47. package/dist/sdk/slack-frontend-XKSIOUXB.mjs.map +1 -0
  48. package/dist/sdk/{trace-helpers-CECHXDLI.mjs → trace-helpers-L3EOYW5P.mjs} +2 -2
  49. package/dist/sdk/trace-helpers-MYH2GPXF.mjs +29 -0
  50. package/dist/sdk/{workflow-check-provider-EY6VSMNG.mjs → workflow-check-provider-JNEFAECH.mjs} +5 -5
  51. package/dist/sdk/workflow-check-provider-JNEFAECH.mjs.map +1 -0
  52. package/dist/sdk/{workflow-check-provider-AX7IRQEZ.mjs → workflow-check-provider-OA33MESM.mjs} +2 -2
  53. package/dist/sdk/workflow-check-provider-OA33MESM.mjs.map +1 -0
  54. package/dist/sdk/{workflow-check-provider-HZQGJFOU.mjs → workflow-check-provider-U3UIYLU7.mjs} +5 -5
  55. package/dist/sdk/workflow-check-provider-U3UIYLU7.mjs.map +1 -0
  56. package/dist/traces/{run-2026-03-10T15-37-04-236Z.ndjson → run-2026-03-10T16-21-38-082Z.ndjson} +84 -84
  57. package/dist/traces/{run-2026-03-10T15-37-44-748Z.ndjson → run-2026-03-10T16-22-15-059Z.ndjson} +1812 -1812
  58. package/dist/utils/workspace-manager.d.ts +5 -1
  59. package/dist/utils/workspace-manager.d.ts.map +1 -1
  60. package/dist/utils/worktree-manager.d.ts +5 -1
  61. package/dist/utils/worktree-manager.d.ts.map +1 -1
  62. package/package.json +2 -2
  63. package/dist/sdk/chunk-4E34HRCW.mjs.map +0 -1
  64. package/dist/sdk/chunk-OK4MLC3R.mjs.map +0 -1
  65. package/dist/sdk/chunk-R3FNZRE4.mjs.map +0 -1
  66. /package/dist/sdk/{a2a-frontend-W54ZZ32L.mjs.map → a2a-frontend-BPWLYLCG.mjs.map} +0 -0
  67. /package/dist/sdk/{check-provider-registry-7HSDAKHQ.mjs.map → check-provider-registry-HW4QPPSA.mjs.map} +0 -0
  68. /package/dist/sdk/{check-provider-registry-MJYNLB37.mjs.map → check-provider-registry-OY2EESIO.mjs.map} +0 -0
  69. /package/dist/sdk/{check-provider-registry-VE6LQPLY.mjs.map → check-provider-registry-TRHN5ZBY.mjs.map} +0 -0
  70. /package/dist/sdk/{chunk-66PTDQAO.mjs.map → chunk-ADQVGGKA.mjs.map} +0 -0
  71. /package/dist/sdk/{chunk-SEA2FWEC.mjs.map → chunk-BWC5R2UB.mjs.map} +0 -0
  72. /package/dist/sdk/{failure-condition-evaluator-RTT5SLVL.mjs.map → failure-condition-evaluator-63BECZYF.mjs.map} +0 -0
  73. /package/dist/sdk/{routing-DXVYOXAS.mjs.map → failure-condition-evaluator-HL33X7MH.mjs.map} +0 -0
  74. /package/dist/sdk/{github-frontend-C4GG62PI.mjs.map → github-frontend-FP6WKNZR.mjs.map} +0 -0
  75. /package/dist/sdk/{host-6GGO2BQE.mjs.map → host-6SBCE4VK.mjs.map} +0 -0
  76. /package/dist/sdk/{schedule-tool-GKKVOQB7.mjs.map → routing-PFFCQJV2.mjs.map} +0 -0
  77. /package/dist/sdk/{schedule-tool-LL7XDILD.mjs.map → routing-SFP4D6O3.mjs.map} +0 -0
  78. /package/dist/sdk/{schedule-tool-R7NSHTPJ.mjs.map → schedule-tool-45NAALKS.mjs.map} +0 -0
  79. /package/dist/sdk/{schedule-tool-handler-5GTQ6SFI.mjs.map → schedule-tool-DN2DSXIX.mjs.map} +0 -0
  80. /package/dist/sdk/{schedule-tool-handler-O3L2R5OJ.mjs.map → schedule-tool-KVZN5LP6.mjs.map} +0 -0
  81. /package/dist/sdk/{schedule-tool-handler-ZZGJ3UFR.mjs.map → schedule-tool-handler-57JBEICD.mjs.map} +0 -0
  82. /package/dist/sdk/{trace-helpers-CECHXDLI.mjs.map → schedule-tool-handler-6MPP5DXK.mjs.map} +0 -0
  83. /package/dist/sdk/{workflow-check-provider-AX7IRQEZ.mjs.map → schedule-tool-handler-GEXHYH3X.mjs.map} +0 -0
  84. /package/dist/sdk/{workflow-check-provider-EY6VSMNG.mjs.map → trace-helpers-L3EOYW5P.mjs.map} +0 -0
  85. /package/dist/sdk/{workflow-check-provider-HZQGJFOU.mjs.map → trace-helpers-MYH2GPXF.mjs.map} +0 -0
package/dist/sdk/sdk.js CHANGED
@@ -704,7 +704,7 @@ var require_package = __commonJS({
704
704
  "package.json"(exports2, module2) {
705
705
  module2.exports = {
706
706
  name: "@probelabs/visor",
707
- version: "0.1.176",
707
+ version: "0.1.177",
708
708
  main: "dist/index.js",
709
709
  bin: {
710
710
  visor: "./dist/index.js"
@@ -823,7 +823,7 @@ var require_package = __commonJS({
823
823
  "@opentelemetry/sdk-node": "^0.203.0",
824
824
  "@opentelemetry/sdk-trace-base": "^1.30.1",
825
825
  "@opentelemetry/semantic-conventions": "^1.30.1",
826
- "@probelabs/probe": "^0.6.0-rc291",
826
+ "@probelabs/probe": "^0.6.0-rc292",
827
827
  "@types/commander": "^2.12.0",
828
828
  "@types/uuid": "^10.0.0",
829
829
  acorn: "^8.16.0",
@@ -48791,11 +48791,26 @@ var init_worktree_manager = __esm({
48791
48791
  await this.deleteLocalBranches(worktreePath);
48792
48792
  }
48793
48793
  /**
48794
- * Delete all local branches in a worktree.
48794
+ * Delete local branches in a worktree that are safe to remove.
48795
48795
  * Worktrees are always used in detached HEAD state, so any local branches
48796
48796
  * were unintentionally created and should be cleaned up.
48797
+ * IMPORTANT: Git worktrees share the branch namespace with the main repo
48798
+ * and all other worktrees. We must NOT delete branches that are checked out
48799
+ * in the main working tree or any other worktree — doing so would destroy
48800
+ * the user's work.
48797
48801
  */
48798
48802
  async deleteLocalBranches(worktreePath) {
48803
+ const worktreeListCmd = `git -C ${this.escapeShellArg(worktreePath)} worktree list --porcelain`;
48804
+ const worktreeListResult = await this.executeGitCommand(worktreeListCmd, { timeout: 1e4 });
48805
+ const protectedBranches = /* @__PURE__ */ new Set();
48806
+ if (worktreeListResult.exitCode === 0) {
48807
+ for (const line of worktreeListResult.stdout.split("\n")) {
48808
+ const match = line.match(/^branch refs\/heads\/(.+)$/);
48809
+ if (match) {
48810
+ protectedBranches.add(match[1]);
48811
+ }
48812
+ }
48813
+ }
48799
48814
  const listCmd = `git -C ${this.escapeShellArg(worktreePath)} branch --list --format='%(refname:short)'`;
48800
48815
  const listResult = await this.executeGitCommand(listCmd, { timeout: 1e4 });
48801
48816
  if (listResult.exitCode !== 0 || !listResult.stdout.trim()) {
@@ -48803,6 +48818,10 @@ var init_worktree_manager = __esm({
48803
48818
  }
48804
48819
  const branches = listResult.stdout.trim().split("\n").map((b) => b.trim()).filter((b) => b.length > 0);
48805
48820
  for (const branch of branches) {
48821
+ if (protectedBranches.has(branch)) {
48822
+ logger.debug(`Skipping branch '${branch}' \u2014 checked out in another worktree`);
48823
+ continue;
48824
+ }
48806
48825
  const deleteCmd = `git -C ${this.escapeShellArg(worktreePath)} branch -D ${this.escapeShellArg(branch)}`;
48807
48826
  const deleteResult = await this.executeGitCommand(deleteCmd, { timeout: 1e4 });
48808
48827
  if (deleteResult.exitCode === 0) {
@@ -50307,7 +50326,7 @@ async function executeCheckWithForEachItems(checkId, forEachParent, forEachItems
50307
50326
  workflowInputs,
50308
50327
  ai: {
50309
50328
  ...checkConfig.ai || {},
50310
- timeout: checkConfig.ai?.timeout || 18e5,
50329
+ timeout: checkConfig.timeout || checkConfig.ai?.timeout || 18e5,
50311
50330
  debug: !!context2.debug
50312
50331
  }
50313
50332
  };
@@ -50394,7 +50413,7 @@ async function executeCheckWithForEachItems(checkId, forEachParent, forEachItems
50394
50413
  context2,
50395
50414
  prInfo,
50396
50415
  dependencyResults,
50397
- checkConfig.ai?.timeout || 18e5,
50416
+ checkConfig.timeout || checkConfig.ai?.timeout || 18e5,
50398
50417
  () => provider.execute(prInfo, providerConfig, dependencyResults, executionContext)
50399
50418
  );
50400
50419
  try {
@@ -50810,7 +50829,7 @@ async function executeInvocation(item, context2, scope, prInfo, dependencyResult
50810
50829
  __outputHistory: outputHistory,
50811
50830
  ai: {
50812
50831
  ...stepConfig.ai || {},
50813
- timeout: stepConfig.ai?.timeout || 18e5,
50832
+ timeout: stepConfig.timeout || stepConfig.ai?.timeout || 18e5,
50814
50833
  debug: !!context2.debug
50815
50834
  }
50816
50835
  };
@@ -51334,7 +51353,7 @@ async function executeSingleCheck(checkId, context2, state, emitEvent, transitio
51334
51353
  workflowInputs,
51335
51354
  ai: {
51336
51355
  ...checkConfig.ai || {},
51337
- timeout: checkConfig.ai?.timeout || 18e5,
51356
+ timeout: checkConfig.timeout || checkConfig.ai?.timeout || 18e5,
51338
51357
  debug: !!context2.debug
51339
51358
  }
51340
51359
  };
@@ -51435,7 +51454,7 @@ async function executeSingleCheck(checkId, context2, state, emitEvent, transitio
51435
51454
  context2,
51436
51455
  prInfo,
51437
51456
  dependencyResults,
51438
- checkConfig.ai?.timeout || 18e5,
51457
+ checkConfig.timeout || checkConfig.ai?.timeout || 18e5,
51439
51458
  () => provider.execute(prInfo, providerConfig, dependencyResults, executionContext)
51440
51459
  );
51441
51460
  try {
@@ -52207,7 +52226,7 @@ async function executeCheckWithForEachItems2(checkId, forEachParent, forEachItem
52207
52226
  workflowInputs,
52208
52227
  ai: {
52209
52228
  ...checkConfig.ai || {},
52210
- timeout: checkConfig.ai?.timeout || 18e5,
52229
+ timeout: checkConfig.timeout || checkConfig.ai?.timeout || 18e5,
52211
52230
  debug: !!context2.debug
52212
52231
  }
52213
52232
  };
@@ -52242,7 +52261,10 @@ async function executeCheckWithForEachItems2(checkId, forEachParent, forEachItem
52242
52261
  `[LevelDispatch] Conversation extracted (${conv?.transport || "unknown"}): ${messageCount} messages`
52243
52262
  );
52244
52263
  }
52245
- const transportCtx = slackConv ? { slack: { event: event || {}, conversation: slackConv } } : { telegram: { event: event || {}, conversation: telegramConv }, webhook: payload };
52264
+ const transportCtx = slackConv ? { slack: { event: event || {}, conversation: slackConv } } : {
52265
+ telegram: { event: event || {}, conversation: telegramConv },
52266
+ webhook: payload
52267
+ };
52246
52268
  providerConfig.eventContext = {
52247
52269
  ...providerConfig.eventContext,
52248
52270
  ...transportCtx,
@@ -52406,7 +52428,7 @@ async function executeCheckWithForEachItems2(checkId, forEachParent, forEachItem
52406
52428
  context2,
52407
52429
  prInfo,
52408
52430
  dependencyResults,
52409
- checkConfig.ai?.timeout || 18e5,
52431
+ checkConfig.timeout || checkConfig.ai?.timeout || 18e5,
52410
52432
  () => provider.execute(prInfo, providerConfig, dependencyResults, executionContext)
52411
52433
  );
52412
52434
  try {
@@ -53335,7 +53357,7 @@ async function executeSingleCheck2(checkId, context2, state, emitEvent, transiti
53335
53357
  workflowInputs,
53336
53358
  ai: {
53337
53359
  ...checkConfig2.ai || {},
53338
- timeout: checkConfig2.ai?.timeout || 18e5,
53360
+ timeout: checkConfig2.timeout || checkConfig2.ai?.timeout || 18e5,
53339
53361
  debug: !!context2.debug
53340
53362
  }
53341
53363
  };
@@ -53366,7 +53388,9 @@ async function executeSingleCheck2(checkId, context2, state, emitEvent, transiti
53366
53388
  const event = payload?.event;
53367
53389
  const messageCount = Array.isArray(conv?.messages) ? conv.messages.length : 0;
53368
53390
  if (context2.debug) {
53369
- logger.info(`[LevelDispatch] Conversation extracted (${conv?.transport || "unknown"}): ${messageCount} messages`);
53391
+ logger.info(
53392
+ `[LevelDispatch] Conversation extracted (${conv?.transport || "unknown"}): ${messageCount} messages`
53393
+ );
53370
53394
  }
53371
53395
  const transportCtx = slackConv ? { slack: { event: event || {}, conversation: slackConv } } : { telegram: { event: event || {}, conversation: telegramConv }, webhook: payload };
53372
53396
  providerConfig.eventContext = {
@@ -53504,7 +53528,7 @@ async function executeSingleCheck2(checkId, context2, state, emitEvent, transiti
53504
53528
  context2,
53505
53529
  prInfo,
53506
53530
  dependencyResults,
53507
- checkConfig2.ai?.timeout || 18e5,
53531
+ checkConfig2.timeout || checkConfig2.ai?.timeout || 18e5,
53508
53532
  () => provider.execute(prInfo, providerConfig, dependencyResults, executionContext)
53509
53533
  );
53510
53534
  try {
@@ -56663,10 +56687,27 @@ var init_workspace_manager = __esm({
56663
56687
  await this.deleteLocalBranches(worktreePath);
56664
56688
  }
56665
56689
  /**
56666
- * Delete all local branches in a worktree.
56690
+ * Delete local branches in a worktree that are safe to remove.
56691
+ * IMPORTANT: Git worktrees share the branch namespace with the main repo
56692
+ * and all other worktrees. We must NOT delete branches that are checked out
56693
+ * in the main working tree or any other worktree — doing so would destroy
56694
+ * the user's work.
56667
56695
  */
56668
56696
  async deleteLocalBranches(worktreePath) {
56669
56697
  const escapedPath = shellEscape(worktreePath);
56698
+ const worktreeListResult = await commandExecutor.execute(
56699
+ `git -C ${escapedPath} worktree list --porcelain`,
56700
+ { timeout: 1e4 }
56701
+ );
56702
+ const protectedBranches = /* @__PURE__ */ new Set();
56703
+ if (worktreeListResult.exitCode === 0) {
56704
+ for (const line of worktreeListResult.stdout.split("\n")) {
56705
+ const match = line.match(/^branch refs\/heads\/(.+)$/);
56706
+ if (match) {
56707
+ protectedBranches.add(match[1]);
56708
+ }
56709
+ }
56710
+ }
56670
56711
  const listResult = await commandExecutor.execute(
56671
56712
  `git -C ${escapedPath} branch --list --format='%(refname:short)'`,
56672
56713
  { timeout: 1e4 }
@@ -56676,6 +56717,10 @@ var init_workspace_manager = __esm({
56676
56717
  }
56677
56718
  const branches = listResult.stdout.trim().split("\n").map((b) => b.trim()).filter((b) => b.length > 0);
56678
56719
  for (const branch of branches) {
56720
+ if (protectedBranches.has(branch)) {
56721
+ logger.debug(`[Workspace] Skipping branch '${branch}' \u2014 checked out in another worktree`);
56722
+ continue;
56723
+ }
56679
56724
  const deleteResult = await commandExecutor.execute(
56680
56725
  `git -C ${escapedPath} branch -D ${shellEscape(branch)}`,
56681
56726
  { timeout: 1e4 }
@@ -59435,6 +59480,21 @@ ${message}`;
59435
59480
  if (out && typeof out._rawOutput === "string" && out._rawOutput.trim().length > 0) {
59436
59481
  text = (text || "") + "\n\n" + out._rawOutput.trim();
59437
59482
  }
59483
+ if (!text) {
59484
+ const issues = result?.issues || [];
59485
+ const errorIssues = issues.filter(
59486
+ (i) => i.severity === "error" && (i.ruleId?.startsWith("system/") || i.ruleId?.endsWith("/error"))
59487
+ );
59488
+ if (errorIssues.length > 0) {
59489
+ const errorMessages = errorIssues.map((i) => i.message).join("\n");
59490
+ text = `:warning: Something went wrong while processing your request:
59491
+ ${errorMessages}`;
59492
+ this.errorNotified = true;
59493
+ ctx.logger.warn(
59494
+ `[slack-frontend] posting error fallback for ${checkId}: ${errorIssues.length} system error(s)`
59495
+ );
59496
+ }
59497
+ }
59438
59498
  if (!text) {
59439
59499
  ctx.logger.info(
59440
59500
  `[slack-frontend] skip posting AI reply for ${checkId}: no renderable text in check output`