conduyt 1.16.0 → 1.18.0

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/index.js +25 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -986,7 +986,7 @@ automations
986
986
  .action(run(async (client) => client.get("/api/v1/automations/schema")));
987
987
  automations
988
988
  .command("events")
989
- .description("List trigger events with their labels, payload fields and documented scalar conditions (e.g. contact.untouched → untouchedDays: 1-365)")
989
+ .description("List trigger events with their labels, payload fields and documented scalar conditions (message.understood = the copilot's reading of an inbound text/email — filter with { filters: [{ field: 'trigger.intent', operator: 'equals', value: 'document_sent' }] }; e.g. contact.untouched → untouchedDays: 1-365)")
990
990
  .action(run(async (client) => client.get("/api/v1/automations/events")));
991
991
  automations
992
992
  .command("resolve")
@@ -1677,6 +1677,30 @@ ai
1677
1677
  const resumeIds = list(opts.resume);
1678
1678
  return client.post("/api/v1/ai/actions/execute", { actions: raw.actions, confirmationToken: raw.confirmationToken, ...(selectedIds ? { selectedIds } : {}), ...(resumeIds ? { resumeIds } : {}) });
1679
1679
  }));
1680
+ ai
1681
+ .command("suggest-reply <contactId>")
1682
+ .description("Copilot Tier 2: the suggested reply for the contact's LATEST inbound text or email — what they said, what they want, sentiment, and a draft. Advice only; nothing is sent.")
1683
+ .action(run(async (client, contactId) => {
1684
+ assertUuid(contactId, "contact id");
1685
+ return client.get(`/api/v1/conversations/${contactId}/suggestion`);
1686
+ }));
1687
+ ai
1688
+ .command("reply-decision <contactId>")
1689
+ .description("Record what was done with a suggested reply: accepted, sent (with --sent <outbound message id>), or dismissed")
1690
+ .requiredOption("--message <id>", "the inbound message the suggestion answers (suggestion.messageId)")
1691
+ .requiredOption("--decision <decision>", "accepted | sent | dismissed")
1692
+ .option("--sent <id>", "required with --decision sent: the outbound message id that was sent (must be provider-confirmed)")
1693
+ .action(run(async (client, contactId, opts) => {
1694
+ assertUuid(contactId, "contact id");
1695
+ assertUuid(opts.message, "message id");
1696
+ if (!["accepted", "sent", "dismissed"].includes(opts.decision))
1697
+ throw new Error("--decision must be accepted, sent or dismissed.");
1698
+ if (opts.decision === "sent" && !opts.sent)
1699
+ throw new Error("--decision sent requires --sent <outbound message id> (the confirmed message that was sent)");
1700
+ if (opts.sent)
1701
+ assertUuid(opts.sent, "sent message id");
1702
+ return client.post(`/api/v1/conversations/${contactId}/suggestion`, { messageId: opts.message, decision: opts.decision, ...(opts.sent ? { sentMessageId: opts.sent } : {}) });
1703
+ }));
1680
1704
  ai
1681
1705
  .command("daily-brief")
1682
1706
  .description("Your AI daily brief (task-focused summary)")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "conduyt",
3
- "version": "1.16.0",
3
+ "version": "1.18.0",
4
4
  "description": "Command-line interface for Conduyt CRM — manage contacts, deals, pipelines, and run insight queries from your terminal.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",