@polka-codes/core 0.7.13 → 0.7.15
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/dist/_tsup-dts-rollup.d.ts +39 -11
- package/dist/index.d.ts +4 -0
- package/dist/index.js +41 -13
- package/package.json +1 -1
|
@@ -6,13 +6,11 @@ declare abstract class AgentBase {
|
|
|
6
6
|
protected readonly ai: AiServiceBase;
|
|
7
7
|
protected readonly config: Readonly<AgentBaseConfig>;
|
|
8
8
|
protected readonly handlers: Record<string, FullToolInfo>;
|
|
9
|
-
protected readonly messages: MessageParam[];
|
|
10
9
|
constructor(name: string, ai: AiServiceBase, config: AgentBaseConfig, messages?: MessageParam[]);
|
|
10
|
+
get messages(): Readonly<MessageParam[]>;
|
|
11
11
|
start(prompt: string): Promise<ExitReason>;
|
|
12
|
-
step(promp: string): Promise<AssistantMessageContent[]
|
|
13
|
-
|
|
14
|
-
}>;
|
|
15
|
-
handleStepResponse(response: AssistantMessageContent[]): Promise<{
|
|
12
|
+
step(promp: string, messages?: MessageParam[]): Promise<AssistantMessageContent[]>;
|
|
13
|
+
handleStepResponse(response: AssistantMessageContent[], messages?: MessageParam[]): Promise<{
|
|
16
14
|
replay: string;
|
|
17
15
|
} | {
|
|
18
16
|
exit: ExitReason;
|
|
@@ -24,7 +22,14 @@ declare abstract class AgentBase {
|
|
|
24
22
|
id: string;
|
|
25
23
|
info: ModelInfo;
|
|
26
24
|
};
|
|
27
|
-
get usage():
|
|
25
|
+
get usage(): {
|
|
26
|
+
messageCount: number;
|
|
27
|
+
inputTokens: number;
|
|
28
|
+
outputTokens: number;
|
|
29
|
+
cacheWriteTokens: number;
|
|
30
|
+
cacheReadTokens: number;
|
|
31
|
+
totalCost: number;
|
|
32
|
+
};
|
|
28
33
|
}
|
|
29
34
|
export { AgentBase }
|
|
30
35
|
export { AgentBase as AgentBase_alias_1 }
|
|
@@ -305,7 +310,10 @@ export { ArchitectAgentOptions }
|
|
|
305
310
|
export { ArchitectAgentOptions as ArchitectAgentOptions_alias_1 }
|
|
306
311
|
export { ArchitectAgentOptions as ArchitectAgentOptions_alias_2 }
|
|
307
312
|
|
|
308
|
-
|
|
313
|
+
declare type AssistantMessageContent = TextContent | ToolUse;
|
|
314
|
+
export { AssistantMessageContent }
|
|
315
|
+
export { AssistantMessageContent as AssistantMessageContent_alias_1 }
|
|
316
|
+
export { AssistantMessageContent as AssistantMessageContent_alias_2 }
|
|
309
317
|
|
|
310
318
|
export declare const basePrompt = "You are a highly skilled software engineer specializing in debugging and fixing code issues. You have extensive experience with:\n- Type systems and type checking\n- Test frameworks and debugging test failures\n- Code quality tools and best practices\n- Systematic debugging approaches";
|
|
311
319
|
|
|
@@ -1753,7 +1761,10 @@ declare type Output = {
|
|
|
1753
1761
|
* // {type: "text", content: "Here are the results"}
|
|
1754
1762
|
* // ]
|
|
1755
1763
|
*/
|
|
1756
|
-
|
|
1764
|
+
declare function parseAssistantMessage(assistantMessage: string, tools: ToolInfo[], toolNamePrefix: string): AssistantMessageContent[];
|
|
1765
|
+
export { parseAssistantMessage }
|
|
1766
|
+
export { parseAssistantMessage as parseAssistantMessage_alias_1 }
|
|
1767
|
+
export { parseAssistantMessage as parseAssistantMessage_alias_2 }
|
|
1757
1768
|
|
|
1758
1769
|
declare enum PermissionLevel {
|
|
1759
1770
|
None = 0,
|
|
@@ -1956,10 +1967,13 @@ export { TaskEventUsageExceeded }
|
|
|
1956
1967
|
export { TaskEventUsageExceeded as TaskEventUsageExceeded_alias_1 }
|
|
1957
1968
|
export { TaskEventUsageExceeded as TaskEventUsageExceeded_alias_2 }
|
|
1958
1969
|
|
|
1959
|
-
|
|
1970
|
+
declare interface TextContent {
|
|
1960
1971
|
type: 'text';
|
|
1961
1972
|
content: string;
|
|
1962
1973
|
}
|
|
1974
|
+
export { TextContent }
|
|
1975
|
+
export { TextContent as TextContent_alias_1 }
|
|
1976
|
+
export { TextContent as TextContent_alias_2 }
|
|
1963
1977
|
|
|
1964
1978
|
declare type ToolExample = {
|
|
1965
1979
|
description: string;
|
|
@@ -2448,11 +2462,14 @@ declare enum ToolResponseType {
|
|
|
2448
2462
|
export { ToolResponseType }
|
|
2449
2463
|
export { ToolResponseType as ToolResponseType_alias_1 }
|
|
2450
2464
|
|
|
2451
|
-
|
|
2465
|
+
declare interface ToolUse {
|
|
2452
2466
|
type: 'tool_use';
|
|
2453
2467
|
name: string;
|
|
2454
2468
|
params: Record<string, string>;
|
|
2455
2469
|
}
|
|
2470
|
+
export { ToolUse }
|
|
2471
|
+
export { ToolUse as ToolUse_alias_1 }
|
|
2472
|
+
export { ToolUse as ToolUse_alias_2 }
|
|
2456
2473
|
|
|
2457
2474
|
declare const toolUsePrompt: (tools: ToolInfo[], toolNamePrefix: string) => string;
|
|
2458
2475
|
export { toolUsePrompt }
|
|
@@ -2475,16 +2492,27 @@ declare class UsageMeter {
|
|
|
2475
2492
|
provider: string;
|
|
2476
2493
|
id: string;
|
|
2477
2494
|
}): void;
|
|
2495
|
+
setUsage(usage: Partial<ApiUsage>, messageCount?: number): void;
|
|
2478
2496
|
incrementMessageCount(count?: number): void;
|
|
2479
2497
|
isLimitExceeded(): {
|
|
2480
2498
|
messageCount: boolean;
|
|
2499
|
+
maxMessageCount: number;
|
|
2481
2500
|
cost: boolean;
|
|
2501
|
+
maxCost: number;
|
|
2482
2502
|
result: boolean;
|
|
2483
2503
|
};
|
|
2504
|
+
checkLimit(): void;
|
|
2484
2505
|
/**
|
|
2485
2506
|
* Get current usage totals
|
|
2486
2507
|
*/
|
|
2487
|
-
get usage():
|
|
2508
|
+
get usage(): {
|
|
2509
|
+
messageCount: number;
|
|
2510
|
+
inputTokens: number;
|
|
2511
|
+
outputTokens: number;
|
|
2512
|
+
cacheWriteTokens: number;
|
|
2513
|
+
cacheReadTokens: number;
|
|
2514
|
+
totalCost: number;
|
|
2515
|
+
};
|
|
2488
2516
|
printUsage(): void;
|
|
2489
2517
|
}
|
|
2490
2518
|
export { UsageMeter }
|
package/dist/index.d.ts
CHANGED
|
@@ -51,6 +51,10 @@ export { systemInformation } from './_tsup-dts-rollup.js';
|
|
|
51
51
|
export { customInstructions } from './_tsup-dts-rollup.js';
|
|
52
52
|
export { customScripts } from './_tsup-dts-rollup.js';
|
|
53
53
|
export { responsePrompts } from './_tsup-dts-rollup.js';
|
|
54
|
+
export { parseAssistantMessage } from './_tsup-dts-rollup.js';
|
|
55
|
+
export { TextContent } from './_tsup-dts-rollup.js';
|
|
56
|
+
export { ToolUse } from './_tsup-dts-rollup.js';
|
|
57
|
+
export { AssistantMessageContent } from './_tsup-dts-rollup.js';
|
|
54
58
|
export { allTools } from './_tsup-dts-rollup.js';
|
|
55
59
|
export { FilesystemProvider } from './_tsup-dts-rollup.js';
|
|
56
60
|
export { CommandProvider } from './_tsup-dts-rollup.js';
|
package/dist/index.js
CHANGED
|
@@ -11,6 +11,7 @@ var AiServiceBase = class {
|
|
|
11
11
|
this.usageMeter = usageMeter;
|
|
12
12
|
}
|
|
13
13
|
async *send(systemPrompt, messages) {
|
|
14
|
+
this.usageMeter.checkLimit();
|
|
14
15
|
this.usageMeter.incrementMessageCount();
|
|
15
16
|
const stream = this.sendImpl(systemPrompt, messages);
|
|
16
17
|
for await (const chunk of stream) {
|
|
@@ -23,6 +24,7 @@ var AiServiceBase = class {
|
|
|
23
24
|
}
|
|
24
25
|
}
|
|
25
26
|
async request(systemPrompt, messages) {
|
|
27
|
+
this.usageMeter.checkLimit();
|
|
26
28
|
this.usageMeter.incrementMessageCount();
|
|
27
29
|
const stream = this.sendImpl(systemPrompt, messages);
|
|
28
30
|
const usage = {
|
|
@@ -775,6 +777,16 @@ var UsageMeter = class {
|
|
|
775
777
|
}
|
|
776
778
|
this.#usage.totalCost += usage.totalCost ?? 0;
|
|
777
779
|
}
|
|
780
|
+
setUsage(usage, messageCount) {
|
|
781
|
+
this.#usage.inputTokens = usage.inputTokens ?? this.#usage.inputTokens;
|
|
782
|
+
this.#usage.outputTokens = usage.outputTokens ?? this.#usage.outputTokens;
|
|
783
|
+
this.#usage.cacheWriteTokens = usage.cacheWriteTokens ?? this.#usage.cacheWriteTokens;
|
|
784
|
+
this.#usage.cacheReadTokens = usage.cacheReadTokens ?? this.#usage.cacheReadTokens;
|
|
785
|
+
this.#usage.totalCost = usage.totalCost ?? this.#usage.totalCost;
|
|
786
|
+
if (messageCount !== void 0) {
|
|
787
|
+
this.#messageCount = messageCount;
|
|
788
|
+
}
|
|
789
|
+
}
|
|
778
790
|
incrementMessageCount(count = 1) {
|
|
779
791
|
this.#messageCount += count;
|
|
780
792
|
}
|
|
@@ -783,15 +795,25 @@ var UsageMeter = class {
|
|
|
783
795
|
const cost = this.#usage.totalCost >= this.maxCost;
|
|
784
796
|
return {
|
|
785
797
|
messageCount,
|
|
798
|
+
maxMessageCount: this.maxMessageCount,
|
|
786
799
|
cost,
|
|
800
|
+
maxCost: this.maxCost,
|
|
787
801
|
result: messageCount || cost
|
|
788
802
|
};
|
|
789
803
|
}
|
|
804
|
+
checkLimit() {
|
|
805
|
+
const result = this.isLimitExceeded();
|
|
806
|
+
if (result.result) {
|
|
807
|
+
throw new Error(
|
|
808
|
+
`Usage limit exceeded. Message count: ${result.messageCount}/${result.maxMessageCount}, cost: ${result.cost}/${result.maxCost}`
|
|
809
|
+
);
|
|
810
|
+
}
|
|
811
|
+
}
|
|
790
812
|
/**
|
|
791
813
|
* Get current usage totals
|
|
792
814
|
*/
|
|
793
815
|
get usage() {
|
|
794
|
-
return { ...this.#usage };
|
|
816
|
+
return { ...this.#usage, messageCount: this.#messageCount };
|
|
795
817
|
}
|
|
796
818
|
printUsage() {
|
|
797
819
|
const { inputTokens, outputTokens, cacheReadTokens, cacheWriteTokens } = this.#usage;
|
|
@@ -2185,10 +2207,10 @@ var AgentBase = class {
|
|
|
2185
2207
|
ai;
|
|
2186
2208
|
config;
|
|
2187
2209
|
handlers;
|
|
2188
|
-
messages;
|
|
2210
|
+
#messages;
|
|
2189
2211
|
constructor(name, ai, config, messages = []) {
|
|
2190
2212
|
this.ai = ai;
|
|
2191
|
-
this
|
|
2213
|
+
this.#messages = messages;
|
|
2192
2214
|
if (config.agents && config.agents.length > 0) {
|
|
2193
2215
|
const agents = agentsPrompt(config.agents, name);
|
|
2194
2216
|
config.systemPrompt += `
|
|
@@ -2201,6 +2223,9 @@ ${agents}`;
|
|
|
2201
2223
|
}
|
|
2202
2224
|
this.handlers = handlers;
|
|
2203
2225
|
}
|
|
2226
|
+
get messages() {
|
|
2227
|
+
return this.#messages;
|
|
2228
|
+
}
|
|
2204
2229
|
async #callback(event) {
|
|
2205
2230
|
await this.config.callback?.(event);
|
|
2206
2231
|
}
|
|
@@ -2208,17 +2233,19 @@ ${agents}`;
|
|
|
2208
2233
|
this.#callback({ kind: "StartTask" /* StartTask */, agent: this, systemPrompt: this.config.systemPrompt });
|
|
2209
2234
|
return await this.#processLoop(prompt5);
|
|
2210
2235
|
}
|
|
2211
|
-
async step(promp) {
|
|
2212
|
-
if (
|
|
2213
|
-
this.#
|
|
2236
|
+
async step(promp, messages) {
|
|
2237
|
+
if (messages) {
|
|
2238
|
+
this.#messages = messages;
|
|
2214
2239
|
}
|
|
2215
|
-
if (this.
|
|
2216
|
-
this.#callback({ kind: "
|
|
2217
|
-
return { type: "UsageExceeded" };
|
|
2240
|
+
if (this.#messages.length === 0) {
|
|
2241
|
+
this.#callback({ kind: "StartTask" /* StartTask */, agent: this, systemPrompt: this.config.systemPrompt });
|
|
2218
2242
|
}
|
|
2219
2243
|
return await this.#request(promp);
|
|
2220
2244
|
}
|
|
2221
|
-
async handleStepResponse(response) {
|
|
2245
|
+
async handleStepResponse(response, messages) {
|
|
2246
|
+
if (messages) {
|
|
2247
|
+
this.#messages = messages;
|
|
2248
|
+
}
|
|
2222
2249
|
return this.#handleResponse(response);
|
|
2223
2250
|
}
|
|
2224
2251
|
async #processLoop(userMessage) {
|
|
@@ -2245,7 +2272,7 @@ ${agents}`;
|
|
|
2245
2272
|
throw new Error("userMessage is missing");
|
|
2246
2273
|
}
|
|
2247
2274
|
await this.#callback({ kind: "StartRequest" /* StartRequest */, agent: this, userMessage });
|
|
2248
|
-
this
|
|
2275
|
+
this.#messages.push({
|
|
2249
2276
|
role: "user",
|
|
2250
2277
|
content: userMessage
|
|
2251
2278
|
});
|
|
@@ -2253,7 +2280,7 @@ ${agents}`;
|
|
|
2253
2280
|
const retryCount = 5;
|
|
2254
2281
|
for (let i = 0; i < retryCount; i++) {
|
|
2255
2282
|
currentAssistantMessage = "";
|
|
2256
|
-
const stream = this.ai.send(this.config.systemPrompt, this
|
|
2283
|
+
const stream = this.ai.send(this.config.systemPrompt, this.#messages);
|
|
2257
2284
|
try {
|
|
2258
2285
|
for await (const chunk of stream) {
|
|
2259
2286
|
switch (chunk.type) {
|
|
@@ -2280,7 +2307,7 @@ ${agents}`;
|
|
|
2280
2307
|
if (!currentAssistantMessage) {
|
|
2281
2308
|
throw new Error("No assistant message received");
|
|
2282
2309
|
}
|
|
2283
|
-
this
|
|
2310
|
+
this.#messages.push({
|
|
2284
2311
|
role: "assistant",
|
|
2285
2312
|
content: currentAssistantMessage
|
|
2286
2313
|
});
|
|
@@ -3432,6 +3459,7 @@ export {
|
|
|
3432
3459
|
makeTool,
|
|
3433
3460
|
modelInfos,
|
|
3434
3461
|
openAiModelInfoSaneDefaults,
|
|
3462
|
+
parseAssistantMessage,
|
|
3435
3463
|
readFile_default as readFile,
|
|
3436
3464
|
removeFile_default as removeFile,
|
|
3437
3465
|
renameFile_default as renameFile,
|