@agent-glue/glue 0.1.2 → 0.1.3
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/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-clean$colon$build.log +4 -0
- package/.turbo/turbo-lint.log +1 -1
- package/.turbo/turbo-typecheck.log +1 -1
- package/CHANGELOG.md +6 -0
- package/package.json +3 -3
- package/dist/Actor.d.ts +0 -51
- package/dist/Actor.js +0 -30
- package/dist/actors/examples/timer.d.ts +0 -1
- package/dist/actors/examples/timer.js +0 -1
- package/dist/actors/langchain/llm.d.ts +0 -40
- package/dist/actors/langchain/llm.js +0 -52
- package/dist/constructors.js +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/transformers.d.ts +0 -41
- package/dist/utils/TypedEmitter.d.ts +0 -15
package/.turbo/turbo-build.log
CHANGED
package/.turbo/turbo-lint.log
CHANGED
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-glue/glue",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Glue is a simple actor model library for TypeScript",
|
|
5
5
|
"author": "Gareth Andrew <gingerhendrix@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -58,8 +58,8 @@
|
|
|
58
58
|
"ts-node": "^10.9.2",
|
|
59
59
|
"vitest": "^3.0.4",
|
|
60
60
|
"ws": "^8.18.0",
|
|
61
|
-
"@repo/
|
|
62
|
-
"@repo/
|
|
61
|
+
"@repo/typescript-config": "^0.0.0",
|
|
62
|
+
"@repo/eslint-config": "^0.0.0"
|
|
63
63
|
},
|
|
64
64
|
"scripts": {
|
|
65
65
|
"build": "tsc",
|
package/dist/Actor.d.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
export interface Message {
|
|
2
|
-
id: string;
|
|
3
|
-
type: string;
|
|
4
|
-
}
|
|
5
|
-
export declare function isMessageType<T extends Message>(
|
|
6
|
-
type: T["type"]
|
|
7
|
-
): (message: Message) => message is T;
|
|
8
|
-
export declare function message<T extends Message>(
|
|
9
|
-
type: T["type"]
|
|
10
|
-
): (
|
|
11
|
-
message: Omit<T, "id" | "type"> & {
|
|
12
|
-
id?: string;
|
|
13
|
-
type?: string;
|
|
14
|
-
}
|
|
15
|
-
) => T;
|
|
16
|
-
export interface ActorInterface<
|
|
17
|
-
Commands extends Message,
|
|
18
|
-
Events extends Message
|
|
19
|
-
> {
|
|
20
|
-
send(command: Commands): void;
|
|
21
|
-
connect(handler: (event: Events) => void): void;
|
|
22
|
-
disconnect(handler: (event: Events) => void): void;
|
|
23
|
-
}
|
|
24
|
-
export declare abstract class Actor<
|
|
25
|
-
Commands extends Message = never,
|
|
26
|
-
Events extends Message = never
|
|
27
|
-
> implements ActorInterface<Commands, Events>
|
|
28
|
-
{
|
|
29
|
-
private readonly emitter;
|
|
30
|
-
protected emit(event: Events): void;
|
|
31
|
-
send(_command: Commands): void;
|
|
32
|
-
connect(handler: (event: Events) => void): void;
|
|
33
|
-
disconnect(handler: (event: Events) => void): void;
|
|
34
|
-
}
|
|
35
|
-
export type CommandsType<T extends ActorInterface<Message, Message>> =
|
|
36
|
-
T extends ActorInterface<infer C, Message> ? C : never;
|
|
37
|
-
export type ActorFunction<
|
|
38
|
-
Commands extends Message = never,
|
|
39
|
-
Events extends Message = never
|
|
40
|
-
> = (emit: (event: Events) => void) => (command: Commands) => void;
|
|
41
|
-
export declare class FunctionActor<
|
|
42
|
-
Commands extends Message = never,
|
|
43
|
-
Events extends Message = never
|
|
44
|
-
> extends Actor<Commands, Events> {
|
|
45
|
-
private readonly fn;
|
|
46
|
-
constructor(fn: ActorFunction<Commands, Events>);
|
|
47
|
-
send(command: Commands): void;
|
|
48
|
-
}
|
|
49
|
-
export declare function actor<Commands extends Message, Events extends Message>(
|
|
50
|
-
fn: ActorFunction<Commands, Events>
|
|
51
|
-
): ActorInterface<Commands, Events>;
|
package/dist/Actor.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { TypedEmitter } from "./utils/TypedEmitter.js";
|
|
2
|
-
export class Actor {
|
|
3
|
-
emitter = new TypedEmitter();
|
|
4
|
-
emit(event) {
|
|
5
|
-
this.emitter.emit("event", event);
|
|
6
|
-
}
|
|
7
|
-
send(_command) {
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
connect(handler) {
|
|
11
|
-
this.emitter.on("event", handler);
|
|
12
|
-
}
|
|
13
|
-
disconnect(handler) {
|
|
14
|
-
this.emitter.off("event", handler);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
export class FunctionActor extends Actor {
|
|
18
|
-
fn;
|
|
19
|
-
constructor(fn) {
|
|
20
|
-
super();
|
|
21
|
-
this.fn = fn;
|
|
22
|
-
}
|
|
23
|
-
send(command) {
|
|
24
|
-
const emit = (event) => this.emit(event);
|
|
25
|
-
this.fn(emit)(command);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
export function actor(fn) {
|
|
29
|
-
return new FunctionActor(fn);
|
|
30
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { BaseChatModel } from "@langchain/core/language_models/chat_models";
|
|
2
|
-
import { AIMessage, BaseMessage } from "@langchain/core/messages";
|
|
3
|
-
import { Actor, Message } from "../../Actor.js";
|
|
4
|
-
export declare const GENERATE_COMMAND_TYPE = "langchain.llm.generate";
|
|
5
|
-
export interface GenerateCommand extends Message {
|
|
6
|
-
type: typeof GENERATE_COMMAND_TYPE;
|
|
7
|
-
model: BaseChatModel;
|
|
8
|
-
messages: BaseMessage[];
|
|
9
|
-
}
|
|
10
|
-
export declare const generateCommand: (
|
|
11
|
-
message: Omit<GenerateCommand, "type" | "id"> & {
|
|
12
|
-
id?: string;
|
|
13
|
-
type?: string;
|
|
14
|
-
}
|
|
15
|
-
) => GenerateCommand;
|
|
16
|
-
export declare const isGenerateCommand: (
|
|
17
|
-
message: Message
|
|
18
|
-
) => message is GenerateCommand;
|
|
19
|
-
export declare const RESPONSE_EVENT_TYPE = "langchain.llm.response";
|
|
20
|
-
export interface ResponseEvent extends Message {
|
|
21
|
-
type: typeof RESPONSE_EVENT_TYPE;
|
|
22
|
-
requestId: string;
|
|
23
|
-
response: AIMessage;
|
|
24
|
-
}
|
|
25
|
-
export declare const responseEvent: (
|
|
26
|
-
message: Omit<ResponseEvent, "type" | "id"> & {
|
|
27
|
-
id?: string;
|
|
28
|
-
type?: string;
|
|
29
|
-
}
|
|
30
|
-
) => ResponseEvent;
|
|
31
|
-
export declare const isResponseEvent: (
|
|
32
|
-
message: Message
|
|
33
|
-
) => message is ResponseEvent;
|
|
34
|
-
export type LLMCommands = GenerateCommand;
|
|
35
|
-
export type LLMEvents = ResponseEvent;
|
|
36
|
-
export declare class LLMActor extends Actor<LLMCommands, LLMEvents> {
|
|
37
|
-
send(cmd: LLMCommands): Promise<void>;
|
|
38
|
-
}
|
|
39
|
-
export declare const withPromptCaching: any;
|
|
40
|
-
export declare const wihMessageTruncation: any;
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { AIMessage } from "@langchain/core/messages";
|
|
2
|
-
import { Actor, isMessageType, message } from "../../Actor.js";
|
|
3
|
-
import { applyCachingToMessages } from "../../llm/messageTools.js";
|
|
4
|
-
import {
|
|
5
|
-
commandTransformer,
|
|
6
|
-
eventTransformer
|
|
7
|
-
} from "../../glue/transformers.js";
|
|
8
|
-
export const GENERATE_COMMAND_TYPE = "langchain.llm.generate";
|
|
9
|
-
export const generateCommand = message(GENERATE_COMMAND_TYPE);
|
|
10
|
-
export const isGenerateCommand = isMessageType(GENERATE_COMMAND_TYPE);
|
|
11
|
-
export const RESPONSE_EVENT_TYPE = "langchain.llm.response";
|
|
12
|
-
export const responseEvent = message(RESPONSE_EVENT_TYPE);
|
|
13
|
-
export const isResponseEvent = isMessageType(RESPONSE_EVENT_TYPE);
|
|
14
|
-
export class LLMActor extends Actor {
|
|
15
|
-
async send(cmd) {
|
|
16
|
-
const msg = await cmd.model.invoke(cmd.messages);
|
|
17
|
-
this.emit({
|
|
18
|
-
type: "langchain.llm.response",
|
|
19
|
-
requestId: cmd.id,
|
|
20
|
-
response: msg
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
export const withPromptCaching = commandTransformer((cmd) => {
|
|
25
|
-
if (!isGenerateCommand(cmd)) {
|
|
26
|
-
return cmd;
|
|
27
|
-
}
|
|
28
|
-
return generateCommand({
|
|
29
|
-
...cmd,
|
|
30
|
-
messages: applyCachingToMessages(cmd.messages)
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
const truncateMaxTokens = (message) => {
|
|
34
|
-
if (!isResponseEvent(message)) {
|
|
35
|
-
return message;
|
|
36
|
-
}
|
|
37
|
-
let response = message.response;
|
|
38
|
-
const stopReason = response.response_metadata["stop_reason"];
|
|
39
|
-
if (stopReason === "max_tokens") {
|
|
40
|
-
// In all cases so far, when we hit max_tokens there are multiple tool calls so we can just skip the last one and assume
|
|
41
|
-
// the agent will try again in the next message
|
|
42
|
-
response = new AIMessage({
|
|
43
|
-
content: response.content && response.content.slice(0, -1),
|
|
44
|
-
tool_calls: response.tool_calls && response.tool_calls.slice(0, -1)
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
return responseEvent({
|
|
48
|
-
...message,
|
|
49
|
-
response
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
|
-
export const wihMessageTruncation = eventTransformer(truncateMaxTokens);
|
package/dist/constructors.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const foo = "foo";
|
package/dist/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const foo = "foo";
|
package/dist/transformers.d.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Message, ActorInterface } from "./Actor.js";
|
|
2
|
-
export type Replace<U, A, B> = Exclude<U, A> | B;
|
|
3
|
-
export type ActorTransformer<
|
|
4
|
-
A extends ActorInterface<C1, E1>,
|
|
5
|
-
B extends ActorInterface<C2, E2>,
|
|
6
|
-
C1 extends Message = never,
|
|
7
|
-
C2 extends Message = never,
|
|
8
|
-
E1 extends Message = never,
|
|
9
|
-
E2 extends Message = never
|
|
10
|
-
> = (a: A) => B;
|
|
11
|
-
export type CommandTransformer<
|
|
12
|
-
OldCommands extends Message,
|
|
13
|
-
NewCommands extends Message,
|
|
14
|
-
E extends Message = never,
|
|
15
|
-
A extends ActorInterface<OldCommands, E> = ActorInterface<OldCommands, E>,
|
|
16
|
-
B extends ActorInterface<NewCommands, E> = ActorInterface<NewCommands, E>
|
|
17
|
-
> = ActorTransformer<A, B, OldCommands, NewCommands, E, E>;
|
|
18
|
-
export type EventTransformer<
|
|
19
|
-
NewEvents extends Message,
|
|
20
|
-
OldEvents extends Message,
|
|
21
|
-
C extends Message = never,
|
|
22
|
-
A extends ActorInterface<C, OldEvents> = ActorInterface<C, OldEvents>,
|
|
23
|
-
B extends ActorInterface<C, NewEvents> = ActorInterface<C, NewEvents>
|
|
24
|
-
> = ActorTransformer<A, B, C, C, OldEvents, NewEvents>;
|
|
25
|
-
export type TransformerFunction<A extends Message, B extends Message> = (
|
|
26
|
-
message: A
|
|
27
|
-
) => B;
|
|
28
|
-
export declare function commandTransformer<
|
|
29
|
-
OldCommands extends Message,
|
|
30
|
-
NewCommands extends Message,
|
|
31
|
-
Events extends Message = never
|
|
32
|
-
>(
|
|
33
|
-
fn: TransformerFunction<NewCommands, OldCommands>
|
|
34
|
-
): CommandTransformer<OldCommands, NewCommands, Events>;
|
|
35
|
-
export declare function eventTransformer<
|
|
36
|
-
OldEvents extends Message,
|
|
37
|
-
NewEvents extends Message,
|
|
38
|
-
Commands extends Message = never
|
|
39
|
-
>(
|
|
40
|
-
fn: TransformerFunction<OldEvents, NewEvents>
|
|
41
|
-
): EventTransformer<NewEvents, OldEvents, Commands>;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export declare class TypedEmitter<TEvents extends Record<string, unknown>> {
|
|
2
|
-
private emitter;
|
|
3
|
-
emit<TEventName extends keyof TEvents & string>(
|
|
4
|
-
eventName: TEventName,
|
|
5
|
-
eventArg: TEvents[TEventName]
|
|
6
|
-
): void;
|
|
7
|
-
on<TEventName extends keyof TEvents & string>(
|
|
8
|
-
eventName: TEventName,
|
|
9
|
-
handler: (eventArg: TEvents[TEventName]) => void
|
|
10
|
-
): void;
|
|
11
|
-
off<TEventName extends keyof TEvents & string>(
|
|
12
|
-
eventName: TEventName,
|
|
13
|
-
handler: (eventArg: TEvents[TEventName]) => void
|
|
14
|
-
): void;
|
|
15
|
-
}
|