Skip to content
Merged
Show file tree
Hide file tree
Changes from 109 commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
75ebe79
Merge main into feature/dev-execution
aws-toolkit-automation Oct 21, 2024
f180714
Merge main into feature/dev-execution
aws-toolkit-automation Oct 21, 2024
a1ab506
Merge main into feature/dev-execution
aws-toolkit-automation Oct 21, 2024
ab23fa8
Merge main into feature/dev-execution
aws-toolkit-automation Oct 21, 2024
a06b479
Merge main into feature/dev-execution
aws-toolkit-automation Oct 22, 2024
19fa0d0
Merge main into feature/dev-execution
aws-toolkit-automation Oct 22, 2024
b1bc96d
Merge main into feature/dev-execution
aws-toolkit-automation Oct 22, 2024
b8fb9d6
Merge main into feature/dev-execution
aws-toolkit-automation Oct 23, 2024
5bb8ec7
Merge main into feature/dev-execution
aws-toolkit-automation Oct 23, 2024
779acc8
Merge main into feature/dev-execution
aws-toolkit-automation Oct 23, 2024
c979d1d
Merge main into feature/dev-execution
aws-toolkit-automation Oct 24, 2024
6e8cfac
Merge main into feature/dev-execution
aws-toolkit-automation Oct 24, 2024
3f53053
Merge main into feature/dev-execution
aws-toolkit-automation Oct 28, 2024
020fc22
Merge main into feature/dev-execution
aws-toolkit-automation Oct 28, 2024
d2c8712
Merge main into feature/dev-execution
aws-toolkit-automation Oct 28, 2024
b9ca048
Merge main into feature/dev-execution
aws-toolkit-automation Oct 29, 2024
9b80339
Merge main into feature/dev-execution
aws-toolkit-automation Oct 29, 2024
1190383
Merge main into feature/dev-execution
aws-toolkit-automation Oct 29, 2024
1213a55
Merge main into feature/dev-execution
aws-toolkit-automation Oct 29, 2024
9f54b91
Merge main into feature/dev-execution
aws-toolkit-automation Oct 29, 2024
7b11a9b
Merge main into feature/dev-execution
aws-toolkit-automation Oct 29, 2024
c6a0f28
Merge main into feature/dev-execution
aws-toolkit-automation Oct 30, 2024
fa75b82
Merge main into feature/dev-execution
aws-toolkit-automation Oct 30, 2024
492fd1b
Merge main into feature/dev-execution
aws-toolkit-automation Oct 30, 2024
52dc60b
Merge main into feature/dev-execution
aws-toolkit-automation Oct 31, 2024
2783f6b
Merge main into feature/dev-execution
aws-toolkit-automation Oct 31, 2024
a576cc2
Merge main into feature/dev-execution
aws-toolkit-automation Oct 31, 2024
ece7b3a
Merge main into feature/dev-execution
aws-toolkit-automation Oct 31, 2024
4528b93
Merge main into feature/dev-execution
aws-toolkit-automation Oct 31, 2024
144d085
Merge main into feature/dev-execution
aws-toolkit-automation Nov 1, 2024
52f2646
Merge main into feature/dev-execution
aws-toolkit-automation Nov 1, 2024
67b82bd
Merge main into feature/dev-execution
aws-toolkit-automation Nov 4, 2024
11b4074
Merge main into feature/dev-execution
aws-toolkit-automation Nov 5, 2024
a737df7
Merge main into feature/dev-execution
aws-toolkit-automation Nov 6, 2024
bfd1d9c
Merge main into feature/dev-execution
aws-toolkit-automation Nov 6, 2024
5ef4624
Merge main into feature/dev-execution
aws-toolkit-automation Nov 6, 2024
1e3b4bd
Merge main into feature/dev-execution
aws-toolkit-automation Nov 6, 2024
63da24a
Merge main into feature/dev-execution
aws-toolkit-automation Nov 6, 2024
c5f0a6d
Merge main into feature/dev-execution
aws-toolkit-automation Nov 6, 2024
e83be09
Merge main into feature/dev-execution
aws-toolkit-automation Nov 7, 2024
3e8f2cd
Merge main into feature/dev-execution
aws-toolkit-automation Nov 7, 2024
f521ab4
Merge main into feature/dev-execution
aws-toolkit-automation Nov 7, 2024
8a54e4f
Merge main into feature/dev-execution
aws-toolkit-automation Nov 7, 2024
39e5ddd
Merge main into feature/dev-execution
aws-toolkit-automation Nov 7, 2024
3a6c9e8
Merge main into feature/dev-execution
aws-toolkit-automation Nov 7, 2024
5a2cd7e
Merge main into feature/dev-execution
aws-toolkit-automation Nov 8, 2024
c92c65f
Merge main into feature/dev-execution
aws-toolkit-automation Nov 8, 2024
59c26dd
Merge main into feature/dev-execution
aws-toolkit-automation Nov 11, 2024
b811842
Merge main into feature/dev-execution
aws-toolkit-automation Nov 11, 2024
cf6f8af
Merge main into feature/dev-execution
aws-toolkit-automation Nov 12, 2024
cb37e54
Merge main into feature/dev-execution
aws-toolkit-automation Nov 12, 2024
8c894cd
Merge main into feature/dev-execution
aws-toolkit-automation Nov 12, 2024
41b4b51
Merge main into feature/dev-execution
aws-toolkit-automation Nov 12, 2024
b25b6c0
Merge main into feature/dev-execution
aws-toolkit-automation Nov 12, 2024
1513a47
Merge main into feature/dev-execution
aws-toolkit-automation Nov 12, 2024
dfb6a83
Merge main into feature/dev-execution
aws-toolkit-automation Nov 12, 2024
2a971e4
Merge main into feature/dev-execution
aws-toolkit-automation Nov 13, 2024
8452348
Merge main into feature/dev-execution
aws-toolkit-automation Nov 13, 2024
59b5717
Merge main into feature/dev-execution
aws-toolkit-automation Nov 13, 2024
ba4a55d
Merge main into feature/dev-execution
aws-toolkit-automation Nov 13, 2024
267afee
Merge main into feature/dev-execution
aws-toolkit-automation Nov 13, 2024
c847af9
Merge main into feature/dev-execution
aws-toolkit-automation Nov 13, 2024
8b9f0cb
Merge main into feature/dev-execution
aws-toolkit-automation Nov 14, 2024
2d9574f
Merge main into feature/dev-execution
aws-toolkit-automation Nov 14, 2024
fae7999
Merge main into feature/dev-execution
aws-toolkit-automation Nov 14, 2024
52bc481
Merge main into feature/dev-execution
aws-toolkit-automation Nov 14, 2024
6825653
Merge main into feature/dev-execution
aws-toolkit-automation Nov 15, 2024
d7b04db
Merge main into feature/dev-execution
aws-toolkit-automation Nov 15, 2024
966e680
Merge main into feature/dev-execution
aws-toolkit-automation Nov 16, 2024
efd9ebf
Merge main into feature/dev-execution
aws-toolkit-automation Nov 18, 2024
eb22f09
feat(feature dev): Add setting to allow Q to run code and test comman…
willyyhuang Nov 18, 2024
e179af8
Merge main into feature/dev-execution
aws-toolkit-automation Nov 18, 2024
a19a532
Merge main into feature/dev-execution
aws-toolkit-automation Nov 18, 2024
350a68b
Merge main into feature/dev-execution
aws-toolkit-automation Nov 19, 2024
c40de28
Merge main into feature/dev-execution
aws-toolkit-automation Nov 19, 2024
80da639
Merge main into feature/dev-execution
aws-toolkit-automation Nov 19, 2024
c408a22
Merge main into feature/dev-execution
aws-toolkit-automation Nov 19, 2024
0cd9271
Merge main into feature/dev-execution
aws-toolkit-automation Nov 19, 2024
d9b614f
Merge main into feature/dev-execution
aws-toolkit-automation Nov 20, 2024
f5baa9e
Merge main into feature/dev-execution
aws-toolkit-automation Nov 20, 2024
cd78308
Merge main into feature/dev-execution
aws-toolkit-automation Nov 20, 2024
13bf7e0
Merge main into feature/dev-execution
aws-toolkit-automation Nov 20, 2024
9a7b650
Merge main into feature/dev-execution
aws-toolkit-automation Nov 20, 2024
fb9c5d1
Merge main into feature/dev-execution
aws-toolkit-automation Nov 21, 2024
e5fdda3
Merge main into feature/dev-execution
aws-toolkit-automation Nov 21, 2024
101ed85
Merge main into feature/dev-execution
aws-toolkit-automation Nov 22, 2024
3efa7d1
Merge main into feature/dev-execution
aws-toolkit-automation Nov 22, 2024
98ebe97
Merge main into feature/dev-execution
aws-toolkit-automation Nov 22, 2024
99fd902
Merge main into feature/dev-execution
aws-toolkit-automation Nov 22, 2024
d134e34
Merge main into feature/dev-execution
aws-toolkit-automation Nov 22, 2024
84e0ee7
Merge main into feature/dev-execution
aws-toolkit-automation Nov 22, 2024
f87e47a
Merge main into feature/dev-execution
aws-toolkit-automation Nov 25, 2024
b7acdf9
Merge main into feature/dev-execution
aws-toolkit-automation Nov 26, 2024
3d4a38e
Merge main into feature/dev-execution
aws-toolkit-automation Nov 26, 2024
a0ed5fe
Merge remote-tracking branch 'origin/main' into HEAD
neilk-aws Jan 23, 2025
7d8aa84
Merge pull request #5135 from aws/autoMerge/feature/dev-execution
rli Jan 23, 2025
d714fa7
Merge main into feature/dev-execution
aws-toolkit-automation Jan 23, 2025
406d0ea
Merge main into feature/dev-execution
aws-toolkit-automation Jan 24, 2025
232a273
Update file generation logic and file upload functionality for dev-ex…
karanA-aws Jan 24, 2025
e3f7adb
Merge main into feature/dev-execution
aws-toolkit-automation Jan 27, 2025
ec81010
feat: Allow including binary files when auto build is enabled (#5299)
osdemah Jan 27, 2025
f1adf98
Merge main into feature/dev-execution
aws-toolkit-automation Jan 28, 2025
da0ce18
Merge main into feature/dev-execution
aws-toolkit-automation Jan 28, 2025
86e993e
docs(amazonq): Update autobuild setting strings (#5301)
neilk-aws Jan 28, 2025
dc893f5
Merge main into feature/dev-execution
aws-toolkit-automation Jan 28, 2025
8c4e77d
Merge main into feature/dev-execution
aws-toolkit-automation Jan 28, 2025
41ce1e3
Merge main into feature/dev-execution
aws-toolkit-automation Jan 28, 2025
c2d4417
Merge main into feature/dev-execution
aws-toolkit-automation Jan 28, 2025
9b1deb1
Merge main into feature/dev-execution
aws-toolkit-automation Jan 28, 2025
7c7afc4
chore: fix lint errors
rli Jan 28, 2025
5adb242
Merge main into feature/dev-execution
aws-toolkit-automation Jan 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"type" : "feature",
"description" : "Add setting to allow Q /dev to run code and test commands"
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class PrepareDocGenerationState(
var zipFileLength: Long? = null
val nextState: SessionState
try {
val repoZipResult = config.repoContext.getProjectZip()
val repoZipResult = config.repoContext.getProjectZip(false)
val zipFileChecksum = repoZipResult.checksum
zipFileLength = repoZipResult.contentLength
val fileToUpload = repoZipResult.payload
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ const val FEATURE_EVALUATION_PRODUCT_NAME = "FeatureDev"

const val FEATURE_NAME = "Amazon Q Developer Agent for software development"

@Suppress("MaxLineLength")
const val GENERATE_DEV_FILE_PROMPT = "generate a devfile in my repository. Note that you should only use devfile version 2.0.0 and the only supported commands are install, build and test (are all optional). so you may have to bundle some commands together using '&&'. also you can use \"public.ecr.aws/aws-mde/universal-image:latest\" as universal image if you aren’t sure which image to use. here is an example for a node repository (but don't assume it's always a node project. look at the existing repository structure before generating the devfile): schemaVersion: 2.0.0 components: - name: dev container: image: public.ecr.aws/aws-mde/universal-image:latest commands: - id: install exec: component: dev commandLine: \"npm install\" - id: build exec: component: dev commandLine: \"npm run build\" - id: test exec: component: dev commandLine: \"npm run test\""

// Max number of times a user can attempt to retry a code generation request if it fails
const val CODE_GENERATION_RETRY_LIMIT = 3

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,13 @@ import software.aws.toolkits.jetbrains.core.coroutines.EDT
import software.aws.toolkits.jetbrains.services.amazonq.RepoSizeError
import software.aws.toolkits.jetbrains.services.amazonq.apps.AmazonQAppInitContext
import software.aws.toolkits.jetbrains.services.amazonq.auth.AuthController
import software.aws.toolkits.jetbrains.services.amazonq.messages.MessagePublisher
import software.aws.toolkits.jetbrains.services.amazonq.toolwindow.AmazonQToolWindowFactory
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.CodeIterationLimitException
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.DEFAULT_RETRY_LIMIT
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.FEATURE_NAME
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.FeatureDevException
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.GENERATE_DEV_FILE_PROMPT
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.InboundAppMessagesHandler
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.ModifySourceFolderErrorReason
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.MonthlyConversationLimitError
Expand Down Expand Up @@ -77,6 +79,7 @@ import software.aws.toolkits.jetbrains.services.codewhisperer.util.content
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.telemetry.FeedbackComment
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.telemetry.getStartUrl
import software.aws.toolkits.jetbrains.services.telemetry.TelemetryService
import software.aws.toolkits.jetbrains.settings.CodeWhispererSettings
import software.aws.toolkits.jetbrains.ui.feedback.FeatureDevFeedbackDialog
import software.aws.toolkits.jetbrains.utils.notifyError
import software.aws.toolkits.resources.message
Expand Down Expand Up @@ -135,6 +138,16 @@ class FeatureDevController(
FollowUpTypes.PROVIDE_FEEDBACK_AND_REGENERATE_CODE -> provideFeedbackAndRegenerateCode(message.tabId)
FollowUpTypes.NEW_TASK -> newTask(message.tabId)
FollowUpTypes.CLOSE_SESSION -> closeSession(message.tabId)
FollowUpTypes.ACCEPT_AUTO_BUILD -> handleDevCommandUserSetting(message.tabId, true)
FollowUpTypes.DENY_AUTO_BUILD -> handleDevCommandUserSetting(message.tabId, false)
FollowUpTypes.GENERATE_DEV_FILE -> {
messenger.sendAnswer(
tabId = message.tabId,
messageType = FeatureDevMessageType.SystemPrompt,
message = message("amazonqFeatureDev.follow_up.generate_dev_file")
)
newTask(tabId = message.tabId, prefilledPrompt = GENERATE_DEV_FILE_PROMPT)
}
}
}

Expand Down Expand Up @@ -440,20 +453,38 @@ class FeatureDevController(
canBeVoted = true
)

messenger.sendSystemPrompt(
tabId = tabId,
followUp = listOf(
FollowUp(
pillText = message("amazonqFeatureDev.follow_up.new_task"),
type = FollowUpTypes.NEW_TASK,
status = FollowUpStatusType.Info
),
val followUps = mutableListOf(
FollowUp(
pillText = message("amazonqFeatureDev.follow_up.new_task"),
type = FollowUpTypes.NEW_TASK,
status = FollowUpStatusType.Info
),
FollowUp(
pillText = message("amazonqFeatureDev.follow_up.close_session"),
type = FollowUpTypes.CLOSE_SESSION,
status = FollowUpStatusType.Info
),
)

if (!session.context.checkForDevFile()) {
followUps.add(
FollowUp(
pillText = message("amazonqFeatureDev.follow_up.close_session"),
type = FollowUpTypes.CLOSE_SESSION,
pillText = message("amazonqFeatureDev.follow_up.generate_dev_file"),
type = FollowUpTypes.GENERATE_DEV_FILE,
status = FollowUpStatusType.Info
)
)

messenger.sendAnswer(
tabId = tabId,
message = message("amazonqFeatureDev.chat_message.generate_dev_file"),
messageType = FeatureDevMessageType.Answer
)
}

messenger.sendSystemPrompt(
tabId = tabId,
followUp = followUps
)

messenger.sendUpdatePlaceholder(
Expand All @@ -471,9 +502,7 @@ class FeatureDevController(
}
}

private suspend fun newTask(tabId: String, isException: Boolean? = false) {
this.disablePreviousFileList(tabId)

private suspend fun newTask(tabId: String, isException: Boolean? = false, prefilledPrompt: String? = null) {
val session = getSessionInfo(tabId)
val sessionLatency = System.currentTimeMillis() - session.sessionStartTime

Expand All @@ -485,15 +514,30 @@ class FeatureDevController(
chatSessionStorage.deleteSession(tabId)

newTabOpened(tabId)
if (isException != null && !isException) {
messenger.sendAnswer(
tabId = tabId,
messageType = FeatureDevMessageType.Answer,
message = message("amazonqFeatureDev.chat_message.ask_for_new_task")
)

if (prefilledPrompt != null && isException != null && !isException) {
handleChat(tabId = tabId, message = prefilledPrompt)
} else {
if (isException != null && !isException) {
messenger.sendAnswer(
tabId = tabId,
messageType = FeatureDevMessageType.Answer,
message = message("amazonqFeatureDev.chat_message.ask_for_new_task")
)
}
messenger.sendUpdatePlaceholder(tabId = tabId, newPlaceholder = message("amazonqFeatureDev.placeholder.new_plan"))
messenger.sendChatInputEnabledMessage(tabId = tabId, enabled = true)
}
messenger.sendUpdatePlaceholder(tabId = tabId, newPlaceholder = message("amazonqFeatureDev.placeholder.new_plan"))
messenger.sendChatInputEnabledMessage(tabId = tabId, enabled = true)
}

private suspend fun handleDevCommandUserSetting(tabId: String, value: Boolean) {
CodeWhispererSettings.getInstance().toggleAutoBuildFeature(context.project.basePath, value)
messenger.sendAnswer(
tabId = tabId,
message = message("amazonqFeatureDev.chat_message.setting_updated"),
messageType = FeatureDevMessageType.Answer,
)
this.retryRequests(tabId)
}

private suspend fun closeSession(tabId: String) {
Expand Down Expand Up @@ -670,6 +714,7 @@ class FeatureDevController(
try {
logger.debug { "$FEATURE_NAME: Processing message: $message" }
session = getSessionInfo(tabId)
session.latestMessage = message

val credentialState = authController.getAuthNeededStates(context.project).amazonQ
if (credentialState != null) {
Expand All @@ -682,8 +727,18 @@ class FeatureDevController(
return
}

session.preloader(message, messenger)
val codeWhispererSettings = CodeWhispererSettings.getInstance().getAutoBuildSetting()
val hasDevFile = session.context.checkForDevFile()
val isPromptedForAutoBuildFeature = codeWhispererSettings.containsKey(session.context.getWorkspaceRoot())

if (hasDevFile && !isPromptedForAutoBuildFeature) {
promptAllowQCommandsConsent(messenger, tabId)
return
}

session.preloader(messenger)
broadcastQEvent(QFeatureEvent.INVOCATION)

when (session.sessionState.phase) {
SessionStatePhase.CODEGEN -> onCodeGeneration(session, message, tabId)
else -> null
Expand All @@ -696,6 +751,30 @@ class FeatureDevController(
}
}

private suspend fun promptAllowQCommandsConsent(messenger: MessagePublisher, tabID: String) {
messenger.sendAnswer(
tabId = tabID,
message = message("amazonqFeatureDev.chat_message.devFileInRepository"),
messageType = FeatureDevMessageType.Answer
)
messenger.sendAnswer(
tabId = tabID,
messageType = FeatureDevMessageType.SystemPrompt,
followUp = listOf(
FollowUp(
pillText = message("amazonqFeatureDev.follow_up.accept_for_project"),
type = FollowUpTypes.ACCEPT_AUTO_BUILD,
status = FollowUpStatusType.Success
),
FollowUp(
pillText = message("amazonqFeatureDev.follow_up.decline_for_project"),
type = FollowUpTypes.DENY_AUTO_BUILD,
status = FollowUpStatusType.Error
)
)
)
}

private suspend fun retryRequests(tabId: String) {
var session: Session? = null
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,9 @@ enum class FollowUpTypes(
PROVIDE_FEEDBACK_AND_REGENERATE_CODE("ProvideFeedbackAndRegenerateCode"),
NEW_TASK("NewTask"),
CLOSE_SESSION("CloseSession"),
ACCEPT_AUTO_BUILD("AcceptAutoBuild"),
DENY_AUTO_BUILD("DenyAutoBuild"),
GENERATE_DEV_FILE("GenerateDevFile"),
}

// Util classes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.util.Cancellat
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.util.deleteUploadArtifact
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.util.uploadArtifactToS3
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.telemetry.getStartUrl
import software.aws.toolkits.jetbrains.settings.CodeWhispererSettings
import software.aws.toolkits.resources.message
import software.aws.toolkits.telemetry.AmazonqTelemetry
import software.aws.toolkits.telemetry.AmazonqUploadIntent
Expand Down Expand Up @@ -48,7 +49,8 @@ class PrepareCodeGenerationState(
messenger.sendAnswerPart(tabId = this.tabID, message = message("amazonqFeatureDev.chat_message.uploading_code"))
messenger.sendUpdatePlaceholder(tabId = this.tabID, newPlaceholder = message("amazonqFeatureDev.chat_message.uploading_code"))

val repoZipResult = config.repoContext.getProjectZip()
val isAutoBuildFeatureEnabled = CodeWhispererSettings.getInstance().isAutoBuildFeatureEnabled(this.config.repoContext.getWorkspaceRoot())
val repoZipResult = config.repoContext.getProjectZip(isAutoBuildFeatureEnabled = isAutoBuildFeatureEnabled)
val zipFileChecksum = repoZipResult.checksum
zipFileLength = repoZipResult.contentLength
val fileToUpload = repoZipResult.payload
Expand Down Expand Up @@ -96,7 +98,7 @@ class PrepareCodeGenerationState(
credentialStartUrl = getStartUrl(config.featureDevService.project)
)
}
// It is essential to interact with the next state outside of try-catch block for the telemetry to capture events for the states separately
// It is essential to interact with the next state outside try-catch block for the telemetry to capture events for the states separately
return nextState.interact(action)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ class Session(val tabID: String, val project: Project) {
/**
* Preload any events that have to run before a chat message can be sent
*/
suspend fun preloader(msg: String, messenger: MessagePublisher) {
suspend fun preloader(messenger: MessagePublisher) {
if (!preloaderFinished) {
setupConversation(msg, messenger)
setupConversation(messenger)
preloaderFinished = true
messenger.sendAsyncEventProgress(tabId = this.tabID, inProgress = true)
featureDevService.sendFeatureDevEvent(this.conversationId)
Expand All @@ -79,10 +79,7 @@ class Session(val tabID: String, val project: Project) {
/**
* Starts a conversation with the backend and uploads the repo for the LLMs to be able to use it.
*/
private fun setupConversation(msg: String, messenger: MessagePublisher) {
// Store the initial message when setting up the conversation so that if it fails we can retry with this message
_latestMessage = msg

private fun setupConversation(messenger: MessagePublisher) {
_conversationId = featureDevService.createConversation()
logger<Session>().info(conversationIDLog(this.conversationId))

Expand Down Expand Up @@ -281,8 +278,11 @@ class Session(val tabID: String, val project: Project) {
}
}

val latestMessage: String
var latestMessage: String
get() = this._latestMessage
set(value) {
this._latestMessage = value
}

val retries: Int
get() = codegenRetries
Expand Down
Loading
Loading