@probelabs/visor 0.1.127 → 0.1.128

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 (147) hide show
  1. package/dist/ai-review-service.d.ts +1 -0
  2. package/dist/ai-review-service.d.ts.map +1 -1
  3. package/dist/docs/commands.md +1 -1
  4. package/dist/docs/timeouts.md +1 -1
  5. package/dist/generated/config-schema.d.ts +55 -9
  6. package/dist/generated/config-schema.d.ts.map +1 -1
  7. package/dist/generated/config-schema.json +59 -11
  8. package/dist/index.js +11247 -6695
  9. package/dist/output/traces/{run-2026-02-01T09-59-08-165Z.ndjson → run-2026-02-05T13-36-03-279Z.ndjson} +84 -84
  10. package/dist/output/traces/{run-2026-02-01T09-59-52-595Z.ndjson → run-2026-02-05T13-36-48-767Z.ndjson} +843 -1063
  11. package/dist/output/traces/run-2026-02-05T13-36-58-960Z.ndjson +17 -0
  12. package/dist/output/traces/run-2026-02-05T13-37-00-184Z.ndjson +205 -0
  13. package/dist/providers/ai-check-provider.d.ts +16 -0
  14. package/dist/providers/ai-check-provider.d.ts.map +1 -1
  15. package/dist/providers/command-check-provider.d.ts.map +1 -1
  16. package/dist/providers/mcp-check-provider.d.ts +3 -0
  17. package/dist/providers/mcp-check-provider.d.ts.map +1 -1
  18. package/dist/providers/mcp-custom-sse-server.d.ts +22 -2
  19. package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -1
  20. package/dist/providers/workflow-check-provider.d.ts.map +1 -1
  21. package/dist/providers/workflow-tool-executor.d.ts +2 -0
  22. package/dist/providers/workflow-tool-executor.d.ts.map +1 -1
  23. package/dist/sdk/check-provider-registry-OB5FEBJU.mjs +28 -0
  24. package/dist/sdk/check-provider-registry-UC2LPSB4.mjs +28 -0
  25. package/dist/sdk/{chunk-CNX7V5JK.mjs → chunk-25IC7KXZ.mjs} +2 -2
  26. package/dist/sdk/{chunk-YSN4G6CI.mjs → chunk-4HVFUUNB.mjs} +2 -2
  27. package/dist/sdk/{chunk-3OMWVM6J.mjs → chunk-B7BVQM5K.mjs} +2 -2
  28. package/dist/sdk/{chunk-XWJPT5KQ.mjs → chunk-D55IQCUP.mjs} +63 -17
  29. package/dist/sdk/chunk-D55IQCUP.mjs.map +1 -0
  30. package/dist/sdk/{chunk-BOVFH3LI.mjs → chunk-EJN6Q4D3.mjs} +16 -7
  31. package/dist/sdk/chunk-EJN6Q4D3.mjs.map +1 -0
  32. package/dist/sdk/{chunk-WMJKH4XE.mjs → chunk-J7LXIPZS.mjs} +16 -1
  33. package/dist/sdk/{chunk-EXFGO4FX.mjs → chunk-KFKHU6CM.mjs} +2 -2
  34. package/dist/sdk/{chunk-BHOKBQPB.mjs → chunk-LMJSJQPP.mjs} +5 -5
  35. package/dist/sdk/{chunk-VW2GBXQT.mjs → chunk-N7IVCCGH.mjs} +3 -3
  36. package/dist/sdk/{chunk-O5EZDNYL.mjs → chunk-NCWIZVOT.mjs} +2 -2
  37. package/dist/sdk/{chunk-3NMLT3YS.mjs → chunk-P6YFV6N2.mjs} +3 -3
  38. package/dist/sdk/{chunk-HQL734ZI.mjs → chunk-QRXSDDYN.mjs} +3 -3
  39. package/dist/sdk/{chunk-J2QWVDXK.mjs → chunk-SIMCSNXO.mjs} +3 -3
  40. package/dist/sdk/{chunk-IHZOSIF4.mjs → chunk-UEWXVJ6C.mjs} +3 -3
  41. package/dist/sdk/{chunk-MPS4HVQI.mjs → chunk-UKG5UP5U.mjs} +8 -8
  42. package/dist/sdk/chunk-UPKHRMUA.mjs +35108 -0
  43. package/dist/sdk/chunk-UPKHRMUA.mjs.map +1 -0
  44. package/dist/sdk/chunk-V7RIRPO7.mjs +35108 -0
  45. package/dist/sdk/chunk-V7RIRPO7.mjs.map +1 -0
  46. package/dist/sdk/{chunk-EORMDOZU.mjs → chunk-VEROLBCD.mjs} +7 -7
  47. package/dist/sdk/{chunk-ZYAUYXSW.mjs → chunk-WVNQ56DO.mjs} +3 -3
  48. package/dist/sdk/{chunk-NAW3DB3I.mjs → chunk-XXAEN5KU.mjs} +3 -3
  49. package/dist/sdk/{chunk-S2RUE2RG.mjs → chunk-YCUWMIV5.mjs} +3 -3
  50. package/dist/sdk/command-executor-C4DGIQ4Q.mjs +14 -0
  51. package/dist/sdk/config-GYTBTHRZ.mjs +16 -0
  52. package/dist/sdk/config-merger-RKCZJQ44.mjs +10 -0
  53. package/dist/sdk/{event-bus-5BEVPQ6T.mjs → event-bus-XV2TOQFU.mjs} +2 -2
  54. package/dist/sdk/failure-condition-evaluator-KRFY4OLQ.mjs +17 -0
  55. package/dist/sdk/{git-repository-analyzer-HJC4MYW4.mjs → git-repository-analyzer-VO7OZMTM.mjs} +2 -2
  56. package/dist/sdk/{github-frontend-5PCKKHVC.mjs → github-frontend-UC326PMS.mjs} +11 -11
  57. package/dist/sdk/{host-H3AWNZ2F.mjs → host-H7MKML2H.mjs} +5 -5
  58. package/dist/sdk/{liquid-extensions-I7O7KMHF.mjs → liquid-extensions-WJAC7QKG.mjs} +8 -8
  59. package/dist/sdk/memory-store-LPOZWQ5E.mjs +12 -0
  60. package/dist/sdk/{metrics-7PP3EJUH.mjs → metrics-CSBGJEWW.mjs} +4 -4
  61. package/dist/sdk/{ndjson-sink-B4V4NTAQ.mjs → ndjson-sink-JQ2INHTS.mjs} +2 -2
  62. package/dist/sdk/{prompt-state-EZYOUG75.mjs → prompt-state-X2WDGSEM.mjs} +5 -5
  63. package/dist/sdk/{renderer-schema-CKFB5NDB.mjs → renderer-schema-FRCLA6KH.mjs} +4 -4
  64. package/dist/sdk/routing-745DOEKR.mjs +24 -0
  65. package/dist/sdk/sdk.d.mts +61 -3
  66. package/dist/sdk/sdk.d.ts +61 -3
  67. package/dist/sdk/sdk.js +17890 -375
  68. package/dist/sdk/sdk.js.map +1 -1
  69. package/dist/sdk/sdk.mjs +107 -34
  70. package/dist/sdk/sdk.mjs.map +1 -1
  71. package/dist/sdk/session-registry-6PV6SGEJ.mjs +10 -0
  72. package/dist/sdk/{slack-frontend-JUT3TYVC.mjs → slack-frontend-UPYUYCUQ.mjs} +5 -5
  73. package/dist/sdk/{trace-helpers-VP6QYVBX.mjs → trace-helpers-LUCR52GY.mjs} +4 -4
  74. package/dist/sdk/tracer-init-XPRWKMZT.mjs +10 -0
  75. package/dist/sdk/workflow-check-provider-AA3VNYUY.mjs +28 -0
  76. package/dist/sdk/workflow-check-provider-LQNQZUN5.mjs +28 -0
  77. package/dist/sdk/workflow-check-provider-LQNQZUN5.mjs.map +1 -0
  78. package/dist/sdk/workflow-registry-W7IEH7GK.mjs +12 -0
  79. package/dist/sdk/workflow-registry-W7IEH7GK.mjs.map +1 -0
  80. package/dist/test-runner/index.d.ts +5 -0
  81. package/dist/test-runner/index.d.ts.map +1 -1
  82. package/dist/traces/{run-2026-02-01T09-59-08-165Z.ndjson → run-2026-02-05T13-36-03-279Z.ndjson} +84 -84
  83. package/dist/traces/{run-2026-02-01T09-59-52-595Z.ndjson → run-2026-02-05T13-36-48-767Z.ndjson} +843 -1063
  84. package/dist/traces/run-2026-02-05T13-36-58-960Z.ndjson +17 -0
  85. package/dist/traces/run-2026-02-05T13-37-00-184Z.ndjson +205 -0
  86. package/dist/types/config.d.ts +61 -3
  87. package/dist/types/config.d.ts.map +1 -1
  88. package/dist/utils/sandbox.d.ts.map +1 -1
  89. package/dist/utils/workspace-manager.d.ts +22 -2
  90. package/dist/utils/workspace-manager.d.ts.map +1 -1
  91. package/dist/utils/worktree-manager.d.ts +2 -1
  92. package/dist/utils/worktree-manager.d.ts.map +1 -1
  93. package/package.json +3 -3
  94. package/dist/sdk/check-provider-registry-CVUONJ5A.mjs +0 -28
  95. package/dist/sdk/chunk-BOVFH3LI.mjs.map +0 -1
  96. package/dist/sdk/chunk-TS6BUNAI.mjs +0 -17722
  97. package/dist/sdk/chunk-TS6BUNAI.mjs.map +0 -1
  98. package/dist/sdk/chunk-XWJPT5KQ.mjs.map +0 -1
  99. package/dist/sdk/command-executor-Q7MHJKZJ.mjs +0 -14
  100. package/dist/sdk/config-DXX64GD3.mjs +0 -16
  101. package/dist/sdk/config-merger-PX3WIT57.mjs +0 -10
  102. package/dist/sdk/failure-condition-evaluator-G4HMJPXF.mjs +0 -17
  103. package/dist/sdk/memory-store-RW5N2NGJ.mjs +0 -12
  104. package/dist/sdk/routing-QHTGDIXF.mjs +0 -24
  105. package/dist/sdk/session-registry-4E6YRQ77.mjs +0 -10
  106. package/dist/sdk/tracer-init-GSLPPLCD.mjs +0 -10
  107. package/dist/sdk/workflow-check-provider-3IWBAZP7.mjs +0 -28
  108. package/dist/sdk/workflow-registry-KFWSDSLM.mjs +0 -12
  109. /package/dist/sdk/{check-provider-registry-CVUONJ5A.mjs.map → check-provider-registry-OB5FEBJU.mjs.map} +0 -0
  110. /package/dist/sdk/{chunk-WMJKH4XE.mjs.map → check-provider-registry-UC2LPSB4.mjs.map} +0 -0
  111. /package/dist/sdk/{chunk-CNX7V5JK.mjs.map → chunk-25IC7KXZ.mjs.map} +0 -0
  112. /package/dist/sdk/{chunk-YSN4G6CI.mjs.map → chunk-4HVFUUNB.mjs.map} +0 -0
  113. /package/dist/sdk/{chunk-3OMWVM6J.mjs.map → chunk-B7BVQM5K.mjs.map} +0 -0
  114. /package/dist/sdk/{command-executor-Q7MHJKZJ.mjs.map → chunk-J7LXIPZS.mjs.map} +0 -0
  115. /package/dist/sdk/{chunk-EXFGO4FX.mjs.map → chunk-KFKHU6CM.mjs.map} +0 -0
  116. /package/dist/sdk/{chunk-BHOKBQPB.mjs.map → chunk-LMJSJQPP.mjs.map} +0 -0
  117. /package/dist/sdk/{chunk-VW2GBXQT.mjs.map → chunk-N7IVCCGH.mjs.map} +0 -0
  118. /package/dist/sdk/{chunk-O5EZDNYL.mjs.map → chunk-NCWIZVOT.mjs.map} +0 -0
  119. /package/dist/sdk/{chunk-3NMLT3YS.mjs.map → chunk-P6YFV6N2.mjs.map} +0 -0
  120. /package/dist/sdk/{chunk-HQL734ZI.mjs.map → chunk-QRXSDDYN.mjs.map} +0 -0
  121. /package/dist/sdk/{chunk-J2QWVDXK.mjs.map → chunk-SIMCSNXO.mjs.map} +0 -0
  122. /package/dist/sdk/{chunk-IHZOSIF4.mjs.map → chunk-UEWXVJ6C.mjs.map} +0 -0
  123. /package/dist/sdk/{chunk-MPS4HVQI.mjs.map → chunk-UKG5UP5U.mjs.map} +0 -0
  124. /package/dist/sdk/{chunk-EORMDOZU.mjs.map → chunk-VEROLBCD.mjs.map} +0 -0
  125. /package/dist/sdk/{chunk-ZYAUYXSW.mjs.map → chunk-WVNQ56DO.mjs.map} +0 -0
  126. /package/dist/sdk/{chunk-NAW3DB3I.mjs.map → chunk-XXAEN5KU.mjs.map} +0 -0
  127. /package/dist/sdk/{chunk-S2RUE2RG.mjs.map → chunk-YCUWMIV5.mjs.map} +0 -0
  128. /package/dist/sdk/{config-DXX64GD3.mjs.map → command-executor-C4DGIQ4Q.mjs.map} +0 -0
  129. /package/dist/sdk/{config-merger-PX3WIT57.mjs.map → config-GYTBTHRZ.mjs.map} +0 -0
  130. /package/dist/sdk/{failure-condition-evaluator-G4HMJPXF.mjs.map → config-merger-RKCZJQ44.mjs.map} +0 -0
  131. /package/dist/sdk/{event-bus-5BEVPQ6T.mjs.map → event-bus-XV2TOQFU.mjs.map} +0 -0
  132. /package/dist/sdk/{liquid-extensions-I7O7KMHF.mjs.map → failure-condition-evaluator-KRFY4OLQ.mjs.map} +0 -0
  133. /package/dist/sdk/{git-repository-analyzer-HJC4MYW4.mjs.map → git-repository-analyzer-VO7OZMTM.mjs.map} +0 -0
  134. /package/dist/sdk/{github-frontend-5PCKKHVC.mjs.map → github-frontend-UC326PMS.mjs.map} +0 -0
  135. /package/dist/sdk/{host-H3AWNZ2F.mjs.map → host-H7MKML2H.mjs.map} +0 -0
  136. /package/dist/sdk/{memory-store-RW5N2NGJ.mjs.map → liquid-extensions-WJAC7QKG.mjs.map} +0 -0
  137. /package/dist/sdk/{metrics-7PP3EJUH.mjs.map → memory-store-LPOZWQ5E.mjs.map} +0 -0
  138. /package/dist/sdk/{prompt-state-EZYOUG75.mjs.map → metrics-CSBGJEWW.mjs.map} +0 -0
  139. /package/dist/sdk/{ndjson-sink-B4V4NTAQ.mjs.map → ndjson-sink-JQ2INHTS.mjs.map} +0 -0
  140. /package/dist/sdk/{routing-QHTGDIXF.mjs.map → prompt-state-X2WDGSEM.mjs.map} +0 -0
  141. /package/dist/sdk/{renderer-schema-CKFB5NDB.mjs.map → renderer-schema-FRCLA6KH.mjs.map} +0 -0
  142. /package/dist/sdk/{session-registry-4E6YRQ77.mjs.map → routing-745DOEKR.mjs.map} +0 -0
  143. /package/dist/sdk/{trace-helpers-VP6QYVBX.mjs.map → session-registry-6PV6SGEJ.mjs.map} +0 -0
  144. /package/dist/sdk/{slack-frontend-JUT3TYVC.mjs.map → slack-frontend-UPYUYCUQ.mjs.map} +0 -0
  145. /package/dist/sdk/{tracer-init-GSLPPLCD.mjs.map → trace-helpers-LUCR52GY.mjs.map} +0 -0
  146. /package/dist/sdk/{workflow-check-provider-3IWBAZP7.mjs.map → tracer-init-XPRWKMZT.mjs.map} +0 -0
  147. /package/dist/sdk/{workflow-registry-KFWSDSLM.mjs.map → workflow-check-provider-AA3VNYUY.mjs.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/sandbox.ts"],"sourcesContent":["import Sandbox from '@nyariv/sandboxjs';\n\n/**\n * Centralized helpers for creating and using SandboxJS instances consistently\n * across providers. The goal is to have one place to define allowed globals\n * and prototype whitelists, and to offer a small helper to inject a `log`\n * utility inside user-provided JS snippets.\n */\n\nexport interface CompileOptions {\n injectLog?: boolean;\n logPrefix?: string;\n /** When true, wrap the code in a function and `return` its result */\n wrapFunction?: boolean;\n}\n\nexport interface JsSyntaxValidationResult {\n valid: boolean;\n error?: string;\n}\n\n/**\n * Validate JavaScript syntax without executing it.\n * Uses the sandbox's compile method to check for syntax errors.\n * Returns validation result with error message if invalid.\n */\nexport function validateJsSyntax(code: string): JsSyntaxValidationResult {\n if (!code || typeof code !== 'string') {\n return { valid: false, error: 'Code must be a non-empty string' };\n }\n\n const trimmed = code.trim();\n if (trimmed.length === 0) {\n return { valid: false, error: 'Code cannot be empty' };\n }\n\n // Create a minimal sandbox instance for syntax checking\n const sandbox = createSecureSandbox();\n\n // Wrap code similar to compileAndRun to catch the same syntax issues\n const looksLikeBlock = /\\breturn\\b/.test(trimmed) || /;/.test(trimmed) || /\\n/.test(trimmed);\n const looksLikeIife = /\\)\\s*\\(\\s*\\)\\s*;?$/.test(trimmed);\n const body = looksLikeBlock\n ? looksLikeIife\n ? `return (\\n${trimmed}\\n);\\n`\n : `return (() => {\\n${trimmed}\\n})();\\n`\n : `return (\\n${trimmed}\\n);\\n`;\n\n // For syntax validation, we just need to ensure 'log' is defined so code using it parses correctly\n // No need for unique IDs since validation creates a fresh sandbox and only compiles (no execution)\n const header = `var log = function() {};\\n`;\n const fullCode = `${header}${body}`;\n\n try {\n sandbox.compile(fullCode);\n return { valid: true };\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n return { valid: false, error: msg };\n }\n}\n\n/**\n * Create a hardened Sandbox with a consistent set of globals and prototype\n * whitelists. This is a superset of the sets previously used by individual\n * providers, kept intentionally minimal and side‑effect free.\n */\nexport function createSecureSandbox(): Sandbox {\n const globals = {\n ...Sandbox.SAFE_GLOBALS,\n Math,\n JSON,\n // Provide console with limited surface. Use trampolines so that any test\n // spies (e.g., jest.spyOn(console, 'log')) see calls made inside the sandbox.\n console: {\n log: (...args: unknown[]) => {\n try {\n (console as any).log(...args);\n } catch {}\n },\n warn: (...args: unknown[]) => {\n try {\n (console as any).warn(...args);\n } catch {}\n },\n error: (...args: unknown[]) => {\n try {\n (console as any).error(...args);\n } catch {}\n },\n },\n } as Record<string, unknown>;\n\n const prototypeWhitelist = new Map(Sandbox.SAFE_PROTOTYPES);\n\n // Arrays — union of methods used around the codebase\n const arrayMethods = new Set<string>([\n // Query/iteration\n 'some',\n 'every',\n 'filter',\n 'map',\n 'reduce',\n 'reduceRight',\n 'find',\n 'findIndex',\n 'findLast',\n 'findLastIndex',\n 'includes',\n 'indexOf',\n 'lastIndexOf',\n 'keys',\n 'values',\n 'entries',\n 'forEach',\n // Non‑mutating ES2023 additions\n 'toReversed',\n 'toSorted',\n 'toSpliced',\n 'with',\n 'at',\n // Mutators and common ops\n 'slice',\n 'concat',\n 'join',\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'sort',\n 'reverse',\n 'copyWithin',\n 'fill',\n // Flattening\n 'flat',\n 'flatMap',\n // Meta\n 'length',\n ]);\n prototypeWhitelist.set(Array.prototype, arrayMethods);\n\n // Strings — allow common, safe manipulation helpers\n const stringMethods = new Set<string>([\n 'toLowerCase',\n 'toUpperCase',\n 'includes',\n 'indexOf',\n 'lastIndexOf',\n 'startsWith',\n 'endsWith',\n 'slice',\n 'substring',\n 'substr',\n 'trim',\n 'trimStart',\n 'trimEnd',\n 'split',\n 'replace',\n 'replaceAll',\n 'match',\n 'matchAll',\n 'charAt',\n 'charCodeAt',\n 'codePointAt',\n 'normalize',\n 'repeat',\n 'padStart',\n 'padEnd',\n 'at',\n 'length',\n ]);\n prototypeWhitelist.set(String.prototype, stringMethods);\n\n // Objects — keep to basic safe operations\n const objectMethods = new Set<string>([\n 'hasOwnProperty',\n 'propertyIsEnumerable',\n 'toString',\n 'valueOf',\n ]);\n prototypeWhitelist.set(Object.prototype, objectMethods);\n\n // Keep native constructors from SAFE_GLOBALS; rely on prototype whitelists above.\n\n // Maps and Sets — allow common, safe operations\n const mapMethods = new Set<string>([\n 'get',\n 'set',\n 'has',\n 'delete',\n 'entries',\n 'keys',\n 'values',\n 'forEach',\n ]);\n // @ts-ignore - sandbox typings accept Map.prototype as a key\n prototypeWhitelist.set((Map as any).prototype, mapMethods);\n\n const setMethods = new Set<string>([\n 'add',\n 'has',\n 'delete',\n 'entries',\n 'keys',\n 'values',\n 'forEach',\n ]);\n // @ts-ignore\n prototypeWhitelist.set((Set as any).prototype, setMethods);\n\n // Date and RegExp — read‑only helpers\n const dateMethods = new Set<string>(['toISOString', 'toJSON', 'getTime']);\n // @ts-ignore\n prototypeWhitelist.set((Date as any).prototype, dateMethods);\n\n const regexpMethods = new Set<string>(['test', 'exec']);\n // @ts-ignore\n prototypeWhitelist.set((RegExp as any).prototype, regexpMethods);\n\n return new Sandbox({ globals, prototypeWhitelist });\n}\n\n/**\n * Compile and execute user-provided JS inside the sandbox with optional\n * helper injection. By default, code is wrapped in a function to keep the\n * global scope clean.\n */\nexport function compileAndRun<T = unknown>(\n sandbox: Sandbox,\n userCode: string,\n scope: Record<string, unknown>,\n opts: CompileOptions = { injectLog: true, wrapFunction: true, logPrefix: '[sandbox]' }\n): T {\n const inject = opts?.injectLog === true;\n let safePrefix = String(opts?.logPrefix ?? '[sandbox]');\n // Sanitize prefix aggressively: drop control chars and risky tokens, limit length\n safePrefix = safePrefix\n .replace(/[\\r\\n\\t\\0]/g, '')\n .replace(/[`$\\\\]/g, '') // strip backticks, dollar (template) and backslashes\n .replace(/\\$\\{/g, '') // remove template openings if present\n .slice(0, 64);\n // Inject log function through scope to avoid \"already declared\" errors\n // when multiple sandbox executions run in parallel with shared global state.\n // Only add log when injectLog is true - when false, user code may declare its own log.\n const scopeWithLog = inject\n ? {\n ...scope,\n log: (...args: unknown[]) => {\n try {\n console.log(safePrefix, ...args);\n } catch {}\n },\n }\n : scope;\n // No header needed - log is passed through scope\n const header = '';\n // When wrapping, execute user code inside an IIFE and return its value.\n // This reliably captures the value of the last expression or any explicit\n // return statements inside the script, without requiring the caller to\n // manually `return` at top level.\n // Wrapper heuristic:\n // - If the snippet contains an explicit `return`, semicolons or newlines (likely a block),\n // run it inside an IIFE so `return` works: (() => { code })()\n // - Otherwise treat it as a pure expression and return its value directly.\n const src = String(userCode);\n const looksLikeBlock = /\\breturn\\b/.test(src) || /;/.test(src) || /\\n/.test(src);\n // Heuristic: if the snippet itself looks like an IIFE/callable expression\n // (e.g., `(() => { ... })()` or `(function(){ ... })()`), return its value\n // directly to avoid swallowing the result by nesting it inside another block.\n const looksLikeIife = /\\)\\s*\\(\\s*\\)\\s*;?$/.test(src.trim());\n // Default wrapFunction to true if not explicitly set to false\n const shouldWrap = opts.wrapFunction !== false;\n const body = shouldWrap\n ? looksLikeBlock\n ? looksLikeIife\n ? `return (\\n${src}\\n);\\n`\n : `return (() => {\\n${src}\\n})();\\n`\n : `return (\\n${src}\\n);\\n`\n : `${src}`;\n const code = `${header}${body}`;\n let exec: ReturnType<typeof sandbox.compile>;\n try {\n exec = sandbox.compile(code);\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n throw new Error(`sandbox_compile_error: ${msg}`);\n }\n\n let out: any;\n try {\n out = exec(scopeWithLog);\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n throw new Error(`sandbox_execution_error: ${msg}`);\n }\n\n if (out && typeof out.run === 'function') {\n try {\n return out.run();\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n throw new Error(`sandbox_runner_error: ${msg}`);\n }\n }\n return out as T;\n}\n"],"mappings":";;;;;AAAA,OAAO,aAAa;AA0Bb,SAAS,iBAAiB,MAAwC;AACvE,MAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AACrC,WAAO,EAAE,OAAO,OAAO,OAAO,kCAAkC;AAAA,EAClE;AAEA,QAAM,UAAU,KAAK,KAAK;AAC1B,MAAI,QAAQ,WAAW,GAAG;AACxB,WAAO,EAAE,OAAO,OAAO,OAAO,uBAAuB;AAAA,EACvD;AAGA,QAAM,UAAU,oBAAoB;AAGpC,QAAM,iBAAiB,aAAa,KAAK,OAAO,KAAK,IAAI,KAAK,OAAO,KAAK,KAAK,KAAK,OAAO;AAC3F,QAAM,gBAAgB,qBAAqB,KAAK,OAAO;AACvD,QAAM,OAAO,iBACT,gBACE;AAAA,EAAa,OAAO;AAAA;AAAA,IACpB;AAAA,EAAoB,OAAO;AAAA;AAAA,IAC7B;AAAA,EAAa,OAAO;AAAA;AAAA;AAIxB,QAAM,SAAS;AAAA;AACf,QAAM,WAAW,GAAG,MAAM,GAAG,IAAI;AAEjC,MAAI;AACF,YAAQ,QAAQ,QAAQ;AACxB,WAAO,EAAE,OAAO,KAAK;AAAA,EACvB,SAAS,GAAG;AACV,UAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AACrD,WAAO,EAAE,OAAO,OAAO,OAAO,IAAI;AAAA,EACpC;AACF;AAOO,SAAS,sBAA+B;AAC7C,QAAM,UAAU;AAAA,IACd,GAAG,QAAQ;AAAA,IACX;AAAA,IACA;AAAA;AAAA;AAAA,IAGA,SAAS;AAAA,MACP,KAAK,IAAI,SAAoB;AAC3B,YAAI;AACF,UAAC,QAAgB,IAAI,GAAG,IAAI;AAAA,QAC9B,QAAQ;AAAA,QAAC;AAAA,MACX;AAAA,MACA,MAAM,IAAI,SAAoB;AAC5B,YAAI;AACF,UAAC,QAAgB,KAAK,GAAG,IAAI;AAAA,QAC/B,QAAQ;AAAA,QAAC;AAAA,MACX;AAAA,MACA,OAAO,IAAI,SAAoB;AAC7B,YAAI;AACF,UAAC,QAAgB,MAAM,GAAG,IAAI;AAAA,QAChC,QAAQ;AAAA,QAAC;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAEA,QAAM,qBAAqB,IAAI,IAAI,QAAQ,eAAe;AAG1D,QAAM,eAAe,oBAAI,IAAY;AAAA;AAAA,IAEnC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,EACF,CAAC;AACD,qBAAmB,IAAI,MAAM,WAAW,YAAY;AAGpD,QAAM,gBAAgB,oBAAI,IAAY;AAAA,IACpC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,qBAAmB,IAAI,OAAO,WAAW,aAAa;AAGtD,QAAM,gBAAgB,oBAAI,IAAY;AAAA,IACpC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,qBAAmB,IAAI,OAAO,WAAW,aAAa;AAKtD,QAAM,aAAa,oBAAI,IAAY;AAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,qBAAmB,IAAK,IAAY,WAAW,UAAU;AAEzD,QAAM,aAAa,oBAAI,IAAY;AAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,qBAAmB,IAAK,IAAY,WAAW,UAAU;AAGzD,QAAM,cAAc,oBAAI,IAAY,CAAC,eAAe,UAAU,SAAS,CAAC;AAExE,qBAAmB,IAAK,KAAa,WAAW,WAAW;AAE3D,QAAM,gBAAgB,oBAAI,IAAY,CAAC,QAAQ,MAAM,CAAC;AAEtD,qBAAmB,IAAK,OAAe,WAAW,aAAa;AAE/D,SAAO,IAAI,QAAQ,EAAE,SAAS,mBAAmB,CAAC;AACpD;AAOO,SAAS,cACd,SACA,UACA,OACA,OAAuB,EAAE,WAAW,MAAM,cAAc,MAAM,WAAW,YAAY,GAClF;AACH,QAAM,SAAS,MAAM,cAAc;AACnC,MAAI,aAAa,OAAO,MAAM,aAAa,WAAW;AAEtD,eAAa,WACV,QAAQ,eAAe,EAAE,EACzB,QAAQ,WAAW,EAAE,EACrB,QAAQ,SAAS,EAAE,EACnB,MAAM,GAAG,EAAE;AAId,QAAM,eAAe,SACjB;AAAA,IACE,GAAG;AAAA,IACH,KAAK,IAAI,SAAoB;AAC3B,UAAI;AACF,gBAAQ,IAAI,YAAY,GAAG,IAAI;AAAA,MACjC,QAAQ;AAAA,MAAC;AAAA,IACX;AAAA,EACF,IACA;AAEJ,QAAM,SAAS;AASf,QAAM,MAAM,OAAO,QAAQ;AAC3B,QAAM,iBAAiB,aAAa,KAAK,GAAG,KAAK,IAAI,KAAK,GAAG,KAAK,KAAK,KAAK,GAAG;AAI/E,QAAM,gBAAgB,qBAAqB,KAAK,IAAI,KAAK,CAAC;AAE1D,QAAM,aAAa,KAAK,iBAAiB;AACzC,QAAM,OAAO,aACT,iBACE,gBACE;AAAA,EAAa,GAAG;AAAA;AAAA,IAChB;AAAA,EAAoB,GAAG;AAAA;AAAA,IACzB;AAAA,EAAa,GAAG;AAAA;AAAA,IAClB,GAAG,GAAG;AACV,QAAM,OAAO,GAAG,MAAM,GAAG,IAAI;AAC7B,MAAI;AACJ,MAAI;AACF,WAAO,QAAQ,QAAQ,IAAI;AAAA,EAC7B,SAAS,GAAG;AACV,UAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AACrD,UAAM,IAAI,MAAM,0BAA0B,GAAG,EAAE;AAAA,EACjD;AAEA,MAAI;AACJ,MAAI;AACF,UAAM,KAAK,YAAY;AAAA,EACzB,SAAS,GAAG;AACV,UAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AACrD,UAAM,IAAI,MAAM,4BAA4B,GAAG,EAAE;AAAA,EACnD;AAEA,MAAI,OAAO,OAAO,IAAI,QAAQ,YAAY;AACxC,QAAI;AACF,aAAO,IAAI,IAAI;AAAA,IACjB,SAAS,GAAG;AACV,YAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AACrD,YAAM,IAAI,MAAM,yBAAyB,GAAG,EAAE;AAAA,IAChD;AAAA,EACF;AACA,SAAO;AACT;AAjTA;AAAA;AAAA;AAAA;AAAA;","names":[]}
@@ -1,6 +1,8 @@
1
+ var __create = Object.create;
1
2
  var __defProp = Object.defineProperty;
2
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
4
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
7
  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
6
8
  get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
@@ -11,6 +13,9 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
11
13
  var __esm = (fn, res) => function __init() {
12
14
  return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
13
15
  };
16
+ var __commonJS = (cb, mod) => function __require2() {
17
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
18
+ };
14
19
  var __export = (target, all) => {
15
20
  for (var name in all)
16
21
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -23,12 +28,22 @@ var __copyProps = (to, from, except, desc) => {
23
28
  }
24
29
  return to;
25
30
  };
31
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
32
+ // If the importer is in node compatibility mode or this is not an ESM
33
+ // file that has been converted to a CommonJS file using a Babel-
34
+ // compatible transform (i.e. "__esModule" has not been set), then set
35
+ // "default" to the CommonJS "module.exports" for node compatibility.
36
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
37
+ mod
38
+ ));
26
39
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
40
 
