@vm0/cli 9.264.6 → 9.264.8

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 (108) hide show
  1. package/{agent-NFKOUPGW.js → agent-4MCHGF7N.js} +20 -15
  2. package/{agent-NFKOUPGW.js.map → agent-4MCHGF7N.js.map} +1 -1
  3. package/{banking-WKLESFGH.js → banking-GXQ7POKU.js} +4 -4
  4. package/{browser-NN2XMVAB.js → browser-KSZXTUQA.js} +4 -4
  5. package/{chat-PLHTVSCS.js → chat-5WGKZHMB.js} +5 -5
  6. package/{chunk-TLQL2AEZ.js → chunk-2KEUNCZT.js} +2 -2
  7. package/{chunk-PS37YIUV.js → chunk-7WMNSSBC.js} +6 -6
  8. package/chunk-7WMNSSBC.js.map +1 -0
  9. package/{chunk-QSSPOZX4.js → chunk-AOHVC7EW.js} +3 -10
  10. package/chunk-AOHVC7EW.js.map +1 -0
  11. package/{chunk-BT3ABTGZ.js → chunk-B5VQCVCY.js} +29 -24
  12. package/chunk-B5VQCVCY.js.map +1 -0
  13. package/{chunk-SZKJGQN3.js → chunk-IYS3T6IA.js} +2 -2
  14. package/{chunk-TJCLIDBB.js → chunk-KCVBW7AC.js} +88 -56
  15. package/chunk-KCVBW7AC.js.map +1 -0
  16. package/{chunk-CQII6HHD.js → chunk-TCZ2FX3X.js} +2 -2
  17. package/{chunk-T2TA7M3V.js → chunk-WUJWUDPD.js} +9 -9
  18. package/{chunk-T2TA7M3V.js.map → chunk-WUJWUDPD.js.map} +1 -1
  19. package/{chunk-UXFHS4TN.js → chunk-XAVHX57D.js} +2 -2
  20. package/{chunk-ITMUR6VM.js → chunk-YV3LWRZZ.js} +26 -8
  21. package/{chunk-ITMUR6VM.js.map → chunk-YV3LWRZZ.js.map} +1 -1
  22. package/{computer-use-IBGH6OVN.js → computer-use-7IYJ2JNT.js} +4 -4
  23. package/{connector-CCER5CQL.js → connector-RUCYHNTI.js} +119 -108
  24. package/connector-RUCYHNTI.js.map +1 -0
  25. package/{credit-HSHPMXU3.js → credit-SWBRMGXY.js} +5 -5
  26. package/{developer-support-2CGBXFV4.js → developer-support-FTYPJJ6Q.js} +4 -4
  27. package/{doctor-R2IQKYEY.js → doctor-6AOKR5UU.js} +5 -5
  28. package/{feishu-SKYGH6QT.js → feishu-VHY2XR6D.js} +4 -4
  29. package/{finance-GE4FE6TN.js → finance-4ZD3LPNN.js} +4 -4
  30. package/{generate-RUJGAGFQ.js → generate-ULUL52MM.js} +31 -25
  31. package/generate-ULUL52MM.js.map +1 -0
  32. package/{github-W7KSXMZP.js → github-A3C3OGLD.js} +4 -4
  33. package/{goal-VXWY6C3V.js → goal-EB5VK2GK.js} +4 -4
  34. package/{host-O5EMPSHG.js → host-BYHZZN2I.js} +4 -4
  35. package/{logs-LFUSMYNU.js → logs-IFUUWA54.js} +6 -6
  36. package/{mail-SDSQJPCI.js → mail-YI5KA3CI.js} +15 -15
  37. package/mail-YI5KA3CI.js.map +1 -0
  38. package/{maps-BKUSG2LY.js → maps-KTC5S7FA.js} +4 -4
  39. package/{model-V6FQHH3J.js → model-AYKQFU7E.js} +5 -5
  40. package/{model-provider-2ZR7K6W4.js → model-provider-4MKVAZCR.js} +5 -5
  41. package/{org-ECIWP3L7.js → org-IZAWNWIE.js} +4 -4
  42. package/package.json +1 -1
  43. package/{people-search-GJJ5V7WA.js → people-search-J45HXJB3.js} +4 -4
  44. package/{phone-3M7R34MY.js → phone-YSGX6TYA.js} +4 -4
  45. package/{preference-GOHQTW4K.js → preference-O6URTHMQ.js} +4 -4
  46. package/{resource-SXBXSSPC.js → resource-FKEP5R3M.js} +4 -4
  47. package/{scrape-UPNZ7CMK.js → scrape-TO3EO4NH.js} +4 -4
  48. package/{search-J26P4FUR.js → search-PUZI5HRX.js} +6 -6
  49. package/{secret-RBN4W2ZK.js → secret-6PYNLRMC.js} +4 -4
  50. package/{slack-WMUDE7VL.js → slack-6TBB72IQ.js} +4 -4
  51. package/{teams-PUTH6RUN.js → teams-TCTUKRSH.js} +4 -4
  52. package/{telegram-S2SCMOFZ.js → telegram-PD2GOYYR.js} +4 -4
  53. package/{upgrade-VELUTFX5.js → upgrade-GOWPZRKS.js} +3 -3
  54. package/{variable-LCYRMKHM.js → variable-RNHRIK7S.js} +4 -4
  55. package/{video-SYOI42DX.js → video-HWANWKDT.js} +3 -3
  56. package/{weather-F7F2TFQY.js → weather-IWQDSXJG.js} +4 -4
  57. package/{web-WXR5ZZKB.js → web-5RDGLDVJ.js} +4 -4
  58. package/{web-search-3XU46YJ5.js → web-search-7SV3KXHO.js} +4 -4
  59. package/{whoami-YWISHB6R.js → whoami-CUHEGGL2.js} +12 -12
  60. package/whoami-CUHEGGL2.js.map +1 -0
  61. package/{workflow-JQ7JC62W.js → workflow-UGDNPUJG.js} +5 -5
  62. package/zero.js +43 -43
  63. package/chunk-BT3ABTGZ.js.map +0 -1
  64. package/chunk-PS37YIUV.js.map +0 -1
  65. package/chunk-QSSPOZX4.js.map +0 -1
  66. package/chunk-TJCLIDBB.js.map +0 -1
  67. package/connector-CCER5CQL.js.map +0 -1
  68. package/generate-RUJGAGFQ.js.map +0 -1
  69. package/mail-SDSQJPCI.js.map +0 -1
  70. package/whoami-YWISHB6R.js.map +0 -1
  71. /package/{banking-WKLESFGH.js.map → banking-GXQ7POKU.js.map} +0 -0
  72. /package/{browser-NN2XMVAB.js.map → browser-KSZXTUQA.js.map} +0 -0
  73. /package/{chat-PLHTVSCS.js.map → chat-5WGKZHMB.js.map} +0 -0
  74. /package/{chunk-TLQL2AEZ.js.map → chunk-2KEUNCZT.js.map} +0 -0
  75. /package/{chunk-SZKJGQN3.js.map → chunk-IYS3T6IA.js.map} +0 -0
  76. /package/{chunk-CQII6HHD.js.map → chunk-TCZ2FX3X.js.map} +0 -0
  77. /package/{chunk-UXFHS4TN.js.map → chunk-XAVHX57D.js.map} +0 -0
  78. /package/{computer-use-IBGH6OVN.js.map → computer-use-7IYJ2JNT.js.map} +0 -0
  79. /package/{credit-HSHPMXU3.js.map → credit-SWBRMGXY.js.map} +0 -0
  80. /package/{developer-support-2CGBXFV4.js.map → developer-support-FTYPJJ6Q.js.map} +0 -0
  81. /package/{doctor-R2IQKYEY.js.map → doctor-6AOKR5UU.js.map} +0 -0
  82. /package/{feishu-SKYGH6QT.js.map → feishu-VHY2XR6D.js.map} +0 -0
  83. /package/{finance-GE4FE6TN.js.map → finance-4ZD3LPNN.js.map} +0 -0
  84. /package/{github-W7KSXMZP.js.map → github-A3C3OGLD.js.map} +0 -0
  85. /package/{goal-VXWY6C3V.js.map → goal-EB5VK2GK.js.map} +0 -0
  86. /package/{host-O5EMPSHG.js.map → host-BYHZZN2I.js.map} +0 -0
  87. /package/{logs-LFUSMYNU.js.map → logs-IFUUWA54.js.map} +0 -0
  88. /package/{maps-BKUSG2LY.js.map → maps-KTC5S7FA.js.map} +0 -0
  89. /package/{model-V6FQHH3J.js.map → model-AYKQFU7E.js.map} +0 -0
  90. /package/{model-provider-2ZR7K6W4.js.map → model-provider-4MKVAZCR.js.map} +0 -0
  91. /package/{org-ECIWP3L7.js.map → org-IZAWNWIE.js.map} +0 -0
  92. /package/{people-search-GJJ5V7WA.js.map → people-search-J45HXJB3.js.map} +0 -0
  93. /package/{phone-3M7R34MY.js.map → phone-YSGX6TYA.js.map} +0 -0
  94. /package/{preference-GOHQTW4K.js.map → preference-O6URTHMQ.js.map} +0 -0
  95. /package/{resource-SXBXSSPC.js.map → resource-FKEP5R3M.js.map} +0 -0
  96. /package/{scrape-UPNZ7CMK.js.map → scrape-TO3EO4NH.js.map} +0 -0
  97. /package/{search-J26P4FUR.js.map → search-PUZI5HRX.js.map} +0 -0
  98. /package/{secret-RBN4W2ZK.js.map → secret-6PYNLRMC.js.map} +0 -0
  99. /package/{slack-WMUDE7VL.js.map → slack-6TBB72IQ.js.map} +0 -0
  100. /package/{teams-PUTH6RUN.js.map → teams-TCTUKRSH.js.map} +0 -0
  101. /package/{telegram-S2SCMOFZ.js.map → telegram-PD2GOYYR.js.map} +0 -0
  102. /package/{upgrade-VELUTFX5.js.map → upgrade-GOWPZRKS.js.map} +0 -0
  103. /package/{variable-LCYRMKHM.js.map → variable-RNHRIK7S.js.map} +0 -0
  104. /package/{video-SYOI42DX.js.map → video-HWANWKDT.js.map} +0 -0
  105. /package/{weather-F7F2TFQY.js.map → weather-IWQDSXJG.js.map} +0 -0
  106. /package/{web-WXR5ZZKB.js.map → web-5RDGLDVJ.js.map} +0 -0
  107. /package/{web-search-3XU46YJ5.js.map → web-search-7SV3KXHO.js.map} +0 -0
  108. /package/{workflow-JQ7JC62W.js.map → workflow-UGDNPUJG.js.map} +0 -0
