gitnexus 1.6.4-rc.108 → 1.6.4-rc.109

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/core/group/bridge-db.js +7 -6
  2. package/dist/core/wiki/llm-client.d.ts +16 -0
  3. package/dist/core/wiki/llm-client.js +41 -0
  4. package/dist/server/api.js +7 -2
  5. package/package.json +1 -1
  6. package/web/assets/{agent-q7VCTOVd.js → agent-BpHQleHE.js} +1 -1
  7. package/web/assets/architecture-YZFGNWBL-S5CXDPWN-BUzkWgDl.js +1 -0
  8. package/web/assets/{architectureDiagram-EMZXCZ2Q-uWddb3Wv.js → architectureDiagram-EMZXCZ2Q-CXbzok1G.js} +1 -1
  9. package/web/assets/{blockDiagram-IGV67L2C-0wBoLK9j.js → blockDiagram-IGV67L2C-DA1QJ4ZB.js} +1 -1
  10. package/web/assets/{c4Diagram-DFAF54RM-DA453tYx.js → c4Diagram-DFAF54RM-DeJV1rCn.js} +1 -1
  11. package/web/assets/{chunk-3GS5O3IE-evXhBw_k.js → chunk-3GS5O3IE-B8hpnia8.js} +1 -1
  12. package/web/assets/{chunk-3YCYZ6SJ-BXmbX_rE.js → chunk-3YCYZ6SJ-B-BVu21C.js} +1 -1
  13. package/web/assets/{chunk-6NTNNK5N-11RdA7JX.js → chunk-6NTNNK5N-DW-jYSDr.js} +1 -1
  14. package/web/assets/{chunk-A34GCYZU-BByQZjeQ.js → chunk-A34GCYZU-BbZl-IKy.js} +1 -1
  15. package/web/assets/{chunk-DJ7UZH7F-xhbJkUFi.js → chunk-DJ7UZH7F-B5tMfF87.js} +1 -1
  16. package/web/assets/{chunk-DKKBVRCY-Cmw0fXcn.js → chunk-DKKBVRCY-Djm-6K_e.js} +2 -2
  17. package/web/assets/{chunk-DU5LTGQ6-Dtz56B1b.js → chunk-DU5LTGQ6-QPoynYcp.js} +1 -1
  18. package/web/assets/{chunk-FXACKDTF-Cl0QmpYr.js → chunk-FXACKDTF-jieSmbe2.js} +1 -1
  19. package/web/assets/{chunk-H3VCZNTA-DC2pJiEx.js → chunk-H3VCZNTA-8EMHZ3SV.js} +1 -1
  20. package/web/assets/{chunk-HN6EAY2L-DtFDWbV-.js → chunk-HN6EAY2L-CgE_agsD.js} +1 -1
  21. package/web/assets/{chunk-O5ABG6QK-De5zgjYD.js → chunk-O5ABG6QK-DEZV1O19.js} +1 -1
  22. package/web/assets/{chunk-PK6DOVAG-pFt8UsNx.js → chunk-PK6DOVAG-BXv0JnsJ.js} +1 -1
  23. package/web/assets/{chunk-RNJOYNJ4-uUbWOYVA.js → chunk-RNJOYNJ4-BiBkF9dN.js} +1 -1
  24. package/web/assets/{chunk-RWUO3TPN-DAmKSqXw.js → chunk-RWUO3TPN-DTWzAhQ1.js} +1 -1
  25. package/web/assets/{chunk-TBF5ZNIQ-DgmPA9rn.js → chunk-TBF5ZNIQ-BSl6s9lT.js} +1 -1
  26. package/web/assets/{chunk-TYMNRAUI-B75s1K5d.js → chunk-TYMNRAUI-D1NDLIMG.js} +1 -1
  27. package/web/assets/{chunk-W7ZLLLMY-DGtkaUYW.js → chunk-W7ZLLLMY-Bu-cdLzs.js} +1 -1
  28. package/web/assets/{chunk-WSB5WSVC-0SZbeOZt.js → chunk-WSB5WSVC-Dor71SOz.js} +1 -1
  29. package/web/assets/{chunk-XGPFEOL4-DMo8J0ae.js → chunk-XGPFEOL4-CUonLRle.js} +1 -1
  30. package/web/assets/classDiagram-PPOCWD7C-Cdd6UdVv.js +1 -0
  31. package/web/assets/classDiagram-v2-23LJLIIU-DNhxY2Ib.js +1 -0
  32. package/web/assets/{cose-bilkent-PNC4W37J-Dj3ZFQam.js → cose-bilkent-PNC4W37J-DdZq7Qz_.js} +1 -1
  33. package/web/assets/{dagre-E77IOHMT-CPnPASE3.js → dagre-E77IOHMT-Cfj_6e17.js} +1 -1
  34. package/web/assets/{diagram-H7BISOXX-BboT-hE9.js → diagram-H7BISOXX-BNvpsrBv.js} +1 -1
  35. package/web/assets/{diagram-JC5VWROH-QUh-PWTS.js → diagram-JC5VWROH-Cn0rtDbJ.js} +1 -1
  36. package/web/assets/{diagram-LXUTUG65-CvPtUGk6.js → diagram-LXUTUG65-CHfoVKNm.js} +1 -1
  37. package/web/assets/{diagram-WEHSV5V5-CgFa27lW.js → diagram-WEHSV5V5-BLxHksnu.js} +1 -1
  38. package/web/assets/{erDiagram-GCSMX5X6-YSTAR_6M.js → erDiagram-GCSMX5X6-DfdN6iqF.js} +1 -1
  39. package/web/assets/{flowDiagram-OTCZ4VVT-Cw8bVXjN.js → flowDiagram-OTCZ4VVT-aAZw4c_M.js} +1 -1
  40. package/web/assets/{ganttDiagram-MUNLMDZQ-B2_9bc3G.js → ganttDiagram-MUNLMDZQ-BEfC_7Or.js} +1 -1
  41. package/web/assets/gitGraph-7Q5UKJZL-54BCDZD5-B6ZeRLP0.js +1 -0
  42. package/web/assets/{gitGraphDiagram-3HKGZ4G3-BEJUgjRX.js → gitGraphDiagram-3HKGZ4G3-CG0kC8Q5.js} +1 -1
  43. package/web/assets/{index-CdxpbNNk.js → index-3NUCUW2s.js} +117 -117
  44. package/web/assets/info-OMHHGYJF-BF2H5H6G-BIOsZy0W.js +1 -0
  45. package/web/assets/infoDiagram-MN7RKWGX-DUoMH-pq.js +2 -0
  46. package/web/assets/{ishikawaDiagram-YMYX4NHK-DEL6Xeew.js → ishikawaDiagram-YMYX4NHK-BF8AtDaj.js} +1 -1
  47. package/web/assets/{journeyDiagram-SO5T7YLQ-UxmQs4m5.js → journeyDiagram-SO5T7YLQ-BW8oKa3N.js} +1 -1
  48. package/web/assets/{kanban-definition-LJHFXRCJ-eJ9E5iPL.js → kanban-definition-LJHFXRCJ-DzbOsR-2.js} +1 -1
  49. package/web/assets/{mindmap-definition-2EUWGEK5-Cp5XKqSY.js → mindmap-definition-2EUWGEK5-BIXGQALq.js} +1 -1
  50. package/web/assets/packet-4T2RLAQJ-EV4IVRXR-Bs7ysNMU.js +1 -0
  51. package/web/assets/pie-ZZUOXDRM-N23DN5KN-Csi8nnbH.js +1 -0
  52. package/web/assets/{pieDiagram-3IATQBI2-BooWtnRw.js → pieDiagram-3IATQBI2-QY-u7P6a.js} +1 -1
  53. package/web/assets/{quadrantDiagram-E256RVCF-D5aGKGd9.js → quadrantDiagram-E256RVCF-Di4aNiU8.js} +1 -1
  54. package/web/assets/radar-PYXPWWZC-P6TP7ZYP-DJlyXh2-.js +1 -0
  55. package/web/assets/{requirementDiagram-M5DCFWZL-eI1K2joP.js → requirementDiagram-M5DCFWZL-CzUUrhQD.js} +1 -1
  56. package/web/assets/{sankeyDiagram-L3NBLAOT-B-awJgky.js → sankeyDiagram-L3NBLAOT-D2fbMiIU.js} +1 -1
  57. package/web/assets/{sequenceDiagram-ZOUHS735-C41jCD6J.js → sequenceDiagram-ZOUHS735-BNdkqguh.js} +1 -1
  58. package/web/assets/{stateDiagram-MLPALWAM-DU4si-0y.js → stateDiagram-MLPALWAM-51_Q2w2L.js} +1 -1
  59. package/web/assets/stateDiagram-v2-B5LQ5ZB2-8nHs2aNE.js +1 -0
  60. package/web/assets/{timeline-definition-5SPVSISX-Dc2bceqI.js → timeline-definition-5SPVSISX-DkMiGj4Z.js} +1 -1
  61. package/web/assets/treeView-SZITEDCU-5DXDK3XO-Cy6P0_CZ.js +1 -0
  62. package/web/assets/treemap-W4RFUUIX-WYLRDWKO-C_pp1R7A.js +1 -0
  63. package/web/assets/{vennDiagram-IE5QUKF5-DYH9WkA3.js → vennDiagram-IE5QUKF5-BCxMmf9q.js} +1 -1
  64. package/web/assets/wardley-RL74JXVD-BCRCBASE-CMStJhpn.js +1 -0
  65. package/web/assets/{wardleyDiagram-XU3VSMPF-CXKPXRcH.js → wardleyDiagram-XU3VSMPF-ijlLF77s.js} +1 -1
  66. package/web/assets/{xychartDiagram-ZHJ5623Y-3PzSFUNm.js → xychartDiagram-ZHJ5623Y-DZ7fP1_3.js} +1 -1
  67. package/web/index.html +1 -1
  68. package/web/assets/architecture-YZFGNWBL-S5CXDPWN-CPwjrPHD.js +0 -1
  69. package/web/assets/classDiagram-PPOCWD7C-FryhHqdJ.js +0 -1
  70. package/web/assets/classDiagram-v2-23LJLIIU-BhJlBoMC.js +0 -1
  71. package/web/assets/gitGraph-7Q5UKJZL-54BCDZD5-CQ4KN0Wl.js +0 -1
  72. package/web/assets/info-OMHHGYJF-BF2H5H6G-yIOpfA5M.js +0 -1
  73. package/web/assets/infoDiagram-MN7RKWGX-qz_F7URG.js +0 -2
  74. package/web/assets/packet-4T2RLAQJ-EV4IVRXR-LVm6CPp0.js +0 -1
  75. package/web/assets/pie-ZZUOXDRM-N23DN5KN-CKjAstYy.js +0 -1
  76. package/web/assets/radar-PYXPWWZC-P6TP7ZYP-J6XjDSBp.js +0 -1
  77. package/web/assets/stateDiagram-v2-B5LQ5ZB2-B2-ZfQA7.js +0 -1
  78. package/web/assets/treeView-SZITEDCU-5DXDK3XO-s3Gwfe6P.js +0 -1
  79. package/web/assets/treemap-W4RFUUIX-WYLRDWKO-Dpt3OGk5.js +0 -1
  80. package/web/assets/wardley-RL74JXVD-BCRCBASE-D-KmuM3s.js +0 -1
@@ -589,12 +589,13 @@ export async function openBridgeDbReadOnly(groupDir) {
589
589
  await new Promise((r) => setTimeout(r, delay));
590
590
  }
591
591
  }
592
- // Pino's NDJSON serialization is structurally injection-resistant
593
- // (CodeQL js/log-injection): groupDir and err.message are JSON-escaped
594
- // by the serializer, so no manual CRLF / U+2028 / ANSI sanitization is
595
- // needed. Demoted to debug only fires when the bridge truly gave up
596
- // after retries, and operators only need it at debug verbosity.
597
- bridgeLogger.debug({ groupDir, err: lastErr, attempts: LBUG_OPEN_RETRY_ATTEMPTS }, 'openBridgeDbReadOnly gave up');
592
+ // Strip CRLF from user-controlled strings before logging to close
593
+ // CodeQL js/log-injection. Pino's NDJSON serialization already
594
+ // JSON-escapes all values, but we sanitize here as a defence-in-depth
595
+ // measure so CodeQL can see the taint flow is broken.
596
+ const safeGroupDir = String(groupDir).replace(/[\r\n]/g, ' ');
597
+ const safeErrMsg = lastErr instanceof Error ? String(lastErr.message).replace(/[\r\n]/g, ' ') : undefined;
598
+ bridgeLogger.debug({ groupDir: safeGroupDir, errMsg: safeErrMsg, attempts: LBUG_OPEN_RETRY_ATTEMPTS }, 'openBridgeDbReadOnly gave up');
598
599
  return null;
599
600
  }
600
601
  /* ------------------------------------------------------------------ */
@@ -36,6 +36,22 @@ export declare function resolveLLMConfig(overrides?: Partial<LLMConfig>): Promis
36
36
  * Estimate token count from text (rough heuristic: ~4 chars per token).
37
37
  */
38
38
  export declare function estimateTokens(text: string): number;
