updateProjectState
codebolt.cbstate.updateProjectState(key: string, value: any): Promise<UpdateProjectStateResponse>Parameters
| Name | Type | Description | 
|---|---|---|
| key | string | The key of the project state property to update. | 
| value | any | The new value to set for the specified key. | 
Returns:
 Promise<UpdateProjectStateResponse>A promise that resolves with the update response containing success confirmation.Response Structure
The method returns a Promise that resolves to an UpdateProjectStateResponse object with the following properties:
type(string): Always "updateProjectStateResponse".message(string): Contains the result of the update operation. When successful, this will be "success".state(object, optional): May contain the updated state information as aRecord<string, any>object.success(boolean, optional): Indicates if the operation was successful.error(string, optional): Error details if the operation failed.messageId(string, optional): A unique identifier for the message.threadId(string, optional): The thread identifier.
What is updateProjectState?
The updateProjectState function allows you to save and update information that needs to be shared across your entire project. Think of it as a project-wide storage system where you can store settings, configurations, and data that should persist and be accessible from anywhere in your project.
Key Points:
- 📁 Project-wide storage - Data is available throughout your entire project
 - 💾 Persistent - Information stays saved even after restarting
 - 🔄 Real-time updates - Changes are immediately available
 - 🌐 Shared - All parts of your project can access the same data
 
When to Use This
Use updateProjectState when you need to:
- Store project settings (theme, language, preferences)
 - Save project metadata (name, version, description)
 - Keep track of project status or progress
 - Store configuration that multiple parts of your project need
 
Basic Usage
Simple Example - Store Project Name
// Save your project name
await codebolt.cbstate.updateProjectState('project_name', 'My Awesome App');
// The response will be:
// { type: 'updateProjectStateResponse', message: 'success' }
Store Different Types of Data
// Store text
await codebolt.cbstate.updateProjectState('project_description', 'A cool web application');
// Store numbers (as strings)
await codebolt.cbstate.updateProjectState('version_number', '1.0.0');
// Store dates
await codebolt.cbstate.updateProjectState('created_date', new Date().toISOString());
// Store true/false values
await codebolt.cbstate.updateProjectState('is_published', 'true');
Working with Complex Data
When you need to store objects or arrays, convert them to JSON strings first:
// Store user preferences
const userPreferences = {
    theme: 'dark',
    language: 'english',
    notifications: true,
    autoSave: true
};
await codebolt.cbstate.updateProjectState('user_preferences', JSON.stringify(userPreferences));
// Store a list of features
const enabledFeatures = ['chat', 'file-upload', 'dark-mode'];
await codebolt.cbstate.updateProjectState('enabled_features', JSON.stringify(enabledFeatures));
Complete Example - Project Setup
Here's how you might set up basic project information:
async function setupProject() {
    try {
        // Basic project info
        await codebolt.cbstate.updateProjectState('project_name', 'Todo App');
        await codebolt.cbstate.updateProjectState('version', '1.0.0');
        await codebolt.cbstate.updateProjectState('environment', 'development');
        
        // Project settings
        const settings = {
            theme: 'light',
            language: 'en',
            autoSave: true
        };
        await codebolt.cbstate.updateProjectState('settings', JSON.stringify(settings));
        
        // Track when project was last updated
        await codebolt.cbstate.updateProjectState('last_updated', new Date().toISOString());
        
        console.log('✅ Project setup complete!');
    } catch (error) {
        console.error('❌ Setup failed:', error);
    }
}
// Run the setup
setupProject();
Error Handling
Always handle potential errors when updating project state:
async function updateProjectSafely(key, value) {
    try {
        const result = await codebolt.cbstate.updateProjectState(key, value);
        
        if (result.message === 'success') {
            console.log(`✅ Successfully updated ${key}`);
            return true;
        } else {
            console.log(`⚠️ Unexpected response:`, result);
            return false;
        }
    } catch (error) {
        console.error(`❌ Failed to update ${key}:`, error.message);
        return false;
    }
}
// Usage
const success = await updateProjectSafely('project_status', 'active');
if (success) {
    console.log('Update confirmed!');
}
Updating Multiple Items
When you need to update several project state items:
async function updateMultipleSettings() {
    const updates = [
        { key: 'project_name', value: 'My New Project' },
        { key: 'version', value: '2.0.0' },
        { key: 'status', value: 'active' },
        { key: 'last_modified', value: new Date().toISOString() }
    ];
    
    console.log('Updating project settings...');
    
    for (const update of updates) {
        try {
            const result = await codebolt.cbstate.updateProjectState(update.key, update.value);
            if (result.message === 'success') {
                console.log(`✅ ${update.key}: ${update.value}`);
            }
        } catch (error) {
            console.error(`❌ Failed to update ${update.key}:`, error.message);
        }
    }
    
    console.log('Update process complete!');
}
updateMultipleSettings();
Response Format
When you call updateProjectState, you'll get back a response like this:
{
  type: 'updateProjectStateResponse',
  message: 'success'  // This means it worked!
}
Related Functions
- Use 
getApplicationState()to retrieve the values you've stored - Use 
addToAgentState()for session-specific data that doesn't need to persist project-wide