@agenticmail/core 0.9.35 → 0.9.37

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.
package/dist/index.cjs CHANGED
@@ -7448,14 +7448,16 @@ function formatOperatorQueryTelegramMessage(input) {
7448
7448
  const lines = [];
7449
7449
  lines.push(input.urgency === "high" ? "\u{1F534} Your agent needs an answer to continue a live call (URGENT)." : "\u{1F7E1} Your agent needs an answer to continue a live call.");
7450
7450
  lines.push("");
7451
- lines.push(`Question: ${input.question}`);
7452
- if (input.callContext) lines.push(`Context: ${input.callContext}`);
7451
+ lines.push(`\u2753 ${input.question}`);
7452
+ if (input.callContext) {
7453
+ lines.push("");
7454
+ lines.push(`Context: ${input.callContext}`);
7455
+ }
7453
7456
  lines.push("");
7454
- lines.push("Reply to this message with your answer. You can also send:");
7455
- lines.push(` /answer ${input.queryId} <your answer>`);
7456
- lines.push(` /approve ${input.queryId} \xB7 /deny ${input.queryId}`);
7457
+ lines.push("Reply to this message \u2014 your text goes straight back to the agent on the call.");
7458
+ lines.push("Or use one of: /approve \xB7 /reject");
7457
7459
  lines.push("");
7458
- lines.push(`[${TELEGRAM_OPERATOR_QUERY_TAG} ${input.queryId}]`);
7460
+ lines.push(`\u2014 [${TELEGRAM_OPERATOR_QUERY_TAG} ${input.queryId}]`);
7459
7461
  return lines.join("\n");
7460
7462
  }
