@probelabs/visor 0.1.152-ee → 0.1.153-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 (57) hide show
  1. package/dist/config.d.ts.map +1 -1
  2. package/dist/docs/ai-configuration.md +4 -4
  3. package/dist/docs/sandbox-engines.md +53 -5
  4. package/dist/examples/ai-with-bash.yaml +2 -2
  5. package/dist/examples/sandbox-bind-paths.yaml +31 -0
  6. package/dist/examples/sandbox-host-workdir.yaml +27 -0
  7. package/dist/examples/workflow-sandbox.yaml +43 -0
  8. package/dist/generated/config-schema.d.ts +38 -8
  9. package/dist/generated/config-schema.d.ts.map +1 -1
  10. package/dist/generated/config-schema.json +40 -8
  11. package/dist/index.js +148 -36
  12. package/dist/sandbox/bubblewrap-sandbox.d.ts.map +1 -1
  13. package/dist/sandbox/check-runner.d.ts.map +1 -1
  14. package/dist/sandbox/docker-image-sandbox.d.ts.map +1 -1
  15. package/dist/sandbox/seatbelt-sandbox.d.ts.map +1 -1
  16. package/dist/sandbox/types.d.ts +13 -0
  17. package/dist/sandbox/types.d.ts.map +1 -1
  18. package/dist/scheduler/schedule-tool.d.ts +2 -0
  19. package/dist/scheduler/schedule-tool.d.ts.map +1 -1
  20. package/dist/sdk/{check-provider-registry-HR6YM5MI.mjs → check-provider-registry-XZE5PRSE.mjs} +3 -3
  21. package/dist/sdk/{check-provider-registry-QBURXJ6B.mjs → check-provider-registry-ZOGNKTC3.mjs} +3 -3
  22. package/dist/sdk/{chunk-FYK2DJK6.mjs → chunk-CPYQDJ27.mjs} +86 -26
  23. package/dist/sdk/chunk-CPYQDJ27.mjs.map +1 -0
  24. package/dist/sdk/{chunk-JRDGCUEG.mjs → chunk-DXNWUIAN.mjs} +130 -91
  25. package/dist/sdk/chunk-DXNWUIAN.mjs.map +1 -0
  26. package/dist/sdk/{chunk-QRR6OJQN.mjs → chunk-EYQWEVZF.mjs} +130 -91
  27. package/dist/sdk/chunk-EYQWEVZF.mjs.map +1 -0
  28. package/dist/sdk/{config-MTEIGCOQ.mjs → config-SW3VO4DQ.mjs} +2 -2
  29. package/dist/sdk/{schedule-tool-62XTFB6K.mjs → schedule-tool-74VMD77T.mjs} +3 -3
  30. package/dist/sdk/{schedule-tool-6NALFGQR.mjs → schedule-tool-WSZKJUNQ.mjs} +3 -3
  31. package/dist/sdk/{schedule-tool-handler-5K275UT6.mjs → schedule-tool-handler-EOQBRZSD.mjs} +3 -3
  32. package/dist/sdk/{schedule-tool-handler-RLAKPPPX.mjs → schedule-tool-handler-Q7E5NBHS.mjs} +3 -3
  33. package/dist/sdk/sdk.d.mts +15 -2
  34. package/dist/sdk/sdk.d.ts +15 -2
  35. package/dist/sdk/sdk.js +209 -110
  36. package/dist/sdk/sdk.js.map +1 -1
  37. package/dist/sdk/sdk.mjs +2 -2
  38. package/dist/sdk/{workflow-check-provider-6TEZHBZJ.mjs → workflow-check-provider-GIW4WECT.mjs} +3 -3
  39. package/dist/sdk/{workflow-check-provider-KG6IFH6W.mjs → workflow-check-provider-JHHACJHF.mjs} +3 -3
  40. package/dist/state-machine/workflow-projection.d.ts.map +1 -1
  41. package/dist/types/config.d.ts +2 -2
  42. package/dist/types/config.d.ts.map +1 -1
  43. package/dist/types/workflow.d.ts +8 -0
  44. package/dist/types/workflow.d.ts.map +1 -1
  45. package/package.json +1 -1
  46. package/dist/sdk/chunk-FYK2DJK6.mjs.map +0 -1
  47. package/dist/sdk/chunk-JRDGCUEG.mjs.map +0 -1
  48. package/dist/sdk/chunk-QRR6OJQN.mjs.map +0 -1
  49. /package/dist/sdk/{check-provider-registry-HR6YM5MI.mjs.map → check-provider-registry-XZE5PRSE.mjs.map} +0 -0
  50. /package/dist/sdk/{check-provider-registry-QBURXJ6B.mjs.map → check-provider-registry-ZOGNKTC3.mjs.map} +0 -0
  51. /package/dist/sdk/{config-MTEIGCOQ.mjs.map → config-SW3VO4DQ.mjs.map} +0 -0
  52. /package/dist/sdk/{schedule-tool-62XTFB6K.mjs.map → schedule-tool-74VMD77T.mjs.map} +0 -0
  53. /package/dist/sdk/{schedule-tool-6NALFGQR.mjs.map → schedule-tool-WSZKJUNQ.mjs.map} +0 -0
  54. /package/dist/sdk/{schedule-tool-handler-5K275UT6.mjs.map → schedule-tool-handler-EOQBRZSD.mjs.map} +0 -0
  55. /package/dist/sdk/{schedule-tool-handler-RLAKPPPX.mjs.map → schedule-tool-handler-Q7E5NBHS.mjs.map} +0 -0
  56. /package/dist/sdk/{workflow-check-provider-6TEZHBZJ.mjs.map → workflow-check-provider-GIW4WECT.mjs.map} +0 -0
  57. /package/dist/sdk/{workflow-check-provider-KG6IFH6W.mjs.map → workflow-check-provider-JHHACJHF.mjs.map} +0 -0
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- process.env.VISOR_VERSION = '0.1.152';
2
+ process.env.VISOR_VERSION = '0.1.153';
3
3
  process.env.PROBE_VERSION = '0.6.0-rc269';
