@probelabs/visor 0.1.181-ee → 0.1.182-ee

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 (119) hide show
  1. package/defaults/code-talk.yaml +80 -14
  2. package/defaults/engineer.yaml +33 -15
  3. package/defaults/skills/code-explorer.yaml +5 -0
  4. package/dist/agent-protocol/a2a-frontend.d.ts +10 -0
  5. package/dist/agent-protocol/a2a-frontend.d.ts.map +1 -1
  6. package/dist/agent-protocol/task-evaluator.d.ts +52 -0
  7. package/dist/agent-protocol/task-evaluator.d.ts.map +1 -0
  8. package/dist/agent-protocol/task-store.d.ts +5 -3
  9. package/dist/agent-protocol/task-store.d.ts.map +1 -1
  10. package/dist/agent-protocol/tasks-cli-handler.d.ts.map +1 -1
  11. package/dist/agent-protocol/tasks-tui.d.ts +34 -0
  12. package/dist/agent-protocol/tasks-tui.d.ts.map +1 -0
  13. package/dist/agent-protocol/trace-serializer.d.ts +90 -0
  14. package/dist/agent-protocol/trace-serializer.d.ts.map +1 -0
  15. package/dist/agent-protocol/track-execution.d.ts +2 -0
  16. package/dist/agent-protocol/track-execution.d.ts.map +1 -1
  17. package/dist/cli-main.d.ts.map +1 -1
  18. package/dist/defaults/code-talk.yaml +80 -14
  19. package/dist/defaults/engineer.yaml +33 -15
  20. package/dist/defaults/skills/code-explorer.yaml +5 -0
  21. package/dist/docs/commands.md +57 -14
  22. package/dist/docs/configuration.md +2 -0
  23. package/dist/docs/guides/graceful-restart.md +178 -0
  24. package/dist/docs/observability.md +69 -0
  25. package/dist/docs/production-deployment.md +17 -0
  26. package/dist/email/polling-runner.d.ts +4 -0
  27. package/dist/email/polling-runner.d.ts.map +1 -1
  28. package/dist/generated/config-schema.d.ts +70 -6
  29. package/dist/generated/config-schema.d.ts.map +1 -1
  30. package/dist/generated/config-schema.json +36 -6
  31. package/dist/index.js +5006 -886
  32. package/dist/providers/mcp-custom-sse-server.d.ts +4 -0
  33. package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -1
  34. package/dist/runners/graceful-restart.d.ts +46 -0
  35. package/dist/runners/graceful-restart.d.ts.map +1 -0
  36. package/dist/runners/mcp-server-runner.d.ts +12 -0
  37. package/dist/runners/mcp-server-runner.d.ts.map +1 -1
  38. package/dist/runners/runner-factory.d.ts.map +1 -1
  39. package/dist/runners/runner-host.d.ts +12 -0
  40. package/dist/runners/runner-host.d.ts.map +1 -1
  41. package/dist/runners/runner.d.ts +12 -0
  42. package/dist/runners/runner.d.ts.map +1 -1
  43. package/dist/sdk/a2a-frontend-4LP3MLTS.mjs +1718 -0
  44. package/dist/sdk/a2a-frontend-4LP3MLTS.mjs.map +1 -0
  45. package/dist/sdk/{a2a-frontend-BDACLGMA.mjs → a2a-frontend-MU5EO2HZ.mjs} +35 -1
  46. package/dist/sdk/a2a-frontend-MU5EO2HZ.mjs.map +1 -0
  47. package/dist/sdk/{check-provider-registry-4YKTEDKF.mjs → check-provider-registry-I4BCWKRU.mjs} +7 -7
  48. package/dist/sdk/{check-provider-registry-Z7EHECLC.mjs → check-provider-registry-RRWCXSTG.mjs} +3 -3
  49. package/dist/sdk/{chunk-VMVIM4JB.mjs → chunk-4I3TJ7UJ.mjs} +37 -7
  50. package/dist/sdk/chunk-4I3TJ7UJ.mjs.map +1 -0
  51. package/dist/sdk/{chunk-7YZSSO4X.mjs → chunk-6DPPP7LD.mjs} +10 -10
  52. package/dist/sdk/chunk-7ERVRLDV.mjs +296 -0
  53. package/dist/sdk/chunk-7ERVRLDV.mjs.map +1 -0
  54. package/dist/sdk/chunk-ANUT54HW.mjs +1502 -0
  55. package/dist/sdk/chunk-ANUT54HW.mjs.map +1 -0
  56. package/dist/sdk/chunk-DHETLQIX.mjs +739 -0
  57. package/dist/sdk/chunk-DHETLQIX.mjs.map +1 -0
  58. package/dist/sdk/chunk-QXT47ZHR.mjs +390 -0
  59. package/dist/sdk/chunk-QXT47ZHR.mjs.map +1 -0
  60. package/dist/sdk/{chunk-6HLDM4OB.mjs → chunk-TQQNSHQV.mjs} +71 -30
  61. package/dist/sdk/chunk-TQQNSHQV.mjs.map +1 -0
  62. package/dist/sdk/chunk-ZOF5QT6U.mjs +5943 -0
  63. package/dist/sdk/chunk-ZOF5QT6U.mjs.map +1 -0
  64. package/dist/sdk/{config-TSA5FUOM.mjs → config-2STD74CJ.mjs} +2 -2
  65. package/dist/sdk/config-JE4HKTWW.mjs +16 -0
  66. package/dist/sdk/failure-condition-evaluator-5DZYMCGW.mjs +18 -0
  67. package/dist/sdk/github-frontend-L3F5JXPJ.mjs +1394 -0
  68. package/dist/sdk/github-frontend-L3F5JXPJ.mjs.map +1 -0
  69. package/dist/sdk/{host-6QBBL3QW.mjs → host-QBJ7TOWG.mjs} +3 -3
  70. package/dist/sdk/{host-CVH2CSHM.mjs → host-X5ZZCEWN.mjs} +2 -2
  71. package/dist/sdk/routing-CVQT4KHX.mjs +26 -0
  72. package/dist/sdk/{schedule-tool-ADUXTCY7.mjs → schedule-tool-AECLFHSY.mjs} +7 -7
  73. package/dist/sdk/{schedule-tool-5XBASQVY.mjs → schedule-tool-Z6QYL2B3.mjs} +3 -3
  74. package/dist/sdk/{schedule-tool-handler-N7UNABOA.mjs → schedule-tool-handler-6QLZRTQA.mjs} +7 -7
  75. package/dist/sdk/{schedule-tool-handler-GBIJS376.mjs → schedule-tool-handler-J4NUETJ6.mjs} +3 -3
  76. package/dist/sdk/schedule-tool-handler-J4NUETJ6.mjs.map +1 -0
  77. package/dist/sdk/sdk.d.mts +33 -0
  78. package/dist/sdk/sdk.d.ts +33 -0
  79. package/dist/sdk/sdk.js +2120 -404
  80. package/dist/sdk/sdk.js.map +1 -1
  81. package/dist/sdk/sdk.mjs +6 -6
  82. package/dist/sdk/task-evaluator-HLNXKKVV.mjs +1278 -0
  83. package/dist/sdk/task-evaluator-HLNXKKVV.mjs.map +1 -0
  84. package/dist/sdk/trace-helpers-WJXYVV4S.mjs +29 -0
  85. package/dist/sdk/trace-helpers-WJXYVV4S.mjs.map +1 -0
  86. package/dist/sdk/trace-reader-ZY77OFNM.mjs +266 -0
  87. package/dist/sdk/trace-reader-ZY77OFNM.mjs.map +1 -0
  88. package/dist/sdk/track-execution-MKIQXP2C.mjs +136 -0
  89. package/dist/sdk/track-execution-MKIQXP2C.mjs.map +1 -0
  90. package/dist/sdk/{workflow-check-provider-SRIMWKLQ.mjs → workflow-check-provider-EXMC6JIS.mjs} +7 -7
  91. package/dist/sdk/workflow-check-provider-EXMC6JIS.mjs.map +1 -0
  92. package/dist/sdk/{workflow-check-provider-3IXIADSV.mjs → workflow-check-provider-VKYGI5GK.mjs} +3 -3
  93. package/dist/sdk/workflow-check-provider-VKYGI5GK.mjs.map +1 -0
  94. package/dist/slack/socket-runner.d.ts +12 -0
  95. package/dist/slack/socket-runner.d.ts.map +1 -1
  96. package/dist/teams/webhook-runner.d.ts +4 -0
  97. package/dist/teams/webhook-runner.d.ts.map +1 -1
  98. package/dist/telegram/polling-runner.d.ts +2 -0
  99. package/dist/telegram/polling-runner.d.ts.map +1 -1
  100. package/dist/types/config.d.ts +33 -0
  101. package/dist/types/config.d.ts.map +1 -1
  102. package/dist/whatsapp/webhook-runner.d.ts +4 -0
  103. package/dist/whatsapp/webhook-runner.d.ts.map +1 -1
  104. package/package.json +2 -2
  105. package/dist/sdk/a2a-frontend-BDACLGMA.mjs.map +0 -1
  106. package/dist/sdk/chunk-6HLDM4OB.mjs.map +0 -1
  107. package/dist/sdk/chunk-VMVIM4JB.mjs.map +0 -1
  108. /package/dist/sdk/{check-provider-registry-4YKTEDKF.mjs.map → check-provider-registry-I4BCWKRU.mjs.map} +0 -0
  109. /package/dist/sdk/{check-provider-registry-Z7EHECLC.mjs.map → check-provider-registry-RRWCXSTG.mjs.map} +0 -0
  110. /package/dist/sdk/{chunk-7YZSSO4X.mjs.map → chunk-6DPPP7LD.mjs.map} +0 -0
  111. /package/dist/sdk/{config-TSA5FUOM.mjs.map → config-2STD74CJ.mjs.map} +0 -0
  112. /package/dist/sdk/{schedule-tool-5XBASQVY.mjs.map → config-JE4HKTWW.mjs.map} +0 -0
  113. /package/dist/sdk/{schedule-tool-ADUXTCY7.mjs.map → failure-condition-evaluator-5DZYMCGW.mjs.map} +0 -0
  114. /package/dist/sdk/{host-6QBBL3QW.mjs.map → host-QBJ7TOWG.mjs.map} +0 -0
  115. /package/dist/sdk/{host-CVH2CSHM.mjs.map → host-X5ZZCEWN.mjs.map} +0 -0
  116. /package/dist/sdk/{schedule-tool-handler-GBIJS376.mjs.map → routing-CVQT4KHX.mjs.map} +0 -0
  117. /package/dist/sdk/{schedule-tool-handler-N7UNABOA.mjs.map → schedule-tool-AECLFHSY.mjs.map} +0 -0
  118. /package/dist/sdk/{workflow-check-provider-3IXIADSV.mjs.map → schedule-tool-Z6QYL2B3.mjs.map} +0 -0
  119. /package/dist/sdk/{workflow-check-provider-SRIMWKLQ.mjs.map → schedule-tool-handler-6QLZRTQA.mjs.map} +0 -0
