{"id":47757012,"url":"https://github.com/composable-delivery/busbar-sf-agentscript","last_synced_at":"2026-04-03T04:35:55.576Z","repository":{"id":340821274,"uuid":"1167256724","full_name":"composable-delivery/busbar-sf-agentscript","owner":"composable-delivery","description":"AgentScript parser, graph analysis, and LSP for Salesforce Agentforce","archived":false,"fork":false,"pushed_at":"2026-03-05T23:07:26.000Z","size":1341,"stargazers_count":5,"open_issues_count":10,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-06T00:38:42.992Z","etag":null,"topics":["agentforce","agentscript","language-server","lsp","parser","rust","salesforce"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/composable-delivery.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-26T05:15:30.000Z","updated_at":"2026-03-05T22:48:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/composable-delivery/busbar-sf-agentscript","commit_stats":null,"previous_names":["composable-delivery/busbar-sf-agentscript"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/composable-delivery/busbar-sf-agentscript","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/composable-delivery%2Fbusbar-sf-agentscript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/composable-delivery%2Fbusbar-sf-agentscript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/composable-delivery%2Fbusbar-sf-agentscript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/composable-delivery%2Fbusbar-sf-agentscript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/composable-delivery","download_url":"https://codeload.github.com/composable-delivery/busbar-sf-agentscript/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/composable-delivery%2Fbusbar-sf-agentscript/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31333585,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T03:20:36.090Z","status":"ssl_error","status_checked_at":"2026-04-03T03:20:35.133Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentforce","agentscript","language-server","lsp","parser","rust","salesforce"],"created_at":"2026-04-03T04:35:54.657Z","updated_at":"2026-04-03T04:35:55.566Z","avatar_url":"https://github.com/composable-delivery.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# busbar-sf-agentscript\n\n[![Crates.io](https://img.shields.io/crates/v/busbar-sf-agentscript.svg)](https://crates.io/crates/busbar-sf-agentscript)\n[![docs.rs](https://docs.rs/busbar-sf-agentscript/badge.svg)](https://docs.rs/busbar-sf-agentscript)\n[![CI](https://github.com/composable-delivery/busbar-sf-agentscript/actions/workflows/ci.yml/badge.svg)](https://github.com/composable-delivery/busbar-sf-agentscript/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/composable-delivery/busbar-sf-agentscript/branch/main/graph/badge.svg)](https://codecov.io/gh/composable-delivery/busbar-sf-agentscript)\n[![License: MIT OR Apache-2.0](https://img.shields.io/badge/license-MIT%20OR%20Apache--2.0-blue.svg)](#license)\n\nAgentScript parser, graph analysis, and LSP for [Salesforce Agentforce](https://www.salesforce.com/agentforce/).\n\nAgentScript (`.agent`) is Salesforce's indentation-sensitive language for defining AI agent behavior in Agentforce. This project provides tooling for authoring, validating, and analyzing `.agent` files.\n\n## Getting Started\n\nChoose the option that fits your workflow:\n\n| | Best for | What you get |\n|---|---|---|\n| [SF CLI Plugin](#sf-cli-plugin) | Salesforce developers | `sf agency` commands for validation, graph export, and CI integration |\n| [VS Code Extension](#vs-code-extension) | VS Code users | Syntax highlighting, real-time diagnostics, and topic graph visualization |\n| [LSP Server](#lsp-server) | Neovim, Helix, and other editors | Full language server for any LSP-capable editor |\n| [Rust Crates](#rust-crates) | Rust developers | Parser, graph analysis library, and WASM support |\n\n---\n\n## SF CLI Plugin\n\nInstall with the [Salesforce CLI](https://developer.salesforce.com/tools/salesforcecli):\n\n```sh\nsf plugins install @muselab/sf-plugin-busbar-agency\n```\n\n![SF plugin commands overview](docs/images/sf-plugin-commands.png)\n\nValidate an AgentScript file:\n\n```sh\nsf agency validate --file my-agent.agent\n```\n\n![Validation output](docs/images/sf-plugin-validate.png)\n\nExport the topic reference graph:\n\n```sh\nsf agency graph --file my-agent.agent --format graphml --output graph.xml\nsf agency graph --file my-agent.agent --format html --output report.html\n```\n\n![Interactive HTML graph report](docs/images/sf-plugin-graph.png)\n\nExtract action interface definitions:\n\n```sh\nsf agency actions --file my-agent.agent\n```\n\nThe plugin exits non-zero on errors, making it suitable for CI pipelines.\n\n---\n\n## VS Code Extension\n\nInstall from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=composable-delivery.vscode-agentscript):\n\n```sh\ncode --install-extension composable-delivery.vscode-agentscript\n```\n\nOr download the `.vsix` from [GitHub Releases](https://github.com/composable-delivery/busbar-sf-agentscript/releases) and install manually:\n\n```sh\ncode --install-extension vscode-agentscript-\u003cversion\u003e.vsix\n```\n\n**Features:**\n- Syntax highlighting for `.agent` files\n- Real-time diagnostics — undefined references, cycle detection, unreachable topics\n- Hover documentation\n- Semantic token highlighting\n- Topic graph visualization (`AgentScript: Show Topic Graph`)\n- AgentScript Dependencies panel in the Explorer sidebar\n\n**Settings:**\n\n| Setting | Default | Description |\n|---|---|---|\n| `agentscript.lsp.serverPath` | auto | Path to a custom `busbar-sf-agentscript-lsp` binary |\n| `agentscript.maxNumberOfProblems` | `100` | Maximum diagnostics shown per file |\n| `agentscript.trace.server` | `off` | LSP communication tracing (`off`, `messages`, `verbose`) |\n\n---\n\n## LSP Server\n\nThe `busbar-sf-agentscript-lsp` binary powers the VS Code extension and works with any LSP-capable editor.\n\n### Install\n\nDownload the pre-built binary for your platform from [GitHub Releases](https://github.com/composable-delivery/busbar-sf-agentscript/releases):\n\n| Platform | Binary |\n|---|---|\n| macOS (Apple Silicon) | `busbar-sf-agentscript-lsp-aarch64-apple-darwin` |\n| Linux x86\\_64 | `busbar-sf-agentscript-lsp-x86_64-unknown-linux-gnu` |\n| Windows x86\\_64 | `busbar-sf-agentscript-lsp-x86_64-pc-windows-msvc.exe` |\n\nOr install from source:\n\n```sh\ncargo install --git https://github.com/composable-delivery/busbar-sf-agentscript busbar-sf-agentscript-lsp\n```\n\n### Neovim\n\nUsing [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig):\n\n```lua\nlocal lspconfig = require('lspconfig')\nlocal configs = require('lspconfig.configs')\n\nif not configs.agentscript then\n  configs.agentscript = {\n    default_config = {\n      cmd = { 'busbar-sf-agentscript-lsp' },\n      filetypes = { 'agentscript' },\n      root_dir = lspconfig.util.root_pattern('sfdx-project.json', '.git'),\n    },\n  }\nend\n\nlspconfig.agentscript.setup {}\n```\n\nAdd to `~/.config/nvim/init.lua` (or your config's `ftdetect`):\n\n```lua\nvim.filetype.add({ extension = { agent = 'agentscript' } })\n```\n\n### Helix\n\nAdd to `~/.config/helix/languages.toml`:\n\n```toml\n[[language]]\nname = \"agentscript\"\nscope = \"source.agentscript\"\nfile-types = [\"agent\"]\nroots = [\"sfdx-project.json\", \".git\"]\nlanguage-servers = [\"agentscript-lsp\"]\n\n[language-server.agentscript-lsp]\ncommand = \"busbar-sf-agentscript-lsp\"\n```\n\n### Other Editors\n\nAny editor supporting LSP can be configured to launch `busbar-sf-agentscript-lsp` as a stdio language server for files with the `.agent` extension.\n\n---\n\n## Rust Crates\n\nAdd to `Cargo.toml`:\n\n```toml\n[dependencies]\n# Parser only (default)\nbusbar-sf-agentscript = \"0.1\"\n\n# Parser + graph analysis\nbusbar-sf-agentscript = { version = \"0.1\", features = [\"graph\"] }\n\n# Parser + WASM bindings\nbusbar-sf-agentscript = { version = \"0.1\", features = [\"wasm\"] }\n```\n\n### Parser\n\n```rust\nuse busbar_sf_agentscript::parse;\n\nlet source = std::fs::read_to_string(\"my-agent.agent\").unwrap();\nlet ast = parse(\u0026source).unwrap();\nprintln!(\"{} topics defined\", ast.topics.len());\n```\n\n### Graph Analysis\n\n```rust\nuse busbar_sf_agentscript::{parse, graph::RefGraph};\n\nlet source = std::fs::read_to_string(\"my-agent.agent\").unwrap();\nlet ast = parse(\u0026source).unwrap();\nlet graph = RefGraph::from_ast(\u0026ast).unwrap();\n\nprintln!(\"Topics: {}\", graph.topic_count());\nprintln!(\"Unreachable: {:?}\", graph.unreachable_topics());\nprintln!(\"Unused actions: {:?}\", graph.dead_actions());\n```\n\n### Individual Crates\n\nThe umbrella crate re-exports everything, but you can depend on individual crates directly:\n\n| Crate | docs.rs | Description |\n|---|---|---|\n| `busbar-sf-agentscript` | [![docs](https://docs.rs/busbar-sf-agentscript/badge.svg)](https://docs.rs/busbar-sf-agentscript) | Lexer, parser, AST, serializer, semantic validator, and graph analysis |\n| `busbar-sf-agentscript-lsp` | [![docs](https://docs.rs/busbar-sf-agentscript-lsp/badge.svg)](https://docs.rs/busbar-sf-agentscript-lsp) | LSP server binary |\n\n---\n\n## AgentScript Language\n\nAgentScript (`.agent`) is an indentation-sensitive (3-space) YAML-like language for defining Agentforce agent behavior. Example:\n\n```\nconfig:\n   agent_name: MyAgent\n\nvariables:\n   customerName: \"\"\n\nstart_agent:\n   message: Hello! How can I help you today?\n\ntopics:\n   - topic: SupportTopic\n     instructions: Handle customer support requests.\n\n     actions:\n        - action: LookupCase\n          type: FlowAction\n          api_name: Look_Up_Case\n```\n\nSee [`agent-script-recipes`](https://github.com/trailheadapps/agent-script-recipes) for real-world examples.\n\n---\n\n## Workspace\n\n```\nsrc/                                        — parser, graph analysis, WASM bindings\ncrates/\n  lsp/      busbar-sf-agentscript-lsp       — LSP server binary\n\npackages/                                   — VS Code extension\nplugin-agency/                              — SF CLI plugin (sf agency *)\ntree-sitter-agentscript/                    — Tree-sitter grammar\nzed-extension/                              — Zed editor extension\nagent-script-recipes/                       — test fixtures (git submodule)\n```\n\n---\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md). All contributions are welcome.\n\n### Local Setup\n\n```bash\ngit clone https://github.com/composable-delivery/busbar-sf-agentscript\ncd busbar-sf-agentscript\ngit submodule update --init         # recipe test fixtures\ngit config core.hooksPath .githooks # enable pre-commit checks\n```\n\nThe pre-commit hook runs `cargo fmt --check` and `cargo clippy -- -D warnings` before every commit, matching CI exactly.\n\n---\n\n## License\n\nLicensed under either of\n\n- [MIT License](LICENSE-MIT)\n- [Apache License, Version 2.0](LICENSE-APACHE)\n\nat your option.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcomposable-delivery%2Fbusbar-sf-agentscript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcomposable-delivery%2Fbusbar-sf-agentscript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcomposable-delivery%2Fbusbar-sf-agentscript/lists"}