@@ -6,7 +6,7 @@ import {
6
6
  getActiveToken,
7
7
  getBaseUrl,
8
8
  headersWithCliClientHeaders
9
- } from "./chunk-TLQL2AEZ.js";
9
+ } from "./chunk-2KEUNCZT.js";
10
10
  import {
11
11
  init_esm_shims
12
12
  } from "./chunk-GPYQ24DR.js";
@@ -648,4 +648,4 @@ export {
648
648
  generateWebVideo,
649
649
  transcribeAudio
650
650
  };
651
- //# sourceMappingURL=chunk-CQII6HHD.js.map
651
+ //# sourceMappingURL=chunk-TCZ2FX3X.js.map
@@ -4,7 +4,7 @@ const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  getZeroAgent,
6
6
  getZeroAgentUserConnectors
7
- } from "./chunk-TJCLIDBB.js";
7
+ } from "./chunk-KCVBW7AC.js";
8
8
  import {
9
9
  init_esm_shims
10
10
  } from "./chunk-GPYQ24DR.js";
@@ -254,17 +254,17 @@ function searchPublicConnectorCatalog(connectors, keyword, limit) {
254
254
  total: hits.length
255
255
  };
256
256
  }
257
- function findConnectorStatusItem(connectors, connectorRef) {
257
+ function findConnectorStatusItem(connectors, connectorSlug) {
258
258
  const exact = connectors.find((connector) => {
259
- return connector.connectorRef === connectorRef;
259
+ return connector.connectorRef === connectorSlug;
260
260
  });
261
261
  if (exact) return exact;
262
- const lower = connectorRef.toLowerCase();
262
+ const lower = connectorSlug.toLowerCase();
263
263
  return connectors.find((connector) => {
264
264
  return connector.connectorRef.toLowerCase() === lower;
265
265
  }) ?? null;
266
266
  }
267
- function availableConnectorRefs(connectors) {
267
+ function availableConnectorSlugs(connectors) {
268
268
  return connectors.map((connector) => {
269
269
  return connector.connectorRef;
270
270
  }).join(", ");
@@ -322,14 +322,14 @@ init_esm_shims();
322
322
  async function resolveAgentContext(flagAgentId) {
323
323
  const agentId = flagAgentId ?? process.env.ZERO_AGENT_ID;
324
324
  if (!agentId) return null;
325
- const [agent, enabledTypes] = await Promise.all([
325
+ const [agent, enabledConnectorSlugs] = await Promise.all([
326
326
  getZeroAgent(agentId),
327
327
  getZeroAgentUserConnectors(agentId)
328
328
  ]);
329
329
  return {
330
330
  agentId: agent.agentId,
331
331
  displayName: agent.displayName ?? agent.agentId,
332
- authorizedTypes: new Set(enabledTypes)
332
+ authorizedConnectorSlugs: new Set(enabledConnectorSlugs)
333
333
  };
334
334
  }
335
335
 
@@ -343,8 +343,8 @@ export {
343
343
  printCallbackTurnInstruction,
344
344
  searchPublicConnectorCatalog,
345
345
  findConnectorStatusItem,
346
- availableConnectorRefs,
346
+ availableConnectorSlugs,
347
347
  resolveManualGrantAuthMethod,
348
348
  resolveAgentContext
349
349
  };
350
- //# sourceMappingURL=chunk-T2TA7M3V.js.map
350
+ //# sourceMappingURL=chunk-WUJWUDPD.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/zero/connector/action-url.ts","../src/commands/zero/connector/public-catalog.ts","../src/commands/zero/connector/agent-context.ts"],"sourcesContent":["export const CALLBACK_PROMPT_PLACEHOLDER =\n \"SOMETHING_AGENT_WANT_TO_BE_CALLBACK\";\n\nexport function connectorActionCallbackAvailable(): boolean {\n return Boolean(process.env.ZERO_CHAT_THREAD_ID?.trim());\n}\n\nfunction currentChatThreadId(agentId: string | undefined): string | null {\n const threadId = process.env.ZERO_CHAT_THREAD_ID?.trim();\n const currentAgentId = process.env.ZERO_AGENT_ID?.trim();\n if (!threadId || !currentAgentId || agentId !== currentAgentId) {\n return null;\n }\n return threadId;\n}\n\nexport function currentChatSupportsActionCallback(\n agentId: string | undefined,\n): boolean {\n return currentChatThreadId(agentId) !== null;\n}\n\nfunction addCallbackSearchParams(\n params: URLSearchParams,\n threadId: string,\n callbackPrompt: string,\n): void {\n params.set(\"threadId\", threadId);\n params.set(\"callbackPrompt\", callbackPrompt);\n}\n\nexport function addRequestedCallbackSearchParams(\n params: URLSearchParams,\n callbackPrompt: string | undefined,\n agentId: string | undefined,\n): void {\n if (callbackPrompt === undefined) {\n return;\n }\n\n const normalizedPrompt = callbackPrompt.trim();\n if (!normalizedPrompt) {\n throw new Error(\"--callback-prompt cannot be empty\");\n }\n\n const threadId = currentChatThreadId(agentId);\n if (!threadId) {\n throw new Error(\n \"--callback-prompt can only target the current Zero web chat thread and agent\",\n );\n }\n addCallbackSearchParams(params, threadId, normalizedPrompt);\n}\n\nexport function connectorActionUrl(args: {\n readonly origin: string;\n readonly path: string;\n readonly agentId?: string;\n}): string {\n const url = new URL(args.path, args.origin);\n if (args.agentId) {\n url.searchParams.set(\"agentId\", args.agentId);\n }\n return url.toString();\n}\n\nfunction callbackActionUrlExample(\n actionUrl: string,\n agentId: string | undefined,\n): string | null {\n const threadId = currentChatThreadId(agentId);\n if (!threadId) {\n return null;\n }\n\n const url = new URL(actionUrl);\n addCallbackSearchParams(\n url.searchParams,\n threadId,\n CALLBACK_PROMPT_PLACEHOLDER,\n );\n return url.toString();\n}\n\nexport function printCallbackActionUrlExample(\n actionUrl: string,\n agentId: string | undefined,\n): void {\n const callbackUrl = callbackActionUrlExample(actionUrl, agentId);\n if (!callbackUrl) {\n return;\n }\n\n console.log(\"\");\n console.log(\n \"Or, if this is the only connector or permission action needed, use the callback URL below. After the user completes this action, Zero will automatically start the next round with the callback prompt:\",\n );\n console.log(callbackUrl);\n}\n\nexport function printCallbackTurnInstruction(): void {\n console.log(\"\");\n console.log(\n \"After sharing this callback URL, end the current turn. When the user completes the action, Zero will automatically start the next round with the callback prompt.\",\n );\n}\n","import type {\n PublicConnectorCatalogAuthMethodDetail,\n PublicConnectorCatalogItem,\n PublicConnectorCatalogStatusItem,\n} from \"@vm0/api-contracts/contracts/zero-connector-catalog\";\n\nexport type PublicConnectorStatus = PublicConnectorCatalogStatusItem;\n\ninterface PublicConnectorSearchResult {\n readonly connector: PublicConnectorStatus;\n readonly score: number;\n readonly matchedField: string;\n}\n\ninterface PublicConnectorSearchOutput {\n readonly results: readonly PublicConnectorSearchResult[];\n readonly total: number;\n}\n\nconst TOKEN_BOUNDARY = /[_\\-\\s]+/;\nconst CASE_BOUNDARY = /(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])/;\nconst MIN_SCORE = 10;\n\nfunction tokenize(input: string): Set<string> {\n const tokens = new Set<string>();\n for (const chunk of input.split(TOKEN_BOUNDARY)) {\n if (!chunk) continue;\n for (const sub of chunk.split(CASE_BOUNDARY)) {\n const lower = sub.toLowerCase();\n if (lower) tokens.add(lower);\n }\n }\n return tokens;\n}\n\nfunction publicStrings(connector: PublicConnectorCatalogItem): string[] {\n return [\n connector.connectorRef,\n connector.label,\n connector.description,\n connector.category,\n ...connector.tags,\n ...connector.generation,\n ...connector.authMethods.flatMap((authMethod) => {\n return [\n authMethod.id,\n authMethod.label,\n ...(authMethod.description ? [authMethod.description] : []),\n ];\n }),\n ];\n}\n\ntype ScoreHit = { score: number; matchedField: string };\n\nfunction best(candidates: readonly (ScoreHit | null)[]): ScoreHit | null {\n return candidates.reduce<ScoreHit | null>((bestHit, hit) => {\n if (!hit) return bestHit;\n if (!bestHit || hit.score > bestHit.score) return hit;\n return bestHit;\n }, null);\n}\n\nfunction scoreExact(\n keywordLower: string,\n skipPrivateIdentifierMatches: boolean,\n connector: PublicConnectorStatus,\n): ScoreHit | null {\n if (connector.connectorRef.toLowerCase() === keywordLower) {\n return { score: 100, matchedField: \"connectorRef\" };\n }\n if (connector.label.toLowerCase() === keywordLower) {\n return { score: 80, matchedField: \"label\" };\n }\n for (const tag of connector.tags) {\n if (skipPrivateIdentifierMatches && tag.includes(\"_\")) continue;\n if (tag.toLowerCase() === keywordLower) {\n return { score: 70, matchedField: `tag:${tag}` };\n }\n }\n for (const generationType of connector.generation) {\n if (generationType.toLowerCase() === keywordLower) {\n return { score: 65, matchedField: `generation:${generationType}` };\n }\n }\n for (const authMethod of connector.authMethods) {\n if (authMethod.id.toLowerCase() === keywordLower) {\n return { score: 60, matchedField: `auth-method:${authMethod.id}` };\n }\n if (authMethod.label.toLowerCase() === keywordLower) {\n return { score: 60, matchedField: `auth-method:${authMethod.label}` };\n }\n }\n if (connector.category.toLowerCase() === keywordLower) {\n return { score: 55, matchedField: \"category\" };\n }\n return null;\n}\n\nfunction scoreSubstring(\n keywordLower: string,\n skipPrivateIdentifierMatches: boolean,\n connector: PublicConnectorStatus,\n): ScoreHit | null {\n const candidates: ScoreHit[] = [];\n if (connector.connectorRef.toLowerCase().includes(keywordLower)) {\n candidates.push({ score: 50, matchedField: \"connectorRef\" });\n }\n if (connector.label.toLowerCase().includes(keywordLower)) {\n candidates.push({ score: 50, matchedField: \"label\" });\n }\n for (const tag of connector.tags) {\n if (skipPrivateIdentifierMatches && tag.includes(\"_\")) continue;\n if (tag.toLowerCase().includes(keywordLower)) {\n candidates.push({ score: 25, matchedField: `tag:${tag}` });\n }\n }\n for (const generationType of connector.generation) {\n if (generationType.toLowerCase().includes(keywordLower)) {\n candidates.push({\n score: 25,\n matchedField: `generation:${generationType}`,\n });\n }\n }\n for (const authMethod of connector.authMethods) {\n if (\n authMethod.id.toLowerCase().includes(keywordLower) ||\n authMethod.label.toLowerCase().includes(keywordLower)\n ) {\n candidates.push({\n score: 20,\n matchedField: `auth-method:${authMethod.id}`,\n });\n }\n }\n if (connector.category.toLowerCase().includes(keywordLower)) {\n candidates.push({ score: 20, matchedField: \"category\" });\n }\n if (connector.description.toLowerCase().includes(keywordLower)) {\n candidates.push({ score: 15, matchedField: \"description\" });\n }\n\n return best(candidates);\n}\n\nfunction scoreTokens(\n keywordTokens: ReadonlySet<string>,\n connector: PublicConnectorStatus,\n): ScoreHit | null {\n const candidateTokens = new Set<string>();\n for (const source of publicStrings(connector)) {\n for (const token of tokenize(source)) {\n candidateTokens.add(token);\n }\n }\n\n let intersection = 0;\n let firstCommon = \"\";\n for (const token of keywordTokens) {\n if (candidateTokens.has(token)) {\n intersection++;\n if (!firstCommon) firstCommon = token;\n }\n }\n if (intersection === 0) return null;\n return { score: 10 * intersection, matchedField: `token:${firstCommon}` };\n}\n\nfunction scoreConnector(\n keywordLower: string,\n keyword: string,\n keywordTokens: ReadonlySet<string>,\n connector: PublicConnectorStatus,\n): ScoreHit | null {\n const skipPrivateIdentifierMatches =\n /^[A-Za-z0-9_]+$/.test(keyword) && keyword.includes(\"_\");\n const tokenHit = skipPrivateIdentifierMatches\n ? null\n : scoreTokens(keywordTokens, connector);\n const hit = best([\n scoreExact(keywordLower, skipPrivateIdentifierMatches, connector),\n scoreSubstring(keywordLower, skipPrivateIdentifierMatches, connector),\n tokenHit,\n ]);\n if (!hit || hit.score < MIN_SCORE) return null;\n return hit;\n}\n\nexport function searchPublicConnectorCatalog(\n connectors: readonly PublicConnectorStatus[],\n keyword: string,\n limit: number,\n): PublicConnectorSearchOutput {\n const trimmed = keyword.trim();\n if (!trimmed) return { results: [], total: 0 };\n\n const keywordLower = trimmed.toLowerCase();\n const keywordTokens = tokenize(trimmed);\n const hits = connectors.flatMap(\n (connector): PublicConnectorSearchResult[] => {\n const hit = scoreConnector(\n keywordLower,\n trimmed,\n keywordTokens,\n connector,\n );\n if (!hit) return [];\n return [\n {\n connector,\n score: hit.score,\n matchedField: hit.matchedField,\n },\n ];\n },\n );\n\n hits.sort((a, b) => {\n if (b.score !== a.score) return b.score - a.score;\n return a.connector.connectorRef.localeCompare(b.connector.connectorRef);\n });\n\n return {\n results: hits.slice(0, limit),\n total: hits.length,\n };\n}\n\nexport function findConnectorStatusItem(\n connectors: readonly PublicConnectorStatus[],\n connectorRef: string,\n): PublicConnectorStatus | null {\n const exact = connectors.find((connector) => {\n return connector.connectorRef === connectorRef;\n });\n if (exact) return exact;\n\n const lower = connectorRef.toLowerCase();\n return (\n connectors.find((connector) => {\n return connector.connectorRef.toLowerCase() === lower;\n }) ?? null\n );\n}\n\nexport function availableConnectorRefs(\n connectors: readonly PublicConnectorStatus[],\n): string {\n return connectors\n .map((connector) => {\n return connector.connectorRef;\n })\n .join(\", \");\n}\n\nexport function resolveManualGrantAuthMethod(\n connector: PublicConnectorStatus,\n rawAuthMethod: string | undefined,\n): PublicConnectorCatalogAuthMethodDetail {\n if (rawAuthMethod) {\n const authMethod = connector.authMethods.find((method) => {\n return method.id === rawAuthMethod;\n });\n if (!authMethod) {\n throw new Error(\n `${connector.connectorRef} connector does not have ${rawAuthMethod} auth method`,\n {\n cause: new Error(\n `Available auth methods: ${connector.authMethods\n .map((method) => {\n return method.id;\n })\n .join(\", \")}`,\n ),\n },\n );\n }\n\n if (authMethod.grantKind === \"manual\") {\n return authMethod;\n }\n\n throw new Error(\n `${connector.connectorRef} ${authMethod.id} auth method does not use a manual grant`,\n );\n }\n\n const manualAuthMethods = connector.authMethods.filter((method) => {\n return method.grantKind === \"manual\";\n });\n const authMethod = manualAuthMethods[0];\n if (manualAuthMethods.length === 1 && authMethod) {\n return authMethod;\n }\n if (manualAuthMethods.length === 0) {\n throw new Error(\n `${connector.connectorRef} connector does not use a manual grant`,\n );\n }\n\n throw new Error(\n `${connector.connectorRef} connector has multiple manual grant auth methods`,\n {\n cause: new Error(\n `Pass --auth-method ${manualAuthMethods\n .map((method) => {\n return method.id;\n })\n .join(\"|\")}`,\n ),\n },\n );\n}\n","import { getZeroAgent, getZeroAgentUserConnectors } from \"../../../lib/api\";\n\ninterface AgentContext {\n agentId: string;\n displayName: string;\n authorizedTypes: Set<string>;\n}\n\nexport async function resolveAgentContext(\n flagAgentId: string | undefined,\n): Promise<AgentContext | null> {\n const agentId = flagAgentId ?? process.env.ZERO_AGENT_ID;\n if (!agentId) return null;\n\n const [agent, enabledTypes] = await Promise.all([\n getZeroAgent(agentId),\n getZeroAgentUserConnectors(agentId),\n ]);\n\n return {\n agentId: agent.agentId,\n displayName: agent.displayName ?? agent.agentId,\n authorizedTypes: new Set(enabledTypes),\n };\n}\n"],"mappings":"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","names":["authMethod"]}
1
+ {"version":3,"sources":["../src/commands/zero/connector/action-url.ts","../src/commands/zero/connector/public-catalog.ts","../src/commands/zero/connector/agent-context.ts"],"sourcesContent":["export const CALLBACK_PROMPT_PLACEHOLDER =\n \"SOMETHING_AGENT_WANT_TO_BE_CALLBACK\";\n\nexport function connectorActionCallbackAvailable(): boolean {\n return Boolean(process.env.ZERO_CHAT_THREAD_ID?.trim());\n}\n\nfunction currentChatThreadId(agentId: string | undefined): string | null {\n const threadId = process.env.ZERO_CHAT_THREAD_ID?.trim();\n const currentAgentId = process.env.ZERO_AGENT_ID?.trim();\n if (!threadId || !currentAgentId || agentId !== currentAgentId) {\n return null;\n }\n return threadId;\n}\n\nexport function currentChatSupportsActionCallback(\n agentId: string | undefined,\n): boolean {\n return currentChatThreadId(agentId) !== null;\n}\n\nfunction addCallbackSearchParams(\n params: URLSearchParams,\n threadId: string,\n callbackPrompt: string,\n): void {\n params.set(\"threadId\", threadId);\n params.set(\"callbackPrompt\", callbackPrompt);\n}\n\nexport function addRequestedCallbackSearchParams(\n params: URLSearchParams,\n callbackPrompt: string | undefined,\n agentId: string | undefined,\n): void {\n if (callbackPrompt === undefined) {\n return;\n }\n\n const normalizedPrompt = callbackPrompt.trim();\n if (!normalizedPrompt) {\n throw new Error(\"--callback-prompt cannot be empty\");\n }\n\n const threadId = currentChatThreadId(agentId);\n if (!threadId) {\n throw new Error(\n \"--callback-prompt can only target the current Zero web chat thread and agent\",\n );\n }\n addCallbackSearchParams(params, threadId, normalizedPrompt);\n}\n\nexport function connectorActionUrl(args: {\n readonly origin: string;\n readonly path: string;\n readonly agentId?: string;\n}): string {\n const url = new URL(args.path, args.origin);\n if (args.agentId) {\n url.searchParams.set(\"agentId\", args.agentId);\n }\n return url.toString();\n}\n\nfunction callbackActionUrlExample(\n actionUrl: string,\n agentId: string | undefined,\n): string | null {\n const threadId = currentChatThreadId(agentId);\n if (!threadId) {\n return null;\n }\n\n const url = new URL(actionUrl);\n addCallbackSearchParams(\n url.searchParams,\n threadId,\n CALLBACK_PROMPT_PLACEHOLDER,\n );\n return url.toString();\n}\n\nexport function printCallbackActionUrlExample(\n actionUrl: string,\n agentId: string | undefined,\n): void {\n const callbackUrl = callbackActionUrlExample(actionUrl, agentId);\n if (!callbackUrl) {\n return;\n }\n\n console.log(\"\");\n console.log(\n \"Or, if this is the only connector or permission action needed, use the callback URL below. After the user completes this action, Zero will automatically start the next round with the callback prompt:\",\n );\n console.log(callbackUrl);\n}\n\nexport function printCallbackTurnInstruction(): void {\n console.log(\"\");\n console.log(\n \"After sharing this callback URL, end the current turn. When the user completes the action, Zero will automatically start the next round with the callback prompt.\",\n );\n}\n","import type {\n PublicConnectorCatalogAuthMethodDetail,\n PublicConnectorCatalogItem,\n PublicConnectorCatalogStatusItem,\n} from \"@vm0/api-contracts/contracts/zero-connector-catalog\";\n\nexport type PublicConnectorStatus = PublicConnectorCatalogStatusItem;\n\ninterface PublicConnectorSearchResult {\n readonly connector: PublicConnectorStatus;\n readonly score: number;\n readonly matchedField: string;\n}\n\ninterface PublicConnectorSearchOutput {\n readonly results: readonly PublicConnectorSearchResult[];\n readonly total: number;\n}\n\nconst TOKEN_BOUNDARY = /[_\\-\\s]+/;\nconst CASE_BOUNDARY = /(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])/;\nconst MIN_SCORE = 10;\n\nfunction tokenize(input: string): Set<string> {\n const tokens = new Set<string>();\n for (const chunk of input.split(TOKEN_BOUNDARY)) {\n if (!chunk) continue;\n for (const sub of chunk.split(CASE_BOUNDARY)) {\n const lower = sub.toLowerCase();\n if (lower) tokens.add(lower);\n }\n }\n return tokens;\n}\n\nfunction publicStrings(connector: PublicConnectorCatalogItem): string[] {\n return [\n connector.connectorRef,\n connector.label,\n connector.description,\n connector.category,\n ...connector.tags,\n ...connector.generation,\n ...connector.authMethods.flatMap((authMethod) => {\n return [\n authMethod.id,\n authMethod.label,\n ...(authMethod.description ? [authMethod.description] : []),\n ];\n }),\n ];\n}\n\ntype ScoreHit = { score: number; matchedField: string };\n\nfunction best(candidates: readonly (ScoreHit | null)[]): ScoreHit | null {\n return candidates.reduce<ScoreHit | null>((bestHit, hit) => {\n if (!hit) return bestHit;\n if (!bestHit || hit.score > bestHit.score) return hit;\n return bestHit;\n }, null);\n}\n\nfunction scoreExact(\n keywordLower: string,\n skipPrivateIdentifierMatches: boolean,\n connector: PublicConnectorStatus,\n): ScoreHit | null {\n if (connector.connectorRef.toLowerCase() === keywordLower) {\n return { score: 100, matchedField: \"connectorRef\" };\n }\n if (connector.label.toLowerCase() === keywordLower) {\n return { score: 80, matchedField: \"label\" };\n }\n for (const tag of connector.tags) {\n if (skipPrivateIdentifierMatches && tag.includes(\"_\")) continue;\n if (tag.toLowerCase() === keywordLower) {\n return { score: 70, matchedField: `tag:${tag}` };\n }\n }\n for (const generationType of connector.generation) {\n if (generationType.toLowerCase() === keywordLower) {\n return { score: 65, matchedField: `generation:${generationType}` };\n }\n }\n for (const authMethod of connector.authMethods) {\n if (authMethod.id.toLowerCase() === keywordLower) {\n return { score: 60, matchedField: `auth-method:${authMethod.id}` };\n }\n if (authMethod.label.toLowerCase() === keywordLower) {\n return { score: 60, matchedField: `auth-method:${authMethod.label}` };\n }\n }\n if (connector.category.toLowerCase() === keywordLower) {\n return { score: 55, matchedField: \"category\" };\n }\n return null;\n}\n\nfunction scoreSubstring(\n keywordLower: string,\n skipPrivateIdentifierMatches: boolean,\n connector: PublicConnectorStatus,\n): ScoreHit | null {\n const candidates: ScoreHit[] = [];\n if (connector.connectorRef.toLowerCase().includes(keywordLower)) {\n candidates.push({ score: 50, matchedField: \"connectorRef\" });\n }\n if (connector.label.toLowerCase().includes(keywordLower)) {\n candidates.push({ score: 50, matchedField: \"label\" });\n }\n for (const tag of connector.tags) {\n if (skipPrivateIdentifierMatches && tag.includes(\"_\")) continue;\n if (tag.toLowerCase().includes(keywordLower)) {\n candidates.push({ score: 25, matchedField: `tag:${tag}` });\n }\n }\n for (const generationType of connector.generation) {\n if (generationType.toLowerCase().includes(keywordLower)) {\n candidates.push({\n score: 25,\n matchedField: `generation:${generationType}`,\n });\n }\n }\n for (const authMethod of connector.authMethods) {\n if (\n authMethod.id.toLowerCase().includes(keywordLower) ||\n authMethod.label.toLowerCase().includes(keywordLower)\n ) {\n candidates.push({\n score: 20,\n matchedField: `auth-method:${authMethod.id}`,\n });\n }\n }\n if (connector.category.toLowerCase().includes(keywordLower)) {\n candidates.push({ score: 20, matchedField: \"category\" });\n }\n if (connector.description.toLowerCase().includes(keywordLower)) {\n candidates.push({ score: 15, matchedField: \"description\" });\n }\n\n return best(candidates);\n}\n\nfunction scoreTokens(\n keywordTokens: ReadonlySet<string>,\n connector: PublicConnectorStatus,\n): ScoreHit | null {\n const candidateTokens = new Set<string>();\n for (const source of publicStrings(connector)) {\n for (const token of tokenize(source)) {\n candidateTokens.add(token);\n }\n }\n\n let intersection = 0;\n let firstCommon = \"\";\n for (const token of keywordTokens) {\n if (candidateTokens.has(token)) {\n intersection++;\n if (!firstCommon) firstCommon = token;\n }\n }\n if (intersection === 0) return null;\n return { score: 10 * intersection, matchedField: `token:${firstCommon}` };\n}\n\nfunction scoreConnector(\n keywordLower: string,\n keyword: string,\n keywordTokens: ReadonlySet<string>,\n connector: PublicConnectorStatus,\n): ScoreHit | null {\n const skipPrivateIdentifierMatches =\n /^[A-Za-z0-9_]+$/.test(keyword) && keyword.includes(\"_\");\n const tokenHit = skipPrivateIdentifierMatches\n ? null\n : scoreTokens(keywordTokens, connector);\n const hit = best([\n scoreExact(keywordLower, skipPrivateIdentifierMatches, connector),\n scoreSubstring(keywordLower, skipPrivateIdentifierMatches, connector),\n tokenHit,\n ]);\n if (!hit || hit.score < MIN_SCORE) return null;\n return hit;\n}\n\nexport function searchPublicConnectorCatalog(\n connectors: readonly PublicConnectorStatus[],\n keyword: string,\n limit: number,\n): PublicConnectorSearchOutput {\n const trimmed = keyword.trim();\n if (!trimmed) return { results: [], total: 0 };\n\n const keywordLower = trimmed.toLowerCase();\n const keywordTokens = tokenize(trimmed);\n const hits = connectors.flatMap(\n (connector): PublicConnectorSearchResult[] => {\n const hit = scoreConnector(\n keywordLower,\n trimmed,\n keywordTokens,\n connector,\n );\n if (!hit) return [];\n return [\n {\n connector,\n score: hit.score,\n matchedField: hit.matchedField,\n },\n ];\n },\n );\n\n hits.sort((a, b) => {\n if (b.score !== a.score) return b.score - a.score;\n return a.connector.connectorRef.localeCompare(b.connector.connectorRef);\n });\n\n return {\n results: hits.slice(0, limit),\n total: hits.length,\n };\n}\n\nexport function findConnectorStatusItem(\n connectors: readonly PublicConnectorStatus[],\n connectorSlug: string,\n): PublicConnectorStatus | null {\n const exact = connectors.find((connector) => {\n return connector.connectorRef === connectorSlug;\n });\n if (exact) return exact;\n\n const lower = connectorSlug.toLowerCase();\n return (\n connectors.find((connector) => {\n return connector.connectorRef.toLowerCase() === lower;\n }) ?? null\n );\n}\n\nexport function availableConnectorSlugs(\n connectors: readonly PublicConnectorStatus[],\n): string {\n return connectors\n .map((connector) => {\n return connector.connectorRef;\n })\n .join(\", \");\n}\n\nexport function resolveManualGrantAuthMethod(\n connector: PublicConnectorStatus,\n rawAuthMethod: string | undefined,\n): PublicConnectorCatalogAuthMethodDetail {\n if (rawAuthMethod) {\n const authMethod = connector.authMethods.find((method) => {\n return method.id === rawAuthMethod;\n });\n if (!authMethod) {\n throw new Error(\n `${connector.connectorRef} connector does not have ${rawAuthMethod} auth method`,\n {\n cause: new Error(\n `Available auth methods: ${connector.authMethods\n .map((method) => {\n return method.id;\n })\n .join(\", \")}`,\n ),\n },\n );\n }\n\n if (authMethod.grantKind === \"manual\") {\n return authMethod;\n }\n\n throw new Error(\n `${connector.connectorRef} ${authMethod.id} auth method does not use a manual grant`,\n );\n }\n\n const manualAuthMethods = connector.authMethods.filter((method) => {\n return method.grantKind === \"manual\";\n });\n const authMethod = manualAuthMethods[0];\n if (manualAuthMethods.length === 1 && authMethod) {\n return authMethod;\n }\n if (manualAuthMethods.length === 0) {\n throw new Error(\n `${connector.connectorRef} connector does not use a manual grant`,\n );\n }\n\n throw new Error(\n `${connector.connectorRef} connector has multiple manual grant auth methods`,\n {\n cause: new Error(\n `Pass --auth-method ${manualAuthMethods\n .map((method) => {\n return method.id;\n })\n .join(\"|\")}`,\n ),\n },\n );\n}\n","import { getZeroAgent, getZeroAgentUserConnectors } from \"../../../lib/api\";\n\ninterface AgentContext {\n agentId: string;\n displayName: string;\n authorizedConnectorSlugs: Set<string>;\n}\n\nexport async function resolveAgentContext(\n flagAgentId: string | undefined,\n): Promise<AgentContext | null> {\n const agentId = flagAgentId ?? process.env.ZERO_AGENT_ID;\n if (!agentId) return null;\n\n const [agent, enabledConnectorSlugs] = await Promise.all([\n getZeroAgent(agentId),\n getZeroAgentUserConnectors(agentId),\n ]);\n\n return {\n agentId: agent.agentId,\n displayName: agent.displayName ?? agent.agentId,\n authorizedConnectorSlugs: new Set(enabledConnectorSlugs),\n };\n}\n"],"mappings":"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","names":["authMethod"]}
@@ -3,7 +3,7 @@ import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  MODEL_PROVIDER_TYPES
6
- } from "./chunk-TLQL2AEZ.js";
6
+ } from "./chunk-2KEUNCZT.js";
7
7
  import {
8
8
  init_esm_shims
9
9
  } from "./chunk-GPYQ24DR.js";
@@ -40,4 +40,4 @@ export {
40
40
  formatModelProviderRoute,
41
41
  formatModelPolicyStatus
42
42
  };
43
- //# sourceMappingURL=chunk-UXFHS4TN.js.map
43
+ //# sourceMappingURL=chunk-XAVHX57D.js.map
@@ -12,12 +12,12 @@ import {
12
12
  import {
13
13
  authHeadersSchema,
14
14
  connectorCatalogDiagnosticsSchema,
15
- connectorRefSchema,
15
+ connectorSlugSchema,
16
16
  firewallsSchema,
17
17
  runnerGroupSchema,
18
18
  searchZeroLogs,
19
19
  zeroAgentVisibilitySchema
20
- } from "./chunk-TJCLIDBB.js";
20
+ } from "./chunk-KCVBW7AC.js";
21
21
  import {
22
22
  apiErrorSchema,
23
23
  external_exports,
@@ -31,7 +31,7 @@ import {
31
31
  upsertModelProviderRequestSchema,
32
32
  upsertModelProviderResponseSchema,
33
33
  withErrorHandler
34
- } from "./chunk-TLQL2AEZ.js";
34
+ } from "./chunk-2KEUNCZT.js";
35
35
  import {
36
36
  Command
37
37
  } from "./chunk-CCWPKGTB.js";
@@ -11212,7 +11212,7 @@ var emailMorningBriefUnsubscribeContract = c15.router({
11212
11212
  }
11213
11213
  });
11214
11214
 
11215
- // ../../packages/api-contracts/src/contracts/connectors-type-callback.ts
11215
+ // ../../packages/api-contracts/src/contracts/connectors-slug-callback.ts
11216
11216
  init_esm_shims();
11217
11217
  var c16 = initContract();
11218
11218
  var connectorOauthCallbackResultSchema = external_exports.discriminatedUnion(
@@ -11228,12 +11228,13 @@ var connectorOauthCallbackResultSchema = external_exports.discriminatedUnion(
11228
11228
  })
11229
11229
  ]
11230
11230
  );
