@locusai/sdk 0.4.1 → 0.4.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/dist/ai/claude-runner.d.ts.map +1 -1
- package/dist/ai/claude-runner.js +4 -2
- package/dist/core/indexer.d.ts.map +1 -1
- package/dist/core/indexer.js +24 -4
- package/dist/orchestrator.js +2 -2
- package/package.json +2 -2
- package/src/ai/claude-runner.ts +8 -2
- package/src/core/indexer.ts +24 -4
- package/src/orchestrator.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-runner.d.ts","sourceRoot":"","sources":["../../src/ai/claude-runner.ts"],"names":[],"mappings":"AAGA,qBAAa,YAAY;IAErB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,KAAK;gBADL,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,MAAsB;IAGvC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-runner.d.ts","sourceRoot":"","sources":["../../src/ai/claude-runner.ts"],"names":[],"mappings":"AAGA,qBAAa,YAAY;IAErB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,KAAK;gBADL,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,MAAsB;IAGvC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;CAkD1D"}
|
package/dist/ai/claude-runner.js
CHANGED
|
@@ -18,6 +18,8 @@ export class ClaudeRunner {
|
|
|
18
18
|
const claude = spawn("claude", args, {
|
|
19
19
|
cwd: this.projectPath,
|
|
20
20
|
stdio: ["pipe", "pipe", "pipe"],
|
|
21
|
+
env: process.env,
|
|
22
|
+
shell: true,
|
|
21
23
|
});
|
|
22
24
|
let output = "";
|
|
23
25
|
let errorOutput = "";
|
|
@@ -29,14 +31,14 @@ export class ClaudeRunner {
|
|
|
29
31
|
errorOutput += data.toString();
|
|
30
32
|
process.stderr.write(data.toString());
|
|
31
33
|
});
|
|
32
|
-
claude.on("error", (err) => reject(new Error(`Failed to start Claude CLI: ${err.message}
|
|
34
|
+
claude.on("error", (err) => reject(new Error(`Failed to start Claude CLI (shell: true): ${err.message}. Please ensure the 'claude' command is available in your PATH.`)));
|
|
33
35
|
claude.on("close", (code) => {
|
|
34
36
|
if (code === 0)
|
|
35
37
|
resolve(output);
|
|
36
38
|
else {
|
|
37
39
|
const detail = errorOutput.trim();
|
|
38
40
|
const message = detail
|
|
39
|
-
? `Claude CLI error: ${detail}`
|
|
41
|
+
? `Claude CLI error (exit code ${code}): ${detail}`
|
|
40
42
|
: `Claude CLI exited with code ${code}. Please ensure the Claude CLI is installed and you are logged in (run 'claude' manually to check).`;
|
|
41
43
|
reject(new Error(message));
|
|
42
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/core/indexer.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEd,WAAW,EAAE,MAAM;IAK/B;;;OAGG;IACG,KAAK,CACT,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EACtC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,GACxD,OAAO,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/core/indexer.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEd,WAAW,EAAE,MAAM;IAK/B;;;OAGG;IACG,KAAK,CACT,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EACtC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,GACxD,OAAO,CAAC,aAAa,CAAC;IAkEzB,SAAS,IAAI,aAAa,GAAG,IAAI;IAWjC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;CAOtC"}
|
package/dist/core/indexer.js
CHANGED
|
@@ -21,23 +21,43 @@ export class CodebaseIndexer {
|
|
|
21
21
|
// 1. Get a comprehensive but clean file tree
|
|
22
22
|
const files = await globby(["**/*"], {
|
|
23
23
|
cwd: this.projectPath,
|
|
24
|
+
gitignore: true,
|
|
24
25
|
ignore: [
|
|
25
26
|
"**/node_modules/**",
|
|
26
27
|
"**/dist/**",
|
|
27
28
|
"**/build/**",
|
|
29
|
+
"**/target/**", // Rust build artifacts
|
|
30
|
+
"**/bin/**",
|
|
31
|
+
"**/obj/**",
|
|
28
32
|
"**/.next/**",
|
|
33
|
+
"**/.svelte-kit/**",
|
|
34
|
+
"**/.nuxt/**",
|
|
35
|
+
"**/.cache/**",
|
|
29
36
|
"**/out/**",
|
|
30
37
|
"**/__tests__/**",
|
|
38
|
+
"**/coverage/**",
|
|
31
39
|
"**/*.test.*",
|
|
32
40
|
"**/*.spec.*",
|
|
33
41
|
"**/*.d.ts",
|
|
34
42
|
"**/tsconfig.tsbuildinfo",
|
|
35
43
|
"**/.locus/*.json", // Ignore index and other system JSONs
|
|
36
|
-
"**/.locus/*.md", // Ignore system MDs
|
|
44
|
+
"**/.locus/*.md", // Ignore system MDs
|
|
37
45
|
"**/.locus/!(artifacts)/**", // Ignore everything in .locus EXCEPT artifacts
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
46
|
+
"**/.git/**",
|
|
47
|
+
"**/.svn/**",
|
|
48
|
+
"**/.hg/**",
|
|
49
|
+
"**/.vscode/**",
|
|
50
|
+
"**/.idea/**",
|
|
51
|
+
"**/.DS_Store",
|
|
52
|
+
"**/bun.lock",
|
|
53
|
+
"**/package-lock.json",
|
|
54
|
+
"**/yarn.lock",
|
|
55
|
+
"**/pnpm-lock.yaml",
|
|
56
|
+
"**/Cargo.lock",
|
|
57
|
+
"**/go.sum",
|
|
58
|
+
"**/poetry.lock",
|
|
59
|
+
// Binary/Large Assets
|
|
60
|
+
"**/*.{png,jpg,jpeg,gif,svg,ico,mp4,webm,wav,mp3,woff,woff2,eot,ttf,otf,pdf,zip,tar.gz,rar}",
|
|
41
61
|
],
|
|
42
62
|
});
|
|
43
63
|
// Format the tree for the AI
|
package/dist/orchestrator.js
CHANGED
|
@@ -177,8 +177,8 @@ export class AgentOrchestrator extends EventEmitter {
|
|
|
177
177
|
if (this.resolvedSprintId) {
|
|
178
178
|
workerArgs.push("--sprint-id", this.resolvedSprintId);
|
|
179
179
|
}
|
|
180
|
-
// Use
|
|
181
|
-
const agentProcess = spawn(
|
|
180
|
+
// Use node to run the worker script
|
|
181
|
+
const agentProcess = spawn(process.execPath, [workerPath, ...workerArgs]);
|
|
182
182
|
agentState.process = agentProcess;
|
|
183
183
|
agentProcess.on("message", (msg) => {
|
|
184
184
|
if (msg.type === "stats") {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@locusai/sdk",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./src/index.ts",
|
|
6
6
|
"types": "./src/index.ts",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@anthropic-ai/sdk": "^0.71.2",
|
|
44
|
-
"@locusai/shared": "^0.4.
|
|
44
|
+
"@locusai/shared": "^0.4.3",
|
|
45
45
|
"axios": "^1.13.2",
|
|
46
46
|
"events": "^3.3.0",
|
|
47
47
|
"globby": "^14.0.2"
|
package/src/ai/claude-runner.ts
CHANGED
|
@@ -19,6 +19,8 @@ export class ClaudeRunner {
|
|
|
19
19
|
const claude = spawn("claude", args, {
|
|
20
20
|
cwd: this.projectPath,
|
|
21
21
|
stdio: ["pipe", "pipe", "pipe"],
|
|
22
|
+
env: process.env,
|
|
23
|
+
shell: true,
|
|
22
24
|
});
|
|
23
25
|
|
|
24
26
|
let output = "";
|
|
@@ -34,14 +36,18 @@ export class ClaudeRunner {
|
|
|
34
36
|
});
|
|
35
37
|
|
|
36
38
|
claude.on("error", (err) =>
|
|
37
|
-
reject(
|
|
39
|
+
reject(
|
|
40
|
+
new Error(
|
|
41
|
+
`Failed to start Claude CLI (shell: true): ${err.message}. Please ensure the 'claude' command is available in your PATH.`
|
|
42
|
+
)
|
|
43
|
+
)
|
|
38
44
|
);
|
|
39
45
|
claude.on("close", (code) => {
|
|
40
46
|
if (code === 0) resolve(output);
|
|
41
47
|
else {
|
|
42
48
|
const detail = errorOutput.trim();
|
|
43
49
|
const message = detail
|
|
44
|
-
? `Claude CLI error: ${detail}`
|
|
50
|
+
? `Claude CLI error (exit code ${code}): ${detail}`
|
|
45
51
|
: `Claude CLI exited with code ${code}. Please ensure the Claude CLI is installed and you are logged in (run 'claude' manually to check).`;
|
|
46
52
|
reject(new Error(message));
|
|
47
53
|
}
|
package/src/core/indexer.ts
CHANGED
|
@@ -34,23 +34,43 @@ export class CodebaseIndexer {
|
|
|
34
34
|
// 1. Get a comprehensive but clean file tree
|
|
35
35
|
const files = await globby(["**/*"], {
|
|
36
36
|
cwd: this.projectPath,
|
|
37
|
+
gitignore: true,
|
|
37
38
|
ignore: [
|
|
38
39
|
"**/node_modules/**",
|
|
39
40
|
"**/dist/**",
|
|
40
41
|
"**/build/**",
|
|
42
|
+
"**/target/**", // Rust build artifacts
|
|
43
|
+
"**/bin/**",
|
|
44
|
+
"**/obj/**",
|
|
41
45
|
"**/.next/**",
|
|
46
|
+
"**/.svelte-kit/**",
|
|
47
|
+
"**/.nuxt/**",
|
|
48
|
+
"**/.cache/**",
|
|
42
49
|
"**/out/**",
|
|
43
50
|
"**/__tests__/**",
|
|
51
|
+
"**/coverage/**",
|
|
44
52
|
"**/*.test.*",
|
|
45
53
|
"**/*.spec.*",
|
|
46
54
|
"**/*.d.ts",
|
|
47
55
|
"**/tsconfig.tsbuildinfo",
|
|
48
56
|
"**/.locus/*.json", // Ignore index and other system JSONs
|
|
49
|
-
"**/.locus/*.md", // Ignore system MDs
|
|
57
|
+
"**/.locus/*.md", // Ignore system MDs
|
|
50
58
|
"**/.locus/!(artifacts)/**", // Ignore everything in .locus EXCEPT artifacts
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
59
|
+
"**/.git/**",
|
|
60
|
+
"**/.svn/**",
|
|
61
|
+
"**/.hg/**",
|
|
62
|
+
"**/.vscode/**",
|
|
63
|
+
"**/.idea/**",
|
|
64
|
+
"**/.DS_Store",
|
|
65
|
+
"**/bun.lock",
|
|
66
|
+
"**/package-lock.json",
|
|
67
|
+
"**/yarn.lock",
|
|
68
|
+
"**/pnpm-lock.yaml",
|
|
69
|
+
"**/Cargo.lock",
|
|
70
|
+
"**/go.sum",
|
|
71
|
+
"**/poetry.lock",
|
|
72
|
+
// Binary/Large Assets
|
|
73
|
+
"**/*.{png,jpg,jpeg,gif,svg,ico,mp4,webm,wav,mp3,woff,woff2,eot,ttf,otf,pdf,zip,tar.gz,rar}",
|
|
54
74
|
],
|
|
55
75
|
});
|
|
56
76
|
|
package/src/orchestrator.ts
CHANGED
|
@@ -246,8 +246,8 @@ export class AgentOrchestrator extends EventEmitter {
|
|
|
246
246
|
workerArgs.push("--sprint-id", this.resolvedSprintId);
|
|
247
247
|
}
|
|
248
248
|
|
|
249
|
-
// Use
|
|
250
|
-
const agentProcess = spawn(
|
|
249
|
+
// Use node to run the worker script
|
|
250
|
+
const agentProcess = spawn(process.execPath, [workerPath, ...workerArgs]);
|
|
251
251
|
|
|
252
252
|
agentState.process = agentProcess;
|
|
253
253
|
|