@@ -28,6 +28,7 @@ export declare class CustomToolsSSEServer implements CustomMCPServer {
28
28
  private workflowContext?;
29
29
  private keepaliveInterval;
30
30
  private activeToolCalls;
31
+ private inFlightToolCalls;
31
32
  private lastActivityAt;
32
33
  private gracefulStopRequested;
33
34
  private static readonly KEEPALIVE_INTERVAL_MS;
@@ -46,6 +47,9 @@ export declare class CustomToolsSSEServer implements CustomMCPServer {
46
47
  * Stop the keepalive interval
47
48
  */
48
49
  private stopKeepalive;
50
+ private beginToolCall;
51
+ private finalizeToolCall;
52
+ private forceDrainToolCalls;
49
53
  /**
50
54
  * Stop the server and cleanup resources
51
55
  */
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-custom-sse-server.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/providers/mcp-custom-sse-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAMvD,OAAO,EAKL,mBAAmB,EAEpB,MAAM,0BAA0B,CAAC;AAsHlC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,IAAI,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,eAAe,CAAC,CAAsB;IAC9C,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,qBAAqB,CAAkB;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAS;gBAGpD,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,EACxC,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,OAAe,EACtB,eAAe,CAAC,EAAE,mBAAmB;IAuDvC;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAqD9B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAgCtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoFlF;;OAEG;IACH,MAAM,IAAI,MAAM;IAOhB;;OAEG;YACW,aAAa;IAuC3B;;;OAGG;YACW,mBAAmB;IA4DjC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2C3B;;OAEG;YACW,aAAa;IAyE3B;;OAEG;IACH,OAAO,CAAC,UAAU;IAMlB;;OAEG;IACH,OAAO,CAAC,OAAO;IAwBf;;OAEG;YACW,gBAAgB;IAkE9B;;OAEG;YACW,eAAe;IA+E7B;;OAEG;YACW,cAAc;IAwY5B;;OAEG;YACW,qBAAqB;IA+FnC;;OAEG;YACW,eAAe;IA0B7B;;;;;;;;OAQG;IACH,OAAO,CAAC,yBAAyB;IAiGjC,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAmB1B"}
1
+ {"version":3,"file":"mcp-custom-sse-server.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/providers/mcp-custom-sse-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAMvD,OAAO,EAKL,mBAAmB,EAEpB,MAAM,0BAA0B,CAAC;AAgIlC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,IAAI,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,eAAe,CAAC,CAAsB;IAC9C,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,iBAAiB,CAAoC;IAC7D,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,qBAAqB,CAAkB;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAS;gBAGpD,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,EACxC,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,OAAe,EACtB,eAAe,CAAC,EAAE,mBAAmB;IAuDvC;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAqD9B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAgCtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqFlF;;OAEG;IACH,MAAM,IAAI,MAAM;IAOhB;;OAEG;YACW,aAAa;IAuC3B;;;OAGG;YACW,mBAAmB;IA4DjC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2C3B;;OAEG;YACW,aAAa;IAyE3B;;OAEG;IACH,OAAO,CAAC,UAAU;IAMlB;;OAEG;IACH,OAAO,CAAC,OAAO;IAwBf;;OAEG;YACW,gBAAgB;IAkE9B;;OAEG;YACW,eAAe;IA+E7B;;OAEG;YACW,cAAc;IA6X5B;;OAEG;YACW,qBAAqB;IA+FnC;;OAEG;YACW,eAAe;IA0B7B;;;;;;;;OAQG;IACH,OAAO,CAAC,yBAAyB;IAiGjC,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAmB1B"}
@@ -0,0 +1,46 @@
1
+ import type { RunnerHost } from './runner-host';
2
+ import type { GracefulRestartConfig } from '../types/config';
3
+ export interface GracefulRestartOptions {
4
+ drainTimeoutMs: number;
5
+ childReadyTimeoutMs: number;
6
+ notifyUsers: boolean;
7
+ restartCommand?: string;
8
+ }
9
+ /**
10
+ * Manages graceful restart: drains the old process while spawning a new one.
11
+ *
12
+ * Trigger via SIGUSR1. The old process stops accepting new work, waits for
13
+ * in-flight tasks to complete, then exits. The new process takes over.
14
+ */
15
+ export declare class GracefulRestartManager {
16
+ private restarting;
17
+ private host;
18
+ private options;
19
+ private cleanupCallbacks;
20
+ constructor(host: RunnerHost, config?: GracefulRestartConfig);
21
+ /** Register a cleanup callback to run before old process exits. */
22
+ onCleanup(cb: () => Promise<void>): void;
23
+ /** Whether a restart is currently in progress. */
24
+ get isRestarting(): boolean;
25
+ /**
26
+ * Initiate a graceful restart. Both processes run in parallel during the
27
+ * transition: the new process accepts new work while the old one finishes
28
+ * its in-flight tasks.
29
+ *
30
+ * 1. Stop listening (close servers/sockets, free ports)
31
+ * 2. Spawn new process (binds to freed ports, starts accepting)
32
+ * 3. Wait for new process to signal readiness
33
+ * 4. Drain old process (wait for in-flight work to complete)
34
+ * 5. Cleanup and exit old process
35
+ */
36
+ initiateRestart(): Promise<void>;
37
+ private spawnNewProcess;
38
+ private buildSpawnCommand;
39
+ /**
40
+ * Extract visor-specific args from process.argv, skipping the node binary
41
+ * and the script path (which may be an npx-resolved path).
42
+ */
43
+ private extractVisorArgs;
44
+ private waitForChildReady;
45
+ }
46
+ //# sourceMappingURL=graceful-restart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graceful-restart.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/runners/graceful-restart.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,gBAAgB,CAAkC;gBAE9C,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,qBAAqB;IAU5D,mEAAmE;IACnE,SAAS,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIxC,kDAAkD;IAClD,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;;;;;;;;;OAUG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAoDtC,OAAO,CAAC,eAAe;IAgCvB,OAAO,CAAC,iBAAiB;IA0BzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,iBAAiB;CAuC1B"}
@@ -37,8 +37,20 @@ export declare class McpServerRunner implements Runner {
37
37
  private transports;
38
38
  private taskStore?;
39
39
  private configPath?;
40
+ private activeRequests;
41
+ private draining;
40
42
  constructor(engine: StateMachineExecutionEngine, cfg: VisorConfig, options: McpFrontendOptions);
41
43
  start(): Promise<void>;
44
+ /**
45
+ * Stop listening for new connections and free the port so a new process can bind.
46
+ * Existing in-flight requests continue processing (tracked via activeRequests).
47
+ */
48
+ stopListening(): Promise<void>;
49
+ /**
50
+ * Enter drain mode: stop accepting new connections, wait for active requests to finish.
51
+ * @param timeoutMs - Max wait time. 0 = unlimited (default).
52
+ */
53
+ drain(timeoutMs?: number): Promise<void>;
42
54
  stop(): Promise<void>;
43
55
  updateConfig(cfg: VisorConfig): void;
44
56
  setTaskStore(store: TaskStore, configPath?: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server-runner.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/runners/mcp-server-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAWrF,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAwBD;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,MAAM;IAQ1C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,OAAO;IATjB,QAAQ,CAAC,IAAI,SAAS;IACtB,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,UAAU,CAAoD;IACtE,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAS;gBAGlB,MAAM,EAAE,2BAA2B,EACnC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,kBAAkB;IAG/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4LtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAIpC,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAKzD;;;OAGG;YACW,aAAa;IAoJ3B;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,mBAAmB;CAsD5B"}
1
+ {"version":3,"file":"mcp-server-runner.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/runners/mcp-server-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAWrF,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAwBD;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,MAAM;IAU1C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,OAAO;IAXjB,QAAQ,CAAC,IAAI,SAAS;IACtB,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,UAAU,CAAoD;IACtE,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,QAAQ,CAAS;gBAGf,MAAM,EAAE,2BAA2B,EACnC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,kBAAkB;IAG/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4L5B;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBpC;;;OAGG;IACG,KAAK,CAAC,SAAS,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBnC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAIpC,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAKzD;;;OAGG;YACW,aAAa;IA+J3B;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,mBAAmB;CAsD5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"runner-factory.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/runners/runner-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAErF;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,2BAA2B,EACnC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,MAAM,CAAC,CAwIjB"}
1
+ {"version":3,"file":"runner-factory.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/runners/runner-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAErF;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,2BAA2B,EACnC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,MAAM,CAAC,CA8IjB"}
@@ -26,5 +26,17 @@ export declare class RunnerHost {
26
26
  broadcastConfigUpdate(cfg: VisorConfig): void;
27
27
  /** Propagate a shared task store to all runners that support it. */
28
28
  setTaskStore(store: TaskStore, configPath?: string): void;
29
+ /**
30
+ * Phase 1 of graceful restart: stop listening for new connections/messages.
31
+ * Frees ports so a new process can bind immediately.
32
+ * Does NOT wait for in-flight work — call drainAll() after for that.
33
+ */
34
+ stopListeningAll(): Promise<void>;
35
+ /**
36
+ * Drain all runners: stop accepting new work, wait for in-flight work to complete.
37
+ * Runners without drain() fall back to stop().
38
+ * @param timeoutMs - Max wait time in ms. 0 means wait indefinitely (default).
39
+ */
40
+ drainAll(timeoutMs?: number): Promise<void>;
29
41
  }
30
42
  //# sourceMappingURL=runner-host.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner-host.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/runners/runner-host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAG9D;;;;GAIG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAgB;IAE/B,oDAAoD;IACpD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,6CAA6C;IAC7C,UAAU,IAAI,SAAS,MAAM,EAAE;IAI/B;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB/B;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B,gDAAgD;IAChD,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAM7C,oEAAoE;IACpE,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;CAO1D"}
1
+ {"version":3,"file":"runner-host.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/runners/runner-host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAG9D;;;;GAIG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAgB;IAE/B,oDAAoD;IACpD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,6CAA6C;IAC7C,UAAU,IAAI,SAAS,MAAM,EAAE;IAI/B;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB/B;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B,gDAAgD;IAChD,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAM7C,oEAAoE;IACpE,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAQzD;;;;OAIG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBvC;;;;OAIG;IACG,QAAQ,CAAC,SAAS,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAoC7C"}
@@ -17,5 +17,17 @@ export interface Runner {
17
17
  updateConfig(cfg: VisorConfig): void;
18
18
  /** Optionally attach a shared cross-frontend task store. */
19
19
  setTaskStore?(store: TaskStore, configPath?: string): void;
20
+ /**
21
+ * Enter drain mode: stop accepting new work but let in-flight work complete.
22
+ * Resolves when all in-flight work finishes.
23
+ * @param timeoutMs - Max wait time in ms. 0 means wait indefinitely (default).
24
+ */
25
+ drain?(timeoutMs?: number): Promise<void>;
26
+ /**
27
+ * Stop listening for new connections/messages (close servers, stop polling).
28
+ * Does NOT wait for in-flight work to complete — use drain() for that.
29
+ * This frees ports so a new process can bind immediately.
30
+ */
31
+ stopListening?(): Promise<void>;
20
32
  }
21
33
  //# sourceMappingURL=runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/runners/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,iEAAiE;IACjE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB,kCAAkC;IAClC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,wCAAwC;IACxC,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC;IAErC,4DAA4D;IAC5D,YAAY,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5D"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/runners/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,iEAAiE;IACjE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB,kCAAkC;IAClC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,wCAAwC;IACxC,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC;IAErC,4DAA4D;IAC5D,YAAY,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3D;;;;OAIG;IACH,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1C;;;;OAIG;IACH,aAAa,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC"}