Conversation
- parser: allow type keywords (id, string, number, etc.) as param names in inputs/outputs blocks so tests with `id: string` fields pass - deny.toml: add Zlib to allowed licenses for foldhash-0.1.5 - binding.gyp: bump C++ standard to c++17 for Node.js 20 compatibility - ci.yml: fix stale job references (test-parser→test-agentscript, remove test-graph and wasm-graph which no longer exist after package merge) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- `sf agent` plugin - New commands `agents list` and `agents select` for filtering which agents get scanned - New commands `impact` and `paths - `query` command changed to path based queries or dot for direct AST querying - parser - 10x faster, benches ~5.9MB/s for single files, faster in parallel - Added support for object variables - Added support for `...` placeholder values
- Add support for . notion for object variable properties
📊 Benchmark Results
The benchmark runner was unable to execute What failed
How to reproduce locallyTo run the benchmarks and compare against # 1. Initialize submodule (required for recipe input files)
git submodule update --init --recursive
# 2. Establish baseline on main
git fetch origin main
git stash
git checkout origin/main -- .
cargo bench --bench parse_recipes -- --save-baseline main
# 3. Restore PR branch and compare
git checkout -
cargo bench --bench parse_recipes -- --baseline mainThe PR description claims ~10x faster parsing (~5.9 MB/s for single files, faster in parallel). Results will be printed by Criterion with statistically significant changes highlighted.
|
…r-cli 0.26.6) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Breaking Change AnalysisFiles checked: Rust Crate (
|
| Change | Why it breaks |
|---|---|
sf agency query topic (name) removed |
Replaced by sf agency query /topics/(name) (positional arg syntax) |
sf agency query variable (name) removed |
Replaced by sf agency query /variables/(name) |
sf agency query action (name) removed |
Replaced by sf agency query /actions/(name) |
sf agency query --path (dot-notation) flag removed |
Query path is now a positional argument; --path now means directory scan |
sf agency parse JSON output format changed |
Was raw AST object; now { file, ast } — any JSON consumer parsing the output must update |
sf agency impact --dir renamed to --path |
Scripts using --dir will fail |
| npm package renamed | busbar-sf-agentscript → @muselab/busbar-sf-agentscript — any package.json referencing the old name must be updated |
These are all in the SF CLI plugin, which is separately versioned and consumed. The CHANGELOG correctly documents all of these under Changed and Removed for 0.0.2. Since the project is pre-1.0 (0.x), breaking changes are permitted but communication is important.
Suggestion: These changes are already well-documented in CHANGELOG.md. No code changes needed, but consider whether any migration notes or deprecation warnings would help users of the old subcommand syntax.
Generated by Breaking Change Checker for issue #25
Major bumps: @vscode/vsce 2→3, @types/node 20→25, @types/vscode 1.108→1.109, plus secretlint and textlint packages added. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
The sf-plugin CI builds the WASM package from source into pkg/, but npm install was trying to fetch @muselab/busbar-sf-agentscript@0.0.2 from the npm registry (not yet published). Temporarily repoint the dependency to file:../pkg before npm install so it uses the local build. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ackage.json The WASM package is built from source in CI before it's published to npm. Use npm link (pkg/ → global → plugin-agency/node_modules) so plugin-agency can install @muselab/busbar-sf-agentscript by its real name/version without hacking package.json with a file: path. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
📊 Benchmark Results
The benchmark runner encountered a sandbox restriction that prevented executing build tools ( What failedHow to reproduce benchmarks locally# 1. Initialize the submodule
git submodule update --init --recursive
# 2. Run benchmarks on main (save baseline)
git stash
git checkout origin/main -- .
cargo bench --bench parse_recipes -- --save-baseline main
# 3. Restore PR branch and compare
git checkout -
cargo bench --bench parse_recipes -- --baseline mainThe PR description notes ~10x faster parsing (~5.9 MB/s for single files, faster in parallel). Once the benchmark runner has proper build tool access and the submodule is available, a comparison against
|
Breaking Change Analysis — PR #25Files checked:
|
| File | Change | Why It Breaks |
|---|---|---|
src/ast.rs |
Added Expr::SlotFill variant to pub enum Expr |
Expr is not #[non_exhaustive], so any downstream code with an exhaustive match on Expr will fail to compile with "non-exhaustive patterns: SlotFill not covered" |
Detail:
// Before (0.0.1)
pub enum Expr {
// ...
None,
List(Vec(Spanned(Expr))),
// ...
}
// After (0.0.2) — new variant added
pub enum Expr {
// ...
None,
SlotFill, // ← NEW: breaks exhaustive match arms
List(Vec(Spanned(Expr))),
// ...
}Any downstream crate that matches Expr exhaustively will fail to compile after upgrading.
✅ No Breaking Changes
| File | Status |
|---|---|
src/lib.rs |
Unchanged |
src/error.rs |
Unchanged |
Cargo.toml – rust-version |
Unchanged (1.88) |
Cargo.toml – feature flags |
Unchanged (default, graph, wasm) |
💡 Recommendation
Since Expr is expected to grow with the language, consider annotating it with #[non_exhaustive]:
#[non_exhaustive]
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum Expr {
// ...
}This is a one-time opt-in that allows future variant additions without breaking downstream matchers. Downstream users would need to add a wildcard arm (_ => ...), but only once.
The version bump to 0.0.2 correctly signals this breaking change per the 0.x pre-release convention. The breaking-change label is already applied to this PR ✓
Generated by Breaking Change Checker for issue #25
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
🔍 Breaking Change AnalysisFiles checked:
|
| Item | Type | Breaking? |
|---|---|---|
Expr::SlotFill added |
New exhaustive enum variant | ✅ Yes |
ValidationError::InvalidPropertyAccess added |
New exhaustive enum variant | ✅ Yes |
rust-version |
Unchanged (1.88) |
No |
Cargo.toml feature flags |
None removed | No |
Since this is a 0.x release, breaking changes are permitted but should be documented. The breaking-change label has already been applied to this PR. Consider adding #[non_exhaustive] to both enums going forward to prevent this class of break in future minor releases.
Generated by Breaking Change Checker for issue #25
Updated installation command and removed outdated platform binaries.
📊 Benchmark Results
This PR modifies parser and graph code:
Benchmarks were intended to run comparing PR branch vs How to reproduce locally# Initialize recipe submodule
git submodule update --init --recursive
# Save baseline from main
git stash
git checkout origin/main -- .
cargo bench --bench parse_recipes -- --save-baseline main
# Restore PR branch and compare
git checkout -
cargo bench --bench parse_recipes -- --baseline main
|
🔍 Breaking Change AnalysisFiles checked:
|
| Item | Reason |
|---|---|
pub enum Expr::Object |
Already existed in the base branch — not new |
pub enum ValidationError::InvalidPropertyAccess |
Already existed in the base branch — not new |
Internal parser refactoring (instructions.rs, reasoning.rs, topics.rs) |
Private/pub(crate) changes only |
rayon dev-dependency added |
Dev/bench dependency, not public API |
rust-version in Cargo.toml |
Unchanged — still 1.88 |
Changes in crates/lsp/ |
publish = false, excluded |
SF CLI plugin changes (plugin-agency/) |
TypeScript package, separate from Rust crate API |
Summary
One Rust public API breaking change: Expr::SlotFill added to non-#[non_exhaustive] pub enum Expr. The breaking-change label is already present on this PR. Consider adding #[non_exhaustive] to Expr to protect against this class of break in all future releases.
Generated by Breaking Change Checker for issue #25
… scoping - validate.ts: 0% → 77% (7 tests: valid file, multi-file, verbose, shape checks) - list.ts: 0% → 79% (8 tests: all 4 types, json format, multi-file) - actions.ts: 0% → 39% (10 tests: formats, filter by target, verbose, multi-file) - vitest.config: scope coverage to src/**/*.ts only (exclude node_modules) - install @vitest/coverage-v8@3.2.4 to match vitest version Total tests: 50 → 77 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
📊 Benchmark Results
The benchmark workflow was unable to execute Additionally, the How to reproduce locally# 1. Clone and initialize submodules
git clone https://github.com/composable-delivery/busbar-sf-agentscript
cd busbar-sf-agentscript
git submodule update --init --recursive
# 2. Run benchmarks on main (baseline)
git checkout main
cargo bench --bench parse_recipes -- --save-baseline main
# 3. Switch to the PR branch and compare
git checkout sf-plugin
cargo bench --bench parse_recipes -- --baseline mainResults are saved to cargo install critcmp
critcmp main $(git rev-parse --short HEAD)Note: This PR claims ~10x faster parsing (~5.9 MB/s for single files). Running the benchmarks above will confirm the improvement with statistical confidence (Criterion p-values).
|
This pull request introduces significant improvements and restructuring to the CI and release workflows, along with the addition of a comprehensive
CHANGELOG.md. The changes focus on streamlining build and release processes, improving multi-platform support, and making publishing to npm and other registries more robust and consistent.Salesforce CLI Plugin Enhancements
agents listandagents selectfor filtering which agents get scannedimpactand `pathsquerycommand changed to path based queries or dot for direct AST queryingRust Parser and Graph Enhancements
...placeholder valuesCI Workflow Enhancements:
sf-plugin-build) and Zed extension (zed-build), enabling targeted builds for these components with proper WASM and Node.js environment setup. [1] [2]Release Workflow Improvements:
Documentation:
CHANGELOG.mdfollowing Keep a Changelog and Semantic Versioning, documenting all notable changes, new features, and API adjustments across releases.Other Notable Changes:
These updates provide a more maintainable and extensible workflow for building, testing, and releasing all components of the project.
References:
[1] [2] [3] [4] [5] [6] [7] F4f30113L29R29, [8] [9] [10] [11] [12] [13] [14] [15] [16]