@locusai/sdk 0.11.7 → 0.12.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/dist/agent/worker.js +12 -46
- package/dist/ai/claude-runner.d.ts.map +1 -1
- package/dist/core/prompt-builder.d.ts.map +1 -1
- package/dist/index-node.js +30 -91
- package/dist/planning/agents/planner.d.ts +0 -1
- package/dist/planning/agents/planner.d.ts.map +1 -1
- package/dist/planning/planning-meeting.d.ts +0 -1
- package/dist/planning/planning-meeting.d.ts.map +1 -1
- package/dist/planning/sprint-plan.d.ts.map +1 -1
- package/dist/project/knowledge-base.d.ts.map +1 -1
- package/dist/utils/json-extractor.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/agent/worker.js
CHANGED
|
@@ -829,9 +829,7 @@ class ClaudeRunner {
|
|
|
829
829
|
"stream-json",
|
|
830
830
|
"--include-partial-messages",
|
|
831
831
|
"--model",
|
|
832
|
-
this.model
|
|
833
|
-
"--settings",
|
|
834
|
-
SANDBOX_SETTINGS
|
|
832
|
+
this.model
|
|
835
833
|
];
|
|
836
834
|
const env = getAugmentedEnv({
|
|
837
835
|
FORCE_COLOR: "1",
|
|
@@ -1080,9 +1078,7 @@ class ClaudeRunner {
|
|
|
1080
1078
|
"stream-json",
|
|
1081
1079
|
"--include-partial-messages",
|
|
1082
1080
|
"--model",
|
|
1083
|
-
this.model
|
|
1084
|
-
"--settings",
|
|
1085
|
-
SANDBOX_SETTINGS
|
|
1081
|
+
this.model
|
|
1086
1082
|
];
|
|
1087
1083
|
const env = getAugmentedEnv({
|
|
1088
1084
|
FORCE_COLOR: "1",
|
|
@@ -1184,23 +1180,13 @@ ${c.primary("[Claude]")} ${c.bold(`Running ${content_block.name}...`)}
|
|
|
1184
1180
|
return new Error(message);
|
|
1185
1181
|
}
|
|
1186
1182
|
}
|
|
1187
|
-
var import_node_child_process, import_node_path3,
|
|
1183
|
+
var import_node_child_process, import_node_path3, DEFAULT_TIMEOUT_MS;
|
|
1188
1184
|
var init_claude_runner = __esm(() => {
|
|
1189
1185
|
init_config();
|
|
1190
1186
|
init_colors();
|
|
1191
1187
|
init_resolve_bin();
|
|
1192
1188
|
import_node_child_process = require("node:child_process");
|
|
1193
1189
|
import_node_path3 = require("node:path");
|
|
1194
|
-
SANDBOX_SETTINGS = JSON.stringify({
|
|
1195
|
-
permissions: {
|
|
1196
|
-
deny: ["Read(../**)", "Edit(../**)"]
|
|
1197
|
-
},
|
|
1198
|
-
sandbox: {
|
|
1199
|
-
enabled: true,
|
|
1200
|
-
autoAllow: true,
|
|
1201
|
-
allowUnsandboxedCommands: false
|
|
1202
|
-
}
|
|
1203
|
-
});
|
|
1204
1190
|
DEFAULT_TIMEOUT_MS = 60 * 60 * 1000;
|
|
1205
1191
|
});
|
|
1206
1192
|
|
|
@@ -1694,14 +1680,10 @@ ${line}`;
|
|
|
1694
1680
|
}
|
|
1695
1681
|
getFullContext() {
|
|
1696
1682
|
const context = this.readContext();
|
|
1697
|
-
const progress = this.readProgress();
|
|
1698
1683
|
const parts = [];
|
|
1699
1684
|
if (context.trim()) {
|
|
1700
1685
|
parts.push(context.trim());
|
|
1701
1686
|
}
|
|
1702
|
-
if (progress.trim()) {
|
|
1703
|
-
parts.push(progress.trim());
|
|
1704
|
-
}
|
|
1705
1687
|
return parts.join(`
|
|
1706
1688
|
|
|
1707
1689
|
---
|
|
@@ -2093,13 +2075,6 @@ ${serverContext.context}
|
|
|
2093
2075
|
prompt += `If you need more information about the project strategies, plans, or architecture, please read files in these directories.
|
|
2094
2076
|
|
|
2095
2077
|
`;
|
|
2096
|
-
const indexPath = getLocusPath(this.projectPath, "indexFile");
|
|
2097
|
-
if (import_node_fs4.existsSync(indexPath)) {
|
|
2098
|
-
prompt += `## Codebase Overview
|
|
2099
|
-
There is an index file in the .locus/codebase-index.json and if you need you can check it.
|
|
2100
|
-
|
|
2101
|
-
`;
|
|
2102
|
-
}
|
|
2103
2078
|
if (task.docs && task.docs.length > 0) {
|
|
2104
2079
|
prompt += `## Attached Documents (Summarized)
|
|
2105
2080
|
`;
|
|
@@ -2129,19 +2104,17 @@ ${preview}${isTruncated ? `
|
|
|
2129
2104
|
`;
|
|
2130
2105
|
}
|
|
2131
2106
|
if (task.comments && task.comments.length > 0) {
|
|
2132
|
-
const
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
prompt += `Review the following comments for context or rejection feedback:
|
|
2136
|
-
|
|
2107
|
+
const filteredComments = task.comments.filter((comment) => comment.author !== "system");
|
|
2108
|
+
const comments = filteredComments.slice(0, 3);
|
|
2109
|
+
prompt += `## Task Comments & Feedback
|
|
2137
2110
|
`;
|
|
2138
2111
|
for (const comment of comments) {
|
|
2139
2112
|
const date = new Date(comment.createdAt).toLocaleString();
|
|
2140
|
-
prompt +=
|
|
2141
|
-
${comment.text}
|
|
2142
|
-
|
|
2113
|
+
prompt += `- ${comment.author} (${date}): ${comment.text}
|
|
2143
2114
|
`;
|
|
2144
2115
|
}
|
|
2116
|
+
prompt += `
|
|
2117
|
+
`;
|
|
2145
2118
|
}
|
|
2146
2119
|
prompt += `## Instructions
|
|
2147
2120
|
1. Complete this task.
|
|
@@ -2206,13 +2179,6 @@ ${fallback}
|
|
|
2206
2179
|
prompt += `If you need more information about the project strategies, plans, or architecture, please read files in these directories.
|
|
2207
2180
|
|
|
2208
2181
|
`;
|
|
2209
|
-
const indexPath = getLocusPath(this.projectPath, "indexFile");
|
|
2210
|
-
if (import_node_fs4.existsSync(indexPath)) {
|
|
2211
|
-
prompt += `## Codebase Overview
|
|
2212
|
-
There is an index file in the .locus/codebase-index.json and if you need you can check it.
|
|
2213
|
-
|
|
2214
|
-
`;
|
|
2215
|
-
}
|
|
2216
2182
|
prompt += `## Instructions
|
|
2217
2183
|
1. Execute the prompt based on the provided project context.
|
|
2218
2184
|
2. **Paths**: Use relative paths from the project root at all times. Do NOT use absolute local paths (e.g., /Users/...).
|
|
@@ -2596,7 +2562,7 @@ class AgentWorker {
|
|
|
2596
2562
|
assignedTo: null
|
|
2597
2563
|
});
|
|
2598
2564
|
await this.client.tasks.addComment(task.id, this.config.workspaceId, {
|
|
2599
|
-
author:
|
|
2565
|
+
author: "system",
|
|
2600
2566
|
text: `⚠️ Agent execution finished with no file changes, so no commit was created.
|
|
2601
2567
|
|
|
2602
2568
|
${result.summary}`
|
|
@@ -2611,7 +2577,7 @@ ${result.summary}`
|
|
|
2611
2577
|
|
|
2612
2578
|
Branch: \`${result.branch}\`` : "";
|
|
2613
2579
|
await this.client.tasks.addComment(task.id, this.config.workspaceId, {
|
|
2614
|
-
author:
|
|
2580
|
+
author: "system",
|
|
2615
2581
|
text: `✅ ${result.summary}${branchInfo}`
|
|
2616
2582
|
});
|
|
2617
2583
|
this.tasksCompleted++;
|
|
@@ -2626,7 +2592,7 @@ Branch: \`${result.branch}\`` : "";
|
|
|
2626
2592
|
assignedTo: null
|
|
2627
2593
|
});
|
|
2628
2594
|
await this.client.tasks.addComment(task.id, this.config.workspaceId, {
|
|
2629
|
-
author:
|
|
2595
|
+
author: "system",
|
|
2630
2596
|
text: `❌ ${result.summary}`
|
|
2631
2597
|
});
|
|
2632
2598
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-runner.d.ts","sourceRoot":"","sources":["../../src/ai/claude-runner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,kBAAkB,CAAC;AAGhE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-runner.d.ts","sourceRoot":"","sources":["../../src/ai/claude-runner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,kBAAkB,CAAC;AAGhE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAmC5C,qBAAa,YAAa,YAAW,QAAQ;IAUzC,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,GAAG,CAAC;IAVd,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAC,CAAmB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,WAAW,CAA+C;IAClE,OAAO,CAAC,aAAa,CAA6B;IAClD,SAAS,EAAE,MAAM,CAAC;gBAGhB,WAAW,EAAE,MAAM,EACX,KAAK,GAAE,MAAuC,EAC9C,GAAG,CAAC,EAAE,KAAK,YAAA,EACnB,SAAS,CAAC,EAAE,MAAM;IAMpB;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAIhD;;OAEG;IACH,KAAK,IAAI,IAAI;IAOP,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA8B1C,OAAO,CAAC,WAAW;IA0BZ,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC;IAmL5E;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,kBAAkB;IAwE1B,OAAO,CAAC,UAAU;IAwFlB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,oBAAoB;CAO7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/core/prompt-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGrD,qBAAa,aAAa;IACZ,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,MAAM;IAEjC,KAAK,CACT,IAAI,EAAE,IAAI,EACV,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAO,GACrC,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/core/prompt-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGrD,qBAAa,aAAa;IACZ,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,MAAM;IAEjC,KAAK,CACT,IAAI,EAAE,IAAI,EACV,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAO,GACrC,OAAO,CAAC,MAAM,CAAC;IA4HZ,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsDxD,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,mBAAmB;IAuB3B,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,MAAM,GAAG,IAAI;CAoBtD"}
|
package/dist/index-node.js
CHANGED
|
@@ -829,9 +829,7 @@ class ClaudeRunner {
|
|
|
829
829
|
"stream-json",
|
|
830
830
|
"--include-partial-messages",
|
|
831
831
|
"--model",
|
|
832
|
-
this.model
|
|
833
|
-
"--settings",
|
|
834
|
-
SANDBOX_SETTINGS
|
|
832
|
+
this.model
|
|
835
833
|
];
|
|
836
834
|
const env = getAugmentedEnv({
|
|
837
835
|
FORCE_COLOR: "1",
|
|
@@ -1080,9 +1078,7 @@ class ClaudeRunner {
|
|
|
1080
1078
|
"stream-json",
|
|
1081
1079
|
"--include-partial-messages",
|
|
1082
1080
|
"--model",
|
|
1083
|
-
this.model
|
|
1084
|
-
"--settings",
|
|
1085
|
-
SANDBOX_SETTINGS
|
|
1081
|
+
this.model
|
|
1086
1082
|
];
|
|
1087
1083
|
const env = getAugmentedEnv({
|
|
1088
1084
|
FORCE_COLOR: "1",
|
|
@@ -1184,23 +1180,13 @@ ${c.primary("[Claude]")} ${c.bold(`Running ${content_block.name}...`)}
|
|
|
1184
1180
|
return new Error(message);
|
|
1185
1181
|
}
|
|
1186
1182
|
}
|
|
1187
|
-
var import_node_child_process, import_node_path3,
|
|
1183
|
+
var import_node_child_process, import_node_path3, DEFAULT_TIMEOUT_MS;
|
|
1188
1184
|
var init_claude_runner = __esm(() => {
|
|
1189
1185
|
init_config();
|
|
1190
1186
|
init_colors();
|
|
1191
1187
|
init_resolve_bin();
|
|
1192
1188
|
import_node_child_process = require("node:child_process");
|
|
1193
1189
|
import_node_path3 = require("node:path");
|
|
1194
|
-
SANDBOX_SETTINGS = JSON.stringify({
|
|
1195
|
-
permissions: {
|
|
1196
|
-
deny: ["Read(../**)", "Edit(../**)"]
|
|
1197
|
-
},
|
|
1198
|
-
sandbox: {
|
|
1199
|
-
enabled: true,
|
|
1200
|
-
autoAllow: true,
|
|
1201
|
-
allowUnsandboxedCommands: false
|
|
1202
|
-
}
|
|
1203
|
-
});
|
|
1204
1190
|
DEFAULT_TIMEOUT_MS = 60 * 60 * 1000;
|
|
1205
1191
|
});
|
|
1206
1192
|
|
|
@@ -1694,14 +1680,10 @@ ${line}`;
|
|
|
1694
1680
|
}
|
|
1695
1681
|
getFullContext() {
|
|
1696
1682
|
const context = this.readContext();
|
|
1697
|
-
const progress = this.readProgress();
|
|
1698
1683
|
const parts = [];
|
|
1699
1684
|
if (context.trim()) {
|
|
1700
1685
|
parts.push(context.trim());
|
|
1701
1686
|
}
|
|
1702
|
-
if (progress.trim()) {
|
|
1703
|
-
parts.push(progress.trim());
|
|
1704
|
-
}
|
|
1705
1687
|
return parts.join(`
|
|
1706
1688
|
|
|
1707
1689
|
---
|
|
@@ -2093,13 +2075,6 @@ ${serverContext.context}
|
|
|
2093
2075
|
prompt += `If you need more information about the project strategies, plans, or architecture, please read files in these directories.
|
|
2094
2076
|
|
|
2095
2077
|
`;
|
|
2096
|
-
const indexPath = getLocusPath(this.projectPath, "indexFile");
|
|
2097
|
-
if (import_node_fs4.existsSync(indexPath)) {
|
|
2098
|
-
prompt += `## Codebase Overview
|
|
2099
|
-
There is an index file in the .locus/codebase-index.json and if you need you can check it.
|
|
2100
|
-
|
|
2101
|
-
`;
|
|
2102
|
-
}
|
|
2103
2078
|
if (task.docs && task.docs.length > 0) {
|
|
2104
2079
|
prompt += `## Attached Documents (Summarized)
|
|
2105
2080
|
`;
|
|
@@ -2129,19 +2104,17 @@ ${preview}${isTruncated ? `
|
|
|
2129
2104
|
`;
|
|
2130
2105
|
}
|
|
2131
2106
|
if (task.comments && task.comments.length > 0) {
|
|
2132
|
-
const
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
prompt += `Review the following comments for context or rejection feedback:
|
|
2136
|
-
|
|
2107
|
+
const filteredComments = task.comments.filter((comment) => comment.author !== "system");
|
|
2108
|
+
const comments = filteredComments.slice(0, 3);
|
|
2109
|
+
prompt += `## Task Comments & Feedback
|
|
2137
2110
|
`;
|
|
2138
2111
|
for (const comment of comments) {
|
|
2139
2112
|
const date = new Date(comment.createdAt).toLocaleString();
|
|
2140
|
-
prompt +=
|
|
2141
|
-
${comment.text}
|
|
2142
|
-
|
|
2113
|
+
prompt += `- ${comment.author} (${date}): ${comment.text}
|
|
2143
2114
|
`;
|
|
2144
2115
|
}
|
|
2116
|
+
prompt += `
|
|
2117
|
+
`;
|
|
2145
2118
|
}
|
|
2146
2119
|
prompt += `## Instructions
|
|
2147
2120
|
1. Complete this task.
|
|
@@ -2206,13 +2179,6 @@ ${fallback}
|
|
|
2206
2179
|
prompt += `If you need more information about the project strategies, plans, or architecture, please read files in these directories.
|
|
2207
2180
|
|
|
2208
2181
|
`;
|
|
2209
|
-
const indexPath = getLocusPath(this.projectPath, "indexFile");
|
|
2210
|
-
if (import_node_fs4.existsSync(indexPath)) {
|
|
2211
|
-
prompt += `## Codebase Overview
|
|
2212
|
-
There is an index file in the .locus/codebase-index.json and if you need you can check it.
|
|
2213
|
-
|
|
2214
|
-
`;
|
|
2215
|
-
}
|
|
2216
2182
|
prompt += `## Instructions
|
|
2217
2183
|
1. Execute the prompt based on the provided project context.
|
|
2218
2184
|
2. **Paths**: Use relative paths from the project root at all times. Do NOT use absolute local paths (e.g., /Users/...).
|
|
@@ -2596,7 +2562,7 @@ class AgentWorker {
|
|
|
2596
2562
|
assignedTo: null
|
|
2597
2563
|
});
|
|
2598
2564
|
await this.client.tasks.addComment(task.id, this.config.workspaceId, {
|
|
2599
|
-
author:
|
|
2565
|
+
author: "system",
|
|
2600
2566
|
text: `⚠️ Agent execution finished with no file changes, so no commit was created.
|
|
2601
2567
|
|
|
2602
2568
|
${result.summary}`
|
|
@@ -2611,7 +2577,7 @@ ${result.summary}`
|
|
|
2611
2577
|
|
|
2612
2578
|
Branch: \`${result.branch}\`` : "";
|
|
2613
2579
|
await this.client.tasks.addComment(task.id, this.config.workspaceId, {
|
|
2614
|
-
author:
|
|
2580
|
+
author: "system",
|
|
2615
2581
|
text: `✅ ${result.summary}${branchInfo}`
|
|
2616
2582
|
});
|
|
2617
2583
|
this.tasksCompleted++;
|
|
@@ -2626,7 +2592,7 @@ Branch: \`${result.branch}\`` : "";
|
|
|
2626
2592
|
assignedTo: null
|
|
2627
2593
|
});
|
|
2628
2594
|
await this.client.tasks.addComment(task.id, this.config.workspaceId, {
|
|
2629
|
-
author:
|
|
2595
|
+
author: "system",
|
|
2630
2596
|
text: `❌ ${result.summary}`
|
|
2631
2597
|
});
|
|
2632
2598
|
}
|
|
@@ -2963,9 +2929,6 @@ function extractJsonFromLLMOutput(raw) {
|
|
|
2963
2929
|
if (codeBlockMatch) {
|
|
2964
2930
|
return codeBlockMatch[1]?.trim() || "";
|
|
2965
2931
|
}
|
|
2966
|
-
if (trimmed.startsWith("{")) {
|
|
2967
|
-
return trimmed;
|
|
2968
|
-
}
|
|
2969
2932
|
const startIdx = trimmed.indexOf("{");
|
|
2970
2933
|
if (startIdx === -1) {
|
|
2971
2934
|
return trimmed;
|
|
@@ -2979,19 +2942,19 @@ function extractJsonFromLLMOutput(raw) {
|
|
|
2979
2942
|
escaped = false;
|
|
2980
2943
|
continue;
|
|
2981
2944
|
}
|
|
2982
|
-
if (
|
|
2983
|
-
|
|
2945
|
+
if (inString) {
|
|
2946
|
+
if (ch === "\\") {
|
|
2947
|
+
escaped = true;
|
|
2948
|
+
} else if (ch === '"') {
|
|
2949
|
+
inString = false;
|
|
2950
|
+
}
|
|
2984
2951
|
continue;
|
|
2985
2952
|
}
|
|
2986
2953
|
if (ch === '"') {
|
|
2987
|
-
inString =
|
|
2988
|
-
|
|
2989
|
-
}
|
|
2990
|
-
if (inString)
|
|
2991
|
-
continue;
|
|
2992
|
-
if (ch === "{")
|
|
2954
|
+
inString = true;
|
|
2955
|
+
} else if (ch === "{") {
|
|
2993
2956
|
depth++;
|
|
2994
|
-
else if (ch === "}") {
|
|
2957
|
+
} else if (ch === "}") {
|
|
2995
2958
|
depth--;
|
|
2996
2959
|
if (depth === 0) {
|
|
2997
2960
|
return trimmed.slice(startIdx, i + 1);
|
|
@@ -4842,7 +4805,14 @@ function plannedTasksToCreatePayloads(plan, sprintId) {
|
|
|
4842
4805
|
}
|
|
4843
4806
|
function parseSprintPlanFromAI(raw, directive) {
|
|
4844
4807
|
const jsonStr = extractJsonFromLLMOutput(raw);
|
|
4845
|
-
let parsed
|
|
4808
|
+
let parsed;
|
|
4809
|
+
try {
|
|
4810
|
+
parsed = JSON.parse(jsonStr);
|
|
4811
|
+
} catch (err) {
|
|
4812
|
+
const preview = jsonStr.slice(0, 200);
|
|
4813
|
+
throw new Error(`Failed to parse sprint plan JSON: ${err instanceof Error ? err.message : String(err)}
|
|
4814
|
+
Extracted JSON preview: ${preview}`);
|
|
4815
|
+
}
|
|
4846
4816
|
if (parsed.revisedPlan) {
|
|
4847
4817
|
parsed = parsed.revisedPlan;
|
|
4848
4818
|
}
|
|
@@ -5013,9 +4983,7 @@ class PlanManager {
|
|
|
5013
4983
|
}
|
|
5014
4984
|
}
|
|
5015
4985
|
// src/planning/planning-meeting.ts
|
|
5016
|
-
init_config();
|
|
5017
4986
|
init_knowledge_base();
|
|
5018
|
-
var import_node_fs10 = require("node:fs");
|
|
5019
4987
|
|
|
5020
4988
|
// src/planning/agents/cross-task-reviewer.ts
|
|
5021
4989
|
function buildCrossTaskReviewerPrompt(input) {
|
|
@@ -5152,9 +5120,6 @@ IMPORTANT: Incorporate this feedback into your plan. The CEO has reviewed a prev
|
|
|
5152
5120
|
## Project Context
|
|
5153
5121
|
${input.projectContext || "No project context available."}
|
|
5154
5122
|
|
|
5155
|
-
## Codebase Structure
|
|
5156
|
-
${input.codebaseIndex || "No codebase index available."}
|
|
5157
|
-
|
|
5158
5123
|
## Your Task
|
|
5159
5124
|
|
|
5160
5125
|
Analyze the directive and produce a **complete sprint plan** with the following:
|
|
@@ -5250,14 +5215,13 @@ class PlanningMeeting {
|
|
|
5250
5215
|
}
|
|
5251
5216
|
async run(directive, feedback) {
|
|
5252
5217
|
const projectContext = this.getProjectContext();
|
|
5253
|
-
const codebaseIndex = this.getCodebaseIndex();
|
|
5254
5218
|
this.log("Phase 1/2: Planner building sprint plan...", "info");
|
|
5255
5219
|
const plannerPrompt = buildPlannerPrompt({
|
|
5256
5220
|
directive,
|
|
5257
5221
|
projectContext,
|
|
5258
|
-
codebaseIndex,
|
|
5259
5222
|
feedback
|
|
5260
5223
|
});
|
|
5224
|
+
console.log(plannerPrompt);
|
|
5261
5225
|
const plannerOutput = await this.aiRunner.run(plannerPrompt);
|
|
5262
5226
|
this.log("Planner phase complete.", "success");
|
|
5263
5227
|
this.log("Phase 2/2: Reviewer checking for conflicts and quality...", "info");
|
|
@@ -5285,31 +5249,6 @@ class PlanningMeeting {
|
|
|
5285
5249
|
const kb = new KnowledgeBase(this.projectPath);
|
|
5286
5250
|
return kb.getFullContext();
|
|
5287
5251
|
}
|
|
5288
|
-
getCodebaseIndex() {
|
|
5289
|
-
const indexPath = getLocusPath(this.projectPath, "indexFile");
|
|
5290
|
-
if (!import_node_fs10.existsSync(indexPath)) {
|
|
5291
|
-
return "";
|
|
5292
|
-
}
|
|
5293
|
-
try {
|
|
5294
|
-
const raw = import_node_fs10.readFileSync(indexPath, "utf-8");
|
|
5295
|
-
const index = JSON.parse(raw);
|
|
5296
|
-
const parts = [];
|
|
5297
|
-
if (index.responsibilities) {
|
|
5298
|
-
parts.push("### File Responsibilities");
|
|
5299
|
-
const entries = Object.entries(index.responsibilities);
|
|
5300
|
-
for (const [file, summary] of entries.slice(0, 50)) {
|
|
5301
|
-
parts.push(`- \`${file}\`: ${summary}`);
|
|
5302
|
-
}
|
|
5303
|
-
if (entries.length > 50) {
|
|
5304
|
-
parts.push(`... and ${entries.length - 50} more files`);
|
|
5305
|
-
}
|
|
5306
|
-
}
|
|
5307
|
-
return parts.join(`
|
|
5308
|
-
`);
|
|
5309
|
-
} catch {
|
|
5310
|
-
return "";
|
|
5311
|
-
}
|
|
5312
|
-
}
|
|
5313
5252
|
}
|
|
5314
5253
|
// src/index-node.ts
|
|
5315
5254
|
init_knowledge_base();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../../src/planning/agents/planner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,
|
|
1
|
+
{"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../../src/planning/agents/planner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAsG9D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planning-meeting.d.ts","sourceRoot":"","sources":["../../src/planning/planning-meeting.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"planning-meeting.d.ts","sourceRoot":"","sources":["../../src/planning/planning-meeting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIhD,OAAO,EAAyB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE1E,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,CAAC,EAAE,CACJ,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,KAC1C,IAAI,CAAC;CACX;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,UAAU,CAAC;IACjB,6DAA6D;IAC7D,YAAY,EAAE;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,GAAG,CAGD;gBAEE,MAAM,EAAE,qBAAqB;IAMzC;;OAEG;IACG,GAAG,CACP,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,qBAAqB,CAAC;IA4CjC,OAAO,CAAC,iBAAiB;CAI1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sprint-plan.d.ts","sourceRoot":"","sources":["../../src/planning/sprint-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,YAAY,EAElB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,YAAY,CAAC;IACvB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAiE7D;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,GACf,UAAU,EAAE,CAgBd;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAChB,UAAU,
|
|
1
|
+
{"version":3,"file":"sprint-plan.d.ts","sourceRoot":"","sources":["../../src/planning/sprint-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,YAAY,EAElB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,YAAY,CAAC;IACvB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAiE7D;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,GACf,UAAU,EAAE,CAgBd;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAChB,UAAU,CAkDZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-base.d.ts","sourceRoot":"","sources":["../../src/project/knowledge-base.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;gBAEjB,WAAW,EAAE,MAAM;IAK/B,WAAW,IAAI,MAAM;IAOrB,YAAY,IAAI,MAAM;IAOtB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKpC,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAa1C,cAAc,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"knowledge-base.d.ts","sourceRoot":"","sources":["../../src/project/knowledge-base.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;gBAEjB,WAAW,EAAE,MAAM;IAK/B,WAAW,IAAI,MAAM;IAOrB,YAAY,IAAI,MAAM;IAOtB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKpC,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAa1C,cAAc,IAAI,MAAM;IAYxB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IA+BnC,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,OAAO,CAAC,SAAS;CAMlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-extractor.d.ts","sourceRoot":"","sources":["../../src/utils/json-extractor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"json-extractor.d.ts","sourceRoot":"","sources":["../../src/utils/json-extractor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAmD5D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@locusai/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./src/index.ts",
|
|
6
6
|
"types": "./src/index.ts",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"clean": "rm -rf node_modules"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@locusai/shared": "^0.
|
|
33
|
+
"@locusai/shared": "^0.12.0",
|
|
34
34
|
"axios": "^1.13.2",
|
|
35
35
|
"events": "^3.3.0",
|
|
36
36
|
"globby": "^14.0.2"
|