39
+ /**
40
+ * Validate that a base URL supplied for LLM API calls is a safe HTTP/HTTPS
41
+ * endpoint (CWE-918 / CodeQL js/http-to-file-access).
42
+ *
43
+ * Allowed:
44
+ * - https:// with any hostname (public LLM APIs, Azure, OpenRouter, …)
45
+ * - http:// restricted to localhost / 127.0.0.1 (local servers: Ollama, LiteLLM, …)
46
+ *
47
+ * Rejected:
48
+ * - file://, data:, javascript:, and any other non-HTTP scheme
49
+ * - http:// aimed at non-loopback hosts (avoids SSRF against internal networks)
50
+ *
51
+ * Throws with a descriptive message on validation failure so callers surface a
52
+ * clear error rather than an opaque network error.
53
+ */
54
+ export declare function validateLLMBaseUrl(baseUrl: string): void;
39
55
  /**
40
56
  * Returns true if the given base URL is an Azure OpenAI endpoint.
41
57
  * Uses proper hostname matching to avoid spoofed URLs like
@@ -38,6 +38,45 @@ export async function resolveLLMConfig(overrides) {
38
38
  export function estimateTokens(text) {
39
39
  return Math.ceil(text.length / 4);
40
40
  }
41
+ /**
42
+ * Validate that a base URL supplied for LLM API calls is a safe HTTP/HTTPS
43
+ * endpoint (CWE-918 / CodeQL js/http-to-file-access).
44
+ *
45
+ * Allowed:
46
+ * - https:// with any hostname (public LLM APIs, Azure, OpenRouter, …)
47
+ * - http:// restricted to localhost / 127.0.0.1 (local servers: Ollama, LiteLLM, …)
48
+ *
49
+ * Rejected:
50
+ * - file://, data:, javascript:, and any other non-HTTP scheme
51
+ * - http:// aimed at non-loopback hosts (avoids SSRF against internal networks)
52
+ *
53
+ * Throws with a descriptive message on validation failure so callers surface a
54
+ * clear error rather than an opaque network error.
55
+ */
56
+ export function validateLLMBaseUrl(baseUrl) {
57
+ let parsed;
58
+ try {
59
+ parsed = new URL(baseUrl);
60
+ }
61
+ catch {
62
+ // Do not include the raw input in the message — it may contain credentials.
63
+ throw new Error('Invalid LLM base URL: must be a well-formed http:// or https:// URL');
64
+ }
65
+ if (!['https:', 'http:'].includes(parsed.protocol)) {
66
+ // Use parsed.protocol only (scheme), not the full URL, to avoid leaking credentials.
67
+ throw new Error(`LLM base URL must use http:// or https:// (got ${parsed.protocol})`);
68
+ }
69
+ if (parsed.protocol === 'http:') {
70
+ // Node's URL parser preserves IPv6 brackets in hostname (e.g. "[::1]"),
71
+ // so strip them before comparing to bare address literals.
72
+ const host = parsed.hostname.toLowerCase().replace(/^\[|\]$/g, '');
73
+ if (host !== 'localhost' && host !== '127.0.0.1' && host !== '::1') {
74
+ // Use parsed.origin (scheme+host+port, no credentials) instead of the full URL.
75
+ throw new Error(`Insecure http:// LLM base URLs are only allowed for localhost/127.0.0.1. ` +
76
+ `Use https:// for remote endpoints (got ${parsed.origin})`);
77
+ }
78
+ }
79
+ }
41
80
  /**
42
81
  * Returns true if the given base URL is an Azure OpenAI endpoint.
43
82
  * Uses proper hostname matching to avoid spoofed URLs like
@@ -79,6 +118,8 @@ export function buildRequestUrl(baseUrl, apiVersion) {
79
118
  * Retries up to 3 times on transient failures (429, 5xx, network errors).
80
119
  */
