@vm0/cli 9.169.1 → 9.170.1

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.
@@ -74083,7 +74083,7 @@ if (DSN) {
74083
74083
  init2({
74084
74084
  dsn: DSN,
74085
74085
  environment: process.env.SENTRY_ENVIRONMENT ?? "production",
74086
- release: "9.169.1",
74086
+ release: "9.170.1",
74087
74087
  sendDefaultPii: false,
74088
74088
  tracesSampleRate: 0,
74089
74089
  shutdownTimeout: 500,
@@ -74102,7 +74102,7 @@ if (DSN) {
74102
74102
  }
74103
74103
  });
74104
74104
  setContext("cli", {
74105
- version: "9.169.1",
74105
+ version: "9.170.1",
74106
74106
  command: process.argv.slice(2).join(" ")
74107
74107
  });
74108
74108
  setContext("runtime", {
@@ -74477,6 +74477,12 @@ var FEATURE_SWITCHES = {
74477
74477
  maintainer: "ethan@vm0.ai",
74478
74478
  description: "Enable managed Zero Maps CLI access for geocoding, directions, and places.",
74479
74479
  enabled: true
74480
+ },
74481
+ ["chatArtifactSidebar" /* ChatArtifactSidebar */]: {
74482
+ maintainer: "ethan@vm0.ai",
74483
+ description: "Replace the inline attachment text editor and modal lightbox with a single page-level artifact sidebar (50/50 with the chat thread area, URL-routed via ?artifact=, fullscreen-capable). When on, inline text/markdown attachments render as anchor chips, all preview chips route to the sidebar, and the artifacts drawer is hidden.",
74484
+ enabled: false,
74485
+ enabledOrgIdHashes: STAFF_ORG_ID_HASHES
74480
74486
  }
74481
74487
  };
74482
74488
  function isFeatureEnabled(key, ctx) {
@@ -94943,6 +94949,28 @@ var directRunModelProviderTypeSchema = modelProviderTypeSchema.refine(
94943
94949
  },
94944
94950
  { message: "vm0 model provider is only supported by zero runs" }
94945
94951
  );
94952
+ var claudeToolEntrySchema = external_exports.string().refine(
94953
+ (tool) => {
94954
+ return tool.trim().length > 0;
94955
+ },
94956
+ {
94957
+ message: "Claude tool name must not be empty"
94958
+ }
94959
+ ).refine(
94960
+ (tool) => {
94961
+ return !tool.includes(",");
94962
+ },
94963
+ {
94964
+ message: "Claude tool name must not contain commas"
94965
+ }
94966
+ ).refine(
94967
+ (tool) => {
94968
+ return !tool.trimStart().startsWith("-");
94969
+ },
94970
+ {
94971
+ message: "Claude tool name must not start with a hyphen"
94972
+ }
94973
+ );
94946
94974
  var MAX_EVENT_SEQUENCE_NUMBER = 2147483647;
94947
94975
  var eventSequenceNumberSchema = external_exports.number().int().nonnegative().max(MAX_EVENT_SEQUENCE_NUMBER);
94948
94976
  var eventSequenceCursorSchema = external_exports.number().int().min(-1).max(MAX_EVENT_SEQUENCE_NUMBER);
@@ -94995,9 +95023,9 @@ var unifiedRunRequestSchema = external_exports.object({
94995
95023
  // Optional system prompt to append to the agent's system prompt
94996
95024
  appendSystemPrompt: external_exports.string().optional(),
94997
95025
  // Optional list of tools to disable in Claude CLI (passed as --disallowed-tools)
94998
- disallowedTools: external_exports.array(external_exports.string()).optional(),
95026
+ disallowedTools: external_exports.array(claudeToolEntrySchema).optional(),
94999
95027
  // Optional list of tools to make available in Claude CLI (passed as --tools)
95000
- tools: external_exports.array(external_exports.string()).optional(),
95028
+ tools: external_exports.array(claudeToolEntrySchema).optional(),
95001
95029
  // Settings JSON to pass to Claude CLI (passed as --settings)
95002
95030
  settings: external_exports.string().optional(),
95003
95031
  // How the run was triggered (defaults to "cli" on the server if not provided)
@@ -117894,145 +117922,6 @@ function getConnectorTypeForSecretName(name) {
117894
117922
  }
117895
117923
  return null;
117896
117924
  }
117897
- var TOKEN_BOUNDARY = /[_\-\s]+/;
117898
- var CASE_BOUNDARY = /(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])/;
117899
- var MIN_SCORE = 10;
117900
- function tokenize(input) {
117901
- const tokens = /* @__PURE__ */ new Set();
117902
- for (const chunk of input.split(TOKEN_BOUNDARY)) {
117903
- if (!chunk) continue;
117904
- for (const sub of chunk.split(CASE_BOUNDARY)) {
117905
- const lower = sub.toLowerCase();
117906
- if (lower) tokens.add(lower);
117907
- }
117908
- }
117909
- return tokens;
117910
- }
117911
- function listSecretNames(config4) {
117912
- const names = [];
117913
- for (const method of Object.values(config4.authMethods)) {
117914
- for (const name of Object.keys(getManualGrantFields(method) ?? {})) {
117915
- names.push(name);
117916
- }
117917
- for (const valueRef of Object.values(
117918
- connectorAccessEnvBindings(method.access)
117919
- )) {
117920
- if (valueRef.startsWith("$secrets.")) {
117921
- names.push(valueRef.slice("$secrets.".length));
117922
- }
117923
- }
117924
- }
117925
- return names;
117926
- }
117927
- function findExactMatch(keywordLower, type, config4) {
117928
- if (type.toLowerCase() === keywordLower) {
117929
- return { score: 100, matchedField: "type" };
117930
- }
117931
- for (const envName of Object.keys(getConnectorEnvBindings(type))) {
117932
- if (envName.toLowerCase() === keywordLower) {
117933
- return { score: 90, matchedField: `env:${envName}` };
117934
- }
117935
- }
117936
- if (config4.label.toLowerCase() === keywordLower) {
117937
- return { score: 80, matchedField: "label" };
117938
- }
117939
- const tags = config4.tags ?? [];
117940
- for (const tag of tags) {
117941
- if (tag === keywordLower) {
117942
- return { score: 70, matchedField: `tag:${tag}` };
117943
- }
117944
- }
117945
- return null;
117946
- }
117947
- function findSubstringMatch(keywordLower, type, config4) {
117948
- if (type.toLowerCase().includes(keywordLower)) {
117949
- return { score: 50, matchedField: "type" };
117950
- }
117951
- if (config4.label.toLowerCase().includes(keywordLower)) {
117952
- return { score: 50, matchedField: "label" };
117953
- }
117954
- for (const envName of Object.keys(getConnectorEnvBindings(type))) {
117955
- if (envName.toLowerCase().includes(keywordLower)) {
117956
- return { score: 40, matchedField: `env:${envName}` };
117957
- }
117958
- }
117959
- for (const name of listSecretNames(config4)) {
117960
- if (name.toLowerCase().includes(keywordLower)) {
117961
- return { score: 30, matchedField: `secret:${name}` };
117962
- }
117963
- }
117964
- const tags = config4.tags ?? [];
117965
- for (const tag of tags) {
117966
- if (tag.includes(keywordLower)) {
117967
- return { score: 25, matchedField: `tag:${tag}` };
117968
- }
117969
- }
117970
- return null;
117971
- }
117972
- function collectCandidateTokens(type, config4) {
117973
- const tokens = /* @__PURE__ */ new Set();
117974
- const sources = [
117975
- type,
117976
- config4.label,
117977
- ...Object.keys(getConnectorEnvBindings(type)),
117978
- ...listSecretNames(config4),
117979
- ...config4.tags ?? []
117980
- ];
117981
- for (const source of sources) {
117982
- for (const token of tokenize(source)) {
117983
- tokens.add(token);
117984
- }
117985
- }
117986
- return tokens;
117987
- }
117988
- function findTokenIntersection(keywordTokens, type, config4) {
117989
- const candidateTokens = collectCandidateTokens(type, config4);
117990
- let intersection2 = 0;
117991
- let firstCommon = "";
117992
- for (const token of keywordTokens) {
117993
- if (candidateTokens.has(token)) {
117994
- intersection2++;
117995
- if (!firstCommon) firstCommon = token;
117996
- }
117997
- }
117998
- if (intersection2 === 0) return null;
117999
- return { score: 10 * intersection2, matchedField: `token:${firstCommon}` };
118000
- }
118001
- function scoreConnector(keywordLower, keywordTokens, type, config4) {
118002
- const exact = findExactMatch(keywordLower, type, config4);
118003
- if (exact) return exact;
118004
- const candidates = [];
118005
- const substring = findSubstringMatch(keywordLower, type, config4);
118006
- if (substring) candidates.push(substring);
118007
- const token = findTokenIntersection(keywordTokens, type, config4);
118008
- if (token) candidates.push(token);
118009
- if (candidates.length === 0) return null;
118010
- const best = candidates.reduce((a, b) => {
118011
- return a.score >= b.score ? a : b;
118012
- });
118013
- if (best.score < MIN_SCORE) return null;
118014
- return best;
118015
- }
118016
- function searchConnectors(keyword, limit, filter) {
118017
- const trimmed = keyword.trim();
118018
- if (!trimmed) return { results: [], total: 0 };
118019
- const keywordLower = trimmed.toLowerCase();
118020
- const keywordTokens = tokenize(trimmed);
118021
- const hits = [];
118022
- for (const type of CONNECTOR_TYPE_KEYS) {
118023
- if (filter && !filter(type)) continue;
118024
- const config4 = CONNECTOR_TYPES[type];
118025
- const hit = scoreConnector(keywordLower, keywordTokens, type, config4);
118026
- if (!hit) continue;
118027
- hits.push({ type, score: hit.score, matchedField: hit.matchedField });
118028
- }
118029
- hits.sort((a, b) => {
118030
- if (b.score !== a.score) return b.score - a.score;
118031
- return a.type.localeCompare(b.type);
118032
- });
118033
- const capped = limit > 0 ? hits.slice(0, limit) : hits;
118034
- return { results: capped, total: hits.length };
118035
- }
118036
117925
 
118037
117926
  // ../../packages/connectors/src/firewalls/agentmail.generated.ts
118038
117927
  init_esm_shims();
@@ -135195,7 +135084,6 @@ export {
135195
135084
  hasRequiredScopes,
135196
135085
  getScopeDiff,
135197
135086
  getConnectorTypeForSecretName,
135198
- searchConnectors,
135199
135087
  isFirewallConnectorType,
135200
135088
  getConnectorFirewall,
135201
135089
  resolveFirewallPolicies,
@@ -135229,4 +135117,4 @@ undici/lib/web/fetch/body.js:
135229
135117
  undici/lib/web/websocket/frame.js:
135230
135118
  (*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> *)
135231
135119
  */
135232
- //# sourceMappingURL=chunk-RWNXCBAW.js.map
135120
+ //# sourceMappingURL=chunk-32G2S2HY.js.map