ur-agent 1.65.12 → 1.65.13

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.
package/dist/cli.js CHANGED
@@ -56693,6 +56693,150 @@ var init_ollamaTuning = __esm(() => {
56693
56693
  NUM_CTX_BUCKETS = [32768, 49152, 65536, 98304, 131072, 196608, 262144];
56694
56694
  });
56695
56695
 
56696
+ // src/tools/ExitPlanModeTool/constants.ts
56697
+ var EXIT_PLAN_MODE_TOOL_NAME = "ExitPlanMode", EXIT_PLAN_MODE_V2_TOOL_NAME = "ExitPlanMode";
56698
+
56699
+ // src/tools/AskUserQuestionTool/prompt.ts
56700
+ var ASK_USER_QUESTION_TOOL_NAME = "AskUserQuestion", ASK_USER_QUESTION_TOOL_CHIP_WIDTH = 12, DESCRIPTION = "Asks the user multiple choice questions to gather information, clarify ambiguity, understand preferences, make decisions or offer them choices. This is the required way to present the user with a choice: whenever you would otherwise end a message by asking the user to pick between options or decide a direction, call this tool instead of asking in plain text, so the user gets a selectable menu rather than having to type a free-form answer.", PREVIEW_FEATURE_PROMPT, ASK_USER_QUESTION_TOOL_PROMPT;
56701
+ var init_prompt = __esm(() => {
56702
+ PREVIEW_FEATURE_PROMPT = {
56703
+ markdown: `
56704
+ Preview feature:
56705
+ Use the optional \`preview\` field on options when presenting concrete artifacts that users need to visually compare:
56706
+ - ASCII mockups of UI layouts or components
56707
+ - Code snippets showing different implementations
56708
+ - Diagram variations
56709
+ - Configuration examples
56710
+
56711
+ Preview content is rendered as markdown in a monospace box. Multi-line text with newlines is supported. When any option has a preview, the UI switches to a side-by-side layout with a vertical option list on the left and preview on the right. Do not use previews for simple preference questions where labels and descriptions suffice. Note: previews are only supported for single-select questions (not multiSelect).
56712
+ `,
56713
+ html: `
56714
+ Preview feature:
56715
+ Use the optional \`preview\` field on options when presenting concrete artifacts that users need to visually compare:
56716
+ - Plain-text or ASCII mockups of UI layouts or components
56717
+ - Inert code snippets showing different implementations
56718
+ - Textual visual comparisons or diagrams
56719
+
56720
+ Preview content is untrusted text: raw HTML is not accepted or executed. It is escaped and rendered as inert preformatted text. Do not include HTML tags, attributes, URLs, scripts, styles, event handlers, or other executable markup. Do not use previews for simple preference questions where labels and descriptions suffice. Note: previews are only supported for single-select questions (not multiSelect).
56721
+ `
56722
+ };
56723
+ ASK_USER_QUESTION_TOOL_PROMPT = `Use this tool when you need to ask the user questions during execution. This allows you to:
56724
+ 1. Gather user preferences or requirements
56725
+ 2. Clarify ambiguous instructions
56726
+ 3. Get decisions on implementation choices as you work
56727
+ 4. Offer choices to the user about what direction to take.
56728
+
56729
+ Strongly prefer this tool over asking a question in plain assistant text. Any time your reply would end with a question that offers the user options or asks them to choose a direction (e.g. "Would you like A or B?", "Which approach should I take?", "Want me to do X or Y?"), call this tool with those options instead so the user gets a selectable arrow-key menu. Only ask in plain text when the answer is genuinely open-ended and cannot be expressed as a small set of choices.
56730
+
56731
+ Strict input hierarchy:
56732
+ - Invoke the tool with exactly one top-level \`questions\` array containing 1-4 complete question objects.
56733
+ - Every question object contains \`question\`, a concise \`header\` (maximum 12 characters), and an \`options\` array with 2-8 option objects. Use \`multiSelect: true\` only when more than one choice may apply.
56734
+ - Every option object contains a \`label\`. Add \`description\` only when it contributes a real consequence, trade-off, or limitation; \`preview\` is optional.
56735
+ - Keep each question and its own options nested together. Never put option rows directly in the top-level \`questions\` array, and never send incomplete header/prompt-only entries.
56736
+
56737
+ Canonical valid tool arguments (invoke the structured tool; do not print this object as prose):
56738
+ {"questions":[{"question":"Which database should we use?","header":"Database","options":[{"label":"PostgreSQL (Recommended)","description":"Strong consistency and concurrency; requires a running server and migrations."},{"label":"SQLite","description":"Zero setup and a single file; unsuitable for multiple concurrent writers."}],"multiSelect":false}]}
56739
+
56740
+ Usage notes:
56741
+ - Users will always be able to select "Other" to provide custom text input, so it is safe to offer choices even when you are unsure you have listed every option
56742
+ - Use multiSelect: true to allow multiple answers to be selected for a question
56743
+ - If you recommend a specific option, make that the first option in the list and add "(Recommended)" at the end of the label
56744
+ - Do not over-question. Ask only decisions that materially affect the result and cannot be inferred safely. If more than four decisions are truly needed, ask the most blocking 1-4 first and ask the remainder in a later round.
56745
+
56746
+ Writing the three fields \u2014 they must each carry DIFFERENT information:
56747
+ - \`header\` names the dimension being decided ("Database", "Auth method"). It is not a shortened copy of the question.
56748
+ - \`label\` names the choice ("PostgreSQL"). It is not a restatement of the question.
56749
+ - \`description\` says what happens if this is picked and what it costs \u2014 the trade-off, limitation or consequence the label does not already convey. It is the only field with room to be genuinely informative, so it must not paraphrase the label back to the user.
56750
+
56751
+ A description that can be derived from reading the label is wasted space and makes the menu harder to use, not easier. Before writing one, ask: does this tell the user something they could not already see? If not, replace it with the thing that actually distinguishes this option from its neighbours.
56752
+
56753
+ Bad \u2014 description restates the label:
56754
+ question: "Which database should we use?"
56755
+ header: "Which DB" (repeats the question)
56756
+ label: "Use PostgreSQL" description: "Use PostgreSQL as the database."
56757
+
56758
+ Good \u2014 each field adds something:
56759
+ question: "Which database should we use?"
56760
+ header: "Database"
56761
+ label: "PostgreSQL" description: "Relational with strong consistency; needs a running server and a migration step."
56762
+ label: "SQLite" description: "Zero setup, single file; no concurrent writers, so it will not survive multiple workers."
56763
+
56764
+ Plan mode note: In plan mode, use this tool to clarify requirements or choose between approaches BEFORE finalizing your plan. Do NOT use this tool to ask "Is my plan ready?" or "Should I proceed?" - use ${EXIT_PLAN_MODE_TOOL_NAME} for plan approval. IMPORTANT: Do not reference "the plan" in your questions (e.g., "Do you have feedback about the plan?", "Does the plan look good?") because the user cannot see the plan in the UI until you call ${EXIT_PLAN_MODE_TOOL_NAME}. If you need plan approval, use ${EXIT_PLAN_MODE_TOOL_NAME} instead.
56765
+ `;
56766
+ });
56767
+
56768
+ // src/tools/AskUserQuestionTool/normalization.ts
56769
+ function objectValue(value) {
56770
+ return value && typeof value === "object" && !Array.isArray(value) ? value : null;
56771
+ }
56772
+ function sliceWithoutSplittingSurrogate(value, max) {
56773
+ let result = value.slice(0, max);
56774
+ if (result.length > 0 && /[\uD800-\uDBFF]/.test(result[result.length - 1])) {
56775
+ result = result.slice(0, -1);
56776
+ }
56777
+ return result;
56778
+ }
56779
+ function headerFromQuestion(question, index2) {
56780
+ const word = question.replace(/[^A-Za-z0-9]+/g, " ").split(/\s+/).find((part) => part && !HEADER_STOP_WORDS.has(part.toLowerCase())) ?? `Question ${index2 + 1}`;
56781
+ return sliceWithoutSplittingSurrogate(word, ASK_USER_QUESTION_TOOL_CHIP_WIDTH);
56782
+ }
56783
+ function normalizeQuestionHeader(header, question, index2) {
56784
+ const trimmed = header.trim();
56785
+ if (trimmed.length <= ASK_USER_QUESTION_TOOL_CHIP_WIDTH || trimmed.length > MAX_RECOVERABLE_HEADER_CHARS || CONTROL_OR_ANSI_RE.test(trimmed)) {
56786
+ return trimmed;
56787
+ }
56788
+ const firstWord = trimmed.split(/\s+/)[0] ?? "";
56789
+ const compact = sliceWithoutSplittingSurrogate(firstWord, ASK_USER_QUESTION_TOOL_CHIP_WIDTH);
56790
+ return compact || headerFromQuestion(question, index2);
56791
+ }
56792
+ function normalizeAskQuestionHeaders(value) {
56793
+ if (!Array.isArray(value.questions))
56794
+ return value;
56795
+ let changed = false;
56796
+ const questions = value.questions.map((candidate, index2) => {
56797
+ const question = objectValue(candidate);
56798
+ if (!question || typeof question.header !== "string" || typeof question.question !== "string") {
56799
+ return candidate;
56800
+ }
56801
+ const header = normalizeQuestionHeader(question.header, question.question, index2);
56802
+ if (header === question.header)
56803
+ return candidate;
56804
+ changed = true;
56805
+ return { ...question, header };
56806
+ });
56807
+ return changed ? { ...value, questions } : value;
56808
+ }
56809
+ var MAX_RECOVERABLE_HEADER_CHARS = 500, CONTROL_OR_ANSI_RE, HEADER_STOP_WORDS;
56810
+ var init_normalization = __esm(() => {
56811
+ init_prompt();
56812
+ CONTROL_OR_ANSI_RE = /[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]|\u001B\[/;
56813
+ HEADER_STOP_WORDS = new Set([
56814
+ "a",
56815
+ "about",
56816
+ "also",
56817
+ "an",
56818
+ "are",
56819
+ "be",
56820
+ "do",
56821
+ "does",
56822
+ "for",
56823
+ "is",
56824
+ "or",
56825
+ "should",
56826
+ "support",
56827
+ "that",
56828
+ "the",
56829
+ "this",
56830
+ "to",
56831
+ "want",
56832
+ "what",
56833
+ "which",
56834
+ "with",
56835
+ "without",
56836
+ "you"
56837
+ ]);
56838
+ });
56839
+
56696
56840
  // src/cli/transports/kimiToolCalls.ts
56697
56841
  import { randomUUID as randomUUID2 } from "crypto";
56698
56842
  function parsedToolCallId(prefix, index2) {
@@ -56918,38 +57062,9 @@ function removableLineRange(text, start, end) {
56918
57062
  return null;
56919
57063
  return { prefixEnd: lineStart, end: end + after[0].length };
56920
57064
  }
56921
- function objectValue(value) {
57065
+ function objectValue2(value) {
56922
57066
  return value && typeof value === "object" && !Array.isArray(value) ? value : null;
56923
57067
  }
56924
- function headerFromQuestion(question, index2) {
56925
- const stopWords = new Set([
56926
- "a",
56927
- "about",
56928
- "also",
56929
- "an",
56930
- "are",
56931
- "be",
56932
- "do",
56933
- "does",
56934
- "for",
56935
- "is",
56936
- "or",
56937
- "should",
56938
- "support",
56939
- "that",
56940
- "the",
56941
- "this",
56942
- "to",
56943
- "want",
56944
- "what",
56945
- "which",
56946
- "with",
56947
- "without",
56948
- "you"
56949
- ]);
56950
- const word = question.replace(/[^A-Za-z0-9]+/g, " ").split(/\s+/).find((part) => part && !stopWords.has(part.toLowerCase())) ?? `Question ${index2 + 1}`;
56951
- return word.slice(0, 12);
56952
- }
56953
57068
  function stringField(input, names) {
56954
57069
  for (const name of names) {
56955
57070
  const value = input[name];
@@ -56959,7 +57074,7 @@ function stringField(input, names) {
56959
57074
  return "";
56960
57075
  }
56961
57076
  function normalizeQuestionOption(value) {
56962
- const option = objectValue(value);
57077
+ const option = objectValue2(value);
56963
57078
  if (!option)
56964
57079
  return null;
56965
57080
  if (!sameKeys(option, ["label"], ["description", "preview"]))
@@ -56979,7 +57094,7 @@ function normalizeQuestionOption(value) {
56979
57094
  };
56980
57095
  }
56981
57096
  function normalizeQuestion(value, index2) {
56982
- const question = objectValue(value);
57097
+ const question = objectValue2(value);
56983
57098
  if (!question)
56984
57099
  return null;
56985
57100
  const questionText = stringField(question, [
@@ -57001,7 +57116,7 @@ function normalizeQuestion(value, index2) {
57001
57116
  const options = normalizedOptions;
57002
57117
  if (options.length < 2 || options.length > 8)
57003
57118
  return null;
57004
- const header = typeof question.header === "string" && question.header.trim() ? question.header.trim() : headerFromQuestion(questionText, index2);
57119
+ const header = typeof question.header === "string" && question.header.trim() ? normalizeQuestionHeader(question.header, questionText, index2) : headerFromQuestion(questionText, index2);
57005
57120
  return {
57006
57121
  question: questionText,
57007
57122
  header,
@@ -57018,7 +57133,7 @@ function normalizeAskUserQuestionInput(input) {
57018
57133
  return null;
57019
57134
  return {
57020
57135
  questions,
57021
- ...objectValue(input.metadata) ? { metadata: input.metadata } : {}
57136
+ ...objectValue2(input.metadata) ? { metadata: input.metadata } : {}
57022
57137
  };
57023
57138
  }
57024
57139
  function stringArray(value) {
@@ -57084,7 +57199,7 @@ function normalizeTaskUpdateInput(input) {
57084
57199
  "metadata"
57085
57200
  ];
57086
57201
  const allowedStatuses = new Set(["pending", "in_progress", "completed", "deleted"]);
57087
- if (!sameKeys(input, ["taskId"], updateFields) || typeof input.taskId !== "string" || !updateFields.some((field) => Object.prototype.hasOwnProperty.call(input, field)) || input.subject !== undefined && typeof input.subject !== "string" || input.description !== undefined && typeof input.description !== "string" || input.activeForm !== undefined && typeof input.activeForm !== "string" || input.status !== undefined && (typeof input.status !== "string" || !allowedStatuses.has(input.status)) || input.addBlocks !== undefined && !stringArray(input.addBlocks) || input.addBlockedBy !== undefined && !stringArray(input.addBlockedBy) || input.owner !== undefined && typeof input.owner !== "string" || input.metadata !== undefined && !objectValue(input.metadata)) {
57202
+ if (!sameKeys(input, ["taskId"], updateFields) || typeof input.taskId !== "string" || !updateFields.some((field) => Object.prototype.hasOwnProperty.call(input, field)) || input.subject !== undefined && typeof input.subject !== "string" || input.description !== undefined && typeof input.description !== "string" || input.activeForm !== undefined && typeof input.activeForm !== "string" || input.status !== undefined && (typeof input.status !== "string" || !allowedStatuses.has(input.status)) || input.addBlocks !== undefined && !stringArray(input.addBlocks) || input.addBlockedBy !== undefined && !stringArray(input.addBlockedBy) || input.owner !== undefined && typeof input.owner !== "string" || input.metadata !== undefined && !objectValue2(input.metadata)) {
57088
57203
  return null;
57089
57204
  }
57090
57205
  return input;
@@ -57101,10 +57216,11 @@ function maybeBareJsonToolCall(text, availableToolNames, index2) {
57101
57216
  if (!hasTool(availableToolNames, name)) {
57102
57217
  return null;
57103
57218
  }
57219
+ const wrappedInput = input.input;
57104
57220
  return {
57105
57221
  id: parsedToolCallId("bare", index2),
57106
57222
  name,
57107
- input: input.input
57223
+ input: name === "AskUserQuestion" ? normalizeAskQuestionHeaders(wrappedInput) : wrappedInput
57108
57224
  };
57109
57225
  }
57110
57226
  if (hasTool(availableToolNames, "TaskCreate") && sameKeys(input, ["subject", "description"], ["activeForm", "metadata"]) && typeof input.subject === "string" && typeof input.description === "string" && (input.activeForm === undefined || typeof input.activeForm === "string") && (input.metadata === undefined || typeof input.metadata === "object" && input.metadata !== null && !Array.isArray(input.metadata))) {
@@ -57308,6 +57424,7 @@ function synthesizeKimiToolCalls(message) {
57308
57424
  var SECTION_RE, CALL_RE, STRAY_RE, KimiToolCallParseError;
57309
57425
  var init_kimiToolCalls = __esm(() => {
57310
57426
  init_json();
57427
+ init_normalization();
57311
57428
  SECTION_RE = /<\|tool_calls_section_begin\|>([\s\S]*?)<\|tool_calls_section_end\|>/g;
57312
57429
  CALL_RE = /<\|tool_call_begin\|>([\s\S]*?)<\|tool_call_argument_begin\|>([\s\S]*?)<\|tool_call_end\|>/g;
57313
57430
  STRAY_RE = /<\|tool_calls?_section_(?:begin|end)\|>|<\|tool_call_(?:begin|end|argument_begin)\|>/g;
@@ -75444,7 +75561,7 @@ var init_auth = __esm(() => {
75444
75561
 
75445
75562
  // src/utils/userAgent.ts
75446
75563
  function getURCodeUserAgent() {
75447
- return `ur/${"1.65.12"}`;
75564
+ return `ur/${"1.65.13"}`;
75448
75565
  }
75449
75566
 
75450
75567
  // src/utils/workloadContext.ts
@@ -75466,7 +75583,7 @@ function getUserAgent() {
75466
75583
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
75467
75584
  const workload = getWorkload();
75468
75585
  const workloadSuffix = workload ? `, workload/${workload}` : "";
75469
- return `ur-cli/${"1.65.12"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
75586
+ return `ur-cli/${"1.65.13"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
75470
75587
  }
75471
75588
  function getMCPUserAgent() {
75472
75589
  const parts = [];
@@ -75480,7 +75597,7 @@ function getMCPUserAgent() {
75480
75597
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
75481
75598
  }
75482
75599
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
75483
- return `ur/${"1.65.12"}${suffix}`;
75600
+ return `ur/${"1.65.13"}${suffix}`;
75484
75601
  }
75485
75602
  function getWebFetchUserAgent() {
75486
75603
  return `UR-User (${getURCodeUserAgent()})`;
@@ -75618,7 +75735,7 @@ var init_user = __esm(() => {
75618
75735
  deviceId,
75619
75736
  sessionId: getSessionId(),
75620
75737
  email: getEmail(),
75621
- appVersion: "1.65.12",
75738
+ appVersion: "1.65.13",
75622
75739
  platform: getHostPlatformForAnalytics(),
75623
75740
  organizationUuid,
75624
75741
  accountUuid,
@@ -83818,7 +83935,7 @@ var init_metadata = __esm(() => {
83818
83935
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
83819
83936
  WHITESPACE_REGEX = /\s+/;
83820
83937
  getVersionBase = memoize_default(() => {
83821
- const match = "1.65.12".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
83938
+ const match = "1.65.13".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
83822
83939
  return match ? match[0] : undefined;
83823
83940
  });
83824
83941
  buildEnvContext = memoize_default(async () => {
@@ -83858,7 +83975,7 @@ var init_metadata = __esm(() => {
83858
83975
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
83859
83976
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
83860
83977
  isURAiAuth: isURAISubscriber(),
83861
- version: "1.65.12",
83978
+ version: "1.65.13",
83862
83979
  versionBase: getVersionBase(),
83863
83980
  buildTime: "",
83864
83981
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -84528,7 +84645,7 @@ function initialize1PEventLogging() {
84528
84645
  const platform2 = getPlatform();
84529
84646
  const attributes = {
84530
84647
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
84531
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.65.12"
84648
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.65.13"
84532
84649
  };
84533
84650
  if (platform2 === "wsl") {
84534
84651
  const wslVersion = getWslVersion();
@@ -84556,7 +84673,7 @@ function initialize1PEventLogging() {
84556
84673
  })
84557
84674
  ]
84558
84675
  });
84559
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.65.12");
84676
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.65.13");
84560
84677
  }
84561
84678
  async function reinitialize1PEventLoggingIfConfigChanged() {
84562
84679
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -86616,7 +86733,7 @@ var init_constants2 = __esm(() => {
86616
86733
  var TASK_OUTPUT_TOOL_NAME = "TaskOutput";
86617
86734
 
86618
86735
  // src/tools/TaskStopTool/prompt.ts
86619
- var TASK_STOP_TOOL_NAME = "TaskStop", DESCRIPTION = `
86736
+ var TASK_STOP_TOOL_NAME = "TaskStop", DESCRIPTION2 = `
86620
86737
  - Stops a running background task by its ID
86621
86738
  - Takes a task_id parameter identifying the task to stop
86622
86739
  - Returns a success or failure status
@@ -94444,7 +94561,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
94444
94561
  function formatA2AAgentCard(options = {}, pretty = true) {
94445
94562
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
94446
94563
  }
94447
- var urVersion = "1.65.12", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
94564
+ var urVersion = "1.65.13", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
94448
94565
  var init_trends = __esm(() => {
94449
94566
  init_a2aCardSignature();
94450
94567
  coverage = [
@@ -97247,7 +97364,7 @@ function getAttributionHeader(fingerprint) {
97247
97364
  if (!isAttributionHeaderEnabled()) {
97248
97365
  return "";
97249
97366
  }
97250
- const version2 = `${"1.65.12"}.${fingerprint}`;
97367
+ const version2 = `${"1.65.13"}.${fingerprint}`;
97251
97368
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
97252
97369
  const cch = "";
97253
97370
  const workload = getWorkload();
@@ -97688,7 +97805,7 @@ function getDescription() {
97688
97805
  `;
97689
97806
  }
97690
97807
  var GREP_TOOL_NAME = "Grep";
97691
- var init_prompt = __esm(() => {
97808
+ var init_prompt2 = __esm(() => {
97692
97809
  init_constants2();
97693
97810
  });
97694
97811
 
@@ -97753,8 +97870,8 @@ ${lineFormat}
97753
97870
  - You will regularly be asked to read screenshots. If the user provides a path to a screenshot, ALWAYS use this tool to view the file at the path. This tool will work with all temporary file paths.
97754
97871
  - If you read a file that exists but has empty contents you will receive a system reminder warning in place of file contents.`;
97755
97872
  }
97756
- var FILE_READ_TOOL_NAME = "Read", FILE_UNCHANGED_STUB = "File unchanged since last read. The content from the earlier Read tool_result in this conversation is still current \u2014 refer to that instead of re-reading.", MAX_LINES_TO_READ = 2000, DESCRIPTION2 = "Read a file from the local filesystem.", LINE_FORMAT_INSTRUCTION = "- Results are returned using cat -n format, with line numbers starting at 1", OFFSET_INSTRUCTION_DEFAULT = "- You can optionally specify a line offset and limit (especially handy for long files), but it's recommended to read the whole file by not providing these parameters", OFFSET_INSTRUCTION_TARGETED = "- When you already know which part of the file you need, only read that part. This can be important for larger files.";
97757
- var init_prompt2 = __esm(() => {
97873
+ var FILE_READ_TOOL_NAME = "Read", FILE_UNCHANGED_STUB = "File unchanged since last read. The content from the earlier Read tool_result in this conversation is still current \u2014 refer to that instead of re-reading.", MAX_LINES_TO_READ = 2000, DESCRIPTION3 = "Read a file from the local filesystem.", LINE_FORMAT_INSTRUCTION = "- Results are returned using cat -n format, with line numbers starting at 1", OFFSET_INSTRUCTION_DEFAULT = "- You can optionally specify a line offset and limit (especially handy for long files), but it's recommended to read the whole file by not providing these parameters", OFFSET_INSTRUCTION_TARGETED = "- When you already know which part of the file you need, only read that part. This can be important for larger files.";
97874
+ var init_prompt3 = __esm(() => {
97758
97875
  init_pdfUtils();
97759
97876
  });
97760
97877
 
@@ -97777,12 +97894,12 @@ Usage:
97777
97894
  - Only use emojis if the user explicitly requests it. Avoid writing emojis to files unless asked.`;
97778
97895
  }
97779
97896
  var FILE_WRITE_TOOL_NAME = "Write";
97780
- var init_prompt3 = __esm(() => {
97781
- init_prompt2();
97897
+ var init_prompt4 = __esm(() => {
97898
+ init_prompt3();
97782
97899
  });
97783
97900
 
97784
97901
  // src/tools/GlobTool/prompt.ts
97785
- var GLOB_TOOL_NAME = "Glob", DESCRIPTION3 = `- Fast file pattern matching tool that works with any codebase size
97902
+ var GLOB_TOOL_NAME = "Glob", DESCRIPTION4 = `- Fast file pattern matching tool that works with any codebase size
97786
97903
  - Supports glob patterns like "**/*.js" or "src/**/*.ts"
97787
97904
  - Returns matching file paths sorted by modification time
97788
97905
  - Use this tool when you need to find files by name patterns
@@ -97803,9 +97920,9 @@ var REPL_TOOL_NAME = "REPL", REPL_ONLY_TOOLS;
97803
97920
  var init_constants4 = __esm(() => {
97804
97921
  init_envUtils();
97805
97922
  init_constants2();
97806
- init_prompt2();
97807
97923
  init_prompt3();
97808
- init_prompt();
97924
+ init_prompt4();
97925
+ init_prompt2();
97809
97926
  REPL_ONLY_TOOLS = new Set([
97810
97927
  FILE_READ_TOOL_NAME,
97811
97928
  FILE_WRITE_TOOL_NAME,
@@ -114639,28 +114756,28 @@ function getEventPriority(eventType) {
114639
114756
  case "focus":
114640
114757
  case "blur":
114641
114758
  case "paste":
114642
- return import_constants11.DiscreteEventPriority;
114759
+ return import_constants12.DiscreteEventPriority;
114643
114760
  case "resize":
114644
114761
  case "scroll":
114645
114762
  case "mousemove":
114646
- return import_constants11.ContinuousEventPriority;
114763
+ return import_constants12.ContinuousEventPriority;
114647
114764
  default:
114648
- return import_constants11.DefaultEventPriority;
114765
+ return import_constants12.DefaultEventPriority;
114649
114766
  }
114650
114767
  }
114651
114768
 
114652
114769
  class Dispatcher {
114653
114770
  currentEvent = null;
114654
- currentUpdatePriority = import_constants11.DefaultEventPriority;
114771
+ currentUpdatePriority = import_constants12.DefaultEventPriority;
114655
114772
  discreteUpdates = null;
114656
114773
  resolveEventPriority() {
114657
- if (this.currentUpdatePriority !== import_constants11.NoEventPriority) {
114774
+ if (this.currentUpdatePriority !== import_constants12.NoEventPriority) {
114658
114775
  return this.currentUpdatePriority;
114659
114776
  }
114660
114777
  if (this.currentEvent) {
114661
114778
  return getEventPriority(this.currentEvent.type);
114662
114779
  }
114663
- return import_constants11.DefaultEventPriority;
114780
+ return import_constants12.DefaultEventPriority;
114664
114781
  }
114665
114782
  dispatch(target, event) {
114666
114783
  const previousEvent = this.currentEvent;
@@ -114685,18 +114802,18 @@ class Dispatcher {
114685
114802
  dispatchContinuous(target, event) {
114686
114803
  const previousPriority = this.currentUpdatePriority;
114687
114804
  try {
114688
- this.currentUpdatePriority = import_constants11.ContinuousEventPriority;
114805
+ this.currentUpdatePriority = import_constants12.ContinuousEventPriority;
114689
114806
  return this.dispatch(target, event);
114690
114807
  } finally {
114691
114808
  this.currentUpdatePriority = previousPriority;
114692
114809
  }
114693
114810
  }
114694
114811
  }
114695
- var import_constants11;
114812
+ var import_constants12;
114696
114813
  var init_dispatcher = __esm(() => {
114697
114814
  init_log2();
114698
114815
  init_event_handlers();
114699
- import_constants11 = __toESM(require_constants2(), 1);
114816
+ import_constants12 = __toESM(require_constants2(), 1);
114700
114817
  });
114701
114818
 
114702
114819
  // src/ink/events/terminal-event.ts
@@ -123497,7 +123614,7 @@ function applyPositionedHighlight(screen, stylePool, positions, rowOffset, curre
123497
123614
  }
123498
123615
  return true;
123499
123616
  }
123500
- var import_constants13, timing;
123617
+ var import_constants14, timing;
123501
123618
  var init_render_to_screen = __esm(() => {
123502
123619
  init_debug();
123503
123620
  init_dom();
@@ -123506,7 +123623,7 @@ var init_render_to_screen = __esm(() => {
123506
123623
  init_reconciler();
123507
123624
  init_render_node_to_output();
123508
123625
  init_screen();
123509
- import_constants13 = __toESM(require_constants2(), 1);
123626
+ import_constants14 = __toESM(require_constants2(), 1);
123510
123627
  timing = { reconcile: 0, yoga: 0, paint: 0, scan: 0, calls: 0 };
123511
123628
  });
123512
123629
 
@@ -123816,7 +123933,7 @@ class Ink {
123816
123933
  };
123817
123934
  }
123818
123935
  };
123819
- this.container = reconciler_default.createContainer(this.rootNode, import_constants14.ConcurrentRoot, null, false, null, "id", noop_default, noop_default, noop_default, noop_default);
123936
+ this.container = reconciler_default.createContainer(this.rootNode, import_constants15.ConcurrentRoot, null, false, null, "id", noop_default, noop_default, noop_default, noop_default);
123820
123937
  if (false) {}
123821
123938
  }
123822
123939
  handleResume = () => {
@@ -124629,7 +124746,7 @@ function drainStdin(stdin = process.stdin) {
124629
124746
  }
124630
124747
  }
124631
124748
  }
124632
- var import_constants14, jsx_dev_runtime8, ALT_SCREEN_ANCHOR_CURSOR, CURSOR_HOME_PATCH, ERASE_THEN_HOME_PATCH, CONSOLE_STDOUT_METHODS, CONSOLE_STDERR_METHODS;
124749
+ var import_constants15, jsx_dev_runtime8, ALT_SCREEN_ANCHOR_CURSOR, CURSOR_HOME_PATCH, ERASE_THEN_HOME_PATCH, CONSOLE_STDOUT_METHODS, CONSOLE_STDERR_METHODS;
124633
124750
  var init_ink = __esm(() => {
124634
124751
  init_noop();
124635
124752
  init_throttle2();
@@ -124661,7 +124778,7 @@ var init_ink = __esm(() => {
124661
124778
  init_dec();
124662
124779
  init_osc();
124663
124780
  init_useTerminalNotification();
124664
- import_constants14 = __toESM(require_constants2(), 1);
124781
+ import_constants15 = __toESM(require_constants2(), 1);
124665
124782
  jsx_dev_runtime8 = __toESM(require_jsx_dev_runtime(), 1);
124666
124783
  ALT_SCREEN_ANCHOR_CURSOR = Object.freeze({
124667
124784
  x: 0,
@@ -129929,7 +130046,7 @@ A small ${species} named ${name} sits beside the user's input box and occasional
129929
130046
 
129930
130047
  When the user addresses ${name} directly (by name), its bubble will answer. Your job in that moment is to stay out of the way: respond in ONE line or less, or just answer any part of the message meant for you. Don't explain that you're not ${name} \u2014 they know. Don't narrate what ${name} might say \u2014 the bubble handles that.`;
129931
130048
  }
129932
- var init_prompt4 = __esm(() => {
130049
+ var init_prompt5 = __esm(() => {
129933
130050
  init_config();
129934
130051
  init_companion();
129935
130052
  });
@@ -138611,7 +138728,7 @@ ${prompt}
138611
138728
  ${guidelines}
138612
138729
  `;
138613
138730
  }
138614
- var WEB_FETCH_TOOL_NAME = "WebFetch", DESCRIPTION4 = `
138731
+ var WEB_FETCH_TOOL_NAME = "WebFetch", DESCRIPTION5 = `
138615
138732
  - Fetches content from a specified URL and processes it using an AI model
138616
138733
  - Takes a URL and a prompt as input
138617
138734
  - Fetches the URL content, converts HTML to markdown
@@ -139137,7 +139254,7 @@ var init_sandbox_adapter = __esm(() => {
139137
139254
  init_constants();
139138
139255
  init_managedPath();
139139
139256
  init_settings2();
139140
- init_prompt2();
139257
+ init_prompt3();
139141
139258
  init_errors();
139142
139259
  init_filesystem();
139143
139260
  init_ripgrep();
@@ -144397,8 +144514,8 @@ var init_loadPluginAgents = __esm(() => {
144397
144514
  init_memoize();
144398
144515
  init_paths();
144399
144516
  init_agentMemory();
144400
- init_prompt2();
144401
144517
  init_prompt3();
144518
+ init_prompt4();
144402
144519
  init_debug();
144403
144520
  init_effort();
144404
144521
  init_frontmatterParser();
@@ -144584,7 +144701,7 @@ IMPORTANT - Use the correct year in search queries:
144584
144701
  `;
144585
144702
  }
144586
144703
  var WEB_SEARCH_TOOL_NAME = "WebSearch";
144587
- var init_prompt5 = __esm(() => {
144704
+ var init_prompt6 = __esm(() => {
144588
144705
  init_common2();
144589
144706
  });
144590
144707
 
@@ -144657,9 +144774,9 @@ function getFeedbackGuideline() {
144657
144774
  }
144658
144775
  var UR_CODE_DOCS_MAP_URL = "https://docs.ur.dev/docs/en/ur_docs_map.md", CDP_DOCS_MAP_URL = "https://docs.claude.com/llms.txt", UR_CODE_GUIDE_AGENT_TYPE = "ur-guide", UR_CODE_GUIDE_AGENT;
144659
144776
  var init_urCodeGuideAgent = __esm(() => {
144777
+ init_prompt3();
144660
144778
  init_prompt2();
144661
- init_prompt();
144662
- init_prompt5();
144779
+ init_prompt6();
144663
144780
  init_auth();
144664
144781
  init_embeddedTools();
144665
144782
  init_settings2();
@@ -144745,9 +144862,6 @@ When answering questions, consider these configured features and proactively sug
144745
144862
  };
144746
144863
  });
144747
144864
 
144748
- // src/tools/ExitPlanModeTool/constants.ts
144749
- var EXIT_PLAN_MODE_TOOL_NAME = "ExitPlanMode", EXIT_PLAN_MODE_V2_TOOL_NAME = "ExitPlanMode";
144750
-
144751
144865
  // src/tools/AgentTool/built-in/exploreAgent.ts
144752
144866
  function getExploreSystemPrompt() {
144753
144867
  const embedded = hasEmbeddedSearchTools();
@@ -144790,9 +144904,9 @@ Complete the user's search request efficiently and report your findings clearly.
144790
144904
  }
144791
144905
  var EXPLORE_AGENT_MIN_QUERIES = 3, EXPLORE_WHEN_TO_USE = 'Fast agent specialized for exploring codebases. Use this when you need to quickly find files by patterns (eg. "src/components/**/*.tsx"), search code for keywords (eg. "API endpoints"), or answer questions about the codebase (eg. "how do API endpoints work?"). When calling this agent, specify the desired thoroughness level: "quick" for basic searches, "medium" for moderate exploration, or "very thorough" for comprehensive analysis across multiple locations and naming conventions.', EXPLORE_AGENT;
144792
144906
  var init_exploreAgent = __esm(() => {
144793
- init_prompt2();
144794
144907
  init_prompt3();
144795
- init_prompt();
144908
+ init_prompt4();
144909
+ init_prompt2();
144796
144910
  init_embeddedTools();
144797
144911
  init_constants2();
144798
144912
  EXPLORE_AGENT = {
@@ -144957,9 +145071,9 @@ REMEMBER: You can ONLY explore and plan. You CANNOT and MUST NOT write, edit, or
144957
145071
  var PLAN_AGENT;
144958
145072
  var init_planAgent = __esm(() => {
144959
145073
  init_planImplementationContract();
144960
- init_prompt2();
144961
145074
  init_prompt3();
144962
- init_prompt();
145075
+ init_prompt4();
145076
+ init_prompt2();
144963
145077
  init_embeddedTools();
144964
145078
  init_constants2();
144965
145079
  init_exploreAgent();
@@ -145130,7 +145244,7 @@ var init_statuslineSetup = __esm(() => {
145130
145244
  // src/tools/AgentTool/built-in/verificationAgent.ts
145131
145245
  var VERIFICATION_SYSTEM_PROMPT, VERIFICATION_WHEN_TO_USE, VERIFICATION_AGENT;
145132
145246
  var init_verificationAgent = __esm(() => {
145133
- init_prompt3();
145247
+ init_prompt4();
145134
145248
  init_constants2();
145135
145249
  VERIFICATION_SYSTEM_PROMPT = `You are a verification specialist. Your job is not to confirm the implementation works \u2014 it's to try to break it.
145136
145250
 
@@ -145606,8 +145720,8 @@ var init_loadAgentsDir = __esm(() => {
145606
145720
  init_loadPluginAgents();
145607
145721
  init_types2();
145608
145722
  init_slowOperations();
145609
- init_prompt2();
145610
145723
  init_prompt3();
145724
+ init_prompt4();
145611
145725
  init_agentColorManager();
145612
145726
  init_agentMemory();
145613
145727
  init_agentMemorySnapshot();
@@ -145828,7 +145942,7 @@ async function getSkillInfo(cwd2) {
145828
145942
  }
145829
145943
  }
145830
145944
  var SKILL_BUDGET_CONTEXT_PERCENT = 0.01, CHARS_PER_TOKEN = 4, DEFAULT_CHAR_BUDGET = 8000, MAX_LISTING_DESC_CHARS = 250, MIN_DESC_LENGTH = 20, getPrompt;
145831
- var init_prompt6 = __esm(() => {
145945
+ var init_prompt7 = __esm(() => {
145832
145946
  init_lodash();
145833
145947
  init_commands3();
145834
145948
  init_xml();
@@ -145943,7 +146057,7 @@ Query forms:
145943
146057
  - "select:Read,Edit,Grep" \u2014 fetch these exact tools by name
145944
146058
  - "notebook jupyter" \u2014 keyword search, up to max_results best matches
145945
146059
  - "+slack send" \u2014 require "slack" in the name, rank by remaining terms`;
145946
- var init_prompt7 = __esm(() => {
146060
+ var init_prompt8 = __esm(() => {
145947
146061
  init_state();
145948
146062
  init_growthbook();
145949
146063
  init_constants2();
@@ -146978,10 +147092,10 @@ function maybeTimeBasedMicrocompact(messages, querySource) {
146978
147092
  var TIME_BASED_MC_CLEARED_MESSAGE = "[Old tool result content cleared]", IMAGE_MAX_TOKEN_SIZE = 2000, COMPACTABLE_TOOLS, cachedMCState = null, pendingCacheEdits = null;
146979
147093
  var init_microCompact = __esm(() => {
146980
147094
  init_toolResultPruningConfig();
146981
- init_prompt2();
146982
147095
  init_prompt3();
146983
- init_prompt();
146984
- init_prompt5();
147096
+ init_prompt4();
147097
+ init_prompt2();
147098
+ init_prompt6();
146985
147099
  init_debug();
146986
147100
  init_shellToolUtils();
146987
147101
  init_slowOperations();
@@ -152202,7 +152316,7 @@ var init_ToolSearchTool = __esm(() => {
152202
152316
  init_debug();
152203
152317
  init_stringUtils();
152204
152318
  init_toolSearch();
152205
- init_prompt7();
152319
+ init_prompt8();
152206
152320
  inputSchema = lazySchema(() => exports_external.object({
152207
152321
  query: exports_external.string().describe('Query to find deferred tools. Use "select:<tool_name>" for direct selection, or keywords to search.'),
152208
152322
  max_results: exports_external.number().optional().default(5).describe("Maximum number of results to return (default: 5)")
@@ -154468,7 +154582,7 @@ var init_headlessProfiler = __esm(() => {
154468
154582
 
154469
154583
  // src/tools/SleepTool/prompt.ts
154470
154584
  var SLEEP_TOOL_NAME = "Sleep", SLEEP_TOOL_PROMPT;
154471
- var init_prompt8 = __esm(() => {
154585
+ var init_prompt9 = __esm(() => {
154472
154586
  init_xml();
154473
154587
  SLEEP_TOOL_PROMPT = `Wait for a specified duration. The user can interrupt the sleep at any time.
154474
154588
 
@@ -155120,7 +155234,7 @@ var init_projectSafety = __esm(() => {
155120
155234
  function getInstruments() {
155121
155235
  if (instruments)
155122
155236
  return instruments;
155123
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.65.12");
155237
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.65.13");
155124
155238
  instruments = {
155125
155239
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
155126
155240
  description: "GenAI operation duration.",
@@ -155218,7 +155332,7 @@ function genAiAgentAttributes() {
155218
155332
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
155219
155333
  "gen_ai.provider.name": "ur",
155220
155334
  "gen_ai.agent.name": "UR-Nexus",
155221
- "gen_ai.agent.version": "1.65.12"
155335
+ "gen_ai.agent.version": "1.65.13"
155222
155336
  };
155223
155337
  }
155224
155338
  function genAiWorkflowAttributes(workflowName) {
@@ -155234,7 +155348,7 @@ function genAiWorkflowAttributes(workflowName) {
155234
155348
  function startGenAiWorkflowSpan(workflowName) {
155235
155349
  const attributes = genAiWorkflowAttributes(workflowName);
155236
155350
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
155237
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.65.12").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
155351
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.65.13").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
155238
155352
  }
155239
155353
  function endGenAiWorkflowSpan(span, options2 = {}) {
155240
155354
  try {
@@ -155272,7 +155386,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
155272
155386
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
155273
155387
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
155274
155388
  }
155275
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.65.12").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
155389
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.65.13").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
155276
155390
  }
155277
155391
  function endGenAiMemorySpan(span, options2 = {}) {
155278
155392
  try {
@@ -248755,7 +248869,7 @@ function getTelemetryAttributes() {
248755
248869
  attributes["session.id"] = sessionId;
248756
248870
  }
248757
248871
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
248758
- attributes["app.version"] = "1.65.12";
248872
+ attributes["app.version"] = "1.65.13";
248759
248873
  }
248760
248874
  const oauthAccount = getOauthAccountInfo();
248761
248875
  if (oauthAccount) {
@@ -257728,8 +257842,8 @@ var init_queryHelpers = __esm(() => {
257728
257842
  init_state();
257729
257843
  init_toolOrchestration();
257730
257844
  init_Tool();
257731
- init_prompt2();
257732
257845
  init_prompt3();
257846
+ init_prompt4();
257733
257847
  init_debug();
257734
257848
  init_envUtils();
257735
257849
  init_errors();
@@ -264949,75 +265063,6 @@ var init_promptCategory = __esm(() => {
264949
265063
  // src/tools/EnterPlanModeTool/constants.ts
264950
265064
  var ENTER_PLAN_MODE_TOOL_NAME = "EnterPlanMode";
264951
265065
 
264952
- // src/tools/AskUserQuestionTool/prompt.ts
264953
- var ASK_USER_QUESTION_TOOL_NAME = "AskUserQuestion", ASK_USER_QUESTION_TOOL_CHIP_WIDTH = 12, DESCRIPTION5 = "Asks the user multiple choice questions to gather information, clarify ambiguity, understand preferences, make decisions or offer them choices. This is the required way to present the user with a choice: whenever you would otherwise end a message by asking the user to pick between options or decide a direction, call this tool instead of asking in plain text, so the user gets a selectable menu rather than having to type a free-form answer.", PREVIEW_FEATURE_PROMPT, ASK_USER_QUESTION_TOOL_PROMPT;
264954
- var init_prompt9 = __esm(() => {
264955
- PREVIEW_FEATURE_PROMPT = {
264956
- markdown: `
264957
- Preview feature:
264958
- Use the optional \`preview\` field on options when presenting concrete artifacts that users need to visually compare:
264959
- - ASCII mockups of UI layouts or components
264960
- - Code snippets showing different implementations
264961
- - Diagram variations
264962
- - Configuration examples
264963
-
264964
- Preview content is rendered as markdown in a monospace box. Multi-line text with newlines is supported. When any option has a preview, the UI switches to a side-by-side layout with a vertical option list on the left and preview on the right. Do not use previews for simple preference questions where labels and descriptions suffice. Note: previews are only supported for single-select questions (not multiSelect).
264965
- `,
264966
- html: `
264967
- Preview feature:
264968
- Use the optional \`preview\` field on options when presenting concrete artifacts that users need to visually compare:
264969
- - Plain-text or ASCII mockups of UI layouts or components
264970
- - Inert code snippets showing different implementations
264971
- - Textual visual comparisons or diagrams
264972
-
264973
- Preview content is untrusted text: raw HTML is not accepted or executed. It is escaped and rendered as inert preformatted text. Do not include HTML tags, attributes, URLs, scripts, styles, event handlers, or other executable markup. Do not use previews for simple preference questions where labels and descriptions suffice. Note: previews are only supported for single-select questions (not multiSelect).
264974
- `
264975
- };
264976
- ASK_USER_QUESTION_TOOL_PROMPT = `Use this tool when you need to ask the user questions during execution. This allows you to:
264977
- 1. Gather user preferences or requirements
264978
- 2. Clarify ambiguous instructions
264979
- 3. Get decisions on implementation choices as you work
264980
- 4. Offer choices to the user about what direction to take.
264981
-
264982
- Strongly prefer this tool over asking a question in plain assistant text. Any time your reply would end with a question that offers the user options or asks them to choose a direction (e.g. "Would you like A or B?", "Which approach should I take?", "Want me to do X or Y?"), call this tool with those options instead so the user gets a selectable arrow-key menu. Only ask in plain text when the answer is genuinely open-ended and cannot be expressed as a small set of choices.
264983
-
264984
- Strict input hierarchy:
264985
- - Invoke the tool with exactly one top-level \`questions\` array containing 1-4 complete question objects.
264986
- - Every question object contains \`question\`, a concise \`header\` (maximum 12 characters), and an \`options\` array with 2-8 option objects. Use \`multiSelect: true\` only when more than one choice may apply.
264987
- - Every option object contains a \`label\`. Add \`description\` only when it contributes a real consequence, trade-off, or limitation; \`preview\` is optional.
264988
- - Keep each question and its own options nested together. Never put option rows directly in the top-level \`questions\` array, and never send incomplete header/prompt-only entries.
264989
-
264990
- Canonical valid tool arguments (invoke the structured tool; do not print this object as prose):
264991
- {"questions":[{"question":"Which database should we use?","header":"Database","options":[{"label":"PostgreSQL (Recommended)","description":"Strong consistency and concurrency; requires a running server and migrations."},{"label":"SQLite","description":"Zero setup and a single file; unsuitable for multiple concurrent writers."}],"multiSelect":false}]}
264992
-
264993
- Usage notes:
264994
- - Users will always be able to select "Other" to provide custom text input, so it is safe to offer choices even when you are unsure you have listed every option
264995
- - Use multiSelect: true to allow multiple answers to be selected for a question
264996
- - If you recommend a specific option, make that the first option in the list and add "(Recommended)" at the end of the label
264997
- - Do not over-question. Ask only decisions that materially affect the result and cannot be inferred safely. If more than four decisions are truly needed, ask the most blocking 1-4 first and ask the remainder in a later round.
264998
-
264999
- Writing the three fields \u2014 they must each carry DIFFERENT information:
265000
- - \`header\` names the dimension being decided ("Database", "Auth method"). It is not a shortened copy of the question.
265001
- - \`label\` names the choice ("PostgreSQL"). It is not a restatement of the question.
265002
- - \`description\` says what happens if this is picked and what it costs \u2014 the trade-off, limitation or consequence the label does not already convey. It is the only field with room to be genuinely informative, so it must not paraphrase the label back to the user.
265003
-
265004
- A description that can be derived from reading the label is wasted space and makes the menu harder to use, not easier. Before writing one, ask: does this tell the user something they could not already see? If not, replace it with the thing that actually distinguishes this option from its neighbours.
265005
-
265006
- Bad \u2014 description restates the label:
265007
- question: "Which database should we use?"
265008
- header: "Which DB" (repeats the question)
265009
- label: "Use PostgreSQL" description: "Use PostgreSQL as the database."
265010
-
265011
- Good \u2014 each field adds something:
265012
- question: "Which database should we use?"
265013
- header: "Database"
265014
- label: "PostgreSQL" description: "Relational with strong consistency; needs a running server and a migration step."
265015
- label: "SQLite" description: "Zero setup, single file; no concurrent writers, so it will not survive multiple workers."
265016
-
265017
- Plan mode note: In plan mode, use this tool to clarify requirements or choose between approaches BEFORE finalizing your plan. Do NOT use this tool to ask "Is my plan ready?" or "Should I proceed?" - use ${EXIT_PLAN_MODE_TOOL_NAME} for plan approval. IMPORTANT: Do not reference "the plan" in your questions (e.g., "Do you have feedback about the plan?", "Does the plan look good?") because the user cannot see the plan in the UI until you call ${EXIT_PLAN_MODE_TOOL_NAME}. If you need plan approval, use ${EXIT_PLAN_MODE_TOOL_NAME} instead.
265018
- `;
265019
- });
265020
-
265021
265066
  // src/tools/SkillTool/constants.ts
265022
265067
  var SKILL_TOOL_NAME = "Skill";
265023
265068
 
@@ -265266,13 +265311,13 @@ var init_prompt10 = __esm(() => {
265266
265311
  var ALL_AGENT_DISALLOWED_TOOLS, CUSTOM_AGENT_DISALLOWED_TOOLS, ASYNC_AGENT_ALLOWED_TOOLS, IN_PROCESS_TEAMMATE_ALLOWED_TOOLS, COORDINATOR_MODE_ALLOWED_TOOLS;
265267
265312
  var init_tools = __esm(() => {
265268
265313
  init_constants2();
265269
- init_prompt9();
265270
- init_prompt2();
265271
- init_prompt5();
265272
265314
  init_prompt();
265273
- init_shellToolUtils();
265274
265315
  init_prompt3();
265275
- init_prompt7();
265316
+ init_prompt6();
265317
+ init_prompt2();
265318
+ init_shellToolUtils();
265319
+ init_prompt4();
265320
+ init_prompt8();
265276
265321
  init_SyntheticOutputTool();
265277
265322
  init_prompt10();
265278
265323
  ALL_AGENT_DISALLOWED_TOOLS = new Set([
@@ -265337,7 +265382,7 @@ var init_coordinatorMode = __esm(() => {
265337
265382
  init_growthbook();
265338
265383
  init_analytics();
265339
265384
  init_constants2();
265340
- init_prompt2();
265385
+ init_prompt3();
265341
265386
  init_SyntheticOutputTool();
265342
265387
  init_envUtils();
265343
265388
  INTERNAL_WORKER_TOOLS = new Set([
@@ -295299,7 +295344,7 @@ function getInstallationEnv() {
295299
295344
  return;
295300
295345
  }
295301
295346
  function getURCodeVersion() {
295302
- return "1.65.12";
295347
+ return "1.65.13";
295303
295348
  }
295304
295349
  async function getInstalledVSCodeExtensionVersion(command) {
295305
295350
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -302630,7 +302675,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
302630
302675
  const client2 = new Client({
302631
302676
  name: "ur",
302632
302677
  title: "UR",
302633
- version: "1.65.12",
302678
+ version: "1.65.13",
302634
302679
  description: "UR-Nexus autonomous engineering workflow engine",
302635
302680
  websiteUrl: PRODUCT_URL
302636
302681
  }, {
@@ -302990,7 +303035,7 @@ var init_client5 = __esm(() => {
302990
303035
  const client2 = new Client({
302991
303036
  name: "ur",
302992
303037
  title: "UR",
302993
- version: "1.65.12",
303038
+ version: "1.65.13",
302994
303039
  description: "UR-Nexus autonomous engineering workflow engine",
302995
303040
  websiteUrl: PRODUCT_URL
302996
303041
  }, {
@@ -315529,7 +315574,7 @@ async function createRuntime() {
315529
315574
  bootstrapTelemetry();
315530
315575
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
315531
315576
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
315532
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.65.12"
315577
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.65.13"
315533
315578
  }));
315534
315579
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
315535
315580
  resource,
@@ -315562,11 +315607,11 @@ async function createRuntime() {
315562
315607
  setMeterProvider(meterProvider);
315563
315608
  setLoggerProvider(loggerProvider);
315564
315609
  if (meterProvider) {
315565
- const meter = meterProvider.getMeter("ur-agent", "1.65.12");
315610
+ const meter = meterProvider.getMeter("ur-agent", "1.65.13");
315566
315611
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
315567
315612
  }
315568
315613
  if (loggerProvider) {
315569
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.65.12"));
315614
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.65.13"));
315570
315615
  }
315571
315616
  if (!cleanupRegistered2) {
315572
315617
  cleanupRegistered2 = true;
@@ -316228,9 +316273,9 @@ async function assertMinVersion() {
316228
316273
  if (false) {}
316229
316274
  try {
316230
316275
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
316231
- if (versionConfig.minVersion && lt("1.65.12", versionConfig.minVersion)) {
316276
+ if (versionConfig.minVersion && lt("1.65.13", versionConfig.minVersion)) {
316232
316277
  console.error(`
316233
- It looks like your version of UR (${"1.65.12"}) needs an update.
316278
+ It looks like your version of UR (${"1.65.13"}) needs an update.
316234
316279
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
316235
316280
 
316236
316281
  To update, please run:
@@ -316446,7 +316491,7 @@ async function installGlobalPackage(specificVersion) {
316446
316491
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
316447
316492
  logEvent("tengu_auto_updater_lock_contention", {
316448
316493
  pid: process.pid,
316449
- currentVersion: "1.65.12"
316494
+ currentVersion: "1.65.13"
316450
316495
  });
316451
316496
  return "in_progress";
316452
316497
  }
@@ -316455,7 +316500,7 @@ async function installGlobalPackage(specificVersion) {
316455
316500
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
316456
316501
  logError2(new Error("Windows NPM detected in WSL environment"));
316457
316502
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
316458
- currentVersion: "1.65.12"
316503
+ currentVersion: "1.65.13"
316459
316504
  });
316460
316505
  console.error(`
316461
316506
  Error: Windows NPM detected in WSL
@@ -316990,7 +317035,7 @@ function detectLinuxGlobPatternWarnings() {
316990
317035
  }
316991
317036
  async function getDoctorDiagnostic() {
316992
317037
  const installationType = await getCurrentInstallationType();
316993
- const version2 = typeof MACRO !== "undefined" ? "1.65.12" : "unknown";
317038
+ const version2 = typeof MACRO !== "undefined" ? "1.65.13" : "unknown";
316994
317039
  const installationPath = await getInstallationPath();
316995
317040
  const invokedBinary = getInvokedBinary();
316996
317041
  const multipleInstallations = await detectMultipleInstallations();
@@ -317925,8 +317970,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
317925
317970
  const maxVersion = await getMaxVersion();
317926
317971
  if (maxVersion && gt(version2, maxVersion)) {
317927
317972
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
317928
- if (gte("1.65.12", maxVersion)) {
317929
- logForDebugging(`Native installer: current version ${"1.65.12"} is already at or above maxVersion ${maxVersion}, skipping update`);
317973
+ if (gte("1.65.13", maxVersion)) {
317974
+ logForDebugging(`Native installer: current version ${"1.65.13"} is already at or above maxVersion ${maxVersion}, skipping update`);
317930
317975
  logEvent("tengu_native_update_skipped_max_version", {
317931
317976
  latency_ms: Date.now() - startTime,
317932
317977
  max_version: maxVersion,
@@ -317937,7 +317982,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
317937
317982
  version2 = maxVersion;
317938
317983
  }
317939
317984
  }
317940
- if (!forceReinstall && version2 === "1.65.12" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
317985
+ if (!forceReinstall && version2 === "1.65.13" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
317941
317986
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
317942
317987
  logEvent("tengu_native_update_complete", {
317943
317988
  latency_ms: Date.now() - startTime,
@@ -345308,7 +345353,7 @@ var init_SkillTool = __esm(() => {
345308
345353
  init_skillUsageTracking();
345309
345354
  init_uuid();
345310
345355
  init_runAgent();
345311
- init_prompt6();
345356
+ init_prompt7();
345312
345357
  init_UI5();
345313
345358
  inputSchema10 = lazySchema(() => exports_external.object({
345314
345359
  skill: exports_external.string().describe('The skill name. E.g., "commit", "review-pr", or "pdf"'),
@@ -358371,9 +358416,9 @@ var init_prompt11 = __esm(() => {
358371
358416
  init_envUtils();
358372
358417
  init_outputLimits();
358373
358418
  init_powershellDetection();
358374
- init_prompt2();
358375
358419
  init_prompt3();
358376
- init_prompt();
358420
+ init_prompt4();
358421
+ init_prompt2();
358377
358422
  });
358378
358423
 
358379
358424
  // src/tools/PowerShellTool/UI.tsx
@@ -361015,7 +361060,7 @@ Usage:${getPreReadInstruction2()}
361015
361060
  }
361016
361061
  var init_prompt12 = __esm(() => {
361017
361062
  init_file();
361018
- init_prompt2();
361063
+ init_prompt3();
361019
361064
  });
361020
361065
 
361021
361066
  // src/tools/FileEditTool/types.ts
@@ -365067,7 +365112,7 @@ var init_FileWriteTool = __esm(() => {
365067
365112
  init_filesystem();
365068
365113
  init_shellRuleMatching();
365069
365114
  init_types11();
365070
- init_prompt3();
365115
+ init_prompt4();
365071
365116
  init_UI9();
365072
365117
  inputSchema13 = lazySchema(() => exports_external.strictObject({
365073
365118
  file_path: exports_external.string().describe("The absolute path to the file to write (must be absolute, not relative)"),
@@ -365729,7 +365774,7 @@ var init_GrepTool = __esm(() => {
365729
365774
  init_semanticBoolean();
365730
365775
  init_semanticNumber();
365731
365776
  init_stringUtils();
365732
- init_prompt();
365777
+ init_prompt2();
365733
365778
  init_UI10();
365734
365779
  inputSchema14 = lazySchema(() => exports_external.strictObject({
365735
365780
  pattern: exports_external.string().describe("The regular expression pattern to search for in file contents"),
@@ -366165,7 +366210,7 @@ var init_GlobTool = __esm(() => {
366165
366210
  searchHint: "find files by name pattern or wildcard",
366166
366211
  maxResultSizeChars: 1e5,
366167
366212
  async description() {
366168
- return DESCRIPTION3;
366213
+ return DESCRIPTION4;
366169
366214
  },
366170
366215
  userFacingName: userFacingName5,
366171
366216
  getToolUseSummary: getToolUseSummary4,
@@ -366237,7 +366282,7 @@ var init_GlobTool = __esm(() => {
366237
366282
  return checkReadPermissionForTool(GlobTool, input, appState.toolPermissionContext);
366238
366283
  },
366239
366284
  async prompt() {
366240
- return DESCRIPTION3;
366285
+ return DESCRIPTION4;
366241
366286
  },
366242
366287
  renderToolUseMessage: renderToolUseMessage12,
366243
366288
  renderToolUseErrorMessage: renderToolUseErrorMessage8,
@@ -368205,7 +368250,7 @@ var init_WebFetchTool = __esm(() => {
368205
368250
  },
368206
368251
  async prompt(_options) {
368207
368252
  return `IMPORTANT: WebFetch WILL FAIL for authenticated or private URLs. Before using this tool, check if the URL points to an authenticated service (e.g. Google Docs, Confluence, Jira, GitHub). If so, look for a specialized MCP tool that provides authenticated access.
368208
- ${DESCRIPTION4}`;
368253
+ ${DESCRIPTION5}`;
368209
368254
  },
368210
368255
  async validateInput(input) {
368211
368256
  const { url: url3 } = input;
@@ -369740,7 +369785,7 @@ var init_TaskStopTool = __esm(() => {
369740
369785
  return `Stop a running background task by ID`;
369741
369786
  },
369742
369787
  async prompt() {
369743
- return DESCRIPTION;
369788
+ return DESCRIPTION2;
369744
369789
  },
369745
369790
  mapToolResultToToolResultBlockParam(output, toolUseID) {
369746
369791
  return {
@@ -371019,7 +371064,7 @@ var init_WebSearchTool = __esm(() => {
371019
371064
  init_model();
371020
371065
  init_permissions2();
371021
371066
  init_slowOperations();
371022
- init_prompt5();
371067
+ init_prompt6();
371023
371068
  init_UI17();
371024
371069
  inputSchema28 = lazySchema(() => exports_external.strictObject({
371025
371070
  query: exports_external.string().min(2).describe("The search query to use"),
@@ -371482,7 +371527,7 @@ var init_UI18 = __esm(() => {
371482
371527
 
371483
371528
  // src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts
371484
371529
  import { writeFile as writeFile21 } from "fs/promises";
371485
- function objectValue2(value) {
371530
+ function objectValue3(value) {
371486
371531
  return value && typeof value === "object" && !Array.isArray(value) ? value : null;
371487
371532
  }
371488
371533
  function isBashToolName(value) {
@@ -371502,7 +371547,7 @@ function normalizeAllowedPromptItem(value) {
371502
371547
  const prompt2 = value.trim();
371503
371548
  return prompt2 ? [{ tool: "Bash", prompt: prompt2 }] : [];
371504
371549
  }
371505
- const item = objectValue2(value);
371550
+ const item = objectValue3(value);
371506
371551
  if (!item || !isBashToolName(item.tool))
371507
371552
  return [];
371508
371553
  const prompt = promptTextFromObject(item);
@@ -371517,7 +371562,7 @@ function normalizeAllowedPromptsValue(value) {
371517
371562
  return normalizeAllowedPromptItem(value);
371518
371563
  if (Array.isArray(value))
371519
371564
  return value.flatMap(normalizeAllowedPromptItem);
371520
- const prompts = objectValue2(value);
371565
+ const prompts = objectValue3(value);
371521
371566
  if (!prompts)
371522
371567
  return [];
371523
371568
  const prompt = promptTextFromObject(prompts);
@@ -371530,7 +371575,7 @@ function normalizeAllowedPromptsValue(value) {
371530
371575
  });
371531
371576
  }
371532
371577
  function normalizeExitPlanModeInput(value) {
371533
- const input = objectValue2(value);
371578
+ const input = objectValue3(value);
371534
371579
  if (!input)
371535
371580
  return value;
371536
371581
  const rawAllowedPrompts = input.allowedPrompts ?? input.allowed_prompts ?? input.prompts ?? input.permissions;
@@ -373058,7 +373103,7 @@ Notes:
373058
373103
  }
373059
373104
  var CODE_SEARCH_TOOL_NAME = "CodeSearch";
373060
373105
  var init_prompt15 = __esm(() => {
373061
- init_prompt();
373106
+ init_prompt2();
373062
373107
  });
373063
373108
 
373064
373109
  // src/tools/CodeSearchTool/CodeSearchTool.ts
@@ -373232,14 +373277,9 @@ var init_zodToJsonSchema2 = __esm(() => {
373232
373277
  });
373233
373278
 
373234
373279
  // src/tools/AskUserQuestionTool/AskUserQuestionTool.tsx
373235
- function objectValue3(value) {
373280
+ function objectValue4(value) {
373236
373281
  return value && typeof value === "object" && !Array.isArray(value) ? value : null;
373237
373282
  }
373238
- function headerFromQuestion2(question, index2) {
373239
- const stopWords = new Set(["a", "about", "also", "an", "are", "be", "do", "does", "for", "is", "or", "should", "support", "that", "the", "this", "to", "want", "what", "which", "with", "without", "you"]);
373240
- const word = question.replace(/[^A-Za-z0-9]+/g, " ").split(/\s+/).find((part) => part && !stopWords.has(part.toLowerCase())) ?? `Question ${index2 + 1}`;
373241
- return word.slice(0, ASK_USER_QUESTION_TOOL_CHIP_WIDTH);
373242
- }
373243
373283
  function stringField2(input, names) {
373244
373284
  for (const name of names) {
373245
373285
  const value = input[name];
@@ -373255,7 +373295,7 @@ function normalizeQuestionOptionInput(value) {
373255
373295
  label
373256
373296
  } : value;
373257
373297
  }
373258
- const option = objectValue3(value);
373298
+ const option = objectValue4(value);
373259
373299
  if (!option)
373260
373300
  return value;
373261
373301
  const normalized = { ...option };
@@ -373277,7 +373317,7 @@ function normalizePreviewInput(preview) {
373277
373317
  return `<pre data-ur-preview="text">${escaped}</pre>`;
373278
373318
  }
373279
373319
  function normalizeQuestionInput(value, index2) {
373280
- const question = objectValue3(value);
373320
+ const question = objectValue4(value);
373281
373321
  if (!question)
373282
373322
  return value;
373283
373323
  const normalized = { ...question };
@@ -373302,14 +373342,14 @@ function normalizeQuestionInput(value, index2) {
373302
373342
  normalized.options = options2.map(normalizeQuestionOptionInput);
373303
373343
  }
373304
373344
  if (typeof question.header === "string" && question.header.trim()) {
373305
- normalized.header = question.header.trim();
373345
+ normalized.header = normalizeQuestionHeader(question.header, questionText, index2);
373306
373346
  } else if (questionText) {
373307
- normalized.header = headerFromQuestion2(questionText, index2);
373347
+ normalized.header = headerFromQuestion(questionText, index2);
373308
373348
  }
373309
373349
  return normalized;
373310
373350
  }
373311
373351
  function normalizeAskUserQuestionInput2(value) {
373312
- const input = objectValue3(value);
373352
+ const input = objectValue4(value);
373313
373353
  if (!input)
373314
373354
  return value;
373315
373355
  const normalized = { ...input };
@@ -373351,7 +373391,7 @@ function normalizeAskUserQuestionInput2(value) {
373351
373391
  return normalized;
373352
373392
  }
373353
373393
  function boundedText(max2, field) {
373354
- return exports_external.string().trim().min(1, `${field} cannot be empty`).max(max2, `${field} must be at most ${max2} characters`).refine((value) => !CONTROL_OR_ANSI_RE.test(value), `${field} must not contain control or ANSI escape characters`);
373394
+ return exports_external.string().trim().min(1, `${field} cannot be empty`).max(max2, `${field} must be at most ${max2} characters`).refine((value) => !CONTROL_OR_ANSI_RE2.test(value), `${field} must not contain control or ANSI escape characters`);
373355
373395
  }
373356
373396
  function AskUserQuestionResultMessage(t0) {
373357
373397
  const $2 = import_compiler_runtime114.c(3);
@@ -373424,7 +373464,7 @@ function validateHtmlPreview(preview) {
373424
373464
  }
373425
373465
  return null;
373426
373466
  }
373427
- var import_compiler_runtime114, jsx_dev_runtime145, MAX_QUESTIONS = 4, MAX_OPTIONS = 8, MAX_QUESTION_CHARS = 500, MAX_LABEL_CHARS = 80, MAX_DESCRIPTION_CHARS = 500, MAX_PREVIEW_CHARS, MAX_PREVIEW_LINES = 200, MAX_ANSWER_CHARS = 2000, MAX_TOTAL_INPUT_CHARS, RESERVED_RECORD_KEYS, QUESTION_TEXT_ALIASES, CONTROL_OR_ANSI_RE, UNIQUENESS_REFINE, questionOptionSchema, questionSchema, annotationsSchema, responseFields, metadataSchema, requestObjectSchema, inputSchema32, modelInputJSONSchema, outputSchema27, AskUserQuestionTool;
373467
+ var import_compiler_runtime114, jsx_dev_runtime145, MAX_QUESTIONS = 4, MAX_OPTIONS = 8, MAX_QUESTION_CHARS = 500, MAX_LABEL_CHARS = 80, MAX_DESCRIPTION_CHARS = 500, MAX_PREVIEW_CHARS, MAX_PREVIEW_LINES = 200, MAX_ANSWER_CHARS = 2000, MAX_TOTAL_INPUT_CHARS, RESERVED_RECORD_KEYS, QUESTION_TEXT_ALIASES, CONTROL_OR_ANSI_RE2, UNIQUENESS_REFINE, questionOptionSchema, questionSchema, annotationsSchema, responseFields, metadataSchema, requestObjectSchema, inputSchema32, modelInputJSONSchema, outputSchema27, AskUserQuestionTool;
373428
373468
  var init_AskUserQuestionTool = __esm(() => {
373429
373469
  init_state();
373430
373470
  init_MessageResponse();
@@ -373435,14 +373475,15 @@ var init_AskUserQuestionTool = __esm(() => {
373435
373475
  init_ink2();
373436
373476
  init_Tool();
373437
373477
  init_zodToJsonSchema2();
373438
- init_prompt9();
373478
+ init_normalization();
373479
+ init_prompt();
373439
373480
  import_compiler_runtime114 = __toESM(require_compiler_runtime(), 1);
373440
373481
  jsx_dev_runtime145 = __toESM(require_jsx_dev_runtime(), 1);
373441
373482
  MAX_PREVIEW_CHARS = 16 * 1024;
373442
373483
  MAX_TOTAL_INPUT_CHARS = 64 * 1024;
373443
373484
  RESERVED_RECORD_KEYS = new Set(["__proto__", "constructor", "prototype", "toString", "valueOf"]);
373444
373485
  QUESTION_TEXT_ALIASES = ["question", "questionText", "question_text", "prompt", "text"];
373445
- CONTROL_OR_ANSI_RE = /[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]|\u001B\[/;
373486
+ CONTROL_OR_ANSI_RE2 = /[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]|\u001B\[/;
373446
373487
  UNIQUENESS_REFINE = {
373447
373488
  check: (data) => {
373448
373489
  const questions = data.questions.map((q) => q.question.toLocaleLowerCase());
@@ -373518,7 +373559,7 @@ var init_AskUserQuestionTool = __esm(() => {
373518
373559
  maxResultSizeChars: 1e5,
373519
373560
  shouldDefer: false,
373520
373561
  async description() {
373521
- return DESCRIPTION5;
373562
+ return DESCRIPTION;
373522
373563
  },
373523
373564
  async prompt() {
373524
373565
  const format5 = getQuestionPreviewFormat();
@@ -375192,7 +375233,7 @@ function getEnterPlanModeToolPrompt() {
375192
375233
  var WHAT_HAPPENS_SECTION;
375193
375234
  var init_prompt16 = __esm(() => {
375194
375235
  init_planModeV2();
375195
- init_prompt9();
375236
+ init_prompt();
375196
375237
  WHAT_HAPPENS_SECTION = `## What Happens in Plan Mode
375197
375238
 
375198
375239
  In plan mode, you'll:
@@ -381898,7 +381939,7 @@ var init_prompt20 = __esm(() => {
381898
381939
  init_envUtils();
381899
381940
  init_teammate();
381900
381941
  init_teammateContext();
381901
- init_prompt2();
381942
+ init_prompt3();
381902
381943
  init_constants2();
381903
381944
  init_forkSubagent();
381904
381945
  });
@@ -381952,7 +381993,7 @@ var init_AgentTool = __esm(() => {
381952
381993
  init_uuid();
381953
381994
  init_worktree3();
381954
381995
  init_UI6();
381955
- init_prompt2();
381996
+ init_prompt3();
381956
381997
  init_spawnMultiAgent();
381957
381998
  init_agentColorManager();
381958
381999
  init_agentToolUtils();
@@ -383537,11 +383578,11 @@ function summarizeRecentActivities(activities) {
383537
383578
  var MAX_HINT_CHARS = 300;
383538
383579
  var init_collapseReadSearch = __esm(() => {
383539
383580
  init_Tool();
383540
- init_prompt3();
383581
+ init_prompt4();
383541
383582
  init_constants4();
383542
383583
  init_primitiveTools();
383543
383584
  init_gitOperationTracking();
383544
- init_prompt7();
383585
+ init_prompt8();
383545
383586
  init_file();
383546
383587
  init_fullscreen();
383547
383588
  init_memoryFileDetection();
@@ -384697,12 +384738,12 @@ var init_sessionFileAccessHooks = __esm(() => {
384697
384738
  init_analytics();
384698
384739
  init_types11();
384699
384740
  init_FileReadTool();
384700
- init_prompt2();
384701
- init_FileWriteTool();
384702
384741
  init_prompt3();
384742
+ init_FileWriteTool();
384743
+ init_prompt4();
384703
384744
  init_GlobTool();
384704
384745
  init_GrepTool();
384705
- init_prompt();
384746
+ init_prompt2();
384706
384747
  init_memoryFileDetection();
384707
384748
  init_agentContext();
384708
384749
  });
@@ -384937,9 +384978,9 @@ var MEMORY_ACCESS_TOOL_NAMES;
384937
384978
  var init_attribution = __esm(() => {
384938
384979
  init_state();
384939
384980
  init_xml();
384940
- init_prompt2();
384941
384981
  init_prompt3();
384942
- init_prompt();
384982
+ init_prompt4();
384983
+ init_prompt2();
384943
384984
  init_commitAttribution();
384944
384985
  init_debug();
384945
384986
  init_json();
@@ -385254,9 +385295,9 @@ var init_prompt21 = __esm(() => {
385254
385295
  init_slowOperations();
385255
385296
  init_undercover();
385256
385297
  init_constants2();
385257
- init_prompt2();
385258
385298
  init_prompt3();
385259
- init_prompt();
385299
+ init_prompt4();
385300
+ init_prompt2();
385260
385301
  init_TodoWriteTool();
385261
385302
  });
385262
385303
 
@@ -387985,7 +388026,7 @@ function isAnyTracingEnabled() {
387985
388026
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
387986
388027
  }
387987
388028
  function getTracer() {
387988
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.65.12");
388029
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.65.13");
387989
388030
  }
387990
388031
  function createSpanAttributes(spanType, customAttributes = {}) {
387991
388032
  const baseAttributes = getTelemetryAttributes();
@@ -388713,7 +388754,7 @@ function getAskUserQuestionCorrection(error40) {
388713
388754
  return typeof index2 === "number" ? Math.max(count3, index2 + 1) : count3;
388714
388755
  }, 0);
388715
388756
  const countNotice = inferredCount > 4 ? ` This call contains at least ${inferredCount} incomplete question entries.` : "";
388716
- return "AskUserQuestion requires 1-4 complete question objects. Each object must " + "contain `question`, `header`, and an `options` array with 2-8 " + "objects containing `label`; include `description` only when it adds a " + "useful consequence or trade-off." + countNotice + " Do not invent missing choices or truncate entries. Retry with at most " + "four complete questions, ask remaining decisions in later rounds, and " + "do not repeat the unchanged call.";
388757
+ return "AskUserQuestion requires 1-4 complete question objects. Each object must " + "contain `question`, `header`, and an `options` array with 2-8 " + "objects containing `label`; include `description` only when it adds a " + "useful consequence or trade-off." + countNotice + " Do not invent missing choices or truncate question/option content. " + "Overlong UI headers are compacted automatically. Retry with at most four " + "complete questions, ask remaining decisions in later rounds, and do not " + "repeat the unchanged call.";
388717
388758
  }
388718
388759
  function getWriteCorrection(error40) {
388719
388760
  const missingRequiredField = error40.issues.some((issue2) => issue2.code === "invalid_type" && issue2.message.includes("received undefined") && (issue2.path[0] === "file_path" || issue2.path[0] === "content"));
@@ -388872,10 +388913,47 @@ function isLocalPreviewOpenForTaskGate(input) {
388872
388913
  return false;
388873
388914
  }
388874
388915
  }
388916
+ function safeInlineHtmlSyntaxCheck(script) {
388917
+ const match = script.match(/^const\s+(?<fs>[A-Za-z_$][\w$]*)\s*=\s*require\((?<fsq>['"])fs\k<fsq>\)\s*;\s*const\s+(?<source>[A-Za-z_$][\w$]*)\s*=\s*\k<fs>\.readFileSync\((?<pathq>['"])(?<path>[^'"\0\r\n]+)\k<pathq>\s*,\s*(?<utfq>['"])utf8\k<utfq>\)\s*;\s*try\s*\{\s*new\s+Function\(\k<source>\.split\((?<openq>['"])<script>\k<openq>\)\[1\]\.split\((?<closeq>['"])<\/script>\k<closeq>\)\[0\]\)\s*;\s*console\.log\((?<okq>['"])[^'"\0\r\n]*\k<okq>\)\s*;\s*\}\s*catch\s*\((?<error>[A-Za-z_$][\w$]*)\)\s*\{\s*console\.log\((?<errorq>['"])[^'"\0\r\n]*\k<errorq>\s*,\s*\k<error>\.message\)\s*;\s*\}\s*;?$/);
388918
+ const path14 = match?.groups?.path;
388919
+ return path14 ? { path: path14 } : null;
388920
+ }
388921
+ function isSyntaxVerificationForTaskGate(input) {
388922
+ if (input.toolName !== "Bash" || typeof input.toolInput !== "object" || input.toolInput === null) {
388923
+ return false;
388924
+ }
388925
+ const candidate = input.toolInput;
388926
+ if (typeof candidate.command !== "string" || candidate.command.trim() === "" || candidate.run_in_background === true || candidate.dangerouslyDisableSandbox === true || candidate._simulatedSedEdit !== undefined || candidate.command.includes("$") || candidate.command.includes("`") || candidate.command.includes("\\") || candidate.command.includes(`
388927
+ `) || candidate.command.includes("\r") || candidate.command.includes("\x00") || hasUnbalancedQuotes(candidate.command)) {
388928
+ return false;
388929
+ }
388930
+ const parsed = tryParseShellCommand(candidate.command);
388931
+ if (!parsed.success)
388932
+ return false;
388933
+ const tokens = parsed.tokens;
388934
+ const allStrings = (values2) => values2.every((value) => typeof value === "string");
388935
+ const safeNodeCheckCommand = /^node[ \t]+--check[ \t]+(?:"[^"$`\\\0\r\n]+"|'[^'\0\r\n]+'|[A-Za-z0-9_./:@%+,=\-]+)[ \t]*$/.test(candidate.command);
388936
+ if (safeNodeCheckCommand && tokens.length === 3 && allStrings(tokens) && tokens[0] === "node" && tokens[1] === "--check") {
388937
+ const path14 = tokens[2];
388938
+ return Boolean(path14 && !path14.startsWith("-") && !/[\0\r\n$`]/.test(path14));
388939
+ }
388940
+ const hasLeadingWc = tokens.length === 7 && tokens[0] === "wc" && tokens[1] === "-l" && typeof tokens[2] === "string" && isShellOperator(tokens[3], "&&");
388941
+ const nodeIndex = hasLeadingWc ? 4 : 0;
388942
+ if (tokens.length !== nodeIndex + 3 || tokens[nodeIndex] !== "node" || tokens[nodeIndex + 1] !== "-e" || typeof tokens[nodeIndex + 2] !== "string") {
388943
+ return false;
388944
+ }
388945
+ const check3 = safeInlineHtmlSyntaxCheck(tokens[nodeIndex + 2]);
388946
+ if (!check3)
388947
+ return false;
388948
+ return !hasLeadingWc || tokens[2] === check3.path;
388949
+ }
388875
388950
  function isMutationRequiringTaskList(input) {
388876
388951
  return input.isMutating && !isLocalPreviewOpenForTaskGate({
388877
388952
  toolName: input.toolName,
388878
388953
  toolInput: input.toolInput
388954
+ }) && !isSyntaxVerificationForTaskGate({
388955
+ toolName: input.toolName,
388956
+ toolInput: input.toolInput
388879
388957
  });
388880
388958
  }
388881
388959
  function getTaskListGateConfig() {
@@ -391385,10 +391463,10 @@ var init_toolExecution = __esm(() => {
391385
391463
  init_Tool();
391386
391464
  init_constants2();
391387
391465
  init_bashPermissions();
391388
- init_prompt2();
391389
391466
  init_prompt3();
391467
+ init_prompt4();
391390
391468
  init_gitOperationTracking();
391391
- init_prompt7();
391469
+ init_prompt8();
391392
391470
  init_tools2();
391393
391471
  init_attachments2();
391394
391472
  init_debug();
@@ -391789,7 +391867,7 @@ var init_StreamingToolExecutor = __esm(() => {
391789
391867
  });
391790
391868
 
391791
391869
  // src/utils/explicitChoiceRecovery.ts
391792
- function objectValue4(value) {
391870
+ function objectValue5(value) {
391793
391871
  return value && typeof value === "object" && !Array.isArray(value) ? value : null;
391794
391872
  }
391795
391873
  function hasOnlyKeys(value, required2, optional3 = []) {
@@ -391798,20 +391876,20 @@ function hasOnlyKeys(value, required2, optional3 = []) {
391798
391876
  return required2.every((key) => Object.prototype.hasOwnProperty.call(value, key)) && keys2.every((key) => allowed.has(key));
391799
391877
  }
391800
391878
  function hasCanonicalAskShape(value) {
391801
- const input = objectValue4(value);
391879
+ const input = objectValue5(value);
391802
391880
  if (!input || !hasOnlyKeys(input, ["questions"], ["metadata"]) || !Array.isArray(input.questions) || input.questions.length < 1 || input.questions.length > MAX_QUESTIONS2) {
391803
391881
  return false;
391804
391882
  }
391805
- if (input.metadata !== undefined && !objectValue4(input.metadata)) {
391883
+ if (input.metadata !== undefined && !objectValue5(input.metadata)) {
391806
391884
  return false;
391807
391885
  }
391808
391886
  return input.questions.every((questionValue) => {
391809
- const question = objectValue4(questionValue);
391887
+ const question = objectValue5(questionValue);
391810
391888
  if (!question || !hasOnlyKeys(question, ["question", "header", "options"], ["multiSelect"]) || typeof question.question !== "string" || typeof question.header !== "string" || !Array.isArray(question.options) || question.options.length < 2 || question.options.length > MAX_OPTIONS2 || question.multiSelect !== undefined && typeof question.multiSelect !== "boolean") {
391811
391889
  return false;
391812
391890
  }
391813
391891
  return question.options.every((optionValue) => {
391814
- const option = objectValue4(optionValue);
391892
+ const option = objectValue5(optionValue);
391815
391893
  return Boolean(option && hasOnlyKeys(option, ["label"], ["description", "preview"]) && typeof option.label === "string" && (option.description === undefined || typeof option.description === "string") && (option.preview === undefined || typeof option.preview === "string"));
391816
391894
  });
391817
391895
  });
@@ -391880,7 +391958,7 @@ function parseFinalReasoningAskJson(reasoning) {
391880
391958
  return null;
391881
391959
  return candidate.input;
391882
391960
  }
391883
- function headerFromQuestion3(question) {
391961
+ function headerFromQuestion2(question) {
391884
391962
  const stopWords = new Set([
391885
391963
  "a",
391886
391964
  "about",
@@ -391959,7 +392037,7 @@ function parseExplicitChoicePrompt(text) {
391959
392037
  questions: [
391960
392038
  {
391961
392039
  question,
391962
- header: headerFromQuestion3(question),
392040
+ header: headerFromQuestion2(question),
391963
392041
  options: options2
391964
392042
  }
391965
392043
  ]
@@ -392040,8 +392118,9 @@ function recoverExplicitChoiceToolUse({
392040
392118
  thinkingBlocks,
392041
392119
  textBlocks
392042
392120
  })) {
392043
- const parsed = askTool.inputSchema.safeParse(candidate.input);
392044
- if (!parsed.success || !isDeepStrictEqual3(parsed.data, candidate.input)) {
392121
+ const headerNormalizedInput = normalizeAskQuestionHeaders(candidate.input);
392122
+ const parsed = askTool.inputSchema.safeParse(headerNormalizedInput);
392123
+ if (!parsed.success || !isDeepStrictEqual3(parsed.data, headerNormalizedInput)) {
392045
392124
  continue;
392046
392125
  }
392047
392126
  const idSuffix = uuid3().replace(/[^A-Za-z0-9]/g, "");
@@ -392070,7 +392149,8 @@ function recoverExplicitChoiceToolUse({
392070
392149
  }
392071
392150
  var init_explicitChoiceRecovery2 = __esm(() => {
392072
392151
  init_Tool();
392073
- init_prompt9();
392152
+ init_normalization();
392153
+ init_prompt();
392074
392154
  init_explicitChoiceRecovery();
392075
392155
  });
392076
392156
 
@@ -392650,9 +392730,9 @@ var init_memoryScan = __esm(() => {
392650
392730
  // src/services/extractMemories/prompts.ts
392651
392731
  var init_prompts = __esm(() => {
392652
392732
  init_memoryTypes();
392653
- init_prompt2();
392654
392733
  init_prompt3();
392655
- init_prompt();
392734
+ init_prompt4();
392735
+ init_prompt2();
392656
392736
  });
392657
392737
 
392658
392738
  // src/services/extractMemories/extractMemories.ts
@@ -392696,9 +392776,9 @@ var init_extractMemories = __esm(() => {
392696
392776
  init_memdir();
392697
392777
  init_memoryScan();
392698
392778
  init_paths();
392699
- init_prompt2();
392700
392779
  init_prompt3();
392701
- init_prompt();
392780
+ init_prompt4();
392781
+ init_prompt2();
392702
392782
  init_constants4();
392703
392783
  init_abortController();
392704
392784
  init_debug();
@@ -392942,7 +393022,7 @@ var init_autoDream = __esm(() => {
392942
393022
  init_consolidationPrompt();
392943
393023
  init_consolidationLock();
392944
393024
  init_DreamTask();
392945
- init_prompt3();
393025
+ init_prompt4();
392946
393026
  SESSION_SCAN_INTERVAL_MS = 10 * 60 * 1000;
392947
393027
  DEFAULTS2 = {
392948
393028
  minHours: 24,
@@ -394745,7 +394825,7 @@ var init_query = __esm(() => {
394745
394825
  init_tokens();
394746
394826
  init_context();
394747
394827
  init_growthbook();
394748
- init_prompt8();
394828
+ init_prompt9();
394749
394829
  init_postSamplingHooks();
394750
394830
  init_hooks5();
394751
394831
  init_projectContextManifest();
@@ -396770,7 +396850,7 @@ var init_compact = __esm(() => {
396770
396850
  init_state();
396771
396851
  init_state();
396772
396852
  init_FileReadTool();
396773
- init_prompt2();
396853
+ init_prompt3();
396774
396854
  init_ToolSearchTool();
396775
396855
  init_attachments2();
396776
396856
  init_config();
@@ -397605,7 +397685,7 @@ async function countBuiltInToolTokens(tools, getToolPermissionContext, agentInfo
397605
397685
  };
397606
397686
  }
397607
397687
  const { isToolSearchEnabled: isToolSearchEnabled2 } = await Promise.resolve().then(() => (init_toolSearch(), exports_toolSearch));
397608
- const { isDeferredTool: isDeferredTool2 } = await Promise.resolve().then(() => (init_prompt7(), exports_prompt2));
397688
+ const { isDeferredTool: isDeferredTool2 } = await Promise.resolve().then(() => (init_prompt8(), exports_prompt2));
397609
397689
  const isDeferred = await isToolSearchEnabled2(model ?? "", tools, getToolPermissionContext, agentInfo?.activeAgents ?? [], "analyzeBuiltIn");
397610
397690
  const alwaysLoadedTools = builtInTools.filter((t) => !isDeferredTool2(t));
397611
397691
  const deferredBuiltinTools = builtInTools.filter((t) => isDeferredTool2(t));
@@ -397740,7 +397820,7 @@ async function countMcpToolTokens(tools, getToolPermissionContext, agentInfo, mo
397740
397820
  const estimateTotal = estimates.reduce((s, e) => s + e, 0) || 1;
397741
397821
  const mcpToolTokensByTool = estimates.map((e) => Math.round(e / estimateTotal * totalTokens));
397742
397822
  const { isToolSearchEnabled: isToolSearchEnabled2 } = await Promise.resolve().then(() => (init_toolSearch(), exports_toolSearch));
397743
- const { isDeferredTool: isDeferredTool2 } = await Promise.resolve().then(() => (init_prompt7(), exports_prompt2));
397823
+ const { isDeferredTool: isDeferredTool2 } = await Promise.resolve().then(() => (init_prompt8(), exports_prompt2));
397744
397824
  const isDeferred = await isToolSearchEnabled2(model, tools, getToolPermissionContext, agentInfo?.activeAgents ?? [], "analyzeMcp");
397745
397825
  const loadedMcpToolNames = new Set;
397746
397826
  if (isDeferred && messages) {
@@ -398162,7 +398242,7 @@ var init_analyzeContext = __esm(() => {
398162
398242
  init_tokenEstimation();
398163
398243
  init_loadSkillsDir();
398164
398244
  init_Tool();
398165
- init_prompt6();
398245
+ init_prompt7();
398166
398246
  init_api3();
398167
398247
  init_agentmd();
398168
398248
  init_context();
@@ -398477,7 +398557,7 @@ var init_toolSearch = __esm(() => {
398477
398557
  init_growthbook();
398478
398558
  init_analytics();
398479
398559
  init_Tool();
398480
- init_prompt7();
398560
+ init_prompt8();
398481
398561
  init_analyzeContext();
398482
398562
  init_betas2();
398483
398563
  init_context();
@@ -399803,7 +399883,7 @@ var init_FileReadTool = __esm(() => {
399803
399883
  init_semanticNumber();
399804
399884
  init_slowOperations();
399805
399885
  init_limits();
399806
- init_prompt2();
399886
+ init_prompt3();
399807
399887
  init_UI26();
399808
399888
  BLOCKED_DEVICE_PATHS = new Set([
399809
399889
  "/dev/zero",
@@ -399908,7 +399988,7 @@ var init_FileReadTool = __esm(() => {
399908
399988
  maxResultSizeChars: Infinity,
399909
399989
  strict: true,
399910
399990
  async description() {
399911
- return DESCRIPTION2;
399991
+ return DESCRIPTION3;
399912
399992
  },
399913
399993
  async prompt() {
399914
399994
  const limits = getDefaultFileReadingLimits();
@@ -402303,9 +402383,9 @@ var init_attachments2 = __esm(() => {
402303
402383
  init_commands3();
402304
402384
  init_uniqBy();
402305
402385
  init_state();
402306
- init_prompt6();
402386
+ init_prompt7();
402307
402387
  init_context();
402308
- init_prompt2();
402388
+ init_prompt3();
402309
402389
  init_limits();
402310
402390
  init_fileStateCache();
402311
402391
  init_abortController();
@@ -402349,7 +402429,7 @@ var init_attachments2 = __esm(() => {
402349
402429
  init_teammateContext();
402350
402430
  init_teamHelpers();
402351
402431
  init_tasks();
402352
- init_prompt4();
402432
+ init_prompt5();
402353
402433
  TODO_REMINDER_CONFIG = {
402354
402434
  TURNS_SINCE_WRITE: 10,
402355
402435
  TURNS_BETWEEN_REMINDERS: 10
@@ -403318,7 +403398,7 @@ var init_cacheUtils = __esm(() => {
403318
403398
  init_commands3();
403319
403399
  init_outputStyles();
403320
403400
  init_loadAgentsDir();
403321
- init_prompt6();
403401
+ init_prompt7();
403322
403402
  init_attachments2();
403323
403403
  init_debug();
403324
403404
  init_errors();
@@ -410929,7 +411009,7 @@ var init_messages = __esm(() => {
410929
411009
  init_last();
410930
411010
  init_analytics();
410931
411011
  init_metadata();
410932
- init_prompt4();
411012
+ init_prompt5();
410933
411013
  init_outputStyles();
410934
411014
  init_paths();
410935
411015
  init_growthbook();
@@ -410945,13 +411025,13 @@ var init_messages = __esm(() => {
410945
411025
  init_planAgent();
410946
411026
  init_builtInAgents();
410947
411027
  init_constants2();
410948
- init_prompt9();
411028
+ init_prompt();
410949
411029
  init_BashTool();
410950
411030
  init_ExitPlanModeV2Tool();
410951
411031
  init_FileEditTool();
410952
- init_prompt2();
411032
+ init_prompt3();
410953
411033
  init_FileWriteTool();
410954
- init_prompt();
411034
+ init_prompt2();
410955
411035
  init_state();
410956
411036
  init_xml();
410957
411037
  init_planImplementationContract();
@@ -419044,7 +419124,7 @@ function Feedback({
419044
419124
  platform: env2.platform,
419045
419125
  gitRepo: envInfo.isGit,
419046
419126
  terminal: env2.terminal,
419047
- version: "1.65.12",
419127
+ version: "1.65.13",
419048
419128
  transcript: normalizeMessagesForAPI(messages),
419049
419129
  errors: sanitizedErrors,
419050
419130
  lastApiRequest: getLastAPIRequest(),
@@ -419236,7 +419316,7 @@ function Feedback({
419236
419316
  ", ",
419237
419317
  env2.terminal,
419238
419318
  ", v",
419239
- "1.65.12"
419319
+ "1.65.13"
419240
419320
  ]
419241
419321
  }, undefined, true, undefined, this)
419242
419322
  ]
@@ -419342,7 +419422,7 @@ ${sanitizedDescription}
419342
419422
  ` + `**Environment Info**
419343
419423
  ` + `- Platform: ${env2.platform}
419344
419424
  ` + `- Terminal: ${env2.terminal}
419345
- ` + `- Version: ${"1.65.12"}
419425
+ ` + `- Version: ${"1.65.13"}
419346
419426
  ` + `- Feedback ID: ${feedbackId}
419347
419427
  ` + `
419348
419428
  **Errors**
@@ -420511,7 +420591,7 @@ function clearSessionCaches(preservedAgentIds = new Set) {
420511
420591
  Promise.resolve().then(() => (init_utils11(), exports_utils2)).then(({ clearWebFetchCache: clearWebFetchCache2 }) => clearWebFetchCache2());
420512
420592
  Promise.resolve().then(() => (init_ToolSearchTool(), exports_ToolSearchTool)).then(({ clearToolSearchDescriptionCache: clearToolSearchDescriptionCache2 }) => clearToolSearchDescriptionCache2());
420513
420593
  Promise.resolve().then(() => (init_loadAgentsDir(), exports_loadAgentsDir)).then(({ clearAgentDefinitionsCache: clearAgentDefinitionsCache2 }) => clearAgentDefinitionsCache2());
420514
- Promise.resolve().then(() => (init_prompt6(), exports_prompt)).then(({ clearPromptCache: clearPromptCache2 }) => clearPromptCache2());
420594
+ Promise.resolve().then(() => (init_prompt7(), exports_prompt)).then(({ clearPromptCache: clearPromptCache2 }) => clearPromptCache2());
420515
420595
  }
420516
420596
  var init_caches = __esm(() => {
420517
420597
  init_state();
@@ -422452,7 +422532,7 @@ function buildPrimarySection() {
422452
422532
  }, undefined, false, undefined, this);
422453
422533
  return [{
422454
422534
  label: "Version",
422455
- value: "1.65.12"
422535
+ value: "1.65.13"
422456
422536
  }, {
422457
422537
  label: "Session name",
422458
422538
  value: nameValue
@@ -425782,7 +425862,7 @@ function Config({
425782
425862
  }
425783
425863
  }, undefined, false, undefined, this)
425784
425864
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
425785
- currentVersion: "1.65.12",
425865
+ currentVersion: "1.65.13",
425786
425866
  onChoice: (choice) => {
425787
425867
  setShowSubmenu(null);
425788
425868
  setTabsHidden(false);
@@ -425794,7 +425874,7 @@ function Config({
425794
425874
  autoUpdatesChannel: "stable"
425795
425875
  };
425796
425876
  if (choice === "stay") {
425797
- newSettings.minimumVersion = "1.65.12";
425877
+ newSettings.minimumVersion = "1.65.13";
425798
425878
  }
425799
425879
  updateSettingsForSource("userSettings", newSettings);
425800
425880
  setSettingsData((prev_27) => ({
@@ -427132,8 +427212,8 @@ function checkAutoCompactDisabled(data, suggestions) {
427132
427212
  }
427133
427213
  var LARGE_TOOL_RESULT_PERCENT = 15, LARGE_TOOL_RESULT_TOKENS = 1e4, READ_BLOAT_PERCENT = 5, NEAR_CAPACITY_PERCENT = 80, MEMORY_HIGH_PERCENT = 5, MEMORY_HIGH_TOKENS = 5000;
427134
427214
  var init_contextSuggestions = __esm(() => {
427215
+ init_prompt3();
427135
427216
  init_prompt2();
427136
- init_prompt();
427137
427217
  init_file();
427138
427218
  init_format2();
427139
427219
  });
@@ -433858,7 +433938,7 @@ function HelpV2(t0) {
433858
433938
  let t6;
433859
433939
  if ($2[31] !== tabs) {
433860
433940
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
433861
- title: `UR v${"1.65.12"}`,
433941
+ title: `UR v${"1.65.13"}`,
433862
433942
  color: "professionalBlue",
433863
433943
  defaultTab: "general",
433864
433944
  children: tabs
@@ -434791,7 +434871,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
434791
434871
  async function handleInitialize(options2) {
434792
434872
  return {
434793
434873
  name: "UR",
434794
- version: "1.65.12",
434874
+ version: "1.65.13",
434795
434875
  protocolVersion: "0.1.0",
434796
434876
  workspaceRoot: options2.cwd,
434797
434877
  capabilities: {
@@ -451899,7 +451979,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
451899
451979
  return [];
451900
451980
  }
451901
451981
  }
451902
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.65.12") {
451982
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.65.13") {
451903
451983
  if (process.env.USER_TYPE === "ant") {
451904
451984
  const changelog = "";
451905
451985
  if (changelog) {
@@ -451926,7 +452006,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.65.12")
451926
452006
  releaseNotes
451927
452007
  };
451928
452008
  }
451929
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.65.12") {
452009
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.65.13") {
451930
452010
  if (process.env.USER_TYPE === "ant") {
451931
452011
  const changelog = "";
451932
452012
  if (changelog) {
@@ -454792,7 +454872,7 @@ function getRecentActivitySync() {
454792
454872
  return cachedActivity;
454793
454873
  }
454794
454874
  function getLogoDisplayData() {
454795
- const version2 = process.env.DEMO_VERSION ?? "1.65.12";
454875
+ const version2 = process.env.DEMO_VERSION ?? "1.65.13";
454796
454876
  const serverUrl = getDirectConnectServerUrl();
454797
454877
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
454798
454878
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -455659,7 +455739,7 @@ function LogoV2() {
455659
455739
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
455660
455740
  t2 = () => {
455661
455741
  const currentConfig2 = getGlobalConfig();
455662
- if (currentConfig2.lastReleaseNotesSeen === "1.65.12") {
455742
+ if (currentConfig2.lastReleaseNotesSeen === "1.65.13") {
455663
455743
  return;
455664
455744
  }
455665
455745
  saveGlobalConfig(_temp325);
@@ -456344,12 +456424,12 @@ function LogoV2() {
456344
456424
  return t41;
456345
456425
  }
456346
456426
  function _temp325(current) {
456347
- if (current.lastReleaseNotesSeen === "1.65.12") {
456427
+ if (current.lastReleaseNotesSeen === "1.65.13") {
456348
456428
  return current;
456349
456429
  }
456350
456430
  return {
456351
456431
  ...current,
456352
- lastReleaseNotesSeen: "1.65.12"
456432
+ lastReleaseNotesSeen: "1.65.13"
456353
456433
  };
456354
456434
  }
456355
456435
  function _temp241(s_0) {
@@ -468433,7 +468513,7 @@ var init_RemoteSessionDetailDialog = __esm(() => {
468433
468513
  init_ink2();
468434
468514
  init_RemoteAgentTask();
468435
468515
  init_constants2();
468436
- init_prompt9();
468516
+ init_prompt();
468437
468517
  init_browser();
468438
468518
  init_errors();
468439
468519
  init_format2();
@@ -473289,7 +473369,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
473289
473369
  if (spec.name !== specName) {
473290
473370
  throw new Error("Agentic CI workflow spec name does not match");
473291
473371
  }
473292
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.65.12" : "1.65.12");
473372
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.65.13" : "1.65.13");
473293
473373
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
473294
473374
  throw new Error("invalid ur-agent package version");
473295
473375
  }
@@ -474282,7 +474362,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
474282
474362
  path: ".github/workflows/ur.yml",
474283
474363
  root: "project",
474284
474364
  content: compileAgenticCiWorkflow("default", {
474285
- packageVersion: typeof MACRO !== "undefined" ? "1.65.12" : "1.65.12"
474365
+ packageVersion: typeof MACRO !== "undefined" ? "1.65.13" : "1.65.13"
474286
474366
  })
474287
474367
  },
474288
474368
  {
@@ -474352,7 +474432,7 @@ function value(tokens, flag) {
474352
474432
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
474353
474433
  }
474354
474434
  function cliVersion() {
474355
- return typeof MACRO !== "undefined" ? "1.65.12" : "1.65.12";
474435
+ return typeof MACRO !== "undefined" ? "1.65.13" : "1.65.13";
474356
474436
  }
474357
474437
  function workflowPath(cwd2) {
474358
474438
  return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -480217,7 +480297,7 @@ function createAcpStdioApp(deps) {
480217
480297
  }
480218
480298
  },
480219
480299
  authMethods: [],
480220
- agentInfo: { name: "UR-Nexus", version: "1.65.12" }
480300
+ agentInfo: { name: "UR-Nexus", version: "1.65.13" }
480221
480301
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
480222
480302
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
480223
480303
  await runtime2.announce({
@@ -480314,7 +480394,7 @@ function createAcpStdioAgent(deps) {
480314
480394
  }
480315
480395
  },
480316
480396
  authMethods: [],
480317
- agentInfo: { name: "UR-Nexus", version: "1.65.12" }
480397
+ agentInfo: { name: "UR-Nexus", version: "1.65.13" }
480318
480398
  });
480319
480399
  return;
480320
480400
  case "authenticate":
@@ -691474,7 +691554,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
691474
691554
  smapsRollup,
691475
691555
  platform: process.platform,
691476
691556
  nodeVersion: process.version,
691477
- ccVersion: "1.65.12"
691557
+ ccVersion: "1.65.13"
691478
691558
  };
691479
691559
  }
691480
691560
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -692054,7 +692134,7 @@ var init_bridge_kick = __esm(() => {
692054
692134
  var call153 = async () => {
692055
692135
  return {
692056
692136
  type: "text",
692057
- value: "1.65.12"
692137
+ value: "1.65.13"
692058
692138
  };
692059
692139
  }, version2, version_default;
692060
692140
  var init_version = __esm(() => {
@@ -703234,7 +703314,7 @@ function generateHtmlReport(data, insights) {
703234
703314
  </html>`;
703235
703315
  }
703236
703316
  function buildExportData(data, insights, facets, remoteStats) {
703237
- const version3 = typeof MACRO !== "undefined" ? "1.65.12" : "unknown";
703317
+ const version3 = typeof MACRO !== "undefined" ? "1.65.13" : "unknown";
703238
703318
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
703239
703319
  const facets_summary = {
703240
703320
  total: facets.size,
@@ -707561,7 +707641,7 @@ var init_sessionStorage = __esm(() => {
707561
707641
  init_settings2();
707562
707642
  init_slowOperations();
707563
707643
  init_uuid();
707564
- VERSION7 = typeof MACRO !== "undefined" ? "1.65.12" : "unknown";
707644
+ VERSION7 = typeof MACRO !== "undefined" ? "1.65.13" : "unknown";
707565
707645
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
707566
707646
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
707567
707647
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -707799,7 +707879,7 @@ var init_memdir = __esm(() => {
707799
707879
  init_state();
707800
707880
  init_growthbook();
707801
707881
  init_analytics();
707802
- init_prompt();
707882
+ init_prompt2();
707803
707883
  init_constants4();
707804
707884
  init_debug();
707805
707885
  init_embeddedTools();
@@ -708729,7 +708809,7 @@ var init_filesystem = __esm(() => {
708729
708809
  init_agentMemory();
708730
708810
  init_state();
708731
708811
  init_growthbook();
708732
- init_prompt2();
708812
+ init_prompt3();
708733
708813
  init_cwd2();
708734
708814
  init_envUtils();
708735
708815
  init_fsOperations();
@@ -708776,7 +708856,7 @@ var init_filesystem = __esm(() => {
708776
708856
  });
708777
708857
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
708778
708858
  const nonce = randomBytes20(16).toString("hex");
708779
- return join230(getURTempDir(), "bundled-skills", "1.65.12", nonce);
708859
+ return join230(getURTempDir(), "bundled-skills", "1.65.13", nonce);
708780
708860
  });
708781
708861
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
708782
708862
  });
@@ -714629,17 +714709,17 @@ var init_prompts4 = __esm(() => {
714629
714709
  init_common2();
714630
714710
  init_settings2();
714631
714711
  init_constants2();
714712
+ init_prompt4();
714632
714713
  init_prompt3();
714633
- init_prompt2();
714634
714714
  init_model();
714635
714715
  init_antModels();
714636
714716
  init_providers();
714637
714717
  init_providerRegistry();
714638
714718
  init_commands3();
714639
714719
  init_outputStyles();
714640
- init_prompt();
714720
+ init_prompt2();
714641
714721
  init_embeddedTools();
714642
- init_prompt9();
714722
+ init_prompt();
714643
714723
  init_exploreAgent();
714644
714724
  init_builtInAgents();
714645
714725
  init_filesystem();
@@ -714649,7 +714729,7 @@ var init_prompts4 = __esm(() => {
714649
714729
  init_betas2();
714650
714730
  init_forkSubagent();
714651
714731
  init_systemPromptSections();
714652
- init_prompt8();
714732
+ init_prompt9();
714653
714733
  init_xml();
714654
714734
  init_debug();
714655
714735
  init_memdir();
@@ -715104,7 +715184,7 @@ function computeFingerprint(messageText2, version3) {
715104
715184
  }
715105
715185
  function computeFingerprintFromMessages(messages) {
715106
715186
  const firstMessageText = extractFirstMessageText(messages);
715107
- return computeFingerprint(firstMessageText, "1.65.12");
715187
+ return computeFingerprint(firstMessageText, "1.65.13");
715108
715188
  }
715109
715189
  var FINGERPRINT_SALT = "59cf53e54c78";
715110
715190
  var init_fingerprint = () => {};
@@ -715169,10 +715249,10 @@ function getAPIContextManagement(options4) {
715169
715249
  }
715170
715250
  var DEFAULT_MAX_INPUT_TOKENS = 180000, DEFAULT_TARGET_INPUT_TOKENS = 40000, TOOLS_CLEARABLE_RESULTS, TOOLS_CLEARABLE_USES;
715171
715251
  var init_apiMicrocompact = __esm(() => {
715172
- init_prompt2();
715173
715252
  init_prompt3();
715174
- init_prompt();
715175
- init_prompt5();
715253
+ init_prompt4();
715254
+ init_prompt2();
715255
+ init_prompt6();
715176
715256
  init_shellToolUtils();
715177
715257
  init_envUtils();
715178
715258
  TOOLS_CLEARABLE_RESULTS = [
@@ -716944,7 +717024,7 @@ var init_ur2 = __esm(() => {
716944
717024
  init_toolSearch();
716945
717025
  init_apiLimits();
716946
717026
  init_betas();
716947
- init_prompt7();
717027
+ init_prompt8();
716948
717028
  init_envValidation();
716949
717029
  init_json();
716950
717030
  init_bedrock();
@@ -717003,7 +717083,7 @@ async function sideQuery(opts) {
717003
717083
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
717004
717084
  }
717005
717085
  const messageText2 = extractFirstUserMessageText(messages);
717006
- const fingerprint2 = computeFingerprint(messageText2, "1.65.12");
717086
+ const fingerprint2 = computeFingerprint(messageText2, "1.65.13");
717007
717087
  const attributionHeader = getAttributionHeader(fingerprint2);
717008
717088
  const systemBlocks = [
717009
717089
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -721790,7 +721870,7 @@ function buildSystemInitMessage(inputs) {
721790
721870
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
721791
721871
  apiKeySource: getURHQApiKeyWithSource().source,
721792
721872
  betas: getSdkBetas(),
721793
- ur_version: "1.65.12",
721873
+ ur_version: "1.65.13",
721794
721874
  output_style: outputStyle2,
721795
721875
  agents: inputs.agents.map((agent2) => agent2.agentType),
721796
721876
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -735741,7 +735821,7 @@ var init_useVoiceEnabled = __esm(() => {
735741
735821
  function getSemverPart(version3) {
735742
735822
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
735743
735823
  }
735744
- function useUpdateNotification(updatedVersion, initialVersion = "1.65.12") {
735824
+ function useUpdateNotification(updatedVersion, initialVersion = "1.65.13") {
735745
735825
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react222.useState(() => getSemverPart(initialVersion));
735746
735826
  if (!updatedVersion) {
735747
735827
  return null;
@@ -735790,7 +735870,7 @@ function AutoUpdater({
735790
735870
  return;
735791
735871
  }
735792
735872
  if (false) {}
735793
- const currentVersion = "1.65.12";
735873
+ const currentVersion = "1.65.13";
735794
735874
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
735795
735875
  let latestVersion = await getLatestVersion(channel);
735796
735876
  const isDisabled = isAutoUpdaterDisabled();
@@ -736019,12 +736099,12 @@ function NativeAutoUpdater({
736019
736099
  logEvent("tengu_native_auto_updater_start", {});
736020
736100
  try {
736021
736101
  const maxVersion = await getMaxVersion();
736022
- if (maxVersion && gt("1.65.12", maxVersion)) {
736102
+ if (maxVersion && gt("1.65.13", maxVersion)) {
736023
736103
  const msg = await getMaxVersionMessage();
736024
736104
  setMaxVersionIssue(msg ?? "affects your version");
736025
736105
  }
736026
736106
  const result = await installLatest(channel);
736027
- const currentVersion = "1.65.12";
736107
+ const currentVersion = "1.65.13";
736028
736108
  const latencyMs = Date.now() - startTime;
736029
736109
  if (result.lockFailed) {
736030
736110
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -736161,17 +736241,17 @@ function PackageManagerAutoUpdater(t0) {
736161
736241
  const maxVersion = await getMaxVersion();
736162
736242
  if (maxVersion && latest && gt(latest, maxVersion)) {
736163
736243
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
736164
- if (gte("1.65.12", maxVersion)) {
736165
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.65.12"} is already at or above maxVersion ${maxVersion}, skipping update`);
736244
+ if (gte("1.65.13", maxVersion)) {
736245
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.65.13"} is already at or above maxVersion ${maxVersion}, skipping update`);
736166
736246
  setUpdateAvailable(false);
736167
736247
  return;
736168
736248
  }
736169
736249
  latest = maxVersion;
736170
736250
  }
736171
- const hasUpdate = latest && !gte("1.65.12", latest) && !shouldSkipVersion(latest);
736251
+ const hasUpdate = latest && !gte("1.65.13", latest) && !shouldSkipVersion(latest);
736172
736252
  setUpdateAvailable(!!hasUpdate);
736173
736253
  if (hasUpdate) {
736174
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.65.12"} -> ${latest}`);
736254
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.65.13"} -> ${latest}`);
736175
736255
  }
736176
736256
  };
736177
736257
  $2[0] = t1;
@@ -736205,7 +736285,7 @@ function PackageManagerAutoUpdater(t0) {
736205
736285
  wrap: "truncate",
736206
736286
  children: [
736207
736287
  "currentVersion: ",
736208
- "1.65.12"
736288
+ "1.65.13"
736209
736289
  ]
736210
736290
  }, undefined, true, undefined, this);
736211
736291
  $2[3] = verbose;
@@ -746925,7 +747005,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
746925
747005
  project_dir: getOriginalCwd(),
746926
747006
  added_dirs: addedDirs
746927
747007
  },
746928
- version: "1.65.12",
747008
+ version: "1.65.13",
746929
747009
  output_style: {
746930
747010
  name: outputStyleName
746931
747011
  },
@@ -747003,7 +747083,7 @@ function StatusLineInner({
747003
747083
  const taskValues = Object.values(tasks2);
747004
747084
  const taskRunningCount = countActiveBackgroundTasks(taskValues);
747005
747085
  const defaultStatusLineText = buildDefaultStatusBar({
747006
- version: "1.65.12",
747086
+ version: "1.65.13",
747007
747087
  providerLabel: providerRuntime.providerLabel,
747008
747088
  authMode: providerRuntime.authLabel,
747009
747089
  model: renderModelName(mainLoopModel) || providerRuntime.model || "",
@@ -759183,7 +759263,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
759183
759263
  } catch {}
759184
759264
  const data = {
759185
759265
  trigger: trigger2,
759186
- version: "1.65.12",
759266
+ version: "1.65.13",
759187
759267
  platform: process.platform,
759188
759268
  transcript,
759189
759269
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -759728,7 +759808,7 @@ var init_useMemorySurvey = __esm(() => {
759728
759808
  init_analytics();
759729
759809
  init_paths();
759730
759810
  init_policyLimits();
759731
- init_prompt2();
759811
+ init_prompt3();
759732
759812
  init_config();
759733
759813
  init_envUtils();
759734
759814
  init_memoryFileDetection();
@@ -770345,7 +770425,7 @@ var init_REPL = __esm(() => {
770345
770425
  init_ExitPlanModePermissionRequest();
770346
770426
  init_permissionSetup();
770347
770427
  init_filesystem();
770348
- init_prompt8();
770428
+ init_prompt9();
770349
770429
  init_bashPermissions();
770350
770430
  init_config();
770351
770431
  init_billing();
@@ -771548,7 +771628,7 @@ function WelcomeV2() {
771548
771628
  dimColor: true,
771549
771629
  children: [
771550
771630
  "v",
771551
- "1.65.12"
771631
+ "1.65.13"
771552
771632
  ]
771553
771633
  }, undefined, true, undefined, this)
771554
771634
  ]
@@ -772808,7 +772888,7 @@ function completeOnboarding() {
772808
772888
  saveGlobalConfig((current) => ({
772809
772889
  ...current,
772810
772890
  hasCompletedOnboarding: true,
772811
- lastOnboardingVersion: "1.65.12"
772891
+ lastOnboardingVersion: "1.65.13"
772812
772892
  }));
772813
772893
  }
772814
772894
  function showDialog(root2, renderer) {
@@ -774649,7 +774729,7 @@ Examples:
774649
774729
  /batch add type annotations to untyped functions`;
774650
774730
  var init_batch = __esm(() => {
774651
774731
  init_constants2();
774652
- init_prompt9();
774732
+ init_prompt();
774653
774733
  init_git();
774654
774734
  init_bundledSkills();
774655
774735
  WORKER_INSTRUCTIONS = `After implementing the assigned unit:
@@ -777194,7 +777274,7 @@ async function logSkillsLoaded(cwd2, contextWindowTokens) {
777194
777274
  var init_skillLoadedEvent = __esm(() => {
777195
777275
  init_commands3();
777196
777276
  init_analytics();
777197
- init_prompt6();
777277
+ init_prompt7();
777198
777278
  });
777199
777279
 
777200
777280
  // src/cli/exit.ts
@@ -777852,7 +777932,7 @@ function appendToLog(path24, message) {
777852
777932
  cwd: getFsImplementation().cwd(),
777853
777933
  userType: process.env.USER_TYPE,
777854
777934
  sessionId: getSessionId(),
777855
- version: "1.65.12"
777935
+ version: "1.65.13"
777856
777936
  };
777857
777937
  getLogWriter(path24).write(messageWithTimestamp);
777858
777938
  }
@@ -780736,10 +780816,10 @@ var init_remoteIO = __esm(() => {
780736
780816
  // src/utils/streamlinedTransform.ts
780737
780817
  var COMMAND_TOOLS;
780738
780818
  var init_streamlinedTransform = __esm(() => {
780739
- init_prompt2();
780740
780819
  init_prompt3();
780741
- init_prompt();
780742
- init_prompt5();
780820
+ init_prompt4();
780821
+ init_prompt2();
780822
+ init_prompt6();
780743
780823
  init_messages();
780744
780824
  init_shellToolUtils();
780745
780825
  init_stringUtils();
@@ -782016,8 +782096,8 @@ async function getEnvLessBridgeConfig() {
782016
782096
  }
782017
782097
  async function checkEnvLessBridgeMinVersion() {
782018
782098
  const cfg = await getEnvLessBridgeConfig();
782019
- if (cfg.min_version && lt("1.65.12", cfg.min_version)) {
782020
- return `Your version of UR (${"1.65.12"}) is too old for Remote Control.
782099
+ if (cfg.min_version && lt("1.65.13", cfg.min_version)) {
782100
+ return `Your version of UR (${"1.65.13"}) is too old for Remote Control.
782021
782101
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
782022
782102
  }
782023
782103
  return null;
@@ -782491,7 +782571,7 @@ async function initBridgeCore(params) {
782491
782571
  const rawApi = createBridgeApiClient({
782492
782572
  baseUrl,
782493
782573
  getAccessToken,
782494
- runnerVersion: "1.65.12",
782574
+ runnerVersion: "1.65.13",
782495
782575
  onDebug: logForDebugging,
782496
782576
  onAuth401,
782497
782577
  getTrustedDeviceToken
@@ -791964,7 +792044,7 @@ function getAgUiCapabilities() {
791964
792044
  name: "UR-Nexus",
791965
792045
  type: "ur-nexus",
791966
792046
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
791967
- version: "1.65.12",
792047
+ version: "1.65.13",
791968
792048
  provider: "UR",
791969
792049
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
791970
792050
  },
@@ -793104,7 +793184,7 @@ function createMCPServer(cwd4, debug2, verbose) {
793104
793184
  };
793105
793185
  const server2 = new Server({
793106
793186
  name: "ur-nexus",
793107
- version: "1.65.12"
793187
+ version: "1.65.13"
793108
793188
  }, {
793109
793189
  capabilities: {
793110
793190
  tools: {}
@@ -794262,7 +794342,7 @@ function thrownResponse(error40) {
794262
794342
  }
794263
794343
  async function createUrMcp2026Runtime(options4) {
794264
794344
  const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
794265
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.65.12" }, { capabilities: {} });
794345
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.65.13" }, { capabilities: {} });
794266
794346
  const [clientTransport, serverTransport] = createLinkedTransportPair();
794267
794347
  try {
794268
794348
  await server2.connect(serverTransport);
@@ -794273,7 +794353,7 @@ async function createUrMcp2026Runtime(options4) {
794273
794353
  }
794274
794354
  const runtime2 = new Mcp2026Runtime({
794275
794355
  cwd: options4.cwd,
794276
- version: "1.65.12",
794356
+ version: "1.65.13",
794277
794357
  backend: {
794278
794358
  listTools: async () => {
794279
794359
  const listed = await client2.listTools();
@@ -796406,7 +796486,7 @@ async function update() {
796406
796486
  logEvent("tengu_update_check", {});
796407
796487
  const diagnostic2 = await getDoctorDiagnostic();
796408
796488
  const result = await checkUpgradeStatus({
796409
- currentVersion: "1.65.12",
796489
+ currentVersion: "1.65.13",
796410
796490
  packageName: UR_AGENT_PACKAGE_NAME,
796411
796491
  installationType: diagnostic2.installationType,
796412
796492
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -797722,7 +797802,7 @@ ${customInstructions}` : customInstructions;
797722
797802
  }
797723
797803
  }
797724
797804
  logForDiagnosticsNoPII("info", "started", {
797725
- version: "1.65.12",
797805
+ version: "1.65.13",
797726
797806
  is_native_binary: isInBundledMode()
797727
797807
  });
797728
797808
  registerCleanup(async () => {
@@ -798508,7 +798588,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
798508
798588
  pendingHookMessages
798509
798589
  }, renderAndRun);
798510
798590
  }
798511
- }).version("1.65.12 (UR-Nexus)", "-v, --version", "Output the version number");
798591
+ }).version("1.65.13 (UR-Nexus)", "-v, --version", "Output the version number");
798512
798592
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
798513
798593
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
798514
798594
  if (canUserConfigureAdvisor()) {
@@ -799567,7 +799647,7 @@ if (false) {}
799567
799647
  async function main2() {
799568
799648
  const args = process.argv.slice(2);
799569
799649
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
799570
- console.log(`${"1.65.12"} (UR-Nexus)`);
799650
+ console.log(`${"1.65.13"} (UR-Nexus)`);
799571
799651
  return;
799572
799652
  }
799573
799653
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {