mirror of
https://github.com/anthropics/claude-plugins-official.git
synced 2026-04-18 22:12:39 +00:00
Compare commits
1 Commits
add-azure-
...
daisy/plug
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d01e0fbab2 |
@@ -7,16 +7,6 @@
|
||||
"email": "support@anthropic.com"
|
||||
},
|
||||
"plugins": [
|
||||
{
|
||||
"name": "adlc",
|
||||
"description": "Agentforce Agent Development Life Cycle — author, discover, scaffold, deploy, test, and optimize .agent files",
|
||||
"category": "development",
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/SalesforceAIResearch/agentforce-adlc.git"
|
||||
},
|
||||
"homepage": "https://github.com/SalesforceAIResearch/agentforce-adlc"
|
||||
},
|
||||
{
|
||||
"name": "adspirer-ads-agent",
|
||||
"description": "Cross-platform ad management for Google Ads, Meta Ads, TikTok Ads, and LinkedIn Ads. 91 tools for keyword research, campaign creation, performance analysis, and budget optimization.",
|
||||
@@ -179,27 +169,6 @@
|
||||
"category": "database",
|
||||
"homepage": "https://github.com/AzureCosmosDB/cosmosdb-claude-code-plugin"
|
||||
},
|
||||
{
|
||||
"name": "azure-skills",
|
||||
"description": "Microsoft Azure MCP integration for cloud resource management, deployments, and Azure services. Manage your Azure infrastructure, monitor applications, and deploy resources directly from Claude Code.",
|
||||
"category": "deployment",
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/microsoft/azure-skills.git"
|
||||
},
|
||||
"homepage": "https://github.com/microsoft/azure-skills"
|
||||
},
|
||||
{
|
||||
"name": "base44",
|
||||
"description": "Build and deploy Base44 full-stack apps with CLI project management and JavaScript/TypeScript SDK development skills",
|
||||
"category": "development",
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/base44/skills.git",
|
||||
"sha": "c7039b37eca0e2916a565a7395040c00055bcf8b"
|
||||
},
|
||||
"homepage": "https://docs.base44.com"
|
||||
},
|
||||
{
|
||||
"name": "box",
|
||||
"description": "Work with your Box content directly from Claude Code — search files, organize folders, collaborate with your team, and use Box AI to answer questions, summarize documents, and extract data without leaving your workflow.",
|
||||
|
||||
@@ -222,6 +222,8 @@ type GateResult =
|
||||
const recentSentIds = new Set<string>()
|
||||
const RECENT_SENT_CAP = 200
|
||||
|
||||
const dmChannelUsers = new Map<string, string>()
|
||||
|
||||
function noteSent(id: string): void {
|
||||
recentSentIds.add(id)
|
||||
if (recentSentIds.size > RECENT_SENT_CAP) {
|
||||
@@ -404,7 +406,8 @@ async function fetchAllowedChannel(id: string) {
|
||||
const ch = await fetchTextChannel(id)
|
||||
const access = loadAccess()
|
||||
if (ch.type === ChannelType.DM) {
|
||||
if (access.allowFrom.includes(ch.recipientId)) return ch
|
||||
const userId = ch.recipientId ?? dmChannelUsers.get(id)
|
||||
if (userId && access.allowFrom.includes(userId)) return ch
|
||||
} else {
|
||||
const key = ch.isThread() ? ch.parentId ?? ch.id : ch.id
|
||||
if (key in access.groups) return ch
|
||||
@@ -823,6 +826,10 @@ async function handleInbound(msg: Message): Promise<void> {
|
||||
|
||||
const chat_id = msg.channelId
|
||||
|
||||
if (msg.channel.type === ChannelType.DM) {
|
||||
dmChannelUsers.set(chat_id, msg.author.id)
|
||||
}
|
||||
|
||||
// Permission-reply intercept: if this looks like "yes xxxxx" for a
|
||||
// pending permission request, emit the structured event instead of
|
||||
// relaying as chat. The sender is already gate()-approved at this point
|
||||
|
||||
Reference in New Issue
Block a user