{
"name": "abysius-ai",
"displayName": "Abysius AI",
"description": "Inline completion and AI chat powered by Abysius",
"version": "0.1.0",
"publisher": "abysius",
"license": "MIT",
"engines": {
"vscode": "^1.90.0"
},
"categories": [
"Machine Learning",
"Chat",
"Programming Languages"
],
"keywords": [
"ai",
"inline completion",
"chat",
"abysius",
"copilot",
"llm"
],
"activationEvents": [
"onStartupFinished"
],
"main": "./out/extension.js",
"icon": "assets/icon.png",
"contributes": {
"configuration": {
"title": "Abysius AI",
"properties": {
"abysius.enableInlineCompletions": {
"type": "boolean",
"default": true,
"description": "Enable AI-powered inline completions (ghost text)",
"order": 1
},
"abysius.inlineCompletionDelay": {
"type": "number",
"default": 300,
"minimum": 50,
"maximum": 2000,
"description": "Delay in ms before requesting inline completions",
"order": 2
},
"abysius.inlineCompletionMaxLength": {
"type": "number",
"default": 200,
"minimum": 50,
"maximum": 2000,
"description": "Maximum length of inline completion suggestions",
"order": 3
},
"abysius.chatEndpoint": {
"type": "string",
"default": "https://api.abysius.ai/v1/chat",
"description": "Abysius AI chat API endpoint",
"order": 4
},
"abysius.inlineEndpoint": {
"type": "string",
"default": "https://api.abysius.ai/v1/inline",
"description": "Abysius AI inline completion API endpoint",
"order": 5
},
"abysius.apiKey": {
"type": "string",
"default": "",
"description": "Your Abysius API key",
"order": 6
},
"abysius.model": {
"type": "string",
"default": "abysius-coder",
"description": "Model to use for completions and chat",
"enum": [
"abysius-coder",
"abysius-chat",
"abysius-fast"
],
"enumDescriptions": [
"Optimized for code completion",
"Optimized for conversational chat",
"Fastest response time"
],
"order": 7
},
"abysius.showInlineDiff": {
"type": "boolean",
"default": true,
"description": "Show diff-style highlights in inline completions",
"order": 8
},
"abysius.telemetry": {
"type": "boolean",
"default": false,
"description": "Enable anonymous usage telemetry",
"order": 9
},
"abysius.privacyConsent": {
"type": "boolean",
"default": false,
"description": "Consent to processing of code snippets by Abysius AI services (required)",
"order": 10
},
"abysius.dataResidency": {
"type": "string",
"default": "auto",
"enum": ["auto", "us", "eu", "asia"],
"enumDescriptions": [
"Route to nearest region",
"Route to US infrastructure only",
"Route to EU infrastructure only",
"Route to Asia-Pacific infrastructure only"
],
"description": "Control where your code snippets are processed (GDPR/data residency)",
"order": 11
},
"abysius.enableAuditLog": {
"type": "boolean",
"default": true,
"description": "Enable local audit logging of AI completions for accountability",
"order": 12
},
"abysius.retentionDays": {
"type": "number",
"default": 30,
"minimum": 0,
"maximum": 365,
"description": "Days to retain chat history locally (0 = session-only)",
"order": 13
},
"abysius.geoBlockRestrictedRegions": {
"type": "boolean",
"default": true,
"description": "Block AI requests from OFAC-sanctioned regions (CU, IR, KP, RU, SY)",
"order": 14
},
"abysius.enableSimilarityAudit": {
"type": "boolean",
"default": true,
"description": "Log suggestion similarity scores to detect verbatim reproduction of training data",
"order": 15
},
"abysius.anonymizeFilePaths": {
"type": "boolean",
"default": true,
"description": "Send only filenames (not full paths) to AI servers for privacy",
"order": 16
}
}
},
"commands": [
{
"command": "abysius.openChat",
"title": "Open Abysius Chat",
"icon": "$(comment-discussion)",
"category": "Abysius AI"
},
{
"command": "abysius.acceptInlineCompletion",
"title": "Accept Inline Completion",
"keybinding": {
"command": "abysius.acceptInlineCompletion",
"key": "tab",
"when": "abysiusInlineCompletionVisible && editorTextFocus && !editorReadonly"
},
"category": "Abysius AI"
},
{
"command": "abysius.rejectInlineCompletion",
"title": "Reject Inline Completion",
"keybinding": {
"command": "abysius.rejectInlineCompletion",
"key": "escape",
"when": "abysiusInlineCompletionVisible && editorTextFocus"
},
"category": "Abysius AI"
},
{
"command": "abysius.triggerInlineCompletion",
"title": "Trigger Inline Completion",
"keybinding": {
"command": "abysius.triggerInlineCompletion",
"key": "ctrl+space",
"mac": "cmd+space",
"when": "editorTextFocus && !editorReadonly"
},
"category": "Abysius AI"
},
{
"command": "abysius.openSettings",
"title": "Open Abysius Settings",
"category": "Abysius AI"
},
{
"command": "abysius.clearChat",
"title": "Clear Chat History",
"icon": "$(clear-all)",
"category": "Abysius AI"
}
],
"viewsContainers": {
"activitybar": [
{
"id": "abysiusChat",
"title": "Abysius AI",
"icon": "$(comment-discussion)"
}
]
},
"views": {
"abysiusChat": [
{
"id": "abysius.chatPanel",
"name": "Chat",
"type": "webview",
"icon": "$(comment-discussion)"
}
],
"explorer": [
{
"id": "abysius.chatView",
"name": "Abysius Chat",
"when": "abysiusChatEnabled",
"icon": "$(comment-discussion)",
"contextualTitle": "Abysius Chat"
}
]
},
"menus": {
"commandPalette": [
{
"command": "abysius.acceptInlineCompletion",
"when": "false"
},
{
"command": "abysius.rejectInlineCompletion",
"when": "false"
}
],
"editor/context": [
{
"command": "abysius.triggerInlineCompletion",
"group": "9_cutcopypaste@5",
"when": "editorTextFocus && !editorReadonly"
}
],
"view/title": [
{
"command": "abysius.clearChat",
"group": "navigation",
"when": "view == abysius.chatPanel"
}
]
},
"keybindings": [
{
"command": "abysius.acceptNextWord",
"key": "ctrl+right",
"mac": "cmd+right",
"when": "abysiusInlineCompletionVisible && editorTextFocus && !editorReadonly"
}
]
},
"scripts": {
"vscode:prepublish": "npm run compile",
"compile": "tsc -p ./",
"watch": "tsc -watch -p ./",
"lint": "eslint src --ext ts",
"package": "vsce package"
},
"devDependencies": {
"@types/node": "^20.14.0",
"@types/vscode": "^1.90.0",
"@typescript-eslint/eslint-plugin": "^7.0.0",
"@typescript-eslint/parser": "^7.0.0",
"eslint": "^8.57.0",
"typescript": "^5.4.0"
},
"dependencies": {}
}