@duvoai/cli 1.87.0 → 1.87.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 +10 -27
  2. package/package.json +1 -1
package/dist/bin/duvo.js CHANGED
@@ -153,10 +153,9 @@ var CONFIG_FIELD_FILLED_VIA = [
153
153
  "interview",
154
154
  /** Read off a document uploaded to the process, which has no interviewee:
155
155
  * `source_capture_id` names the file instead. Distinct from "interview"
156
- * because a contract and a person are different kinds of authority - four
157
- * of the freight-audit questions this fills are `locked`, where recording
158
- * a contract-derived value as something someone said would misrepresent
159
- * what the audit is claiming against. */
156
+ * because a contract and a person are different kinds of authority:
157
+ * recording a contract-derived value as something someone said would
158
+ * misrepresent what the audit is claiming against. */
160
159
  "document",
161
160
  "template_default",
162
161
  "org_default",
@@ -253,7 +252,6 @@ var configFieldResponseSchema = z3.object({
253
252
  typeConfig: configFieldTypeConfigSchema,
254
253
  bindings: z3.array(z3.enum(CONFIG_FIELD_BINDINGS)),
255
254
  required: z3.boolean(),
256
- locked: z3.boolean(),
257
255
  fillMode: z3.enum(CONFIG_FIELD_FILL_MODES),
258
256
  value: jsonValueSchema.nullable(),
259
257
  defaultValue: jsonValueSchema.nullable(),
@@ -294,7 +292,6 @@ var configFieldApiSchema = z3.object({
294
292
  "How the value reaches the automation (context, parameter, tool)"
295
293
  ),
296
294
  required: z3.boolean().describe("Whether the field must be filled"),
297
- locked: z3.boolean().describe("Whether the value is locked from editing"),
298
295
  fill_mode: z3.enum(CONFIG_FIELD_FILL_MODES).describe("How the field is filled (interview, setup, module_default)"),
299
296
  value: jsonValueSchema.nullable().describe("The current answer, or null when unfilled"),
300
297
  default_value: jsonValueSchema.nullable().describe("The module default value, or null"),
@@ -621,7 +618,6 @@ var configReviewProposalSchema = configProposalResponseSchema.extend({
621
618
  fieldQuestion: z3.string(),
622
619
  fieldType: z3.enum(CONFIG_FIELD_TYPES),
623
620
  fieldTypeConfig: z3.record(z3.string(), jsonValueSchema).nullable(),
624
- fieldLocked: z3.boolean(),
625
621
  fieldValue: jsonValueSchema.nullable(),
626
622
  fieldFilledAt: z3.string().nullable(),
627
623
  invitedEmail: z3.string().nullable(),
@@ -823,7 +819,6 @@ var buildPolicyFieldSchema = z3.object({
823
819
  hasValue: z3.boolean(),
824
820
  /** The answer itself, for display beside the key. `null` when unanswered. */
825
821
  value: jsonValueSchema.nullable(),
826
- locked: z3.boolean(),
827
822
  /** Ticked in the setup row. Removable there. */
828
823
  boundConfigured: z3.boolean(),
829
824
  /**
@@ -19723,10 +19718,9 @@ var CONFIG_FIELD_FILLED_VIA2 = [
19723
19718
  "interview",
19724
19719
  /** Read off a document uploaded to the process, which has no interviewee:
19725
19720
  * `source_capture_id` names the file instead. Distinct from "interview"
19726
- * because a contract and a person are different kinds of authority - four
19727
- * of the freight-audit questions this fills are `locked`, where recording
19728
- * a contract-derived value as something someone said would misrepresent
19729
- * what the audit is claiming against. */
19721
+ * because a contract and a person are different kinds of authority:
19722
+ * recording a contract-derived value as something someone said would
19723
+ * misrepresent what the audit is claiming against. */
19730
19724
  "document",
19731
19725
  "template_default",
19732
19726
  "org_default",
@@ -19823,7 +19817,6 @@ var configFieldResponseSchema2 = z202.object({
19823
19817
  typeConfig: configFieldTypeConfigSchema2,
19824
19818
  bindings: z202.array(z202.enum(CONFIG_FIELD_BINDINGS2)),
19825
19819
  required: z202.boolean(),
19826
- locked: z202.boolean(),
19827
19820
  fillMode: z202.enum(CONFIG_FIELD_FILL_MODES2),
19828
19821
  value: jsonValueSchema3.nullable(),
19829
19822
  defaultValue: jsonValueSchema3.nullable(),
@@ -19864,7 +19857,6 @@ var configFieldApiSchema2 = z202.object({
19864
19857
  "How the value reaches the automation (context, parameter, tool)"
19865
19858
  ),
19866
19859
  required: z202.boolean().describe("Whether the field must be filled"),
19867
- locked: z202.boolean().describe("Whether the value is locked from editing"),
19868
19860
  fill_mode: z202.enum(CONFIG_FIELD_FILL_MODES2).describe("How the field is filled (interview, setup, module_default)"),
19869
19861
  value: jsonValueSchema3.nullable().describe("The current answer, or null when unfilled"),
19870
19862
  default_value: jsonValueSchema3.nullable().describe("The module default value, or null"),
@@ -20191,7 +20183,6 @@ var configReviewProposalSchema2 = configProposalResponseSchema2.extend({
20191
20183
  fieldQuestion: z202.string(),
20192
20184
  fieldType: z202.enum(CONFIG_FIELD_TYPES2),
20193
20185
  fieldTypeConfig: z202.record(z202.string(), jsonValueSchema3).nullable(),
20194
- fieldLocked: z202.boolean(),
20195
20186
  fieldValue: jsonValueSchema3.nullable(),
20196
20187
  fieldFilledAt: z202.string().nullable(),
20197
20188
  invitedEmail: z202.string().nullable(),
@@ -20393,7 +20384,6 @@ var buildPolicyFieldSchema2 = z202.object({
20393
20384
  hasValue: z202.boolean(),
20394
20385
  /** The answer itself, for display beside the key. `null` when unanswered. */
20395
20386
  value: jsonValueSchema3.nullable(),
20396
- locked: z202.boolean(),
20397
20387
  /** Ticked in the setup row. Removable there. */
20398
20388
  boundConfigured: z202.boolean(),
20399
20389
  /**
@@ -41603,12 +41593,6 @@ var FEATURE_FLAG_CATALOGUE = {
41603
41593
  defaultValue: false,
41604
41594
  description: "Enforces per-kind live-file caps for memory stores and adds matching cap guidance to Agent memory prompts and MEMORY.md. Existing over-cap stores remain readable and editable, but cannot create files until capacity is freed. Resolved at team, organization, or global scope; user overrides are ignored so every writer sees one policy for a shared store. Off by default for staged rollout."
41605
41595
  },
41606
- META_AGENT_ARTIFACTS: {
41607
- key: "meta_agent_artifacts",
41608
- defaultValue: false,
41609
- implies: ["agent_chat"],
41610
- description: "Enables Ask Duvo Artifacts \u2014 Ask Duvo binds to the artifact on the current page and can create/edit it (Pulse first). When disabled, chat sends carry no structured page context, the duvoChat Pulse tools refuse, and the artifact endpoints return 404. The `meta_agent_artifacts` key is the legacy name kept deliberately: renaming a flag key orphans its per-team overrides."
41611
- },
41612
41596
  MINUTE_SCHEDULING: {
41613
41597
  key: "minute_scheduling",
41614
41598
  defaultValue: false,
@@ -41657,8 +41641,8 @@ var FEATURE_FLAG_CATALOGUE = {
41657
41641
  PULSE_EDIT_IN_ASK_DUVO: {
41658
41642
  key: "pulse_edit_in_ask_duvo",
41659
41643
  defaultValue: false,
41660
- implies: ["agent_chat", "meta_agent_artifacts"],
41661
- description: "Routes Pulse through Ask Duvo instead of the native Pulse chat panel. Covers both halves of a dashboard's life. Editing: clicking 'Edit in chat' opens the Ask Duvo rail bound to the dashboard (so the agent can edit it and prior Pulse chat messages surface in-rail); with the flag off the button toggles the native in-page Pulse chat panel as before. Creating: submitting a prompt on the New Pulse page opens an Ask Duvo conversation whose first message is that prompt and whose hidden companion turn makes the agent build the dashboard immediately, so the build narrates in the conversation instead of in silence; with the flag off New Pulse creates the dashboard directly and lands on its canvas. Text-only submissions take the Ask Duvo path \u2014 a submission carrying file attachments always creates directly, since the in-chat create tool cannot carry them. Requires META_AGENT_ARTIFACTS (which registers the in-chat create/edit tools; without it the agent falls back to the public createPulseDashboard tool and produces a dashboard with no binding and no in-chat progress) and AGENT_CHAT (the surface the conversation lands in). Off-by-default for staged rollout."
41644
+ implies: ["agent_chat"],
41645
+ description: "Moves Pulse authoring into Ask Duvo. Ask Duvo binds to the dashboard on the current page and writes dashboards itself: it creates or prepares a working copy in the chat's own sandbox, the `pulse-author` subagent for the dashboard's format edits it, and an explicit save commits a new version. Chat edits start no Pulse agent turn, the chat is personal and the dashboard stays shared. 'Edit with Ask Duvo' opens the rail on the user's latest chat about the dashboard, and New Pulse creates the dashboard, binds a new chat to it and lands on the dashboard with that chat open in the rail. A submission carrying file attachments still creates the dashboard directly. When off, chat sends carry no structured page context, the duvoChat Pulse tools refuse, the artifact endpoints return 404, and Pulse uses the native panel and agent. Absorbs the retired `meta_agent_artifacts` flag. Evaluated on every turn. Requires AGENT_CHAT, the surface the conversation lives in. Off by default for staged rollout."
41662
41646
  },
41663
41647
  PULSE_OPENUI: {
41664
41648
  key: "pulse_openui",
@@ -43160,8 +43144,7 @@ var ResolvedPolicyValueSchema = z127.object({
43160
43144
  * "this question has no answer", which is the one state the reader query
43161
43145
  * already filters out. `null` stays legal: it is an answer.
43162
43146
  */
43163
- value: policyValueJsonSchema,
43164
- locked: z127.boolean()
43147
+ value: policyValueJsonSchema
43165
43148
  });
43166
43149
  var CodeStepRunConfigSchema = codeStepConfigSchema2.extend({
43167
43150
  mcpServers: z127.record(z127.string(), RedactedMcpServerConfigSchema).default({}).describe(
@@ -74816,7 +74799,7 @@ __name(isStandaloneBinary, "isStandaloneBinary");
74816
74799
  import { createRequire } from "node:module";
74817
74800
  function getPackageMeta() {
74818
74801
  if (true) {
74819
- return { name: "@duvoai/cli", version: "1.87.0" };
74802
+ return { name: "@duvoai/cli", version: "1.87.1" };
74820
74803
  }
74821
74804
  const require2 = createRequire(import.meta.url);
74822
74805
  const raw = require2("../../package.json");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duvoai/cli",
3
- "version": "1.87.0",
3
+ "version": "1.87.1",
4
4
  "description": "Command-line interface for the Duvo public API",
5
5
  "bin": {
6
6
  "duvo": "./dist/bin/duvo.js"