Skip to content

Conversation

@Harshit-1104
Copy link

@Harshit-1104 Harshit-1104 commented Oct 26, 2025

Description

[ What changed? Feel free to be brief. ]

AI Code Review

  • Team members only: AI review runs automatically when PR is opened or marked ready for review
  • Team members can also trigger a review by commenting @continue-review

Checklist

  • [] I've read the contributing guide
  • [] The relevant docs, if any, have been updated or created
  • [] The relevant tests, if any, have been updated or created

Screen recording or screenshot

[ When applicable, please include a short screen recording or screenshot - this makes it much easier for us as contributors to review and understand your changes. See this PR as a good example. ]

Tests

[ What tests were added or updated to ensure the changes work as expected? ]


Summary by cubic

Shifted the app to AWS SDK Expert workflows with a local Stakd backend, removing Chat mode and simplifying settings and UI. Added built-in MCP servers (Context7) and a templated SDK system prompt (default Flexprice) with improved reasoning streaming and tool-call parsing.

  • New Features

    • Added Stakd provider (localhost:8080/v1) with OpenAI-compatible streaming; emits “thinking” reasoning and parses tool calls from reasoning.
    • Introduced templated AWS SDK Expert system prompt using {{SDK_NAME}} (default Flexprice) and Context7-first behavior.
    • Added built-in MCP servers (e.g., Context7), with per-server readonly support and config flags to disable built-ins.
    • Added docs for Stakd and manual sandbox examples (DynamoDB in Go, S3 upload in Python, Flexprice CRUD server/tests).
  • Refactors

    • Removed Chat mode; ModeSelect cycles between Plan and Agent.
    • Renamed default config to “AWS SDK Expert”; trimmed settings (removed Rules/Models/Configs/Organizations/Help) and unified navigation to SETTINGS.
    • Disabled RulesContextProvider and rule generation UI; improved stream handling to pass through “thinking” chunks and parse tool calls reliably.

Written for commit e4a2bc2. Summary will update automatically on new commits.

@Harshit-1104 Harshit-1104 requested a review from a team as a code owner October 26, 2025 18:30
@Harshit-1104 Harshit-1104 requested review from sestinj and removed request for a team October 26, 2025 18:30
@dosubot dosubot bot added the size:XL This PR changes 500-999 lines, ignoring generated files. label Oct 26, 2025
@github-actions
Copy link


Thank you for your submission, we really appreciate it. Like many open-source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution. You can sign the CLA by just posting a Pull Request Comment same as the below format.


I have read the CLA Document and I hereby sign the CLA


You can retrigger this bot by commenting recheck in this Pull Request. Posted by the CLA Assistant Lite bot.

Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

14 issues found across 46 files

Prompt for AI agents (all 14 issues)

Understand the root cause of the following 14 issues and fix them.


<file name="extensions/vscode/config_schema.json">

<violation number="1" location="extensions/vscode/config_schema.json:230">
Adding the new provider enum requires adding a matching entry in markdownEnumDescriptions so the provider picker keeps its descriptions aligned; please add a Stakd description to prevent the subsequent descriptions from shifting.</violation>
</file>

<file name="manual-testing-sandbox/src/s3_upload.py">

<violation number="1" location="manual-testing-sandbox/src/s3_upload.py:94">
If create_multipart_upload() fails before assigning upload_id, this except block raises UnboundLocalError when referencing upload_id. Initialize upload_id before the try or guard against it being undefined so the original S3 error is preserved.</violation>
</file>

<file name="gui/src/components/mainInput/InputToolbar.tsx">

<violation number="1" location="gui/src/components/mainInput/InputToolbar.tsx:93">
Leaving the ModelSelect tooltip content empty removes the descriptive label and shows a blank tooltip. Restore a meaningful string here.</violation>
</file>

<file name="gui/src/pages/config/features/account/AccountDropdown.tsx">

<violation number="1" location="gui/src/pages/config/features/account/AccountDropdown.tsx:44">
Returning immediately in the unauthenticated branch removes the login UI, so users without a session can no longer trigger the login flow from this dropdown.</violation>
</file>

<file name="core/config/loadContextProviders.ts">

<violation number="1" location="core/config/loadContextProviders.ts:39">
Commenting out the RulesContextProvider removes it from the default providers, so assistants no longer load the rules context unless users manually configure it. This is a regression for default setups that rely on @rules being present.</violation>
</file>

<file name="gui/src/redux/util/getBaseSystemMessage.ts">

<violation number="1" location="gui/src/redux/util/getBaseSystemMessage.ts:31">
This hard-codes the AWS SDK expert prompt for every mode, so model.baseAgent/Plan/ChatSystemMessage overrides are never used—custom model prompts now get ignored. Restore the per-mode selection that prefers model overrides.</violation>

<violation number="2" location="gui/src/redux/util/getBaseSystemMessage.ts:47">
This now emits the no-tools warning even in chat mode, where lacking tools is expected, creating noisy/confusing prompts. Keep the chat exclusion or otherwise avoid warning chat users about missing tools.</violation>
</file>

