@kapishdima/ai-ledger 0.0.6 → 0.0.7
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/plugin.js +23 -9
- package/package.json +1 -1
package/dist/plugin.js
CHANGED
|
@@ -3742,22 +3742,33 @@ async function deductBalance(provider, cost) {
|
|
|
3742
3742
|
var sessions = new Map;
|
|
3743
3743
|
var plugin_default = async (input) => {
|
|
3744
3744
|
await initializeDatabase();
|
|
3745
|
+
function log(msg) {
|
|
3746
|
+
input.client.app.log({ body: { service: "ai-ledger", level: "info", message: msg } });
|
|
3747
|
+
}
|
|
3745
3748
|
async function flushTurn(sessionID, state) {
|
|
3746
3749
|
sessions.delete(sessionID);
|
|
3747
|
-
const
|
|
3748
|
-
|
|
3749
|
-
|
|
3750
|
-
|
|
3751
|
-
|
|
3752
|
-
|
|
3753
|
-
|
|
3754
|
-
|
|
3755
|
-
|
|
3750
|
+
const text2 = `ai-ledger \xB7 ${state.providerID} \xB7 -$${state.totalCost.toFixed(4)} spent | $${state.lastBalance.toFixed(2)} remaining`;
|
|
3751
|
+
log(`flushing turn for ${sessionID}: ${text2}`);
|
|
3752
|
+
try {
|
|
3753
|
+
const res = await input.client.session.prompt({
|
|
3754
|
+
path: { id: sessionID },
|
|
3755
|
+
query: { directory: input.directory },
|
|
3756
|
+
body: {
|
|
3757
|
+
noReply: true,
|
|
3758
|
+
parts: [{ type: "text", text: text2 }]
|
|
3759
|
+
}
|
|
3760
|
+
});
|
|
3761
|
+
log(`session.prompt result: ${JSON.stringify(res)}`);
|
|
3762
|
+
} catch (e) {
|
|
3763
|
+
log(`session.prompt error: ${e?.message}`);
|
|
3764
|
+
}
|
|
3756
3765
|
}
|
|
3757
3766
|
return {
|
|
3758
3767
|
event: async ({ event }) => {
|
|
3768
|
+
log(`event: ${event.type}`);
|
|
3759
3769
|
if (event.type === "session.idle") {
|
|
3760
3770
|
const sessionID = event.properties?.sessionID;
|
|
3771
|
+
log(`session.idle for ${sessionID}, accumulated: ${sessions.has(sessionID)}`);
|
|
3761
3772
|
const state = sessions.get(sessionID);
|
|
3762
3773
|
if (state)
|
|
3763
3774
|
await flushTurn(sessionID, state);
|
|
@@ -3770,9 +3781,11 @@ var plugin_default = async (input) => {
|
|
|
3770
3781
|
return;
|
|
3771
3782
|
if (msg.role !== "assistant")
|
|
3772
3783
|
return;
|
|
3784
|
+
log(`assistant message: cost=${msg.cost} provider=${msg.providerID}`);
|
|
3773
3785
|
if (!msg.cost || msg.cost === 0)
|
|
3774
3786
|
return;
|
|
3775
3787
|
const wallet = await getWallet(msg.providerID);
|
|
3788
|
+
log(`wallet for ${msg.providerID}: ${wallet ? "found" : "NOT FOUND"}`);
|
|
3776
3789
|
if (!wallet)
|
|
3777
3790
|
return;
|
|
3778
3791
|
const newBalance = await deductBalance(msg.providerID, msg.cost);
|
|
@@ -3790,6 +3803,7 @@ var plugin_default = async (input) => {
|
|
|
3790
3803
|
const existing = sessions.get(msg.sessionID);
|
|
3791
3804
|
const totalCost = (existing?.totalCost ?? 0) + msg.cost;
|
|
3792
3805
|
sessions.set(msg.sessionID, { totalCost, lastBalance: newBalance, providerID: msg.providerID });
|
|
3806
|
+
log(`accumulated for session ${msg.sessionID}: totalCost=${totalCost}`);
|
|
3793
3807
|
}
|
|
3794
3808
|
};
|
|
3795
3809
|
};
|