@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 +19 -8
- package/dist/index.d.cts +9 -2
- package/dist/index.d.ts +9 -2
- package/dist/index.js +19 -8
- package/package.json +1 -1
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(
|
|
7452
|
-
if (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
|
|
7455
|
-
lines.push(
|
|
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(
|
|
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
|
-
*
|
|
1640
|
-
*
|
|
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
|
-
*
|
|
1640
|
-
*
|
|
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(
|
|
5783
|
-
if (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
|
|
5786
|
-
lines.push(
|
|
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(
|
|
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 },
|