@superblocksteam/cli 2.0.79 → 2.0.80

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 (82) hide show
  1. package/README.md +1 -1
  2. package/dist/{acorn-5BVD2MBI.js → acorn-5YKSPFSL.js} +3 -3
  3. package/dist/{angular-AKTXRTYL.js → angular-N3PTHHOT.js} +3 -3
  4. package/dist/{api-IYURAM57.js → api-LFKG7KGP.js} +4 -4
  5. package/dist/{babel-7EIP2RM3.js → babel-LUSBYK6Y.js} +3 -3
  6. package/dist/{chunk-XTDAYSPV.js → chunk-3LSQZAOC.js} +3 -3
  7. package/dist/{chunk-5YKSZFXG.js → chunk-3PBLXNC7.js} +2 -2
  8. package/dist/{chunk-Q6DGCALS.js → chunk-7R6RFKSG.js} +4 -4
  9. package/dist/{chunk-4H6DEAXH.js → chunk-LW4E4Y7W.js} +3 -3
  10. package/dist/{chunk-7666LLVD.js → chunk-V6CSYTZV.js} +3 -3
  11. package/dist/{chunk-W56A5OTP.js → chunk-VRQ5TOM4.js} +3 -3
  12. package/dist/{chunk-5CFCELBW.js → chunk-WLDSUX2U.js} +3 -3
  13. package/dist/{chunk-DRREODHI.js → chunk-Y3CH4AT6.js} +4 -4
  14. package/dist/{chunk-AUEMW22E.js → chunk-Y4WGEUR7.js} +3 -3
  15. package/dist/{chunk-CGQEJ2EC.js → chunk-YU4T4GLC.js} +3 -3
  16. package/dist/{cli-truncate-DCIVPUGV.js → cli-truncate-36YCOWW2.js} +5 -5
  17. package/dist/commands/dev-parent.js +2 -2
  18. package/dist/{embedded-playwright-mcp-server-JIR3LNSE.js → embedded-playwright-mcp-server-RBP5W453.js} +3 -3
  19. package/dist/{enquirer-BYFQ4ICA.js → enquirer-5N3HDXXX.js} +4 -4
  20. package/dist/{estree-YBSNREFN.js → estree-653E3JDU.js} +3 -3
  21. package/dist/{flow-65D2PXWQ.js → flow-5CTHDHJA.js} +3 -3
  22. package/dist/{getMachineId-bsd-KP2FQDPV.js → getMachineId-bsd-APHSMI5B.js} +5 -5
  23. package/dist/{getMachineId-darwin-NDVE6SAZ.js → getMachineId-darwin-LQQH4VEK.js} +5 -5
  24. package/dist/{getMachineId-linux-3ND2EEB3.js → getMachineId-linux-Y47SDQD5.js} +4 -4
  25. package/dist/{getMachineId-unsupported-57PJA7UB.js → getMachineId-unsupported-NJFBX26Y.js} +4 -4
  26. package/dist/{getMachineId-win-NWQS4FCL.js → getMachineId-win-QETDSGO2.js} +5 -5
  27. package/dist/{glimmer-WF4OLSFG.js → glimmer-PSBEO7DF.js} +3 -3
  28. package/dist/{graphql-4UBRRHHW.js → graphql-GLT6YKMV.js} +3 -3
  29. package/dist/{html-F3SBPR2W.js → html-BRLFARU7.js} +3 -3
  30. package/dist/index.js +346 -153
  31. package/dist/index.js.map +1 -1
  32. package/dist/{jiti-BTQ6BTPJ.js → jiti-W4MWM6SL.js} +3 -3
  33. package/dist/{log-update-E5XLCIWL.js → log-update-D33FLZ5L.js} +6 -6
  34. package/dist/{markdown-MHZ742S4.js → markdown-PLC7Y56M.js} +3 -3
  35. package/dist/{meriyah-BECPVJIU.js → meriyah-VT7Q7N3K.js} +3 -3
  36. package/dist/{postcss-6Y76CR33.js → postcss-EXOI3LER.js} +3 -3
  37. package/dist/{read-pkg-EXO5TTY4.js → read-pkg-2F34HOUF.js} +4 -4
  38. package/dist/{spans-75IAOHS2.js → spans-X7MEIA5C.js} +4 -4
  39. package/dist/{src-HFPN4XIF.js → src-5FAXQQTX.js} +3 -3
  40. package/dist/{typescript-QAZVMTAG.js → typescript-XI67VOZZ.js} +3 -3
  41. package/dist/{wrap-ansi-COGQIJ3E.js → wrap-ansi-DZY23R2I.js} +5 -5
  42. package/dist/{yaml-RP6JYFAX.js → yaml-JWJN3TFP.js} +3 -3
  43. package/oclif.manifest.json +1 -1
  44. package/package.json +4 -4
  45. /package/dist/{acorn-5BVD2MBI.js.map → acorn-5YKSPFSL.js.map} +0 -0
  46. /package/dist/{angular-AKTXRTYL.js.map → angular-N3PTHHOT.js.map} +0 -0
  47. /package/dist/{api-IYURAM57.js.map → api-LFKG7KGP.js.map} +0 -0
  48. /package/dist/{babel-7EIP2RM3.js.map → babel-LUSBYK6Y.js.map} +0 -0
  49. /package/dist/{chunk-XTDAYSPV.js.map → chunk-3LSQZAOC.js.map} +0 -0
  50. /package/dist/{chunk-5YKSZFXG.js.map → chunk-3PBLXNC7.js.map} +0 -0
  51. /package/dist/{chunk-Q6DGCALS.js.map → chunk-7R6RFKSG.js.map} +0 -0
  52. /package/dist/{chunk-4H6DEAXH.js.map → chunk-LW4E4Y7W.js.map} +0 -0
  53. /package/dist/{chunk-7666LLVD.js.map → chunk-V6CSYTZV.js.map} +0 -0
  54. /package/dist/{chunk-W56A5OTP.js.map → chunk-VRQ5TOM4.js.map} +0 -0
  55. /package/dist/{chunk-5CFCELBW.js.map → chunk-WLDSUX2U.js.map} +0 -0
  56. /package/dist/{chunk-DRREODHI.js.map → chunk-Y3CH4AT6.js.map} +0 -0
  57. /package/dist/{chunk-AUEMW22E.js.map → chunk-Y4WGEUR7.js.map} +0 -0
  58. /package/dist/{chunk-CGQEJ2EC.js.map → chunk-YU4T4GLC.js.map} +0 -0
  59. /package/dist/{cli-truncate-DCIVPUGV.js.map → cli-truncate-36YCOWW2.js.map} +0 -0
  60. /package/dist/{embedded-playwright-mcp-server-JIR3LNSE.js.map → embedded-playwright-mcp-server-RBP5W453.js.map} +0 -0
  61. /package/dist/{enquirer-BYFQ4ICA.js.map → enquirer-5N3HDXXX.js.map} +0 -0
  62. /package/dist/{estree-YBSNREFN.js.map → estree-653E3JDU.js.map} +0 -0
  63. /package/dist/{flow-65D2PXWQ.js.map → flow-5CTHDHJA.js.map} +0 -0
  64. /package/dist/{getMachineId-bsd-KP2FQDPV.js.map → getMachineId-bsd-APHSMI5B.js.map} +0 -0
  65. /package/dist/{getMachineId-darwin-NDVE6SAZ.js.map → getMachineId-darwin-LQQH4VEK.js.map} +0 -0
  66. /package/dist/{getMachineId-linux-3ND2EEB3.js.map → getMachineId-linux-Y47SDQD5.js.map} +0 -0
  67. /package/dist/{getMachineId-unsupported-57PJA7UB.js.map → getMachineId-unsupported-NJFBX26Y.js.map} +0 -0
  68. /package/dist/{getMachineId-win-NWQS4FCL.js.map → getMachineId-win-QETDSGO2.js.map} +0 -0
  69. /package/dist/{glimmer-WF4OLSFG.js.map → glimmer-PSBEO7DF.js.map} +0 -0
  70. /package/dist/{graphql-4UBRRHHW.js.map → graphql-GLT6YKMV.js.map} +0 -0
  71. /package/dist/{html-F3SBPR2W.js.map → html-BRLFARU7.js.map} +0 -0
  72. /package/dist/{jiti-BTQ6BTPJ.js.map → jiti-W4MWM6SL.js.map} +0 -0
  73. /package/dist/{log-update-E5XLCIWL.js.map → log-update-D33FLZ5L.js.map} +0 -0
  74. /package/dist/{markdown-MHZ742S4.js.map → markdown-PLC7Y56M.js.map} +0 -0
  75. /package/dist/{meriyah-BECPVJIU.js.map → meriyah-VT7Q7N3K.js.map} +0 -0
  76. /package/dist/{postcss-6Y76CR33.js.map → postcss-EXOI3LER.js.map} +0 -0
  77. /package/dist/{read-pkg-EXO5TTY4.js.map → read-pkg-2F34HOUF.js.map} +0 -0
  78. /package/dist/{spans-75IAOHS2.js.map → spans-X7MEIA5C.js.map} +0 -0
  79. /package/dist/{src-HFPN4XIF.js.map → src-5FAXQQTX.js.map} +0 -0
  80. /package/dist/{typescript-QAZVMTAG.js.map → typescript-XI67VOZZ.js.map} +0 -0
  81. /package/dist/{wrap-ansi-COGQIJ3E.js.map → wrap-ansi-DZY23R2I.js.map} +0 -0
  82. /package/dist/{yaml-RP6JYFAX.js.map → yaml-JWJN3TFP.js.map} +0 -0
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  if (typeof process === 'object' && process !== null &&
2
2
  process.env !== null && typeof process.env === 'object') {
3
3
  process.env.DD_GIT_REPOSITORY_URL = 'https://token@github.com/superblocksteam/superblocks.git';
4
- process.env.DD_GIT_COMMIT_SHA = 'e33d1aaf9795a7f1c28268f6b69b198f6ee97cf4';
4
+ process.env.DD_GIT_COMMIT_SHA = '85aea01c8ed1a6da4927ceb1ed71e667f68b4bd3';
5
5
  }
