@aeye/core 0.1.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 +568 -0
- package/dist/agent.d.ts +85 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +81 -0
- package/dist/agent.js.map +1 -0
- package/dist/common.d.ts +161 -0
- package/dist/common.d.ts.map +1 -0
- package/dist/common.js +456 -0
- package/dist/common.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/prompt.d.ts +327 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +947 -0
- package/dist/prompt.js.map +1 -0
- package/dist/tool.d.ts +139 -0
- package/dist/tool.d.ts.map +1 -0
- package/dist/tool.js +162 -0
- package/dist/tool.js.map +1 -0
- package/dist/types.d.ts +545 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +54 -0
package/dist/agent.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An Agent component that orchestrates complex workflows by composing other AI components.
|
|
3
|
+
* Agents can utilize tools, prompts, and other agents to accomplish sophisticated tasks.
|
|
4
|
+
*
|
|
5
|
+
* @template TContext - The context type needed for the agent's operation.
|
|
6
|
+
* @template TMetadata - The metadata type needed during execution/streaming.
|
|
7
|
+
* @template TName - The name of the agent, typed for inference in parent components.
|
|
8
|
+
* @template TInput - The input parameters type for the agent.
|
|
9
|
+
* @template TOutput - The output type for the agent.
|
|
10
|
+
* @template TRefs - References to other components that this agent depends on.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* const researchAgent = new Agent({
|
|
14
|
+
* name: 'researcher',
|
|
15
|
+
* description: 'Conducts research using multiple tools',
|
|
16
|
+
* refs: [searchTool, summarizeTool, analyzePrompt],
|
|
17
|
+
* call: async (input, [search, summarize, analyze], ctx) => {
|
|
18
|
+
* const results = await search.run({ query: input.topic }, ctx);
|
|
19
|
+
* const summary = await summarize.get({ text: results });
|
|
20
|
+
* return analyze.get({ summary, topic: input.topic });
|
|
21
|
+
* }
|
|
22
|
+
* });
|
|
23
|
+
*/
|
|
24
|
+
export class Agent {
|
|
25
|
+
input;
|
|
26
|
+
/**
|
|
27
|
+
* Creates a new Agent instance.
|
|
28
|
+
*
|
|
29
|
+
* @param input - The agent input configuration.
|
|
30
|
+
*/
|
|
31
|
+
constructor(input) {
|
|
32
|
+
this.input = input;
|
|
33
|
+
}
|
|
34
|
+
get kind() {
|
|
35
|
+
return 'agent';
|
|
36
|
+
}
|
|
37
|
+
get name() {
|
|
38
|
+
return this.input.name;
|
|
39
|
+
}
|
|
40
|
+
get description() {
|
|
41
|
+
return this.input.description;
|
|
42
|
+
}
|
|
43
|
+
get refs() {
|
|
44
|
+
return this.input.refs;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Executes the agent with the provided context and input.
|
|
48
|
+
* If a custom runner is provided in the context, it will be used instead of direct execution.
|
|
49
|
+
*
|
|
50
|
+
* @param input - The input parameters for the agent.
|
|
51
|
+
* @param ctx - The execution context.
|
|
52
|
+
* @returns The output of the agent's operation.
|
|
53
|
+
*/
|
|
54
|
+
run(...[inputMaybe, contextMaybe]) {
|
|
55
|
+
const input = (inputMaybe || {});
|
|
56
|
+
const ctx = (contextMaybe || {});
|
|
57
|
+
const agent = this;
|
|
58
|
+
return ctx.runner
|
|
59
|
+
? ctx.runner(agent, input, ctx, (innerCtx) => this.input.call(input, this.input.refs, innerCtx))
|
|
60
|
+
: this.input.call(input, this.input.refs, ctx);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Determines whether the agent is applicable in the given context.
|
|
64
|
+
* By default, checks if any of its referenced components are applicable.
|
|
65
|
+
*
|
|
66
|
+
* @param ctx - The context to check applicability against.
|
|
67
|
+
* @returns A promise that resolves to true if the agent is applicable, false otherwise.
|
|
68
|
+
*/
|
|
69
|
+
async applicable(...[contextMaybe]) {
|
|
70
|
+
const ctx = (contextMaybe || {});
|
|
71
|
+
if (this.input.applicable) {
|
|
72
|
+
return this.input.applicable(ctx);
|
|
73
|
+
}
|
|
74
|
+
// If there are no refs, the agent is self-contained and applicable
|
|
75
|
+
if (this.refs.length === 0) {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
return await Promise.all(this.refs.map(ref => ref.applicable(ctx))).then(results => results.some(r => r));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAwCA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,KAAK;IAeP;IANT;;;;OAIG;IACH,YACS,KAAqE;QAArE,UAAK,GAAL,KAAK,CAAgE;IAC1E,CAAC;IAEL,IAAI,IAAI;QACN,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;IAChC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED;;;;;;;OAOG;IACH,GAAG,CAID,GAAG,CAAC,UAAU,EAAE,YAAY,CAAyC;QACrE,MAAM,KAAK,GAAG,CAAC,UAAU,IAAI,EAAE,CAAW,CAAC;QAC3C,MAAM,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAiC,CAAC;QACjE,MAAM,KAAK,GAAG,IAAqE,CAAC;QAEpF,OAAO,GAAG,CAAC,MAAM;YACf,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAChG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CAId,GAAG,CAAC,YAAY,CAAiC;QACjD,MAAM,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAiC,CAAC;QAEjE,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,mEAAmE;QACnE,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5G,CAAC;CAEF"}
|
package/dist/common.d.ts
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { Chunk, Model, ModelInput, Response, Runner, Usage, Events } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* A flexible function type that can be:
|
|
4
|
+
* - A direct value of type R
|
|
5
|
+
* - A function that takes arguments A and returns R or Promise<R>
|
|
6
|
+
* - A Promise that resolves to R
|
|
7
|
+
*/
|
|
8
|
+
export type Fn<R, A extends [any?, ...any[]] = []> = R | ((...args: A) => (R | Promise<R>)) | Promise<R>;
|
|
9
|
+
/**
|
|
10
|
+
* Computes the resulting type R from a flexible function type Fn.
|
|
11
|
+
*/
|
|
12
|
+
export type FnResult<R> = R extends Promise<infer U> ? U : R extends (...args: any[]) => infer V ? V extends Promise<infer W> ? W : V : R;
|
|
13
|
+
/**
|
|
14
|
+
* Retrieves the argument types A from a flexible function type Fn.
|
|
15
|
+
*/
|
|
16
|
+
export type FnArgs<F, Assumed = never> = F extends (...args: infer A) => any ? A : Assumed;
|
|
17
|
+
/**
|
|
18
|
+
* Resolves a flexible function type into its standardized async function form.
|
|
19
|
+
*/
|
|
20
|
+
export type FnResolved<F extends Fn<any, any> | undefined> = F extends undefined ? () => Promise<undefined> : F extends Fn<infer R, infer A> ? (...args: A) => Promise<R> : never;
|
|
21
|
+
/**
|
|
22
|
+
* Converts a flexible function type into a standardized async function.
|
|
23
|
+
* Handles values, functions, and promises uniformly by wrapping them in async functions.
|
|
24
|
+
*
|
|
25
|
+
* @param fn - The flexible function type to convert.
|
|
26
|
+
* @param reprocess - Optional function to transform the resolved value.
|
|
27
|
+
* @returns An async function that takes the same arguments and returns a Promise of the resolved type.
|
|
28
|
+
* @example
|
|
29
|
+
* const fn1 = resolveFn(42); // () => Promise<42>
|
|
30
|
+
* const fn2 = resolveFn(() => 'hello'); // () => Promise<'hello'>
|
|
31
|
+
* const fn3 = resolveFn(Promise.resolve(10)); // () => Promise<10>
|
|
32
|
+
*/
|
|
33
|
+
export declare function resolveFn<R, A extends [any?, ...any[]] = []>(fn: undefined): ((...args: A) => Promise<undefined>);
|
|
34
|
+
export declare function resolveFn<R, A extends [any?, ...any[]] = []>(fn: Fn<R, A>): ((...args: A) => Promise<R>);
|
|
35
|
+
export declare function resolveFn<R, A extends [any?, ...any[]] = [], R2 = R>(fn: Fn<R, A>, reprocess: (r: R) => R2): ((...args: A) => Promise<R2>);
|
|
36
|
+
/**
|
|
37
|
+
* Checks if a promise has settled (either fulfilled or rejected).
|
|
38
|
+
*
|
|
39
|
+
* @param p - The promise to check.
|
|
40
|
+
* @returns A promise that resolves to true if settled, false otherwise.
|
|
41
|
+
*/
|
|
42
|
+
export declare function isSettled(p: Promise<any>): Promise<boolean>;
|
|
43
|
+
/**
|
|
44
|
+
* Type guard to check if a value is a Promise.
|
|
45
|
+
*
|
|
46
|
+
* @param value - The value to check.
|
|
47
|
+
* @returns True if the value is a Promise, false otherwise.
|
|
48
|
+
*/
|
|
49
|
+
export declare function isPromise<T = any>(value: any): value is Promise<T>;
|
|
50
|
+
/**
|
|
51
|
+
* Type guard to check if a value is an AsyncGenerator.
|
|
52
|
+
*
|
|
53
|
+
* @param value - The value to check.
|
|
54
|
+
* @returns True if the value is an AsyncGenerator, false otherwise.
|
|
55
|
+
*/
|
|
56
|
+
export declare function isAsyncGenerator(value: any): value is AsyncGenerator<any, any, any>;
|
|
57
|
+
/**
|
|
58
|
+
* Yields promises as they settle (either fulfill or reject), maintaining their original indices.
|
|
59
|
+
* Useful for processing multiple async operations as soon as each one completes.
|
|
60
|
+
*
|
|
61
|
+
* @param promises - Array of promises to yield as they settle.
|
|
62
|
+
* @returns An async generator yielding objects with the settled promise and its index.
|
|
63
|
+
* @example
|
|
64
|
+
* const promises = [delay(100), delay(50), delay(200)];
|
|
65
|
+
* for await (const { result, index } of yieldAll(promises)) {
|
|
66
|
+
* console.log(`Promise ${index} settled`);
|
|
67
|
+
* const value = await result;
|
|
68
|
+
* }
|
|
69
|
+
*/
|
|
70
|
+
export declare function yieldAll<T>(promises: Promise<T>[]): AsyncGenerator<{
|
|
71
|
+
result: Promise<T>;
|
|
72
|
+
index: number;
|
|
73
|
+
}>;
|
|
74
|
+
/**
|
|
75
|
+
* Resolves an output value from various input types.
|
|
76
|
+
* Handles promises, raw values, and AsyncGenerators uniformly.
|
|
77
|
+
* These are all common return types of AI components.
|
|
78
|
+
*
|
|
79
|
+
* @param input - The value to resolve (can be a value, Promise, or AsyncGenerator).
|
|
80
|
+
* @returns A promise that resolves to the final value.
|
|
81
|
+
* @example
|
|
82
|
+
* await resolve(42); // 42
|
|
83
|
+
* await resolve(Promise.resolve('hello')); // 'hello'
|
|
84
|
+
* await resolve(asyncGenerator()); // final return value
|
|
85
|
+
*/
|
|
86
|
+
export declare function resolve(input: any): Promise<any>;
|
|
87
|
+
/**
|
|
88
|
+
* Consumes all values from an AsyncGenerator and returns them as an array.
|
|
89
|
+
*
|
|
90
|
+
* @param gen - The AsyncGenerator to consume.
|
|
91
|
+
* @returns An array of all values yielded by the generator.
|
|
92
|
+
*/
|
|
93
|
+
export declare function consumeAll<E>(gen: AsyncGenerator<E, any, any>): Promise<E[]>;
|
|
94
|
+
/**
|
|
95
|
+
* Resolves the type R from a value passed to `resolve`.
|
|
96
|
+
*/
|
|
97
|
+
export type Resolved<T> = T extends Promise<infer U> ? Resolved<U> : T extends AsyncGenerator<any, infer U, any> ? Resolved<U> : T;
|
|
98
|
+
/**
|
|
99
|
+
* Accumulates usage statistics by adding values from one Usage object to another.
|
|
100
|
+
* Handles the nested structure matching ModelPricing.
|
|
101
|
+
*
|
|
102
|
+
* @param target - The target Usage object to accumulate into.
|
|
103
|
+
* @param add - The Usage object to add from.
|
|
104
|
+
* @returns
|
|
105
|
+
*/
|
|
106
|
+
export declare function accumulateUsage(target: Usage, add?: Usage): void;
|
|
107
|
+
/**
|
|
108
|
+
* Calculate total input tokens from a Usage object.
|
|
109
|
+
* Includes tokens from text, audio, image, reasoning input, and embeddings.
|
|
110
|
+
*
|
|
111
|
+
* @param usage - The Usage object to calculate input tokens from
|
|
112
|
+
* @returns Total input tokens
|
|
113
|
+
*/
|
|
114
|
+
export declare function getInputTokens(usage?: Usage): number;
|
|
115
|
+
/**
|
|
116
|
+
* Calculate total output tokens from a Usage object.
|
|
117
|
+
* Includes tokens from text, audio, and reasoning output.
|
|
118
|
+
* Note: image.output represents generated images (not tokens), so it's excluded.
|
|
119
|
+
*
|
|
120
|
+
* @param usage - The Usage object to calculate output tokens from
|
|
121
|
+
* @returns Total output tokens
|
|
122
|
+
*/
|
|
123
|
+
export declare function getOutputTokens(usage?: Usage): number;
|
|
124
|
+
/**
|
|
125
|
+
* Calculate total tokens from a Usage object.
|
|
126
|
+
* Includes all tokens: input, output, cached from all modalities.
|
|
127
|
+
* Note: image.output represents generated images (not tokens), so it's excluded.
|
|
128
|
+
*
|
|
129
|
+
* @param usage - The Usage object to calculate total tokens from
|
|
130
|
+
* @returns Total tokens
|
|
131
|
+
*/
|
|
132
|
+
export declare function getTotalTokens(usage?: Usage): number;
|
|
133
|
+
/**
|
|
134
|
+
* Gets a Model object from either a string ID or a ModelInput object.
|
|
135
|
+
*
|
|
136
|
+
* @param input - The model identifier or ModelInput object.
|
|
137
|
+
* @returns
|
|
138
|
+
*/
|
|
139
|
+
export declare function getModel(input: ModelInput): Model;
|
|
140
|
+
export declare function getModel(input: ModelInput | undefined): Model | undefined;
|
|
141
|
+
/**
|
|
142
|
+
* Converts a series of chunks into a Response object.
|
|
143
|
+
*
|
|
144
|
+
* @param chunks - The array of Chunk objects to convert.
|
|
145
|
+
* @returns The aggregated Response object.
|
|
146
|
+
*/
|
|
147
|
+
export declare function getResponseFromChunks(chunks: Chunk[]): Response;
|
|
148
|
+
/**
|
|
149
|
+
* Converts a Response object into an array of Chunk objects.
|
|
150
|
+
*
|
|
151
|
+
* @param response - The response to convert.
|
|
152
|
+
* @returns The built chunks from the response.
|
|
153
|
+
*/
|
|
154
|
+
export declare function getChunksFromResponse(response: Response): Chunk[];
|
|
155
|
+
/**
|
|
156
|
+
* Creates a runner that emits events during component execution.
|
|
157
|
+
*
|
|
158
|
+
* @param events
|
|
159
|
+
* @returns
|
|
160
|
+
*/ export declare function withEvents<TRoot extends AnyComponent>(events: Events<TRoot>): Runner;
|
|
161
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
|