4
- process.env.VISOR_COMMIT_SHA = 'fa1265c0b241f426e6fe44449a8c2f0a0aea1ba7';
5
- process.env.VISOR_COMMIT_SHORT = 'fa1265c';
4
+ process.env.VISOR_COMMIT_SHA = '812209528637eae4c9bc2358354377275099850f';
5
+ process.env.VISOR_COMMIT_SHORT = '8122095';
6
6
  /******/ (() => { // webpackBootstrap
7
7
  /******/ var __webpack_modules__ = ({
8
8
 
@@ -164503,7 +164503,6 @@ class ConfigManager {
164503
164503
  ['compose', config.compose],
164504
164504
  ['service', config.service],
164505
164505
  ['cache', config.cache],
164506
- ['visor_path', config.visor_path],
164507
164506
  ['resources', config.resources],
164508
164507
  ];
164509
164508
  for (const [field, value] of dockerOnlyFields) {
@@ -164554,21 +164553,6 @@ class ConfigManager {
164554
164553
  message: `Compose file path '${config.compose}' in sandbox '${name}' must not contain '..' path traversal`,
164555
164554
  });
164556
164555
  }
164557
- // Validate visor_path
164558
- if (config.visor_path) {
164559
- if (!config.visor_path.startsWith('/')) {
164560
- errors.push({
164561
- field: `sandboxes.${name}.visor_path`,
164562
- message: `visor_path '${config.visor_path}' in sandbox '${name}' must be an absolute path (start with /)`,
164563
- });
164564
- }
164565
- if (/\.\./.test(config.visor_path)) {
164566
- errors.push({
164567
- field: `sandboxes.${name}.visor_path`,
164568
- message: `visor_path '${config.visor_path}' in sandbox '${name}' must not contain '..' path traversal`,
164569
- });
164570
- }
164571
- }
164572
164556
  // Validate cache paths are absolute and safe
164573
164557
  if (config.cache?.paths) {
164574
164558
  for (const p of config.cache.paths) {
@@ -164600,11 +164584,26 @@ class ConfigManager {
164600
164584
  }
164601
164585
  }
164602
164586
  // Common validations for all engines
164603
- if (config.workdir) {
164587
+ // Validate visor_path
164588
+ if (config.visor_path) {
164589
+ if (!config.visor_path.startsWith('/')) {
164590
+ errors.push({
164591
+ field: `sandboxes.${name}.visor_path`,
164592
+ message: `visor_path '${config.visor_path}' in sandbox '${name}' must be an absolute path (start with /)`,
164593
+ });
164594
+ }
164595
+ if (/\.\./.test(config.visor_path)) {
164596
+ errors.push({
164597
+ field: `sandboxes.${name}.visor_path`,
164598
+ message: `visor_path '${config.visor_path}' in sandbox '${name}' must not contain '..' path traversal`,
164599
+ });
164600
+ }
164601
+ }
164602
+ if (config.workdir && config.workdir !== 'host') {
164604
164603
  if (!config.workdir.startsWith('/')) {
164605
164604
  errors.push({
164606
164605
  field: `sandboxes.${name}.workdir`,
164607
- message: `Workdir '${config.workdir}' in sandbox '${name}' must be an absolute path (start with /)`,
164606
+ message: `Workdir '${config.workdir}' in sandbox '${name}' must be an absolute path (start with /) or the literal "host"`,
164608
164607
  });
164609
164608
  }
164610
164609
  if (/\.\./.test(config.workdir)) {
@@ -164614,6 +164613,38 @@ class ConfigManager {
164614
164613
  });
164615
164614
  }
164616
164615
  }
164616
+ // Validate bind_paths
164617
+ if (config.bind_paths) {
164618
+ for (let i = 0; i < config.bind_paths.length; i++) {
164619
+ const bp = config.bind_paths[i];
164620
+ if (!bp.host) {
164621
+ errors.push({
164622
+ field: `sandboxes.${name}.bind_paths[${i}].host`,
164623
+ message: `bind_paths[${i}] in sandbox '${name}' is missing required 'host' field`,
164624
+ });
164625
+ }
164626
+ if (bp.host && /\.\./.test(bp.host)) {
164627
+ errors.push({
164628
+ field: `sandboxes.${name}.bind_paths[${i}].host`,
164629
+ message: `bind_paths[${i}].host '${bp.host}' in sandbox '${name}' must not contain '..' path traversal`,
164630
+ });
164631
+ }
164632
+ if (bp.container) {
164633
+ if (!bp.container.startsWith('/')) {
164634
+ errors.push({
164635
+ field: `sandboxes.${name}.bind_paths[${i}].container`,
164636
+ message: `bind_paths[${i}].container '${bp.container}' in sandbox '${name}' must be an absolute path (start with /)`,
164637
+ });
164638
+ }
164639
+ if (/\.\./.test(bp.container)) {
164640
+ errors.push({
164641
+ field: `sandboxes.${name}.bind_paths[${i}].container`,
164642
+ message: `bind_paths[${i}].container '${bp.container}' in sandbox '${name}' must not contain '..' path traversal`,
164643
+ });
164644
+ }
164645
+ }
164646
+ }
164647
+ }
164617
164648
  }
164618
164649
  /**
164619
164650
  * Validate individual check configuration
@@ -171965,7 +171996,7 @@ exports.configSchema = {
171965
171996
  description: 'Arguments/inputs for the workflow',
171966
171997
  },
171967
171998
  overrides: {
171968
- $ref: '#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-13509-28103-src_types_config.ts-0-55255%3E%3E',
171999
+ $ref: '#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-13519-28113-src_types_config.ts-0-55265%3E%3E',
171969
172000
  description: 'Override specific step configurations in the workflow',
171970
172001
  },
171971
172002
  output_mapping: {
@@ -171981,7 +172012,7 @@ exports.configSchema = {
171981
172012
  description: 'Config file path - alternative to workflow ID (loads a Visor config file as workflow)',
171982
172013
  },
171983
172014
  workflow_overrides: {
171984
- $ref: '#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-13509-28103-src_types_config.ts-0-55255%3E%3E',
172015
+ $ref: '#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-13519-28113-src_types_config.ts-0-55265%3E%3E',
171985
172016
  description: 'Alias for overrides - workflow step overrides (backward compatibility)',
171986
172017
  },
171987
172018
  ref: {
@@ -172402,11 +172433,11 @@ exports.configSchema = {
172402
172433
  },
172403
172434
  description: "Array of blocked command patterns (e.g., ['rm -rf', 'sudo'])",
172404
172435
  },
172405
- noDefaultAllow: {
172436
+ disableDefaultAllow: {
172406
172437
  type: 'boolean',
172407
172438
  description: 'Disable default safe command list (use with caution)',
172408
172439
  },
172409
- noDefaultDeny: {
172440
+ disableDefaultDeny: {
172410
172441
  type: 'boolean',
172411
172442
  description: 'Disable default dangerous command blocklist (use with extreme caution)',
172412
172443
  },
@@ -172670,7 +172701,7 @@ exports.configSchema = {
172670
172701
  description: 'Custom output name (defaults to workflow name)',
172671
172702
  },
172672
172703
  overrides: {
172673
- $ref: '#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-13509-28103-src_types_config.ts-0-55255%3E%3E',
172704
+ $ref: '#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-13519-28113-src_types_config.ts-0-55265%3E%3E',
172674
172705
  description: 'Step overrides',
172675
172706
  },
172676
172707
  output_mapping: {
@@ -172685,13 +172716,13 @@ exports.configSchema = {
172685
172716
  '^x-': {},
172686
172717
  },
172687
172718
  },
172688
- 'Record<string,Partial<interface-src_types_config.ts-13509-28103-src_types_config.ts-0-55255>>': {
172719
+ 'Record<string,Partial<interface-src_types_config.ts-13519-28113-src_types_config.ts-0-55265>>': {
172689
172720
  type: 'object',
172690
172721
  additionalProperties: {
172691
- $ref: '#/definitions/Partial%3Cinterface-src_types_config.ts-13509-28103-src_types_config.ts-0-55255%3E',
172722
+ $ref: '#/definitions/Partial%3Cinterface-src_types_config.ts-13519-28113-src_types_config.ts-0-55265%3E',
172692
172723
  },
172693
172724
  },
172694
- 'Partial<interface-src_types_config.ts-13509-28103-src_types_config.ts-0-55255>': {
172725
+ 'Partial<interface-src_types_config.ts-13519-28113-src_types_config.ts-0-55265>': {
172695
172726
  type: 'object',
172696
172727
  additionalProperties: false,
172697
172728
  },
@@ -173398,6 +173429,13 @@ exports.configSchema = {
173398
173429
  $ref: '#/definitions/SandboxCacheConfig',
173399
173430
  description: 'Cache volume configuration',
173400
173431
  },
173432
+ bind_paths: {
173433
+ type: 'array',
173434
+ items: {
173435
+ $ref: '#/definitions/SandboxBindPath',
173436
+ },
173437
+ description: 'Additional host paths to bind-mount into the sandbox',
173438
+ },
173401
173439
  },
173402
173440
  additionalProperties: false,
173403
173441
  description: 'Configuration for a single sandbox environment',
@@ -173457,6 +173495,29 @@ exports.configSchema = {
173457
173495
  '^x-': {},
173458
173496
  },
173459
173497
  },
173498
+ SandboxBindPath: {
173499
+ type: 'object',
173500
+ properties: {
173501
+ host: {
173502
+ type: 'string',
173503
+ description: 'Host path (supports ~ prefix for home directory)',
173504
+ },
173505
+ container: {
173506
+ type: 'string',
173507
+ description: 'Container path (defaults to resolved host path)',
173508
+ },
173509
+ read_only: {
173510
+ type: 'boolean',
173511
+ description: 'Mount as read-only (default: true)',
173512
+ },
173513
+ },
173514
+ required: ['host'],
173515
+ additionalProperties: false,
173516
+ description: 'Additional host path to bind-mount into the sandbox',
173517
+ patternProperties: {
173518
+ '^x-': {},
173519
+ },
173520
+ },
173460
173521
  SandboxDefaults: {
173461
173522
  type: 'object',
173462
173523
  properties: {
@@ -192534,7 +192595,7 @@ class BubblewrapSandbox {
192534
192595
  * Build the bwrap command-line arguments.
192535
192596
  */
192536
192597
  buildArgs(options) {
192537
- const workdir = this.config.workdir || '/workspace';
192598
+ const workdir = this.config.workdir === 'host' ? this.repoPath : this.config.workdir || '/workspace';
192538
192599
  const args = [];
192539
192600
  // Read-only system directories
192540
192601
  args.push('--ro-bind', '/usr', '/usr');
@@ -192568,6 +192629,17 @@ class BubblewrapSandbox {
192568
192629
  // Visor dist mount (read-only) — required for child visor process
192569
192630
  const visorPath = this.config.visor_path || '/opt/visor';
192570
192631
  args.push('--ro-bind', this.visorDistPath, visorPath);
192632
+ // Additional bind mounts
192633
+ if (this.config.bind_paths) {
192634
+ for (const bp of this.config.bind_paths) {
192635
+ const hostPath = bp.host.startsWith('~')
192636
+ ? (0, path_1.resolve)((process.env.HOME || '/root') + bp.host.slice(1))
192637
+ : (0, path_1.resolve)(bp.host);
192638
+ const containerPath = bp.container || hostPath;
192639
+ const readOnly = bp.read_only !== false; // default true
192640
+ args.push(readOnly ? '--ro-bind' : '--bind', hostPath, containerPath);
192641
+ }
192642
+ }
192571
192643
  // Working directory inside sandbox
192572
192644
  args.push('--chdir', workdir);
192573
192645
  // Namespace isolation
@@ -192902,7 +192974,9 @@ class CheckRunner {
192902
192974
  // Filter environment variables
192903
192975
  const env = (0, env_filter_1.filterEnvForSandbox)(checkConfig.env, process.env, sandboxConfig.env_passthrough, workspaceDefaults?.env_passthrough);
192904
192976
  // Set up child trace file relay (skip for read-only sandboxes)
192905
- const workdir = sandboxConfig.workdir || '/workspace';
192977
+ const workdir = sandboxConfig.workdir === 'host'
192978
+ ? sandboxManager.getRepoPath()
192979
+ : sandboxConfig.workdir || '/workspace';
192906
192980
  let hostTracePath;
192907
192981
  if (!sandboxConfig.read_only) {
192908
192982
  const traceFileName = `.visor-trace-${(0, crypto_1.randomUUID)().slice(0, 8)}.ndjson`;
@@ -193247,7 +193321,7 @@ class DockerImageSandbox {
193247
193321
  */
193248
193322
  async start() {
193249
193323
  const image = await this.buildImageIfNeeded();
193250
- const workdir = this.config.workdir || '/workspace';
193324
+ const workdir = this.config.workdir === 'host' ? this.repoPath : this.config.workdir || '/workspace';
193251
193325
  const visorPath = this.config.visor_path || '/opt/visor';
193252
193326
  const readOnlySuffix = this.config.read_only ? ':ro' : '';
193253
193327
  const args = [
@@ -193278,6 +193352,17 @@ class DockerImageSandbox {
193278
193352
  for (const mount of this.cacheVolumeMounts) {
193279
193353
  args.push('-v', mount);
193280
193354
  }
193355
+ // Additional bind mounts
193356
+ if (this.config.bind_paths) {
193357
+ for (const bp of this.config.bind_paths) {
193358
+ const hostPath = bp.host.startsWith('~')
193359
+ ? (0, path_1.resolve)((process.env.HOME || '/root') + bp.host.slice(1))
193360
+ : (0, path_1.resolve)(bp.host);
193361
+ const containerPath = bp.container || hostPath;
193362
+ const readOnly = bp.read_only !== false; // default true
193363
+ args.push('-v', `${hostPath}:${containerPath}${readOnly ? ':ro' : ''}`);
193364
+ }
193365
+ }
193281
193366
  // Image and keep-alive command
193282
193367
  args.push(image, 'sleep', 'infinity');
193283
193368
  logger_1.logger.info(`Starting sandbox container '${this.containerName}'`);
@@ -193778,6 +193863,20 @@ class SeatbeltSandbox {
193778
193863
  // Visor dist read access — required for child visor process
193779
193864
  const visorDistPath = this.escapePath(this.visorDistPath);
193780
193865
  lines.push(`(allow file-read* (subpath "${visorDistPath}"))`);
193866
+ // Additional bind paths
193867
+ if (this.config.bind_paths) {
193868
+ for (const bp of this.config.bind_paths) {
193869
+ const hostPath = bp.host.startsWith('~')
193870
+ ? (0, path_1.resolve)((process.env.HOME || '/root') + bp.host.slice(1))
193871
+ : (0, path_1.resolve)(bp.host);
193872
+ // Seatbelt operates on real host paths — container field is ignored
193873
+ const escapedPath = this.escapePath(hostPath);
193874
+ lines.push(`(allow file-read* (subpath "${escapedPath}"))`);
193875
+ if (bp.read_only === false) {
193876
+ lines.push(`(allow file-write* (subpath "${escapedPath}"))`);
193877
+ }
193878
+ }
193879
+ }
193781
193880
  // Network access (unless explicitly disabled)
193782
193881
  if (this.config.network !== false) {
193783
193882
  lines.push('(allow network*)');
@@ -195910,14 +196009,15 @@ async function handleCreateTrigger(args, context, store) {
195910
196009
  error: `Available workflows: ${context.availableWorkflows.slice(0, 5).join(', ')}${context.availableWorkflows.length > 5 ? '...' : ''}`,
195911
196010
  };
195912
196011
  }
195913
- // Need at least one filter (channels, contains, or match)
196012
+ // Need at least one filter (channels, from, contains, or match)
195914
196013
  if ((!args.trigger_channels || args.trigger_channels.length === 0) &&
196014
+ (!args.trigger_from || args.trigger_from.length === 0) &&
195915
196015
  (!args.trigger_contains || args.trigger_contains.length === 0) &&
195916
196016
  !args.trigger_match) {
195917
196017
  return {
195918
196018
  success: false,
195919
196019
  message: 'Missing trigger filters',
195920
- error: 'Please specify at least one filter: trigger_channels, trigger_contains, or trigger_match.',
196020
+ error: 'Please specify at least one filter: trigger_channels, trigger_from, trigger_contains, or trigger_match.',
195921
196021
  };
195922
196022
  }
195923
196023
  // Check permissions for the workflow
@@ -195936,6 +196036,7 @@ async function handleCreateTrigger(args, context, store) {
195936
196036
  creatorName: context.userName,
195937
196037
  description: args.trigger_description,
195938
196038
  channels: args.trigger_channels,
196039
+ fromUsers: args.trigger_from,
195939
196040
  fromBots: args.trigger_from_bots ?? false,
195940
196041
  contains: args.trigger_contains,
195941
196042
  matchPattern: args.trigger_match,
@@ -195952,7 +196053,7 @@ async function handleCreateTrigger(args, context, store) {
195952
196053
 
195953
196054
  **Workflow**: ${trigger.workflow}
195954
196055
  **Channels**: ${trigger.channels?.join(', ') || 'all'}
195955
- ${trigger.contains?.length ? `**Contains**: ${trigger.contains.join(', ')}\n` : ''}${trigger.matchPattern ? `**Pattern**: /${trigger.matchPattern}/\n` : ''}${trigger.description ? `**Description**: ${trigger.description}\n` : ''}
196056
+ ${trigger.fromUsers?.length ? `**From users**: ${trigger.fromUsers.join(', ')}\n` : ''}${trigger.contains?.length ? `**Contains**: ${trigger.contains.join(', ')}\n` : ''}${trigger.matchPattern ? `**Pattern**: /${trigger.matchPattern}/\n` : ''}${trigger.description ? `**Description**: ${trigger.description}\n` : ''}
195956
196057
  ID: \`${trigger.id.substring(0, 8)}\``,
195957
196058
  };
195958
196059
  }
@@ -196096,7 +196197,7 @@ Slack messages in specific channels. Use the create_trigger, list_triggers, dele
196096
196197
  actions for this. Message triggers fire workflows based on message content, channel, sender, and thread scope.
196097
196198
 
196098
196199
  TRIGGER ACTIONS:
196099
- - create_trigger: Create a new message trigger (requires workflow + at least one filter)
196200
+ - create_trigger: Create a new message trigger (requires workflow + at least one filter). Supports filtering by user IDs (trigger_from), channels, keywords, regex, and thread scope.
196100
196201
  - list_triggers: Show user's message triggers
196101
196202
  - delete_trigger: Remove a trigger by ID
196102
196203
  - update_trigger: Enable/disable a trigger by ID
@@ -196193,6 +196294,9 @@ User: "cancel schedule abc123"
196193
196294
  User: "watch #cicd for messages containing 'failed' and run %handle-cicd"
196194
196295
  → { "action": "create_trigger", "trigger_channels": ["C0CICD"], "trigger_contains": ["failed"], "workflow": "handle-cicd" }
196195
196296
 
196297
+ User: "trigger on each of my messages in this channel and run %auto-reply" (user ID is U3P2L4XNE)
196298
+ → { "action": "create_trigger", "trigger_channels": ["C09V810NY6R"], "trigger_from": ["U3P2L4XNE"], "workflow": "auto-reply" }
196299
+
196196
196300
  User: "list my message triggers"
196197
196301
  → { "action": "list_triggers" }
196198
196302
 
@@ -196274,6 +196378,11 @@ User: "disable trigger abc123"
196274
196378
  items: { type: 'string' },
196275
196379
  description: 'For create_trigger: Slack channel IDs to monitor (e.g., ["C0CICD"]). Supports wildcard suffix (e.g., "CENG*").',
196276
196380
  },
196381
+ trigger_from: {
196382
+ type: 'array',
196383
+ items: { type: 'string' },
196384
+ description: 'For create_trigger: Slack user IDs to filter by. Only messages from these users will trigger the workflow. E.g., ["U3P2L4XNE"]. If omitted, messages from any user will trigger.',
196385
+ },
196277
196386
  trigger_from_bots: {
196278
196387
  type: 'boolean',
196279
196388
  description: 'For create_trigger: allow bot messages to trigger (default: false)',
@@ -211006,6 +211115,9 @@ function projectWorkflowToGraph(workflow, workflowInputs, _parentCheckId) {
211006
211115
  collapse: false,
211007
211116
  },
211008
211117
  },
211118
+ ...(workflow.sandboxes && { sandboxes: workflow.sandboxes }),
211119
+ ...(workflow.sandbox && { sandbox: workflow.sandbox }),
211120
+ ...(workflow.sandbox_defaults && { sandbox_defaults: workflow.sandbox_defaults }),
211009
211121
  };
211010
211122
  if (logger_1.logger.isDebugEnabled?.()) {
211011
211123
  logger_1.logger.debug(`[WorkflowProjection] Projected workflow '${workflow.id}' with ${Object.keys(checks).length} steps`);
@@ -1 +1 @@
1
- {"version":3,"file":"bubblewrap-sandbox.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/sandbox/bubblewrap-sandbox.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQhG,qBAAa,iBAAkB,YAAW,eAAe;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;gBAElB,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAOxF;;OAEG;WACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS5C;;;OAGG;IACG,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiCnE;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B;;OAEG;IACH,OAAO,CAAC,SAAS;CAoElB"}
1
+ {"version":3,"file":"bubblewrap-sandbox.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/sandbox/bubblewrap-sandbox.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQhG,qBAAa,iBAAkB,YAAW,eAAe;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;gBAElB,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAOxF;;OAEG;WACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS5C;;;OAGG;IACG,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiCnE;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B;;OAEG;IACH,OAAO,CAAC,SAAS;CAiFlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"check-runner.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/sandbox/check-runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAmCxC,qBAAa,WAAW;IACtB;;;;;;;;OAQG;WACU,QAAQ,CACnB,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EAC9C,SAAS,CAAC,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GACjD,OAAO,CAAC,aAAa,CAAC;CAmL1B"}
1
+ {"version":3,"file":"check-runner.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/sandbox/check-runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAmCxC,qBAAa,WAAW;IACtB;;;;;;;;OAQG;WACU,QAAQ,CACnB,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EAC9C,SAAS,CAAC,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GACjD,OAAO,CAAC,aAAa,CAAC;CAsL1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"docker-image-sandbox.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/sandbox/docker-image-sandbox.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQhG,qBAAa,kBAAmB,YAAW,eAAe;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,iBAAiB,CAAW;gBAGlC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,iBAAiB,GAAE,MAAM,EAAO;IAUlC;;OAEG;YACW,kBAAkB;IAgEhC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsD5B;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmCnE;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB5B"}
1
+ {"version":3,"file":"docker-image-sandbox.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/sandbox/docker-image-sandbox.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQhG,qBAAa,kBAAmB,YAAW,eAAe;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,iBAAiB,CAAW;gBAGlC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,iBAAiB,GAAE,MAAM,EAAO;IAUlC;;OAEG;YACW,kBAAkB;IAgEhC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmE5B;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmCnE;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"seatbelt-sandbox.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/sandbox/seatbelt-sandbox.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQhG,qBAAa,eAAgB,YAAW,eAAe;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;gBAElB,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IASxF;;OAEG;WACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS5C;;;OAGG;IACG,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmDnE;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;;OAGG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,YAAY;CA4DrB"}
1
+ {"version":3,"file":"seatbelt-sandbox.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/sandbox/seatbelt-sandbox.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQhG,qBAAa,eAAgB,YAAW,eAAe;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;gBAElB,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IASxF;;OAEG;WACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS5C;;;OAGG;IACG,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmDnE;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;;OAGG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,YAAY;CA2ErB"}
@@ -27,6 +27,17 @@ export interface SandboxResourceConfig {
27
27
  /** CPU limit (e.g., 1.0, 0.5) */
28
28
  cpu?: number;
29
29
  }
30
+ /**
31
+ * Additional host path to bind-mount into the sandbox
32
+ */
33
+ export interface SandboxBindPath {
34
+ /** Host path (supports ~ prefix for home directory) */
35
+ host: string;
36
+ /** Container path (defaults to resolved host path) */
37
+ container?: string;
38
+ /** Mount as read-only (default: true) */
39
+ read_only?: boolean;
40
+ }
30
41
  /**
31
42
  * Configuration for a single sandbox environment
32
43
  */
@@ -57,6 +68,8 @@ export interface SandboxConfig {
57
68
  visor_path?: string;
58
69
  /** Cache volume configuration */
59
70
  cache?: SandboxCacheConfig;
71
+ /** Additional host paths to bind-mount into the sandbox */
72
+ bind_paths?: SandboxBindPath[];
60
73
  }
61
74
  /**
62
75
  * Options for executing a command inside a sandbox
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/sandbox/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/sandbox/types.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,8 @@ export interface ScheduleToolArgs {
40
40
  schedule_id?: string;
41
41
  /** For create_trigger: channel IDs to monitor */
42
42
  trigger_channels?: string[];
43
+ /** For create_trigger: Slack user IDs to filter by (only trigger for these users) */
44
+ trigger_from?: string[];
43
45
  /** For create_trigger: allow bot messages (default: false) */
44
46
  trigger_from_bots?: boolean;
45
47
  /** For create_trigger: keyword patterns (case-insensitive OR) */
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-tool.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/scheduler/schedule-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schedule-tool.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/scheduler/schedule-tool.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  CheckProviderRegistry,
3
3
  init_check_provider_registry
4
- } from "./chunk-JRDGCUEG.mjs";
4
+ } from "./chunk-DXNWUIAN.mjs";
5
5
  import "./chunk-KFKHU6CM.mjs";
6
6
  import "./chunk-M3BYMES6.mjs";
7
7
  import "./chunk-LG4AUKHB.mjs";
@@ -9,7 +9,7 @@ import "./chunk-B7BVQM5K.mjs";
9
9
  import "./chunk-XXAEN5KU.mjs";
10
10
  import "./chunk-GEW6LS32.mjs";
11
11
  import "./chunk-DNDS7R3N.mjs";
12
- import "./chunk-FYK2DJK6.mjs";
12
+ import "./chunk-CPYQDJ27.mjs";
13
13
  import "./chunk-NCWIZVOT.mjs";
14
14
  import "./chunk-ZCUGMT7X.mjs";
15
15
  import "./chunk-WG7P66MJ.mjs";
@@ -26,4 +26,4 @@ init_check_provider_registry();
26
26
  export {
27
27
  CheckProviderRegistry
28
28
  };
29
- //# sourceMappingURL=check-provider-registry-HR6YM5MI.mjs.map
29
+ //# sourceMappingURL=check-provider-registry-XZE5PRSE.mjs.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  CheckProviderRegistry,
3
3
  init_check_provider_registry
4
- } from "./chunk-QRR6OJQN.mjs";
4
+ } from "./chunk-EYQWEVZF.mjs";
5
5
  import "./chunk-KFKHU6CM.mjs";
6
6
  import "./chunk-M3BYMES6.mjs";
7
7
  import "./chunk-LG4AUKHB.mjs";
@@ -9,7 +9,7 @@ import "./chunk-B7BVQM5K.mjs";
9
9
  import "./chunk-XXAEN5KU.mjs";
10
10
  import "./chunk-GEW6LS32.mjs";
11
11
  import "./chunk-DNDS7R3N.mjs";
12
- import "./chunk-FYK2DJK6.mjs";
12
+ import "./chunk-CPYQDJ27.mjs";
13
13
  import "./chunk-NCWIZVOT.mjs";
14
14
  import "./chunk-ZCUGMT7X.mjs";
15
15
  import "./chunk-WG7P66MJ.mjs";
@@ -26,4 +26,4 @@ init_check_provider_registry();
26
26
  export {
27
27
  CheckProviderRegistry
28
28
  };
29
- //# sourceMappingURL=check-provider-registry-QBURXJ6B.mjs.map
29
+ //# sourceMappingURL=check-provider-registry-ZOGNKTC3.mjs.map