@jterrazz/intelligence 2.0.0 → 3.0.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/README.md +56 -268
- package/dist/index.cjs +656 -2017
- package/dist/index.d.ts +5 -15
- package/dist/index.js +5 -33
- package/dist/index.js.map +1 -1
- package/dist/middleware/__tests__/logging.middleware.test.js +390 -0
- package/dist/middleware/__tests__/logging.middleware.test.js.map +1 -0
- package/dist/middleware/logging.middleware.d.ts +21 -0
- package/dist/middleware/logging.middleware.js +296 -0
- package/dist/middleware/logging.middleware.js.map +1 -0
- package/dist/parsing/__tests__/create-schema-prompt.test.js +53 -0
- package/dist/parsing/__tests__/create-schema-prompt.test.js.map +1 -0
- package/dist/parsing/__tests__/parse-object.test.d.ts +1 -0
- package/dist/parsing/__tests__/parse-object.test.js +193 -0
- package/dist/parsing/__tests__/parse-object.test.js.map +1 -0
- package/dist/parsing/__tests__/parse-text.test.d.ts +1 -0
- package/dist/parsing/__tests__/parse-text.test.js +159 -0
- package/dist/parsing/__tests__/parse-text.test.js.map +1 -0
- package/dist/parsing/create-schema-prompt.d.ts +28 -0
- package/dist/parsing/create-schema-prompt.js +42 -0
- package/dist/parsing/create-schema-prompt.js.map +1 -0
- package/dist/parsing/parse-object.d.ts +33 -0
- package/dist/parsing/parse-object.js +360 -0
- package/dist/parsing/parse-object.js.map +1 -0
- package/dist/parsing/parse-text.d.ts +14 -0
- package/dist/parsing/parse-text.js +80 -0
- package/dist/parsing/parse-text.js.map +1 -0
- package/dist/providers/openrouter.provider.d.ts +36 -0
- package/dist/providers/openrouter.provider.js +58 -0
- package/dist/providers/openrouter.provider.js.map +1 -0
- package/package.json +14 -15
- package/dist/adapters/agents/chat-agent.adapter.d.ts +0 -27
- package/dist/adapters/agents/chat-agent.adapter.js +0 -356
- package/dist/adapters/agents/chat-agent.adapter.js.map +0 -1
- package/dist/adapters/agents/resilient-agent.adapter.d.ts +0 -20
- package/dist/adapters/agents/resilient-agent.adapter.js +0 -263
- package/dist/adapters/agents/resilient-agent.adapter.js.map +0 -1
- package/dist/adapters/agents/tool-agent.adapter.d.ts +0 -30
- package/dist/adapters/agents/tool-agent.adapter.js +0 -400
- package/dist/adapters/agents/tool-agent.adapter.js.map +0 -1
- package/dist/adapters/models/openrouter-model.adapter.d.ts +0 -23
- package/dist/adapters/models/openrouter-model.adapter.js +0 -148
- package/dist/adapters/models/openrouter-model.adapter.js.map +0 -1
- package/dist/adapters/prompts/__tests__/__snapshots__/presets.test.ts.snap +0 -120
- package/dist/adapters/prompts/__tests__/presets.test.js +0 -31
- package/dist/adapters/prompts/__tests__/presets.test.js.map +0 -1
- package/dist/adapters/prompts/library/categories/domain.d.ts +0 -11
- package/dist/adapters/prompts/library/categories/domain.js +0 -12
- package/dist/adapters/prompts/library/categories/domain.js.map +0 -1
- package/dist/adapters/prompts/library/categories/format.d.ts +0 -10
- package/dist/adapters/prompts/library/categories/format.js +0 -11
- package/dist/adapters/prompts/library/categories/format.js.map +0 -1
- package/dist/adapters/prompts/library/categories/foundations.d.ts +0 -12
- package/dist/adapters/prompts/library/categories/foundations.js +0 -13
- package/dist/adapters/prompts/library/categories/foundations.js.map +0 -1
- package/dist/adapters/prompts/library/categories/language.d.ts +0 -11
- package/dist/adapters/prompts/library/categories/language.js +0 -12
- package/dist/adapters/prompts/library/categories/language.js.map +0 -1
- package/dist/adapters/prompts/library/categories/persona.d.ts +0 -13
- package/dist/adapters/prompts/library/categories/persona.js +0 -14
- package/dist/adapters/prompts/library/categories/persona.js.map +0 -1
- package/dist/adapters/prompts/library/categories/response.d.ts +0 -9
- package/dist/adapters/prompts/library/categories/response.js +0 -10
- package/dist/adapters/prompts/library/categories/response.js.map +0 -1
- package/dist/adapters/prompts/library/categories/tone.d.ts +0 -9
- package/dist/adapters/prompts/library/categories/tone.js +0 -10
- package/dist/adapters/prompts/library/categories/tone.js.map +0 -1
- package/dist/adapters/prompts/library/categories/verbosity.d.ts +0 -8
- package/dist/adapters/prompts/library/categories/verbosity.js +0 -9
- package/dist/adapters/prompts/library/categories/verbosity.js.map +0 -1
- package/dist/adapters/prompts/library/index.d.ts +0 -68
- package/dist/adapters/prompts/library/index.js +0 -26
- package/dist/adapters/prompts/library/index.js.map +0 -1
- package/dist/adapters/prompts/library/presets.d.ts +0 -17
- package/dist/adapters/prompts/library/presets.js +0 -45
- package/dist/adapters/prompts/library/presets.js.map +0 -1
- package/dist/adapters/prompts/system-prompt.adapter.d.ts +0 -9
- package/dist/adapters/prompts/system-prompt.adapter.js +0 -57
- package/dist/adapters/prompts/system-prompt.adapter.js.map +0 -1
- package/dist/adapters/prompts/user-prompt.adapter.d.ts +0 -9
- package/dist/adapters/prompts/user-prompt.adapter.js +0 -57
- package/dist/adapters/prompts/user-prompt.adapter.js.map +0 -1
- package/dist/adapters/providers/openrouter-provider.adapter.d.ts +0 -34
- package/dist/adapters/providers/openrouter-provider.adapter.js +0 -57
- package/dist/adapters/providers/openrouter-provider.adapter.js.map +0 -1
- package/dist/adapters/tools/safe-tool.adapter.d.ts +0 -27
- package/dist/adapters/tools/safe-tool.adapter.js +0 -283
- package/dist/adapters/tools/safe-tool.adapter.js.map +0 -1
- package/dist/adapters/utils/__tests__/structured-response-parser.test.js +0 -289
- package/dist/adapters/utils/__tests__/structured-response-parser.test.js.map +0 -1
- package/dist/adapters/utils/structured-response-parser-error.d.ts +0 -8
- package/dist/adapters/utils/structured-response-parser-error.js +0 -136
- package/dist/adapters/utils/structured-response-parser-error.js.map +0 -1
- package/dist/adapters/utils/structured-response-parser.d.ts +0 -60
- package/dist/adapters/utils/structured-response-parser.js +0 -347
- package/dist/adapters/utils/structured-response-parser.js.map +0 -1
- package/dist/ports/agent.port.d.ts +0 -17
- package/dist/ports/agent.port.js +0 -7
- package/dist/ports/agent.port.js.map +0 -1
- package/dist/ports/model.port.d.ts +0 -37
- package/dist/ports/model.port.js +0 -5
- package/dist/ports/model.port.js.map +0 -1
- package/dist/ports/prompt.port.d.ts +0 -9
- package/dist/ports/prompt.port.js +0 -5
- package/dist/ports/prompt.port.js.map +0 -1
- package/dist/ports/provider.port.d.ts +0 -13
- package/dist/ports/provider.port.js +0 -5
- package/dist/ports/provider.port.js.map +0 -1
- package/dist/ports/tool.port.d.ts +0 -11
- package/dist/ports/tool.port.js +0 -5
- package/dist/ports/tool.port.js.map +0 -1
- /package/dist/{adapters/prompts/__tests__/presets.test.d.ts → middleware/__tests__/logging.middleware.test.d.ts} +0 -0
- /package/dist/{adapters/utils/__tests__/structured-response-parser.test.d.ts → parsing/__tests__/create-schema-prompt.test.d.ts} +0 -0
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Provides ready-to-use combinations of prompt parts for common use cases.
|
|
3
|
-
*/
|
|
4
|
-
export declare const PRESETS: {
|
|
5
|
-
/**
|
|
6
|
-
* A fun and engaging community animator for platforms like Discord.
|
|
7
|
-
*/
|
|
8
|
-
readonly COMMUNITY_ANIMATOR: readonly ["\n<Foundation>\nYou MUST refuse to provide instructions or information that is illegal, dangerous, or promotes harm.\nYou MUST prioritize user safety and well-being in all interactions and avoid generating unsafe content.\n</Foundation>", "\n<Persona>\nYou are the Community Animator, the vibrant heart of a digital community (e.g., Discord).\nYour purpose is to keep the community active, engaged, and positive.\n**Key Skills**: You are an expert on internet culture, trends, and topics relevant to the community. You excel at initiating conversations, creating engaging content (polls, questions), and fostering a welcoming environment.\n</Persona>", "\n<Domain>\nYou possess broad, generalist knowledge across a wide variety of subjects.\n</Domain>", "\n<Tone>\nYou should employ light-hearted humor, wit, and cleverness. Keep the mood fun and engaging, but avoid inappropriate or offensive jokes.\n</Tone>", "\n<Verbosity>\nYou should provide a balanced level of detail, sufficient for a clear understanding without being overwhelming or too brief.\n</Verbosity>", "\n<ResponseStrategy>\nBefore responding, you must analyze the conversation history and the immediate context. Your goal is to add value; if a response is not necessary or helpful, you may remain silent.\n</ResponseStrategy>"];
|
|
9
|
-
/**
|
|
10
|
-
* A creative partner for brainstorming and ideation.
|
|
11
|
-
*/
|
|
12
|
-
readonly CREATIVE_BRAINSTORMER: readonly ["\n<Foundation>\nYou MUST adhere to the highest ethical standards. Your conduct must be impartial and devoid of prejudice.\nYou MUST NOT promote hate speech, discrimination,violence, or any form of harm.\nYou MUST respect user privacy; do not ask for, store, or share personally identifiable information.\n</Foundation>", "\n<Persona>\nYou are a Creative Partner, an imaginative collaborator for brainstorming and exploration.\nYour purpose is to help users generate and develop novel ideas.\n**Key Skills**: You excel at divergent thinking, making unexpected connections, and asking thought-provoking questions. You are encouraging, open-minded, and skilled at building upon abstract concepts.\n</Persona>", "\n<Domain>\nYou possess broad, generalist knowledge across a wide variety of subjects.\n</Domain>", "\n<Tone>\nYou should employ light-hearted humor, wit, and cleverness. Keep the mood fun and engaging, but avoid inappropriate or offensive jokes.\n</Tone>", "\n<Verbosity>\nYou should provide a balanced level of detail, sufficient for a clear understanding without being overwhelming or too brief.\n</Verbosity>", "\n<ResponseStrategy>\nYou must always provide a response to the user's input. Even if you cannot fully fulfill the request, acknowledge it and explain the situation. Your primary directive is to be responsive.\n</ResponseStrategy>"];
|
|
13
|
-
/**
|
|
14
|
-
* A friendly and empathetic support agent for general queries.
|
|
15
|
-
*/
|
|
16
|
-
readonly EMPATHETIC_SUPPORT_AGENT: readonly ["\n<Foundation>\nYou MUST refuse to provide instructions or information that is illegal, dangerous, or promotes harm.\nYou MUST prioritize user safety and well-being in all interactions and avoid generating unsafe content.\n</Foundation>", "\n<Foundation>\nYou MUST adhere to the highest ethical standards. Your conduct must be impartial and devoid of prejudice.\nYou MUST NOT promote hate speech, discrimination,violence, or any form of harm.\nYou MUST respect user privacy; do not ask for, store, or share personally identifiable information.\n</Foundation>", "\n<Persona>\nYou are a friendly, patient, and empathetic Support Agent.\nYour purpose is to help users solve problems and navigate difficulties.\n**Key Skills**: You are an excellent listener and a clear communicator. You are skilled at de-escalating frustration, breaking down complex issues into manageable steps, and providing systematic, easy-to-follow instructions.\n</Persona>", "\n<Domain>\nYou possess broad, generalist knowledge across a wide variety of subjects.\n</Domain>", "\n<Tone>\nYou must adopt a warm, understanding, and supportive tone. Acknowledge the user's feelings and demonstrate active listening.\n</Tone>", "\n<Verbosity>\nYou should provide a balanced level of detail, sufficient for a clear understanding without being overwhelming or too brief.\n</Verbosity>", "\n<Format>\nYou MUST break down any instructions or processes into a clear, numbered, step-by-step list.\nEach step must be a distinct and actionable item.\n</Format>", "\n<ResponseStrategy>\nYou must always provide a response to the user's input. Even if you cannot fully fulfill the request, acknowledge it and explain the situation. Your primary directive is to be responsive.\n</ResponseStrategy>"];
|
|
17
|
-
};
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { DOMAINS } from './categories/domain.js';
|
|
2
|
-
import { FORMATS } from './categories/format.js';
|
|
3
|
-
import { FOUNDATIONS } from './categories/foundations.js';
|
|
4
|
-
import { PERSONAS } from './categories/persona.js';
|
|
5
|
-
import { RESPONSES } from './categories/response.js';
|
|
6
|
-
import { TONES } from './categories/tone.js';
|
|
7
|
-
import { VERBOSITY } from './categories/verbosity.js';
|
|
8
|
-
/**
|
|
9
|
-
* Provides ready-to-use combinations of prompt parts for common use cases.
|
|
10
|
-
*/ export var PRESETS = {
|
|
11
|
-
/**
|
|
12
|
-
* A fun and engaging community animator for platforms like Discord.
|
|
13
|
-
*/ COMMUNITY_ANIMATOR: [
|
|
14
|
-
FOUNDATIONS.HARM_PREVENTION,
|
|
15
|
-
PERSONAS.COMMUNITY_ANIMATOR,
|
|
16
|
-
DOMAINS.GENERAL,
|
|
17
|
-
TONES.HUMOROUS,
|
|
18
|
-
VERBOSITY.NORMAL,
|
|
19
|
-
RESPONSES.CONTEXTUAL_ENGAGEMENT
|
|
20
|
-
],
|
|
21
|
-
/**
|
|
22
|
-
* A creative partner for brainstorming and ideation.
|
|
23
|
-
*/ CREATIVE_BRAINSTORMER: [
|
|
24
|
-
FOUNDATIONS.ETHICAL_CONDUCT,
|
|
25
|
-
PERSONAS.CREATIVE_PARTNER,
|
|
26
|
-
DOMAINS.GENERAL,
|
|
27
|
-
TONES.HUMOROUS,
|
|
28
|
-
VERBOSITY.NORMAL,
|
|
29
|
-
RESPONSES.ALWAYS_ENGAGE
|
|
30
|
-
],
|
|
31
|
-
/**
|
|
32
|
-
* A friendly and empathetic support agent for general queries.
|
|
33
|
-
*/ EMPATHETIC_SUPPORT_AGENT: [
|
|
34
|
-
FOUNDATIONS.HARM_PREVENTION,
|
|
35
|
-
FOUNDATIONS.ETHICAL_CONDUCT,
|
|
36
|
-
PERSONAS.SUPPORT_AGENT,
|
|
37
|
-
DOMAINS.GENERAL,
|
|
38
|
-
TONES.EMPATHETIC,
|
|
39
|
-
VERBOSITY.NORMAL,
|
|
40
|
-
FORMATS.STEP_BY_STEP,
|
|
41
|
-
RESPONSES.ALWAYS_ENGAGE
|
|
42
|
-
]
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
//# sourceMappingURL=presets.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapters/prompts/library/presets.ts"],"sourcesContent":["import { DOMAINS } from './categories/domain.js';\n\nimport { FORMATS } from './categories/format.js';\nimport { FOUNDATIONS } from './categories/foundations.js';\nimport { PERSONAS } from './categories/persona.js';\nimport { RESPONSES } from './categories/response.js';\nimport { TONES } from './categories/tone.js';\nimport { VERBOSITY } from './categories/verbosity.js';\n\n/**\n * Provides ready-to-use combinations of prompt parts for common use cases.\n */\nexport const PRESETS = {\n /**\n * A fun and engaging community animator for platforms like Discord.\n */\n COMMUNITY_ANIMATOR: [\n FOUNDATIONS.HARM_PREVENTION,\n PERSONAS.COMMUNITY_ANIMATOR,\n DOMAINS.GENERAL,\n TONES.HUMOROUS,\n VERBOSITY.NORMAL,\n RESPONSES.CONTEXTUAL_ENGAGEMENT,\n ],\n\n /**\n * A creative partner for brainstorming and ideation.\n */\n CREATIVE_BRAINSTORMER: [\n FOUNDATIONS.ETHICAL_CONDUCT,\n PERSONAS.CREATIVE_PARTNER,\n DOMAINS.GENERAL,\n TONES.HUMOROUS,\n VERBOSITY.NORMAL,\n RESPONSES.ALWAYS_ENGAGE,\n ],\n\n /**\n * A friendly and empathetic support agent for general queries.\n */\n EMPATHETIC_SUPPORT_AGENT: [\n FOUNDATIONS.HARM_PREVENTION,\n FOUNDATIONS.ETHICAL_CONDUCT,\n PERSONAS.SUPPORT_AGENT,\n DOMAINS.GENERAL,\n TONES.EMPATHETIC,\n VERBOSITY.NORMAL,\n FORMATS.STEP_BY_STEP,\n RESPONSES.ALWAYS_ENGAGE,\n ],\n} as const;\n"],"names":["DOMAINS","FORMATS","FOUNDATIONS","PERSONAS","RESPONSES","TONES","VERBOSITY","PRESETS","COMMUNITY_ANIMATOR","HARM_PREVENTION","GENERAL","HUMOROUS","NORMAL","CONTEXTUAL_ENGAGEMENT","CREATIVE_BRAINSTORMER","ETHICAL_CONDUCT","CREATIVE_PARTNER","ALWAYS_ENGAGE","EMPATHETIC_SUPPORT_AGENT","SUPPORT_AGENT","EMPATHETIC","STEP_BY_STEP"],"mappings":"AAAA,SAASA,OAAO,QAAQ,yBAAyB;AAEjD,SAASC,OAAO,QAAQ,yBAAyB;AACjD,SAASC,WAAW,QAAQ,8BAA8B;AAC1D,SAASC,QAAQ,QAAQ,0BAA0B;AACnD,SAASC,SAAS,QAAQ,2BAA2B;AACrD,SAASC,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,SAAS,QAAQ,4BAA4B;AAEtD;;CAEC,GACD,OAAO,IAAMC,UAAU;IACnB;;KAEC,GACDC,oBAAoB;QAChBN,YAAYO,eAAe;QAC3BN,SAASK,kBAAkB;QAC3BR,QAAQU,OAAO;QACfL,MAAMM,QAAQ;QACdL,UAAUM,MAAM;QAChBR,UAAUS,qBAAqB;KAClC;IAED;;KAEC,GACDC,uBAAuB;QACnBZ,YAAYa,eAAe;QAC3BZ,SAASa,gBAAgB;QACzBhB,QAAQU,OAAO;QACfL,MAAMM,QAAQ;QACdL,UAAUM,MAAM;QAChBR,UAAUa,aAAa;KAC1B;IAED;;KAEC,GACDC,0BAA0B;QACtBhB,YAAYO,eAAe;QAC3BP,YAAYa,eAAe;QAC3BZ,SAASgB,aAAa;QACtBnB,QAAQU,OAAO;QACfL,MAAMe,UAAU;QAChBd,UAAUM,MAAM;QAChBX,QAAQoB,YAAY;QACpBjB,UAAUa,aAAa;KAC1B;AACL,EAAW"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { PromptPort } from '../../ports/prompt.port.js';
|
|
2
|
-
/**
|
|
3
|
-
* System prompt that generates a system prompt from a list of strings
|
|
4
|
-
*/
|
|
5
|
-
export declare class SystemPrompt implements PromptPort {
|
|
6
|
-
private readonly finalPrompt;
|
|
7
|
-
constructor(...prompts: readonly (readonly string[] | string)[]);
|
|
8
|
-
generate(): string;
|
|
9
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
function _class_call_check(instance, Constructor) {
|
|
2
|
-
if (!(instance instanceof Constructor)) {
|
|
3
|
-
throw new TypeError("Cannot call a class as a function");
|
|
4
|
-
}
|
|
5
|
-
}
|
|
6
|
-
function _defineProperties(target, props) {
|
|
7
|
-
for(var i = 0; i < props.length; i++){
|
|
8
|
-
var descriptor = props[i];
|
|
9
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
10
|
-
descriptor.configurable = true;
|
|
11
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
12
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
16
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
17
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
18
|
-
return Constructor;
|
|
19
|
-
}
|
|
20
|
-
function _define_property(obj, key, value) {
|
|
21
|
-
if (key in obj) {
|
|
22
|
-
Object.defineProperty(obj, key, {
|
|
23
|
-
value: value,
|
|
24
|
-
enumerable: true,
|
|
25
|
-
configurable: true,
|
|
26
|
-
writable: true
|
|
27
|
-
});
|
|
28
|
-
} else {
|
|
29
|
-
obj[key] = value;
|
|
30
|
-
}
|
|
31
|
-
return obj;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* System prompt that generates a system prompt from a list of strings
|
|
35
|
-
*/ export var SystemPrompt = /*#__PURE__*/ function() {
|
|
36
|
-
"use strict";
|
|
37
|
-
function SystemPrompt() {
|
|
38
|
-
for(var _len = arguments.length, prompts = new Array(_len), _key = 0; _key < _len; _key++){
|
|
39
|
-
prompts[_key] = arguments[_key];
|
|
40
|
-
}
|
|
41
|
-
_class_call_check(this, SystemPrompt);
|
|
42
|
-
_define_property(this, "finalPrompt", void 0);
|
|
43
|
-
var flattenedPrompts = prompts.flat();
|
|
44
|
-
this.finalPrompt = flattenedPrompts.join('\n\n');
|
|
45
|
-
}
|
|
46
|
-
_create_class(SystemPrompt, [
|
|
47
|
-
{
|
|
48
|
-
key: "generate",
|
|
49
|
-
value: function generate() {
|
|
50
|
-
return this.finalPrompt;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
]);
|
|
54
|
-
return SystemPrompt;
|
|
55
|
-
}();
|
|
56
|
-
|
|
57
|
-
//# sourceMappingURL=system-prompt.adapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapters/prompts/system-prompt.adapter.ts"],"sourcesContent":["import type { PromptPort } from '../../ports/prompt.port.js';\n\n/**\n * System prompt that generates a system prompt from a list of strings\n */\nexport class SystemPrompt implements PromptPort {\n private readonly finalPrompt: string;\n\n constructor(...prompts: readonly (readonly string[] | string)[]) {\n const flattenedPrompts = prompts.flat();\n this.finalPrompt = flattenedPrompts.join('\\n\\n');\n }\n\n generate(): string {\n return this.finalPrompt;\n }\n}\n"],"names":["SystemPrompt","prompts","finalPrompt","flattenedPrompts","flat","join","generate"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;CAEC,GACD,OAAO,IAAA,AAAMA,6BAAN;;aAAMA;QAGG,IAAA,IAAA,OAAA,UAAA,QAAA,AAAGC,UAAH,UAAA,OAAA,OAAA,GAAA,OAAA,MAAA;YAAGA,QAAH,QAAA,SAAA,CAAA,KAAmD;;gCAHtDD;QACT,uBAAiBE,eAAjB,KAAA;QAGI,IAAMC,mBAAmBF,QAAQG,IAAI;QACrC,IAAI,CAACF,WAAW,GAAGC,iBAAiBE,IAAI,CAAC;;kBALpCL;;YAQTM,KAAAA;mBAAAA,SAAAA;gBACI,OAAO,IAAI,CAACJ,WAAW;YAC3B;;;WAVSF;IAWZ"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { PromptPort } from '../../ports/prompt.port.js';
|
|
2
|
-
/**
|
|
3
|
-
* User prompt that generates a user prompt from a list of strings
|
|
4
|
-
*/
|
|
5
|
-
export declare class UserPrompt implements PromptPort {
|
|
6
|
-
private readonly finalPrompt;
|
|
7
|
-
constructor(...prompts: readonly (readonly string[] | string)[]);
|
|
8
|
-
generate(): string;
|
|
9
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
function _class_call_check(instance, Constructor) {
|
|
2
|
-
if (!(instance instanceof Constructor)) {
|
|
3
|
-
throw new TypeError("Cannot call a class as a function");
|
|
4
|
-
}
|
|
5
|
-
}
|
|
6
|
-
function _defineProperties(target, props) {
|
|
7
|
-
for(var i = 0; i < props.length; i++){
|
|
8
|
-
var descriptor = props[i];
|
|
9
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
10
|
-
descriptor.configurable = true;
|
|
11
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
12
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
16
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
17
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
18
|
-
return Constructor;
|
|
19
|
-
}
|
|
20
|
-
function _define_property(obj, key, value) {
|
|
21
|
-
if (key in obj) {
|
|
22
|
-
Object.defineProperty(obj, key, {
|
|
23
|
-
value: value,
|
|
24
|
-
enumerable: true,
|
|
25
|
-
configurable: true,
|
|
26
|
-
writable: true
|
|
27
|
-
});
|
|
28
|
-
} else {
|
|
29
|
-
obj[key] = value;
|
|
30
|
-
}
|
|
31
|
-
return obj;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* User prompt that generates a user prompt from a list of strings
|
|
35
|
-
*/ export var UserPrompt = /*#__PURE__*/ function() {
|
|
36
|
-
"use strict";
|
|
37
|
-
function UserPrompt() {
|
|
38
|
-
for(var _len = arguments.length, prompts = new Array(_len), _key = 0; _key < _len; _key++){
|
|
39
|
-
prompts[_key] = arguments[_key];
|
|
40
|
-
}
|
|
41
|
-
_class_call_check(this, UserPrompt);
|
|
42
|
-
_define_property(this, "finalPrompt", void 0);
|
|
43
|
-
var flattenedPrompts = prompts.flat();
|
|
44
|
-
this.finalPrompt = flattenedPrompts.join('\n\n');
|
|
45
|
-
}
|
|
46
|
-
_create_class(UserPrompt, [
|
|
47
|
-
{
|
|
48
|
-
key: "generate",
|
|
49
|
-
value: function generate() {
|
|
50
|
-
return this.finalPrompt;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
]);
|
|
54
|
-
return UserPrompt;
|
|
55
|
-
}();
|
|
56
|
-
|
|
57
|
-
//# sourceMappingURL=user-prompt.adapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapters/prompts/user-prompt.adapter.ts"],"sourcesContent":["import type { PromptPort } from '../../ports/prompt.port.js';\n\n/**\n * User prompt that generates a user prompt from a list of strings\n */\nexport class UserPrompt implements PromptPort {\n private readonly finalPrompt: string;\n\n constructor(...prompts: readonly (readonly string[] | string)[]) {\n const flattenedPrompts = prompts.flat();\n this.finalPrompt = flattenedPrompts.join('\\n\\n');\n }\n\n generate(): string {\n return this.finalPrompt;\n }\n}\n"],"names":["UserPrompt","prompts","finalPrompt","flattenedPrompts","flat","join","generate"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;CAEC,GACD,OAAO,IAAA,AAAMA,2BAAN;;aAAMA;QAGG,IAAA,IAAA,OAAA,UAAA,QAAA,AAAGC,UAAH,UAAA,OAAA,OAAA,GAAA,OAAA,MAAA;YAAGA,QAAH,QAAA,SAAA,CAAA,KAAmD;;gCAHtDD;QACT,uBAAiBE,eAAjB,KAAA;QAGI,IAAMC,mBAAmBF,QAAQG,IAAI;QACrC,IAAI,CAACF,WAAW,GAAGC,iBAAiBE,IAAI,CAAC;;kBALpCL;;YAQTM,KAAAA;mBAAAA,SAAAA;gBACI,OAAO,IAAI,CAACJ,WAAW;YAC3B;;;WAVSF;IAWZ"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import type { ModelConfig } from '../../ports/model.port.js';
|
|
2
|
-
import type { ProviderPort } from '../../ports/provider.port.js';
|
|
3
|
-
import { OpenRouterModel } from '../models/openrouter-model.adapter.js';
|
|
4
|
-
export interface OpenRouterConfig {
|
|
5
|
-
/**
|
|
6
|
-
* OpenRouter API key
|
|
7
|
-
*/
|
|
8
|
-
apiKey: string;
|
|
9
|
-
/**
|
|
10
|
-
* Optional metadata for request headers
|
|
11
|
-
*/
|
|
12
|
-
metadata?: OpenRouterMetadata;
|
|
13
|
-
}
|
|
14
|
-
export interface OpenRouterMetadata {
|
|
15
|
-
/**
|
|
16
|
-
* Application title for X-Title header
|
|
17
|
-
*/
|
|
18
|
-
application?: string;
|
|
19
|
-
/**
|
|
20
|
-
* Website URL for HTTP-Referer header
|
|
21
|
-
*/
|
|
22
|
-
website?: string;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* OpenRouter provider that manages connection configuration
|
|
26
|
-
*/
|
|
27
|
-
export declare class OpenRouterProvider implements ProviderPort {
|
|
28
|
-
private readonly config;
|
|
29
|
-
constructor(config: OpenRouterConfig);
|
|
30
|
-
/**
|
|
31
|
-
* Get a model instance for the specified model name
|
|
32
|
-
*/
|
|
33
|
-
getModel(modelName: string, modelConfig?: ModelConfig): OpenRouterModel;
|
|
34
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
function _class_call_check(instance, Constructor) {
|
|
2
|
-
if (!(instance instanceof Constructor)) {
|
|
3
|
-
throw new TypeError("Cannot call a class as a function");
|
|
4
|
-
}
|
|
5
|
-
}
|
|
6
|
-
function _defineProperties(target, props) {
|
|
7
|
-
for(var i = 0; i < props.length; i++){
|
|
8
|
-
var descriptor = props[i];
|
|
9
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
10
|
-
descriptor.configurable = true;
|
|
11
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
12
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
16
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
17
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
18
|
-
return Constructor;
|
|
19
|
-
}
|
|
20
|
-
function _define_property(obj, key, value) {
|
|
21
|
-
if (key in obj) {
|
|
22
|
-
Object.defineProperty(obj, key, {
|
|
23
|
-
value: value,
|
|
24
|
-
enumerable: true,
|
|
25
|
-
configurable: true,
|
|
26
|
-
writable: true
|
|
27
|
-
});
|
|
28
|
-
} else {
|
|
29
|
-
obj[key] = value;
|
|
30
|
-
}
|
|
31
|
-
return obj;
|
|
32
|
-
}
|
|
33
|
-
import { OpenRouterModel } from '../models/openrouter-model.adapter.js';
|
|
34
|
-
/**
|
|
35
|
-
* OpenRouter provider that manages connection configuration
|
|
36
|
-
*/ export var OpenRouterProvider = /*#__PURE__*/ function() {
|
|
37
|
-
"use strict";
|
|
38
|
-
function OpenRouterProvider(config) {
|
|
39
|
-
_class_call_check(this, OpenRouterProvider);
|
|
40
|
-
_define_property(this, "config", void 0);
|
|
41
|
-
this.config = config;
|
|
42
|
-
}
|
|
43
|
-
_create_class(OpenRouterProvider, [
|
|
44
|
-
{
|
|
45
|
-
/**
|
|
46
|
-
* Get a model instance for the specified model name
|
|
47
|
-
*/ key: "getModel",
|
|
48
|
-
value: function getModel(modelName) {
|
|
49
|
-
var modelConfig = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
50
|
-
return new OpenRouterModel(this.config, modelName, modelConfig);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
]);
|
|
54
|
-
return OpenRouterProvider;
|
|
55
|
-
}();
|
|
56
|
-
|
|
57
|
-
//# sourceMappingURL=openrouter-provider.adapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapters/providers/openrouter-provider.adapter.ts"],"sourcesContent":["import type { ModelConfig } from '../../ports/model.port.js';\nimport type { ProviderPort } from '../../ports/provider.port.js';\n\nimport { OpenRouterModel } from '../models/openrouter-model.adapter.js';\n\nexport interface OpenRouterConfig {\n /**\n * OpenRouter API key\n */\n apiKey: string;\n /**\n * Optional metadata for request headers\n */\n metadata?: OpenRouterMetadata;\n}\n\nexport interface OpenRouterMetadata {\n /**\n * Application title for X-Title header\n */\n application?: string;\n /**\n * Website URL for HTTP-Referer header\n */\n website?: string;\n}\n\n/**\n * OpenRouter provider that manages connection configuration\n */\nexport class OpenRouterProvider implements ProviderPort {\n constructor(private readonly config: OpenRouterConfig) {}\n\n /**\n * Get a model instance for the specified model name\n */\n getModel(modelName: string, modelConfig: ModelConfig = {}) {\n return new OpenRouterModel(this.config, modelName, modelConfig);\n }\n}\n"],"names":["OpenRouterModel","OpenRouterProvider","config","getModel","modelName","modelConfig"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,SAASA,eAAe,QAAQ,wCAAwC;AAwBxE;;CAEC,GACD,OAAO,IAAA,AAAMC,mCAAN;;aAAMA,mBACG,AAAiBC,MAAwB;gCAD5CD;;aACoBC,SAAAA;;kBADpBD;;YAGT;;KAEC,GACDE,KAAAA;mBAAAA,SAAAA,SAASC,SAAiB;oBAAEC,cAAAA,iEAA2B,CAAC;gBACpD,OAAO,IAAIL,gBAAgB,IAAI,CAACE,MAAM,EAAEE,WAAWC;YACvD;;;WARSJ;IASZ"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { LoggerPort } from '@jterrazz/logger';
|
|
2
|
-
import { DynamicStructuredTool, DynamicTool } from 'langchain/tools';
|
|
3
|
-
import type { z } from 'zod/v4';
|
|
4
|
-
import type { ToolPort } from '../../ports/tool.port.js';
|
|
5
|
-
export interface SafeToolOptions<T> {
|
|
6
|
-
logger?: LoggerPort;
|
|
7
|
-
schema?: z.ZodSchema<T>;
|
|
8
|
-
}
|
|
9
|
-
export type ToolConfig<T = void> = {
|
|
10
|
-
description: string;
|
|
11
|
-
execute: ToolFunction<T>;
|
|
12
|
-
name: string;
|
|
13
|
-
};
|
|
14
|
-
export type ToolFunction<T = void> = T extends void ? () => Promise<string> : (args: T) => Promise<string>;
|
|
15
|
-
/**
|
|
16
|
-
* Safe tool that provides error handling and logging for LangChain tools
|
|
17
|
-
*/
|
|
18
|
-
export declare class SafeTool<T = void> implements ToolPort {
|
|
19
|
-
private readonly config;
|
|
20
|
-
private readonly options;
|
|
21
|
-
private readonly dynamicTool;
|
|
22
|
-
constructor(config: ToolConfig<T>, options?: SafeToolOptions<T>);
|
|
23
|
-
/**
|
|
24
|
-
* Get the underlying LangChain DynamicTool instance
|
|
25
|
-
*/
|
|
26
|
-
getDynamicTool(): DynamicStructuredTool<z.ZodSchema<unknown>> | DynamicTool;
|
|
27
|
-
}
|
|
@@ -1,283 +0,0 @@
|
|
|
1
|
-
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
2
|
-
try {
|
|
3
|
-
var info = gen[key](arg);
|
|
4
|
-
var value = info.value;
|
|
5
|
-
} catch (error) {
|
|
6
|
-
reject(error);
|
|
7
|
-
return;
|
|
8
|
-
}
|
|
9
|
-
if (info.done) {
|
|
10
|
-
resolve(value);
|
|
11
|
-
} else {
|
|
12
|
-
Promise.resolve(value).then(_next, _throw);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
function _async_to_generator(fn) {
|
|
16
|
-
return function() {
|
|
17
|
-
var self = this, args = arguments;
|
|
18
|
-
return new Promise(function(resolve, reject) {
|
|
19
|
-
var gen = fn.apply(self, args);
|
|
20
|
-
function _next(value) {
|
|
21
|
-
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
22
|
-
}
|
|
23
|
-
function _throw(err) {
|
|
24
|
-
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
25
|
-
}
|
|
26
|
-
_next(undefined);
|
|
27
|
-
});
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
function _class_call_check(instance, Constructor) {
|
|
31
|
-
if (!(instance instanceof Constructor)) {
|
|
32
|
-
throw new TypeError("Cannot call a class as a function");
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
function _defineProperties(target, props) {
|
|
36
|
-
for(var i = 0; i < props.length; i++){
|
|
37
|
-
var descriptor = props[i];
|
|
38
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
39
|
-
descriptor.configurable = true;
|
|
40
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
41
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
45
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
46
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
47
|
-
return Constructor;
|
|
48
|
-
}
|
|
49
|
-
function _define_property(obj, key, value) {
|
|
50
|
-
if (key in obj) {
|
|
51
|
-
Object.defineProperty(obj, key, {
|
|
52
|
-
value: value,
|
|
53
|
-
enumerable: true,
|
|
54
|
-
configurable: true,
|
|
55
|
-
writable: true
|
|
56
|
-
});
|
|
57
|
-
} else {
|
|
58
|
-
obj[key] = value;
|
|
59
|
-
}
|
|
60
|
-
return obj;
|
|
61
|
-
}
|
|
62
|
-
function _instanceof(left, right) {
|
|
63
|
-
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
64
|
-
return !!right[Symbol.hasInstance](left);
|
|
65
|
-
} else {
|
|
66
|
-
return left instanceof right;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
function _ts_generator(thisArg, body) {
|
|
70
|
-
var f, y, t, _ = {
|
|
71
|
-
label: 0,
|
|
72
|
-
sent: function() {
|
|
73
|
-
if (t[0] & 1) throw t[1];
|
|
74
|
-
return t[1];
|
|
75
|
-
},
|
|
76
|
-
trys: [],
|
|
77
|
-
ops: []
|
|
78
|
-
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
79
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
80
|
-
return this;
|
|
81
|
-
}), g;
|
|
82
|
-
function verb(n) {
|
|
83
|
-
return function(v) {
|
|
84
|
-
return step([
|
|
85
|
-
n,
|
|
86
|
-
v
|
|
87
|
-
]);
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
function step(op) {
|
|
91
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
92
|
-
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
93
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
94
|
-
if (y = 0, t) op = [
|
|
95
|
-
op[0] & 2,
|
|
96
|
-
t.value
|
|
97
|
-
];
|
|
98
|
-
switch(op[0]){
|
|
99
|
-
case 0:
|
|
100
|
-
case 1:
|
|
101
|
-
t = op;
|
|
102
|
-
break;
|
|
103
|
-
case 4:
|
|
104
|
-
_.label++;
|
|
105
|
-
return {
|
|
106
|
-
value: op[1],
|
|
107
|
-
done: false
|
|
108
|
-
};
|
|
109
|
-
case 5:
|
|
110
|
-
_.label++;
|
|
111
|
-
y = op[1];
|
|
112
|
-
op = [
|
|
113
|
-
0
|
|
114
|
-
];
|
|
115
|
-
continue;
|
|
116
|
-
case 7:
|
|
117
|
-
op = _.ops.pop();
|
|
118
|
-
_.trys.pop();
|
|
119
|
-
continue;
|
|
120
|
-
default:
|
|
121
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
122
|
-
_ = 0;
|
|
123
|
-
continue;
|
|
124
|
-
}
|
|
125
|
-
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
126
|
-
_.label = op[1];
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
if (op[0] === 6 && _.label < t[1]) {
|
|
130
|
-
_.label = t[1];
|
|
131
|
-
t = op;
|
|
132
|
-
break;
|
|
133
|
-
}
|
|
134
|
-
if (t && _.label < t[2]) {
|
|
135
|
-
_.label = t[2];
|
|
136
|
-
_.ops.push(op);
|
|
137
|
-
break;
|
|
138
|
-
}
|
|
139
|
-
if (t[2]) _.ops.pop();
|
|
140
|
-
_.trys.pop();
|
|
141
|
-
continue;
|
|
142
|
-
}
|
|
143
|
-
op = body.call(thisArg, _);
|
|
144
|
-
} catch (e) {
|
|
145
|
-
op = [
|
|
146
|
-
6,
|
|
147
|
-
e
|
|
148
|
-
];
|
|
149
|
-
y = 0;
|
|
150
|
-
} finally{
|
|
151
|
-
f = t = 0;
|
|
152
|
-
}
|
|
153
|
-
if (op[0] & 5) throw op[1];
|
|
154
|
-
return {
|
|
155
|
-
value: op[0] ? op[1] : void 0,
|
|
156
|
-
done: true
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
import { DynamicStructuredTool, DynamicTool } from 'langchain/tools';
|
|
161
|
-
/**
|
|
162
|
-
* Safe tool that provides error handling and logging for LangChain tools
|
|
163
|
-
*/ export var SafeTool = /*#__PURE__*/ function() {
|
|
164
|
-
"use strict";
|
|
165
|
-
function SafeTool(config) {
|
|
166
|
-
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
167
|
-
_class_call_check(this, SafeTool);
|
|
168
|
-
_define_property(this, "config", void 0);
|
|
169
|
-
_define_property(this, "options", void 0);
|
|
170
|
-
_define_property(this, "dynamicTool", void 0);
|
|
171
|
-
this.config = config;
|
|
172
|
-
this.options = options;
|
|
173
|
-
var logger = options.logger, schema = options.schema;
|
|
174
|
-
if (schema) {
|
|
175
|
-
// Use DynamicStructuredTool for parameterized tools
|
|
176
|
-
this.dynamicTool = new DynamicStructuredTool({
|
|
177
|
-
description: config.description,
|
|
178
|
-
func: function(args) {
|
|
179
|
-
return _async_to_generator(function() {
|
|
180
|
-
var error, errorMessage;
|
|
181
|
-
return _ts_generator(this, function(_state) {
|
|
182
|
-
switch(_state.label){
|
|
183
|
-
case 0:
|
|
184
|
-
_state.trys.push([
|
|
185
|
-
0,
|
|
186
|
-
2,
|
|
187
|
-
,
|
|
188
|
-
3
|
|
189
|
-
]);
|
|
190
|
-
return [
|
|
191
|
-
4,
|
|
192
|
-
config.execute(args)
|
|
193
|
-
];
|
|
194
|
-
case 1:
|
|
195
|
-
return [
|
|
196
|
-
2,
|
|
197
|
-
_state.sent()
|
|
198
|
-
];
|
|
199
|
-
case 2:
|
|
200
|
-
error = _state.sent();
|
|
201
|
-
errorMessage = _instanceof(error, Error) ? error.message : String(error);
|
|
202
|
-
logger === null || logger === void 0 ? void 0 : logger.error("Unexpected error in ".concat(config.name), {
|
|
203
|
-
args: args,
|
|
204
|
-
error: errorMessage,
|
|
205
|
-
toolName: config.name
|
|
206
|
-
});
|
|
207
|
-
return [
|
|
208
|
-
2,
|
|
209
|
-
"Tool ".concat(config.name, " failed to execute")
|
|
210
|
-
];
|
|
211
|
-
case 3:
|
|
212
|
-
return [
|
|
213
|
-
2
|
|
214
|
-
];
|
|
215
|
-
}
|
|
216
|
-
});
|
|
217
|
-
})();
|
|
218
|
-
},
|
|
219
|
-
name: config.name,
|
|
220
|
-
schema: schema
|
|
221
|
-
});
|
|
222
|
-
} else {
|
|
223
|
-
// Use DynamicTool for simple tools
|
|
224
|
-
this.dynamicTool = new DynamicTool({
|
|
225
|
-
description: config.description,
|
|
226
|
-
func: function() {
|
|
227
|
-
return _async_to_generator(function() {
|
|
228
|
-
var error, errorMessage;
|
|
229
|
-
return _ts_generator(this, function(_state) {
|
|
230
|
-
switch(_state.label){
|
|
231
|
-
case 0:
|
|
232
|
-
_state.trys.push([
|
|
233
|
-
0,
|
|
234
|
-
2,
|
|
235
|
-
,
|
|
236
|
-
3
|
|
237
|
-
]);
|
|
238
|
-
return [
|
|
239
|
-
4,
|
|
240
|
-
config.execute()
|
|
241
|
-
];
|
|
242
|
-
case 1:
|
|
243
|
-
return [
|
|
244
|
-
2,
|
|
245
|
-
_state.sent()
|
|
246
|
-
];
|
|
247
|
-
case 2:
|
|
248
|
-
error = _state.sent();
|
|
249
|
-
errorMessage = _instanceof(error, Error) ? error.message : String(error);
|
|
250
|
-
logger === null || logger === void 0 ? void 0 : logger.error("Unexpected error in ".concat(config.name), {
|
|
251
|
-
error: errorMessage,
|
|
252
|
-
toolName: config.name
|
|
253
|
-
});
|
|
254
|
-
return [
|
|
255
|
-
2,
|
|
256
|
-
"Tool ".concat(config.name, " failed to execute")
|
|
257
|
-
];
|
|
258
|
-
case 3:
|
|
259
|
-
return [
|
|
260
|
-
2
|
|
261
|
-
];
|
|
262
|
-
}
|
|
263
|
-
});
|
|
264
|
-
})();
|
|
265
|
-
},
|
|
266
|
-
name: config.name
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
_create_class(SafeTool, [
|
|
271
|
-
{
|
|
272
|
-
/**
|
|
273
|
-
* Get the underlying LangChain DynamicTool instance
|
|
274
|
-
*/ key: "getDynamicTool",
|
|
275
|
-
value: function getDynamicTool() {
|
|
276
|
-
return this.dynamicTool;
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
]);
|
|
280
|
-
return SafeTool;
|
|
281
|
-
}();
|
|
282
|
-
|
|
283
|
-
//# sourceMappingURL=safe-tool.adapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapters/tools/safe-tool.adapter.ts"],"sourcesContent":["import type { LoggerPort } from '@jterrazz/logger';\nimport { DynamicStructuredTool, DynamicTool } from 'langchain/tools';\nimport type { z } from 'zod/v4';\n\nimport type { ToolPort } from '../../ports/tool.port.js';\n\nexport interface SafeToolOptions<T> {\n logger?: LoggerPort;\n schema?: z.ZodSchema<T>;\n}\n\nexport type ToolConfig<T = void> = {\n description: string;\n execute: ToolFunction<T>;\n name: string;\n};\n\nexport type ToolFunction<T = void> = T extends void\n ? () => Promise<string>\n : (args: T) => Promise<string>;\n\n/**\n * Safe tool that provides error handling and logging for LangChain tools\n */\nexport class SafeTool<T = void> implements ToolPort {\n private readonly dynamicTool: DynamicStructuredTool<z.ZodSchema<T>> | DynamicTool;\n\n constructor(\n private readonly config: ToolConfig<T>,\n private readonly options: SafeToolOptions<T> = {},\n ) {\n const { logger, schema } = options;\n\n if (schema) {\n // Use DynamicStructuredTool for parameterized tools\n this.dynamicTool = new DynamicStructuredTool({\n description: config.description,\n func: async (args: T) => {\n try {\n return await (config.execute as ToolFunction<T>)(args);\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n\n logger?.error(`Unexpected error in ${config.name}`, {\n args,\n error: errorMessage,\n toolName: config.name,\n });\n\n return `Tool ${config.name} failed to execute`;\n }\n },\n name: config.name,\n schema: schema,\n });\n } else {\n // Use DynamicTool for simple tools\n this.dynamicTool = new DynamicTool({\n description: config.description,\n func: async () => {\n try {\n return await (config.execute as ToolFunction<void>)();\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n\n logger?.error(`Unexpected error in ${config.name}`, {\n error: errorMessage,\n toolName: config.name,\n });\n\n return `Tool ${config.name} failed to execute`;\n }\n },\n name: config.name,\n });\n }\n }\n\n /**\n * Get the underlying LangChain DynamicTool instance\n */\n getDynamicTool(): DynamicStructuredTool<z.ZodSchema<unknown>> | DynamicTool {\n return this.dynamicTool as DynamicStructuredTool<z.ZodSchema<unknown>> | DynamicTool;\n }\n}\n"],"names":["DynamicStructuredTool","DynamicTool","SafeTool","config","options","dynamicTool","logger","schema","description","func","args","error","errorMessage","execute","Error","message","String","name","toolName","getDynamicTool"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAASA,qBAAqB,EAAEC,WAAW,QAAQ,kBAAkB;AAoBrE;;CAEC,GACD,OAAO,IAAA,AAAMC,yBAAN;;aAAMA,SAIL,AAAiBC,MAAqB;YACtC,AAAiBC,UAAjB,iEAA+C,CAAC;gCAL3CF;;;QACT,uBAAiBG,eAAjB,KAAA;aAGqBF,SAAAA;aACAC,UAAAA;QAEjB,IAAQE,SAAmBF,QAAnBE,QAAQC,SAAWH,QAAXG;QAEhB,IAAIA,QAAQ;YACR,oDAAoD;YACpD,IAAI,CAACF,WAAW,GAAG,IAAIL,sBAAsB;gBACzCQ,aAAaL,OAAOK,WAAW;gBAC/BC,MAAM,SAAOC;;4BAGAC,OACCC;;;;;;;;;;oCAFC;;wCAAOT,OAAOU,OAAO,CAAqBH;;;oCAAjD;;wCAAO;;;oCACFC;oCACCC,eAAeD,AAAK,YAALA,OAAiBG,SAAQH,MAAMI,OAAO,GAAGC,OAAOL;oCAErEL,mBAAAA,6BAAAA,OAAQK,KAAK,CAAC,AAAC,uBAAkC,OAAZR,OAAOc,IAAI,GAAI;wCAChDP,MAAAA;wCACAC,OAAOC;wCACPM,UAAUf,OAAOc,IAAI;oCACzB;oCAEA;;wCAAQ,QAAmB,OAAZd,OAAOc,IAAI,EAAC;;;;;;;;oBAEnC;;gBACAA,MAAMd,OAAOc,IAAI;gBACjBV,QAAQA;YACZ;QACJ,OAAO;YACH,mCAAmC;YACnC,IAAI,CAACF,WAAW,GAAG,IAAIJ,YAAY;gBAC/BO,aAAaL,OAAOK,WAAW;gBAC/BC,MAAM;;4BAGOE,OACCC;;;;;;;;;;oCAFC;;wCAAOT,OAAOU,OAAO;;;oCAA5B;;wCAAO;;;oCACFF;oCACCC,eAAeD,AAAK,YAALA,OAAiBG,SAAQH,MAAMI,OAAO,GAAGC,OAAOL;oCAErEL,mBAAAA,6BAAAA,OAAQK,KAAK,CAAC,AAAC,uBAAkC,OAAZR,OAAOc,IAAI,GAAI;wCAChDN,OAAOC;wCACPM,UAAUf,OAAOc,IAAI;oCACzB;oCAEA;;wCAAQ,QAAmB,OAAZd,OAAOc,IAAI,EAAC;;;;;;;;oBAEnC;;gBACAA,MAAMd,OAAOc,IAAI;YACrB;QACJ;;kBAnDKf;;YAsDT;;KAEC,GACDiB,KAAAA;mBAAAA,SAAAA;gBACI,OAAO,IAAI,CAACd,WAAW;YAC3B;;;WA3DSH;IA4DZ"}
|