6
6
  import { createRequire as $dd_createRequire } from 'module';
7
7
  import { fileURLToPath as $dd_fileURLToPath } from 'url';
@@ -23,10 +23,10 @@ import {
23
23
  require_re,
24
24
  require_semver,
25
25
  require_valid
26
- } from "./chunk-AUEMW22E.js";
26
+ } from "./chunk-Y4WGEUR7.js";
27
27
  import {
28
28
  require_enquirer
29
- } from "./chunk-W56A5OTP.js";
29
+ } from "./chunk-VRQ5TOM4.js";
30
30
  import {
31
31
  debounce_default,
32
32
  get_default,
@@ -40,7 +40,7 @@ import {
40
40
  require_dist,
41
41
  require_lib,
42
42
  require_slugify
43
- } from "./chunk-7666LLVD.js";
43
+ } from "./chunk-V6CSYTZV.js";
44
44
  import {
45
45
  SpanKind,
46
46
  SpanStatusCode,
@@ -48,7 +48,7 @@ import {
48
48
  esm_exports,
49
49
  init_esm,
50
50
  trace
51
- } from "./chunk-XTDAYSPV.js";
51
+ } from "./chunk-3LSQZAOC.js";
52
52
  import {
53
53
  require_agent_info_exporter,
54
54
  require_base,
@@ -77,7 +77,7 @@ import {
77
77
  require_utils,
78
78
  require_writer,
79
79
  require_writers
80
- } from "./chunk-5CFCELBW.js";
80
+ } from "./chunk-WLDSUX2U.js";
81
81
  import {
82
82
  __commonJS,
83
83
  __esm,
@@ -86,7 +86,7 @@ import {
86
86
  __toCommonJS,
87
87
  __toESM,
88
88
  init_cjs_shims
89
- } from "./chunk-5YKSZFXG.js";
89
+ } from "./chunk-3PBLXNC7.js";
90
90
 
91
91
  // ../../../../node_modules/.pnpm/common-tags@1.8.2/node_modules/common-tags/lib/TemplateTag/TemplateTag.js
