Browse Source

Remove SimpleTelegramBot implementation and related references from the codebase to streamline functionality and improve maintainability.

darrenhinde 7 months ago
parent
commit
846f912629
8 changed files with 424 additions and 104 deletions
  1. 27 0
      .github/workflows/opencode.yml
  2. 0 0
      .opencode/plugin/lib/telegram-bot.ts
  3. 104 104
      .opencode/plugin/telegram-notify.ts
  4. 116 0
      bun.lock
  5. 13 0
      index.html
  6. 14 0
      package.json
  7. 35 0
      src/main.js
  8. 115 0
      src/style.css

+ 27 - 0
.github/workflows/opencode.yml

@@ -0,0 +1,27 @@
+name: opencode
+
+on:
+  issue_comment:
+    types: [created]
+
+jobs:
+  opencode:
+    if: |
+      contains(github.event.comment.body, ' /oc') ||
+      startsWith(github.event.comment.body, '/oc') ||
+      contains(github.event.comment.body, ' /opencode') ||
+      startsWith(github.event.comment.body, '/opencode')
+    runs-on: ubuntu-latest
+    permissions:
+      contents: read
+      id-token: write
+    steps:
+      - name: Checkout repository
+        uses: actions/checkout@v4
+
+      - name: Run opencode
+        uses: sst/opencode/github@latest
+        env:
+          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
+        with:
+          model: anthropic/claude-opus-4-20250514

.opencode/lib/telegram-bot.ts → .opencode/plugin/lib/telegram-bot.ts


+ 104 - 104
.opencode/plugin/telegram-notify.ts

@@ -1,125 +1,125 @@
-import type { Plugin } from "@opencode-ai/plugin"
-import { SimpleTelegramBot } from "../lib/telegram-bot"
+// import type { Plugin } from "@opencode-ai/plugin"
+// import { SimpleTelegramBot } from "../lib/telegram-bot"
 
-export const TelegramNotify: Plugin = async ({ $ }) => {
-  // Initialize Telegram bot
-  const bot = new SimpleTelegramBot()
-  let lastMessage = ""
+// export const TelegramNotify: Plugin = async ({ $ }) => {
+//   // Initialize Telegram bot
+//   const bot = new SimpleTelegramBot()
+//   let lastMessage = ""
   
-  return {
-    async event(input) {
-      if (input.event.type === "session.idle") {
-        // Send the last message content along with idle notification
-        const message = lastMessage 
-          ? `🟡 Session idle! Here's your last message:\n\n${lastMessage}`
-          : "🟡 Hey! Your OpenCode session is idle - time to check your work!"
-        bot.sendMessage(message)
-      }
+//   return {
+//     async event(input) {
+//       if (input.event.type === "session.idle") {
+//         // Send the last message content along with idle notification
+//         const message = lastMessage 
+//           ? `🟡 Session idle! Here's your last message:\n\n${lastMessage}`
+//           : "🟡 Hey! Your OpenCode session is idle - time to check your work!"
+//         bot.sendMessage(message)
+//       }
       
-      if (input.event.type === "message.updated") {
-        // Reset idle timer when user sends messages
-        bot.resetActivity()
+//       if (input.event.type === "message.updated") {
+//         // Reset idle timer when user sends messages
+//         bot.resetActivity()
         
-        const messageContent = (input.event as any).message?.content || 
-                              (input.event as any).content || ""
+//         const messageContent = (input.event as any).message?.content || 
+//                               (input.event as any).content || ""
         
-        // Check if it's a command to send last message
-        if (messageContent.includes("/send-last") || messageContent.includes("/last")) {
-          if (lastMessage) {
-            bot.sendMessage(`📱 Here's your last message:\n\n${lastMessage}`)
-          } else {
-            bot.sendMessage("📱 No previous message found.")
-          }
-          return
-        }
+//         // Check if it's a command to send last message
+//         if (messageContent.includes("/send-last") || messageContent.includes("/last")) {
+//           if (lastMessage) {
+//             bot.sendMessage(`📱 Here's your last message:\n\n${lastMessage}`)
+//           } else {
+//             bot.sendMessage("📱 No previous message found.")
+//           }
+//           return
+//         }
         
-        // Check if it's a command to send to phone
-        if (messageContent.includes("/send-to-phone") || messageContent.includes("/phone")) {
-          if (lastMessage) {
-            bot.sendMessage(`📱 Sending to your phone:\n\n${lastMessage}`)
-          } else {
-            bot.sendMessage("📱 No message to send to phone.")
-          }
-          return
-        }
+//         // Check if it's a command to send to phone
+//         if (messageContent.includes("/send-to-phone") || messageContent.includes("/phone")) {
+//           if (lastMessage) {
+//             bot.sendMessage(`📱 Sending to your phone:\n\n${lastMessage}`)
+//           } else {
+//             bot.sendMessage("📱 No message to send to phone.")
+//           }
+//           return
+//         }
         
-        // Try to capture message content from the event
-        try {
-          // Access message content if available
-          const messageContent = (input.event as any).message?.content || 
-                                (input.event as any).content ||
-                                "Message updated"
+//         // Try to capture message content from the event
+//         try {
+//           // Access message content if available
+//           const messageContent = (input.event as any).message?.content || 
+//                                 (input.event as any).content ||
+//                                 "Message updated"
           
-          if (messageContent && messageContent !== "Message updated") {
-            lastMessage = messageContent
+//           if (messageContent && messageContent !== "Message updated") {
+//             lastMessage = messageContent
             
-            // Send a preview of the message to Telegram
-            const preview = lastMessage.length > 200 
-              ? lastMessage.substring(0, 200) + "..."
-              : lastMessage
+//             // Send a preview of the message to Telegram
+//             const preview = lastMessage.length > 200 
+//               ? lastMessage.substring(0, 200) + "..."
+//               : lastMessage
             
-            bot.sendMessage(`📱 Last message preview:\n\n${preview}`)
-          }
-        } catch (error) {
-          // If we can't access the message content, just log it
-          console.log("Message updated but couldn't capture content")
-        }
-      }
+//             bot.sendMessage(`📱 Last message preview:\n\n${preview}`)
+//           }
+//         } catch (error) {
+//           // If we can't access the message content, just log it
+//           console.log("Message updated but couldn't capture content")
+//         }
+//       }
       
-      if (input.event.type === "file.edited") {
-        // Reset idle timer when user edits files
-        bot.resetActivity()
-      }
+//       if (input.event.type === "file.edited") {
+//         // Reset idle timer when user edits files
+//         bot.resetActivity()
+//       }
       
-      if (input.event.type === "message.updated") {
-        // Reset idle timer when user sends messages
-        bot.resetActivity()
+//       if (input.event.type === "message.updated") {
+//         // Reset idle timer when user sends messages
+//         bot.resetActivity()
         
-        // Try to capture message content from the event
-        try {
-          // Access message content if available
-          const messageContent = (input.event as any).message?.content || 
-                                (input.event as any).content ||
-                                "Message updated"
+//         // Try to capture message content from the event
+//         try {
+//           // Access message content if available
+//           const messageContent = (input.event as any).message?.content || 
+//                                 (input.event as any).content ||
+//                                 "Message updated"
           
-          if (messageContent && messageContent !== "Message updated") {
-            lastMessage = messageContent
+//           if (messageContent && messageContent !== "Message updated") {
+//             lastMessage = messageContent
             
-            // Send a preview of the message to Telegram
-            const preview = lastMessage.length > 200 
-              ? lastMessage.substring(0, 200) + "..."
-              : lastMessage
+//             // Send a preview of the message to Telegram
+//             const preview = lastMessage.length > 200 
+//               ? lastMessage.substring(0, 200) + "..."
+//               : lastMessage
             
-            bot.sendMessage(`📱 Last message preview:\n\n${preview}`)
-          }
-        } catch (error) {
-          // If we can't access the message content, just log it
-          console.log("Message updated but couldn't capture content")
-        }
-      }
+//             bot.sendMessage(`📱 Last message preview:\n\n${preview}`)
+//           }
+//         } catch (error) {
+//           // If we can't access the message content, just log it
+//           console.log("Message updated but couldn't capture content")
+//         }
+//       }
       
-      // Also listen for message parts being updated
-      if (input.event.type === "message.part.updated") {
-        bot.resetActivity()
+//       // Also listen for message parts being updated
+//       if (input.event.type === "message.part.updated") {
+//         bot.resetActivity()
         
-        try {
-          const partContent = (input.event as any).part?.content || 
-                             (input.event as any).content ||
-                             "Message part updated"
+//         try {
+//           const partContent = (input.event as any).part?.content || 
+//                              (input.event as any).content ||
+//                              "Message part updated"
           
-          if (partContent && partContent !== "Message part updated") {
-            lastMessage = partContent
+//           if (partContent && partContent !== "Message part updated") {
+//             lastMessage = partContent
             
-            const preview = lastMessage.length > 200 
-              ? lastMessage.substring(0, 200) + "..."
-              : lastMessage
+//             const preview = lastMessage.length > 200 
+//               ? lastMessage.substring(0, 200) + "..."
+//               : lastMessage
             
-            bot.sendMessage(`📱 Message part preview:\n\n${preview}`)
-          }
-        } catch (error) {
-          console.log("Message part updated but couldn't capture content")
-        }
-      }
-    }
-  }
-}
+//             bot.sendMessage(`📱 Message part preview:\n\n${preview}`)
+//           }
+//         } catch (error) {
+//           console.log("Message part updated but couldn't capture content")
+//         }
+//       }
+//     }
+//   }
+// }