<file name="manual-testing-sandbox/dynamodb/README.md">

<violation number="1" location="manual-testing-sandbox/dynamodb/README.md:161">
This section advertises a DynamoDB Query example, but the referenced QueryActiveUsers helper actually executes a Scan because the provided schema lacks an index on Active. Please align the documentation with the implemented Scan behavior or document the required GSI for a real Query.</violation>
</file>

<file name="packages/openai-adapters/src/types.ts">

<violation number="1" location="packages/openai-adapters/src/types.ts:210">
`StakdConfigSchema` is already covered by `OpenAIConfigSchema`; adding it here duplicates the `provider` value `&quot;stakd&quot;`, and `z.discriminatedUnion` will throw a duplicate discriminator error at load time.</violation>
</file>

<file name="manual-testing-sandbox/dynamodb/main.go">

<violation number="1" location="manual-testing-sandbox/dynamodb/main.go:273">
Handle UnprocessedItems returned by BatchWriteItem; otherwise throttled writes are dropped silently.</violation>
</file>

<file name="extensions/cli/src/util/yamlConfigUpdater.ts">

<violation number="1" location="extensions/cli/src/util/yamlConfigUpdater.ts:42">
Changing the default config name to &quot;AWS SDK Expert&quot; breaks the CLI behavior/tests that still assert the generated YAML includes `name: &quot;Local Config&quot;`. Either keep the existing name here or update all dependent code/tests alongside this change so the expectations stay consistent.</violation>
</file>

<file name="core/llm/defaultSystemMessages.ts">

<violation number="1" location="core/llm/defaultSystemMessages.ts:66">
This default agent message now forces every request to be treated as AWS SDK work, which will mis-handle non-AWS user queries across the app.</violation>
</file>

<file name="docs/docs/customize/model-providers/top-level/stakd.md">

<violation number="1" location="docs/docs/customize/model-providers/top-level/stakd.md:154">
This note misstates that the Stakd integration forces `model` to `stakd-backend`, but the adapter forwards whatever model name you configure, so the documentation should reflect that behavior.</violation>
</file>

<file name="gui/src/components/ModeSelect/ModeSelect.tsx">

<violation number="1" location="gui/src/components/ModeSelect/ModeSelect.tsx:29">
Removing the chat branch here means the keyboard shortcut and dropdown can no longer return to chat mode, even though the store still uses &quot;chat&quot; (e.g. editState returnToMode and chat system message tests). Persisted sessions in chat now show the wrong label and immediately flip to plan, so the chat-only workflow breaks.</violation>
</file>

Since this is your first cubic review, here's how it works:

  • cubic automatically reviews your code and comments on bugs and improvements
  • Teach cubic by replying to its comments. cubic learns from your replies and gets better over time
  • Ask questions if you need clarification on any suggestion

React with 👍 or 👎 to teach cubic. Mention @cubic-dev-ai to give feedback, ask questions, or re-run the review.

"kindo",
"moonshot",
"siliconflow",
"stakd",
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Oct 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding the new provider enum requires adding a matching entry in markdownEnumDescriptions so the provider picker keeps its descriptions aligned; please add a Stakd description to prevent the subsequent descriptions from shifting.

Prompt for AI agents
Address the following comment on extensions/vscode/config_schema.json at line 230:

<comment>Adding the new provider enum requires adding a matching entry in markdownEnumDescriptions so the provider picker keeps its descriptions aligned; please add a Stakd description to prevent the subsequent descriptions from shifting.</comment>

<file context>
@@ -227,6 +227,7 @@
             &quot;kindo&quot;,
             &quot;moonshot&quot;,
             &quot;siliconflow&quot;,
+            &quot;stakd&quot;,
             &quot;function-network&quot;,
             &quot;scaleway&quot;,
</file context>
Fix with Cubic

logger.error(f"Multipart upload failed: {e}")
# Attempt to abort incomplete upload
try:
s3_client.abort_multipart_upload(
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Oct 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If create_multipart_upload() fails before assigning upload_id, this except block raises UnboundLocalError when referencing upload_id. Initialize upload_id before the try or guard against it being undefined so the original S3 error is preserved.

Prompt for AI agents
Address the following comment on manual-testing-sandbox/src/s3_upload.py at line 94:

<comment>If create_multipart_upload() fails before assigning upload_id, this except block raises UnboundLocalError when referencing upload_id. Initialize upload_id before the try or guard against it being undefined so the original S3 error is preserved.</comment>

<file context>
@@ -0,0 +1,162 @@
+        logger.error(f&quot;Multipart upload failed: {e}&quot;)
+        # Attempt to abort incomplete upload
+        try:
+            s3_client.abort_multipart_upload(
+                Bucket=bucket, Key=key, UploadId=upload_id
+            )
</file context>
Fix with Cubic

</ToolTip>
)}
<ToolTip place="top" content="Select Model">
<ToolTip place="top" content="">
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Oct 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Leaving the ModelSelect tooltip content empty removes the descriptive label and shows a blank tooltip. Restore a meaningful string here.

