1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2025-02-08 23:20:03 +00:00
TiddlyWiki5/plugins/tiddlywiki/ai-tools/modules/conversations-archive-importer.js
Jeremy Ruston 0037935af5 Revert "Give conversation tiddlers a dummy text field"
This reverts commit 0e5955397b40c9d320daa327a260c74f30a9b899.
2024-07-21 15:48:33 +01:00

88 lines
2.9 KiB
JavaScript

/*\
title: $:/plugins/tiddlywiki/ai-tools/modules/conversations-archive-importer.js
type: application/javascript
module-type: library
Conversations archive importer
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
function ConversationsArchiveImporter() {
}
ConversationsArchiveImporter.prototype.import = function(widget,conversationsTitle) {
var logger = new $tw.utils.Logger("ai-tools");
var jsonConversations = widget.wiki.getTiddlerData(conversationsTitle,[]);
var tiddlers = [];
$tw.utils.each(jsonConversations,function(jsonConversation) {
var conversationTitle = (jsonConversation.title || "Untitled") + " (" + jsonConversation.conversation_id + ")",
conversationCreated = convertDate(jsonConversation.create_time),
conversationModified = convertDate(jsonConversation.update_time);
var conversationFields = {
title: conversationTitle,
tags: $tw.utils.stringifyList(["$:/tags/AI/Conversation"]),
created: conversationCreated,
modified: conversationModified
};
tiddlers.push(conversationFields);
var messageIndex = 1;
$tw.utils.each(jsonConversation.mapping,function(jsonMessage,messageId) {
// Skip messages where "message" is null
if(jsonMessage.message) {
var messageFields = {
title: conversationTitle + " " + (messageIndex + 1),
created: convertDate(jsonMessage.message.create_time) || conversationCreated,
modified: convertDate(jsonMessage.message.update_time) || conversationModified,
tags: $tw.utils.stringifyList([conversationTitle]),
role: jsonMessage.message.author.role,
"message-type": jsonMessage.message.content.content_type
}
switch(jsonMessage.message.content.content_type) {
case "code":
messageFields.text = jsonMessage.message.content.text;
messageFields.type = "text/plain";
break;
case "execution_output":
messageFields.text = jsonMessage.message.content.text;
messageFields.type = "text/plain";
break;
case "system_error":
messageFields.text = jsonMessage.message.content.text;
messageFields.type = "text/plain";
break;
case "text":
messageFields.text = jsonMessage.message.content.parts.join("");
messageFields.type = "text/markdown";
break;
default:
messageFields.text = JSON.stringify(jsonMessage.message,null,4);
messageFields.type = "text/plain";
break;
}
tiddlers.push(messageFields);
messageIndex += 1;
}
});
});
// Create summary tiddler
$tw.utils.each(tiddlers,function(tidder) {
});
// Create the tiddlers
widget.wiki.addTiddlers(tiddlers);
// widget.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlers)});
};
function convertDate(unixTimestamp) {
return $tw.utils.stringifyDate(new Date(unixTimestamp * 1000));
}
exports.ConversationsArchiveImporter = ConversationsArchiveImporter;
})();