92
92
  var require_TemplateTag = __commonJS({
@@ -68519,19 +68519,19 @@ var require_getMachineId = __commonJS({
68519
68519
  if (!getMachineIdImpl) {
68520
68520
  switch (process5.platform) {
68521
68521
  case "darwin":
68522
- getMachineIdImpl = (await import("./getMachineId-darwin-NDVE6SAZ.js")).getMachineId;
68522
+ getMachineIdImpl = (await import("./getMachineId-darwin-LQQH4VEK.js")).getMachineId;
68523
68523
  break;
68524
68524
  case "linux":
68525
- getMachineIdImpl = (await import("./getMachineId-linux-3ND2EEB3.js")).getMachineId;
68525
+ getMachineIdImpl = (await import("./getMachineId-linux-Y47SDQD5.js")).getMachineId;
68526
68526
  break;
68527
68527
  case "freebsd":
68528
- getMachineIdImpl = (await import("./getMachineId-bsd-KP2FQDPV.js")).getMachineId;
68528
+ getMachineIdImpl = (await import("./getMachineId-bsd-APHSMI5B.js")).getMachineId;
68529
68529
  break;
68530
68530
  case "win32":
68531
- getMachineIdImpl = (await import("./getMachineId-win-NWQS4FCL.js")).getMachineId;
68531
+ getMachineIdImpl = (await import("./getMachineId-win-QETDSGO2.js")).getMachineId;
68532
68532
  break;
68533
68533
  default:
68534
- getMachineIdImpl = (await import("./getMachineId-unsupported-57PJA7UB.js")).getMachineId;
68534
+ getMachineIdImpl = (await import("./getMachineId-unsupported-NJFBX26Y.js")).getMachineId;
68535
68535
  break;
68536
68536
  }
68537
68537
  }
@@ -304088,15 +304088,15 @@ var require_api_files = __commonJS({
304088
304088
  exports2.readAppApiYamlFile = readAppApiYamlFile4;
304089
304089
  exports2.resolveLanguageSpecificStepContentFromBlocks = resolveLanguageSpecificStepContentFromBlocks2;
304090
304090
  async function writeApiFiles3(...args) {
304091
- const esmFunction = await import("./api-IYURAM57.js");
304091
+ const esmFunction = await import("./api-LFKG7KGP.js");
304092
304092
  return esmFunction.writeApiFiles(...args);
304093
304093
  }
304094
304094
  async function readAppApiYamlFile4(...args) {
304095
- const esmFunction = await import("./api-IYURAM57.js");
304095
+ const esmFunction = await import("./api-LFKG7KGP.js");
304096
304096
  return esmFunction.readAppApiYamlFile(...args);
304097
304097
  }
304098
304098
  async function resolveLanguageSpecificStepContentFromBlocks2(...args) {
304099
- const esmFunction = await import("./api-IYURAM57.js");
304099
+ const esmFunction = await import("./api-LFKG7KGP.js");
304100
304100
  return esmFunction.resolveLanguageSpecificStepContentFromBlocks(...args);
304101
304101
  }
304102
304102
  }
@@ -451403,7 +451403,7 @@ var require_config_loader = __commonJS({
451403
451403
  * @returns {Promise<{createJiti: Function|undefined, version: string;}>} A promise that fulfills with an object containing the jiti module's createJiti function and version.
451404
451404
  */
451405
451405
  static async loadJiti() {
451406
- const { createJiti } = await import("./jiti-BTQ6BTPJ.js");
451406
+ const { createJiti } = await import("./jiti-W4MWM6SL.js");
451407
451407
  const version5 = require_package7().version;
451408
451408
  return { createJiti, version: version5 };
451409
451409
  }
@@ -451732,7 +451732,7 @@ var require_eslint_helpers = __commonJS({
451732
451732
  }
451733
451733
  async function globMatch({ basePath, pattern }) {
451734
451734
  let found = false;
451735
- const { hfs } = await import("./src-HFPN4XIF.js");
451735
+ const { hfs } = await import("./src-5FAXQQTX.js");
451736
451736
  const patternToUse = normalizeToPosix(path84.relative(basePath, pattern));
451737
451737
  const matcher = new Minimatch2(patternToUse, MINIMATCH_OPTIONS);
451738
451738
  const walkSettings = {
@@ -451772,7 +451772,7 @@ var require_eslint_helpers = __commonJS({
451772
451772
  return new Minimatch2(patternToUse, MINIMATCH_OPTIONS);
451773
451773
  });
451774
451774
  const unmatchedPatterns = /* @__PURE__ */ new Set([...relativeToPatterns.keys()]);
451775
- const { hfs } = await import("./src-HFPN4XIF.js");
451775
+ const { hfs } = await import("./src-5FAXQQTX.js");
451776
451776
  const walk2 = hfs.walk(basePath, {
451777
451777
  async directoryFilter(entry) {
451778
451778
  if (!matchers.some((matcher) => matcher.match(entry.path, true))) {
@@ -580101,8 +580101,6 @@ function registerLogListener(listener) {
580101
580101
  logListeners.delete(listener);
580102
580102
  };
580103
580103
  }
580104
- var wrappedLoggers = /* @__PURE__ */ new WeakSet();
580105
- var wrappedLoggerMap = /* @__PURE__ */ new WeakMap();
580106
580104
  function notifyListeners(level, messages3, meta2) {
580107
580105
  if (logListeners.size === 0) {
580108
580106
  return;
@@ -580121,13 +580119,15 @@ function notifyListeners(level, messages3, meta2) {
580121
580119
  }
580122
580120
  }
580123
580121
  }
580122
+ var WRAPPED_MARKER = Symbol("wrappedLogger");
580123
+ var wrappedLoggerCache = /* @__PURE__ */ new WeakMap();
580124
580124
  function wrapLogger(logger12) {
580125
- if (wrappedLoggers.has(logger12)) {
580125
+ if (logger12[WRAPPED_MARKER]) {
580126
580126
  return logger12;
580127
580127
  }
580128
- const existing = wrappedLoggerMap.get(logger12);
580129
- if (existing) {
580130
- return existing;
580128
+ const cached2 = wrappedLoggerCache.get(logger12);
580129
+ if (cached2) {
580130
+ return cached2;
580131
580131
  }
580132
580132
  const wrapped = {
580133
580133
  debug: (...messages3) => {
@@ -580147,26 +580147,27 @@ function wrapLogger(logger12) {
580147
580147
  logger12.error(message, meta2);
580148
580148
  }
580149
580149
  };
580150
- wrappedLoggers.add(wrapped);
580151
- wrappedLoggerMap.set(logger12, wrapped);
580150
+ wrapped[WRAPPED_MARKER] = true;
580151
+ wrappedLoggerCache.set(logger12, wrapped);
580152
580152
  return wrapped;
580153
580153
  }
580154
580154
  var _defaultLogger;
580155
580155
  function setDefaultLogger(logger12) {
580156
580156
  _defaultLogger = wrapLogger(logger12);
580157
580157
  }
580158
+ var consoleLogger = wrapLogger({
580159
+ debug: (...messages3) => console.debug(...messages3),
580160
+ info: (...messages3) => console.info(...messages3),
580161
+ warn: (...messages3) => console.warn(...messages3),
580162
+ error: (message, meta2) => console.error(message, meta2)
580163
+ });
580158
580164
  function getLogger() {
580159
- if (!_defaultLogger) {
580160
- setDefaultLogger({
580161
- debug: (...messages3) => console.debug(...messages3),
580162
- info: (...messages3) => console.info(...messages3),
580163
- warn: (...messages3) => console.warn(...messages3),
580164
- error: (message, meta2) => {
580165
- console.error(message, meta2 ?? "");
580166
- }
580167
- });
580168
- }
580169
- return _defaultLogger;
580165
+ return {
580166
+ debug: (...messages3) => (_defaultLogger ?? consoleLogger).debug(...messages3),
580167
+ info: (...messages3) => (_defaultLogger ?? consoleLogger).info(...messages3),
580168
+ warn: (...messages3) => (_defaultLogger ?? consoleLogger).warn(...messages3),
580169
+ error: (message, meta2) => (_defaultLogger ?? consoleLogger).error(message, meta2)
580170
+ };
580170
580171
  }
580171
580172
  function getErrorMeta(error40) {
580172
580173
  if (import_ai.APICallError.isInstance(error40)) {
@@ -583951,7 +583952,7 @@ import os2 from "node:os";
583951
583952
  // ../sdk/package.json
583952
583953
  var package_default = {
583953
583954
  name: "@superblocksteam/sdk",
583954
- version: "2.0.79",
583955
+ version: "2.0.80",
583955
583956
  type: "module",
583956
583957
  description: "Superblocks JS SDK",
583957
583958
  homepage: "https://www.superblocks.com",
@@ -584358,7 +584359,7 @@ var AiEntityType;
584358
584359
  AiEntityType2["USER"] = "user";
584359
584360
  AiEntityType2["BLOCK"] = "block";
584360
584361
  })(AiEntityType || (AiEntityType = {}));
584361
- var MAX_OUTPUT_TOKENS = 64e3;
584362
+ var MAX_OUTPUT_TOKENS = 48e3;
584362
584363
  var DEFAULT_CONTEXT_OPTIONS_V2 = {
584363
584364
  contextLimit: 17e4,
584364
584365
  contextBufferTokens: 4e3,
@@ -637407,7 +637408,7 @@ init_esm();
637407
637408
  var LLMObsSpanWriter = null;
637408
637409
  async function loadLLMObsSpanWriter() {
637409
637410
  if (!LLMObsSpanWriter) {
637410
- const module2 = await import("./spans-75IAOHS2.js");
637411
+ const module2 = await import("./spans-X7MEIA5C.js");
637411
637412
  LLMObsSpanWriter = module2.default;
637412
637413
  }
637413
637414
  return LLMObsSpanWriter;
@@ -641242,7 +641243,7 @@ var execAsync = promisify(exec);
641242
641243
  async function searchGronWithRipgrep(gronPath, pattern) {
641243
641244
  const logger12 = getLogger();
641244
641245
  try {
641245
- const { stdout } = await execAsync(`rg --no-heading --no-line-number '${pattern.replace(/'/g, "'\\''")}' '${gronPath}'`, { maxBuffer: 50 * 1024 * 1024 });
641246
+ const { stdout } = await execAsync(`rg -i --no-heading --no-line-number '${pattern.replace(/'/g, "'\\''")}' '${gronPath}'`, { maxBuffer: 50 * 1024 * 1024 });
641246
641247
  const lines = stdout.trim().split("\n").filter((line3) => line3.length > 0);
641247
641248
  logger12.debug(`[ripgrep] Found ${lines.length} matches in ${gronPath} for pattern: ${pattern}`);
641248
641249
  if (lines.length > 1e4) {
@@ -657282,6 +657283,11 @@ A request is **SAFE** if it:
657282
657283
  - Only classify as UNSAFE if there is clear attempt to extract system internals or clear malicious intent
657283
657284
 
657284
657285
  Analyze the following user request and provide your classification.`;
657286
+ var FAIL_CLOSED_RESULT = {
657287
+ safe: false,
657288
+ justification: "Classification failed, blocking request (fail-closed policy).",
657289
+ categories: ["other"]
657290
+ };
657285
657291
  async function classifyPromptSafety(prompt3, options8) {
657286
657292
  const { model, timeout = 5e3, abortSignal } = options8;
657287
657293
  const logger12 = getLogger();
@@ -657313,6 +657319,14 @@ async function classifyPromptSafety(prompt3, options8) {
657313
657319
  clearTimeout(timeoutId);
657314
657320
  }
657315
657321
  }
657322
+ function createBlockedUserMessage(_originalUser, classification) {
657323
+ const categoryStr = classification.categories && classification.categories.length > 0 ? ` Categories: ${classification.categories.join(", ")}.` : "";
657324
+ const blockedContent = `[BLOCKED] User prompt was blocked because it was classified as unsafe. Reason: ${classification.justification}${categoryStr}`;
657325
+ return {
657326
+ role: "user",
657327
+ content: blockedContent
657328
+ };
657329
+ }
657316
657330
 
657317
657331
  // ../../../vite-plugin-file-sync/dist/ai-service/llm/context-v2/index.js
657318
657332
  init_cjs_shims();
@@ -657875,31 +657889,71 @@ function getProviderId(model) {
657875
657889
  return model.provider ?? "unknown";
657876
657890
  }
657877
657891
  var logger3 = getPrefixedLogger("[phase2-session-summarizer]");
657878
- function stripImagesFromMessages(messages3) {
657879
- return messages3.map((msg) => {
657880
- if (!Array.isArray(msg.content)) {
657881
- return msg;
657892
+ function getMediaType(value2) {
657893
+ if (value2.mediaType) {
657894
+ return value2.mediaType;
657895
+ }
657896
+ if (value2.type === "media" && value2.data?.startsWith("data:")) {
657897
+ const match2 = value2.data.match(/^data:([^;,]+)/);
657898
+ return match2?.[1] ?? null;
657899
+ }
657900
+ return null;
657901
+ }
657902
+ function formatMediaTag(mediaType) {
657903
+ if (!mediaType)
657904
+ return "[media]";
657905
+ if (mediaType.startsWith("image/"))
657906
+ return "[image]";
657907
+ if (mediaType.startsWith("video/"))
657908
+ return "[video]";
657909
+ if (mediaType.startsWith("audio/"))
657910
+ return "[audio]";
657911
+ if (mediaType === "application/pdf")
657912
+ return "[pdf]";
657913
+ return `[media: ${mediaType}]`;
657914
+ }
657915
+ function stripMedia(msg) {
657916
+ if (!Array.isArray(msg.content)) {
657917
+ return msg;
657918
+ }
657919
+ const strippedContent = msg.content.map((part) => {
657920
+ if (typeof part === "object" && part !== null && "type" in part && part.type === "image") {
657921
+ return { type: "text", text: "[image]" };
657882
657922
  }
657883
- const strippedContent = msg.content.map((part) => {
657884
- if (typeof part === "object" && part !== null && "type" in part && part.type === "image") {
657885
- return { type: "text", text: "[image]" };
657923
+ if (part.type === "tool-result" && part.output?.type === "content" && Array.isArray(part.output.value)) {
657924
+ const firstMediaType = part.output.value.map(getMediaType).find((t16) => t16 !== null);
657925
+ if (firstMediaType) {
657926
+ const tag = formatMediaTag(firstMediaType);
657927
+ return { type: "text", text: tag };
657886
657928
  }
657887
- if (part.type === "tool-result" && part.output?.type === "content" && part.output.value?.some((value2) => value2.type === "media" && value2.data?.startsWith("data:image/"))) {
657888
- return { type: "text", text: "[image]" };
657889
- }
657890
- return part;
657891
- });
657892
- return { ...msg, content: strippedContent };
657929
+ }
657930
+ return part;
657893
657931
  });
657932
+ return { ...msg, content: strippedContent };
657933
+ }
657934
+ function stripProviderOptions(msg) {
657935
+ if (!Array.isArray(msg.content)) {
657936
+ return msg;
657937
+ }
657938
+ const strippedContent = msg.content.map((part) => {
657939
+ if (part.type === "reasoning") {
657940
+ const { providerOptions, ...rest } = part;
657941
+ return rest;
657942
+ }
657943
+ return part;
657944
+ });
657945
+ return { ...msg, content: strippedContent };
657946
+ }
657947
+ function stripSuperblocksMeta({ _superblocks, ...msg }) {
657948
+ return msg;
657894
657949
  }
657895
657950
  async function summarizeSession(options8) {
657896
657951
  const { messages: messages3, model, targetTokens, abortSignal, tracer: tracer4 = LLMObsTracer.instance } = options8;
657897
657952
  return tracer4.trace({ name: "session.summarize", kind: "task" }, async (summarizeSpan) => {
657898
657953
  async function callLLM(msgs) {
657899
657954
  return tracer4.trace({ name: "session.summarize.llm", kind: "task" }, async (llmSpan) => {
657900
- const strippedMessages = stripImagesFromMessages(msgs);
657901
- const cleanMessages = strippedMessages.map(({ _superblocks, ...msg }) => msg);
657902
- const messagesJson = JSON.stringify(cleanMessages, null, 2);
657955
+ const cleanedMessages = msgs.map(stripMedia).map(stripProviderOptions).map(stripSuperblocksMeta);
657956
+ const messagesJson = JSON.stringify(cleanedMessages, null, 2);
657903
657957
  const userMessage = formatCompactionRequest(messagesJson);
657904
657958
  let capturedError = null;
657905
657959
  const inputMetadata = {
@@ -658979,15 +659033,26 @@ var VercelStreamTextAdapter = class {
658979
659033
  onError: rest.onError ? (event) => handleOnError(event.error) : void 0,
658980
659034
  onAbort: rest.onAbort
658981
659035
  });
658982
- rawResult.steps.catch(() => {
659036
+ rawResult.steps.catch((error40) => {
659037
+ getLogger().error("Stream steps promise rejected", getErrorMeta(error40));
658983
659038
  });
658984
659039
  rawResult.response?.catch((error40) => {
658985
- getLogger().error("Error in stream response", getErrorMeta(error40));
659040
+ getLogger().error("Stream response promise rejected", getErrorMeta(error40));
659041
+ });
659042
+ rawResult.text?.catch((error40) => {
659043
+ getLogger().error("Stream text promise rejected", getErrorMeta(error40));
659044
+ });
659045
+ rawResult.finishReason?.catch((error40) => {
659046
+ getLogger().error("Stream finishReason promise rejected", getErrorMeta(error40));
659047
+ });
659048
+ rawResult.usage?.catch((error40) => {
659049
+ getLogger().error("Stream usage promise rejected", getErrorMeta(error40));
658986
659050
  });
658987
659051
  const result = {
658988
659052
  textStream: rawResult.textStream,
658989
659053
  fullStream: rawResult.fullStream,
658990
659054
  steps: rawResult.steps
659055
+ // Use original promise - rejection is now suppressed
658991
659056
  };
658992
659057
  return onFinally ? withStreamLifecycle(result, onFinally) : result;
658993
659058
  }
@@ -660785,6 +660850,9 @@ var ContextObserver = class {
660785
660850
  });
660786
660851
  }
660787
660852
  async onStepComplete(step, _session) {
660853
+ if (step.finishReason === "unknown") {
660854
+ return;
660855
+ }
660788
660856
  if (step.response?.messages) {
660789
660857
  await this.contextHandle.context.endStep(step.response.messages, step.usage);
660790
660858
  }
@@ -660915,38 +660983,156 @@ var LLMClient = class {
660915
660983
  this.getJwt = params.getJwt;
660916
660984
  this.onUsageRecorded = params.onUsageRecorded;
660917
660985
  }
660986
+ /**
660987
+ * Applies safety classification to a user message.
660988
+ *
660989
+ * @param user - The user message to classify
660990
+ * @param userText - The extracted text to classify
660991
+ * @param config - Safety classification configuration
660992
+ * @returns Object containing the processed message and classification result
660993
+ */
660994
+ async applySafetyClassification(user, userText, config4) {
660995
+ const failOpen = config4.failOpen ?? true;
660996
+ if (!config4.model) {
660997
+ this.logger.warn("[safety-classifier] No model configured, skipping classification");
660998
+ return {
660999
+ message: user,
661000
+ classification: {
661001
+ safe: true,
661002
+ justification: "No model configured, skipped classification"
661003
+ }
661004
+ };
661005
+ }
661006
+ try {
661007
+ this.logger.info("[safety-classifier] Running safety classification");
661008
+ const classification = await classifyPromptSafety(userText, {
661009
+ model: config4.model,
661010
+ timeout: config4.timeout ?? 5e3
661011
+ });
661012
+ if (!classification.safe) {
661013
+ this.logger.warn("[safety-classifier] Prompt classified as unsafe", {
661014
+ justification: classification.justification,
661015
+ categories: classification.categories
661016
+ });
661017
+ return {
661018
+ message: createBlockedUserMessage(user, classification),
661019
+ classification: {
661020
+ safe: false,
661021
+ justification: classification.justification,
661022
+ categories: classification.categories
661023
+ }
661024
+ };
661025
+ }
661026
+ this.logger.info("[safety-classifier] Prompt classified as safe");
661027
+ return {
661028
+ message: user,
661029
+ classification: {
661030
+ safe: true,
661031
+ justification: classification.justification
661032
+ }
661033
+ };
661034
+ } catch (error40) {
661035
+ this.logger.error("[safety-classifier] Classification failed", getErrorMeta(error40));
661036
+ if (failOpen) {
661037
+ this.logger.info("[safety-classifier] Failing open, allowing request to proceed");
661038
+ return {
661039
+ message: user,
661040
+ classification: {
661041
+ safe: true,
661042
+ justification: "Classification error, failed open",
661043
+ error: error40 instanceof Error ? error40.message : String(error40)
661044
+ }
661045
+ };
661046
+ } else {
661047
+ this.logger.warn("[safety-classifier] Failing closed, blocking request");
661048
+ return {
661049
+ message: createBlockedUserMessage(user, FAIL_CLOSED_RESULT),
661050
+ classification: {
661051
+ safe: false,
661052
+ justification: FAIL_CLOSED_RESULT.justification,
661053
+ categories: FAIL_CLOSED_RESULT.categories,
661054
+ error: error40 instanceof Error ? error40.message : String(error40)
661055
+ }
661056
+ };
661057
+ }
661058
+ }
661059
+ }
660918
661060
  async streamText(options8, logger12 = getLogger(), tracer4 = LLMObsTracer.instance) {
660919
661061
  const { model, user, system, context: contextConfig, logging: loggingConfig, retry: retryConfig, providerConfig, enableFallback, fallbackStrategy, peer, observers: customObservers, prepareStep, onStepFinish, onFinish, onChunk, onError: onError2, useContextV2, summarizationModel, safety: safetyConfig, ...streamOptions } = options8;
660920
661062
  if (!user) {
660921
661063
  throw new Error("user message is required");
660922
661064
  }
660923
- const userText = extractTextFromMessage(user);
660924
661065
  let safeUser = user;
660925
661066
  let safetySpan;
660926
- if (safetyConfig) {
661067
+ const hasSecretRedaction = safetyConfig?.secretRedaction?.enabled === true;
661068
+ const hasClassification = safetyConfig?.classification?.enabled === true;
661069
+ if (safetyConfig && (hasSecretRedaction || hasClassification)) {
660927
661070
  safetySpan = tracer4.startActiveSpan({
660928
661071
  name: "llmclient.safety",
660929
661072
  kind: "task"
660930
661073
  });
660931
- }
660932
- if (safetyConfig?.secretRedaction?.enabled) {
660933
- await tracer4.trace({
660934
- name: "llmclient.safety.secretRedaction",
660935
- kind: "task"
660936
- }, async () => {
660937
- const scanResult = await scanContentForSecrets(userText);
660938
- const secretRedactor = new SecretRedactor(scanResult.findings);
660939
- if (scanResult.hasSecrets) {
660940
- this.logger.warn(`[secret-scan] Found ${scanResult.findings.length} potential secret(s) in user message`, {
660941
- findingCount: scanResult.findings.length,
660942
- hasVerified: scanResult.hasVerifiedSecrets,
660943
- detectorTypes: scanResult.findings.map((f) => f.detectorType)
661074
+ const scope = safetyConfig.scope ?? "all";
661075
+ const userText = extractTextFromMessage(user, scope);
661076
+ if (hasSecretRedaction) {
661077
+ await tracer4.trace({
661078
+ name: "llmclient.safety.secretRedaction",
661079
+ kind: "task"
661080
+ }, async () => {
661081
+ try {
661082
+ const scanResult = await scanContentForSecrets(userText);
661083
+ if (!scanResult.success) {
661084
+ this.logger.error(`[secret-scan] Secret scanning failed, cannot verify if prompt contains secrets: ${scanResult.error ?? "unknown error"}`);
661085
+ return;
661086
+ }
661087
+ const secretRedactor = new SecretRedactor(scanResult.findings);
661088
+ if (scanResult.hasSecrets) {
661089
+ this.logger.warn(`[secret-scan] Found ${scanResult.findings.length} potential secret(s)`, {
661090
+ findingCount: scanResult.findings.length,
661091
+ hasVerified: scanResult.hasVerifiedSecrets,
661092
+ detectorTypes: scanResult.findings.map((f) => f.detectorType)
661093
+ });
661094
+ }
661095
+ safeUser = redactUserMessage(safeUser, secretRedactor);
661096
+ } catch (error40) {
661097
+ this.logger.error("[secret-scan] Secret scanning threw an exception, proceeding without redaction", getErrorMeta(error40));
661098
+ }
661099
+ });
661100
+ }
661101
+ if (hasClassification && safetyConfig.classification) {
661102
+ const config4 = safetyConfig.classification;
661103
+ if (!config4.model) {
661104
+ this.logger.warn("[safety-classifier] No model configured, skipping classification");
661105
+ } else {
661106
+ await tracer4.trace({
661107
+ name: "llmclient.safety.classification",
661108
+ kind: "task"
661109
+ }, async () => {
661110
+ const textToClassify = extractTextFromMessage(safeUser, scope);
661111
+ const result = await this.applySafetyClassification(safeUser, textToClassify, config4);
661112
+ safeUser = result.message;
661113
+ tracer4.annotate({
661114
+ tags: {
661115
+ "safety.classification.safe": result.classification.safe,
661116
+ "safety.classification.blocked": !result.classification.safe
661117
+ },
661118
+ metadata: {
661119
+ classification: {
661120
+ safe: result.classification.safe,
661121
+ justification: result.classification.justification,
661122
+ ...result.classification.categories && {
661123
+ categories: result.classification.categories
661124
+ },
661125
+ ...result.classification.error && {
661126
+ error: result.classification.error
661127
+ }
661128
+ }
661129
+ }
661130
+ });
660944
661131
  });
660945
661132
  }
660946
- safeUser = redactUserMessage(user, secretRedactor);
660947
- });
661133
+ }
661134
+ safetySpan?.finish();
660948
661135
  }
660949
- safetySpan?.finish();
660950
661136
  if (!providerConfig?.provider || !providerConfig?.model) {
660951
661137
  throw new Error("providerConfig with provider and model is required. This should be populated from llmConfig sent by the UI.");
660952
661138
  }
@@ -661056,7 +661242,7 @@ var LLMClient = class {
661056
661242
  id: messageId,
661057
661243
  type: "control",
661058
661244
  group: `context-compaction-${phase}`,
661059
- text: "Summarizing previous messages",
661245
+ text: "Summarizing conversation",
661060
661246
  status: "pending"
661061
661247
  });
661062
661248
  },
@@ -661067,7 +661253,7 @@ var LLMClient = class {
661067
661253
  id: messageId,
661068
661254
  type: "control",
661069
661255
  group: `context-compaction-${phase}`,
661070
- text: "Summarized previous messages",
661256
+ text: "Summarized past conversation",
661071
661257
  status: "validated"
661072
661258
  });
661073
661259
  }
@@ -677463,16 +677649,14 @@ var jwtMiddleware = (getJwt, getAttributes) => {
677463
677649
  };
677464
677650
  var prioritySettingsMiddleware = ({ settings }) => {
677465
677651
  return {
677466
- transformParams: async ({ params }) => {
677467
- return {
677468
- ...settings,
677469
- ...params,
677470
- providerMetadata: {
677471
- ...params.providerOptions,
677472
- ...settings.providerOptions
677473
- }
677474
- };
677475
- }
677652
+ transformParams: async ({ params }) => ({
677653
+ ...params,
677654
+ ...settings,
677655
+ providerMetadata: {
677656
+ ...params.providerOptions,
677657
+ ...settings.providerOptions
677658
+ }
677659
+ })
677476
677660
  };
677477
677661
  };
677478
677662
 
@@ -678084,7 +678268,7 @@ var PlaywrightMcpServerManager = class {
678084
678268
  this.logger.info(`Starting embedded Playwright MCP server: browser=${options8?.browser || "chromium"}, headless=${options8?.headless !== false}`);
678085
678269
  }
678086
678270
  try {
678087
- const { startEmbeddedPlaywrightMcpServer } = await import("./embedded-playwright-mcp-server-JIR3LNSE.js");
678271
+ const { startEmbeddedPlaywrightMcpServer } = await import("./embedded-playwright-mcp-server-RBP5W453.js");
678088
678272
  this.server = await startEmbeddedPlaywrightMcpServer({
678089
678273
  storageStatePath: options8?.storageStatePath,
678090
678274
  jwt: options8?.jwt,
@@ -679134,7 +679318,14 @@ var Clark = class extends TracedFSM {
679134
679318
  peer: this.context.peer,
679135
679319
  useContextV2: this.context.llmConfig?.flags?.isContextV2Enabled,
679136
679320
  summarizationModel: services.llmProvider.modelForTask("summarizeMessages"),
679137
- safety: {
679321
+ safety: streamOptions.safety ? {
679322
+ scope: streamOptions.safety.scope,
679323
+ // Pass through unified scope
679324
+ classification: streamOptions.safety.classification,
679325
+ // Pass through
679326
+ secretRedaction: streamOptions.safety.secretRedaction
679327
+ // Pass through
679328
+ } : {
679138
679329
  secretRedaction: {
679139
679330
  enabled: services.features.secretRedactionEnabled ?? false
679140
679331
  }
@@ -679383,7 +679574,9 @@ Address the errors and return the fixed code.`;
679383
679574
  void transitionTo({
679384
679575
  type: AGENT_PLANNED,
679385
679576
  userPrompt: debuggingPrompt,
679386
- debugging: true
679577
+ debugging: true,
679578
+ isUserPrompt: false
679579
+ // Debugging prompts are system-generated
679387
679580
  });
679388
679581
  });
679389
679582
  });
@@ -679558,7 +679751,10 @@ Address the errors and return the fixed code.`;
679558
679751
  void transitionTo({
679559
679752
  type: AGENT_PLANNED,
679560
679753
  userPrompt: request3.prompt,
679561
- promptContext: request3.promptContext
679754
+ promptContext: request3.promptContext,
679755
+ // Skip safety features if this is a response to an interactive message
679756
+ // (not an original user prompt)
679757
+ isUserPrompt: !request3.responseMetadata
679562
679758
  });
679563
679759
  break;
679564
679760
  }
@@ -690135,7 +690331,7 @@ var VERSION_SPECIFIC_TYPE_DEFINITIONS = [
690135
690331
  integrationId: string,
690136
690332
  config: {
690137
690333
  statement: Binding<string>;
690138
- /** SQL parameters array - use "[]" for queries without parameters */
690334
+ /** SQL parameters array - use "" for queries without parameters */
690139
690335
  parameters: Binding<string>;
690140
690336
  }
690141
690337
  );
@@ -690217,7 +690413,7 @@ new PostgreSQL("SortedUsers", postgresIntegrationId, {
690217
690413
  integrationId: string,
690218
690414
  config: {
690219
690415
  statement: Binding<string>;
690220
- /** SQL parameters array - use "[]" for queries without parameters */
690416
+ /** SQL parameters array - use "" for queries without parameters */
690221
690417
  parameters: Binding<string>;
690222
690418
  }
690223
690419
  );
@@ -690287,7 +690483,7 @@ new MySQL("SortedUsers", mysqlIntegrationId, {
690287
690483
  integrationId: string,
690288
690484
  config: {
690289
690485
  statement: Binding<string>;
690290
- /** SQL parameters array - use "[]" for queries without parameters */
690486
+ /** SQL parameters array - use "" for queries without parameters */
690291
690487
  parameters: Binding<string>;
690292
690488
  }
690293
690489
  );
@@ -690357,7 +690553,7 @@ new MariaDB("SortedUsers", mariadbIntegrationId, {
690357
690553
  integrationId: string,
690358
690554
  config: {
690359
690555
  statement: Binding<string>;
690360
- /** SQL parameters array - use "[]" for queries without parameters */
690556
+ /** SQL parameters array - use "" for queries without parameters */
690361
690557
  parameters: Binding<string>;
690362
690558
  }
690363
690559
  );
@@ -690427,7 +690623,7 @@ new MicrosoftSql("SortedUsers", mssqlIntegrationId, {
690427
690623
  integrationId: string,
690428
690624
  config: {
690429
690625
  statement: Binding<string>;
690430
- /** SQL parameters array - use "[]" for queries without parameters */
690626
+ /** SQL parameters array - use "" for queries without parameters */
690431
690627
  parameters: Binding<string>;
690432
690628
  }
690433
690629
  );
@@ -690497,7 +690693,7 @@ new Snowflake("SortedUsers", snowflakeIntegrationId, {
690497
690693
  integrationId: string,
690498
690694
  config: {
690499
690695
  statement: Binding<string>;
690500
- /** SQL parameters array - use "[]" for queries without parameters */
690696
+ /** SQL parameters array - use "" for queries without parameters */
690501
690697
  parameters: Binding<string>;
690502
690698
  }
690503
690699
  );
@@ -690567,7 +690763,7 @@ new Redshift("SortedUsers", redshiftIntegrationId, {
690567
690763
  integrationId: string,
690568
690764
  config: {
690569
690765
  sqlBody: Binding<string>;
690570
- /** SQL parameters array - use "[]" for queries without parameters */
690766
+ /** SQL parameters array - use "" for queries without parameters */
690571
690767
  parameters: Binding<string>;
690572
690768
  }
690573
690769
  );
@@ -690637,7 +690833,7 @@ new BigQuery("SortedUsers", bigqueryIntegrationId, {
690637
690833
  integrationId: string,
690638
690834
  config: {
690639
690835
  sqlBody: Binding<string>;
690640
- /** SQL parameters array - use "[]" for queries without parameters */
690836
+ /** SQL parameters array - use "" for queries without parameters */
690641
690837
  parameters: Binding<string>;
690642
690838
  }
690643
690839
  );
@@ -690700,7 +690896,7 @@ new Athena("SortedLogs", athenaIntegrationId, {
690700
690896
  integrationId: string,
690701
690897
  config: {
690702
690898
  statement: Binding<string>;
690703
- /** SQL parameters array - use "[]" for queries without parameters */
690899
+ /** SQL parameters array - use "" for queries without parameters */
690704
690900
  parameters: Binding<string>;
690705
690901
  }
690706
690902
  );
@@ -690770,7 +690966,7 @@ new Databricks("SortedUsers", databricksIntegrationId, {
690770
690966
  integrationId: string,
690771
690967
  config: {
690772
690968
  statement: Binding<string>;
690773
- /** SQL parameters array - use "[]" for queries without parameters */
690969
+ /** SQL parameters array - use "" for queries without parameters */
690774
690970
  parameters: Binding<string>;
690775
690971
  }
690776
690972
  );
@@ -690840,7 +691036,7 @@ new CockroachDB("SortedUsers", cockroachdbIntegrationId, {
690840
691036
  integrationId: string,
690841
691037
  config: {
690842
691038
  statement: Binding<string>;
690843
- /** SQL parameters array - use "[]" for queries without parameters */
691039
+ /** SQL parameters array - use "" for queries without parameters */
690844
691040
  parameters: Binding<string>;
690845
691041
  }
690846
691042
  );
@@ -710144,46 +710340,18 @@ Do NOT call \`build_finalize\` until testing is complete.
710144
710340
  content: content2
710145
710341
  };
710146
710342
  };
710147
- async function classifyUserPrompt(userPrompt, services) {
710148
- const logger12 = getLogger();
710149
- if (!services.features.safetyClassificationEnabled) {
710150
- logger12.debug("[llm-generating] Safety classification disabled by flag");
710151
- return userPrompt;
710152
- }
710153
- logger12.info("[llm-generating] Running safety classification on user prompt");
710154
- const model = services.llmProvider.modelForTask("fast");
710155
- try {
710156
- const classification = await classifyPromptSafety(userPrompt, {
710157
- model,
710158
- timeout: 5e3
710159
- });
710160
- if (!classification.safe) {
710161
- logger12.warn("[llm-generating] Prompt classified as unsafe", {
710162
- justification: classification.justification,
710163
- categories: classification.categories
710164
- });
710165
- return `[BLOCKED] User prompt was blocked because it was classified as unsafe. Reason: ${classification.justification}. Categories: ${classification.categories}`;
710166
- }
710167
- logger12.info("[llm-generating] Prompt classified as safe");
710168
- return userPrompt;
710169
- } catch (error40) {
710170
- logger12.error("[llm-generating] Safety classification failed", getErrorMeta(error40));
710171
- return userPrompt;
710172
- }
710173
- }
710174
710343
  var doLLMGenerating = (clark2, services) => {
710175
710344
  const transitionTo = transitionFrom(clark2);
710176
710345
  return async ({ event }) => {
710177
710346
  switch (event.type) {
710178
710347
  case AGENT_PLANNED: {
710179
- const { userPrompt, promptContext } = event;
710348
+ const { userPrompt, promptContext, isUserPrompt = true } = event;
710180
710349
  const provider = services.llmProvider.name;
710181
710350
  const mode = clark2.context.currentMode;
710182
710351
  const planContext = clark2.context.planContext;
710183
710352
  const planApproved = planContext?.approved;
710184
710353
  const system = buildBaseSystemPrompt(services, mode);
710185
- const safeUserPrompt = await classifyUserPrompt(userPrompt, services);
710186
- const user = buildUserMessage(safeUserPrompt, promptContext, planContext, mode, services, clark2.context.userChanges);
710354
+ const user = buildUserMessage(userPrompt, promptContext, planContext, mode, services, clark2.context.userChanges);
710187
710355
  const tools = await buildTools(clark2, services);
710188
710356
  const result = await clark2.streamText(services, {
710189
710357
  user,
@@ -710201,6 +710369,31 @@ var doLLMGenerating = (clark2, services) => {
710201
710369
  ],
710202
710370
  onError: (error40) => {
710203
710371
  clark2.logger.error("LLM stream processing failed", getErrorMeta(error40));
710372
+ },
710373
+ // Only apply safety features for original user prompts, not responses to interactive messages
710374
+ safety: isUserPrompt ? {
710375
+ scope: "last",
710376
+ // Unified scope: only scan user prompt, not context parts
710377
+ classification: {
710378
+ enabled: services.features.safetyClassificationEnabled ?? false,
710379
+ // Only resolve model if classification is enabled to avoid unnecessary work
710380
+ model: services.features.safetyClassificationEnabled ? services.llmProvider.modelForTask("fast") : void 0,
710381
+ failOpen: true
710382
+ },
710383
+ secretRedaction: {
710384
+ enabled: services.features.secretRedactionEnabled ?? false
710385
+ }
710386
+ } : {
710387
+ // Explicitly disable all safety features for non-user prompts
710388
+ // to prevent fallback default behavior in Clark.streamText
710389
+ scope: "last",
710390
+ classification: {
710391
+ enabled: false,
710392
+ failOpen: true
710393
+ },
710394
+ secretRedaction: {
710395
+ enabled: false
710396
+ }
710204
710397
  }
710205
710398
  });
710206
710399
  let shouldTransitionToAwaitingUser;
@@ -744112,7 +744305,7 @@ var parseYaml;
744112
744305
  async function loadYaml(file2) {
744113
744306
  const content2 = await read_file_default(file2);
744114
744307
  if (!parseYaml) {
744115
- ({ __parsePrettierYamlConfig: parseYaml } = await import("./yaml-RP6JYFAX.js"));
744308
+ ({ __parsePrettierYamlConfig: parseYaml } = await import("./yaml-JWJN3TFP.js"));
744116
744309
  }
744117
744310
  try {
744118
744311
  return parseYaml(content2);
@@ -749506,7 +749699,7 @@ function createParsersAndPrinters(modules) {
749506
749699
  }
749507
749700
  var estreePlugin = createParsersAndPrinters([
749508
749701
  {
749509
- importPlugin: () => import("./estree-YBSNREFN.js"),
749702
+ importPlugin: () => import("./estree-653E3JDU.js"),
749510
749703
  printers: ["estree", "estree-json"]
749511
749704
  }
749512
749705
  ]);
@@ -749530,11 +749723,11 @@ var languages = [
749530
749723
  ];
749531
749724
  var { parsers, printers } = createParsersAndPrinters([
749532
749725
  {
749533
- importPlugin: () => import("./acorn-5BVD2MBI.js"),
749726
+ importPlugin: () => import("./acorn-5YKSPFSL.js"),
749534
749727
  parsers: ["acorn", "espree"]
749535
749728
  },
749536
749729
  {
749537
- importPlugin: () => import("./angular-AKTXRTYL.js"),
749730
+ importPlugin: () => import("./angular-N3PTHHOT.js"),
749538
749731
  parsers: [
749539
749732
  "__ng_action",
749540
749733
  "__ng_binding",
@@ -749543,7 +749736,7 @@ var { parsers, printers } = createParsersAndPrinters([
749543
749736
  ]
749544
749737
  },
749545
749738
  {
749546
- importPlugin: () => import("./babel-7EIP2RM3.js"),
749739
+ importPlugin: () => import("./babel-LUSBYK6Y.js"),
749547
749740
  parsers: [
749548
749741
  "babel",
749549
749742
  "babel-flow",
@@ -749562,44 +749755,44 @@ var { parsers, printers } = createParsersAndPrinters([
749562
749755
  ]
749563
749756
  },
749564
749757
  {
749565
- importPlugin: () => import("./flow-65D2PXWQ.js"),
749758
+ importPlugin: () => import("./flow-5CTHDHJA.js"),
749566
749759
  parsers: ["flow"]
749567
749760
  },
749568
749761
  {
749569
- importPlugin: () => import("./glimmer-WF4OLSFG.js"),
749762
+ importPlugin: () => import("./glimmer-PSBEO7DF.js"),
749570
749763
  parsers: ["glimmer"],
749571
749764
  printers: ["glimmer"]
749572
749765
  },
749573
749766
  {
749574
- importPlugin: () => import("./graphql-4UBRRHHW.js"),
749767
+ importPlugin: () => import("./graphql-GLT6YKMV.js"),
749575
749768
  parsers: ["graphql"],
749576
749769
  printers: ["graphql"]
749577
749770
  },
749578
749771
  {
749579
- importPlugin: () => import("./html-F3SBPR2W.js"),
749772
+ importPlugin: () => import("./html-BRLFARU7.js"),
749580
749773
  parsers: ["html", "angular", "vue", "lwc", "mjml"],
749581
749774
  printers: ["html"]
749582
749775
  },
749583
749776
  {
749584
- importPlugin: () => import("./markdown-MHZ742S4.js"),
749777
+ importPlugin: () => import("./markdown-PLC7Y56M.js"),
749585
749778
  parsers: ["markdown", "mdx", "remark"],
749586
749779
  printers: ["mdast"]
749587
749780
  },
749588
749781
  {
749589
- importPlugin: () => import("./meriyah-BECPVJIU.js"),
749782
+ importPlugin: () => import("./meriyah-VT7Q7N3K.js"),
749590
749783
  parsers: ["meriyah"]
749591
749784
  },
749592
749785
  {
749593
- importPlugin: () => import("./postcss-6Y76CR33.js"),
749786
+ importPlugin: () => import("./postcss-EXOI3LER.js"),
749594
749787
  parsers: ["css", "less", "scss"],
749595
749788
  printers: ["postcss"]
749596
749789
  },
749597
749790
  {
749598
- importPlugin: () => import("./typescript-QAZVMTAG.js"),
749791
+ importPlugin: () => import("./typescript-XI67VOZZ.js"),
749599
749792
  parsers: ["typescript"]
749600
749793
  },
749601
749794
  {
749602
- importPlugin: () => import("./yaml-RP6JYFAX.js"),
749795
+ importPlugin: () => import("./yaml-JWJN3TFP.js"),
749603
749796
  parsers: ["yaml"],
749604
749797
  printers: ["yaml"]
749605
749798
  }
@@ -765228,7 +765421,7 @@ async function handleLockConflict(error40, lockSvc, span, logger12) {
765228
765421
  }
765229
765422
  async function readPkgJson(cwd) {
765230
765423
  try {
765231
- const { readPackage } = await import("./read-pkg-EXO5TTY4.js");
765424
+ const { readPackage } = await import("./read-pkg-2F34HOUF.js");
765232
765425
  return await readPackage({ cwd });
765233
765426
  } catch {
765234
765427
  return null;
@@ -766365,7 +766558,7 @@ async function createPrompt(options8, settings) {
766365
766558
  enquirer3 = settings.enquirer;
766366
766559
  } else {
766367
766560
  try {
766368
- enquirer3 = await import("./enquirer-BYFQ4ICA.js").then((imported) => imported.default ? new imported.default() : new imported());
766561
+ enquirer3 = await import("./enquirer-5N3HDXXX.js").then((imported) => imported.default ? new imported.default() : new imported());
766369
766562
  } catch (e) {
766370
766563
  if (this instanceof TaskWrapper) {
766371
766564
  this.task.prompt = new PromptError("Enquirer is a peer dependency that must be installed separately.");
@@ -766573,9 +766766,9 @@ var _DefaultRenderer = class {
766573
766766
  return typeof bottomBar === "number" && bottomBar !== 0 || typeof bottomBar === "boolean" && bottomBar !== false || !task.hasTitle();
766574
766767
  }
766575
766768
  async render() {
766576
- const { createLogUpdate } = await import("./log-update-E5XLCIWL.js");
766577
- const { default: truncate } = await import("./cli-truncate-DCIVPUGV.js");
766578
- const { default: wrap2 } = await import("./wrap-ansi-COGQIJ3E.js");
766769
+ const { createLogUpdate } = await import("./log-update-D33FLZ5L.js");
766770
+ const { default: truncate } = await import("./cli-truncate-36YCOWW2.js");
766771
+ const { default: wrap2 } = await import("./wrap-ansi-DZY23R2I.js");
766579
766772
  this.updater = createLogUpdate(this.logger.process.stdout);
766580
766773
  this.truncate = truncate;
766581
766774
  this.wrap = wrap2;