sparkecoder 0.1.54 → 0.1.56
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/index.d.ts +2 -2
- package/dist/agent/index.js +50 -22
- package/dist/agent/index.js.map +1 -1
- package/dist/cli.js +50 -22
- package/dist/cli.js.map +1 -1
- package/dist/{index-BYOHniN4.d.ts → index-CqKMYoJv.d.ts} +5 -5
- package/dist/index.d.ts +3 -3
- package/dist/index.js +50 -22
- package/dist/index.js.map +1 -1
- package/dist/{search-DALwmPRX.d.ts → search-CZsTAZ90.d.ts} +6 -6
- package/dist/server/index.js +50 -22
- package/dist/server/index.js.map +1 -1
- package/dist/tools/index.d.ts +2 -2
- package/dist/tools/index.js +36 -21
- package/dist/tools/index.js.map +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/web/.next/build-manifest.json +2 -2
- package/web/.next/standalone/web/.next/prerender-manifest.json +3 -3
- package/web/.next/standalone/web/.next/server/app/(main)/session/[id]/page.js.nft.json +1 -1
- package/web/.next/standalone/web/.next/server/app/(main)/session/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/standalone/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.html +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/installation.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs/installation/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs/installation.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/skills.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs/skills/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs/skills.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/tools.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs/tools/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs/tools.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/embed/[id]/page.js.nft.json +1 -1
- package/web/.next/standalone/web/.next/server/app/embed/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/index.html +1 -1
- package/web/.next/standalone/web/.next/server/app/index.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/!KG1haW4p/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/!KG1haW4p.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_c9e3cd7b._.js → 2374f_05c00b91._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_de035f79._.js → 2374f_1fa4a79a._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_273991ba._.js → 2374f_39f76acc._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_8d018190._.js → 2374f_562d2f4f._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_7b421f78._.js → 2374f_6ced4caf._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_ec997752._.js → 2374f_800db4e3._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_2572135b._.js → 2374f_934cb548._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_5ee28d4c._.js → 2374f_aade2a6d._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_460c0d78._.js → 2374f_ac284eb3._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_a7457131._.js → 2374f_c272cbb4._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_06a5ea48._.js → 2374f_d118a207._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_df3c414e._.js → 2374f_e35df3d7._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_88cbeb7b._.js → 2374f_ef435bac._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{2374f_65b86b54._.js → 2374f_f661d73d._.js} +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/{[root-of-the-server]__a87e1c27._.js → [root-of-the-server]__8cdc7b0b._.js} +2 -2
- package/web/.next/standalone/web/.next/server/chunks/ssr/{[root-of-the-server]__c94aac98._.js → [root-of-the-server]__f44222d9._.js} +2 -2
- package/web/.next/standalone/web/.next/server/chunks/ssr/{web_b85931da._.js → web_0a13adb9._.js} +2 -2
- package/web/.next/standalone/web/.next/server/pages/404.html +1 -1
- package/web/.next/standalone/web/.next/server/pages/500.html +2 -2
- package/web/.next/standalone/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/server-reference-manifest.json +1 -1
- package/web/.next/standalone/web/.next/static/chunks/{9b4c4424a720586b.js → ca717ddd7c8f37e8.js} +2 -2
- package/web/.next/standalone/web/.next/static/static/chunks/{9b4c4424a720586b.js → ca717ddd7c8f37e8.js} +2 -2
- package/web/.next/standalone/web/src/components/ai-elements/search-tool.tsx +7 -9
- package/web/.next/static/chunks/{9b4c4424a720586b.js → ca717ddd7c8f37e8.js} +2 -2
- /package/web/.next/standalone/web/.next/static/{7rKMR1VNC_1_vH6S9H5aS → static/yfBGAcI8gI55lwQllPu-z}/_buildManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/{7rKMR1VNC_1_vH6S9H5aS → static/yfBGAcI8gI55lwQllPu-z}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/standalone/web/.next/static/{7rKMR1VNC_1_vH6S9H5aS → static/yfBGAcI8gI55lwQllPu-z}/_ssgManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/{static/7rKMR1VNC_1_vH6S9H5aS → yfBGAcI8gI55lwQllPu-z}/_buildManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/{static/7rKMR1VNC_1_vH6S9H5aS → yfBGAcI8gI55lwQllPu-z}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/standalone/web/.next/static/{static/7rKMR1VNC_1_vH6S9H5aS → yfBGAcI8gI55lwQllPu-z}/_ssgManifest.js +0 -0
- /package/web/.next/static/{7rKMR1VNC_1_vH6S9H5aS → yfBGAcI8gI55lwQllPu-z}/_buildManifest.js +0 -0
- /package/web/.next/static/{7rKMR1VNC_1_vH6S9H5aS → yfBGAcI8gI55lwQllPu-z}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{7rKMR1VNC_1_vH6S9H5aS → yfBGAcI8gI55lwQllPu-z}/_ssgManifest.js +0 -0
package/dist/agent/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'ai';
|
|
2
2
|
import '../schema-NcQknWCg.js';
|
|
3
|
-
export { A as Agent, a as AgentOptions, b as AgentRunOptions, c as AgentStreamResult, C as ContextManager, M as MessageAttachment, d as buildSystemPrompt } from '../index-
|
|
4
|
-
import '../search-
|
|
3
|
+
export { A as Agent, a as AgentOptions, b as AgentRunOptions, c as AgentStreamResult, C as ContextManager, M as MessageAttachment, d as buildSystemPrompt } from '../index-CqKMYoJv.js';
|
|
4
|
+
import '../search-CZsTAZ90.js';
|
|
5
5
|
import 'zod';
|
package/dist/agent/index.js
CHANGED
|
@@ -3234,41 +3234,60 @@ var SearchSubagent = class extends Subagent {
|
|
|
3234
3234
|
this.maxSteps = 10;
|
|
3235
3235
|
}
|
|
3236
3236
|
getSystemPrompt(options) {
|
|
3237
|
-
|
|
3237
|
+
const contextBlock = options.additionalContext ? `
|
|
3238
|
+
## Active Context (from devtools)
|
|
3239
|
+
${options.additionalContext}
|
|
3238
3240
|
|
|
3239
|
-
|
|
3241
|
+
Use this context to understand what the user is currently looking at. If they reference "this page", "this component", "this screen", etc., this context tells you which page/route they mean. Search for files related to this page/route first.
|
|
3242
|
+
` : "";
|
|
3243
|
+
return `You are an Explore agent - a READ-ONLY file search and code analysis specialist. Your job is to find relevant files, understand code structure, and return clear findings to the main agent. You MUST NOT create, modify, or delete any files.
|
|
3240
3244
|
|
|
3241
|
-
|
|
3242
|
-
|
|
3243
|
-
|
|
3244
|
-
-
|
|
3245
|
-
-
|
|
3246
|
-
-
|
|
3245
|
+
Working Directory: ${options.workingDirectory}
|
|
3246
|
+
${contextBlock}
|
|
3247
|
+
## Available Tools
|
|
3248
|
+
- **semantic_search**: Search the codebase by meaning (finds code related to a concept). Use this FIRST when available - it's the fastest way to explore.
|
|
3249
|
+
- **grep**: Search for exact patterns in files using ripgrep. Best for exact symbol/string matches.
|
|
3250
|
+
- **glob**: Find files matching a name pattern. Best for file discovery.
|
|
3251
|
+
- **read_file**: Read contents of a specific file. Use to examine code found in searches.
|
|
3252
|
+
- **list_dir**: List directory contents. Use to understand project structure.
|
|
3247
3253
|
|
|
3248
|
-
## Strategy
|
|
3254
|
+
## Search Strategy
|
|
3249
3255
|
|
|
3250
3256
|
1. **Start with semantic_search** if available - it finds code by meaning, which is the fastest way to explore
|
|
3251
|
-
2. Use grep for exact
|
|
3252
|
-
3.
|
|
3253
|
-
4.
|
|
3257
|
+
2. **Use grep** for exact symbol/string matches (function names, class names, imports)
|
|
3258
|
+
3. **Use glob** for file discovery by name patterns
|
|
3259
|
+
4. **Read key files** to get actual code content and understand context
|
|
3260
|
+
5. **Run searches in PARALLEL** - make multiple tool calls at once to cover different angles simultaneously. This is critical for speed.
|
|
3261
|
+
|
|
3262
|
+
### Tool Selection Guide
|
|
3263
|
+
- Know the exact name? Use **grep** (e.g. \`getUserById\`, \`class AuthService\`)
|
|
3264
|
+
- Exploring a concept? Use **semantic_search** (e.g. "how does authentication work")
|
|
3265
|
+
- Looking for files? Use **glob** (e.g. \`**/*.config.ts\`, \`**/auth/**\`)
|
|
3266
|
+
- Need file content? Use **read_file** with optional line ranges for large files
|
|
3254
3267
|
|
|
3255
3268
|
## CRITICAL: Your text output IS the result
|
|
3256
3269
|
|
|
3257
|
-
The text you write in your responses is what gets sent back to the main agent as the summary. You MUST include:
|
|
3270
|
+
The text you write in your responses is what gets sent back to the main agent as the summary. The main agent has NO other context about what you found. You MUST include:
|
|
3258
3271
|
- **Exact file paths** (relative to working directory)
|
|
3259
3272
|
- **Line numbers** where relevant code is found
|
|
3260
3273
|
- **Key code snippets** showing the important parts
|
|
3261
|
-
- **How pieces connect together**
|
|
3274
|
+
- **How pieces connect together** - explain relationships between files
|
|
3262
3275
|
- **What you actually found**, not just metadata
|
|
3263
3276
|
|
|
3264
3277
|
ALWAYS end with a comprehensive summary of your findings. This summary IS the data that the main agent receives.
|
|
3265
3278
|
|
|
3279
|
+
## Constraints
|
|
3280
|
+
- You are READ-ONLY. Do NOT attempt to create, write, edit, or delete files.
|
|
3281
|
+
- Be fast. Return results quickly. Don't over-explore when you've found what's needed.
|
|
3282
|
+
- Be thorough but efficient. If you find the answer in 2 searches, stop there.
|
|
3283
|
+
- No emojis in output.
|
|
3284
|
+
|
|
3266
3285
|
## Example good output:
|
|
3267
3286
|
"Found the authentication system in src/auth/:
|
|
3268
3287
|
- \`src/auth/provider.ts\` (lines 15-45): AuthProvider class handles JWT token validation
|
|
3269
3288
|
- \`src/auth/middleware.ts\` (lines 8-20): Express middleware that checks auth headers
|
|
3270
3289
|
- \`src/auth/hooks.ts\`: useAuth() hook used by React components
|
|
3271
|
-
The auth flow: middleware validates JWT
|
|
3290
|
+
The auth flow: middleware validates JWT -> provider decodes token -> user context set"
|
|
3272
3291
|
|
|
3273
3292
|
## Example bad output:
|
|
3274
3293
|
"I searched for auth and found some files." (too vague, no paths, no details)
|
|
@@ -3584,14 +3603,10 @@ The Explore agent will explore the codebase and return a summary of findings.
|
|
|
3584
3603
|
This is more thorough than a simple grep because it can follow references and understand context.
|
|
3585
3604
|
It also has access to semantic search to find code by meaning, not just text.
|
|
3586
3605
|
|
|
3587
|
-
|
|
3588
|
-
- "Find all React components that use the useState hook"
|
|
3589
|
-
- "Where is the authentication logic implemented?"
|
|
3590
|
-
- "Find all API routes and their handlers"
|
|
3591
|
-
- "Search for usages of the UserService class"`,
|
|
3606
|
+
CRITICAL: The explore agent has ZERO context. It cannot see the conversation, the user's message, devtools data, or any prior context. You MUST pass ALL relevant context via the "context" parameter. If the user selected a component (component name, file path, HTML, component stack) or there is a <devtools-context> block, you MUST copy that information into the "context" field verbatim. Without it the explore agent is searching blind.`,
|
|
3592
3607
|
inputSchema: z10.object({
|
|
3593
3608
|
query: z10.string().describe("What to search for. Be specific about what you're looking for."),
|
|
3594
|
-
context: z10.string().
|
|
3609
|
+
context: z10.string().describe("ALL context the explore agent needs. It has ZERO context on its own - no conversation history, no devtools data, nothing. You MUST include: any selected component info (name, file path, HTML, component stack), any <devtools-context> block (page URL, path, viewport), and any other relevant details from the user message. The explore agent literally only sees the query and this context field.")
|
|
3595
3610
|
}),
|
|
3596
3611
|
execute: async ({ query, context }, toolOptions) => {
|
|
3597
3612
|
const toolCallId = toolOptions.toolCallId || `explore_agent_${Date.now()}`;
|
|
@@ -3919,6 +3934,11 @@ Use this proactively after making code changes to catch errors early.
|
|
|
3919
3934
|
|
|
3920
3935
|
**Choose the right search approach:**
|
|
3921
3936
|
|
|
3937
|
+
0. **Use paths to your advantage \u2014 skip searching if you already have what you need.**
|
|
3938
|
+
- If the user selected a component via devtools and you can see the component name, file path, and/or line number, you ALREADY know where the code is. Just use \`read_file\` to read that file directly \u2014 do NOT call \`explore_agent\` to "find" something you already have the location of.
|
|
3939
|
+
- If you received a **page path** (e.g. \`/dashboard\`, \`/settings/profile\`), map it to the corresponding file in the project structure. In Next.js this means \`app/dashboard/page.tsx\`, \`app/settings/profile/page.tsx\`, etc. In other frameworks, check the routing convention (e.g. \`pages/\`, \`src/routes/\`). Use \`read_file\` on the mapped path directly.
|
|
3940
|
+
- If the file path doesn't exist or \`read_file\` fails, fall back to grep to locate it (e.g. \`rg "ComponentName" --type ts -l\`) since devtools paths can sometimes be slightly off or truncated.
|
|
3941
|
+
- Read up and down component trees when you have the file path or page path to find what you're looking for.
|
|
3922
3942
|
1. **Use the \`explore_agent\` tool (Explore agent)** for:
|
|
3923
3943
|
- Semantic/exploratory questions: "How does authentication work?", "Where is user data processed?"
|
|
3924
3944
|
- Finding code by meaning or concept, not exact text
|
|
@@ -3928,6 +3948,13 @@ Use this proactively after making code changes to catch errors early.
|
|
|
3928
3948
|
|
|
3929
3949
|
The Explore agent is a mini-agent that intelligently explores the codebase, reads relevant files, and returns a summary of what it found. It's best for understanding and discovery.
|
|
3930
3950
|
|
|
3951
|
+
**MANDATORY \u2014 The Explore agent has ZERO context.** It cannot see the conversation, the user's messages, devtools data, or anything else. The \`query\` and \`context\` fields are the ONLY information it receives. Every time you call \`explore_agent\`, you MUST populate the \`context\` field with ALL relevant information:
|
|
3952
|
+
- Copy the ENTIRE \`<devtools-context>\` block (page URL, path, viewport) if one exists in the user's message.
|
|
3953
|
+
- Copy ALL selected component info (component name, file path, line number, HTML snippet, component stack) if the user selected something via devtools.
|
|
3954
|
+
- Include any file paths, component names, or page names the user mentioned.
|
|
3955
|
+
- If you skip the \`context\` field, the explore agent is searching completely blind and will waste time guessing.
|
|
3956
|
+
- NEVER call \`explore_agent\` with only a \`query\` and no \`context\` when the user's message contains devtools or component information.
|
|
3957
|
+
|
|
3931
3958
|
2. **Use direct commands (grep/rg, find)** for:
|
|
3932
3959
|
- Exact string matches: \`rg "functionName"\`, \`rg "class MyClass"\`
|
|
3933
3960
|
- Finding files by name: \`find . -name "*.config.ts"\`
|
|
@@ -3935,7 +3962,8 @@ Use this proactively after making code changes to catch errors early.
|
|
|
3935
3962
|
- Counting occurrences or listing all matches
|
|
3936
3963
|
|
|
3937
3964
|
**Examples:**
|
|
3938
|
-
-
|
|
3965
|
+
- User selected \`<LandingButton>\` at \`src/components/LandingButton.tsx:12\` \u2192 Just \`read_file("src/components/LandingButton.tsx")\`. Do NOT call explore_agent.
|
|
3966
|
+
- "Where is the API authentication handled?" (no file path given) \u2192 Use \`explore_agent\` tool
|
|
3939
3967
|
- "Find all usages of getUserById" \u2192 Use \`rg "getUserById"\`
|
|
3940
3968
|
- "How does the payment flow work?" \u2192 Use \`explore_agent\` tool
|
|
3941
3969
|
- "Find files named config" \u2192 Use \`find . -name "*config*"\`
|