81
120
  export async function callLLM(prompt, config, systemPrompt, options) {
121
+ // Validate base URL before any fetch (CodeQL js/http-to-file-access)
122
+ validateLLMBaseUrl(config.baseUrl);
82
123
  const messages = [];
83
124
  if (systemPrompt) {
84
125
  messages.push({ role: 'system', content: systemPrompt });
@@ -638,7 +638,11 @@ export const createServer = async (port, host = '127.0.0.1') => {
638
638
  (job.repoPath && path.basename(job.repoPath).toLowerCase() === lower);
639
639
  if (isMatch && ['queued', 'cloning', 'analyzing'].includes(job.status)) {
640
640
  if (process.env.DEBUG) {
641
- console.log(`[debug] resolveRepo waiting for active job ${job.id} (${normalizedName})...`);
641
+ // Sanitize user-controlled values to prevent log injection (CodeQL js/log-injection).
642
+ logger.debug({
643
+ jobId: String(job.id).replace(/[\r\n]/g, ' '),
644
+ repoName: String(normalizedName).replace(/[\r\n]/g, ' '),
645
+ }, '[debug] resolveRepo waiting for active job');
642
646
  }
643
647
  for (let wait = 0; wait < HOLD_QUEUE_TIMEOUT_SECS; wait++) {
644
648
  if (clientGone)
@@ -662,7 +666,8 @@ export const createServer = async (port, host = '127.0.0.1') => {
662
666
  // (e.g. registry file not yet flushed after clone completes).
663
667
  if (!found && normalizedName && !isRetry) {
664
668
  if (process.env.DEBUG) {
665
- console.log(`[debug] resolveRepo 404 for "${normalizedName}". Triggering deep init...`);
669
+ // Sanitize user-controlled values to prevent log injection (CodeQL js/log-injection).
670
+ logger.debug({ repoName: String(normalizedName).replace(/[\r\n]/g, ' ') }, '[debug] resolveRepo 404, triggering deep init');
666
671
  }
667
672
  await backend.init();
668
673
  return await resolveRepo(normalizedName, true, req);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gitnexus",
3
- "version": "1.6.4-rc.108",
3
+ "version": "1.6.4-rc.109",
4
4
  "description": "Graph-powered code intelligence for AI agents. Index any codebase, query via MCP or CLI.",
5
5
  "author": "Abhigyan Patwari",
6
6
  "license": "PolyForm-Noncommercial-1.0.0",
@@ -1,4 +1,4 @@
1
- import{r as e,t}from"./chunk-CilyBKbf.js";import{Qn as n,Zn as r}from"./index-CdxpbNNk.js";import{buildDynamicSystemPrompt as i}from"./context-builder-CqQNhRj1.js";var a=Object.defineProperty,o=(e,t)=>{let n={};for(var r in e)a(n,r,{get:e[r],enumerable:!0});return t||a(n,Symbol.toStringTag,{value:`Module`}),n};function s(e){let t=Symbol.for(e);return{brand(n,r){let i=r?Symbol.for(`${e}.${r}`):t;class a extends n{[i]=!0;constructor(...e){super(...e)}static isInstance(e){return typeof e==`object`&&!!e&&i in e&&e[i]===!0}}return Object.defineProperty(a,`name`,{value:n.name}),a},sub(t){return s(`${e}.${t}`)},isInstance(e){return typeof e==`object`&&!!e&&t in e&&e[t]===!0}}}var c=s(`langchain`),l=o({ContextOverflowError:()=>m,LangChainError:()=>f,ModelAbortError:()=>p,addLangChainErrorFields:()=>u,ns:()=>d});function u(e,t){return e.lc_error_code=t,e.message=`${e.message}\n\nTroubleshooting URL: https://docs.langchain.com/oss/javascript/langchain/errors/${t}/\n`,e}var d=c.sub(`error`),f=class extends d.brand(Error){name=`LangChainError`;constructor(e){super(e),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},p=class extends d.brand(f,`model-abort`){name=`ModelAbortError`;partialOutput;constructor(e,t){super(e),this.partialOutput=t}},m=class e extends d.brand(f,`context-overflow`){name=`ContextOverflowError`;cause;constructor(e){super(e??`Input exceeded the model's context window.`)}static fromError(t){let n=new e(t.message);return n.cause=t,n}};function h(e){return!!(e&&typeof e==`object`&&`type`in e&&e.type===`tool_call`)}function g(e){return!!(e&&typeof e==`object`&&`toolCall`in e&&e.toolCall!=null&&typeof e.toolCall==`object`&&`id`in e.toolCall&&typeof e.toolCall.id==`string`)}var _=class extends Error{output;constructor(e,t){super(e),this.output=t}};function v(e,t=b){e=e.trim();let n=e.indexOf("```");if(n===-1)return t(e);let r=e.substring(n+3);r.startsWith(`json
1
+ import{r as e,t}from"./chunk-CilyBKbf.js";import{Qn as n,Zn as r}from"./index-3NUCUW2s.js";import{buildDynamicSystemPrompt as i}from"./context-builder-CqQNhRj1.js";var a=Object.defineProperty,o=(e,t)=>{let n={};for(var r in e)a(n,r,{get:e[r],enumerable:!0});return t||a(n,Symbol.toStringTag,{value:`Module`}),n};function s(e){let t=Symbol.for(e);return{brand(n,r){let i=r?Symbol.for(`${e}.${r}`):t;class a extends n{[i]=!0;constructor(...e){super(...e)}static isInstance(e){return typeof e==`object`&&!!e&&i in e&&e[i]===!0}}return Object.defineProperty(a,`name`,{value:n.name}),a},sub(t){return s(`${e}.${t}`)},isInstance(e){return typeof e==`object`&&!!e&&t in e&&e[t]===!0}}}var c=s(`langchain`),l=o({ContextOverflowError:()=>m,LangChainError:()=>f,ModelAbortError:()=>p,addLangChainErrorFields:()=>u,ns:()=>d});function u(e,t){return e.lc_error_code=t,e.message=`${e.message}\n\nTroubleshooting URL: https://docs.langchain.com/oss/javascript/langchain/errors/${t}/\n`,e}var d=c.sub(`error`),f=class extends d.brand(Error){name=`LangChainError`;constructor(e){super(e),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},p=class extends d.brand(f,`model-abort`){name=`ModelAbortError`;partialOutput;constructor(e,t){super(e),this.partialOutput=t}},m=class e extends d.brand(f,`context-overflow`){name=`ContextOverflowError`;cause;constructor(e){super(e??`Input exceeded the model's context window.`)}static fromError(t){let n=new e(t.message);return n.cause=t,n}};function h(e){return!!(e&&typeof e==`object`&&`type`in e&&e.type===`tool_call`)}function g(e){return!!(e&&typeof e==`object`&&`toolCall`in e&&e.toolCall!=null&&typeof e.toolCall==`object`&&`id`in e.toolCall&&typeof e.toolCall.id==`string`)}var _=class extends Error{output;constructor(e,t){super(e),this.output=t}};function v(e,t=b){e=e.trim();let n=e.indexOf("```");if(n===-1)return t(e);let r=e.substring(n+3);r.startsWith(`json
2
2
  `)?r=r.substring(5):r.startsWith(`json`)?r=r.substring(4):r.startsWith(`
3
3
  `)&&(r=r.substring(1));let i=r.indexOf("```"),a=r;return i!==-1&&(a=r.substring(0,i)),t(a.trim())}function y(e){try{return JSON.parse(e)}catch{}let t=e.trim();if(t.length===0)throw Error(`Unexpected end of JSON input`);let n=0;function r(){for(;n<t.length&&/\s/.test(t[n]);)n+=1}function i(){if(t[n]!==`"`)throw Error(`Expected '"' at position ${n}, got '${t[n]}'`);n+=1;let e=``,r=!1;for(;n<t.length;){let i=t[n];if(r){if(i===`n`)e+=`
4
4
  `;else if(i===`t`)e+=` `;else if(i===`r`)e+=`\r`;else if(i===`\\`)e+=`\\`;else if(i===`"`)e+=`"`;else if(i===`b`)e+=`\b`;else if(i===`f`)e+=`\f`;else if(i===`/`)e+=`/`;else if(i===`u`){let r=t.substring(n+1,n+5);if(/^[0-9A-Fa-f]{0,4}$/.test(r))r.length===4?e+=String.fromCharCode(Number.parseInt(r,16)):e+=`u${r}`,n+=r.length;else throw Error(`Invalid unicode escape sequence '\\u${r}' at position ${n}`)}else throw Error(`Invalid escape sequence '\\${i}' at position ${n}`);r=!1}else if(i===`\\`)r=!0;else if(i===`"`)return n+=1,e;else e+=i;n+=1}return r&&(e+=`\\`),e}function a(){let e=n,r=``;if(t[n]===`-`&&(r+=`-`,n+=1),n<t.length&&t[n]===`0`&&(r+=`0`,n+=1,t[n]>=`0`&&t[n]<=`9`))throw Error(`Invalid number at position ${e}`);if(n<t.length&&t[n]>=`1`&&t[n]<=`9`)for(;n<t.length&&t[n]>=`0`&&t[n]<=`9`;)r+=t[n],n+=1;if(n<t.length&&t[n]===`.`)for(r+=`.`,n+=1;n<t.length&&t[n]>=`0`&&t[n]<=`9`;)r+=t[n],n+=1;if(n<t.length&&(t[n]===`e`||t[n]===`E`))for(r+=t[n],n+=1,n<t.length&&(t[n]===`+`||t[n]===`-`)&&(r+=t[n],n+=1);n<t.length&&t[n]>=`0`&&t[n]<=`9`;)r+=t[n],n+=1;if(r===`-`)return-0;let i=Number.parseFloat(r);if(Number.isNaN(i))throw n=e,Error(`Invalid number '${r}' at position ${e}`);return i}function o(){if(r(),n>=t.length)throw Error(`Unexpected end of input at position ${n}`);let e=t[n];if(e===`{`)return c();if(e===`[`)return s();if(e===`"`)return i();if(`null`.startsWith(t.substring(n,n+4)))return n+=Math.min(4,t.length-n),null;if(`true`.startsWith(t.substring(n,n+4)))return n+=Math.min(4,t.length-n),!0;if(`false`.startsWith(t.substring(n,n+5)))return n+=Math.min(5,t.length-n),!1;if(e===`-`||e>=`0`&&e<=`9`)return a();throw Error(`Unexpected character '${e}' at position ${n}`)}function s(){if(t[n]!==`[`)throw Error(`Expected '[' at position ${n}, got '${t[n]}'`);let e=[];if(n+=1,r(),n>=t.length)return e;if(t[n]===`]`)return n+=1,e;for(;n<t.length;){if(r(),n>=t.length||(e.push(o()),r(),n>=t.length))return e;if(t[n]===`]`)return n+=1,e;if(t[n]===`,`){n+=1;continue}throw Error(`Expected ',' or ']' at position ${n}, got '${t[n]}'`)}return e}function c(){if(t[n]!==`{`)throw Error(`Expected '{' at position ${n}, got '${t[n]}'`);let e={};if(n+=1,r(),n>=t.length)return e;if(t[n]===`}`)return n+=1,e;for(;n<t.length;){if(r(),n>=t.length)return e;let a=i();if(r(),n>=t.length)return e;if(t[n]!==`:`)throw Error(`Expected ':' at position ${n}, got '${t[n]}'`);if(n+=1,r(),n>=t.length||(e[a]=o(),r(),n>=t.length))return e;if(t[n]===`}`)return n+=1,e;if(t[n]===`,`){n+=1;continue}throw Error(`Expected ',' or '}' at position ${n}, got '${t[n]}'`)}return e}let l=o();if(r(),n<t.length)throw Error(`Unexpected character '${t[n]}' at position ${n}`);return l}function b(e){try{return e===void 0?null:y(e)}catch{return null}}var ee=t(((e,t)=>{t.exports=function(e,t){if(typeof e!=`string`)throw TypeError(`Expected a string`);return t=t===void 0?`_`:t,e.replace(/([a-z\d])([A-Z])/g,`$1`+t+`$2`).replace(/([A-Z]+)([A-Z][a-z\d]+)/g,`$1`+t+`$2`).toLowerCase()}})),x=t(((e,t)=>{var n=/[\p{Lu}]/u,r=/[\p{Ll}]/u,i=/^[\p{Lu}](?![\p{Lu}])/gu,a=/([\p{Alpha}\p{N}_]|$)/u,o=/[_.\- ]+/,s=RegExp(`^`+o.source),c=new RegExp(o.source+a.source,`gu`),l=RegExp(`\\d+`+a.source,`gu`),u=(e,t,i)=>{let a=!1,o=!1,s=!1;for(let c=0;c<e.length;c++){let l=e[c];a&&n.test(l)?(e=e.slice(0,c)+`-`+e.slice(c),a=!1,s=o,o=!0,c++):o&&s&&r.test(l)?(e=e.slice(0,c-1)+`-`+e.slice(c-1),s=o,o=!1,a=!0):(a=t(l)===l&&i(l)!==l,s=o,o=i(l)===l&&t(l)!==l)}return e},d=(e,t)=>(i.lastIndex=0,e.replace(i,e=>t(e))),f=(e,t)=>(c.lastIndex=0,l.lastIndex=0,e.replace(c,(e,n)=>t(n)).replace(l,e=>t(e))),p=(e,t)=>{if(!(typeof e==`string`||Array.isArray(e)))throw TypeError("Expected the input to be `string | string[]`");if(t={pascalCase:!1,preserveConsecutiveUppercase:!1,...t},e=Array.isArray(e)?e.map(e=>e.trim()).filter(e=>e.length).join(`-`):e.trim(),e.length===0)return``;let n=t.locale===!1?e=>e.toLowerCase():e=>e.toLocaleLowerCase(t.locale),r=t.locale===!1?e=>e.toUpperCase():e=>e.toLocaleUpperCase(t.locale);return e.length===1?t.pascalCase?r(e):n(e):(e!==n(e)&&(e=u(e,n,r)),e=e.replace(s,``),e=t.preserveConsecutiveUppercase?d(e,n):n(e),t.pascalCase&&(e=r(e.charAt(0))+e.slice(1)),f(e,r))};t.exports=p,t.exports.default=p})),te=e(ee(),1),S=e(x(),1);function ne(e,t){return t?.[e]||(0,te.default)(e)}function re(e,t){return t?.[e]||(0,S.default)(e)}function ie(e,t,n){let r={};for(let i in e)Object.hasOwn(e,i)&&(r[t(i,n)]=e[i]);return r}var ae=`__lc_escaped__`;function oe(e){return`lc`in e||Object.keys(e).length===1&&`__lc_escaped__`in e}function se(e){return{[ae]:e}}function ce(e){return Object.keys(e).length===1&&`__lc_escaped__`in e}function C(e){return typeof e==`object`&&!!e&&`lc_serializable`in e&&typeof e.toJSON==`function`}function le(e){let t;return t=typeof e==`object`&&e?`lc_id`in e&&Array.isArray(e.lc_id)?e.lc_id:[e.constructor?.name??`Object`]:[typeof e],{lc:1,type:`not_implemented`,id:t}}function ue(e,t=new WeakSet){if(typeof e==`object`&&e&&!Array.isArray(e)){if(t.has(e))return le(e);if(C(e))return e;t.add(e);let n=e;if(oe(n))return t.delete(e),se(n);let r={};for(let[e,i]of Object.entries(n))r[e]=ue(i,t);return t.delete(e),r}return Array.isArray(e)?e.map(e=>ue(e,t)):e}function de(e){if(typeof e==`object`&&e&&!Array.isArray(e)){let t=e;if(ce(t))return t[ae];let n={};for(let[e,r]of Object.entries(t))n[e]=de(r);return n}return Array.isArray(e)?e.map(e=>de(e)):e}var fe=o({Serializable:()=>ge,get_lc_unique_name:()=>he});function pe(e){return Array.isArray(e)?[...e]:{...e}}function me(e,t){let n=pe(e);for(let[e,r]of Object.entries(t)){let[t,...i]=e.split(`.`).reverse(),a=n;for(let e of i.reverse()){if(a[e]===void 0)break;a[e]=pe(a[e]),a=a[e]}a[t]!==void 0&&(a[t]={lc:1,type:`secret`,id:[r]})}return n}function he(e){let t=Object.getPrototypeOf(e);return typeof e.lc_name==`function`&&(typeof t.lc_name!=`function`||e.lc_name()!==t.lc_name())?e.lc_name():e.name}var ge=class e{lc_serializable=!1;lc_kwargs;static lc_name(){return this.name}get lc_id(){return[...this.lc_namespace,he(this.constructor)]}get lc_secrets(){}get lc_attributes(){}get lc_aliases(){}get lc_serializable_keys(){}constructor(e,...t){this.lc_serializable_keys===void 0?this.lc_kwargs=e??{}:this.lc_kwargs=Object.fromEntries(Object.entries(e||{}).filter(([e])=>this.lc_serializable_keys?.includes(e)))}toJSON(){if(!this.lc_serializable||this.lc_kwargs instanceof e||typeof this.lc_kwargs!=`object`||Array.isArray(this.lc_kwargs))return this.toJSONNotImplemented();let t={},n={},r=Object.keys(this.lc_kwargs).reduce((e,t)=>(e[t]=t in this?this[t]:this.lc_kwargs[t],e),{});for(let e=Object.getPrototypeOf(this);e;e=Object.getPrototypeOf(e))Object.assign(t,Reflect.get(e,`lc_aliases`,this)),Object.assign(n,Reflect.get(e,`lc_secrets`,this)),Object.assign(r,Reflect.get(e,`lc_attributes`,this));Object.keys(n).forEach(e=>{let t=this,n=r,[i,...a]=e.split(`.`).reverse();for(let e of a.reverse()){if(!(e in t)||t[e]===void 0)return;(!(e in n)||n[e]===void 0)&&(typeof t[e]==`object`&&t[e]!=null?n[e]={}:Array.isArray(t[e])&&(n[e]=[])),t=t[e],n=n[e]}i in t&&t[i]!==void 0&&(n[i]=n[i]||t[i])});let i={},a=new WeakSet;a.add(this);for(let[e,t]of Object.entries(r))i[e]=ue(t,a);let o=ie(Object.keys(n).length?me(i,n):i,ne,t);return{lc:1,type:`constructor`,id:this.lc_id,kwargs:o}}toJSONNotImplemented(){return{lc:1,type:`not_implemented`,id:this.lc_id}}};function _e(e){return typeof e==`object`&&!!e&&`type`in e&&typeof e.type==`string`&&`source_type`in e&&(e.source_type===`url`||e.source_type===`base64`||e.source_type===`text`||e.source_type===`id`)}function ve(e){return _e(e)&&e.source_type===`url`&&`url`in e&&typeof e.url==`string`}function ye(e){return _e(e)&&e.source_type===`base64`&&`data`in e&&typeof e.data==`string`}function be(e){return _e(e)&&e.source_type===`text`&&`text`in e&&typeof e.text==`string`}function xe(e){return _e(e)&&e.source_type===`id`&&`id`in e&&typeof e.id==`string`}function Se(e){if(_e(e)){if(e.source_type===`url`)return{type:`image_url`,image_url:{url:e.url}};if(e.source_type===`base64`){if(!e.mime_type)throw Error(`mime_type key is required for base64 data.`);return{type:`image_url`,image_url:{url:`data:${e.mime_type};base64,${e.data}`}}}}throw Error(`Unsupported source type. Only 'url' and 'base64' are supported.`)}function Ce(e){let t=e.split(`;`)[0].split(`/`);if(t.length!==2)throw Error(`Invalid mime type: "${e}" - does not match type/subtype format.`);let n=t[0].trim(),r=t[1].trim();if(n===``||r===``)throw Error(`Invalid mime type: "${e}" - type or subtype is empty.`);let i={};for(let t of e.split(`;`).slice(1)){let n=t.split(`=`);if(n.length!==2)throw Error(`Invalid parameter syntax in mime type: "${e}".`);let r=n[0].trim(),a=n[1].trim();if(r===``)throw Error(`Invalid parameter syntax in mime type: "${e}".`);i[r]=a}return{type:n,subtype:r,parameters:i}}function we({dataUrl:e,asTypedArray:t=!1}){let n=e.match(/^data:(\w+\/\w+);base64,([A-Za-z0-9+/]+=*)$/),r;if(n){r=n[1].toLowerCase();let e=t?Uint8Array.from(atob(n[2]),e=>e.charCodeAt(0)):n[2];return{mime_type:r,data:e}}}function Te(e,t){if(e.type===`text`){if(!t.fromStandardTextBlock)throw Error(`Converter for ${t.providerName} does not implement \`fromStandardTextBlock\` method.`);return t.fromStandardTextBlock(e)}if(e.type===`image`){if(!t.fromStandardImageBlock)throw Error(`Converter for ${t.providerName} does not implement \`fromStandardImageBlock\` method.`);return t.fromStandardImageBlock(e)}if(e.type===`audio`){if(!t.fromStandardAudioBlock)throw Error(`Converter for ${t.providerName} does not implement \`fromStandardAudioBlock\` method.`);return t.fromStandardAudioBlock(e)}if(e.type===`file`){if(!t.fromStandardFileBlock)throw Error(`Converter for ${t.providerName} does not implement \`fromStandardFileBlock\` method.`);return t.fromStandardFileBlock(e)}throw Error(`Unable to convert content block type '${e.type}' to provider-specific format: not recognized.`)}function w(e,t){return T(e)&&e.type===t}function T(e){return typeof e==`object`&&!!e}function Ee(e){return Array.isArray(e)}function E(e){return typeof e==`string`}function De(e){return typeof e==`number`}function Oe(e){return e instanceof Uint8Array}function D(e){try{return JSON.parse(e)}catch{return}}var ke=e=>e();function Ae(e){if(e.type===`char_location`&&E(e.document_title)&&De(e.start_char_index)&&De(e.end_char_index)&&E(e.cited_text)){let{document_title:t,start_char_index:n,end_char_index:r,cited_text:i,...a}=e;return{...a,type:`citation`,source:`char`,title:t??void 0,startIndex:n,endIndex:r,citedText:i}}if(e.type===`page_location`&&E(e.document_title)&&De(e.start_page_number)&&De(e.end_page_number)&&E(e.cited_text)){let{document_title:t,start_page_number:n,end_page_number:r,cited_text:i,...a}=e;return{...a,type:`citation`,source:`page`,title:t??void 0,startIndex:n,endIndex:r,citedText:i}}if(e.type===`content_block_location`&&E(e.document_title)&&De(e.start_block_index)&&De(e.end_block_index)&&E(e.cited_text)){let{document_title:t,start_block_index:n,end_block_index:r,cited_text:i,...a}=e;return{...a,type:`citation`,source:`block`,title:t??void 0,startIndex:n,endIndex:r,citedText:i}}if(e.type===`web_search_result_location`&&E(e.url)&&E(e.title)&&E(e.encrypted_index)&&E(e.cited_text)){let{url:t,title:n,encrypted_index:r,cited_text:i,...a}=e;return{...a,type:`citation`,source:`url`,url:t,title:n,startIndex:Number(r),endIndex:Number(r),citedText:i}}if(e.type===`search_result_location`&&E(e.source)&&E(e.title)&&De(e.start_block_index)&&De(e.end_block_index)&&E(e.cited_text)){let{source:t,title:n,start_block_index:r,end_block_index:i,cited_text:a,...o}=e;return{...o,type:`citation`,source:`search`,url:t,title:n??void 0,startIndex:r,endIndex:i,citedText:a}}}function je(e){if(w(e,`document`)&&T(e.source)&&`type`in e.source){if(e.source.type===`base64`&&E(e.source.media_type)&&E(e.source.data))return{type:`file`,mimeType:e.source.media_type,data:e.source.data};if(e.source.type===`url`&&E(e.source.url))return{type:`file`,url:e.source.url};if(e.source.type===`file`&&E(e.source.file_id))return{type:`file`,fileId:e.source.file_id};if(e.source.type===`text`&&E(e.source.data))return{type:`file`,mimeType:String(e.source.media_type??`text/plain`),data:e.source.data}}else if(w(e,`image`)&&T(e.source)&&`type`in e.source){if(e.source.type===`base64`&&E(e.source.media_type)&&E(e.source.data))return{type:`image`,mimeType:e.source.media_type,data:e.source.data};if(e.source.type===`url`&&E(e.source.url))return{type:`image`,url:e.source.url};if(e.source.type===`file`&&E(e.source.file_id))return{type:`image`,fileId:e.source.file_id}}}function Me(e){function*t(){for(let t of e){let e=je(t);e?yield e:yield t}}return Array.from(t())}function Ne(e){function*t(){let t=typeof e.content==`string`?[{type:`text`,text:e.content}]:e.content;for(let n of t){if(w(n,`text`)&&E(n.text)){let{text:e,citations:t,...r}=n;if(Ee(t)&&t.length){let n=t.reduce((e,t)=>{let n=Ae(t);return n?[...e,n]:e},[]);yield{...r,type:`text`,text:e,annotations:n};continue}else{yield{...r,type:`text`,text:e};continue}}else if(w(n,`thinking`)&&E(n.thinking)){let{thinking:e,signature:t,...r}=n;yield{...r,type:`reasoning`,reasoning:e,signature:t};continue}else if(w(n,`redacted_thinking`)){yield{type:`non_standard`,value:n};continue}else if(w(n,`tool_use`)&&E(n.name)&&E(n.id)){yield{type:`tool_call`,id:n.id,name:n.name,args:n.input};continue}else if(w(n,`input_json_delta`)){if(Fe(e)&&e.tool_call_chunks?.length){let t=e.tool_call_chunks[0];yield{type:`tool_call_chunk`,id:t.id,name:t.name,args:t.args,index:t.index};continue}}else if(w(n,`server_tool_use`)&&E(n.name)&&E(n.id)){let{name:e,id:t}=n;if(e===`web_search`){yield{id:t,type:`server_tool_call`,name:`web_search`,args:{query:ke(()=>{if(typeof n.input==`string`)return n.input;if(T(n.input)&&E(n.input.query))return n.input.query;if(E(n.partial_json)){let e=D(n.partial_json);if(e?.query)return e.query}return``})}};continue}else if(n.name===`code_execution`){yield{id:t,type:`server_tool_call`,name:`code_execution`,args:{code:ke(()=>{if(typeof n.input==`string`)return n.input;if(T(n.input)&&E(n.input.code))return n.input.code;if(E(n.partial_json)){let e=D(n.partial_json);if(e?.code)return e.code}return``})}};continue}}else if(w(n,`web_search_tool_result`)&&E(n.tool_use_id)&&Ee(n.content)){let{content:e,tool_use_id:t}=n;yield{type:`server_tool_call_result`,name:`web_search`,toolCallId:t,status:`success`,output:{urls:e.reduce((e,t)=>w(t,`web_search_result`)?[...e,t.url]:e,[])}};continue}else if(w(n,`code_execution_tool_result`)&&E(n.tool_use_id)&&T(n.content)){yield{type:`server_tool_call_result`,name:`code_execution`,toolCallId:n.tool_use_id,status:`success`,output:n.content};continue}else if(w(n,`mcp_tool_use`)){yield{id:n.id,type:`server_tool_call`,name:`mcp_tool_use`,args:n.input};continue}else if(w(n,`mcp_tool_result`)&&E(n.tool_use_id)&&T(n.content)){yield{type:`server_tool_call_result`,name:`mcp_tool_use`,toolCallId:n.tool_use_id,status:`success`,output:n.content};continue}else if(w(n,`container_upload`)){yield{type:`server_tool_call`,name:`container_upload`,args:n.input};continue}else if(w(n,`search_result`)){yield{id:n.id,type:`non_standard`,value:n};continue}else if(w(n,`tool_result`)){yield{id:n.id,type:`non_standard`,value:n};continue}else{let e=je(n);if(e){yield e;continue}}yield{type:`non_standard`,value:n}}}return Array.from(t())}var Pe={translateContent:Ne,translateContentChunk:Ne};function Fe(e){return typeof e?._getType==`function`&&typeof e.concat==`function`&&e._getType()===`ai`}function Ie(e){return ve(e)?{type:e.type,mimeType:e.mime_type,url:e.url,metadata:e.metadata}:ye(e)?{type:e.type,mimeType:e.mime_type??`application/octet-stream`,data:e.data,metadata:e.metadata}:xe(e)?{type:e.type,mimeType:e.mime_type,fileId:e.id,metadata:e.metadata}:e}function Le(e){return e.map(Ie)}function Re(e){return!!(w(e,`image_url`)&&T(e.image_url)||w(e,`input_audio`)&&T(e.input_audio)||w(e,`file`)&&T(e.file))}function ze(e){if(w(e,`image_url`)&&T(e.image_url)&&E(e.image_url.url)){let t=we({dataUrl:e.image_url.url});return t?{type:`image`,mimeType:t.mime_type,data:t.data}:{type:`image`,url:e.image_url.url}}else if(w(e,`input_audio`)&&T(e.input_audio)&&E(e.input_audio.data)&&E(e.input_audio.format))return{type:`audio`,data:e.input_audio.data,mimeType:`audio/${e.input_audio.format}`};else if(w(e,`file`)&&T(e.file)&&E(e.file.data)){let t=we({dataUrl:e.file.data});if(t)return{type:`file`,data:t.data,mimeType:t.mime_type};if(E(e.file.file_id))return{type:`file`,fileId:e.file.file_id}}return e}function Be(e){let t=[];typeof e.content==`string`?e.content.length>0&&t.push({type:`text`,text:e.content}):t.push(...He(e.content));for(let n of e.tool_calls??[])t.push({type:`tool_call`,id:n.id,name:n.name,args:n.args});return t}function Ve(e){let t=[];typeof e.content==`string`?e.content.length>0&&t.push({type:`text`,text:e.content}):t.push(...He(e.content));for(let n of e.tool_calls??[])t.push({type:`tool_call`,id:n.id,name:n.name,args:n.args});return t}function He(e){let t=[];for(let n of e)Re(n)?t.push(ze(n)):t.push(n);return t}function Ue(e){if(e.type===`url_citation`){let{url:t,title:n,start_index:r,end_index:i}=e;return{type:`citation`,url:t,title:n,startIndex:r,endIndex:i}}if(e.type===`file_citation`){let{file_id:t,filename:n,index:r}=e;return{type:`citation`,title:n,startIndex:r,endIndex:r,fileId:t}}return e}function We(e){function*t(){T(e.additional_kwargs?.reasoning)&&Ee(e.additional_kwargs.reasoning.summary)&&(yield{type:`reasoning`,reasoning:e.additional_kwargs.reasoning.summary.reduce((e,t)=>T(t)&&E(t.text)?`${e}${t.text}`:e,``)});let t=typeof e.content==`string`?[{type:`text`,text:e.content}]:e.content;for(let e of t)if(w(e,`text`)){let{text:t,annotations:n,phase:r,extras:i,...a}=e,o=T(i)?{...i}:{};E(r)&&(o.phase=r);let s=Object.keys(o).length>0?{extras:o}:{};Array.isArray(n)?yield{...a,...s,type:`text`,text:String(t),annotations:n.map(Ue)}:yield{...a,...s,type:`text`,text:String(t)}}for(let t of e.tool_calls??[])yield{type:`tool_call`,id:t.id,name:t.name,args:t.args};if(T(e.additional_kwargs)&&Ee(e.additional_kwargs.tool_outputs))for(let t of e.additional_kwargs.tool_outputs){if(w(t,`web_search_call`)){let e={};if(T(t.action)&&E(t.action.query)&&(e.query=t.action.query),yield{id:t.id,type:`server_tool_call`,name:`web_search`,args:e},t.status===`completed`||t.status===`failed`){let e={};T(t.action)&&(e.action=t.action),yield{type:`server_tool_call_result`,toolCallId:E(t.id)?t.id:``,status:t.status===`completed`?`success`:`error`,output:e}}continue}else if(w(t,`file_search_call`)){yield{id:t.id,type:`server_tool_call`,name:`file_search`,args:{queries:Ee(t.queries)?t.queries:[]}},(t.status===`completed`||t.status===`failed`)&&(yield{type:`server_tool_call_result`,toolCallId:E(t.id)?t.id:``,status:t.status===`completed`?`success`:`error`,output:Ee(t.results)?{results:t.results}:{}});continue}else if(w(t,`computer_call`)){yield{type:`non_standard`,value:t};continue}else if(w(t,`code_interpreter_call`)){if(E(t.code)&&(yield{id:t.id,type:`server_tool_call`,name:`code_interpreter`,args:{code:t.code}}),Ee(t.outputs)){let e=ke(()=>{if(t.status!==`in_progress`){if(t.status===`completed`)return 0;if(t.status===`incomplete`)return 127;if(t.status!==`interpreting`&&t.status===`failed`)return 1}});for(let n of t.outputs)if(w(n,`logs`)){yield{type:`server_tool_call_result`,toolCallId:t.id??``,status:`success`,output:{type:`code_interpreter_output`,returnCode:e??0,stderr:[0,void 0].includes(e)?void 0:String(n.logs),stdout:[0,void 0].includes(e)?String(n.logs):void 0}};continue}}continue}else if(w(t,`mcp_call`)){yield{id:t.id,type:`server_tool_call`,name:`mcp_call`,args:t.input};continue}else if(w(t,`mcp_list_tools`)){yield{id:t.id,type:`server_tool_call`,name:`mcp_list_tools`,args:t.input};continue}else if(w(t,`mcp_approval_request`)){yield{type:`non_standard`,value:t};continue}else if(w(t,`tool_search_call`)){let e={};T(t.arguments)&&Object.assign(e,t.arguments);let n={};E(t.execution)&&(n.execution=t.execution),E(t.status)&&(n.status=t.status),E(t.call_id)&&(n.call_id=t.call_id),yield{id:E(t.id)?t.id:``,type:`server_tool_call`,name:`tool_search`,args:e,...Object.keys(n).length>0?{extras:n}:{}};continue}else if(w(t,`tool_search_output`)){let e={name:`tool_search`};E(t.execution)&&(e.execution=t.execution),yield{type:`server_tool_call_result`,toolCallId:E(t.id)?t.id:``,status:t.status===`completed`?`success`:t.status===`failed`?`error`:`success`,output:{tools:Ee(t.tools)?t.tools:[]},extras:e};continue}else if(w(t,`image_generation_call`)){E(t.result)&&(yield{type:`image`,mimeType:`image/png`,data:t.result,id:E(t.id)?t.id:void 0,metadata:{status:E(t.status)?t.status:void 0}}),yield{type:`non_standard`,value:t};continue}T(t)&&(yield{type:`non_standard`,value:t})}}return Array.from(t())}function Ge(e){function*t(){yield*We(e);for(let t of e.tool_call_chunks??[])yield{type:`tool_call_chunk`,id:t.id,name:t.name,args:t.args}}return Array.from(t())}var Ke={translateContent:e=>typeof e.content==`string`?Be(e):We(e),translateContentChunk:e=>typeof e.content==`string`?Ve(e):Ge(e)};function qe(e){return typeof e==`object`&&!!e&&`type`in e&&`content`in e&&(typeof e.content==`string`||Array.isArray(e.content))}function Je(e,t=`pretty`){return t===`pretty`?Ye(e):JSON.stringify(e)}function Ye(e){let t=[],n=` ${e.type.charAt(0).toUpperCase()+e.type.slice(1)} Message `,r=Math.floor((80-n.length)/2),i=`=`.repeat(r),a=n.length%2==0?i:`${i}=`;if(t.push(`${i}${n}${a}`),e.type===`ai`){let n=e;if(n.tool_calls&&n.tool_calls.length>0){t.push(`Tool Calls:`);for(let e of n.tool_calls){t.push(` ${e.name} (${e.id})`),t.push(` Call ID: ${e.id}`),t.push(` Args:`);for(let[n,r]of Object.entries(e.args))t.push(` ${n}: ${typeof r==`object`?JSON.stringify(r):r}`)}}}if(e.type===`tool`){let n=e;n.name&&t.push(`Name: ${n.name}`)}return typeof e.content==`string`&&e.content.trim()&&(t.length>1&&t.push(``),t.push(e.content)),t.join(`
@@ -0,0 +1 @@
1
+ import"./index-3NUCUW2s.js";import"./chunk-H3VCZNTA-8EMHZ3SV.js";import"./chunk-FXACKDTF-jieSmbe2.js";import{n as e}from"./chunk-XGPFEOL4-CUonLRle.js";export{e as createArchitectureServices};