Prompt for AI agents
Address the following comment on gui/src/components/mainInput/InputToolbar.tsx at line 93:

<comment>Leaving the ModelSelect tooltip content empty removes the descriptive label and shows a blank tooltip. Restore a meaningful string here.</comment>

<file context>
@@ -84,13 +84,13 @@ function InputToolbar(props: InputToolbarProps) {
             &lt;/ToolTip&gt;
           )}
-          &lt;ToolTip place=&quot;top&quot; content=&quot;Select Model&quot;&gt;
+          &lt;ToolTip place=&quot;top&quot; content=&quot;&quot;&gt;
             &lt;HoverItem className=&quot;!p-0&quot;&gt;
               &lt;ModelSelect /&gt;
</file context>
Suggested change
<ToolTip place="top" content="">
<ToolTip place="top" content="Select Model">
Fix with Cubic

// </Button>
// </ToolTip>
// );
return;
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Oct 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Returning immediately in the unauthenticated branch removes the login UI, so users without a session can no longer trigger the login flow from this dropdown.

Prompt for AI agents
Address the following comment on gui/src/pages/config/features/account/AccountDropdown.tsx at line 44:

<comment>Returning immediately in the unauthenticated branch removes the login UI, so users without a session can no longer trigger the login flow from this dropdown.</comment>

<file context>
@@ -27,20 +27,21 @@ export function AccountDropdown() {
+    //     &lt;/Button&gt;
+    //   &lt;/ToolTip&gt;
+    // );
+    return;
   }
 
</file context>
Fix with Cubic

new TerminalContextProvider({}),
new ProblemsContextProvider({}),
new RulesContextProvider({}),
// new RulesContextProvider({}),
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Oct 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Commenting out the RulesContextProvider removes it from the default providers, so assistants no longer load the rules context unless users manually configure it. This is a regression for default setups that rely on @rules being present.

Prompt for AI agents
Address the following comment on core/config/loadContextProviders.ts at line 39:

<comment>Commenting out the RulesContextProvider removes it from the default providers, so assistants no longer load the rules context unless users manually configure it. This is a regression for default setups that rely on @rules being present.</comment>

<file context>
@@ -36,7 +36,7 @@ export function loadConfigContextProviders(
     new TerminalContextProvider({}),
     new ProblemsContextProvider({}),
-    new RulesContextProvider({}),
+    // new RulesContextProvider({}),
   ];
 
</file context>
Suggested change
// new RulesContextProvider({}),
new RulesContextProvider({}),
Fix with Cubic

}
}

_, err := db.client.BatchWriteItem(ctx, &dynamodb.BatchWriteItemInput{
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Oct 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Handle UnprocessedItems returned by BatchWriteItem; otherwise throttled writes are dropped silently.

Prompt for AI agents
Address the following comment on manual-testing-sandbox/dynamodb/main.go at line 273:

<comment>Handle UnprocessedItems returned by BatchWriteItem; otherwise throttled writes are dropped silently.</comment>

<file context>
@@ -0,0 +1,352 @@
+			}
+		}
+
+		_, err := db.client.BatchWriteItem(ctx, &amp;dynamodb.BatchWriteItemInput{
+			RequestItems: map[string][]types.WriteRequest{
+				db.tableName: writeRequests,
</file context>
Fix with Cubic

if (!doc.contents || doc.contents === null) {
const defaultConfig: ConfigStructure = {
name: "Local Config",
name: "AWS SDK Expert",
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Oct 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changing the default config name to "AWS SDK Expert" breaks the CLI behavior/tests that still assert the generated YAML includes name: "Local Config". Either keep the existing name here or update all dependent code/tests alongside this change so the expectations stay consistent.

Prompt for AI agents
Address the following comment on extensions/cli/src/util/yamlConfigUpdater.ts at line 42:

<comment>Changing the default config name to &quot;AWS SDK Expert&quot; breaks the CLI behavior/tests that still assert the generated YAML includes `name: &quot;Local Config&quot;`. Either keep the existing name here or update all dependent code/tests alongside this change so the expectations stay consistent.</comment>

<file context>
@@ -39,7 +39,7 @@ export function updateAnthropicModelInYaml(
     if (!doc.contents || doc.contents === null) {
       const defaultConfig: ConfigStructure = {
-        name: &quot;Local Config&quot;,
+        name: &quot;AWS SDK Expert&quot;,
         version: &quot;1.0.0&quot;,
         schema: &quot;v1&quot;,
</file context>
Fix with Cubic

You are in agent mode.
You are in agent mode with full tool access.
**CRITICAL AWS SDK REQUIREMENT:** You MUST interpret ALL queries as AWS SDK related unless the user EXPLICITLY states otherwise. This is NON-NEGOTIABLE.
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Oct 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This default agent message now forces every request to be treated as AWS SDK work, which will mis-handle non-AWS user queries across the app.

Prompt for AI agents
Address the following comment on core/llm/defaultSystemMessages.ts at line 66:

<comment>This default agent message now forces every request to be treated as AWS SDK work, which will mis-handle non-AWS user queries across the app.</comment>

<file context>
@@ -61,7 +61,16 @@ ${EDIT_CODE_INSTRUCTIONS}
-  You are in agent mode.
+  You are in agent mode with full tool access.
+
+  **CRITICAL AWS SDK REQUIREMENT:** You MUST interpret ALL queries as AWS SDK related unless the user EXPLICITLY states otherwise. This is NON-NEGOTIABLE.
+  - &quot;upload file&quot; = S3 upload using AWS SDK
+  - &quot;send message&quot; = SQS/SNS using AWS SDK
</file context>
Fix with Cubic


- The backend URL is hardcoded to `localhost:8080` and cannot be configured
- No API key or authentication is required
- The model parameter is always set to `stakd-backend` - your backend should handle model routing
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Oct 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This note misstates that the Stakd integration forces model to stakd-backend, but the adapter forwards whatever model name you configure, so the documentation should reflect that behavior.

Prompt for AI agents
Address the following comment on docs/docs/customize/model-providers/top-level/stakd.md at line 154:

<comment>This note misstates that the Stakd integration forces `model` to `stakd-backend`, but the adapter forwards whatever model name you configure, so the documentation should reflect that behavior.</comment>

<file context>
@@ -0,0 +1,156 @@
+
+- The backend URL is hardcoded to `localhost:8080` and cannot be configured
+- No API key or authentication is required
+- The model parameter is always set to `stakd-backend` - your backend should handle model routing
+- The provider automatically uses the OpenAI adapter for compatibility
+- Supports all standard completion options (temperature, max_tokens, etc.)
</file context>
Suggested change
- The model parameter is always set to `stakd-backend` - your backend should handle model routing
- The model parameter you configure is forwarded to your backend unchanged, so ensure your service routes it to the right model
Fix with Cubic

dispatch(setMode("agent"));
} else {
dispatch(setMode("chat"));
dispatch(setMode("plan"));
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Oct 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removing the chat branch here means the keyboard shortcut and dropdown can no longer return to chat mode, even though the store still uses "chat" (e.g. editState returnToMode and chat system message tests). Persisted sessions in chat now show the wrong label and immediately flip to plan, so the chat-only workflow breaks.

Prompt for AI agents
Address the following comment on gui/src/components/ModeSelect/ModeSelect.tsx at line 29:

<comment>Removing the chat branch here means the keyboard shortcut and dropdown can no longer return to chat mode, even though the store still uses &quot;chat&quot; (e.g. editState returnToMode and chat system message tests). Persisted sessions in chat now show the wrong label and immediately flip to plan, so the chat-only workflow breaks.</comment>

<file context>
@@ -20,33 +16,23 @@ import { ModeIcon } from &quot;./ModeIcon&quot;;
       dispatch(setMode(&quot;agent&quot;));
     } else {
-      dispatch(setMode(&quot;chat&quot;));
+      dispatch(setMode(&quot;plan&quot;));
     }
     // Only focus main editor if another one doesn&#39;t already have focus
</file context>
Fix with Cubic

Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

30 issues found across 88 files

Prompt for AI agents (all 30 issues)

Understand the root cause of the following 30 issues and fix them.


<file name=".stitch/rules/programming-principles.md">

<violation number="1" location=".stitch/rules/programming-principles.md:6">
Please keep this guidance as a single sentence so it reads smoothly—for example, combine the clause after “acceptable” instead of starting a new sentence with lowercase “but.”</violation>
</file>

<file name="packages/openai-adapters/src/types.ts">

<violation number="1" location="packages/openai-adapters/src/types.ts:55">
Adding &quot;stakd&quot; to `OpenAIConfigSchema` while also registering `StakdConfigSchema` duplicates the `provider` discriminator value, causing `z.discriminatedUnion(&quot;provider&quot;, …)` to throw at module load.</violation>
</file>

<file name=".stitch/rules/migrate-styled-components-to-tailwind.md">

<violation number="1" location=".stitch/rules/migrate-styled-components-to-tailwind.md:5">
React components use the singular `style` prop. Update this guidance to `style={{ ... }}` so migrations don’t produce invalid JSX.</violation>
</file>

<file name="extensions/cli/src/services/MCPService.ts">

<violation number="1" location="extensions/cli/src/services/MCPService.ts:83">
Merging built-in MCP servers into `allServers` without persisting their configs means `restartServer` throws “Server ... not found in configuration” for any built-in server, so they cannot be restarted individually.</violation>
</file>

<file name=".stitch/rules/vs-code-commands-helper-functions.md">

<violation number="1" location=".stitch/rules/vs-code-commands-helper-functions.md:5">
The new guideline misdescribes the existing pattern: streamInlineEdit is defined above the commands map, so telling contributors to put helpers below the map contradicts the actual code layout and is misleading.</violation>
</file>

<file name="gui/src/components/mainInput/InputToolbar.tsx">

<violation number="1" location="gui/src/components/mainInput/InputToolbar.tsx:93">
Setting the tooltip content to an empty string leaves a blank tooltip bubble, removing the hover guidance for the model selector. Restore a descriptive tooltip message or remove the tooltip wrapper.</violation>
</file>

<file name=".stitch/rules/intellij-plugin-test-execution.md">

<violation number="1" location=".stitch/rules/intellij-plugin-test-execution.md:13">
The documented Gradle command references com.github.continuedev.continueintellijextension.unit.ApplyToFileHandlerTest, but that test class isn&#39;t present in the repo, so the guidance fails. Update the example to point at an actual test class.</violation>
</file>

<file name="gui/src/redux/util/getBaseSystemMessage.ts">

<violation number="1" location="gui/src/redux/util/getBaseSystemMessage.ts:52">
Please remove the newly added debug console logging—this runs on every message, clutters the production console, and exposes the full system prompt.</violation>
</file>

<file name="docs/docs/customize/model-providers/top-level/stakd.md">

<violation number="1" location="docs/docs/customize/model-providers/top-level/stakd.md:154">
This note claims the provider always forces the model to `stakd-backend`, but the Stakd adapter just forwards the configured model string to your backend. Update the docs so they accurately reflect that behavior.</violation>
</file>

<file name=".stitch/rules/dev-data-guide.md">

<violation number="1" location=".stitch/rules/dev-data-guide.md:139">
The guide shows calling DataLogger.getInstance().logDevData(eventName, data), but the method accepts a single DevDataLogEvent object, so following this example will not compile. Please update the example to pass { name, data }.</violation>

<violation number="2" location=".stitch/rules/dev-data-guide.md:184">
This sample shows logDevData invoked with two parameters, but logDevData expects a single DevDataLogEvent. Adjust the example to pass the event object so readers copy the correct API usage.</violation>
</file>

<file name=".stitch/rules/test-running-guide.md">

<violation number="1" location=".stitch/rules/test-running-guide.md:21">
Core test file patterns should use `*.test.ts` and `*.vitest.ts`; using `_` here misstates the required naming convention and could cause contributors to miss existing tests.</violation>
</file>

<file name="gui/src/redux/selectors/selectActiveTools.ts">

<violation number="1" location="gui/src/redux/selectors/selectActiveTools.ts:16">
This filter ignores a tool’s default policy, so tools with defaultToolPolicy &quot;disabled&quot; (e.g. RequestRule) are now incorrectly enabled by default.</violation>
</file>

<file name="manual-testing-sandbox/dynamodb/main.go">

<violation number="1" location="manual-testing-sandbox/dynamodb/main.go:148">
These AttributeValue assertions will panic if DynamoDB omits or nulls the field. Use ok checks (or attributevalue.UnmarshalMap) so missing attributes return an error instead of crashing.</violation>

<violation number="2" location="manual-testing-sandbox/dynamodb/main.go:225">
QueryActiveUsers assumes every scanned item has Name/Email and asserts without ok checks; DynamoDB can return items missing those attributes, leading to a panic. Guard the lookups or unmarshal into a struct to keep the scan from crashing.</violation>

<violation number="3" location="manual-testing-sandbox/dynamodb/main.go:273">
BatchWriteItem can return UnprocessedItems on throttling. Ignoring the response means some users will never be written. Capture the output and retry unprocessed items until empty.</violation>
</file>

<file name="manual-testing-sandbox/flexprice/src/middleware/interceptors.ts">

<violation number="1" location="manual-testing-sandbox/flexprice/src/middleware/interceptors.ts:79">
Calling logResponse inside the res.json override causes every JSON response to be logged twice because the original res.json eventually invokes the now-instrumented res.send. Remove this extra call so responses are logged only once.</violation>

<violation number="2" location="manual-testing-sandbox/flexprice/src/middleware/interceptors.ts:131">
Add a res.headersSent guard before sending the JSON error response; otherwise, any error thrown after headers are sent will trigger ERR_HTTP_HEADERS_SENT instead of reaching the client.</violation>
</file>

<file name="manual-testing-sandbox/flexprice/connections.test.ts">

<violation number="1" location="manual-testing-sandbox/flexprice/connections.test.ts:151">
These retry/timeout tests wait for the real exponential backoff, adding several seconds of idle time to every run. Please stub or fast-forward the timers so the suite stays fast and deterministic.</violation>
</file>

<file name=".stitch/rules/github-pr-documentation-updater.md">

<violation number="1" location=".stitch/rules/github-pr-documentation-updater.md:3">
The description line is cut off mid-sentence, so the rule summary is unclear to readers. Please finish the sentence so it conveys the intended instructions.</violation>
</file>

<file name=".stitch/rules/continue-specificity.md">

<violation number="1" location=".stitch/rules/continue-specificity.md:2">
The new glob pattern ends with a dot, so it matches no practical files; the rule will never run. Replace it with the intended, valid glob pattern so the rule applies correctly.</violation>
</file>

<file name=".stitch/rules/navigating-responses.md">

<violation number="1" location=".stitch/rules/navigating-responses.md:3">
Chat mode was removed in this update, so mentioning it here makes the guidance inaccurate. Please update the wording to refer to the current modes (e.g., Plan or Agent).</violation>
</file>

<file name="gui/src/pages/config/features/account/AccountDropdown.tsx">

<violation number="1" location="gui/src/pages/config/features/account/AccountDropdown.tsx:44">
Returning early without rendering a login control removes the unauthenticated login button from AccountDropdown, so signed-out users can no longer trigger `login(false)` from this menu.</violation>
</file>

<file name="extensions/vscode/config_schema.json">

<violation number="1" location="extensions/vscode/config_schema.json:230">
Adding `stakd` to the provider enum without inserting a matching entry in `markdownEnumDescriptions` shifts all subsequent tooltips to the wrong provider. Please add a description for `stakd` so the arrays stay aligned.</violation>
</file>

<file name="manual-testing-sandbox/flexprice/connections.ts">

<violation number="1" location="manual-testing-sandbox/flexprice/connections.ts:32">
The shared flexpriceFetch helper always parses JSON, but deleteConnection expects a 204 No Content response; the JSON parse will throw and the delete never reports success. Make the helper skip JSON parsing when the status has no body.</violation>
</file>

<file name="manual-testing-sandbox/dynamodb/README.md">

<violation number="1" location="manual-testing-sandbox/dynamodb/README.md:38">
The setup path is wrong here—`cd dynamodb` will fail from the repo root because the example lives under manual-testing-sandbox/dynamodb. Please update the command to point at the actual directory.</violation>
</file>

<file name="core/config/load.ts">

<violation number="1" location="core/config/load.ts:588">
Using the server name as the deduplication key means every user-configured MCP server overwrites the previous one because they are all assigned the name `&quot;MCP Server&quot;`, so only the last server remains connected.</violation>
</file>

<file name="manual-testing-sandbox/flexprice/tsconfig.json">

<violation number="1" location="manual-testing-sandbox/flexprice/tsconfig.json:18">
The include globs only match top-level .ts/.tsx files, so TypeScript will skip everything under src/. Please switch to recursive patterns (e.g., **/*.ts and **/*.tsx) so the sandbox code is actually type-checked.</violation>
</file>

<file name="AWS_SDK_EXPERT_ONLY_MODE_CHANGES.md">

<violation number="1" location="AWS_SDK_EXPERT_ONLY_MODE_CHANGES.md:20">
core/index.d.ts still exports MessageModes as &quot;chat&quot; | &quot;agent&quot; | &quot;plan&quot;, so this documentation line misstates the actual implementation. Please update the doc to reflect the current modes.</violation>

<violation number="2" location="AWS_SDK_EXPERT_ONLY_MODE_CHANGES.md:46">
ModeSelect.tsx still renders the dropdown with Plan/Agent choices and the Cmd/Ctrl + . shortcut, so this description of a static AWS SDK Expert label is inaccurate.</violation>
</file>

React with 👍 or 👎 to teach cubic. Mention @cubic-dev-ai to give feedback, ask questions, or re-run the review.

description: Guidelines for coding fundamentals in this project
---

Use functional programming paradigms whenever possible. Modifying existing classes or creating singletons where needed is acceptable. but otherwise, use functions.
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Nov 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please keep this guidance as a single sentence so it reads smoothly—for example, combine the clause after “acceptable” instead of starting a new sentence with lowercase “but.”

Prompt for AI agents
Address the following comment on .stitch/rules/programming-principles.md at line 6:

<comment>Please keep this guidance as a single sentence so it reads smoothly—for example, combine the clause after “acceptable” instead of starting a new sentence with lowercase “but.”</comment>

<file context>
@@ -0,0 +1,6 @@
+description: Guidelines for coding fundamentals in this project
+---
+
+Use functional programming paradigms whenever possible. Modifying existing classes or creating singletons where needed is acceptable. but otherwise, use functions.
</file context>
Fix with Cubic

z.literal("msty"),
z.literal("openrouter"),
z.literal("sambanova"),
z.literal("stakd"),
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Nov 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding "stakd" to OpenAIConfigSchema while also registering StakdConfigSchema duplicates the provider discriminator value, causing z.discriminatedUnion("provider", …) to throw at module load.

Prompt for AI agents
Address the following comment on packages/openai-adapters/src/types.ts at line 55:

<comment>Adding &quot;stakd&quot; to `OpenAIConfigSchema` while also registering `StakdConfigSchema` duplicates the `provider` discriminator value, causing `z.discriminatedUnion(&quot;provider&quot;, …)` to throw at module load.</comment>

<file context>
@@ -52,6 +52,7 @@ export const OpenAIConfigSchema = BasePlusConfig.extend({
     z.literal(&quot;msty&quot;),
     z.literal(&quot;openrouter&quot;),
     z.literal(&quot;sambanova&quot;),
+    z.literal(&quot;stakd&quot;),
     z.literal(&quot;text-gen-webui&quot;),
     z.literal(&quot;vllm&quot;),
</file context>
Fix with Cubic

alwaysApply: false
---

Convert all of the styled components in this file into tailwind CSS. If a variable is used that is not already in @theme.ts and @tailwind.config.cjs, then you should figure out where it comes from and try adding that so it can be used. Wherever a function is called to interpolate a value, you can just use inline `styles={{ ... }}`. For ternaries, you could use @cn.ts.
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Nov 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

React components use the singular style prop. Update this guidance to style={{ ... }} so migrations don’t produce invalid JSX.

Prompt for AI agents
Address the following comment on .stitch/rules/migrate-styled-components-to-tailwind.md at line 5:

<comment>React components use the singular `style` prop. Update this guidance to `style={{ ... }}` so migrations don’t produce invalid JSX.</comment>

<file context>
@@ -0,0 +1,5 @@
+alwaysApply: false
+---
+
+Convert all of the styled components in this file into tailwind CSS. If a variable is used that is not already in @theme.ts and @tailwind.config.cjs, then you should figure out where it comes from and try adding that so it can be used. Wherever a function is called to interpolate a value, you can just use inline `styles={{ ... }}`. For ternaries, you could use @cn.ts.
</file context>
Fix with Cubic

);

// Merge with user-configured servers
const allServers = [...builtInServers, ...(assistant.mcpServers ?? [])];
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Nov 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Merging built-in MCP servers into allServers without persisting their configs means restartServer throws “Server ... not found in configuration” for any built-in server, so they cannot be restarted individually.

Prompt for AI agents
Address the following comment on extensions/cli/src/services/MCPService.ts at line 83:

<comment>Merging built-in MCP servers into `allServers` without persisting their configs means `restartServer` throws “Server ... not found in configuration” for any built-in server, so they cannot be restarted individually.</comment>

<file context>
@@ -72,22 +73,33 @@ export class MCPService
+    );
+
+    // Merge with user-configured servers
+    const allServers = [...builtInServers, ...(assistant.mcpServers ?? [])];
+
     logger.debug(&quot;Initializing MCPService&quot;, {
</file context>
Fix with Cubic

globs: "extensions/vscode/src/commands.ts"
---

When adding new commands to the commands map, always create a separate helper function for the command logic instead of defining it inline. Follow the pattern of existing commands like `streamInlineEdit` - define the helper function below the commands map, then call it from within the command entry.
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Nov 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new guideline misdescribes the existing pattern: streamInlineEdit is defined above the commands map, so telling contributors to put helpers below the map contradicts the actual code layout and is misleading.

Prompt for AI agents
Address the following comment on .stitch/rules/vs-code-commands-helper-functions.md at line 5:

<comment>The new guideline misdescribes the existing pattern: streamInlineEdit is defined above the commands map, so telling contributors to put helpers below the map contradicts the actual code layout and is misleading.</comment>

<file context>
@@ -0,0 +1,5 @@
+globs: &quot;extensions/vscode/src/commands.ts&quot;
+---
+
+When adding new commands to the commands map, always create a separate helper function for the command logic instead of defining it inline. Follow the pattern of existing commands like `streamInlineEdit` - define the helper function below the commands map, then call it from within the command entry.
</file context>
Suggested change
When adding new commands to the commands map, always create a separate helper function for the command logic instead of defining it inline. Follow the pattern of existing commands like `streamInlineEdit` - define the helper function below the commands map, then call it from within the command entry.
When adding new commands to the commands map, create a helper function (as in `streamInlineEdit`) above the returned map and call it from the command entry instead of defining the logic inline.
Fix with Cubic

### 1. Install Dependencies

```bash
cd dynamodb
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Nov 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The setup path is wrong here—cd dynamodb will fail from the repo root because the example lives under manual-testing-sandbox/dynamodb. Please update the command to point at the actual directory.

Prompt for AI agents
Address the following comment on manual-testing-sandbox/dynamodb/README.md at line 38:

<comment>The setup path is wrong here—`cd dynamodb` will fail from the repo root because the example lives under manual-testing-sandbox/dynamodb. Please update the command to point at the actual directory.</comment>

<file context>
@@ -0,0 +1,301 @@
+### 1. Install Dependencies
+
+```bash
+cd dynamodb
+go mod download
+```
</file context>
Suggested change
cd dynamodb
cd manual-testing-sandbox/dynamodb
Fix with Cubic


// Add built-in servers first
builtInServers.forEach((server) => {
serverMap.set(server.name.toLowerCase(), server);
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Nov 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using the server name as the deduplication key means every user-configured MCP server overwrites the previous one because they are all assigned the name "MCP Server", so only the last server remains connected.

Prompt for AI agents
Address the following comment on core/config/load.ts at line 588:

<comment>Using the server name as the deduplication key means every user-configured MCP server overwrites the previous one because they are all assigned the name `&quot;MCP Server&quot;`, so only the last server remains connected.</comment>

<file context>
@@ -565,14 +573,32 @@ async function intermediateToFinalConfig({
+
+    // Add built-in servers first
+    builtInServers.forEach((server) =&gt; {
+      serverMap.set(server.name.toLowerCase(), server);
+    });
+
</file context>
Suggested change
serverMap.set(server.name.toLowerCase(), server);
serverMap.set((server.id ?? server.name).toLowerCase(), server);
Fix with Cubic

"types": ["jest", "@types/jest", "@types/node", "@types/node-fetch"]
},
"include": [
"*.ts",
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Nov 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The include globs only match top-level .ts/.tsx files, so TypeScript will skip everything under src/. Please switch to recursive patterns (e.g., **/.ts and **/.tsx) so the sandbox code is actually type-checked.

Prompt for AI agents
Address the following comment on manual-testing-sandbox/flexprice/tsconfig.json at line 18:

<comment>The include globs only match top-level .ts/.tsx files, so TypeScript will skip everything under src/. Please switch to recursive patterns (e.g., **/*.ts and **/*.tsx) so the sandbox code is actually type-checked.</comment>

<file context>
@@ -0,0 +1,24 @@
+    &quot;types&quot;: [&quot;jest&quot;, &quot;@types/jest&quot;, &quot;@types/node&quot;, &quot;@types/node-fetch&quot;]
+  },
+  &quot;include&quot;: [
+    &quot;*.ts&quot;,
+    &quot;*.tsx&quot;
+  ],
</file context>
Fix with Cubic

**File:** `gui/src/components/ModeSelect/ModeSelect.tsx`

- **Before:** Complex dropdown with Chat, Plan, Agent, and AWS SDK Expert options with mode cycling
- **After:** Simple static label showing "AWS SDK Expert" with an info tooltip
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Nov 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ModeSelect.tsx still renders the dropdown with Plan/Agent choices and the Cmd/Ctrl + . shortcut, so this description of a static AWS SDK Expert label is inaccurate.

Prompt for AI agents
Address the following comment on AWS_SDK_EXPERT_ONLY_MODE_CHANGES.md at line 46:

<comment>ModeSelect.tsx still renders the dropdown with Plan/Agent choices and the Cmd/Ctrl + . shortcut, so this description of a static AWS SDK Expert label is inaccurate.</comment>

<file context>
@@ -0,0 +1,186 @@
+**File:** `gui/src/components/ModeSelect/ModeSelect.tsx`
+
+- **Before:** Complex dropdown with Chat, Plan, Agent, and AWS SDK Expert options with mode cycling
+- **After:** Simple static label showing &quot;AWS SDK Expert&quot; with an info tooltip
+- Removed:
+  - All other mode options (Chat, Plan, Agent)
</file context>
Suggested change
- **After:** Simple static label showing "AWS SDK Expert" with an info tooltip
- **After:** Mode selector remains a dropdown between Plan and Agent modes (with Cmd/Ctrl + . cycling).
Fix with Cubic


**File:** `core/index.d.ts`

- Changed `MessageModes` type from `"chat" | "agent" | "plan" | "aws-sdk-expert"` to just `"aws-sdk-expert"`
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Nov 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

core/index.d.ts still exports MessageModes as "chat" | "agent" | "plan", so this documentation line misstates the actual implementation. Please update the doc to reflect the current modes.

Prompt for AI agents
Address the following comment on AWS_SDK_EXPERT_ONLY_MODE_CHANGES.md at line 20:

<comment>core/index.d.ts still exports MessageModes as &quot;chat&quot; | &quot;agent&quot; | &quot;plan&quot;, so this documentation line misstates the actual implementation. Please update the doc to reflect the current modes.</comment>

<file context>
@@ -0,0 +1,186 @@
+
+**File:** `core/index.d.ts`
+
+- Changed `MessageModes` type from `&quot;chat&quot; | &quot;agent&quot; | &quot;plan&quot; | &quot;aws-sdk-expert&quot;` to just `&quot;aws-sdk-expert&quot;`
+- This enforces that only AWS SDK Expert mode exists throughout the codebase
+
</file context>
Suggested change
- Changed `MessageModes` type from `"chat" | "agent" | "plan" | "aws-sdk-expert"` to just `"aws-sdk-expert"`
- MessageModes currently remains `"chat" | "agent" | "plan"`; update this doc once the single-mode change lands.
Fix with Cubic

@RomneyDa
Copy link
Collaborator

RomneyDa commented Nov 4, 2025

This appears to be a large fork, closing

@RomneyDa RomneyDa closed this Nov 4, 2025
@github-project-automation github-project-automation bot moved this from Todo to Done in Issues and PRs Nov 4, 2025
@github-actions github-actions bot locked and limited conversation to collaborators Nov 4, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

size:XL This PR changes 500-999 lines, ignoring generated files.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants