@m4trix/core 0.12.0 → 0.12.1
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 +0 -271
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js +2 -272
- package/dist/index.js.map +1 -1
- package/package.json +18 -35
- package/dist/helper/index.cjs +0 -279
- package/dist/helper/index.cjs.map +0 -1
- package/dist/helper/index.d.ts +0 -108
- package/dist/helper/index.js +0 -277
- package/dist/helper/index.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var messages = require('@langchain/core/messages');
|
|
4
3
|
var effect = require('effect');
|
|
5
4
|
var crypto$1 = require('crypto');
|
|
6
5
|
|
|
@@ -809,275 +808,6 @@ var SocketIoFactory = class _SocketIoFactory {
|
|
|
809
808
|
return this.prefix ? `${this.prefix}:${event}` : event;
|
|
810
809
|
}
|
|
811
810
|
};
|
|
812
|
-
var humanAndAI = (message) => message instanceof messages.HumanMessage || message instanceof messages.AIMessage;
|
|
813
|
-
var humanOnly = (message) => message instanceof messages.HumanMessage;
|
|
814
|
-
var aiOnly = (message) => message instanceof messages.AIMessage;
|
|
815
|
-
var includingTags = (message, tags) => {
|
|
816
|
-
if (tags) {
|
|
817
|
-
return tags.some(
|
|
818
|
-
(tag) => Array.isArray(message.additional_kwargs?.tags) ? message.additional_kwargs?.tags.includes(tag) : false
|
|
819
|
-
);
|
|
820
|
-
}
|
|
821
|
-
return true;
|
|
822
|
-
};
|
|
823
|
-
var excludingTags = (message, tags) => {
|
|
824
|
-
if (tags) {
|
|
825
|
-
return !tags.some(
|
|
826
|
-
(tag) => Array.isArray(message.additional_kwargs?.tags) ? message.additional_kwargs?.tags.includes(tag) : false
|
|
827
|
-
);
|
|
828
|
-
}
|
|
829
|
-
return true;
|
|
830
|
-
};
|
|
831
|
-
var typeOnFilter = {
|
|
832
|
-
["HumanAndAI" /* HumanAndAI */]: humanAndAI,
|
|
833
|
-
["HumanOnly" /* HumanOnly */]: humanOnly,
|
|
834
|
-
["AIOnly" /* AIOnly */]: aiOnly,
|
|
835
|
-
["IncludingTags" /* IncludingTags */]: includingTags,
|
|
836
|
-
["ExcludingTags" /* ExcludingTags */]: excludingTags
|
|
837
|
-
};
|
|
838
|
-
function concise(messages$1) {
|
|
839
|
-
return messages$1.map((message) => {
|
|
840
|
-
const prefix = message instanceof messages.AIMessage ? "AI" : "Human";
|
|
841
|
-
return `${prefix}: ${message.content}`;
|
|
842
|
-
}).join("\n");
|
|
843
|
-
}
|
|
844
|
-
function verbose(messages$1) {
|
|
845
|
-
return messages$1.map((message) => {
|
|
846
|
-
const prefix = message instanceof messages.AIMessage ? "AI" : "Human";
|
|
847
|
-
return `${prefix}:
|
|
848
|
-
${message.content}`;
|
|
849
|
-
}).join("\n-------------------\n");
|
|
850
|
-
}
|
|
851
|
-
function redactAi(messages$1) {
|
|
852
|
-
return messages$1.map((message) => {
|
|
853
|
-
const prefix = message instanceof messages.AIMessage ? "AI" : "Human";
|
|
854
|
-
const content = message instanceof messages.AIMessage ? "[...]" : message.content;
|
|
855
|
-
return `${prefix}: ${content}`;
|
|
856
|
-
}).join("\n");
|
|
857
|
-
}
|
|
858
|
-
function redactHuman(messages$1) {
|
|
859
|
-
return messages$1.map((message) => {
|
|
860
|
-
const prefix = message instanceof messages.AIMessage ? "AI" : "Human";
|
|
861
|
-
const content = message instanceof messages.AIMessage ? "[...]" : message.content;
|
|
862
|
-
return `${prefix}: ${content}`;
|
|
863
|
-
}).join("\n");
|
|
864
|
-
}
|
|
865
|
-
var typeOnFormatter = {
|
|
866
|
-
["concise" /* Concise */]: concise,
|
|
867
|
-
["verbose" /* Verbose */]: verbose,
|
|
868
|
-
["redact-ai" /* RedactAi */]: redactAi,
|
|
869
|
-
["redact-human" /* RedactHuman */]: redactHuman
|
|
870
|
-
};
|
|
871
|
-
|
|
872
|
-
// src/helper/transform-messages/TransformMessages.ts
|
|
873
|
-
var TransformMessages = class _TransformMessages {
|
|
874
|
-
constructor(effect) {
|
|
875
|
-
this.effect = effect;
|
|
876
|
-
}
|
|
877
|
-
/**
|
|
878
|
-
* Create a new TransformMessages from an array of messages.
|
|
879
|
-
*/
|
|
880
|
-
static from(messages) {
|
|
881
|
-
return new _TransformMessages(effect.Effect.succeed(messages));
|
|
882
|
-
}
|
|
883
|
-
/**
|
|
884
|
-
* Filter messages based on a predicate function
|
|
885
|
-
*/
|
|
886
|
-
filter(predicate, tags) {
|
|
887
|
-
let finalPredicate;
|
|
888
|
-
if (typeof predicate === "string") {
|
|
889
|
-
finalPredicate = typeOnFilter[predicate];
|
|
890
|
-
} else {
|
|
891
|
-
finalPredicate = predicate;
|
|
892
|
-
}
|
|
893
|
-
return new _TransformMessages(
|
|
894
|
-
effect.pipe(
|
|
895
|
-
this.effect,
|
|
896
|
-
effect.Effect.map(
|
|
897
|
-
(messages) => messages.filter((message) => finalPredicate(message, tags))
|
|
898
|
-
)
|
|
899
|
-
)
|
|
900
|
-
);
|
|
901
|
-
}
|
|
902
|
-
/**
|
|
903
|
-
* Take only the last n messages, but safely.
|
|
904
|
-
* Tool calls should not be separated from the last human message.
|
|
905
|
-
* Ensures all tool call conversations in the last n messages are complete.
|
|
906
|
-
*/
|
|
907
|
-
safelyTakeLast(n, pruneAfterNOvershootingMessages = 0) {
|
|
908
|
-
return new _TransformMessages(
|
|
909
|
-
effect.pipe(
|
|
910
|
-
this.effect,
|
|
911
|
-
effect.Effect.map((messages$1) => {
|
|
912
|
-
const total = messages$1.length;
|
|
913
|
-
if (n <= 0 || total === 0)
|
|
914
|
-
return [];
|
|
915
|
-
const start = Math.max(0, total - n);
|
|
916
|
-
const end = total;
|
|
917
|
-
const lastSlice = messages$1.slice(start, end);
|
|
918
|
-
if (lastSlice[0] instanceof messages.ToolMessage && lastSlice[0].tool_call_id) {
|
|
919
|
-
let messagesToInclude = [];
|
|
920
|
-
const remainingMessages = messages$1.slice(0, start);
|
|
921
|
-
for (let i = remainingMessages.length - 1; i >= 0; i--) {
|
|
922
|
-
const msg = remainingMessages[i];
|
|
923
|
-
if (pruneAfterNOvershootingMessages > 0 && messagesToInclude.length - 1 >= pruneAfterNOvershootingMessages) {
|
|
924
|
-
messagesToInclude = [];
|
|
925
|
-
const filteredSlice = [];
|
|
926
|
-
let foundFirstNonToolMessage = false;
|
|
927
|
-
for (let i2 = 0; i2 < lastSlice.length; i2++) {
|
|
928
|
-
const msg2 = lastSlice[i2];
|
|
929
|
-
if (msg2 instanceof messages.ToolMessage) {
|
|
930
|
-
if (foundFirstNonToolMessage) {
|
|
931
|
-
filteredSlice.push(msg2);
|
|
932
|
-
}
|
|
933
|
-
} else {
|
|
934
|
-
foundFirstNonToolMessage = true;
|
|
935
|
-
filteredSlice.push(msg2);
|
|
936
|
-
}
|
|
937
|
-
}
|
|
938
|
-
return filteredSlice;
|
|
939
|
-
}
|
|
940
|
-
if (msg instanceof messages.AIMessage && Array.isArray(msg.tool_calls)) {
|
|
941
|
-
messagesToInclude.push(msg);
|
|
942
|
-
break;
|
|
943
|
-
} else if (msg instanceof messages.ToolMessage) {
|
|
944
|
-
messagesToInclude.push(msg);
|
|
945
|
-
} else {
|
|
946
|
-
throw new Error(
|
|
947
|
-
"Messages array invalid no adjacent AI message found"
|
|
948
|
-
);
|
|
949
|
-
}
|
|
950
|
-
}
|
|
951
|
-
return [...messagesToInclude.reverse(), ...lastSlice];
|
|
952
|
-
} else {
|
|
953
|
-
return lastSlice;
|
|
954
|
-
}
|
|
955
|
-
})
|
|
956
|
-
)
|
|
957
|
-
);
|
|
958
|
-
}
|
|
959
|
-
/**
|
|
960
|
-
* Take only the last n messages
|
|
961
|
-
*/
|
|
962
|
-
last(n) {
|
|
963
|
-
return new _TransformMessages(
|
|
964
|
-
effect.pipe(
|
|
965
|
-
this.effect,
|
|
966
|
-
effect.Effect.map((messages) => messages.slice(-n))
|
|
967
|
-
)
|
|
968
|
-
);
|
|
969
|
-
}
|
|
970
|
-
/**
|
|
971
|
-
* Take only the first n messages
|
|
972
|
-
*/
|
|
973
|
-
first(n) {
|
|
974
|
-
return new _TransformMessages(
|
|
975
|
-
effect.pipe(
|
|
976
|
-
this.effect,
|
|
977
|
-
effect.Effect.map((messages) => messages.slice(0, n))
|
|
978
|
-
)
|
|
979
|
-
);
|
|
980
|
-
}
|
|
981
|
-
/**
|
|
982
|
-
* Skip the first n messages
|
|
983
|
-
*/
|
|
984
|
-
skip(n) {
|
|
985
|
-
return new _TransformMessages(
|
|
986
|
-
effect.pipe(
|
|
987
|
-
this.effect,
|
|
988
|
-
effect.Effect.map((messages) => messages.slice(n))
|
|
989
|
-
)
|
|
990
|
-
);
|
|
991
|
-
}
|
|
992
|
-
/**
|
|
993
|
-
* Reverse the order of messages
|
|
994
|
-
*/
|
|
995
|
-
reverse() {
|
|
996
|
-
return new _TransformMessages(
|
|
997
|
-
effect.pipe(
|
|
998
|
-
this.effect,
|
|
999
|
-
effect.Effect.map((messages) => [...messages].reverse())
|
|
1000
|
-
)
|
|
1001
|
-
);
|
|
1002
|
-
}
|
|
1003
|
-
/**
|
|
1004
|
-
* Map over messages with a transformation function
|
|
1005
|
-
*/
|
|
1006
|
-
map(fn) {
|
|
1007
|
-
return new _TransformMessages(
|
|
1008
|
-
effect.pipe(
|
|
1009
|
-
this.effect,
|
|
1010
|
-
effect.Effect.map((messages) => messages.map(fn))
|
|
1011
|
-
)
|
|
1012
|
-
);
|
|
1013
|
-
}
|
|
1014
|
-
/**
|
|
1015
|
-
* Format messages according to the specified format type
|
|
1016
|
-
*/
|
|
1017
|
-
format(formatType) {
|
|
1018
|
-
const result = effect.Effect.runSync(
|
|
1019
|
-
effect.pipe(
|
|
1020
|
-
this.effect,
|
|
1021
|
-
effect.Effect.map((messages) => {
|
|
1022
|
-
if (formatType === "json" /* JSON */) {
|
|
1023
|
-
return JSON.stringify(messages, null, 2);
|
|
1024
|
-
}
|
|
1025
|
-
const formatter = typeOnFormatter[formatType];
|
|
1026
|
-
return formatter(messages);
|
|
1027
|
-
})
|
|
1028
|
-
)
|
|
1029
|
-
);
|
|
1030
|
-
return result;
|
|
1031
|
-
}
|
|
1032
|
-
// Sink methods
|
|
1033
|
-
/**
|
|
1034
|
-
* Convert to array - runs the effect and returns the result
|
|
1035
|
-
return pipe(
|
|
1036
|
-
this.effect,
|
|
1037
|
-
Effect.map((messages) => {
|
|
1038
|
-
if (formatType === FormatType.JSON) {
|
|
1039
|
-
return JSON.stringify(messages, null, 2);
|
|
1040
|
-
}
|
|
1041
|
-
|
|
1042
|
-
const formatter = typeOnFormatter[formatType];
|
|
1043
|
-
return formatter(messages);
|
|
1044
|
-
})
|
|
1045
|
-
);
|
|
1046
|
-
}
|
|
1047
|
-
|
|
1048
|
-
// Sink methods
|
|
1049
|
-
|
|
1050
|
-
/**
|
|
1051
|
-
* Convert to array - runs the effect and returns the result
|
|
1052
|
-
*/
|
|
1053
|
-
toArray() {
|
|
1054
|
-
return effect.Effect.runSync(this.effect);
|
|
1055
|
-
}
|
|
1056
|
-
/**
|
|
1057
|
-
* Convert to string - runs the effect and returns JSON string
|
|
1058
|
-
*/
|
|
1059
|
-
toString() {
|
|
1060
|
-
const result = effect.Effect.runSync(
|
|
1061
|
-
effect.pipe(
|
|
1062
|
-
this.effect,
|
|
1063
|
-
effect.Effect.map((messages) => JSON.stringify(messages, null, 2))
|
|
1064
|
-
)
|
|
1065
|
-
);
|
|
1066
|
-
return result;
|
|
1067
|
-
}
|
|
1068
|
-
/**
|
|
1069
|
-
* Get the count of messages
|
|
1070
|
-
*/
|
|
1071
|
-
count() {
|
|
1072
|
-
const result = effect.Effect.runSync(
|
|
1073
|
-
effect.pipe(
|
|
1074
|
-
this.effect,
|
|
1075
|
-
effect.Effect.map((messages) => messages.length)
|
|
1076
|
-
)
|
|
1077
|
-
);
|
|
1078
|
-
return result;
|
|
1079
|
-
}
|
|
1080
|
-
};
|
|
1081
811
|
var KEBAB_CASE_REGEX = /^[a-z0-9]+(-[a-z0-9]+)*$/;
|
|
1082
812
|
var ChannelName = effect.Brand.refined(
|
|
1083
813
|
(s) => typeof s === "string" && KEBAB_CASE_REGEX.test(s),
|
|
@@ -2206,7 +1936,6 @@ exports.Pump = Pump;
|
|
|
2206
1936
|
exports.Sink = Sink;
|
|
2207
1937
|
exports.Skill = Skill;
|
|
2208
1938
|
exports.SocketIoFactory = SocketIoFactory;
|
|
2209
|
-
exports.TransformMessages = TransformMessages;
|
|
2210
1939
|
exports.consoleTracer = consoleTracer;
|
|
2211
1940
|
exports.consoleTracerLayer = consoleTracerLayer;
|
|
2212
1941
|
exports.ensureFullWords = ensureFullWords;
|