@diegoaltoworks/chatter 0.55.0 → 0.56.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.
- package/dist/channels/index.js +18 -1
- package/dist/channels/index.mjs +18 -1
- package/dist/channels/pipeline.d.ts +11 -1
- package/dist/channels/pipeline.d.ts.map +1 -1
- package/dist/channels/telegram/channel.d.ts +3 -1
- package/dist/channels/telegram/channel.d.ts.map +1 -1
- package/dist/channels/telegram/index.js +22 -2
- package/dist/channels/telegram/index.mjs +22 -2
- package/dist/channels/whatsapp/inbound.d.ts +4 -1
- package/dist/channels/whatsapp/inbound.d.ts.map +1 -1
- package/dist/channels/whatsapp/index.js +22 -2
- package/dist/channels/whatsapp/index.mjs +22 -2
- package/dist/core/answer.d.ts +31 -0
- package/dist/core/answer.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +54 -10
- package/dist/index.mjs +53 -10
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +26 -4
- package/dist/mcp-server.mjs +26 -4
- package/dist/routes/demo.d.ts.map +1 -1
- package/dist/routes/openai.d.ts.map +1 -1
- package/dist/routes/private.d.ts.map +1 -1
- package/dist/routes/public.d.ts.map +1 -1
- package/dist/server.js +38 -6
- package/dist/server.mjs +38 -6
- package/dist/types.d.ts +17 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/server.mjs
CHANGED
|
@@ -215,6 +215,18 @@ async function answerOnce({
|
|
|
215
215
|
}
|
|
216
216
|
return completeOnce({ client, system, messages, temperature, model });
|
|
217
217
|
}
|
|
218
|
+
async function applyTransformReply(transformReply, input, logger) {
|
|
219
|
+
if (!transformReply) return input.text;
|
|
220
|
+
try {
|
|
221
|
+
return await transformReply(input);
|
|
222
|
+
} catch (error) {
|
|
223
|
+
logger?.error(
|
|
224
|
+
`transformReply threw for channel "${input.channel}"; sending the original reply`,
|
|
225
|
+
error
|
|
226
|
+
);
|
|
227
|
+
return input.text;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
218
230
|
async function* answerStream({
|
|
219
231
|
answerFn,
|
|
220
232
|
client,
|
|
@@ -1045,7 +1057,12 @@ function demoRoutes(deps) {
|
|
|
1045
1057
|
mode: "public",
|
|
1046
1058
|
model
|
|
1047
1059
|
});
|
|
1048
|
-
|
|
1060
|
+
const reply = await applyTransformReply(
|
|
1061
|
+
config.transformReply,
|
|
1062
|
+
{ channel: "widget-demo", text: out.content },
|
|
1063
|
+
logger
|
|
1064
|
+
);
|
|
1065
|
+
return c.json({ reply: reply ?? "" });
|
|
1049
1066
|
} catch (error) {
|
|
1050
1067
|
const err = error;
|
|
1051
1068
|
logger.error("Demo chat error:", err);
|
|
@@ -1169,7 +1186,7 @@ function oversizedBodyError(message) {
|
|
|
1169
1186
|
return { error: { message, type: "invalid_request_error" } };
|
|
1170
1187
|
}
|
|
1171
1188
|
function openaiRoutes(deps) {
|
|
1172
|
-
const { client, store, config, prompts, apiKeyManager } = deps;
|
|
1189
|
+
const { client, store, config, prompts, apiKeyManager, logger } = deps;
|
|
1173
1190
|
const app = new Hono2();
|
|
1174
1191
|
const { limitPublic, limitPrivate } = createRateLimiter(config);
|
|
1175
1192
|
const requirePrivateJWT = createJWTMiddleware(config);
|
|
@@ -1264,13 +1281,18 @@ function openaiRoutes(deps) {
|
|
|
1264
1281
|
temperature,
|
|
1265
1282
|
model: serverModel
|
|
1266
1283
|
});
|
|
1284
|
+
const reply = await applyTransformReply(
|
|
1285
|
+
config.transformReply,
|
|
1286
|
+
{ channel: `openai-compat-${mode}`, sender, conversationId, text: out.content },
|
|
1287
|
+
logger
|
|
1288
|
+
);
|
|
1267
1289
|
return c.json({
|
|
1268
1290
|
id,
|
|
1269
1291
|
object: "chat.completion",
|
|
1270
1292
|
created,
|
|
1271
1293
|
model: serverModel,
|
|
1272
1294
|
choices: [
|
|
1273
|
-
{ index: 0, message: { role: "assistant", content:
|
|
1295
|
+
{ index: 0, message: { role: "assistant", content: reply ?? "" }, finish_reason: "stop" }
|
|
1274
1296
|
],
|
|
1275
1297
|
usage: out.usage
|
|
1276
1298
|
});
|
|
@@ -1300,7 +1322,7 @@ function wantsStream(c) {
|
|
|
1300
1322
|
return acc.includes("text/event-stream");
|
|
1301
1323
|
}
|
|
1302
1324
|
function privateRoutes(deps) {
|
|
1303
|
-
const { client, store, config, prompts } = deps;
|
|
1325
|
+
const { client, store, config, prompts, logger } = deps;
|
|
1304
1326
|
const app = new Hono3();
|
|
1305
1327
|
const requirePrivateJWT = createJWTMiddleware(config);
|
|
1306
1328
|
const { limitPrivate } = createRateLimiter(config);
|
|
@@ -1355,7 +1377,12 @@ function privateRoutes(deps) {
|
|
|
1355
1377
|
sender,
|
|
1356
1378
|
model
|
|
1357
1379
|
});
|
|
1358
|
-
|
|
1380
|
+
const reply = await applyTransformReply(
|
|
1381
|
+
config.transformReply,
|
|
1382
|
+
{ channel: "widget-private", sender, text: out.content },
|
|
1383
|
+
logger
|
|
1384
|
+
);
|
|
1385
|
+
return c.json({ reply: reply ?? "" });
|
|
1359
1386
|
});
|
|
1360
1387
|
return app;
|
|
1361
1388
|
}
|
|
@@ -1513,7 +1540,12 @@ function publicRoutes(deps) {
|
|
|
1513
1540
|
});
|
|
1514
1541
|
}
|
|
1515
1542
|
const out = await answerOnce({ answerFn, client, system, messages, mode: "public", model });
|
|
1516
|
-
|
|
1543
|
+
const reply = await applyTransformReply(
|
|
1544
|
+
config.transformReply,
|
|
1545
|
+
{ channel: "widget-public", text: out.content },
|
|
1546
|
+
logger
|
|
1547
|
+
);
|
|
1548
|
+
return c.json({ reply: reply ?? "" });
|
|
1517
1549
|
});
|
|
1518
1550
|
return app;
|
|
1519
1551
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import type { Client as LibsqlClient } from "@libsql/client";
|
|
|
8
8
|
import type { Hono } from "hono";
|
|
9
9
|
import type OpenAI from "openai";
|
|
10
10
|
import type { Channel, ChannelSenderRegistry } from "./channels";
|
|
11
|
-
import type { AnswerFn } from "./core/answer";
|
|
11
|
+
import type { AnswerFn, TransformReply } from "./core/answer";
|
|
12
12
|
import type { BucketsFor } from "./core/buckets";
|
|
13
13
|
import type { Logger, LogLevel } from "./core/logger";
|
|
14
14
|
import type { PromptLoader } from "./core/prompts";
|
|
@@ -234,6 +234,22 @@ export interface ChatterConfig {
|
|
|
234
234
|
* errors. Unset: the built-in OpenAI completion is used.
|
|
235
235
|
*/
|
|
236
236
|
answerFn?: AnswerFn;
|
|
237
|
+
/**
|
|
238
|
+
* Modifies or vetoes an outgoing reply after it has already been produced
|
|
239
|
+
* (by `answerFn` or the built-in completion, past guardrails). Return a
|
|
240
|
+
* string to replace the reply, or `null` to veto it — a deliberate drop,
|
|
241
|
+
* treated the same as an empty answer: nothing is delivered, and the
|
|
242
|
+
* channel pipeline never records an assistant turn for it (the user's own
|
|
243
|
+
* turn, already appended before answering, stays recorded either way). A
|
|
244
|
+
* throw/rejection is logged and the ORIGINAL reply is sent.
|
|
245
|
+
*
|
|
246
|
+
* Consulted by the channel pipeline and every non-streaming HTTP chat
|
|
247
|
+
* surface (widget and demo routes, OpenAI-compatible endpoints, MCP chat
|
|
248
|
+
* tools). Streaming responses are delivered incrementally as they're
|
|
249
|
+
* produced, before a final answer exists to transform, so this hook is
|
|
250
|
+
* never consulted for them. Unset: replies pass through unchanged.
|
|
251
|
+
*/
|
|
252
|
+
transformReply?: TransformReply;
|
|
237
253
|
/**
|
|
238
254
|
* Decides which knowledge buckets each chat turn may retrieve from, given
|
|
239
255
|
* the pipeline mode and — where the surface knows it — the sender's
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED