test-proposal-sentiment.js•1.98 kB
import { getProposalSentimentAnalysis } from './mcp/common/sentiment-service.js';
// Mock proposal data (similar to what we get from the getProposal endpoint)
const proposalData = {
  "number": 1,
  "proposer": "613BRiXuAEn7vibs2oAYzpGW9fXgjzDNuFMM4wPzLdY",
  "descriptionUrl": "https://example.com/proposal",
  "slotEnqueued": "1390bfa6",
  "state": {
    "failed": {}
  },
  "instruction": {
    "programId": "autowMzCbM29YXMgVG3T62Hkgo7RcyrvgQQkd54fDQL",
    "accounts": [
      {
        "pubkey": "F3hsZzWinRAHbr6CUxdkUFBCH8qNk6Mi9Zfu3PMX49BC",
        "isSigner": true,
        "isWritable": true
      }
    ],
    "data": {
      "type": "Buffer",
      "data": [131, 72, 75, 25, 112, 210, 109, 2, 1]
    }
  },
  "passAmm": "FxC4UcAJjJWRhq6zFwrwsk3EBrhahJGZyqv3SrFFQHs4",
  "failAmm": "Fj8qCBB2EG8rNE6jS98qGjjEFD26D6uExQe1yyDV1hhc",
  "baseVault": "FNrneRjDFe7TEHSnovU6jHVgoYRnVLwXqe2aWKjFvVkE",
  "quoteVault": "12AVXjbUy71eZS5nSEALSwtxjDX8786WTKVAsxzpvuzH",
  "dao": "F3hsZzWinRAHbr6CUxdkUFBCH8qNk6Mi9Zfu3PMX49BC",
  "passLpTokensLocked": "02540be400",
  "failLpTokensLocked": "02540be400",
  "nonce": "5d5a04daa6be",
  "pdaBump": 255,
  "question": "3jVzcQAuaT99mwwdYU4D5ECZknnKnuMJb8swrKkePyzY",
  "durationInSlots": "09e340"
};
// Demonstrate the combined data
async function demonstrateCombinedData() {
  try {
    const proposalId = "EV7WHwyo1H4XByhznMZLRGo32PZ4C5dwQEv8uPGN8VW8";
    console.log("Getting sentiment analysis for proposal:", proposalId);
    
    const sentimentAnalysis = await getProposalSentimentAnalysis(proposalId);
    
    // Combine proposal data with sentiment analysis (simulating what our updated API would do)
    const combinedData = {
      ...proposalData,
      sentimentAnalysis
    };
    
    console.log("Combined Proposal Data with Sentiment Analysis:");
    console.log(JSON.stringify(combinedData, null, 2));
  } catch (error) {
    console.error("Error:", error);
  }
}
// Run the demonstration
demonstrateCombinedData();