28
41
  export {
29
42
  __require,
30
43
  __esm,
44
+ __commonJS,
31
45
  __export,
46
+ __toESM,
32
47
  __toCommonJS
33
48
  };
34
- //# sourceMappingURL=chunk-WMJKH4XE.mjs.map
49
+ //# sourceMappingURL=chunk-J7LXIPZS.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  __esm
3
- } from "./chunk-WMJKH4XE.mjs";
3
+ } from "./chunk-J7LXIPZS.mjs";
4
4
 
5
5
  // src/utils/human-id.ts
6
6
  function randomSuffix() {
@@ -144,4 +144,4 @@ export {
144
144
  generateShortHumanId,
145
145
  init_human_id
146
146
  };
147
- //# sourceMappingURL=chunk-EXFGO4FX.mjs.map
147
+ //# sourceMappingURL=chunk-KFKHU6CM.mjs.map
@@ -7,19 +7,19 @@ import {
7
7
  isFirstTimer,
8
8
  isMember,
9
9
  isOwner
10
- } from "./chunk-CNX7V5JK.mjs";
10
+ } from "./chunk-25IC7KXZ.mjs";
11
11
  import {
12
12
  compileAndRun,
13
13
  createSecureSandbox,
14
14
  init_sandbox
15
- } from "./chunk-BOVFH3LI.mjs";
15
+ } from "./chunk-EJN6Q4D3.mjs";
16
16
  import {
17
17
  MemoryStore,
18
18
  init_memory_store
19
- } from "./chunk-IHZOSIF4.mjs";
19
+ } from "./chunk-UEWXVJ6C.mjs";
20
20
  import {
21
21
  __esm
22
- } from "./chunk-WMJKH4XE.mjs";
22
+ } from "./chunk-J7LXIPZS.mjs";
23
23
 
