34 lines
1.3 KiB
JavaScript
34 lines
1.3 KiB
JavaScript
import { post } from "./api.js";
|
|
import { h } from "./dom.js";
|
|
import { currentLead, state } from "./state.js";
|
|
import { compactButton, mountChat } from "./task.js";
|
|
const leadSource = {
|
|
key: () => "lead",
|
|
events: () => state.leadTranscript,
|
|
session: currentLead,
|
|
root: () => "",
|
|
taskId: () => undefined,
|
|
resetTopics: [],
|
|
refreshTopics: ["lead.sessions"],
|
|
transcriptTopic: "lead.transcript",
|
|
streamTopic: "lead.stream",
|
|
empty: "",
|
|
canSend: () => true,
|
|
placeholder: (s) => (s === "running" ? "Message your lead; it gets this when its turn ends" : "Message your lead. Paste or drop images to attach them."),
|
|
send: async ({ text, images, model, firstModel, sessionId }) => {
|
|
await post("/api/me/lead/messages", { body: { text, images, model: sessionId ? model : firstModel } });
|
|
},
|
|
};
|
|
function leadHead() {
|
|
return {
|
|
render: (usage) => {
|
|
const sess = currentLead();
|
|
const live = sess && sess.state !== "completed" ? sess : undefined;
|
|
return [h("div", { class: "head-actions session-actions" }, compactButton(live?.id, live?.state, live && usage(live.id)))];
|
|
},
|
|
};
|
|
}
|
|
export function mountLead(root) {
|
|
return mountChat(root, leadSource, leadHead);
|
|
}
|
|
//# sourceMappingURL=lead.js.map
|