@duvoai/cli 1.76.0 → 1.76.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.
Files changed (2) hide show
  1. package/dist/bin/duvo.js +48 -27
  2. package/package.json +1 -1
package/dist/bin/duvo.js CHANGED
@@ -5110,8 +5110,17 @@ function buildModelAliasesForProvider(provider) {
5110
5110
  __name(buildModelAliasesForProvider, "buildModelAliasesForProvider");
5111
5111
  __name2(buildModelAliasesForProvider, "buildModelAliasesForProvider");
5112
5112
  function buildModelAllowlistForProvider(provider) {
5113
+ if (provider === "default") {
5114
+ return [];
5115
+ }
5113
5116
  const aliases = buildModelAliasesForProvider(provider);
5114
- return [.../* @__PURE__ */ new Set([...Object.keys(aliases), ...Object.values(aliases)])];
5117
+ return [
5118
+ .../* @__PURE__ */ new Set([
5119
+ ...Object.keys(aliases),
5120
+ ...Object.values(aliases),
5121
+ ...OSS_MODEL_IDS
5122
+ ])
5123
+ ];
5115
5124
  }
5116
5125
  __name(buildModelAllowlistForProvider, "buildModelAllowlistForProvider");
5117
5126
  __name2(buildModelAllowlistForProvider, "buildModelAllowlistForProvider");
@@ -18111,8 +18120,17 @@ function buildModelAliasesForProvider2(provider) {
18111
18120
  __name(buildModelAliasesForProvider2, "buildModelAliasesForProvider");
18112
18121
  __name3(buildModelAliasesForProvider2, "buildModelAliasesForProvider");
18113
18122
  function buildModelAllowlistForProvider2(provider) {
18123
+ if (provider === "default") {
18124
+ return [];
18125
+ }
18114
18126
  const aliases = buildModelAliasesForProvider2(provider);
18115
- return [.../* @__PURE__ */ new Set([...Object.keys(aliases), ...Object.values(aliases)])];
18127
+ return [
18128
+ .../* @__PURE__ */ new Set([
18129
+ ...Object.keys(aliases),
18130
+ ...Object.values(aliases),
18131
+ ...OSS_MODEL_IDS2
18132
+ ])
18133
+ ];
18116
18134
  }
18117
18135
  __name(buildModelAllowlistForProvider2, "buildModelAllowlistForProvider");
18118
18136
  __name3(buildModelAllowlistForProvider2, "buildModelAllowlistForProvider");
@@ -27713,12 +27731,32 @@ var CLOUD_LOGGING_SEVERITY = {
27713
27731
  info: "INFO",
27714
27732
  debug: "DEBUG"
27715
27733
  };
27716
- function writeErrorClassLogLine(severity, errorClass, message) {
27734
+ function collectSearchableIdentifiers(extras) {
27735
+ const identifiers = {};
27736
+ for (const key of SEARCHABLE_KEYS) {
27737
+ const value = extras[key];
27738
+ if (value === void 0 || value === null) {
27739
+ continue;
27740
+ }
27741
+ identifiers[key.replace(/([A-Z])/g, "_$1").toLowerCase()] = String(value);
27742
+ }
27743
+ return identifiers;
27744
+ }
27745
+ __name(collectSearchableIdentifiers, "collectSearchableIdentifiers");
27746
+ __name3(collectSearchableIdentifiers, "collectSearchableIdentifiers");
27747
+ function writeErrorClassLogLine(severity, errorClass, message, identifiers) {
27717
27748
  const line = JSON.stringify({
27718
27749
  severity: CLOUD_LOGGING_SEVERITY[severity],
27719
27750
  event: REPORTED_ERROR_LOG_EVENT,
27720
27751
  error_class: errorClass,
27721
- message
27752
+ message,
27753
+ // Whose failure this was. Without these the line answers "something broke"
27754
+ // and nothing else: a Teams bot delivery failure read as
27755
+ // `{error_class: "unclassified", event: "reported_error"}` could not be tied
27756
+ // to a tenant, team or agent, and attributing four of them took a timestamp
27757
+ // join against the database. Same keys Sentry already tags, so the set is
27758
+ // bounded and aggregatable by construction.
27759
+ ...identifiers
27722
27760
  });
27723
27761
  if (severity === "warning") {
27724
27762
  console.warn(line);
@@ -27737,19 +27775,17 @@ function makeSentryReporter(sentry) {
27737
27775
  } else {
27738
27776
  console.error(errorWithStack, extras);
27739
27777
  }
27778
+ const identifiers = collectSearchableIdentifiers(extras);
27740
27779
  writeErrorClassLogLine(
27741
27780
  severity,
27742
27781
  errorClass ?? UNCLASSIFIED_ERROR_CLASS,
27743
- errorWithStack.message
27782
+ errorWithStack.message,
27783
+ identifiers
27744
27784
  );
27745
27785
  try {
27746
27786
  sentry.withScope((scope) => {
27747
- for (const key of SEARCHABLE_KEYS) {
27748
- const value = extras[key];
27749
- if (value !== void 0 && value !== null) {
27750
- const tagKey = key.replace(/([A-Z])/g, "_$1").toLowerCase();
27751
- scope.setTag(tagKey, String(value));
27752
- }
27787
+ for (const [tagKey, value] of Object.entries(identifiers)) {
27788
+ scope.setTag(tagKey, value);
27753
27789
  }
27754
27790
  if (errorClass) {
27755
27791
  scope.setTag("error_class", errorClass);
@@ -38094,11 +38130,6 @@ var FEATURE_FLAG_CATALOGUE = {
38094
38130
  defaultValue: true,
38095
38131
  description: "Kill switch for the live BambooHR credential probe that the connection create and update routes run before storing a BambooHR Company Subdomain and API Key. On by default: a wrong subdomain or key is rejected in the connection form instead of failing the first Run. Turn off (global override) if BambooHR changes the probed endpoint or starts refusing the probe, so setup keeps working without a deploy; local checks (subdomain format, required fields) still apply when off."
38096
38132
  },
38097
- BUILDER_ADVANCED_CONFIG: {
38098
- key: "builder_advanced_config",
38099
- defaultValue: false,
38100
- description: "Shows the Advanced configuration editor in the agent builder, allowing raw JSON editing of the agent configuration."
38101
- },
38102
38133
  BUILDER_BROWSER_LOGIN_NUDGE: {
38103
38134
  key: "builder_browser_login_nudge",
38104
38135
  defaultValue: false,
@@ -38134,11 +38165,6 @@ var FEATURE_FLAG_CATALOGUE = {
38134
38165
  defaultValue: false,
38135
38166
  description: "Enables Clarity's self-serve funnel: the /start/clarity signup link, Clarity provisioning for a signup that arrives through it, and the process-mapping onboarding flow itself (company profile, job title, goal, one catalogue process, then a voice interview producing a current-state map). /start/clarity is the only way into that flow: it mints the caller their own Clarity organization and onboards them once, and every later visit opens that organization's landscape instead."
38136
38167
  },
38137
- CLARITY_NOTETAKER: {
38138
- key: "clarity_notetaker",
38139
- defaultValue: false,
38140
- description: "Enables the Clarity meeting notetaker (Recall.ai bot). When disabled, the 'Meeting Notetaker' option is hidden in the Add Content menu and the POST /clarity/processes/:id/captures/meeting invite route returns 404; the Recall webhook callback is unaffected. Off-by-default for staged rollout."
38141
- },
38142
38168
  CLARITY_PROCESS_GUIDANCE_AUTHORITATIVE: {
38143
38169
  key: "clarity_process_guidance_authoritative",
38144
38170
  defaultValue: false,
@@ -38343,11 +38369,6 @@ var FEATURE_FLAG_CATALOGUE = {
38343
38369
  key: "supervised_mode",
38344
38370
  defaultValue: false,
38345
38371
  description: "Per-team opt-in for Supervised mode \u2014 running an agent under a custom `PreToolUse` classifier hook that rules on every tool call before it executes (`permissionMode` stays `bypassPermissions`; the SDK's own auto mode is not used). When on, the builder's config menu (three-dots next to the composer) shows the Permission mode section \u2014 'Bypass permissions' vs 'Auto mode', the user-facing name for supervised mode \u2014 and build configs may persist `options.supervisedMode: true` (classifier asks route to the Requests center; per-tool-call verdicts render on run tool-call cards). When off (default), the section is hidden and saving a config with supervisedMode enabled is rejected at the build-config routes. Execution honors the frozen RunConfig regardless, so flipping the flag off does not break in-flight runs."
38346
- },
38347
- SUPPORT_ESCALATION: {
38348
- key: "support_escalation",
38349
- defaultValue: false,
38350
- description: "Enables Ask Duvo support escalation \u2014 the chat drafts a user-reviewed escalation that files a Customer ticket in Duvo's own Intercom workspace. When disabled, the duvoChat escalation tool refuses and the escalation decide endpoints return 404. Off-by-default for staged rollout."
38351
38372
  }
38352
38373
  };
38353
38374
  var FEATURE_FLAGS = Object.fromEntries(
@@ -70093,7 +70114,7 @@ __name(isStandaloneBinary, "isStandaloneBinary");
70093
70114
  import { createRequire } from "node:module";
70094
70115
  function getPackageMeta() {
70095
70116
  if (true) {
70096
- return { name: "@duvoai/cli", version: "1.76.0" };
70117
+ return { name: "@duvoai/cli", version: "1.76.1" };
70097
70118
  }
70098
70119
  const require2 = createRequire(import.meta.url);
70099
70120
  const raw = require2("../../package.json");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duvoai/cli",
3
- "version": "1.76.0",
3
+ "version": "1.76.1",
4
4
  "description": "Command-line interface for the Duvo public API",
5
5
  "bin": {
6
6
  "duvo": "./dist/bin/duvo.js"