mojentic 1.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/LICENSE +21 -0
- package/README.md +459 -0
- package/dist/agents/async-aggregator-agent.d.ts +101 -0
- package/dist/agents/async-aggregator-agent.d.ts.map +1 -0
- package/dist/agents/async-aggregator-agent.js +160 -0
- package/dist/agents/async-aggregator-agent.js.map +1 -0
- package/dist/agents/async-dispatcher.d.ts +98 -0
- package/dist/agents/async-dispatcher.d.ts.map +1 -0
- package/dist/agents/async-dispatcher.js +173 -0
- package/dist/agents/async-dispatcher.js.map +1 -0
- package/dist/agents/async-llm-agent-with-memory.d.ts +95 -0
- package/dist/agents/async-llm-agent-with-memory.d.ts.map +1 -0
- package/dist/agents/async-llm-agent-with-memory.js +136 -0
- package/dist/agents/async-llm-agent-with-memory.js.map +1 -0
- package/dist/agents/async-llm-agent.d.ts +85 -0
- package/dist/agents/async-llm-agent.d.ts.map +1 -0
- package/dist/agents/async-llm-agent.js +87 -0
- package/dist/agents/async-llm-agent.js.map +1 -0
- package/dist/agents/base-agent.d.ts +59 -0
- package/dist/agents/base-agent.d.ts.map +1 -0
- package/dist/agents/base-agent.js +24 -0
- package/dist/agents/base-agent.js.map +1 -0
- package/dist/agents/base-async-agent.d.ts +42 -0
- package/dist/agents/base-async-agent.d.ts.map +1 -0
- package/dist/agents/base-async-agent.js +6 -0
- package/dist/agents/base-async-agent.js.map +1 -0
- package/dist/agents/event.d.ts +26 -0
- package/dist/agents/event.d.ts.map +1 -0
- package/dist/agents/event.js +13 -0
- package/dist/agents/event.js.map +1 -0
- package/dist/agents/index.d.ts +14 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +30 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/iterative-problem-solver.d.ts +83 -0
- package/dist/agents/iterative-problem-solver.d.ts.map +1 -0
- package/dist/agents/iterative-problem-solver.js +120 -0
- package/dist/agents/iterative-problem-solver.js.map +1 -0
- package/dist/agents/router.d.ts +44 -0
- package/dist/agents/router.d.ts.map +1 -0
- package/dist/agents/router.js +53 -0
- package/dist/agents/router.js.map +1 -0
- package/dist/agents/simple-recursive-agent.d.ts +182 -0
- package/dist/agents/simple-recursive-agent.d.ts.map +1 -0
- package/dist/agents/simple-recursive-agent.js +272 -0
- package/dist/agents/simple-recursive-agent.js.map +1 -0
- package/dist/context/index.d.ts +5 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +21 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/shared-working-memory.d.ts +76 -0
- package/dist/context/shared-working-memory.d.ts.map +1 -0
- package/dist/context/shared-working-memory.js +121 -0
- package/dist/context/shared-working-memory.js.map +1 -0
- package/dist/error.d.ts +93 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +149 -0
- package/dist/error.js.map +1 -0
- package/dist/examples/react/decisioning-agent.d.ts +48 -0
- package/dist/examples/react/decisioning-agent.d.ts.map +1 -0
- package/dist/examples/react/decisioning-agent.js +204 -0
- package/dist/examples/react/decisioning-agent.js.map +1 -0
- package/dist/examples/react/events.d.ts +77 -0
- package/dist/examples/react/events.d.ts.map +1 -0
- package/dist/examples/react/events.js +9 -0
- package/dist/examples/react/events.js.map +1 -0
- package/dist/examples/react/formatters.d.ts +23 -0
- package/dist/examples/react/formatters.d.ts.map +1 -0
- package/dist/examples/react/formatters.js +68 -0
- package/dist/examples/react/formatters.js.map +1 -0
- package/dist/examples/react/index.d.ts +12 -0
- package/dist/examples/react/index.d.ts.map +1 -0
- package/dist/examples/react/index.js +28 -0
- package/dist/examples/react/index.js.map +1 -0
- package/dist/examples/react/models.d.ts +57 -0
- package/dist/examples/react/models.d.ts.map +1 -0
- package/dist/examples/react/models.js +19 -0
- package/dist/examples/react/models.js.map +1 -0
- package/dist/examples/react/output-agent.d.ts +23 -0
- package/dist/examples/react/output-agent.d.ts.map +1 -0
- package/dist/examples/react/output-agent.js +28 -0
- package/dist/examples/react/output-agent.js.map +1 -0
- package/dist/examples/react/summarization-agent.d.ts +46 -0
- package/dist/examples/react/summarization-agent.d.ts.map +1 -0
- package/dist/examples/react/summarization-agent.js +102 -0
- package/dist/examples/react/summarization-agent.js.map +1 -0
- package/dist/examples/react/thinking-agent.d.ts +47 -0
- package/dist/examples/react/thinking-agent.d.ts.map +1 -0
- package/dist/examples/react/thinking-agent.js +127 -0
- package/dist/examples/react/thinking-agent.js.map +1 -0
- package/dist/examples/react/tool-call-agent.d.ts +25 -0
- package/dist/examples/react/tool-call-agent.d.ts.map +1 -0
- package/dist/examples/react/tool-call-agent.js +83 -0
- package/dist/examples/react/tool-call-agent.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/agent.d.ts +68 -0
- package/dist/llm/agent.d.ts.map +1 -0
- package/dist/llm/agent.js +85 -0
- package/dist/llm/agent.js.map +1 -0
- package/dist/llm/broker.d.ts +150 -0
- package/dist/llm/broker.d.ts.map +1 -0
- package/dist/llm/broker.js +355 -0
- package/dist/llm/broker.js.map +1 -0
- package/dist/llm/chat-session.d.ts +98 -0
- package/dist/llm/chat-session.d.ts.map +1 -0
- package/dist/llm/chat-session.js +156 -0
- package/dist/llm/chat-session.js.map +1 -0
- package/dist/llm/gateway.d.ts +28 -0
- package/dist/llm/gateway.d.ts.map +1 -0
- package/dist/llm/gateway.js +6 -0
- package/dist/llm/gateway.js.map +1 -0
- package/dist/llm/gateways/index.d.ts +9 -0
- package/dist/llm/gateways/index.d.ts.map +1 -0
- package/dist/llm/gateways/index.js +25 -0
- package/dist/llm/gateways/index.js.map +1 -0
- package/dist/llm/gateways/ollama.d.ts +30 -0
- package/dist/llm/gateways/ollama.d.ts.map +1 -0
- package/dist/llm/gateways/ollama.js +322 -0
- package/dist/llm/gateways/ollama.js.map +1 -0
- package/dist/llm/gateways/openai-messages-adapter.d.ts +29 -0
- package/dist/llm/gateways/openai-messages-adapter.d.ts.map +1 -0
- package/dist/llm/gateways/openai-messages-adapter.js +188 -0
- package/dist/llm/gateways/openai-messages-adapter.js.map +1 -0
- package/dist/llm/gateways/openai-model-registry.d.ts +82 -0
- package/dist/llm/gateways/openai-model-registry.d.ts.map +1 -0
- package/dist/llm/gateways/openai-model-registry.js +352 -0
- package/dist/llm/gateways/openai-model-registry.js.map +1 -0
- package/dist/llm/gateways/openai.d.ts +40 -0
- package/dist/llm/gateways/openai.d.ts.map +1 -0
- package/dist/llm/gateways/openai.js +469 -0
- package/dist/llm/gateways/openai.js.map +1 -0
- package/dist/llm/gateways/tokenizerGateway.d.ts +61 -0
- package/dist/llm/gateways/tokenizerGateway.d.ts.map +1 -0
- package/dist/llm/gateways/tokenizerGateway.js +75 -0
- package/dist/llm/gateways/tokenizerGateway.js.map +1 -0
- package/dist/llm/index.d.ts +11 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +27 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/models.d.ts +95 -0
- package/dist/llm/models.d.ts.map +1 -0
- package/dist/llm/models.js +50 -0
- package/dist/llm/models.js.map +1 -0
- package/dist/llm/tools/ask-user.d.ts +39 -0
- package/dist/llm/tools/ask-user.d.ts.map +1 -0
- package/dist/llm/tools/ask-user.js +111 -0
- package/dist/llm/tools/ask-user.js.map +1 -0
- package/dist/llm/tools/current-datetime.d.ts +17 -0
- package/dist/llm/tools/current-datetime.d.ts.map +1 -0
- package/dist/llm/tools/current-datetime.js +76 -0
- package/dist/llm/tools/current-datetime.js.map +1 -0
- package/dist/llm/tools/date-resolver.d.ts +17 -0
- package/dist/llm/tools/date-resolver.d.ts.map +1 -0
- package/dist/llm/tools/date-resolver.js +135 -0
- package/dist/llm/tools/date-resolver.js.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/append-task.d.ts +13 -0
- package/dist/llm/tools/ephemeral-task-manager/append-task.d.ts.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/append-task.js +54 -0
- package/dist/llm/tools/ephemeral-task-manager/append-task.js.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/clear-tasks.d.ts +13 -0
- package/dist/llm/tools/ephemeral-task-manager/clear-tasks.d.ts.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/clear-tasks.js +37 -0
- package/dist/llm/tools/ephemeral-task-manager/clear-tasks.js.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/complete-task.d.ts +15 -0
- package/dist/llm/tools/ephemeral-task-manager/complete-task.d.ts.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/complete-task.js +56 -0
- package/dist/llm/tools/ephemeral-task-manager/complete-task.js.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/index.d.ts +44 -0
- package/dist/llm/tools/ephemeral-task-manager/index.d.ts.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/index.js +73 -0
- package/dist/llm/tools/ephemeral-task-manager/index.js.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/insert-task-after.d.ts +13 -0
- package/dist/llm/tools/ephemeral-task-manager/insert-task-after.d.ts.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/insert-task-after.js +59 -0
- package/dist/llm/tools/ephemeral-task-manager/insert-task-after.js.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/list-tasks.d.ts +14 -0
- package/dist/llm/tools/ephemeral-task-manager/list-tasks.d.ts.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/list-tasks.js +45 -0
- package/dist/llm/tools/ephemeral-task-manager/list-tasks.js.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/prepend-task.d.ts +13 -0
- package/dist/llm/tools/ephemeral-task-manager/prepend-task.d.ts.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/prepend-task.js +54 -0
- package/dist/llm/tools/ephemeral-task-manager/prepend-task.js.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/start-task.d.ts +15 -0
- package/dist/llm/tools/ephemeral-task-manager/start-task.d.ts.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/start-task.js +56 -0
- package/dist/llm/tools/ephemeral-task-manager/start-task.js.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/task-list.d.ts +68 -0
- package/dist/llm/tools/ephemeral-task-manager/task-list.d.ts.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/task-list.js +120 -0
- package/dist/llm/tools/ephemeral-task-manager/task-list.js.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/task.d.ts +21 -0
- package/dist/llm/tools/ephemeral-task-manager/task.d.ts.map +1 -0
- package/dist/llm/tools/ephemeral-task-manager/task.js +24 -0
- package/dist/llm/tools/ephemeral-task-manager/task.js.map +1 -0
- package/dist/llm/tools/file-manager.d.ts +127 -0
- package/dist/llm/tools/file-manager.d.ts.map +1 -0
- package/dist/llm/tools/file-manager.js +598 -0
- package/dist/llm/tools/file-manager.js.map +1 -0
- package/dist/llm/tools/index.d.ts +11 -0
- package/dist/llm/tools/index.d.ts.map +1 -0
- package/dist/llm/tools/index.js +27 -0
- package/dist/llm/tools/index.js.map +1 -0
- package/dist/llm/tools/tell-user.d.ts +31 -0
- package/dist/llm/tools/tell-user.d.ts.map +1 -0
- package/dist/llm/tools/tell-user.js +57 -0
- package/dist/llm/tools/tell-user.js.map +1 -0
- package/dist/llm/tools/tool-wrapper.d.ts +54 -0
- package/dist/llm/tools/tool-wrapper.d.ts.map +1 -0
- package/dist/llm/tools/tool-wrapper.js +91 -0
- package/dist/llm/tools/tool-wrapper.js.map +1 -0
- package/dist/llm/tools/tool.d.ts +70 -0
- package/dist/llm/tools/tool.d.ts.map +1 -0
- package/dist/llm/tools/tool.js +19 -0
- package/dist/llm/tools/tool.js.map +1 -0
- package/dist/llm/tools/web-search-tool.d.ts +35 -0
- package/dist/llm/tools/web-search-tool.d.ts.map +1 -0
- package/dist/llm/tools/web-search-tool.js +105 -0
- package/dist/llm/tools/web-search-tool.js.map +1 -0
- package/dist/llm/utils/image.d.ts +30 -0
- package/dist/llm/utils/image.d.ts.map +1 -0
- package/dist/llm/utils/image.js +65 -0
- package/dist/llm/utils/image.js.map +1 -0
- package/dist/tracer/eventStore.d.ts +101 -0
- package/dist/tracer/eventStore.d.ts.map +1 -0
- package/dist/tracer/eventStore.js +120 -0
- package/dist/tracer/eventStore.js.map +1 -0
- package/dist/tracer/index.d.ts +8 -0
- package/dist/tracer/index.d.ts.map +1 -0
- package/dist/tracer/index.js +24 -0
- package/dist/tracer/index.js.map +1 -0
- package/dist/tracer/nullTracer.d.ts +127 -0
- package/dist/tracer/nullTracer.d.ts.map +1 -0
- package/dist/tracer/nullTracer.js +148 -0
- package/dist/tracer/nullTracer.js.map +1 -0
- package/dist/tracer/tracerEvents.d.ts +209 -0
- package/dist/tracer/tracerEvents.d.ts.map +1 -0
- package/dist/tracer/tracerEvents.js +312 -0
- package/dist/tracer/tracerEvents.js.map +1 -0
- package/dist/tracer/tracerSystem.d.ts +149 -0
- package/dist/tracer/tracerSystem.d.ts.map +1 -0
- package/dist/tracer/tracerSystem.js +196 -0
- package/dist/tracer/tracerSystem.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TokenizerGateway = void 0;
|
|
4
|
+
const tiktoken_1 = require("tiktoken");
|
|
5
|
+
/**
|
|
6
|
+
* Gateway for tokenizing and detokenizing text using tiktoken.
|
|
7
|
+
*
|
|
8
|
+
* This gateway provides encoding and decoding functionality for text,
|
|
9
|
+
* which is useful for:
|
|
10
|
+
* - Counting tokens to manage context windows
|
|
11
|
+
* - Understanding token usage for cost estimation
|
|
12
|
+
* - Debugging token-related issues
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const tokenizer = new TokenizerGateway();
|
|
17
|
+
* const tokens = tokenizer.encode("Hello, world!");
|
|
18
|
+
* const text = tokenizer.decode(tokens);
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
class TokenizerGateway {
|
|
22
|
+
tokenizer;
|
|
23
|
+
/**
|
|
24
|
+
* Creates a new TokenizerGateway instance.
|
|
25
|
+
*
|
|
26
|
+
* @param model - The encoding model to use. Defaults to "cl100k_base" which is used by GPT-4 and GPT-3.5-turbo.
|
|
27
|
+
* Other options include "p50k_base" (GPT-3), "r50k_base" (older models), etc.
|
|
28
|
+
*/
|
|
29
|
+
constructor(model = 'cl100k_base') {
|
|
30
|
+
this.tokenizer = (0, tiktoken_1.get_encoding)(model);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Encodes text into tokens.
|
|
34
|
+
*
|
|
35
|
+
* @param text - The text to encode
|
|
36
|
+
* @returns An array of token IDs
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const tokenizer = new TokenizerGateway();
|
|
41
|
+
* const tokens = tokenizer.encode("Hello, world!");
|
|
42
|
+
* console.log(`Token count: ${tokens.length}`);
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
encode(text) {
|
|
46
|
+
return Array.from(this.tokenizer.encode(text));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Decodes tokens back into text.
|
|
50
|
+
*
|
|
51
|
+
* @param tokens - The array of token IDs to decode
|
|
52
|
+
* @returns The decoded text
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const tokenizer = new TokenizerGateway();
|
|
57
|
+
* const tokens = [9906, 11, 1917, 0];
|
|
58
|
+
* const text = tokenizer.decode(tokens);
|
|
59
|
+
* console.log(text); // "Hello, world!"
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
decode(tokens) {
|
|
63
|
+
const decoder = new TextDecoder();
|
|
64
|
+
return decoder.decode(this.tokenizer.decode(new Uint32Array(tokens)));
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Frees the tokenizer resources.
|
|
68
|
+
* Call this when you're done using the tokenizer to prevent memory leaks.
|
|
69
|
+
*/
|
|
70
|
+
free() {
|
|
71
|
+
this.tokenizer.free();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.TokenizerGateway = TokenizerGateway;
|
|
75
|
+
//# sourceMappingURL=tokenizerGateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizerGateway.js","sourceRoot":"","sources":["../../../src/llm/gateways/tokenizerGateway.ts"],"names":[],"mappings":";;;AAAA,uCAAkD;AAElD;;;;;;;;;;;;;;;GAeG;AACH,MAAa,gBAAgB;IACnB,SAAS,CAAW;IAE5B;;;;;OAKG;IACH,YAAY,QAAgB,aAAa;QACvC,IAAI,CAAC,SAAS,GAAG,IAAA,uBAAY,EAAC,KAA2D,CAAC,CAAC;IAC7F,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,IAAY;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,MAAgB;QACrB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;CACF;AAxDD,4CAwDC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM module exports
|
|
3
|
+
*/
|
|
4
|
+
export * from './models';
|
|
5
|
+
export * from './gateway';
|
|
6
|
+
export * from './broker';
|
|
7
|
+
export * from './chat-session';
|
|
8
|
+
export * from './tools';
|
|
9
|
+
export * from './gateways';
|
|
10
|
+
export * from './agent';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* LLM module exports
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
__exportStar(require("./models"), exports);
|
|
21
|
+
__exportStar(require("./gateway"), exports);
|
|
22
|
+
__exportStar(require("./broker"), exports);
|
|
23
|
+
__exportStar(require("./chat-session"), exports);
|
|
24
|
+
__exportStar(require("./tools"), exports);
|
|
25
|
+
__exportStar(require("./gateways"), exports);
|
|
26
|
+
__exportStar(require("./agent"), exports);
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,2CAAyB;AACzB,4CAA0B;AAC1B,2CAAyB;AACzB,iDAA+B;AAC/B,0CAAwB;AACxB,6CAA2B;AAC3B,0CAAwB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core data models for LLM interactions
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Role of a message in a conversation
|
|
6
|
+
*/
|
|
7
|
+
export declare enum MessageRole {
|
|
8
|
+
System = "system",
|
|
9
|
+
User = "user",
|
|
10
|
+
Assistant = "assistant",
|
|
11
|
+
Tool = "tool"
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Content item in a message (text or image)
|
|
15
|
+
*/
|
|
16
|
+
export interface ContentItem {
|
|
17
|
+
type: 'text' | 'image_url';
|
|
18
|
+
text?: string;
|
|
19
|
+
image_url?: {
|
|
20
|
+
url: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Tool call request from the LLM
|
|
25
|
+
*/
|
|
26
|
+
export interface ToolCall {
|
|
27
|
+
id: string;
|
|
28
|
+
type: 'function';
|
|
29
|
+
function: {
|
|
30
|
+
name: string;
|
|
31
|
+
arguments: string;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Message in a conversation with an LLM
|
|
36
|
+
*/
|
|
37
|
+
export interface LlmMessage {
|
|
38
|
+
role: MessageRole;
|
|
39
|
+
content: string | ContentItem[];
|
|
40
|
+
name?: string;
|
|
41
|
+
tool_calls?: ToolCall[];
|
|
42
|
+
tool_call_id?: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Helper functions for creating messages
|
|
46
|
+
*/
|
|
47
|
+
export declare class Message {
|
|
48
|
+
static system(content: string): LlmMessage;
|
|
49
|
+
static user(content: string): LlmMessage;
|
|
50
|
+
static assistant(content: string, toolCalls?: ToolCall[]): LlmMessage;
|
|
51
|
+
static tool(content: string, toolCallId: string, name: string): LlmMessage;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Configuration for LLM completion requests
|
|
55
|
+
*/
|
|
56
|
+
export interface CompletionConfig {
|
|
57
|
+
temperature?: number;
|
|
58
|
+
maxTokens?: number;
|
|
59
|
+
numPredict?: number;
|
|
60
|
+
topP?: number;
|
|
61
|
+
topK?: number;
|
|
62
|
+
numCtx?: number;
|
|
63
|
+
frequencyPenalty?: number;
|
|
64
|
+
presencePenalty?: number;
|
|
65
|
+
stop?: string[];
|
|
66
|
+
stream?: boolean;
|
|
67
|
+
responseFormat?: {
|
|
68
|
+
type: 'json_object' | 'text';
|
|
69
|
+
schema?: Record<string, unknown>;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Response from an LLM gateway
|
|
74
|
+
*/
|
|
75
|
+
export interface GatewayResponse {
|
|
76
|
+
content: string;
|
|
77
|
+
toolCalls?: ToolCall[];
|
|
78
|
+
finishReason?: 'stop' | 'length' | 'tool_calls' | 'content_filter';
|
|
79
|
+
usage?: {
|
|
80
|
+
promptTokens: number;
|
|
81
|
+
completionTokens: number;
|
|
82
|
+
totalTokens: number;
|
|
83
|
+
};
|
|
84
|
+
model?: string;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Stream chunk from an LLM gateway
|
|
88
|
+
*/
|
|
89
|
+
export interface StreamChunk {
|
|
90
|
+
content?: string;
|
|
91
|
+
toolCalls?: ToolCall[];
|
|
92
|
+
finishReason?: 'stop' | 'length' | 'tool_calls' | 'content_filter';
|
|
93
|
+
done: boolean;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/llm/models.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,IAAI,SAAS;CACd;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE;QACV,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,OAAO;IAClB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAO1C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAOxC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,GAAG,UAAU;IAQrE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU;CAQ3E;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE;QACf,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,gBAAgB,CAAC;IACnE,KAAK,CAAC,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,gBAAgB,CAAC;IACnE,IAAI,EAAE,OAAO,CAAC;CACf"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Core data models for LLM interactions
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Message = exports.MessageRole = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Role of a message in a conversation
|
|
9
|
+
*/
|
|
10
|
+
var MessageRole;
|
|
11
|
+
(function (MessageRole) {
|
|
12
|
+
MessageRole["System"] = "system";
|
|
13
|
+
MessageRole["User"] = "user";
|
|
14
|
+
MessageRole["Assistant"] = "assistant";
|
|
15
|
+
MessageRole["Tool"] = "tool";
|
|
16
|
+
})(MessageRole || (exports.MessageRole = MessageRole = {}));
|
|
17
|
+
/**
|
|
18
|
+
* Helper functions for creating messages
|
|
19
|
+
*/
|
|
20
|
+
class Message {
|
|
21
|
+
static system(content) {
|
|
22
|
+
return {
|
|
23
|
+
role: MessageRole.System,
|
|
24
|
+
content,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
static user(content) {
|
|
28
|
+
return {
|
|
29
|
+
role: MessageRole.User,
|
|
30
|
+
content,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
static assistant(content, toolCalls) {
|
|
34
|
+
return {
|
|
35
|
+
role: MessageRole.Assistant,
|
|
36
|
+
content,
|
|
37
|
+
tool_calls: toolCalls,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
static tool(content, toolCallId, name) {
|
|
41
|
+
return {
|
|
42
|
+
role: MessageRole.Tool,
|
|
43
|
+
content,
|
|
44
|
+
tool_call_id: toolCallId,
|
|
45
|
+
name,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.Message = Message;
|
|
50
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/llm/models.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH;;GAEG;AACH,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,4BAAa,CAAA;IACb,sCAAuB,CAAA;IACvB,4BAAa,CAAA;AACf,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;AAoCD;;GAEG;AACH,MAAa,OAAO;IAClB,MAAM,CAAC,MAAM,CAAC,OAAe;QAC3B,OAAO;YACL,IAAI,EAAE,WAAW,CAAC,MAAM;YACxB,OAAO;SACR,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe;QACzB,OAAO;YACL,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,OAAO;SACR,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,OAAe,EAAE,SAAsB;QACtD,OAAO;YACL,IAAI,EAAE,WAAW,CAAC,SAAS;YAC3B,OAAO;YACP,UAAU,EAAE,SAAS;SACtB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,UAAkB,EAAE,IAAY;QAC3D,OAAO;YACL,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,OAAO;YACP,YAAY,EAAE,UAAU;YACxB,IAAI;SACL,CAAC;IACJ,CAAC;CACF;AA/BD,0BA+BC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ask user tool - prompts user for input when the LLM needs help
|
|
3
|
+
*/
|
|
4
|
+
import { BaseTool, ToolArgs, ToolDescriptor, ToolResult } from './tool';
|
|
5
|
+
import { Result } from '../../error';
|
|
6
|
+
/**
|
|
7
|
+
* Tool that prompts the user for input when the LLM needs help or information.
|
|
8
|
+
*
|
|
9
|
+
* This tool allows the LLM to ask questions or request assistance from the user
|
|
10
|
+
* during problem-solving. It displays a message and waits for user input via stdin.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const tool = new AskUserTool();
|
|
15
|
+
* const result = await tool.run({
|
|
16
|
+
* user_request: "What is your preferred programming language?"
|
|
17
|
+
* });
|
|
18
|
+
* // Displays:
|
|
19
|
+
* //
|
|
20
|
+
* //
|
|
21
|
+
* //
|
|
22
|
+
* // I NEED YOUR HELP!
|
|
23
|
+
* // What is your preferred programming language?
|
|
24
|
+
* // Your response:
|
|
25
|
+
* // (waits for user input)
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare class AskUserTool extends BaseTool {
|
|
29
|
+
run(args: ToolArgs): Promise<Result<ToolResult, Error>>;
|
|
30
|
+
descriptor(): ToolDescriptor;
|
|
31
|
+
/**
|
|
32
|
+
* Prompt the user for input via readline.
|
|
33
|
+
*
|
|
34
|
+
* @param prompt - The prompt text to display
|
|
35
|
+
* @returns Promise resolving to the user's input
|
|
36
|
+
*/
|
|
37
|
+
private promptUser;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=ask-user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-user.d.ts","sourceRoot":"","sources":["../../../src/llm/tools/ask-user.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACxE,OAAO,EAAM,MAAM,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,WAAY,SAAQ,QAAQ;IACjC,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAU7D,UAAU,IAAI,cAAc;IAsB5B;;;;;OAKG;YACW,UAAU;CAazB"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Ask user tool - prompts user for input when the LLM needs help
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.AskUserTool = void 0;
|
|
40
|
+
const tool_1 = require("./tool");
|
|
41
|
+
const error_1 = require("../../error");
|
|
42
|
+
const readline = __importStar(require("readline"));
|
|
43
|
+
/**
|
|
44
|
+
* Tool that prompts the user for input when the LLM needs help or information.
|
|
45
|
+
*
|
|
46
|
+
* This tool allows the LLM to ask questions or request assistance from the user
|
|
47
|
+
* during problem-solving. It displays a message and waits for user input via stdin.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const tool = new AskUserTool();
|
|
52
|
+
* const result = await tool.run({
|
|
53
|
+
* user_request: "What is your preferred programming language?"
|
|
54
|
+
* });
|
|
55
|
+
* // Displays:
|
|
56
|
+
* //
|
|
57
|
+
* //
|
|
58
|
+
* //
|
|
59
|
+
* // I NEED YOUR HELP!
|
|
60
|
+
* // What is your preferred programming language?
|
|
61
|
+
* // Your response:
|
|
62
|
+
* // (waits for user input)
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
class AskUserTool extends tool_1.BaseTool {
|
|
66
|
+
async run(args) {
|
|
67
|
+
const userRequest = args.user_request || '';
|
|
68
|
+
console.log(`\n\n\nI NEED YOUR HELP!\n${userRequest}`);
|
|
69
|
+
const response = await this.promptUser('Your response: ');
|
|
70
|
+
return (0, error_1.Ok)(response);
|
|
71
|
+
}
|
|
72
|
+
descriptor() {
|
|
73
|
+
return {
|
|
74
|
+
type: 'function',
|
|
75
|
+
function: {
|
|
76
|
+
name: 'ask_user',
|
|
77
|
+
description: 'If you do not know how to proceed, ask the user a question, or ask them for help or to do something for you.',
|
|
78
|
+
parameters: {
|
|
79
|
+
type: 'object',
|
|
80
|
+
properties: {
|
|
81
|
+
user_request: {
|
|
82
|
+
type: 'string',
|
|
83
|
+
description: 'The question you need the user to answer, or the task you need the user to do for you.',
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
required: ['user_request'],
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Prompt the user for input via readline.
|
|
93
|
+
*
|
|
94
|
+
* @param prompt - The prompt text to display
|
|
95
|
+
* @returns Promise resolving to the user's input
|
|
96
|
+
*/
|
|
97
|
+
async promptUser(prompt) {
|
|
98
|
+
const rl = readline.createInterface({
|
|
99
|
+
input: process.stdin,
|
|
100
|
+
output: process.stdout,
|
|
101
|
+
});
|
|
102
|
+
return new Promise((resolve) => {
|
|
103
|
+
rl.question(prompt, (answer) => {
|
|
104
|
+
rl.close();
|
|
105
|
+
resolve(answer);
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.AskUserTool = AskUserTool;
|
|
111
|
+
//# sourceMappingURL=ask-user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-user.js","sourceRoot":"","sources":["../../../src/llm/tools/ask-user.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,iCAAwE;AACxE,uCAAyC;AACzC,mDAAqC;AAErC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAa,WAAY,SAAQ,eAAQ;IACvC,KAAK,CAAC,GAAG,CAAC,IAAc;QACtB,MAAM,WAAW,GAAI,IAAI,CAAC,YAAuB,IAAI,EAAE,CAAC;QAExD,OAAO,CAAC,GAAG,CAAC,4BAA4B,WAAW,EAAE,CAAC,CAAC;QAEvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAE1D,OAAO,IAAA,UAAE,EAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAED,UAAU;QACR,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACR,IAAI,EAAE,UAAU;gBAChB,WAAW,EACT,8GAA8G;gBAChH,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,YAAY,EAAE;4BACZ,IAAI,EAAE,QAAQ;4BACd,WAAW,EACT,wFAAwF;yBAC3F;qBACF;oBACD,QAAQ,EAAE,CAAC,cAAc,CAAC;iBAC3B;aACF;SACF,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,UAAU,CAAC,MAAc;QACrC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC7B,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AApDD,kCAoDC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Current datetime tool - returns the current date and time
|
|
3
|
+
*/
|
|
4
|
+
import { BaseTool, ToolArgs, ToolDescriptor, ToolResult } from './tool';
|
|
5
|
+
import { Result } from '../../error';
|
|
6
|
+
/**
|
|
7
|
+
* Tool that returns the current date and time
|
|
8
|
+
*/
|
|
9
|
+
export declare class CurrentDatetimeTool extends BaseTool {
|
|
10
|
+
run(args: ToolArgs): Promise<Result<ToolResult, Error>>;
|
|
11
|
+
descriptor(): ToolDescriptor;
|
|
12
|
+
/**
|
|
13
|
+
* Format a date using Python strftime-style format codes
|
|
14
|
+
*/
|
|
15
|
+
private formatDateTime;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=current-datetime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"current-datetime.d.ts","sourceRoot":"","sources":["../../../src/llm/tools/current-datetime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACxE,OAAO,EAAM,MAAM,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,QAAQ;IACzC,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAgB7D,UAAU,IAAI,cAAc;IAsB5B;;OAEG;IACH,OAAO,CAAC,cAAc;CA+BvB"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Current datetime tool - returns the current date and time
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CurrentDatetimeTool = void 0;
|
|
7
|
+
const tool_1 = require("./tool");
|
|
8
|
+
const error_1 = require("../../error");
|
|
9
|
+
/**
|
|
10
|
+
* Tool that returns the current date and time
|
|
11
|
+
*/
|
|
12
|
+
class CurrentDatetimeTool extends tool_1.BaseTool {
|
|
13
|
+
async run(args) {
|
|
14
|
+
const formatString = args.format_string || '%Y-%m-%d %H:%M:%S';
|
|
15
|
+
const now = new Date();
|
|
16
|
+
// Convert Python strftime format to JavaScript Date format
|
|
17
|
+
const formattedTime = this.formatDateTime(now, formatString);
|
|
18
|
+
const timestamp = Math.floor(now.getTime() / 1000);
|
|
19
|
+
const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
20
|
+
return (0, error_1.Ok)({
|
|
21
|
+
current_datetime: formattedTime,
|
|
22
|
+
timestamp: timestamp,
|
|
23
|
+
timezone: timezone,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
descriptor() {
|
|
27
|
+
return {
|
|
28
|
+
type: 'function',
|
|
29
|
+
function: {
|
|
30
|
+
name: 'get_current_datetime',
|
|
31
|
+
description: 'Get the current date and time. Useful when you need to know the current time or date.',
|
|
32
|
+
parameters: {
|
|
33
|
+
type: 'object',
|
|
34
|
+
properties: {
|
|
35
|
+
format_string: {
|
|
36
|
+
type: 'string',
|
|
37
|
+
description: "Format string for the datetime (e.g., '%Y-%m-%d %H:%M:%S', '%A, %B %d, %Y'). Default is ISO format.",
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
required: [],
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Format a date using Python strftime-style format codes
|
|
47
|
+
*/
|
|
48
|
+
formatDateTime(date, format) {
|
|
49
|
+
const pad = (n, width = 2) => String(n).padStart(width, '0');
|
|
50
|
+
const replacements = {
|
|
51
|
+
'%Y': String(date.getFullYear()),
|
|
52
|
+
'%y': String(date.getFullYear()).slice(-2),
|
|
53
|
+
'%m': pad(date.getMonth() + 1),
|
|
54
|
+
'%d': pad(date.getDate()),
|
|
55
|
+
'%H': pad(date.getHours()),
|
|
56
|
+
'%I': pad(date.getHours() % 12 || 12),
|
|
57
|
+
'%M': pad(date.getMinutes()),
|
|
58
|
+
'%S': pad(date.getSeconds()),
|
|
59
|
+
'%p': date.getHours() >= 12 ? 'PM' : 'AM',
|
|
60
|
+
'%A': date.toLocaleDateString('en-US', { weekday: 'long' }),
|
|
61
|
+
'%a': date.toLocaleDateString('en-US', { weekday: 'short' }),
|
|
62
|
+
'%B': date.toLocaleDateString('en-US', { month: 'long' }),
|
|
63
|
+
'%b': date.toLocaleDateString('en-US', { month: 'short' }),
|
|
64
|
+
'%w': String(date.getDay()),
|
|
65
|
+
'%j': String(Math.floor((date.getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000)),
|
|
66
|
+
};
|
|
67
|
+
let result = format;
|
|
68
|
+
for (const [code, value] of Object.entries(replacements)) {
|
|
69
|
+
// eslint-disable-next-line security/detect-non-literal-regexp -- Format codes are from controlled set
|
|
70
|
+
result = result.replace(new RegExp(code, 'g'), value);
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.CurrentDatetimeTool = CurrentDatetimeTool;
|
|
76
|
+
//# sourceMappingURL=current-datetime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"current-datetime.js","sourceRoot":"","sources":["../../../src/llm/tools/current-datetime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Date resolver tool - resolves relative date references like "next Friday"
|
|
3
|
+
*/
|
|
4
|
+
import { BaseTool, ToolArgs, ToolDescriptor, ToolResult } from './tool';
|
|
5
|
+
import { Result } from '../../error';
|
|
6
|
+
/**
|
|
7
|
+
* Tool that resolves relative date references
|
|
8
|
+
*/
|
|
9
|
+
export declare class DateResolverTool extends BaseTool {
|
|
10
|
+
run(args: ToolArgs): Promise<Result<ToolResult, Error>>;
|
|
11
|
+
descriptor(): ToolDescriptor;
|
|
12
|
+
private resolveDate;
|
|
13
|
+
private getWeekdayNumber;
|
|
14
|
+
private getNextWeekday;
|
|
15
|
+
private getLastWeekday;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=date-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-resolver.d.ts","sourceRoot":"","sources":["../../../src/llm/tools/date-resolver.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACxE,OAAO,EAAM,MAAM,EAAa,MAAM,aAAa,CAAC;AAEpD;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,QAAQ;IACtC,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IA0B7D,UAAU,IAAI,cAAc;IAqB5B,OAAO,CAAC,WAAW;IA+DnB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,cAAc;CAYvB"}
|