warden-code 0.1.5 → 1.0.1
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 +16 -2
- package/dist/cli/commands/build.d.ts +3 -0
- package/dist/cli/commands/build.d.ts.map +1 -0
- package/dist/cli/commands/build.js +235 -0
- package/dist/cli/commands/build.js.map +1 -0
- package/dist/cli/commands/chat.d.ts +3 -0
- package/dist/cli/commands/chat.d.ts.map +1 -0
- package/dist/cli/commands/chat.js +214 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/index.d.ts +2 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +2 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/new.d.ts.map +1 -1
- package/dist/cli/commands/new.js +24 -3
- package/dist/cli/commands/new.js.map +1 -1
- package/dist/cli/index.js +5 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/services/agent/a2a-client.d.ts +21 -0
- package/dist/cli/services/agent/a2a-client.d.ts.map +1 -0
- package/dist/cli/services/agent/a2a-client.js +78 -0
- package/dist/cli/services/agent/a2a-client.js.map +1 -0
- package/dist/cli/services/agent/langgraph-client.d.ts +10 -0
- package/dist/cli/services/agent/langgraph-client.d.ts.map +1 -0
- package/dist/cli/services/agent/langgraph-client.js +50 -0
- package/dist/cli/services/agent/langgraph-client.js.map +1 -0
- package/dist/cli/services/agent/probe.d.ts +3 -0
- package/dist/cli/services/agent/probe.d.ts.map +1 -0
- package/dist/cli/services/agent/probe.js +58 -0
- package/dist/cli/services/agent/probe.js.map +1 -0
- package/dist/cli/services/agent/types.d.ts +94 -0
- package/dist/cli/services/agent/types.d.ts.map +1 -0
- package/dist/cli/services/agent/types.js +2 -0
- package/dist/cli/services/agent/types.js.map +1 -0
- package/dist/cli/services/ai/anthropic.d.ts +8 -0
- package/dist/cli/services/ai/anthropic.d.ts.map +1 -0
- package/dist/cli/services/ai/anthropic.js +25 -0
- package/dist/cli/services/ai/anthropic.js.map +1 -0
- package/dist/cli/services/ai/context.d.ts +12 -0
- package/dist/cli/services/ai/context.d.ts.map +1 -0
- package/dist/cli/services/ai/context.js +72 -0
- package/dist/cli/services/ai/context.js.map +1 -0
- package/dist/cli/services/ai/openai.d.ts +8 -0
- package/dist/cli/services/ai/openai.d.ts.map +1 -0
- package/dist/cli/services/ai/openai.js +20 -0
- package/dist/cli/services/ai/openai.js.map +1 -0
- package/dist/cli/services/ai/provider.d.ts +15 -0
- package/dist/cli/services/ai/provider.d.ts.map +1 -0
- package/dist/cli/services/ai/provider.js +83 -0
- package/dist/cli/services/ai/provider.js.map +1 -0
- package/dist/cli/services/config.d.ts +8 -0
- package/dist/cli/services/config.d.ts.map +1 -0
- package/dist/cli/services/config.js +22 -0
- package/dist/cli/services/config.js.map +1 -0
- package/dist/templates/gitignore.template +1 -0
- package/package.json +3 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { BuildConfig } from "../config.js";
|
|
2
|
+
export interface Message {
|
|
3
|
+
role: "system" | "user" | "assistant";
|
|
4
|
+
content: string;
|
|
5
|
+
}
|
|
6
|
+
export interface AIProvider {
|
|
7
|
+
chat(messages: Message[]): Promise<string>;
|
|
8
|
+
}
|
|
9
|
+
export declare function createProvider(config: BuildConfig): AIProvider;
|
|
10
|
+
/**
|
|
11
|
+
* Returns whether the error is non-recoverable and the build loop should exit.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isNonRecoverableError(error: unknown): boolean;
|
|
14
|
+
export declare function formatAPIError(error: unknown): string;
|
|
15
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/cli/services/ai/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAIhD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5C;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAO9D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI7D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAuCrD"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { OpenAIProvider } from "./openai.js";
|
|
2
|
+
import { AnthropicProvider } from "./anthropic.js";
|
|
3
|
+
export function createProvider(config) {
|
|
4
|
+
switch (config.provider) {
|
|
5
|
+
case "openai":
|
|
6
|
+
return new OpenAIProvider(config.apiKey, config.model);
|
|
7
|
+
case "anthropic":
|
|
8
|
+
return new AnthropicProvider(config.apiKey, config.model);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Returns whether the error is non-recoverable and the build loop should exit.
|
|
13
|
+
*/
|
|
14
|
+
export function isNonRecoverableError(error) {
|
|
15
|
+
const status = getStatusCode(error);
|
|
16
|
+
// Auth errors and permission errors won't resolve by retrying
|
|
17
|
+
return status === 401 || status === 403;
|
|
18
|
+
}
|
|
19
|
+
export function formatAPIError(error) {
|
|
20
|
+
const status = getStatusCode(error);
|
|
21
|
+
const body = getErrorBody(error);
|
|
22
|
+
if (status === 401) {
|
|
23
|
+
return "Invalid API key. Run /build again to reconfigure.";
|
|
24
|
+
}
|
|
25
|
+
if (status === 403) {
|
|
26
|
+
return "Access denied. Your API key does not have permission to use this model.";
|
|
27
|
+
}
|
|
28
|
+
if (status === 400) {
|
|
29
|
+
if (body.includes("credit balance")) {
|
|
30
|
+
return "Insufficient API credits. Top up your balance at your provider's billing page.";
|
|
31
|
+
}
|
|
32
|
+
if (body.includes("context length") || body.includes("too many tokens")) {
|
|
33
|
+
return "The conversation is too long for this model. Start a new /build session.";
|
|
34
|
+
}
|
|
35
|
+
return `Bad request: ${body}`;
|
|
36
|
+
}
|
|
37
|
+
if (status === 404) {
|
|
38
|
+
return `Model not found. Check your model name and try again.`;
|
|
39
|
+
}
|
|
40
|
+
if (status === 429) {
|
|
41
|
+
return "Rate limited. Wait a moment and try again.";
|
|
42
|
+
}
|
|
43
|
+
if (status !== undefined && status >= 500) {
|
|
44
|
+
return "The provider is experiencing issues. Try again shortly.";
|
|
45
|
+
}
|
|
46
|
+
if (isConnectionError(error)) {
|
|
47
|
+
return "Could not reach the provider. Check your internet connection.";
|
|
48
|
+
}
|
|
49
|
+
return String(error);
|
|
50
|
+
}
|
|
51
|
+
function getStatusCode(error) {
|
|
52
|
+
if (error != null &&
|
|
53
|
+
typeof error === "object" &&
|
|
54
|
+
"status" in error &&
|
|
55
|
+
typeof error.status === "number") {
|
|
56
|
+
return error.status;
|
|
57
|
+
}
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
function getErrorBody(error) {
|
|
61
|
+
if (error != null && typeof error === "object" && "error" in error) {
|
|
62
|
+
const body = error.error;
|
|
63
|
+
if (typeof body === "string")
|
|
64
|
+
return body;
|
|
65
|
+
if (body != null && typeof body === "object") {
|
|
66
|
+
const msg = body.message;
|
|
67
|
+
if (typeof msg === "string")
|
|
68
|
+
return msg;
|
|
69
|
+
return JSON.stringify(body);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (error instanceof Error)
|
|
73
|
+
return error.message;
|
|
74
|
+
return String(error);
|
|
75
|
+
}
|
|
76
|
+
function isConnectionError(error) {
|
|
77
|
+
if (error instanceof Error) {
|
|
78
|
+
const name = error.constructor.name;
|
|
79
|
+
return (name === "APIConnectionError" || name === "APIConnectionTimeoutError");
|
|
80
|
+
}
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../src/cli/services/ai/provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface BuildConfig {
|
|
2
|
+
provider: "openai" | "anthropic";
|
|
3
|
+
model: string;
|
|
4
|
+
apiKey: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function readConfig(projectDir: string): Promise<BuildConfig | null>;
|
|
7
|
+
export declare function writeConfig(projectDir: string, config: BuildConfig): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/services/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AASD,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAO7B;AAED,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAIf"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as fs from "node:fs/promises";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
const CONFIG_DIR = ".warden";
|
|
4
|
+
const CONFIG_FILE = "config.json";
|
|
5
|
+
function configPath(projectDir) {
|
|
6
|
+
return path.join(projectDir, CONFIG_DIR, CONFIG_FILE);
|
|
7
|
+
}
|
|
8
|
+
export async function readConfig(projectDir) {
|
|
9
|
+
try {
|
|
10
|
+
const content = await fs.readFile(configPath(projectDir), "utf-8");
|
|
11
|
+
return JSON.parse(content);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export async function writeConfig(projectDir, config) {
|
|
18
|
+
const dir = path.join(projectDir, CONFIG_DIR);
|
|
19
|
+
await fs.mkdir(dir, { recursive: true });
|
|
20
|
+
await fs.writeFile(configPath(projectDir), JSON.stringify(config, null, 2));
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/services/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAQlC,MAAM,UAAU,GAAG,SAAS,CAAC;AAC7B,MAAM,WAAW,GAAG,aAAa,CAAC;AAElC,SAAS,UAAU,CAAC,UAAkB;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAgB,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAAkB,EAClB,MAAmB;IAEnB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "warden-code",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Interactive CLI for bootstrapping Warden agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -46,8 +46,10 @@
|
|
|
46
46
|
},
|
|
47
47
|
"homepage": "https://github.com/warden-protocol/agent-kit/tree/main/warden#readme",
|
|
48
48
|
"dependencies": {
|
|
49
|
+
"@anthropic-ai/sdk": "^0.74.0",
|
|
49
50
|
"@inquirer/prompts": "^7.0.0",
|
|
50
51
|
"chalk": "^5.4.1",
|
|
52
|
+
"openai": "^6.21.0",
|
|
51
53
|
"ora": "^8.1.1"
|
|
52
54
|
},
|
|
53
55
|
"devDependencies": {
|