{
	"name": "agentuity-vscode",
	"displayName": "Agentuity VSCode Extension",
	"description": "Build, deploy, and manage AI agents with Agentuity",
	"version": "1.0.5",
	"publisher": "agentuity",
	"license": "Apache-2.0",
	"repository": {
		"type": "git",
		"url": "https://github.com/agentuity/sdk"
	},
	"engines": {
		"vscode": "^1.90.0"
	},
	"enabledApiProposals": [
		"chatContextProvider"
	],
	"categories": [
		"Other",
		"Snippets"
	],
	"keywords": [
		"agentuity",
		"ai",
		"agents",
		"llm"
	],
	"icon": "resources/icon.png",
	"activationEvents": [
		"onStartupFinished",
		"onChatContextProvider:agentuity.context"
	],
	"main": "./dist/extension.js",
	"contributes": {
		"commands": [
			{
				"command": "agentuity.login",
				"title": "Login",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.logout",
				"title": "Logout",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.whoami",
				"title": "Who Am I?",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.org.select",
				"title": "Switch Default Organization",
				"category": "Agentuity",
				"icon": "$(organization)"
			},
			{
				"command": "agentuity.region.select",
				"title": "Switch Default Region",
				"category": "Agentuity",
				"icon": "$(globe)"
			},
			{
				"command": "agentuity.refresh",
				"title": "Refresh All",
				"category": "Agentuity",
				"icon": "$(refresh)"
			},
			{
				"command": "agentuity.agents.refresh",
				"title": "Refresh Agents",
				"category": "Agentuity",
				"icon": "$(refresh)"
			},
			{
				"command": "agentuity.deployments.refresh",
				"title": "Refresh Deployments",
				"category": "Agentuity",
				"icon": "$(refresh)"
			},
			{
				"command": "agentuity.data.refresh",
				"title": "Refresh Data",
				"category": "Agentuity",
				"icon": "$(refresh)"
			},
			{
				"command": "agentuity.dev.start",
				"title": "Start Dev Server",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.dev.stop",
				"title": "Stop Dev Server",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.dev.restart",
				"title": "Restart Dev Server",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.dev.showLogs",
				"title": "Show Dev Server Logs",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.workbench.open",
				"title": "Open Workbench",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.deploy",
				"title": "Deploy",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.getAiCapabilities",
				"title": "Get AI Capabilities (JSON)",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.getAiSchema",
				"title": "Get AI Schema (JSON)",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.deployment.viewLogs",
				"title": "View Deployment Logs",
				"category": "Agentuity",
				"icon": "$(output)"
			},
			{
				"command": "agentuity.deployment.showDetails",
				"title": "Show Deployment Details",
				"category": "Agentuity",
				"icon": "$(info)"
			},
			{
				"command": "agentuity.db.copyConnectionString",
				"title": "Copy Connection String",
				"category": "Agentuity",
				"icon": "$(copy)"
			},
			{
				"command": "agentuity.db.openConnectionUri",
				"title": "Open Connection URI",
				"category": "Agentuity",
				"icon": "$(link-external)"
			},
			{
				"command": "agentuity.db.viewLogs",
				"title": "View Database Logs",
				"category": "Agentuity",
				"icon": "$(output)"
			},
			{
				"command": "agentuity.vector.search",
				"title": "Search Vectors",
				"category": "Agentuity",
				"icon": "$(search)"
			},
			{
				"command": "agentuity.vector.clearSearches",
				"title": "Clear Vector Searches",
				"category": "Agentuity",
				"icon": "$(clear-all)"
			},
			{
				"command": "agentuity.agent.goToFile",
				"title": "Go to Source File",
				"category": "Agentuity",
				"icon": "$(go-to-file)"
			},
			{
				"command": "agentuity.agent.viewSessions",
				"title": "View Sessions",
				"category": "Agentuity",
				"icon": "$(pulse)"
			},
			{
				"command": "agentuity.agent.viewSessionLogs",
				"title": "View Session Logs",
				"category": "Agentuity",
				"icon": "$(output)"
			},
			{
				"command": "agentuity.installCli",
				"title": "Install CLI",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.createProject",
				"title": "Create Project",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.codeLens.openInWorkbench",
				"title": "Open Agent in Workbench",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.codeLens.viewSessions",
				"title": "View Agent Sessions",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.createCustomAgents",
				"title": "Create Custom Agents for Background Use",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.sandbox.refresh",
				"title": "Refresh Sandboxes",
				"category": "Agentuity",
				"icon": "$(refresh)"
			},
			{
				"command": "agentuity.sandbox.showQuickPick",
				"title": "Sandbox Quick Actions",
				"category": "Agentuity",
				"icon": "$(vm)"
			},
			{
				"command": "agentuity.sandbox.create",
				"title": "Create Sandbox",
				"category": "Agentuity",
				"icon": "$(add)"
			},
			{
				"command": "agentuity.sandbox.createFromSnapshot",
				"title": "Create Sandbox from Snapshot",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.sandbox.delete",
				"title": "Delete Sandbox",
				"category": "Agentuity",
				"icon": "$(trash)"
			},
			{
				"command": "agentuity.sandbox.link",
				"title": "Link Sandbox to Workspace",
				"category": "Agentuity",
				"icon": "$(link)"
			},
			{
				"command": "agentuity.sandbox.unlink",
				"title": "Unlink Sandbox",
				"category": "Agentuity",
				"icon": "$(debug-disconnect)"
			},
			{
				"command": "agentuity.sandbox.sync",
				"title": "Sync Project to Sandbox",
				"category": "Agentuity",
				"icon": "$(sync)"
			},
			{
				"command": "agentuity.sandbox.exec",
				"title": "Execute Command in Sandbox",
				"category": "Agentuity",
				"icon": "$(terminal)"
			},
			{
				"command": "agentuity.sandbox.viewFile",
				"title": "View File",
				"category": "Agentuity",
				"icon": "$(go-to-file)"
			},
			{
				"command": "agentuity.sandbox.download",
				"title": "Download",
				"category": "Agentuity",
				"icon": "$(cloud-download)"
			},
			{
				"command": "agentuity.sandbox.upload",
				"title": "Upload to Sandbox",
				"category": "Agentuity",
				"icon": "$(cloud-upload)"
			},
			{
				"command": "agentuity.sandbox.deleteFile",
				"title": "Delete File",
				"category": "Agentuity",
				"icon": "$(trash)"
			},
			{
				"command": "agentuity.sandbox.createFile",
				"title": "New File",
				"category": "Agentuity",
				"icon": "$(new-file)"
			},
			{
				"command": "agentuity.sandbox.createFolder",
				"title": "New Folder",
				"category": "Agentuity",
				"icon": "$(new-folder)"
			},
			{
				"command": "agentuity.sandbox.copyPath",
				"title": "Copy Path",
				"category": "Agentuity",
				"icon": "$(copy)"
			},
			{
				"command": "agentuity.sandbox.viewExecution",
				"title": "View Execution",
				"category": "Agentuity",
				"icon": "$(output)"
			},
			{
				"command": "agentuity.sandbox.setEnv",
				"title": "Set Environment Variable",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.sandbox.viewEnv",
				"title": "View Environment",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.sandbox.syncEnvFile",
				"title": "Sync .env to Sandbox",
				"category": "Agentuity"
			},
			{
				"command": "agentuity.sandbox.snapshot.create",
				"title": "Create Snapshot",
				"category": "Agentuity",
				"icon": "$(device-camera)"
			},
			{
				"command": "agentuity.sandbox.snapshot.delete",
				"title": "Delete Snapshot",
				"category": "Agentuity",
				"icon": "$(trash)"
			},
			{
				"command": "agentuity.sandbox.snapshot.tag",
				"title": "Tag Snapshot",
				"category": "Agentuity",
				"icon": "$(tag)"
			},
			{
				"command": "agentuity.sandbox.snapshot.viewDetails",
				"title": "View Snapshot Details",
				"category": "Agentuity",
				"icon": "$(json)"
			},
			{
				"command": "agentuity.sandbox.snapshot.viewFile",
				"title": "View Snapshot File",
				"category": "Agentuity",
				"icon": "$(go-to-file)"
			},
			{
				"command": "agentuity.queue.create",
				"title": "Create Queue",
				"category": "Agentuity",
				"icon": "$(add)"
			},
			{
				"command": "agentuity.queue.delete",
				"title": "Delete Queue",
				"category": "Agentuity",
				"icon": "$(trash)"
			},
			{
				"command": "agentuity.queue.pause",
				"title": "Pause Queue",
				"category": "Agentuity",
				"icon": "$(debug-pause)"
			},
			{
				"command": "agentuity.queue.resume",
				"title": "Resume Queue",
				"category": "Agentuity",
				"icon": "$(debug-start)"
			},
			{
				"command": "agentuity.queue.publish",
				"title": "Publish Message",
				"category": "Agentuity",
				"icon": "$(mail)"
			},
			{
				"command": "agentuity.queue.viewMessage",
				"title": "View Message",
				"category": "Agentuity",
				"icon": "$(eye)"
			},
			{
				"command": "agentuity.queue.copyMessageId",
				"title": "Copy Message ID",
				"category": "Agentuity",
				"icon": "$(copy)"
			},
			{
				"command": "agentuity.queue.refreshMessages",
				"title": "Refresh Messages",
				"category": "Agentuity",
				"icon": "$(refresh)"
			},
			{
				"command": "agentuity.queue.dlq.replay",
				"title": "Replay DLQ Message",
				"category": "Agentuity",
				"icon": "$(refresh)"
			},
			{
				"command": "agentuity.queue.dlq.purge",
				"title": "Purge Dead Letter Queue",
				"category": "Agentuity",
				"icon": "$(trash)"
			},
			{
				"command": "agentuity.queue.destination.create",
				"title": "Create Destination",
				"category": "Agentuity",
				"icon": "$(add)"
			},
			{
				"command": "agentuity.queue.destination.delete",
				"title": "Delete Destination",
				"category": "Agentuity",
				"icon": "$(trash)"
			},
			{
				"command": "agentuity.queue.destination.toggle",
				"title": "Toggle Destination",
				"category": "Agentuity",
				"icon": "$(toggle-off)"
			},
			{
				"command": "agentuity.queue.destination.copyUrl",
				"title": "Copy URL",
				"category": "Agentuity",
				"icon": "$(copy)"
			}
		],
		"viewsContainers": {
			"activitybar": [
				{
					"id": "agentuity",
					"title": "Agentuity",
					"icon": "resources/icon.svg"
				}
			]
		},
		"views": {
			"agentuity": [
				{
					"id": "agentuity.agents",
					"name": "Agents",
					"contextualTitle": "Agentuity Agents"
				},
				{
					"id": "agentuity.sandboxes",
					"name": "Sandboxes",
					"contextualTitle": "Agentuity Sandboxes"
				},
				{
					"id": "agentuity.deployments",
					"name": "Deployments",
					"contextualTitle": "Agentuity Deployments"
				},
				{
					"id": "agentuity.data",
					"name": "Data",
					"contextualTitle": "Agentuity Data"
				}
			]
		},
		"menus": {
			"view/title": [
				{
					"command": "agentuity.agents.refresh",
					"when": "view == agentuity.agents",
					"group": "navigation"
				},
				{
					"command": "agentuity.deploy",
					"when": "view == agentuity.agents && agentuity.hasProject",
					"group": "1_actions"
				},
				{
					"command": "agentuity.dev.start",
					"when": "view == agentuity.agents && agentuity.hasProject && !agentuity.devServerRunning",
					"group": "1_actions"
				},
				{
					"command": "agentuity.dev.stop",
					"when": "view == agentuity.agents && agentuity.devServerRunning",
					"group": "1_actions"
				},
				{
					"command": "agentuity.workbench.open",
					"when": "view == agentuity.agents && agentuity.hasProject",
					"group": "2_links"
				},
				{
					"command": "agentuity.deployments.refresh",
					"when": "view == agentuity.deployments",
					"group": "navigation"
				},
				{
					"command": "agentuity.data.refresh",
					"when": "view == agentuity.data",
					"group": "navigation"
				},
				{
					"command": "agentuity.sandbox.refresh",
					"when": "view == agentuity.sandboxes",
					"group": "navigation"
				},
				{
					"command": "agentuity.sandbox.create",
					"when": "view == agentuity.sandboxes",
					"group": "navigation"
				},
				{
					"command": "agentuity.queue.create",
					"when": "view == agentuity.data",
					"group": "navigation"
				}
			],
			"view/item/context": [
				{
					"command": "agentuity.deployment.viewLogs",
					"when": "view == agentuity.deployments && viewItem == deployment",
					"group": "inline"
				},
				{
					"command": "agentuity.deployment.showDetails",
					"when": "view == agentuity.deployments && viewItem == deployment",
					"group": "context"
				},
				{
					"command": "agentuity.db.copyConnectionString",
					"when": "view == agentuity.data && viewItem == database",
					"group": "inline"
				},
				{
					"command": "agentuity.db.openConnectionUri",
					"when": "view == agentuity.data && viewItem == database",
					"group": "context"
				},
				{
					"command": "agentuity.db.viewLogs",
					"when": "view == agentuity.data && viewItem == database",
					"group": "context"
				},
				{
					"command": "agentuity.vector.search",
					"when": "view == agentuity.data && viewItem == category-vector",
					"group": "inline"
				},
				{
					"command": "agentuity.vector.clearSearches",
					"when": "view == agentuity.data && viewItem == vectorSearchGroup",
					"group": "context"
				},
				{
					"command": "agentuity.agent.viewSessions",
					"when": "view == agentuity.agents && viewItem == agent",
					"group": "inline"
				},
				{
					"command": "agentuity.agent.goToFile",
					"when": "view == agentuity.agents && viewItem == agent",
					"group": "1_navigation"
				},
				{
					"command": "agentuity.agent.viewSessions",
					"when": "view == agentuity.agents && viewItem == agent",
					"group": "2_actions"
				},
				{
					"command": "agentuity.sandbox.exec",
					"when": "view == agentuity.sandboxes && viewItem =~ /^sandbox\\.(idle|running)/",
					"group": "inline"
				},
				{
					"command": "agentuity.sandbox.sync",
					"when": "view == agentuity.sandboxes && viewItem =~ /\\.linked/",
					"group": "inline"
				},
				{
					"command": "agentuity.sandbox.exec",
					"when": "view == agentuity.sandboxes && viewItem =~ /^sandbox\\.(idle|running)/",
					"group": "1_execute@1"
				},
				{
					"command": "agentuity.sandbox.sync",
					"when": "view == agentuity.sandboxes && viewItem =~ /\\.linked/",
					"group": "2_sync@1"
				},
				{
					"command": "agentuity.sandbox.link",
					"when": "view == agentuity.sandboxes && viewItem =~ /^sandbox\\.idle/ && viewItem !~ /linked/",
					"group": "3_link@1"
				},
				{
					"command": "agentuity.sandbox.unlink",
					"when": "view == agentuity.sandboxes && viewItem =~ /\\.linked/",
					"group": "3_link@2"
				},
				{
					"command": "agentuity.sandbox.snapshot.create",
					"when": "view == agentuity.sandboxes && viewItem =~ /^sandbox\\.(idle|running)/",
					"group": "4_snapshot@1"
				},
				{
					"command": "agentuity.sandbox.setEnv",
					"when": "view == agentuity.sandboxes && viewItem =~ /^sandbox\\.(idle|running)/",
					"group": "5_env@1"
				},
				{
					"command": "agentuity.sandbox.viewEnv",
					"when": "view == agentuity.sandboxes && viewItem =~ /^sandbox\\.(idle|running)/",
					"group": "5_env@2"
				},
				{
					"command": "agentuity.sandbox.syncEnvFile",
					"when": "view == agentuity.sandboxes && viewItem =~ /^sandbox\\.(idle|running)/",
					"group": "5_env@3"
				},
				{
					"command": "agentuity.sandbox.delete",
					"when": "view == agentuity.sandboxes && viewItem =~ /^sandbox\\./",
					"group": "9_delete@1"
				},
				{
					"command": "agentuity.sandbox.viewFile",
					"when": "view == agentuity.sandboxes && viewItem == sandboxFile",
					"group": "1_view@1"
				},
				{
					"command": "agentuity.sandbox.download",
					"when": "view == agentuity.sandboxes && viewItem =~ /^sandboxFile/",
					"group": "2_transfer@1"
				},
				{
					"command": "agentuity.sandbox.copyPath",
					"when": "view == agentuity.sandboxes && viewItem =~ /^sandboxFile/",
					"group": "inline"
				},
				{
					"command": "agentuity.sandbox.createFile",
					"when": "view == agentuity.sandboxes && viewItem == sandboxCategory.files",
					"group": "1_create@1"
				},
				{
					"command": "agentuity.sandbox.createFolder",
					"when": "view == agentuity.sandboxes && viewItem == sandboxCategory.files",
					"group": "1_create@2"
				},
				{
					"command": "agentuity.sandbox.createFile",
					"when": "view == agentuity.sandboxes && viewItem == sandboxFile.directory",
					"group": "1_create@1"
				},
				{
					"command": "agentuity.sandbox.createFolder",
					"when": "view == agentuity.sandboxes && viewItem == sandboxFile.directory",
					"group": "1_create@2"
				},
				{
					"command": "agentuity.sandbox.deleteFile",
					"when": "view == agentuity.sandboxes && viewItem =~ /^sandboxFile/",
					"group": "9_delete@1"
				},
				{
					"command": "agentuity.sandbox.createFromSnapshot",
					"when": "view == agentuity.sandboxes && viewItem =~ /^snapshot/",
					"group": "1_create@1"
				},
				{
					"command": "agentuity.sandbox.snapshot.tag",
					"when": "view == agentuity.sandboxes && viewItem =~ /^snapshot/",
					"group": "2_manage@1"
				},
				{
					"command": "agentuity.sandbox.snapshot.viewDetails",
					"when": "view == agentuity.sandboxes && viewItem =~ /^snapshot/",
					"group": "2_manage@2"
				},
				{
					"command": "agentuity.sandbox.snapshot.delete",
					"when": "view == agentuity.sandboxes && viewItem =~ /^snapshot/",
					"group": "9_delete@1"
				},
				{
					"command": "agentuity.sandbox.viewExecution",
					"when": "view == agentuity.sandboxes && viewItem =~ /^execution/",
					"group": "1_view@1"
				},
				{
					"command": "agentuity.queue.publish",
					"when": "view == agentuity.data && viewItem == queueItem",
					"group": "queue@1"
				},
				{
					"command": "agentuity.queue.pause",
					"when": "view == agentuity.data && viewItem == queueItem",
					"group": "queue@2"
				},
				{
					"command": "agentuity.queue.resume",
					"when": "view == agentuity.data && viewItem == queueItem",
					"group": "queue@3"
				},
				{
					"command": "agentuity.queue.dlq.purge",
					"when": "view == agentuity.data && viewItem == queueItem",
					"group": "queue@4"
				},
				{
					"command": "agentuity.queue.delete",
					"when": "view == agentuity.data && viewItem == queueItem",
					"group": "queue@5"
				},
				{
					"command": "agentuity.queue.refreshMessages",
					"when": "view == agentuity.data && viewItem == queueItem",
					"group": "navigation"
				},
				{
					"command": "agentuity.queue.viewMessage",
					"when": "view == agentuity.data && viewItem =~ /^queueMessage/",
					"group": "message@1"
				},
				{
					"command": "agentuity.queue.copyMessageId",
					"when": "view == agentuity.data && viewItem =~ /^queueMessage/",
					"group": "message@2"
				},
				{
					"command": "agentuity.queue.dlq.replay",
					"when": "view == agentuity.data && viewItem == dlqMessage",
					"group": "dlq@1"
				},
				{
					"command": "agentuity.queue.copyMessageId",
					"when": "view == agentuity.data && viewItem == dlqMessage",
					"group": "dlq@2"
				},
				{
					"command": "agentuity.queue.destination.create",
					"when": "view == agentuity.data && viewItem == queueSection-destinations",
					"group": "destination@1"
				},
				{
					"command": "agentuity.queue.dlq.purge",
					"when": "view == agentuity.data && viewItem == queueSection-dlq",
					"group": "dlq@1"
				},
				{
					"command": "agentuity.queue.destination.toggle",
					"when": "view == agentuity.data && viewItem == queueDestination",
					"group": "destination@1"
				},
				{
					"command": "agentuity.queue.destination.copyUrl",
					"when": "view == agentuity.data && viewItem == queueDestination",
					"group": "destination@2"
				},
				{
					"command": "agentuity.queue.destination.delete",
					"when": "view == agentuity.data && viewItem == queueDestination",
					"group": "destination@3"
				},
				{
					"command": "agentuity.queue.refreshMessages",
					"when": "view == agentuity.data && viewItem == queueSection-messages",
					"group": "navigation"
				}
			],
			"explorer/context": [
				{
					"command": "agentuity.sandbox.upload",
					"group": "agentuity@1"
				}
			],
			"commandPalette": [
				{
					"command": "agentuity.sandbox.link",
					"when": "false"
				},
				{
					"command": "agentuity.sandbox.unlink",
					"when": "false"
				},
				{
					"command": "agentuity.sandbox.sync",
					"when": "false"
				},
				{
					"command": "agentuity.sandbox.exec",
					"when": "false"
				},
				{
					"command": "agentuity.sandbox.viewFile",
					"when": "false"
				},
				{
					"command": "agentuity.sandbox.download",
					"when": "false"
				},
				{
					"command": "agentuity.sandbox.upload",
					"when": "false"
				},
				{
					"command": "agentuity.sandbox.deleteFile",
					"when": "false"
				},
				{
					"command": "agentuity.sandbox.createFile",
					"when": "false"
				},
				{
					"command": "agentuity.sandbox.createFolder",
					"when": "false"
				},
				{
					"command": "agentuity.sandbox.copyPath",
					"when": "false"
				},
				{
					"command": "agentuity.sandbox.viewExecution",
					"when": "false"
				},
				{
					"command": "agentuity.sandbox.snapshot.delete",
					"when": "false"
				},
				{
					"command": "agentuity.sandbox.snapshot.tag",
					"when": "false"
				},
				{
					"command": "agentuity.sandbox.snapshot.viewDetails",
					"when": "false"
				},
				{
					"command": "agentuity.sandbox.snapshot.viewFile",
					"when": "false"
				},
				{
					"command": "agentuity.queue.viewMessage",
					"when": "false"
				},
				{
					"command": "agentuity.queue.copyMessageId",
					"when": "false"
				},
				{
					"command": "agentuity.queue.dlq.replay",
					"when": "false"
				},
				{
					"command": "agentuity.queue.dlq.purge",
					"when": "false"
				},
				{
					"command": "agentuity.queue.destination.create",
					"when": "false"
				},
				{
					"command": "agentuity.queue.destination.delete",
					"when": "false"
				},
				{
					"command": "agentuity.queue.destination.toggle",
					"when": "false"
				},
				{
					"command": "agentuity.queue.destination.copyUrl",
					"when": "false"
				},
				{
					"command": "agentuity.queue.delete",
					"when": "false"
				},
				{
					"command": "agentuity.queue.pause",
					"when": "false"
				},
				{
					"command": "agentuity.queue.resume",
					"when": "false"
				},
				{
					"command": "agentuity.db.copyConnectionString",
					"when": "false"
				},
				{
					"command": "agentuity.db.openConnectionUri",
					"when": "false"
				},
				{
					"command": "agentuity.db.viewLogs",
					"when": "false"
				},
				{
					"command": "agentuity.deployment.viewLogs",
					"when": "false"
				},
				{
					"command": "agentuity.deployment.showDetails",
					"when": "false"
				},
				{
					"command": "agentuity.agent.goToFile",
					"when": "false"
				},
				{
					"command": "agentuity.agent.viewSessions",
					"when": "false"
				},
				{
					"command": "agentuity.agent.viewSessionLogs",
					"when": "false"
				}
			]
		},
		"configuration": {
			"title": "Agentuity",
			"properties": {
				"agentuity.cliPath": {
					"type": "string",
					"default": "",
					"description": "Path to the Agentuity CLI executable. Leave empty to use PATH."
				},
				"agentuity.devServer.port": {
					"type": "number",
					"default": 3500,
					"description": "Default port for the dev server."
				},
				"agentuity.sandbox.defaultMemory": {
					"type": "string",
					"default": "512Mi",
					"description": "Default memory limit for new sandboxes (e.g., 512Mi, 1Gi, 2Gi)"
				},
				"agentuity.sandbox.defaultCpu": {
					"type": "string",
					"default": "500m",
					"description": "Default CPU limit for new sandboxes in millicores (e.g., 500m, 1000m)"
				},
				"agentuity.sandbox.defaultNetwork": {
					"type": "boolean",
					"default": false,
					"description": "Enable network access by default for new sandboxes"
				},
				"agentuity.sandbox.syncExclusions": {
					"type": "array",
					"items": {
						"type": "string"
					},
					"default": [
						".git",
						"node_modules",
						".agentuity",
						"dist",
						"build"
					],
					"description": "Additional patterns to exclude when syncing (in addition to .gitignore)"
				},
				"agentuity.sandbox.defaultRemotePath": {
					"type": "string",
					"default": "/home/agentuity",
					"description": "Default path in sandbox for synced files"
				}
			}
		},
		"chatParticipants": [
			{
				"id": "agentuity.assistant",
				"name": "agentuity",
				"fullName": "Agentuity Assistant",
				"description": "Help with building and managing Agentuity agents",
				"isSticky": false,
				"commands": [
					{
						"name": "help",
						"description": "Show CLI reference and getting started guide"
					},
					{
						"name": "agents",
						"description": "List agents in this project"
					},
					{
						"name": "deploy",
						"description": "Deploy to Agentuity Cloud"
					},
					{
						"name": "dev",
						"description": "Start or stop the dev server"
					},
					{
						"name": "sessions",
						"description": "Show recent sessions"
					},
					{
						"name": "status",
						"description": "Show project and auth status"
					},
					{
						"name": "kv",
						"description": "List KV namespaces or keys in a namespace"
					},
					{
						"name": "db",
						"description": "List databases with connection info"
					},
					{
						"name": "vector",
						"description": "Search vectors in a namespace"
					},
					{
						"name": "deployments",
						"description": "List deployments with details"
					},
					{
						"name": "logs",
						"description": "View logs for a session"
					}
				]
			}
		],
		"languageModelTools": [
			{
				"name": "agentuity_run_cli",
				"displayName": "Run Agentuity CLI",
				"toolReferenceName": "agentuity-cli",
				"icon": "$(terminal)",
				"userDescription": "Execute Agentuity CLI commands to manage agents and cloud resources",
				"modelDescription": "Execute an Agentuity CLI command. Use this to run CLI commands like 'cloud agent list', 'cloud session list', 'ai capabilities show', etc. The command should be the subcommand and arguments only, not 'agentuity' itself. Destructive commands (delete, logout) are blocked.",
				"canBeReferencedInPrompt": true,
				"inputSchema": {
					"type": "object",
					"properties": {
						"command": {
							"type": "string",
							"description": "The Agentuity CLI subcommand and arguments (e.g., 'cloud agent list', 'cloud session list --count 10')"
						},
						"jsonOutput": {
							"type": "boolean",
							"description": "Whether to request JSON output from the CLI (default: true)",
							"default": true
						}
					},
					"required": [
						"command"
					]
				}
			},
			{
				"name": "agentuity_get_agents",
				"displayName": "Get Agentuity Agents",
				"toolReferenceName": "agentuity-agents",
				"icon": "$(hubot)",
				"userDescription": "List all AI agents in the current Agentuity project",
				"modelDescription": "Get a list of all AI agents defined in the current Agentuity project. Returns agent names, IDs, identifiers, descriptions, and source files. Use this to understand what agents exist in the project before performing operations on them.",
				"canBeReferencedInPrompt": true,
				"when": "agentuity.hasProject",
				"inputSchema": {
					"type": "object",
					"properties": {
						"includeDetails": {
							"type": "boolean",
							"description": "Whether to include detailed information about each agent",
							"default": false
						}
					}
				}
			},
			{
				"name": "agentuity_get_project_status",
				"displayName": "Get Agentuity Project Status",
				"toolReferenceName": "agentuity-status",
				"icon": "$(info)",
				"userDescription": "Get the current status of the Agentuity project",
				"modelDescription": "Get comprehensive status information about the Agentuity project including: authentication state, project configuration, dev server state, agent count, and active deployment info. Use this to understand the current state before suggesting actions.",
				"canBeReferencedInPrompt": true,
				"inputSchema": {
					"type": "object",
					"properties": {}
				}
			},
			{
				"name": "agentuity_get_sessions",
				"displayName": "Get Agent Sessions",
				"toolReferenceName": "agentuity-sessions",
				"icon": "$(pulse)",
				"userDescription": "List recent agent execution sessions",
				"modelDescription": "Get a list of recent agent execution sessions. Each session represents one invocation of an agent and includes success/failure status, duration, trigger type, and environment. Use this to diagnose issues or understand agent usage patterns.",
				"canBeReferencedInPrompt": true,
				"when": "agentuity.hasProject",
				"inputSchema": {
					"type": "object",
					"properties": {
						"count": {
							"type": "number",
							"description": "Number of sessions to retrieve (default: 10, max: 100)",
							"default": 10
						}
					}
				}
			},
			{
				"name": "agentuity_get_session_logs",
				"displayName": "Get Session Logs",
				"toolReferenceName": "agentuity-logs",
				"icon": "$(output)",
				"userDescription": "Get logs for a specific agent session",
				"modelDescription": "Retrieve detailed logs for a specific agent execution session. Logs include timestamps, severity levels, and messages. Use this to debug agent behavior or diagnose failures. Requires a session ID which can be obtained from agentuity_get_sessions.",
				"canBeReferencedInPrompt": true,
				"when": "agentuity.hasProject",
				"inputSchema": {
					"type": "object",
					"properties": {
						"sessionId": {
							"type": "string",
							"description": "The session ID to get logs for (UUID format)"
						}
					},
					"required": [
						"sessionId"
					]
				}
			},
			{
				"name": "agentuity_control_dev_server",
				"displayName": "Control Dev Server",
				"toolReferenceName": "agentuity-dev",
				"icon": "$(server-process)",
				"userDescription": "Start, stop, or check the Agentuity dev server",
				"modelDescription": "Control the Agentuity development server for local agent testing. Actions: 'start' launches the server, 'stop' terminates it, 'restart' cycles it, 'status' returns current state. The dev server must be running to test agents locally via the Workbench.",
				"canBeReferencedInPrompt": true,
				"when": "agentuity.hasProject",
				"inputSchema": {
					"type": "object",
					"properties": {
						"action": {
							"type": "string",
							"enum": [
								"start",
								"stop",
								"restart",
								"status"
							],
							"description": "The action to perform: start, stop, restart, or status"
						}
					},
					"required": [
						"action"
					]
				}
			},
			{
				"name": "agentuity_get_deployments",
				"displayName": "Get Deployments",
				"toolReferenceName": "agentuity-deployments",
				"icon": "$(cloud-upload)",
				"userDescription": "List deployments for the Agentuity project",
				"modelDescription": "Get a list of deployments for the current Agentuity project. Shows deployment IDs, active status, state, creation time, and tags. Use this to understand deployment history and identify the currently active deployment.",
				"canBeReferencedInPrompt": true,
				"when": "agentuity.hasProject",
				"inputSchema": {
					"type": "object",
					"properties": {
						"limit": {
							"type": "number",
							"description": "Maximum number of deployments to return (default: 10)",
							"default": 10
						}
					}
				}
			},
			{
				"name": "agentuity_deploy_project",
				"displayName": "Deploy Project",
				"toolReferenceName": "agentuity-deploy",
				"icon": "$(rocket)",
				"userDescription": "Deploy the Agentuity project to the cloud",
				"modelDescription": "Deploy the current Agentuity project to Agentuity Cloud. This makes the agents publicly accessible. The deployment runs in a terminal and requires user confirmation. Use agentuity_get_project_status first to verify the user is authenticated.",
				"canBeReferencedInPrompt": true,
				"when": "agentuity.hasProject && agentuity.authenticated",
				"inputSchema": {
					"type": "object",
					"properties": {
						"message": {
							"type": "string",
							"description": "Optional deployment message or description"
						}
					}
				}
			},
			{
				"name": "agentuity_get_health_summary",
				"displayName": "Get Health Summary",
				"toolReferenceName": "agentuity-health",
				"icon": "$(heart)",
				"userDescription": "Get a health summary of the Agentuity project",
				"modelDescription": "Get a comprehensive health summary of the Agentuity project including: session success/failure rates, performance metrics (avg/min/max duration), recent failures, deployment status, and dev server state. Use this for monitoring and diagnostics.",
				"canBeReferencedInPrompt": true,
				"when": "agentuity.hasProject",
				"inputSchema": {
					"type": "object",
					"properties": {
						"sessionCount": {
							"type": "number",
							"description": "Number of recent sessions to analyze (default: 20)",
							"default": 20
						}
					}
				}
			},
			{
				"name": "agentuity_list_sandboxes",
				"displayName": "List Sandboxes",
				"toolReferenceName": "agentuity-sandboxes",
				"icon": "$(vm)",
				"userDescription": "List all sandboxes in the Agentuity cloud",
				"modelDescription": "List all sandboxes available in the Agentuity cloud. Returns sandbox IDs, status (creating, idle, running, terminated, failed), creation time, and resource configuration. Use this to discover available sandboxes before executing commands or syncing files.",
				"canBeReferencedInPrompt": true,
				"when": "agentuity.authenticated",
				"inputSchema": {
					"type": "object",
					"properties": {
						"status": {
							"type": "string",
							"enum": [
								"creating",
								"idle",
								"running",
								"terminated",
								"failed"
							],
							"description": "Filter sandboxes by status"
						}
					}
				}
			},
			{
				"name": "agentuity_create_sandbox",
				"displayName": "Create Sandbox",
				"toolReferenceName": "agentuity-create-sandbox",
				"icon": "$(add)",
				"userDescription": "Create a new sandbox in the Agentuity cloud",
				"modelDescription": "Create a new sandbox environment in the Agentuity cloud. Sandboxes are isolated execution environments for running code. You can specify memory, CPU, disk, network access, and other configuration options. Returns the new sandbox ID and status.",
				"canBeReferencedInPrompt": true,
				"when": "agentuity.authenticated",
				"inputSchema": {
					"type": "object",
					"properties": {
						"memory": {
							"type": "string",
							"description": "Memory allocation (e.g., '512Mi', '1Gi')"
						},
						"cpu": {
							"type": "string",
							"description": "CPU allocation (e.g., '0.5', '1', '2')"
						},
						"network": {
							"type": "boolean",
							"description": "Whether to enable network access (default: true)",
							"default": true
						},
						"snapshot": {
							"type": "string",
							"description": "Snapshot ID to restore from"
						}
					}
				}
			},
			{
				"name": "agentuity_sync_to_sandbox",
				"displayName": "Sync to Sandbox",
				"toolReferenceName": "agentuity-sync",
				"icon": "$(sync)",
				"userDescription": "Sync local project files to a sandbox",
				"modelDescription": "Sync the current workspace files to a sandbox. Respects .gitignore by default. Use this to upload your code to a sandbox before executing it. Returns the number of files synced and bytes transferred.",
				"canBeReferencedInPrompt": true,
				"when": "agentuity.authenticated",
				"inputSchema": {
					"type": "object",
					"properties": {
						"sandboxId": {
							"type": "string",
							"description": "The sandbox ID to sync to"
						},
						"remotePath": {
							"type": "string",
							"description": "Remote path in sandbox (default: /home/agentuity)",
							"default": "/home/agentuity"
						},
						"respectGitignore": {
							"type": "boolean",
							"description": "Whether to respect .gitignore rules (default: true)",
							"default": true
						}
					},
					"required": [
						"sandboxId"
					]
				}
			},
			{
				"name": "agentuity_execute_in_sandbox",
				"displayName": "Execute in Sandbox",
				"toolReferenceName": "agentuity-exec",
				"icon": "$(play)",
				"userDescription": "Execute a command in a sandbox",
				"modelDescription": "Execute a shell command in a sandbox environment. The command runs in the sandbox's isolated environment. Returns the exit code and output. Use agentuity_sync_to_sandbox first to upload code, then execute it.",
				"canBeReferencedInPrompt": true,
				"when": "agentuity.authenticated",
				"inputSchema": {
					"type": "object",
					"properties": {
						"sandboxId": {
							"type": "string",
							"description": "The sandbox ID to execute in"
						},
						"command": {
							"type": "string",
							"description": "The command to execute"
						},
						"workdir": {
							"type": "string",
							"description": "Working directory for the command"
						},
						"env": {
							"type": "object",
							"description": "Environment variables to set"
						}
					},
					"required": [
						"sandboxId",
						"command"
					]
				}
			},
			{
				"name": "agentuity_create_snapshot",
				"displayName": "Create Snapshot",
				"toolReferenceName": "agentuity-snapshot",
				"icon": "$(save)",
				"userDescription": "Create a snapshot of a sandbox",
				"modelDescription": "Create a snapshot of a sandbox's current state. Snapshots capture the filesystem and can be used to restore or clone sandboxes. Use this to save work or create reproducible environments.",
				"canBeReferencedInPrompt": true,
				"when": "agentuity.authenticated",
				"inputSchema": {
					"type": "object",
					"properties": {
						"sandboxId": {
							"type": "string",
							"description": "The sandbox ID to snapshot"
						},
						"tag": {
							"type": "string",
							"description": "Optional tag for the snapshot"
						}
					},
					"required": [
						"sandboxId"
					]
				}
			},
			{
				"name": "agentuity_delete_sandbox",
				"displayName": "Delete Sandbox",
				"toolReferenceName": "agentuity-delete-sandbox",
				"icon": "$(trash)",
				"userDescription": "Delete a sandbox",
				"modelDescription": "Delete a sandbox environment. This action cannot be undone. The sandbox and all its files will be permanently removed. Use this to clean up sandboxes that are no longer needed.",
				"canBeReferencedInPrompt": true,
				"when": "agentuity.authenticated",
				"inputSchema": {
					"type": "object",
					"properties": {
						"sandboxId": {
							"type": "string",
							"description": "The sandbox ID to delete"
						}
					},
					"required": [
						"sandboxId"
					]
				}
			}
		],
		"walkthroughs": [
			{
				"id": "gettingStarted",
				"title": "Getting Started with Agentuity",
				"description": "Set up the CLI, login, and deploy your first agent.",
				"steps": [
					{
						"id": "installCli",
						"title": "Install the Agentuity CLI",
						"description": "The CLI is required for all Agentuity features.\n\nRun `bun install -g @agentuity/cli` to install.\n\n[Install CLI](command:agentuity.installCli)",
						"completionEvents": [
							"onContext:agentuity.cliInstalled"
						]
					},
					{
						"id": "login",
						"title": "Login to Agentuity",
						"description": "Authenticate with your Agentuity account.\n\nRun `agentuity auth login` in your terminal.\n\n[Login](command:agentuity.login)",
						"completionEvents": [
							"onContext:agentuity.authenticated"
						]
					},
					{
						"id": "createProject",
						"title": "Create or Open a Project",
						"description": "Create a new project or open an existing one.\n\nRun `agentuity project new` to create a new project.\n\n[Create Project](command:agentuity.createProject)",
						"completionEvents": [
							"onContext:agentuity.hasProject"
						]
					},
					{
						"id": "startDev",
						"title": "Start the Dev Server",
						"description": "Run your agents locally.\n\nThe dev server lets you test agents locally.\n\n[Start Dev Server](command:agentuity.dev.start)",
						"completionEvents": [
							"onCommand:agentuity.dev.start"
						]
					},
					{
						"id": "deploy",
						"title": "Deploy to Agentuity Cloud",
						"description": "Deploy your agents to production.\n\nDeploy to make your agents available online.\n\n[Deploy](command:agentuity.deploy)",
						"completionEvents": [
							"onCommand:agentuity.deploy"
						]
					}
				]
			}
		]
	},
	"scripts": {
		"build": "bun run compile",
		"compile": "bunx esbuild ./src/extension.ts --bundle --outfile=./dist/extension.js --platform=node --format=cjs --external:vscode --main-fields=module,main",
		"watch": "bunx esbuild ./src/extension.ts --bundle --outfile=./dist/extension.js --platform=node --format=cjs --external:vscode --main-fields=module,main --watch",
		"typecheck": "bunx tsc --noEmit",
		"vscode:prepublish": "bun run build",
		"package": "bunx @vscode/vsce package --no-dependencies",
		"clean": "rm -rf dist tsconfig.tsbuildinfo *.vsix"
	},
	"devDependencies": {
		"@types/node": "^22.10.2",
		"@types/vscode": "^1.90.0",
		"@vscode/vsce": "^3.3.2",
		"typescript": "^5.9.0"
	},
	"dependencies": {
		"jsonc-parser": "^3.3.1",
		"tar": "^7.4.3"
	}
}
