@locusai/sdk 0.11.6 → 0.11.8

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.
@@ -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, SANDBOX_SETTINGS, DEFAULT_TIMEOUT_MS;
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
 
@@ -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;AA8C5C,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;IAqL5E;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,kBAAkB;IAwE1B,OAAO,CAAC,UAAU;IA0FlB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,oBAAoB;CAO7B"}
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"}
@@ -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, SANDBOX_SETTINGS, DEFAULT_TIMEOUT_MS;
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
 
@@ -2963,9 +2949,6 @@ function extractJsonFromLLMOutput(raw) {
2963
2949
  if (codeBlockMatch) {
2964
2950
  return codeBlockMatch[1]?.trim() || "";
2965
2951
  }
2966
- if (trimmed.startsWith("{")) {
2967
- return trimmed;
2968
- }
2969
2952
  const startIdx = trimmed.indexOf("{");
2970
2953
  if (startIdx === -1) {
2971
2954
  return trimmed;
@@ -2979,19 +2962,19 @@ function extractJsonFromLLMOutput(raw) {
2979
2962
  escaped = false;
2980
2963
  continue;
2981
2964
  }
2982
- if (ch === "\\") {
2983
- escaped = true;
2965
+ if (inString) {
2966
+ if (ch === "\\") {
2967
+ escaped = true;
2968
+ } else if (ch === '"') {
2969
+ inString = false;
2970
+ }
2984
2971
  continue;
2985
2972
  }
2986
2973
  if (ch === '"') {
2987
- inString = !inString;
2988
- continue;
2989
- }
2990
- if (inString)
2991
- continue;
2992
- if (ch === "{")
2974
+ inString = true;
2975
+ } else if (ch === "{") {
2993
2976
  depth++;
2994
- else if (ch === "}") {
2977
+ } else if (ch === "}") {
2995
2978
  depth--;
2996
2979
  if (depth === 0) {
2997
2980
  return trimmed.slice(startIdx, i + 1);
@@ -4842,7 +4825,14 @@ function plannedTasksToCreatePayloads(plan, sprintId) {
4842
4825
  }
4843
4826
  function parseSprintPlanFromAI(raw, directive) {
4844
4827
  const jsonStr = extractJsonFromLLMOutput(raw);
4845
- let parsed = JSON.parse(jsonStr);
4828
+ let parsed;
4829
+ try {
4830
+ parsed = JSON.parse(jsonStr);
4831
+ } catch (err) {
4832
+ const preview = jsonStr.slice(0, 200);
4833
+ throw new Error(`Failed to parse sprint plan JSON: ${err instanceof Error ? err.message : String(err)}
4834
+ Extracted JSON preview: ${preview}`);
4835
+ }
4846
4836
  if (parsed.revisedPlan) {
4847
4837
  parsed = parsed.revisedPlan;
4848
4838
  }
@@ -5017,78 +5007,6 @@ init_config();
5017
5007
  init_knowledge_base();
5018
5008
  var import_node_fs10 = require("node:fs");
5019
5009
 
5020
- // src/planning/agents/architect.ts
5021
- function buildArchitectPrompt(input) {
5022
- let prompt = `# Role: Software Architect
5023
-
5024
- You are a Software Architect participating in an async sprint planning meeting. The Tech Lead has produced an initial task breakdown. Your job is to refine it.
5025
-
5026
- ## CEO Directive
5027
- > ${input.directive}
5028
- `;
5029
- if (input.feedback) {
5030
- prompt += `
5031
- ## CEO Feedback on Previous Plan
5032
- > ${input.feedback}
5033
-
5034
- IMPORTANT: Ensure the refined plan addresses this feedback.
5035
- `;
5036
- }
5037
- prompt += `
5038
- ## Project Context
5039
- ${input.projectContext || "No project context available."}
5040
-
5041
- ## Tech Lead's Task Breakdown
5042
- ${input.techLeadOutput}
5043
-
5044
- ## Your Task
5045
-
5046
- Review and refine the Tech Lead's breakdown:
5047
-
5048
- 1. **Ordering** — Order tasks so that foundational work comes first. Tasks that produce outputs consumed by later tasks must appear earlier in the list. Foundation tasks (schemas, config, shared code) must be listed before tasks that build on them. The array index IS the execution order.
5049
- 2. **Risk Assessment** — Flag tasks that are risky, underestimated, or have unknowns.
5050
- 3. **Task Merging** — If two tasks are trivially small and related, merge them.
5051
- 4. **Complexity Scoring** — Rate each task 1-5 (1=trivial, 5=very complex).
5052
- 5. **Missing Tasks** — Add any tasks the Tech Lead missed (database migrations, configuration, testing, etc.).
5053
- 6. **Description Quality** — Review and improve each task description to be a clear, actionable implementation guide. Each description must tell the executing agent exactly what to do, where to do it (specific files/modules), how to do it (patterns, utilities, data flow), and what is NOT in scope. Vague descriptions like "Add authentication" must be rewritten with specific file paths, implementation approach, and boundaries.
5054
-
5055
- ## CRITICAL: Task Ordering & Dependencies
5056
-
5057
- Tasks are executed SEQUENTIALLY by a single agent on ONE branch. The agent works through tasks in array order. Each completed task's changes are available to subsequent tasks. You MUST enforce these rules:
5058
-
5059
- 1. **Order tasks by dependency.** Foundation tasks (schemas, config, shared code) must come first. Tasks that build on earlier work must appear later in the list.
5060
- 2. **Each task must be self-contained for its scope.** A task can depend on earlier tasks (they run sequentially), but must include all changes needed for its own goal.
5061
- 3. **Split tasks at logical boundaries.** Since tasks run sequentially on the same branch, splitting is safe — later tasks see earlier changes. Split when it improves clarity and reviewability.
5062
- 4. **Flag risks.** In your risk assessment, call out tasks that are complex or have unknowns.
5063
-
5064
- ## Output Format
5065
-
5066
- Your entire response must be a single JSON object — no text before it, no text after it, no markdown code blocks, no explanation. Start your response with the "{" character:
5067
-
5068
- {
5069
- "tasks": [
5070
- {
5071
- "title": "string",
5072
- "description": "string (detailed implementation guide: what to do, where to do it, how to do it, and boundaries)",
5073
- "assigneeRole": "BACKEND | FRONTEND | QA | PM | DESIGN",
5074
- "priority": "HIGH | MEDIUM | LOW | CRITICAL",
5075
- "labels": ["string"],
5076
- "acceptanceCriteria": ["string"],
5077
- "complexity": 3
5078
- }
5079
- ],
5080
- "risks": [
5081
- {
5082
- "description": "string",
5083
- "mitigation": "string",
5084
- "severity": "low | medium | high"
5085
- }
5086
- ],
5087
- "architectureNotes": "string (notes for the Sprint Organizer about parallelism opportunities and constraints)"
5088
- }`;
5089
- return prompt;
5090
- }
5091
-
5092
5010
  // src/planning/agents/cross-task-reviewer.ts
5093
5011
  function buildCrossTaskReviewerPrompt(input) {
5094
5012
  let prompt = `# Role: Cross-Task Reviewer (Architect + Engineer + Planner)
@@ -5124,7 +5042,7 @@ IMPORTANT: Ensure the reviewed plan still addresses this feedback.
5124
5042
  ${input.projectContext || "No project context available."}
5125
5043
 
5126
5044
  ## Sprint Plan to Review
5127
- ${input.sprintOrganizerOutput}
5045
+ ${input.plannerOutput}
5128
5046
 
5129
5047
  ## Your Review Checklist
5130
5048
 
@@ -5203,11 +5121,11 @@ IMPORTANT:
5203
5121
  return prompt;
5204
5122
  }
5205
5123
 
5206
- // src/planning/agents/sprint-organizer.ts
5207
- function buildSprintOrganizerPrompt(input) {
5208
- let prompt = `# Role: Sprint Organizer
5124
+ // src/planning/agents/planner.ts
5125
+ function buildPlannerPrompt(input) {
5126
+ let prompt = `# Role: Sprint Planner
5209
5127
 
5210
- You are a Sprint Organizer finalizing the sprint plan from a planning meeting. The Architect has refined the task breakdown. Your job is to produce the final sprint plan document.
5128
+ You are a Sprint Planner an expert engineer, architect, and project organizer rolled into one. Your job is to take a CEO directive and produce a complete, ready-to-execute sprint plan in a single pass.
5211
5129
 
5212
5130
  ## CEO Directive
5213
5131
  > ${input.directive}
@@ -5217,40 +5135,64 @@ You are a Sprint Organizer finalizing the sprint plan from a planning meeting. T
5217
5135
  ## CEO Feedback on Previous Plan
5218
5136
  > ${input.feedback}
5219
5137
 
5220
- IMPORTANT: The final plan must address this feedback.
5138
+ IMPORTANT: Incorporate this feedback into your plan. The CEO has reviewed a previous plan and wants changes.
5221
5139
  `;
5222
5140
  }
5223
5141
  prompt += `
5224
- ## Architect's Refined Task Breakdown
5225
- ${input.architectOutput}
5142
+ ## Project Context
5143
+ ${input.projectContext || "No project context available."}
5144
+
5145
+ ## Codebase Structure
5146
+ ${input.codebaseIndex || "No codebase index available."}
5226
5147
 
5227
5148
  ## Your Task
5228
5149
 
5229
- Produce the final sprint plan:
5150
+ Analyze the directive and produce a **complete sprint plan** with the following:
5230
5151
 
5231
- 1. **Sprint Name** — A concise, memorable name for this sprint (e.g., "User Authentication", "Payment Integration")
5152
+ 1. **Sprint Name** — A concise, memorable name (2-4 words)
5232
5153
  2. **Sprint Goal** — One paragraph describing what this sprint delivers
5233
- 3. **Task Ordering** — Final ordering so that foundational work comes first. The position in the array IS the execution order — task at index 0 runs first, index 1 runs second, etc. Tasks are executed SEQUENTIALLY by a single agent on one branch.
5234
- 4. **Duration Estimate** — How many days this sprint will take with a single agent working sequentially
5235
- 5. **Final Task List** — Each task with all fields filled in, ordered by execution priority
5236
- 6. **Description Quality Check** — Ensure every task description is a clear, actionable implementation guide. Each description must specify: what to do, where to do it (specific files/modules/directories), how to do it (implementation approach, patterns to follow, existing utilities to use), and what is NOT in scope. If any description is vague or generic, rewrite it with specifics. Remember: an independent agent will receive ONLY the task title, description, and acceptance criteria — the description is its primary instruction.
5237
-
5238
- Guidelines:
5239
- - The order of tasks in the array determines execution order. Tasks are dispatched sequentially from first to last.
5240
- - Foundation tasks (schemas, config, shared code) must appear before tasks that build on them
5241
- - Since tasks execute sequentially on one branch, later tasks can depend on earlier tasks' outputs
5242
- - Ensure acceptance criteria are specific and testable
5243
- - Keep the sprint focused — if it's too large (>12 tasks), consider reducing scope
5244
- - Ensure every task description reads as a standalone implementation brief — not a summary
5154
+ 3. **Duration Estimate** — How many days this sprint will take with a single agent working sequentially
5155
+ 4. **Task Breakdown** — An ordered list of tasks that fully implement the directive
5156
+ 5. **Risk Assessment** — Potential risks with mitigations
5245
5157
 
5246
- ## CRITICAL: Task Ordering Validation
5158
+ ### Task Requirements
5247
5159
 
5248
- Before finalizing, validate that tasks are in the correct execution order:
5160
+ For each task, provide:
5161
+ - **Title** — Clear, action-oriented (e.g., "Implement user registration API endpoint")
5162
+ - **Description** — A detailed, actionable implementation guide (see below)
5163
+ - **Assignee Role** — BACKEND, FRONTEND, QA, PM, or DESIGN
5164
+ - **Priority** — CRITICAL, HIGH, MEDIUM, or LOW
5165
+ - **Complexity** — 1 (trivial) to 5 (very complex)
5166
+ - **Labels** — Relevant tags (e.g., "api", "database", "ui", "auth")
5167
+ - **Acceptance Criteria** — Specific, testable conditions for completion
5249
5168
 
5250
- 1. **No forward dependencies.** A task must NOT depend on a task that appears later in the list.
5251
- 2. **Foundation first.** Config, schemas, and shared code must come before implementation tasks.
5252
- 3. **Each task is independently executable given prior tasks.** An agent working on task N must be able to complete it assuming tasks 1 through N-1 are already done.
5253
- 4. **Prefer focused, well-scoped tasks.** Each task should do one logical unit of work.
5169
+ ### CRITICAL: Task Description Requirements
5170
+
5171
+ Each task description will be handed to an INDEPENDENT agent as its primary instruction. The agent will have access to the codebase but NO context about the planning meeting. Each description MUST include:
5172
+
5173
+ 1. **What to do** — Clearly state the goal and expected behavior/outcome
5174
+ 2. **Where to do it** — List specific files, modules, or directories to modify or create. Reference existing code paths when extending functionality
5175
+ 3. **How to do it** — Key implementation details: which patterns to follow, which existing utilities or services to use, what the data flow looks like
5176
+ 4. **Boundaries** — What is NOT in scope for this task to prevent overlap with other tasks
5177
+
5178
+ Bad example: "Add authentication to the API."
5179
+ Good example: "Implement JWT-based authentication middleware in src/middleware/auth.ts. Create a verifyToken middleware that extracts the Bearer token from the Authorization header, validates it using the existing JWT_SECRET from env config, and attaches the decoded user payload to req.user. Apply this middleware to all routes in src/routes/protected/. This task does NOT include user registration or password reset — those are handled separately."
5180
+
5181
+ ### CRITICAL: Task Ordering Rules
5182
+
5183
+ Tasks are executed SEQUENTIALLY by a single agent on ONE branch. The agent works through tasks in array order. Therefore:
5184
+
5185
+ 1. **Foundation first.** Place foundational tasks (schemas, config, shared code) at the beginning. Later tasks can build on earlier ones since they run in sequence.
5186
+ 2. **No forward dependencies.** A task must NOT depend on a task that appears later in the list.
5187
+ 3. **Each task is self-contained for its scope.** A task can depend on earlier tasks but must include all changes needed for its own goal.
5188
+ 4. **Keep tasks focused.** Each task should do one logical unit of work. Avoid trivially small or overly large tasks.
5189
+ 5. **Merge related trivial work.** If two pieces of work are trivially small and tightly related, combine them into one task.
5190
+
5191
+ ### Sprint Scope Guidelines
5192
+
5193
+ - If the sprint would exceed 12 tasks, reduce scope or merge related tasks
5194
+ - Ensure acceptance criteria are specific and testable
5195
+ - Keep the sprint focused on the directive — avoid scope creep
5254
5196
 
5255
5197
  ## Output Format
5256
5198
 
@@ -5263,7 +5205,7 @@ Your entire response must be a single JSON object — no text before it, no text
5263
5205
  "tasks": [
5264
5206
  {
5265
5207
  "title": "string",
5266
- "description": "string (detailed implementation guide: what to do, where to do it, how to do it, and boundaries)",
5208
+ "description": "string (detailed implementation guide: what, where, how, boundaries)",
5267
5209
  "assigneeRole": "BACKEND | FRONTEND | QA | PM | DESIGN",
5268
5210
  "priority": "CRITICAL | HIGH | MEDIUM | LOW",
5269
5211
  "labels": ["string"],
@@ -5284,89 +5226,6 @@ IMPORTANT: Tasks are executed sequentially by a single agent. The array order IS
5284
5226
  return prompt;
5285
5227
  }
5286
5228
 
5287
- // src/planning/agents/tech-lead.ts
5288
- function buildTechLeadPrompt(input) {
5289
- let prompt = `# Role: Senior Tech Lead
5290
-
5291
- You are a Senior Tech Lead participating in an async sprint planning meeting. Your job is to take the CEO's directive and produce an initial task breakdown.
5292
-
5293
- ## CEO Directive
5294
- > ${input.directive}
5295
- `;
5296
- if (input.feedback) {
5297
- prompt += `
5298
- ## CEO Feedback on Previous Plan
5299
- > ${input.feedback}
5300
-
5301
- IMPORTANT: Incorporate this feedback into your task breakdown. The CEO has reviewed a previous plan and wants changes.
5302
- `;
5303
- }
5304
- prompt += `
5305
- ## Project Context
5306
- ${input.projectContext || "No project context available."}
5307
-
5308
- ## Codebase Structure
5309
- ${input.codebaseIndex || "No codebase index available."}
5310
-
5311
- ## Your Task
5312
-
5313
- Analyze the CEO's directive and produce a detailed task breakdown. For each task:
5314
-
5315
- 1. **Title** — Clear, action-oriented (e.g., "Implement user registration API endpoint")
5316
- 2. **Description** — A detailed, actionable implementation guide (see description requirements below)
5317
- 3. **Assignee Role** — Who should work on this: BACKEND, FRONTEND, QA, PM, or DESIGN
5318
- 4. **Priority** — HIGH, MEDIUM, or LOW based on business impact
5319
- 5. **Labels** — Relevant tags (e.g., "api", "database", "ui", "auth")
5320
- 6. **Acceptance Criteria** — Specific, testable conditions for completion
5321
-
5322
- Think about:
5323
- - What existing code can be reused or extended
5324
- - Which tasks are independent vs. dependent
5325
- - What the right granularity is (not too big, not too small)
5326
- - What risks or unknowns exist
5327
-
5328
- ## CRITICAL: Task Description Requirements
5329
-
5330
- Each task description will be handed to an INDEPENDENT agent as its primary instruction. The agent will have access to the codebase but NO context about the planning meeting. Descriptions must be clear enough for the agent to execute the task without ambiguity.
5331
-
5332
- Each description MUST include:
5333
- 1. **What to do** — Clearly state the goal and what needs to be implemented, changed, or created. Be specific about the expected behavior or outcome.
5334
- 2. **Where to do it** — List the specific files, modules, or directories that need to be modified or created. Reference existing code paths when extending functionality.
5335
- 3. **How to do it** — Provide key implementation details: which patterns to follow, which existing utilities or services to use, what the data flow looks like.
5336
- 4. **Boundaries** — Clarify what is NOT in scope for this task to prevent overlap with other tasks.
5337
-
5338
- Bad example: "Add authentication to the API."
5339
- Good example: "Implement JWT-based authentication middleware in src/middleware/auth.ts. Create a verifyToken middleware that extracts the Bearer token from the Authorization header, validates it using the existing JWT_SECRET from env config, and attaches the decoded user payload to req.user. Apply this middleware to all routes in src/routes/protected/. Add a POST /auth/login endpoint in src/routes/auth.ts that accepts {email, password}, validates credentials against the users table, and returns a signed JWT. This task does NOT include user registration or password reset — those are handled separately."
5340
-
5341
- ## CRITICAL: Task Ordering Rules
5342
-
5343
- Tasks are executed SEQUENTIALLY by a single agent on ONE branch. The agent works through tasks in the order they appear in the array. Therefore:
5344
-
5345
- 1. **Foundation first.** Place foundational tasks (schemas, config, shared code) at the beginning of the list. Later tasks can build on earlier ones since they run in sequence on the same branch.
5346
- 2. **Each task must be self-contained.** A task must include ALL the code changes it needs to work — from config to implementation to tests. A task CAN depend on earlier tasks in the list since they will have already been completed.
5347
- 3. **Logical ordering matters.** Tasks are dispatched in the order they appear. Ensure dependent tasks come after their prerequisites.
5348
- 4. **Keep tasks focused.** Each task should do one logical unit of work. Since there are no parallel execution conflicts, tasks can be more granular — but avoid tasks that are too small or trivial.
5349
-
5350
- ## Output Format
5351
-
5352
- Your entire response must be a single JSON object — no text before it, no text after it, no markdown code blocks, no explanation. Start your response with the "{" character:
5353
-
5354
- {
5355
- "tasks": [
5356
- {
5357
- "title": "string",
5358
- "description": "string (detailed implementation guide: what to do, where to do it, how to do it, and boundaries — see description requirements above)",
5359
- "assigneeRole": "BACKEND | FRONTEND | QA | PM | DESIGN",
5360
- "priority": "HIGH | MEDIUM | LOW",
5361
- "labels": ["string"],
5362
- "acceptanceCriteria": ["string"]
5363
- }
5364
- ],
5365
- "technicalNotes": "string (brief notes on architecture decisions, risks, or considerations for the Architect phase)"
5366
- }`;
5367
- return prompt;
5368
- }
5369
-
5370
5229
  // src/planning/planning-meeting.ts
5371
5230
  class PlanningMeeting {
5372
5231
  projectPath;
@@ -5382,52 +5241,33 @@ class PlanningMeeting {
5382
5241
  async run(directive, feedback) {
5383
5242
  const projectContext = this.getProjectContext();
5384
5243
  const codebaseIndex = this.getCodebaseIndex();
5385
- this.log("Phase 1/4: Tech Lead analyzing directive...", "info");
5386
- const techLeadPrompt = buildTechLeadPrompt({
5244
+ this.log("Phase 1/2: Planner building sprint plan...", "info");
5245
+ const plannerPrompt = buildPlannerPrompt({
5387
5246
  directive,
5388
5247
  projectContext,
5389
5248
  codebaseIndex,
5390
5249
  feedback
5391
5250
  });
5392
- const techLeadOutput = await this.aiRunner.run(techLeadPrompt);
5393
- this.log("Tech Lead phase complete.", "success");
5394
- this.log("Phase 2/4: Architect refining task breakdown...", "info");
5395
- const architectPrompt = buildArchitectPrompt({
5396
- directive,
5397
- projectContext,
5398
- techLeadOutput,
5399
- feedback
5400
- });
5401
- const architectOutput = await this.aiRunner.run(architectPrompt);
5402
- this.log("Architect phase complete.", "success");
5403
- this.log("Phase 3/4: Sprint Organizer finalizing plan...", "info");
5404
- const sprintOrganizerPrompt = buildSprintOrganizerPrompt({
5405
- directive,
5406
- architectOutput,
5407
- feedback
5408
- });
5409
- const sprintOrganizerOutput = await this.aiRunner.run(sprintOrganizerPrompt);
5410
- this.log("Sprint Organizer phase complete.", "success");
5411
- this.log("Phase 4/4: Cross-Task Review checking for conflicts and overlaps...", "info");
5251
+ const plannerOutput = await this.aiRunner.run(plannerPrompt);
5252
+ this.log("Planner phase complete.", "success");
5253
+ this.log("Phase 2/2: Reviewer checking for conflicts and quality...", "info");
5412
5254
  const crossTaskReviewerPrompt = buildCrossTaskReviewerPrompt({
5413
5255
  directive,
5414
5256
  projectContext,
5415
- sprintOrganizerOutput,
5257
+ plannerOutput,
5416
5258
  feedback
5417
5259
  });
5418
- const crossTaskReviewOutput = await this.aiRunner.run(crossTaskReviewerPrompt);
5419
- this.log("Cross-Task Review phase complete.", "success");
5420
- const plan = parseSprintPlanFromAI(crossTaskReviewOutput, directive);
5260
+ const reviewOutput = await this.aiRunner.run(crossTaskReviewerPrompt);
5261
+ this.log("Review phase complete.", "success");
5262
+ const plan = parseSprintPlanFromAI(reviewOutput, directive);
5421
5263
  if (feedback) {
5422
5264
  plan.feedback = feedback;
5423
5265
  }
5424
5266
  return {
5425
5267
  plan,
5426
5268
  phaseOutputs: {
5427
- techLead: techLeadOutput,
5428
- architect: architectOutput,
5429
- sprintOrganizer: sprintOrganizerOutput,
5430
- crossTaskReview: crossTaskReviewOutput
5269
+ planner: plannerOutput,
5270
+ review: reviewOutput
5431
5271
  }
5432
5272
  };
5433
5273
  }
@@ -1,15 +1 @@
1
- /**
2
- * Architect Agent Persona
3
- *
4
- * Phase 2 of the planning meeting. Reviews the Tech Lead's task
5
- * breakdown and refines it with dependency analysis, risk assessment,
6
- * and task splitting/merging recommendations.
7
- */
8
- export interface ArchitectInput {
9
- directive: string;
10
- projectContext: string;
11
- techLeadOutput: string;
12
- feedback?: string;
13
- }
14
- export declare function buildArchitectPrompt(input: ArchitectInput): string;
15
1
  //# sourceMappingURL=architect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"architect.d.ts","sourceRoot":"","sources":["../../../src/planning/agents/architect.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAwElE"}
1
+ {"version":3,"file":"architect.d.ts","sourceRoot":"","sources":["../../../src/planning/agents/architect.ts"],"names":[],"mappings":""}
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * Cross-Task Reviewer Agent Persona
3
3
  *
4
- * Phase 4 (final) of the planning meeting. Reviews the Sprint Organizer's
5
- * finalized plan for task ordering issues, dependency correctness,
4
+ * Phase 2 (final) of the planning meeting. Reviews the Planner's
5
+ * sprint plan for task ordering issues, dependency correctness,
6
6
  * description quality, and overall plan coherence.
7
7
  */
8
8
  export interface CrossTaskReviewerInput {
9
9
  directive: string;
10
10
  projectContext: string;
11
- sprintOrganizerOutput: string;
11
+ plannerOutput: string;
12
12
  feedback?: string;
13
13
  }
14
14
  export declare function buildCrossTaskReviewerPrompt(input: CrossTaskReviewerInput): string;
@@ -1 +1 @@
1
- {"version":3,"file":"cross-task-reviewer.d.ts","sourceRoot":"","sources":["../../../src/planning/agents/cross-task-reviewer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,sBAAsB,GAC5B,MAAM,CAkHR"}
1
+ {"version":3,"file":"cross-task-reviewer.d.ts","sourceRoot":"","sources":["../../../src/planning/agents/cross-task-reviewer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,sBAAsB,GAC5B,MAAM,CAkHR"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Planner Agent Persona
3
+ *
4
+ * Phase 1 of the simplified planning meeting. Combines the responsibilities
5
+ * of the former Tech Lead, Architect, and Sprint Organizer into a single
6
+ * pass that produces a complete, ordered sprint plan from the CEO directive.
7
+ */
8
+ export interface PlannerInput {
9
+ directive: string;
10
+ projectContext: string;
11
+ codebaseIndex: string;
12
+ feedback?: string;
13
+ }
14
+ export declare function buildPlannerPrompt(input: PlannerInput): string;
15
+ //# sourceMappingURL=planner.d.ts.map
@@ -0,0 +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,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAyG9D"}
@@ -1,14 +1 @@
1
- /**
2
- * Sprint Organizer Agent Persona
3
- *
4
- * Phase 3 of the planning meeting. Takes the Architect's
5
- * refined task list and produces the final sprint plan with
6
- * name, goal, estimated duration, and organized task assignments.
7
- */
8
- export interface SprintOrganizerInput {
9
- directive: string;
10
- architectOutput: string;
11
- feedback?: string;
12
- }
13
- export declare function buildSprintOrganizerPrompt(input: SprintOrganizerInput): string;
14
1
  //# sourceMappingURL=sprint-organizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sprint-organizer.d.ts","sourceRoot":"","sources":["../../../src/planning/agents/sprint-organizer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,oBAAoB,GAC1B,MAAM,CAiFR"}
1
+ {"version":3,"file":"sprint-organizer.d.ts","sourceRoot":"","sources":["../../../src/planning/agents/sprint-organizer.ts"],"names":[],"mappings":""}
@@ -1,15 +1 @@
1
- /**
2
- * Tech Lead Agent Persona
3
- *
4
- * Phase 1 of the planning meeting. Reads the CEO directive,
5
- * project context, and codebase structure to produce an initial
6
- * task breakdown with technical approach for each task.
7
- */
8
- export interface TechLeadInput {
9
- directive: string;
10
- projectContext: string;
11
- codebaseIndex: string;
12
- feedback?: string;
13
- }
14
- export declare function buildTechLeadPrompt(input: TechLeadInput): string;
15
1
  //# sourceMappingURL=tech-lead.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tech-lead.d.ts","sourceRoot":"","sources":["../../../src/planning/agents/tech-lead.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAmFhE"}
1
+ {"version":3,"file":"tech-lead.d.ts","sourceRoot":"","sources":["../../../src/planning/agents/tech-lead.ts"],"names":[],"mappings":""}
@@ -1,6 +1,6 @@
1
1
  import type { AiRunner } from "../ai/runner.js";
2
2
  import { type SprintPlan } from "./sprint-plan.js";
3
- export type PlanningPhase = "tech-lead" | "architect" | "sprint-organizer" | "cross-task-review" | "complete";
3
+ export type PlanningPhase = "planner" | "review" | "complete";
4
4
  export interface PlanningMeetingConfig {
5
5
  projectPath: string;
6
6
  aiRunner: AiRunner;
@@ -10,17 +10,15 @@ export interface PlanningMeetingResult {
10
10
  plan: SprintPlan;
11
11
  /** Raw outputs from each phase for debugging/transparency */
12
12
  phaseOutputs: {
13
- techLead: string;
14
- architect: string;
15
- sprintOrganizer: string;
16
- crossTaskReview: string;
13
+ planner: string;
14
+ review: string;
17
15
  };
18
16
  }
19
17
  /**
20
- * Orchestrates a multi-phase planning meeting where AI agent personas
18
+ * Orchestrates a two-phase planning meeting where AI agent personas
21
19
  * collaborate to produce a sprint plan.
22
20
  *
23
- * Flow: CEO Directive → Tech Lead Architect → Sprint Organizer → Cross-Task Review → Sprint Plan
21
+ * Flow: CEO Directive → Planner → Cross-Task Review → Sprint Plan
24
22
  */
25
23
  export declare class PlanningMeeting {
26
24
  private projectPath;
@@ -1 +1 @@
1
- {"version":3,"file":"planning-meeting.d.ts","sourceRoot":"","sources":["../../src/planning/planning-meeting.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAOhD,OAAO,EAAyB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE1E,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,WAAW,GACX,kBAAkB,GAClB,mBAAmB,GACnB,UAAU,CAAC;AAEf,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,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;KACzB,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;IAyEjC,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,gBAAgB;CA8BzB"}
1
+ {"version":3,"file":"planning-meeting.d.ts","sourceRoot":"","sources":["../../src/planning/planning-meeting.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAKhD,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;IA6CjC,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,gBAAgB;CA8BzB"}
@@ -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,CAmE7D;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,CA0CZ"}
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":"json-extractor.d.ts","sourceRoot":"","sources":["../../src/utils/json-extractor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAuD5D"}
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.11.6",
3
+ "version": "0.11.8",
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.11.6",
33
+ "@locusai/shared": "^0.11.8",
34
34
  "axios": "^1.13.2",
35
35
  "events": "^3.3.0",
36
36
  "globby": "^14.0.2"