11231
- var connectorsTypeCallbackContract = c16.router({
11231
+ var connectorsSlugCallbackContract = c16.router({
11232
11232
  callback: {
11233
11233
  method: "GET",
11234
+ // TODO(#23619): Rename this path parameter and route compatibly.
11234
11235
  path: "/api/connectors/:type/callback",
11235
11236
  headers: authHeadersSchema,
11236
- pathParams: external_exports.object({ type: connectorRefSchema }),
11237
+ pathParams: external_exports.object({ type: connectorSlugSchema }),
11237
11238
  query: external_exports.object({
11238
11239
  code: external_exports.string().optional(),
11239
11240
  auth_code: external_exports.string().optional(),
@@ -12560,12 +12561,24 @@ var testTeamsStateResponseSchema = external_exports.object({
12560
12561
  createdAt: external_exports.string()
12561
12562
  })
12562
12563
  ),
12564
+ routes: external_exports.array(
12565
+ external_exports.object({
12566
+ id: external_exports.string(),
12567
+ connectionId: external_exports.string(),
12568
+ conversationId: external_exports.string(),
12569
+ threadId: external_exports.string(),
12570
+ userId: external_exports.string(),
12571
+ chatThreadId: external_exports.string(),
12572
+ createdAt: external_exports.string()
12573
+ })
12574
+ ),
12563
12575
  recent_runs: external_exports.array(
12564
12576
  external_exports.object({
12565
12577
  id: external_exports.string(),
12566
12578
  status: external_exports.string(),
12567
12579
  createdAt: external_exports.string(),
12568
12580
  triggerSource: external_exports.string().nullable(),
12581
+ chatThreadId: external_exports.string().nullable(),
12569
12582
  userId: external_exports.string(),
12570
12583
  error: external_exports.string().nullable(),
12571
12584
  promptPreview: external_exports.string().nullable()
@@ -13353,7 +13366,11 @@ var artifactCatalogContract = c38.router({
13353
13366
  init_esm_shims();
13354
13367
  var c39 = initContract();
13355
13368
  var connectorChangedPayloadSchema = external_exports.object({
13356
- connectorRef: connectorRefSchema
13369
+ // TODO(#23619): Rename this realtime field after all deployed clients migrate.
13370
+ connectorRef: connectorSlugSchema
13371
+ });
13372
+ var browserSessionChangedPayloadSchema = external_exports.object({
13373
+ browserId: external_exports.uuid()
13357
13374
  });
13358
13375
  var ablyTokenRequestSchema = external_exports.object({
13359
13376
  keyName: external_exports.string(),
@@ -14855,6 +14872,7 @@ var insightServiceSchema = external_exports.object({
14855
14872
  });
14856
14873
  var insightPermissionSchema = external_exports.object({
14857
14874
  label: external_exports.string(),
14875
+ // TODO(#23619): Rename this analytics wire field with its stored aggregates.
14858
14876
  connectorType: external_exports.string().optional(),
14859
14877
  allowed: external_exports.number(),
14860
14878
  denied: external_exports.number(),
@@ -18193,4 +18211,4 @@ export {
18193
18211
  runLogsSearch,
18194
18212
  searchCommand
18195
18213
  };
18196
- //# sourceMappingURL=chunk-ITMUR6VM.js.map
18214
+ //# sourceMappingURL=chunk-YV3LWRZZ.js.map