File diff suppressed because it is too large
+ 116 - 0
bun.lock


+ 13 - 0
index.html

@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>OpenCode Agents</title>
+  </head>
+  <body>
+    <div id="app"></div>
+    <script type="module" src="/src/main.js"></script>
+  </body>
+</html>

+ 14 - 0
package.json

@@ -0,0 +1,14 @@
+{
+  "name": "opencode-agents-landing",
+  "private": true,
+  "version": "0.0.0",
+  "type": "module",
+  "scripts": {
+    "dev": "vite",
+    "build": "vite build",
+    "preview": "vite preview"
+  },
+  "devDependencies": {
+    "vite": "^5.0.8"
+  }
+}

+ 35 - 0
src/main.js

@@ -0,0 +1,35 @@
+import './style.css'
+
+document.querySelector('#app').innerHTML = `
+  <div class="container">
+    <div class="logo">🤖 OpenCode Agents</div>
+    <div class="tagline">Intelligent AI Agents for Development</div>
+    <div class="description">
+      Powerful AI agents designed to assist with software development, code review, testing, and documentation. 
+      Built to enhance developer productivity and streamline development workflows.
+    </div>
+    <button class="cta-button" id="get-started">Get Started</button>
+    
+    <div class="features">
+      <div class="feature">
+        <div class="feature-icon">🔍</div>
+        <h3>Code Analysis</h3>
+        <p>Advanced pattern analysis and codebase understanding to help you write better code.</p>
+      </div>
+      <div class="feature">
+        <div class="feature-icon">🧪</div>
+        <h3>Test Generation</h3>
+        <p>Automated test creation and TDD support to ensure code quality and reliability.</p>
+      </div>
+      <div class="feature">
+        <div class="feature-icon">📝</div>
+        <h3>Documentation</h3>
+        <p>Intelligent documentation generation and maintenance for your projects.</p>
+      </div>
+    </div>
+  </div>
+`
+
+document.querySelector('#get-started').addEventListener('click', () => {
+  alert('Welcome to OpenCode Agents! 🚀')
+})

+ 115 - 0
src/style.css

@@ -0,0 +1,115 @@
+* {
+    margin: 0;
+    padding: 0;
+    box-sizing: border-box;
+}
+
+body {
+    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
+    line-height: 1.6;
+    color: #333;
+    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+    min-height: 100vh;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.container {
+    max-width: 800px;
+    margin: 0 auto;
+    padding: 2rem;
+    text-align: center;
+    background: rgba(255, 255, 255, 0.95);
+    border-radius: 20px;
+    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
+    backdrop-filter: blur(10px);
+}
+
+.logo {
+    font-size: 3rem;
+    font-weight: bold;
+    color: #764ba2;
+    margin-bottom: 1rem;
+    text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);
+}
+
+.tagline {
+    font-size: 1.5rem;
+    color: #666;
+    margin-bottom: 2rem;
+    font-weight: 300;
+}
+
+.description {
+    font-size: 1.1rem;
+    color: #555;
+    margin-bottom: 2.5rem;
+    max-width: 600px;
+    margin-left: auto;
+    margin-right: auto;
+}
+
+.cta-button {
+    display: inline-block;
+    background: linear-gradient(45deg, #667eea, #764ba2);
+    color: white;
+    padding: 1rem 2rem;
+    text-decoration: none;
+    border-radius: 50px;
+    font-weight: 600;
+    font-size: 1.1rem;
+    transition: all 0.3s ease;
+    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
+    cursor: pointer;
+    border: none;
+}
+
+.cta-button:hover {
+    transform: translateY(-2px);
+    box-shadow: 0 15px 25px rgba(0, 0, 0, 0.2);
+}
+
+.features {
+    display: grid;
+    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
+    gap: 2rem;
+    margin-top: 3rem;
+}
+
+.feature {
+    padding: 1.5rem;
+    background: rgba(255, 255, 255, 0.8);
+    border-radius: 15px;
+    border: 1px solid rgba(255, 255, 255, 0.2);
+}
+
+.feature-icon {
+    font-size: 2.5rem;
+    margin-bottom: 1rem;
+}
+
+.feature h3 {
+    margin-bottom: 0.5rem;
+    color: #764ba2;
+}
+
+.feature p {
+    color: #666;
+    font-size: 0.95rem;
+}
+
+@media (max-width: 768px) {
+    .container {
+        margin: 1rem;
+        padding: 1.5rem;
+    }
+    
+    .logo {
+        font-size: 2rem;
+    }
+    
+    .tagline {
+        font-size: 1.2rem;
+    }
+}