@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.
@@ -1,5 +1,5 @@
1
1
 
2
2
 
3
- > @agent-glue/glue@0.1.1 build /home/gareth/Documents/Personal/2025/agent-glue/packages/agent-glue
3
+ > @agent-glue/glue@0.1.2 build /home/gareth/Documents/Personal/2025/agent-glue/packages/agent-glue
4
4
  > tsc
5
5
 
@@ -1 +1,5 @@
1
1
 
2
+
3
+ > @agent-glue/glue@0.1.2 clean:build /home/gareth/Documents/Personal/2025/agent-glue/packages/agent-glue
4
+ > rimraf ./dist
5
+
@@ -1,5 +1,5 @@
1
1
 
2
2
 
3
- > @agent-glue/glue@0.1.1 lint /home/gareth/Documents/Personal/2025/agent-glue/packages/agent-glue
3
+ > @agent-glue/glue@0.1.2 lint /home/gareth/Documents/Personal/2025/agent-glue/packages/agent-glue
4
4
  > eslint .
5
5
 
@@ -1,5 +1,5 @@
1
1
 
2
2
 
3
- > @agent-glue/glue@0.1.1 typecheck /home/gareth/Documents/Personal/2025/agent-glue/packages/agent-glue
3
+ > @agent-glue/glue@0.1.2 typecheck /home/gareth/Documents/Personal/2025/agent-glue/packages/agent-glue
4
4
  > tsc --noEmit
5
5
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @agent-glue/glue
2
2
 
3
+ ## 0.1.3
4
+
5
+ ### Patch Changes
6
+
7
+ - Build issues
8
+
3
9
  ## 0.1.2
4
10
 
5
11
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-glue/glue",
3
- "version": "0.1.2",
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/eslint-config": "^0.0.0",
62
- "@repo/typescript-config": "^0.0.0"
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);
@@ -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";
@@ -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
- }