summaryrefslogtreecommitdiff
path: root/server/continuedev/plugins/steps/draft
diff options
context:
space:
mode:
authorNate Sesti <33237525+sestinj@users.noreply.github.com>2023-10-09 18:37:27 -0700
committerGitHub <noreply@github.com>2023-10-09 18:37:27 -0700
commitf09150617ed2454f3074bcf93f53aae5ae637d40 (patch)
tree5cfe614a64d921dfe58b049f426d67a8b832c71f /server/continuedev/plugins/steps/draft
parent985304a213f620cdff3f8f65f74ed7e3b79be29d (diff)
downloadsncontinue-f09150617ed2454f3074bcf93f53aae5ae637d40.tar.gz
sncontinue-f09150617ed2454f3074bcf93f53aae5ae637d40.tar.bz2
sncontinue-f09150617ed2454f3074bcf93f53aae5ae637d40.zip
Preview (#541)
* Strong typing (#533) * refactor: :recycle: get rid of continuedev.src.continuedev structure * refactor: :recycle: switching back to server folder * feat: :sparkles: make config.py imports shorter * feat: :bookmark: publish as pre-release vscode extension * refactor: :recycle: refactor and add more completion params to ui * build: :building_construction: download from preview S3 * fix: :bug: fix paths * fix: :green_heart: package:pre-release * ci: :green_heart: more time for tests * fix: :green_heart: fix build scripts * fix: :bug: fix import in run.py * fix: :bookmark: update version to try again * ci: 💚 Update package.json version [skip ci] * refactor: :fire: don't check for old extensions version * fix: :bug: small bug fixes * fix: :bug: fix config.py import paths * ci: 💚 Update package.json version [skip ci] * ci: :green_heart: platform-specific builds test #1 * feat: :green_heart: ship with binary * fix: :green_heart: fix copy statement to include.exe for windows * fix: :green_heart: cd extension before packaging * chore: :loud_sound: count tokens generated * fix: :green_heart: remove npm_config_arch * fix: :green_heart: publish as pre-release! * chore: :bookmark: update version * perf: :green_heart: hardcode distro paths * fix: :bug: fix yaml syntax error * chore: :bookmark: update version * fix: :green_heart: update permissions and version * feat: :bug: kill old server if needed * feat: :lipstick: update marketplace icon for pre-release * ci: 💚 Update package.json version [skip ci] * feat: :sparkles: auto-reload for config.py * feat: :wrench: update default config.py imports * feat: :sparkles: codelens in config.py * feat: :sparkles: select model param count from UI * ci: 💚 Update package.json version [skip ci] * feat: :sparkles: more model options, ollama error handling * perf: :zap: don't show server loading immediately * fix: :bug: fixing small UI details * ci: 💚 Update package.json version [skip ci] * feat: :rocket: headers param on LLM class * fix: :bug: fix headers for openai.;y * feat: :sparkles: highlight code on cmd+shift+L * ci: 💚 Update package.json version [skip ci] * feat: :lipstick: sticky top bar in gui.tsx * fix: :loud_sound: websocket logging and horizontal scrollbar * ci: 💚 Update package.json version [skip ci] * feat: :sparkles: allow AzureOpenAI Service through GGML * ci: 💚 Update package.json version [skip ci] * fix: :bug: fix automigration * ci: 💚 Update package.json version [skip ci] * ci: :green_heart: upload binaries in ci, download apple silicon * chore: :fire: remove notes * fix: :green_heart: use curl to download binary * fix: :green_heart: set permissions on apple silicon binary * fix: :green_heart: testing * fix: :green_heart: cleanup file * fix: :green_heart: fix preview.yaml * fix: :green_heart: only upload once per binary * fix: :green_heart: install rosetta * ci: :green_heart: download binary after tests * ci: 💚 Update package.json version [skip ci] * ci: :green_heart: prepare ci for merge to main --------- Co-authored-by: GitHub Action <action@github.com>
Diffstat (limited to 'server/continuedev/plugins/steps/draft')
-rw-r--r--server/continuedev/plugins/steps/draft/abstract_method.py21
-rw-r--r--server/continuedev/plugins/steps/draft/redux.py50
-rw-r--r--server/continuedev/plugins/steps/draft/typeorm.py54
3 files changed, 125 insertions, 0 deletions
diff --git a/server/continuedev/plugins/steps/draft/abstract_method.py b/server/continuedev/plugins/steps/draft/abstract_method.py
new file mode 100644
index 00000000..7ceefe9b
--- /dev/null
+++ b/server/continuedev/plugins/steps/draft/abstract_method.py
@@ -0,0 +1,21 @@
+from ....core.main import Step
+from ....core.sdk import ContinueSDK
+
+
+class ImplementAbstractMethodStep(Step):
+ name: str = "Implement abstract method for all subclasses"
+ method_name: str
+ class_name: str
+
+ async def run(self, sdk: ContinueSDK):
+ if sdk.lsp is None:
+ self.description = "Language Server Protocol is not enabled"
+ return
+
+ implementations = await sdk.lsp.go_to_implementations(self.class_name)
+
+ for implementation in implementations:
+ await sdk.edit_file(
+ range_in_files=[implementation.range_in_file],
+ prompt=f"Implement method `{self.method_name}` for this subclass of `{self.class_name}`",
+ )
diff --git a/server/continuedev/plugins/steps/draft/redux.py b/server/continuedev/plugins/steps/draft/redux.py
new file mode 100644
index 00000000..83b5e592
--- /dev/null
+++ b/server/continuedev/plugins/steps/draft/redux.py
@@ -0,0 +1,50 @@
+from ....core.main import Step
+from ....core.sdk import ContinueSDK
+from ....core.steps import EditFileStep
+
+
+class EditReduxStateStep(Step):
+ description: str # e.g. "I want to load data from the weatherapi.com API"
+
+ async def run(self, sdk: ContinueSDK):
+ # Find the right file to edit
+
+ # RootStore
+ store_filename = ""
+ sdk.run_step(
+ EditFileStep(
+ filename=store_filename,
+ prompt=f"Edit the root store to add a new slice for {self.description}",
+ )
+ )
+ store_file_contents = await sdk.ide.readFile(store_filename)
+
+ # Selector
+ selector_filename = ""
+ sdk.run_step(
+ EditFileStep(
+ filepath=selector_filename,
+ prompt=f"Edit the selector to add a new property for {self.description}. The store looks like this: {store_file_contents}",
+ )
+ )
+
+ # Reducer
+ reducer_filename = ""
+ sdk.run_step(
+ EditFileStep(
+ filepath=reducer_filename,
+ prompt=f"Edit the reducer to add a new property for {self.description}. The store looks like this: {store_file_contents}",
+ )
+ )
+ """
+ Starts with implementing selector
+ 1. RootStore
+ 2. Selector
+ 3. Reducer or entire slice
+
+ Need to first determine whether this is an:
+ 1. edit
+ 2. add new reducer and property in existing slice
+ 3. add whole new slice
+ 4. build redux from scratch
+ """
diff --git a/server/continuedev/plugins/steps/draft/typeorm.py b/server/continuedev/plugins/steps/draft/typeorm.py
new file mode 100644
index 00000000..c79fa041
--- /dev/null
+++ b/server/continuedev/plugins/steps/draft/typeorm.py
@@ -0,0 +1,54 @@
+from textwrap import dedent
+
+from ....core.main import Step
+from ....core.sdk import ContinueSDK
+
+
+class CreateTableStep(Step):
+ sql_str: str
+ name: str = "Create a table in TypeORM"
+
+ async def run(self, sdk: ContinueSDK):
+ # Write TypeORM entity
+ entity_name = self.sql_str.split(" ")[2].capitalize()
+ await sdk.edit_file(
+ f"src/entity/{entity_name}.ts",
+ dedent(
+ f"""\
+ {self.sql_str}
+
+ Write a TypeORM entity called {entity_name} for this table, importing as necessary:"""
+ ),
+ )
+
+ # Add entity to data-source.ts
+ await sdk.edit_file(
+ filepath="src/data-source.ts", prompt=f"Add the {entity_name} entity:"
+ )
+
+ # Generate blank migration for the entity
+ out = await sdk.run(
+ f"npx typeorm migration:create ./src/migration/Create{entity_name}Table"
+ )
+ migration_filepath = out.text.split(" ")[1]
+
+ # Wait for user input
+ await sdk.wait_for_user_confirmation("Fill in the migration?")
+
+ # Fill in the migration
+ await sdk.edit_file(
+ migration_filepath,
+ dedent(
+ f"""\
+ This is the table that was created:
+
+ {self.sql_str}
+
+ Fill in the migration for the table:"""
+ ),
+ )
+
+ # Run the migration
+ await sdk.run(
+ "npx typeorm-ts-node-commonjs migration:run -d ./src/data-source.ts"
+ )