24
24
  // src/liquid-extensions.ts
25
25
  import { Liquid, Tag, Value } from "liquidjs";
@@ -428,4 +428,4 @@ export {
428
428
  createExtendedLiquid,
429
429
  init_liquid_extensions
430
430
  };
431
- //# sourceMappingURL=chunk-BHOKBQPB.mjs.map
431
+ //# sourceMappingURL=chunk-LMJSJQPP.mjs.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  init_logger,
3
3
  logger
4
- } from "./chunk-3NMLT3YS.mjs";
4
+ } from "./chunk-P6YFV6N2.mjs";
5
5
  import {
6
6
  __esm
7
- } from "./chunk-WMJKH4XE.mjs";
7
+ } from "./chunk-J7LXIPZS.mjs";
8
8
 
9
9
  // src/dependency-resolver.ts
10
10
  var DependencyResolver;
@@ -603,4 +603,4 @@ export {
603
603
  WorkflowRegistry,
604
604
  init_workflow_registry
605
605
  };
606
- //# sourceMappingURL=chunk-VW2GBXQT.mjs.map
606
+ //# sourceMappingURL=chunk-N7IVCCGH.mjs.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  __esm,
3
3
  __export
4
- } from "./chunk-WMJKH4XE.mjs";
4
+ } from "./chunk-J7LXIPZS.mjs";
5
5
 
6
6
  // src/utils/config-merger.ts
7
7
  var config_merger_exports = {};
@@ -271,4 +271,4 @@ export {
271
271
  config_merger_exports,
272
272
  init_config_merger
273
273
  };
274
- //# sourceMappingURL=chunk-O5EZDNYL.mjs.map
274
+ //# sourceMappingURL=chunk-NCWIZVOT.mjs.map
@@ -2,11 +2,11 @@ import {
2
2
  context,
3
3
  init_lazy_otel,
4
4
  trace
5
- } from "./chunk-YSN4G6CI.mjs";
5
+ } from "./chunk-4HVFUUNB.mjs";
6
6
  import {
7
7
  __esm,
8
8
  __export
9
- } from "./chunk-WMJKH4XE.mjs";
9
+ } from "./chunk-J7LXIPZS.mjs";
10
10
 
11
11
  // src/logger.ts
12
12
  var logger_exports = {};
@@ -204,4 +204,4 @@ export {
204
204
  logger_exports,
205
205
  init_logger
206
206
  };
207
- //# sourceMappingURL=chunk-3NMLT3YS.mjs.map
207
+ //# sourceMappingURL=chunk-P6YFV6N2.mjs.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  init_logger,
3
3
  logger
4
- } from "./chunk-3NMLT3YS.mjs";
4
+ } from "./chunk-P6YFV6N2.mjs";
5
5
  import {
6
6
  __esm
7
- } from "./chunk-WMJKH4XE.mjs";
7
+ } from "./chunk-J7LXIPZS.mjs";
8
8
 
9
9
  // src/slack/prompt-state.ts
10
10
  function getPromptStateManager(ttlMs) {
@@ -154,4 +154,4 @@ export {
154
154
  resetPromptStateManager,
155
155
  init_prompt_state
156
156
  };
157
- //# sourceMappingURL=chunk-HQL734ZI.mjs.map
157
+ //# sourceMappingURL=chunk-QRXSDDYN.mjs.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  init_logger,
3
3
  logger
4
- } from "./chunk-3NMLT3YS.mjs";
4
+ } from "./chunk-P6YFV6N2.mjs";
5
5
  import {
6
6
  __esm
7
- } from "./chunk-WMJKH4XE.mjs";
7
+ } from "./chunk-J7LXIPZS.mjs";
8
8
 
9
9
  // src/utils/command-executor.ts
10
10
  import { exec } from "child_process";
@@ -136,4 +136,4 @@ export {
136
136
  commandExecutor,
137
137
  init_command_executor
138
138
  };
139
- //# sourceMappingURL=chunk-J2QWVDXK.mjs.map
139
+ //# sourceMappingURL=chunk-SIMCSNXO.mjs.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  init_logger,
3
3
  logger
4
- } from "./chunk-3NMLT3YS.mjs";
4
+ } from "./chunk-P6YFV6N2.mjs";
5
5
  import {
6
6
  __esm,
7
7
  __export
8
- } from "./chunk-WMJKH4XE.mjs";
8
+ } from "./chunk-J7LXIPZS.mjs";
9
9
 
10
10
  // src/memory-store.ts
11
11
  var memory_store_exports = {};
@@ -479,4 +479,4 @@ export {
479
479
  memory_store_exports,
480
480
  init_memory_store
481
481
  };
482
- //# sourceMappingURL=chunk-IHZOSIF4.mjs.map
482
+ //# sourceMappingURL=chunk-UEWXVJ6C.mjs.map
@@ -3,33 +3,33 @@ import {
3
3
  fallback_ndjson_exports,
4
4
  init_fallback_ndjson,
5
5
  init_trace_helpers
6
- } from "./chunk-ZYAUYXSW.mjs";
6
+ } from "./chunk-WVNQ56DO.mjs";
7
7
  import {
8
8
  addFailIfTriggered,
9
9
  init_metrics
10
- } from "./chunk-S2RUE2RG.mjs";
10
+ } from "./chunk-YCUWMIV5.mjs";
11
11
  import {
12
12
  createPermissionHelpers,
13
13
  detectLocalMode,
14
14
  init_author_permissions
15
- } from "./chunk-CNX7V5JK.mjs";
15
+ } from "./chunk-25IC7KXZ.mjs";
16
16
  import {
17
17
  createSecureSandbox,
18
18
  init_sandbox
19
- } from "./chunk-BOVFH3LI.mjs";
19
+ } from "./chunk-EJN6Q4D3.mjs";
20
20
  import {
21
21
  MemoryStore,
22
22
  init_memory_store
23
- } from "./chunk-IHZOSIF4.mjs";
23
+ } from "./chunk-UEWXVJ6C.mjs";
24
24
  import {
25
25
  init_logger,
26
26
  logger_exports
27
- } from "./chunk-3NMLT3YS.mjs";
27
+ } from "./chunk-P6YFV6N2.mjs";
28
28
  import {
29
29
  __esm,
30
30
  __export,
31
31
  __toCommonJS
32
- } from "./chunk-WMJKH4XE.mjs";
32
+ } from "./chunk-J7LXIPZS.mjs";
33
33
 
34
34
  // src/failure-condition-evaluator.ts
35
35
  var failure_condition_evaluator_exports = {};
@@ -731,4 +731,4 @@ export {
731
731
  failure_condition_evaluator_exports,
732
732
  init_failure_condition_evaluator
733
733
  };
734
- //# sourceMappingURL=chunk-MPS4HVQI.mjs.map
734
+ //# sourceMappingURL=chunk-UKG5UP5U.mjs.map