7461
7463
  function parseTelegramOperatorReply(input) {
@@ -7467,7 +7469,7 @@ function parseTelegramOperatorReply(input) {
7467
7469
  if (answerCmd) {
7468
7470
  return { queryId: answerCmd[1], answer: answerCmd[2].trim(), kind: "answer" };
7469
7471
  }
7470
- const decisionCmd = /^\/(approve|deny)(?:@\w+)?\b([\s\S]*)$/i.exec(text);
7472
+ const decisionCmd = /^\/(approve|deny|reject)(?:@\w+)?\b([\s\S]*)$/i.exec(text);
7471
7473
  if (decisionCmd) {
7472
7474
  const kind = decisionCmd[1].toLowerCase() === "approve" ? "approve" : "deny";
7473
7475
  const rest = decisionCmd[2].trim();
@@ -11126,7 +11128,16 @@ function buildRealtimeSessionConfig(opts) {
11126
11128
  audio: {
11127
11129
  input: {
11128
11130
  format: { ...audioFormat },
11129
- turn_detection: { type: "server_vad" }
11131
+ turn_detection: { type: "server_vad" },
11132
+ // v0.9.91 — enable parallel transcription of the CALLER's audio
11133
+ // so the bridge can emit `provider`/`speaker:caller` transcript
11134
+ // entries. Without this opt-in OpenAI never sent
11135
+ // `conversation.item.input_audio_transcription.completed`
11136
+ // events, so the end-of-call digest only had the agent's side
11137
+ // of the conversation — half the call. `gpt-4o-mini-transcribe`
11138
+ // is the cheapest current Realtime-compatible transcription
11139
+ // model; falls back to whisper-1 server-side if unavailable.
11140
+ transcription: { model: "gpt-4o-mini-transcribe" }
11130
11141
  },
11131
11142
  output: {
11132
11143
  format: { ...audioFormat },
package/dist/index.d.cts CHANGED
@@ -1636,8 +1636,15 @@ interface OperatorQueryNotificationInput {
1636
1636
  }
1637
1637
  /**
1638
1638
  * Render the Telegram message body for an `ask_operator` notification.
1639
- * The trailing `[AMQ <id>]` token lets a reply be matched to the query
1640
- * even when the operator does not use Telegram's native reply gesture.
1639
+ *
1640
+ * v0.9.90 simplified the surface. Earlier versions printed
1641
+ * `/approve oq_<long-id>` and `/answer oq_<long-id> <text>` inline,
1642
+ * which made every notification look like a CLI manpage. The query
1643
+ * id is now hidden in a compact footer tag (`[AMQ oq_…]`) and the
1644
+ * three primary actions are presented as bare commands the operator
1645
+ * uses with Telegram's native REPLY gesture — which resolves the
1646
+ * query id automatically. The full `/answer <id> …` syntax still
1647
+ * works for non-reply scenarios; it's just no longer the headline.
1641
1648
  */
1642
1649
  declare function formatOperatorQueryTelegramMessage(input: OperatorQueryNotificationInput): string;
1643
1650
  /** A `kind` of `approve`/`deny` is a decision; `answer` is free-form. */
package/dist/index.d.ts CHANGED
@@ -1636,8 +1636,15 @@ interface OperatorQueryNotificationInput {
1636
1636
  }
1637
1637
  /**
1638
1638
  * Render the Telegram message body for an `ask_operator` notification.
1639
- * The trailing `[AMQ <id>]` token lets a reply be matched to the query
1640
- * even when the operator does not use Telegram's native reply gesture.
1639
+ *
1640
+ * v0.9.90 simplified the surface. Earlier versions printed
1641
+ * `/approve oq_<long-id>` and `/answer oq_<long-id> <text>` inline,
1642
+ * which made every notification look like a CLI manpage. The query
1643
+ * id is now hidden in a compact footer tag (`[AMQ oq_…]`) and the
1644
+ * three primary actions are presented as bare commands the operator
1645
+ * uses with Telegram's native REPLY gesture — which resolves the
1646
+ * query id automatically. The full `/answer <id> …` syntax still
1647
+ * works for non-reply scenarios; it's just no longer the headline.
1641
1648
  */
1642
1649
  declare function formatOperatorQueryTelegramMessage(input: OperatorQueryNotificationInput): string;
1643
1650
  /** A `kind` of `approve`/`deny` is a decision; `answer` is free-form. */
package/dist/index.js CHANGED
@@ -5779,14 +5779,16 @@ function formatOperatorQueryTelegramMessage(input) {
5779
5779
  const lines = [];
5780
5780
  lines.push(input.urgency === "high" ? "\u{1F534} Your agent needs an answer to continue a live call (URGENT)." : "\u{1F7E1} Your agent needs an answer to continue a live call.");
5781
5781
  lines.push("");
5782
- lines.push(`Question: ${input.question}`);
5783
- if (input.callContext) lines.push(`Context: ${input.callContext}`);
5782
+ lines.push(`\u2753 ${input.question}`);
5783
+ if (input.callContext) {
5784
+ lines.push("");
5785
+ lines.push(`Context: ${input.callContext}`);
5786
+ }
5784
5787
  lines.push("");
5785
- lines.push("Reply to this message with your answer. You can also send:");
5786
- lines.push(` /answer ${input.queryId} <your answer>`);
5787
- lines.push(` /approve ${input.queryId} \xB7 /deny ${input.queryId}`);
5788
+ lines.push("Reply to this message \u2014 your text goes straight back to the agent on the call.");
5789
+ lines.push("Or use one of: /approve \xB7 /reject");
5788
5790
  lines.push("");
5789
- lines.push(`[${TELEGRAM_OPERATOR_QUERY_TAG} ${input.queryId}]`);
5791
+ lines.push(`\u2014 [${TELEGRAM_OPERATOR_QUERY_TAG} ${input.queryId}]`);
5790
5792
  return lines.join("\n");
5791
5793
  }
5792
5794
  function parseTelegramOperatorReply(input) {
@@ -5798,7 +5800,7 @@ function parseTelegramOperatorReply(input) {
5798
5800
  if (answerCmd) {
5799
5801
  return { queryId: answerCmd[1], answer: answerCmd[2].trim(), kind: "answer" };
5800
5802
  }
5801
- const decisionCmd = /^\/(approve|deny)(?:@\w+)?\b([\s\S]*)$/i.exec(text);
5803
+ const decisionCmd = /^\/(approve|deny|reject)(?:@\w+)?\b([\s\S]*)$/i.exec(text);
5802
5804
  if (decisionCmd) {
5803
5805
  const kind = decisionCmd[1].toLowerCase() === "approve" ? "approve" : "deny";
5804
5806
  const rest = decisionCmd[2].trim();
@@ -9457,7 +9459,16 @@ function buildRealtimeSessionConfig(opts) {
9457
9459
  audio: {
9458
9460
  input: {
9459
9461
  format: { ...audioFormat },
9460
- turn_detection: { type: "server_vad" }
9462
+ turn_detection: { type: "server_vad" },
9463
+ // v0.9.91 — enable parallel transcription of the CALLER's audio
9464
+ // so the bridge can emit `provider`/`speaker:caller` transcript
9465
+ // entries. Without this opt-in OpenAI never sent
9466
+ // `conversation.item.input_audio_transcription.completed`
9467
+ // events, so the end-of-call digest only had the agent's side
9468
+ // of the conversation — half the call. `gpt-4o-mini-transcribe`
9469
+ // is the cheapest current Realtime-compatible transcription
9470
+ // model; falls back to whisper-1 server-side if unavailable.
9471
+ transcription: { model: "gpt-4o-mini-transcribe" }
9461
9472
  },
9462
9473
  output: {
9463
9474
  format: { ...audioFormat },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agenticmail/core",
3
- "version": "0.9.35",
3
+ "version": "0.9.37",
4
4
  "description": "Core SDK for AgenticMail — email, SMS, and phone call-control for AI agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",