singularity-forge/vscode-extension/package.json
2026-05-08 03:01:20 +02:00

418 lines
8.9 KiB
JSON

{
"name": "sf-2",
"displayName": "SF-2",
"description": "VS Code integration for the SF-2 coding agent — sidebar dashboard, @sf chat participant, activity feed, conversation history, code lens, session forking, slash command completion, workflow controls, and 33 commands",
"publisher": "FluxLabs",
"version": "0.3.0",
"icon": "logo.jpg",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/singularity-forge/sf-run"
},
"homepage": "https://github.com/singularity-forge/sf-run/blob/main/vscode-extension/README.md",
"bugs": {
"url": "https://github.com/singularity-forge/sf-run/issues"
},
"keywords": [
"ai",
"agent",
"coding",
"sf",
"chat",
"automation",
"claude",
"openai",
"llm"
],
"galleryBanner": {
"color": "#1a1a2e",
"theme": "dark"
},
"extensionKind": [
"workspace"
],
"engines": {
"node": ">=26.1.0",
"vscode": "^1.95.0"
},
"categories": [
"AI",
"Chat"
],
"activationEvents": [
"onStartupFinished"
],
"main": "dist/extension.js",
"contributes": {
"commands": [
{
"command": "sf.start",
"title": "SF: Start Agent"
},
{
"command": "sf.stop",
"title": "SF: Stop Agent"
},
{
"command": "sf.newSession",
"title": "SF: New Session"
},
{
"command": "sf.sendMessage",
"title": "SF: Send Message"
},
{
"command": "sf.cycleModel",
"title": "SF: Cycle Model"
},
{
"command": "sf.cycleThinking",
"title": "SF: Cycle Thinking Level"
},
{
"command": "sf.compact",
"title": "SF: Compact Context"
},
{
"command": "sf.abort",
"title": "SF: Abort Current Operation"
},
{
"command": "sf.exportHtml",
"title": "SF: Export Conversation as HTML"
},
{
"command": "sf.sessionStats",
"title": "SF: Show Session Stats"
},
{
"command": "sf.runBash",
"title": "SF: Run Bash Command"
},
{
"command": "sf.switchModel",
"title": "SF: Switch Model"
},
{
"command": "sf.setThinking",
"title": "SF: Set Thinking Level"
},
{
"command": "sf.steer",
"title": "SF: Steer Agent"
},
{
"command": "sf.listCommands",
"title": "SF: List Available Commands"
},
{
"command": "sf.toggleAutoRetry",
"title": "SF: Toggle Auto-Retry"
},
{
"command": "sf.abortRetry",
"title": "SF: Abort Retry"
},
{
"command": "sf.setSessionName",
"title": "SF: Set Session Name"
},
{
"command": "sf.copyLastResponse",
"title": "SF: Copy Last Response"
},
{
"command": "sf.switchSession",
"title": "SF: Switch Session"
},
{
"command": "sf.refreshSessions",
"title": "SF: Refresh Sessions",
"icon": "$(refresh)"
},
{
"command": "sf.clearFileDecorations",
"title": "SF: Clear File Decorations"
},
{
"command": "sf.showHistory",
"title": "SF: Show Conversation History"
},
{
"command": "sf.askAboutSymbol",
"title": "SF: Ask About Symbol"
},
{
"command": "sf.clearActivity",
"title": "SF: Clear Activity Feed",
"icon": "$(clear-all)"
},
{
"command": "sf.forkSession",
"title": "SF: Fork Session"
},
{
"command": "sf.toggleSteeringMode",
"title": "SF: Toggle Steering Mode"
},
{
"command": "sf.toggleFollowUpMode",
"title": "SF: Toggle Follow-Up Mode"
},
{
"command": "sf.refactorSymbol",
"title": "SF: Refactor Symbol"
},
{
"command": "sf.findBugsSymbol",
"title": "SF: Find Bugs in Symbol"
},
{
"command": "sf.generateTestsSymbol",
"title": "SF: Generate Tests for Symbol"
},
{
"command": "sf.acceptAllChanges",
"title": "SF: Accept All Agent Changes",
"icon": "$(check-all)"
},
{
"command": "sf.discardAllChanges",
"title": "SF: Discard All Agent Changes",
"icon": "$(discard)"
},
{
"command": "sf.acceptFileChanges",
"title": "Accept Changes",
"icon": "$(check)"
},
{
"command": "sf.discardFileChanges",
"title": "Discard Changes",
"icon": "$(discard)"
},
{
"command": "sf.restoreCheckpoint",
"title": "SF: Restore Checkpoint"
},
{
"command": "sf.fixProblemsInFile",
"title": "SF: Fix Problems in File"
},
{
"command": "sf.fixAllProblems",
"title": "SF: Fix All Problems"
},
{
"command": "sf.clearDiagnostics",
"title": "SF: Clear Agent Diagnostics"
},
{
"command": "sf.commitAgentChanges",
"title": "SF: Commit Agent Changes"
},
{
"command": "sf.createAgentBranch",
"title": "SF: Create Branch for Agent Work"
},
{
"command": "sf.showAgentDiff",
"title": "SF: Show Agent Diff"
},
{
"command": "sf.clearPlan",
"title": "SF: Clear Plan View",
"icon": "$(clear-all)"
},
{
"command": "sf.cycleApprovalMode",
"title": "SF: Cycle Approval Mode"
},
{
"command": "sf.selectApprovalMode",
"title": "SF: Select Approval Mode"
}
],
"keybindings": [
{
"command": "sf.newSession",
"key": "ctrl+shift+g ctrl+shift+n",
"mac": "cmd+shift+g cmd+shift+n"
},
{
"command": "sf.cycleModel",
"key": "ctrl+shift+g ctrl+shift+m",
"mac": "cmd+shift+g cmd+shift+m"
},
{
"command": "sf.cycleThinking",
"key": "ctrl+shift+g ctrl+shift+t",
"mac": "cmd+shift+g cmd+shift+t"
},
{
"command": "sf.abort",
"key": "ctrl+shift+g ctrl+shift+a",
"mac": "cmd+shift+g cmd+shift+a"
},
{
"command": "sf.steer",
"key": "ctrl+shift+g ctrl+shift+i",
"mac": "cmd+shift+g cmd+shift+i"
},
{
"command": "sf.sendMessage",
"key": "ctrl+shift+g ctrl+shift+p",
"mac": "cmd+shift+g cmd+shift+p"
}
],
"viewsContainers": {
"activitybar": [
{
"id": "sf",
"title": "SF",
"icon": "$(hubot)"
}
]
},
"views": {
"sf": [
{
"type": "webview",
"id": "sf-sidebar",
"name": "SF Agent"
},
{
"id": "sf-sessions",
"name": "Sessions"
},
{
"id": "sf-activity",
"name": "Activity"
}
]
},
"menus": {
"view/title": [
{
"command": "sf.refreshSessions",
"when": "view == sf-sessions",
"group": "navigation"
},
{
"command": "sf.clearActivity",
"when": "view == sf-activity",
"group": "navigation"
}
],
"scm/title": [
{
"command": "sf.acceptAllChanges",
"group": "navigation",
"when": "scmProvider == sf"
},
{
"command": "sf.discardAllChanges",
"group": "navigation",
"when": "scmProvider == sf"
}
],
"scm/resourceState/context": [
{
"command": "sf.acceptFileChanges",
"group": "inline",
"when": "scmProvider == sf"
},
{
"command": "sf.discardFileChanges",
"group": "inline",
"when": "scmProvider == sf"
}
]
},
"chatParticipants": [
{
"id": "sf.agent",
"name": "sf",
"fullName": "SF Agent",
"description": "SF-2 coding agent",
"isSticky": true
}
],
"configuration": {
"title": "SF",
"properties": {
"sf.binaryPath": {
"type": "string",
"default": "sf",
"description": "Path to the SF binary"
},
"sf.autoStart": {
"type": "boolean",
"default": false,
"description": "Automatically start the SF agent when the extension activates"
},
"sf.autoCompaction": {
"type": "boolean",
"default": true,
"description": "Enable automatic context compaction"
},
"sf.codeLens": {
"type": "boolean",
"default": true,
"description": "Show 'Ask SF' code lens above functions and classes"
},
"sf.showProgressNotifications": {
"type": "boolean",
"default": false,
"description": "Show progress notification while the agent is working"
},
"sf.activityFeedMaxItems": {
"type": "number",
"default": 100,
"minimum": 10,
"maximum": 500,
"description": "Maximum number of items shown in the Activity feed"
},
"sf.showContextWarning": {
"type": "boolean",
"default": true,
"description": "Warn when context window usage exceeds the threshold"
},
"sf.contextWarningThreshold": {
"type": "number",
"default": 80,
"minimum": 50,
"maximum": 95,
"description": "Context window usage percentage that triggers a warning"
},
"sf.approvalMode": {
"type": "string",
"default": "auto-approve",
"enum": [
"auto-approve",
"ask",
"plan-only"
],
"enumDescriptions": [
"Agent runs freely without prompts",
"Prompt before file changes and commands",
"Read-only mode — agent can analyze but not modify"
],
"description": "Approval mode for agent actions"
}
}
}
},
"scripts": {
"build": "tsc",
"watch": "tsc --watch",
"package": "vsce package",
"publish": "vsce publish"
},
"devDependencies": {
"@types/vscode": "^1.95.0",
"@vscode/vsce": "^3.7.1",
"typescript": "^5.7.0"
}
}