brass-runtime 1.16.0 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +287 -23
- package/dist/agent/cli/main.cjs +38 -38
- package/dist/agent/cli/main.js +6 -6
- package/dist/agent/cli/main.mjs +6 -6
- package/dist/agent/index.cjs +7 -7
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.js +6 -6
- package/dist/agent/index.mjs +6 -6
- package/dist/chunk-2HQTDLHF.mjs +683 -0
- package/dist/chunk-36I3M4UC.mjs +370 -0
- package/dist/{chunk-QY5FKYEQ.js → chunk-3AYM6WPJ.js} +570 -51
- package/dist/chunk-3LOYJFRR.cjs +300 -0
- package/dist/chunk-3Y2RIUMM.js +300 -0
- package/dist/{chunk-7XOPAB5Q.js → chunk-4P2HHGAX.mjs} +83 -5
- package/dist/{chunk-N6VHMOWB.cjs → chunk-4ROBZFL6.cjs} +128 -128
- package/dist/{chunk-NC5SDRYE.js → chunk-52OB2ROS.js} +4 -4
- package/dist/{chunk-JX3LZQJH.cjs → chunk-52PPNNI4.cjs} +82 -20
- package/dist/{chunk-5YOQOXEQ.cjs → chunk-5EC274J5.cjs} +676 -293
- package/dist/chunk-5QC7LRZ3.js +229 -0
- package/dist/{chunk-7TL2LHQJ.js → chunk-5VRJNBLZ.mjs} +524 -141
- package/dist/chunk-62AZW6UT.cjs +313 -0
- package/dist/chunk-6IXXWIUM.js +683 -0
- package/dist/chunk-6RY2FFN4.mjs +2024 -0
- package/dist/chunk-74ZTY6CP.js +2871 -0
- package/dist/chunk-7CMJS3QE.mjs +2871 -0
- package/dist/{chunk-2WC63LJK.mjs → chunk-7JIJOVCT.js} +20 -10
- package/dist/chunk-7X3K5RMS.js +2024 -0
- package/dist/chunk-7ZPEZ57L.cjs +2024 -0
- package/dist/{chunk-FM4W4QPL.js → chunk-A2OM6NEH.mjs} +5 -4
- package/dist/chunk-AGR5B2BC.cjs +683 -0
- package/dist/chunk-B33ICAKP.js +313 -0
- package/dist/{chunk-J3H54ZRV.mjs → chunk-B5JD23U7.mjs} +1 -1
- package/dist/{chunk-F5EUMJL7.mjs → chunk-BKK77SBA.js} +83 -5
- package/dist/{chunk-U5KWK3PX.mjs → chunk-C3MDXTRZ.js} +11 -0
- package/dist/{chunk-SPUEME2B.cjs → chunk-CZIVE6NT.cjs} +12 -1
- package/dist/{chunk-TDVMADDN.js → chunk-DNFJLJMW.mjs} +11 -0
- package/dist/{chunk-XDZOO4L5.js → chunk-EJ6BPYVR.mjs} +79 -17
- package/dist/chunk-EOC4UHBS.mjs +229 -0
- package/dist/chunk-F6XWZQY4.cjs +777 -0
- package/dist/{chunk-7LVI2GIN.js → chunk-FH2X7BVP.js} +507 -72
- package/dist/{chunk-OOGJ73B6.js → chunk-FHQGHPMO.mjs} +20 -10
- package/dist/{chunk-WQ5QNU5R.cjs → chunk-GLE2WY7Z.cjs} +652 -217
- package/dist/{chunk-G6IQOE4P.mjs → chunk-GYM3LLGS.mjs} +507 -72
- package/dist/{chunk-TVN5I4U6.cjs → chunk-JF5WGYJJ.cjs} +25 -24
- package/dist/{chunk-CY33PGEX.mjs → chunk-KH4SYAOS.mjs} +570 -51
- package/dist/chunk-KN32XNTH.mjs +313 -0
- package/dist/chunk-KQLYONSE.cjs +2871 -0
- package/dist/{chunk-7HUOJA4W.cjs → chunk-KZJQ723N.cjs} +90 -80
- package/dist/{chunk-CCKHV5BT.mjs → chunk-L2SYFEBS.js} +5 -4
- package/dist/{chunk-IJT6RRQ5.cjs → chunk-L6VB5N7Q.cjs} +20 -9
- package/dist/{chunk-ZGLD4TVZ.mjs → chunk-MBEJI5HF.mjs} +4 -4
- package/dist/{chunk-PRWCB3QL.mjs → chunk-MIIYDLGM.js} +524 -141
- package/dist/{chunk-H55LI6WY.js → chunk-MOO4L7F4.mjs} +15 -4
- package/dist/chunk-MVGUEJ5Z.cjs +370 -0
- package/dist/chunk-PD4EJTQC.cjs +229 -0
- package/dist/chunk-PWC3RBQE.mjs +300 -0
- package/dist/{chunk-MWXMNYJS.cjs → chunk-Q2I37RP3.cjs} +643 -124
- package/dist/{chunk-VFIUZG7J.mjs → chunk-RKGKFN2A.js} +79 -17
- package/dist/{chunk-NYL4D7SK.cjs → chunk-SA6HUJVI.cjs} +5 -5
- package/dist/chunk-SK7UZRNI.mjs +777 -0
- package/dist/{chunk-K2T3DV26.mjs → chunk-TRM4JUZQ.js} +15 -4
- package/dist/chunk-UB4B6OFY.js +370 -0
- package/dist/{chunk-G3XGCZDQ.js → chunk-UCUBNWM2.js} +1 -1
- package/dist/chunk-VWIPB6I5.js +777 -0
- package/dist/{chunk-JNFRRJYH.cjs → chunk-WBGRHGBP.cjs} +270 -192
- package/dist/{client-CtFmoDvM.d.ts → client-CZHU674n.d.ts} +211 -36
- package/dist/core/index.cjs +135 -9
- package/dist/core/index.d.ts +238 -33
- package/dist/core/index.js +155 -29
- package/dist/core/index.mjs +155 -29
- package/dist/{effect-CGNl5Rqp.d.ts → effect-DIUHZ9IN.d.ts} +89 -1
- package/dist/effectRunner-CFLC32IK.cjs +8 -0
- package/dist/{effectRunner-A4CHJXJI.js → effectRunner-L4S7IPT3.js} +2 -2
- package/dist/{effectRunner-OPUF6QRN.mjs → effectRunner-NNGG75QA.mjs} +2 -2
- package/dist/http/index.cjs +324 -2986
- package/dist/http/index.d.ts +54 -68
- package/dist/http/index.js +238 -2900
- package/dist/http/index.mjs +238 -2900
- package/dist/http/testing.cjs +14 -12
- package/dist/http/testing.d.ts +5 -4
- package/dist/http/testing.js +10 -8
- package/dist/http/testing.mjs +10 -8
- package/dist/index.cjs +423 -255
- package/dist/index.d.ts +87 -69
- package/dist/index.js +301 -133
- package/dist/index.mjs +301 -133
- package/dist/observability/index.cjs +18 -531
- package/dist/observability/index.d.ts +81 -8
- package/dist/observability/index.js +25 -538
- package/dist/observability/index.mjs +25 -538
- package/dist/perf/cli.cjs +401 -0
- package/dist/perf/cli.d.ts +1 -0
- package/dist/perf/cli.js +401 -0
- package/dist/perf/cli.mjs +401 -0
- package/dist/perf/index.cjs +141 -0
- package/dist/perf/index.d.ts +483 -0
- package/dist/perf/index.js +141 -0
- package/dist/perf/index.mjs +141 -0
- package/dist/schedule-CK3Ml_7p.d.ts +259 -0
- package/dist/schema/index.cjs +6 -2
- package/dist/schema/index.d.ts +3 -1
- package/dist/schema/index.js +5 -1
- package/dist/schema/index.mjs +5 -1
- package/dist/{server-C8hDXA74.d.ts → server-D6JZ15_e.d.ts} +16 -4
- package/dist/{stream-dvSs0QS5.d.ts → stream-B4oK9JFP.d.ts} +1 -1
- package/dist/{tracer-B5tRH9H7.d.ts → tracer-Hwt1cl7h.d.ts} +13 -54
- package/dist/{tracing-Dt9S_6V8.d.ts → tracing-DqbTKGcf.d.ts} +1 -1
- package/docs/ARCHITECTURE.md +292 -0
- package/docs/README.md +65 -0
- package/docs/adr/0001-ai-context-pack.md +32 -0
- package/docs/agent-apply-mode.md +104 -0
- package/docs/agent-approvals.md +110 -0
- package/docs/agent-batch.md +185 -0
- package/docs/agent-boundaries.md +112 -0
- package/docs/agent-chat-sessions.md +160 -0
- package/docs/agent-ci.md +17 -0
- package/docs/agent-cli.md +405 -0
- package/docs/agent-config.md +480 -0
- package/docs/agent-context-discovery.md +159 -0
- package/docs/agent-copilot-like-dx.md +126 -0
- package/docs/agent-declarative-optimized-planning.md +138 -0
- package/docs/agent-dx.md +224 -0
- package/docs/agent-env-files.md +126 -0
- package/docs/agent-follow-up-context.md +43 -0
- package/docs/agent-global-usage.md +180 -0
- package/docs/agent-init.md +109 -0
- package/docs/agent-install-and-configure.md +516 -0
- package/docs/agent-language-workspace-ux.md +99 -0
- package/docs/agent-llm-adapters.md +123 -0
- package/docs/agent-local-install.md +190 -0
- package/docs/agent-local-tests.md +51 -0
- package/docs/agent-observability.md +155 -0
- package/docs/agent-patch-quality-loop.md +162 -0
- package/docs/agent-presets.md +22 -0
- package/docs/agent-project-commands.md +237 -0
- package/docs/agent-project-intelligence.md +156 -0
- package/docs/agent-redaction.md +18 -0
- package/docs/agent-release-readiness.md +76 -0
- package/docs/agent-rollback-safety.md +162 -0
- package/docs/agent-rollback.md +23 -0
- package/docs/agent-run-artifacts.md +16 -0
- package/docs/agent-vscode-auto-discovery.md +137 -0
- package/docs/agent-vscode-batch-runner.md +100 -0
- package/docs/agent-vscode-chat-layout.md +90 -0
- package/docs/agent-vscode-clean-install.md +147 -0
- package/docs/agent-vscode-code-actions.md +70 -0
- package/docs/agent-vscode-diff-preview.md +45 -0
- package/docs/agent-vscode-inline-assist.md +56 -0
- package/docs/agent-vscode-install.md +186 -0
- package/docs/agent-vscode-model-setup.md +97 -0
- package/docs/agent-vscode-patch-preview.md +92 -0
- package/docs/agent-vscode-problems.md +79 -0
- package/docs/agent-vscode-project-dashboard.md +106 -0
- package/docs/agent-vscode-run-history.md +92 -0
- package/docs/agent-vscode-ux.md +73 -0
- package/docs/ai/INVARIANTS.md +84 -0
- package/docs/ai/PROJECT_MAP.md +338 -0
- package/docs/ai/PUBLIC_API.md +339 -0
- package/docs/ai/VALIDATION_MATRIX.md +67 -0
- package/docs/api-polish.md +37 -0
- package/docs/cancellation.md +162 -0
- package/docs/coverage.md +46 -0
- package/docs/framework-integrations.md +38 -0
- package/docs/frameworks/angular.md +153 -0
- package/docs/frameworks/express.md +125 -0
- package/docs/frameworks/fastify.md +124 -0
- package/docs/frameworks/nestjs.md +282 -0
- package/docs/frameworks/nextjs.md +147 -0
- package/docs/frameworks/react.md +139 -0
- package/docs/frameworks/vanilla.md +224 -0
- package/docs/getting-started.md +159 -0
- package/docs/guides/README.md +40 -0
- package/docs/guides/circuit-breaker.md +89 -0
- package/docs/guides/error-handling.md +91 -0
- package/docs/guides/getting-started.md +107 -0
- package/docs/guides/layers.md +189 -0
- package/docs/guides/metrics.md +101 -0
- package/docs/guides/resource-management.md +141 -0
- package/docs/guides/retry.md +215 -0
- package/docs/guides/semaphore.md +66 -0
- package/docs/guides/streams.md +117 -0
- package/docs/guides/supervisors.md +98 -0
- package/docs/guides/testing.md +162 -0
- package/docs/guides/tracing.md +71 -0
- package/docs/http-recipes.md +399 -0
- package/docs/http.md +749 -0
- package/docs/modules.md +285 -0
- package/docs/nestjs.md +6 -0
- package/docs/observability-collector-smoke.md +31 -0
- package/docs/observability-framework-examples.md +110 -0
- package/docs/observability.md +649 -0
- package/docs/otel-collector-smoke.yaml +27 -0
- package/docs/performance-profiler.md +199 -0
- package/docs/production-readiness.md +73 -0
- package/docs/recipes/README.md +12 -0
- package/docs/recipes/http-server.md +45 -0
- package/docs/recipes/layers.md +44 -0
- package/docs/recipes/performance.md +47 -0
- package/docs/recipes/runtime.md +41 -0
- package/docs/recipes/testing.md +41 -0
- package/docs/release.md +53 -0
- package/docs/wasm-bounded-queues.md +44 -0
- package/docs/wasm-engine-observability-benchmarks.md +85 -0
- package/docs/wasm-fiber-engine.md +117 -0
- package/docs/wasm-scheduler-state-machine.md +122 -0
- package/docs/wasm-stream-chunks.md +54 -0
- package/package.json +22 -2
- package/dist/chunk-45F7OKGT.cjs +0 -104
- package/dist/chunk-7V4KY4RL.mjs +0 -104
- package/dist/chunk-DJQ7OMMB.cjs +0 -144
- package/dist/chunk-GOV47PPB.mjs +0 -552
- package/dist/chunk-JF4XXPZ5.cjs +0 -552
- package/dist/chunk-KCPT2D6G.js +0 -552
- package/dist/chunk-NOYZIMUJ.mjs +0 -144
- package/dist/chunk-PNVFW245.js +0 -144
- package/dist/chunk-ROJC3NBJ.js +0 -104
- package/dist/effectRunner-3ZHAD3LE.cjs +0 -8
- package/dist/schedule-Fque9Abz.d.ts +0 -70
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# VS Code auto-discovery for `brass-agent`
|
|
2
|
+
|
|
3
|
+
The VS Code extension can now run Brass Agent from any workspace without requiring you to manually set an absolute CLI path in each repo.
|
|
4
|
+
|
|
5
|
+
The recommended setting is:
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"brassAgent.command": "auto",
|
|
10
|
+
"brassAgent.preferBundledCli": true
|
|
11
|
+
}
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
With `auto`, the extension resolves the CLI in this order:
|
|
15
|
+
|
|
16
|
+
1. `BRASS_AGENT_COMMAND`, if set in the VS Code extension host environment.
|
|
17
|
+
2. The CLI bundled inside the installed VSIX, when available.
|
|
18
|
+
3. `node_modules/.bin/brass-agent` inside the current workspace.
|
|
19
|
+
4. A nearby `brass-runtime` checkout with `dist/agent/cli/main.cjs`, useful for extension development.
|
|
20
|
+
5. `brass-agent` from `PATH` as a fallback.
|
|
21
|
+
|
|
22
|
+
When the resolved CLI is a JavaScript entrypoint such as `main.cjs`, the extension prefers launching it with `node`. If `node` is not discoverable, it falls back to VS Code Electron-as-Node with `ELECTRON_RUN_AS_NODE=1`.
|
|
23
|
+
|
|
24
|
+
The extension still passes `--cwd <workspace>` to the CLI. The CLI then runs its own workspace discovery, so you can open any repo or package folder and the agent will resolve the actual workspace root.
|
|
25
|
+
|
|
26
|
+
## Install flow
|
|
27
|
+
|
|
28
|
+
From the `brass-runtime` checkout:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm run agent:vscode:install
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
That flow now:
|
|
35
|
+
|
|
36
|
+
```txt
|
|
37
|
+
builds the root CLI
|
|
38
|
+
bundles dist/ into the VS Code extension
|
|
39
|
+
packages the VSIX
|
|
40
|
+
installs the VSIX
|
|
41
|
+
writes brassAgent.command = auto
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
After installation:
|
|
45
|
+
|
|
46
|
+
```txt
|
|
47
|
+
Developer: Reload Window
|
|
48
|
+
Brass Agent -> Chat
|
|
49
|
+
/inspect
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Use in any repo
|
|
53
|
+
|
|
54
|
+
Open any project in VS Code and use the Brass Agent sidebar:
|
|
55
|
+
|
|
56
|
+
```txt
|
|
57
|
+
Brass Agent -> Chat -> /inspect
|
|
58
|
+
Brass Agent -> Chat -> /fix-tests
|
|
59
|
+
Brass Agent -> Chat -> /fix-problems
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
No terminal setup is required as long as the extension has a bundled CLI.
|
|
63
|
+
|
|
64
|
+
## Configure from VS Code
|
|
65
|
+
|
|
66
|
+
Use:
|
|
67
|
+
|
|
68
|
+
```txt
|
|
69
|
+
Brass Agent: Configure CLI
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Options:
|
|
73
|
+
|
|
74
|
+
```txt
|
|
75
|
+
Auto-discover CLI
|
|
76
|
+
Prefer bundled CLI
|
|
77
|
+
Use global brass-agent
|
|
78
|
+
Select CLI file...
|
|
79
|
+
Show resolved CLI
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
If you want to force a global command:
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"brassAgent.command": "brass-agent",
|
|
87
|
+
"brassAgent.preferBundledCli": false
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
If you want to force a local checkout:
|
|
92
|
+
|
|
93
|
+
```json
|
|
94
|
+
{
|
|
95
|
+
"brassAgent.command": "/path/to/brass-runtime/dist/agent/cli/main.cjs"
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Debugging
|
|
100
|
+
|
|
101
|
+
Open the Output panel:
|
|
102
|
+
|
|
103
|
+
```txt
|
|
104
|
+
Brass Agent: Show Output
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Each run logs the resolved CLI, for example:
|
|
108
|
+
|
|
109
|
+
```txt
|
|
110
|
+
CLI: node /home/me/.vscode/extensions/.../bundled/dist/agent/cli/main.cjs (bundled VS Code extension CLI)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
You can also run:
|
|
114
|
+
|
|
115
|
+
```txt
|
|
116
|
+
Brass Agent: Doctor
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
or:
|
|
120
|
+
|
|
121
|
+
```txt
|
|
122
|
+
Brass Agent: Configure CLI -> Show resolved CLI
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Node command
|
|
126
|
+
|
|
127
|
+
If your Node binary is not named `node`, configure it from VS Code settings:
|
|
128
|
+
|
|
129
|
+
```json
|
|
130
|
+
{
|
|
131
|
+
"brassAgent.nodeCommand": "/absolute/path/to/node"
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
This only affects JavaScript CLI entrypoints bundled with the extension or selected manually. Global commands such as `brass-agent` still run directly.
|
|
136
|
+
|
|
137
|
+
When the extension launches the CLI, it passes `BRASS_AGENT_VSCODE_EXTENSION=1` and `BRASS_AGENT_VSCODE_CLI_SOURCE` so `brass-agent --doctor` can explain that no workspace-level `brassAgent.command` setting is required.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# VS Code batch runner
|
|
2
|
+
|
|
3
|
+
P22 adds a VS Code surface for Brass Agent batch runs.
|
|
4
|
+
|
|
5
|
+
The extension remains a thin client:
|
|
6
|
+
|
|
7
|
+
```txt
|
|
8
|
+
VS Code command
|
|
9
|
+
-> brass-agent --protocol-json --batch-file ...
|
|
10
|
+
-> protocol JSON Lines
|
|
11
|
+
-> OutputChannel progress
|
|
12
|
+
-> Runs TreeView history
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
The extension does not interpret batch policy, approvals, validation, patches, or
|
|
16
|
+
rollback rules. Those remain inside `brass-agent` and `src/agent`.
|
|
17
|
+
|
|
18
|
+
## Commands
|
|
19
|
+
|
|
20
|
+
The extension contributes two batch commands:
|
|
21
|
+
|
|
22
|
+
- `Brass Agent: Run Batch File`
|
|
23
|
+
- `Brass Agent: Run Configured Batch`
|
|
24
|
+
|
|
25
|
+
`Run Batch File` opens a VS Code file picker and passes the selected file to the
|
|
26
|
+
CLI:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
brass-agent --protocol-json --protocol-full-patches --cwd <workspace> --batch-file <file>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
`Run Configured Batch` runs the workspace config batch, if the project has one:
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"batch": {
|
|
37
|
+
"stopOnFailure": true,
|
|
38
|
+
"goals": [
|
|
39
|
+
{ "preset": "inspect" },
|
|
40
|
+
{ "preset": "typecheck" },
|
|
41
|
+
{ "preset": "lint" },
|
|
42
|
+
{ "preset": "fix-tests", "mode": "propose" }
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## History representation
|
|
49
|
+
|
|
50
|
+
Batch runs are stored as a parent run in the `Brass Agent` activity-bar view.
|
|
51
|
+
Each `final-state` message emitted by the CLI becomes a child run under that
|
|
52
|
+
batch entry.
|
|
53
|
+
|
|
54
|
+
```txt
|
|
55
|
+
Brass Agent
|
|
56
|
+
Runs
|
|
57
|
+
✓ batch: brass-agent.batch.json
|
|
58
|
+
✓ inspect this workspace
|
|
59
|
+
✓ run typecheck discovery and fix type errors if possible
|
|
60
|
+
! run lint discovery and fix lint errors if possible
|
|
61
|
+
Batch completed: 3/4
|
|
62
|
+
Batch failed: 1
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Child runs can still expose summaries, errors, patches, and details using the
|
|
66
|
+
same run-history UI from P11.
|
|
67
|
+
|
|
68
|
+
## Rerun behavior
|
|
69
|
+
|
|
70
|
+
Rerunning a batch history entry launches the batch again:
|
|
71
|
+
|
|
72
|
+
- batch entries created from a file rerun the same file path
|
|
73
|
+
- configured-batch entries rerun the current workspace config batch
|
|
74
|
+
|
|
75
|
+
As with every other VS Code flow, the editor does not execute agent logic
|
|
76
|
+
directly. It always calls the CLI protocol boundary.
|
|
77
|
+
|
|
78
|
+
## Packaging the extension
|
|
79
|
+
|
|
80
|
+
From the extension folder:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
cd extensions/vscode-brass-agent
|
|
84
|
+
npm install
|
|
85
|
+
npm run compile
|
|
86
|
+
npm run package:vsix
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
That creates a `.vsix` file that can be installed locally in VS Code.
|
|
90
|
+
|
|
91
|
+
The extension expects the `brass-agent` CLI to be available on PATH, or for the
|
|
92
|
+
workspace/user setting `brassAgent.command` to point to the built CLI.
|
|
93
|
+
|
|
94
|
+
Example local setting:
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"brassAgent.command": "/absolute/path/to/brass-runtime/dist/agent/cli/main.cjs"
|
|
99
|
+
}
|
|
100
|
+
```
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# VS Code Chat layout / focus mode
|
|
2
|
+
|
|
3
|
+
Brass Agent can run in two VS Code layouts:
|
|
4
|
+
|
|
5
|
+
- **Sidebar chat** — compact, good for quick prompts and slash commands.
|
|
6
|
+
- **Editor chat** — larger focus-mode webview tab, good for long sessions, patch review follow-ups, or keeping code visible in another editor group.
|
|
7
|
+
|
|
8
|
+
The agent logic is the same in both layouts. Both surfaces share the same chat session, last run context, last patch preview, model configuration, and slash commands.
|
|
9
|
+
|
|
10
|
+
## Open chat in the editor
|
|
11
|
+
|
|
12
|
+
From VS Code:
|
|
13
|
+
|
|
14
|
+
```txt
|
|
15
|
+
Brass Agent: Open Chat in Editor
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Or from the Chat view:
|
|
19
|
+
|
|
20
|
+
```txt
|
|
21
|
+
/focus
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
You can also use the **Open in editor** button in the Chat header.
|
|
25
|
+
|
|
26
|
+
The editor chat opens as a normal editor tab, so you can move it between editor groups, split it beside code, or keep it open while the left sidebar shows Explorer.
|
|
27
|
+
|
|
28
|
+
## Recommended layout
|
|
29
|
+
|
|
30
|
+
A comfortable layout is:
|
|
31
|
+
|
|
32
|
+
```txt
|
|
33
|
+
Left sidebar:
|
|
34
|
+
Explorer
|
|
35
|
+
|
|
36
|
+
Editor area:
|
|
37
|
+
Code tab + Brass Agent Chat tab / split group
|
|
38
|
+
|
|
39
|
+
Bottom panel:
|
|
40
|
+
Terminal, Problems, Output
|
|
41
|
+
|
|
42
|
+
Brass Agent sidebar:
|
|
43
|
+
Project and Run History collapsed unless needed
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
This avoids stacking Project, Chat, and Run History in one narrow sidebar.
|
|
47
|
+
|
|
48
|
+
## Make editor chat the default
|
|
49
|
+
|
|
50
|
+
You can make `Brass Agent: Open Chat` and selection/code-action flows open the larger editor chat by default:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"brassAgent.chat.defaultLocation": "editor"
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Use `sidebar` to keep the previous behavior:
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"brassAgent.chat.defaultLocation": "sidebar"
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Project dashboard in the editor
|
|
67
|
+
|
|
68
|
+
The Project dashboard can also open as a larger editor tab:
|
|
69
|
+
|
|
70
|
+
```txt
|
|
71
|
+
Brass Agent: Open Project Dashboard in Editor
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
This is useful when inspecting a repo profile, validation command, model state, and warnings without compressing the Chat view.
|
|
75
|
+
|
|
76
|
+
## Focus Chat Layout
|
|
77
|
+
|
|
78
|
+
`Brass Agent: Focus Chat Layout` opens the editor chat and focuses the editor group. It is a quick way to move from the sidebar into a larger working area.
|
|
79
|
+
|
|
80
|
+
## Safety
|
|
81
|
+
|
|
82
|
+
Changing the layout does not change agent behavior:
|
|
83
|
+
|
|
84
|
+
```txt
|
|
85
|
+
VS Code UI
|
|
86
|
+
-> brass-agent CLI protocol
|
|
87
|
+
-> permissions / approvals / patch preview / apply / rollback
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
The extension still does not apply patches directly. Apply and rollback continue to go through the `brass-agent` CLI.
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# VS Code full clean and reinstall
|
|
2
|
+
|
|
3
|
+
Use this when the Brass Agent sidebar looks stale, the Chat view is missing, or
|
|
4
|
+
VS Code still shows an older extension after rebuilding.
|
|
5
|
+
|
|
6
|
+
## Where the UI is
|
|
7
|
+
|
|
8
|
+
After installing the extension, reload VS Code:
|
|
9
|
+
|
|
10
|
+
```txt
|
|
11
|
+
Developer: Reload Window
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Then open the Brass Agent activity-bar icon.
|
|
15
|
+
|
|
16
|
+
The expected layout is:
|
|
17
|
+
|
|
18
|
+
```txt
|
|
19
|
+
Brass Agent
|
|
20
|
+
Chat
|
|
21
|
+
Run History
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
If you only see `Run History`, or the toolbar still looks like an older build,
|
|
25
|
+
you are probably running an old VSIX. Do a full clean reinstall.
|
|
26
|
+
|
|
27
|
+
You can also open the chat directly from the Command Palette:
|
|
28
|
+
|
|
29
|
+
```txt
|
|
30
|
+
Brass Agent: Open Chat
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Full clean reinstall
|
|
34
|
+
|
|
35
|
+
From the repository root:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm run agent:vscode:reinstall
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
That runs:
|
|
42
|
+
|
|
43
|
+
```txt
|
|
44
|
+
agent:vscode:clean
|
|
45
|
+
agent:vscode:install
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Then reload VS Code again:
|
|
49
|
+
|
|
50
|
+
```txt
|
|
51
|
+
Developer: Reload Window
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Clean only
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
npm run agent:vscode:clean
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
This removes:
|
|
61
|
+
|
|
62
|
+
```txt
|
|
63
|
+
- the installed VS Code extension
|
|
64
|
+
- installed extension folders under ~/.vscode*/extensions when present
|
|
65
|
+
- VS Code globalStorage for the extension when present
|
|
66
|
+
- generated .vsix files
|
|
67
|
+
- brassAgent.* keys from workspace .vscode/settings.json
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
It intentionally keeps the root build output and source files.
|
|
71
|
+
|
|
72
|
+
## Uninstall only
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
npm run agent:vscode:uninstall
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
This only asks VS Code to uninstall the extension. It does not delete generated
|
|
79
|
+
VSIX packages, workspace settings, or extension storage.
|
|
80
|
+
|
|
81
|
+
## Global uninstall
|
|
82
|
+
|
|
83
|
+
If you installed the extension in global-command mode:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
npm run agent:vscode:install:global
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
use the matching global uninstall:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
npm run agent:vscode:uninstall:global
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
That runs the VS Code clean flow and then removes the global `brass-runtime` npm link/install, so `brass-agent` should no longer resolve from `PATH`.
|
|
96
|
+
|
|
97
|
+
For a full clean reinstall in global-command mode:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
npm run agent:vscode:reinstall:global
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Preview the cleanup
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
node scripts/clean-vscode-extension.mjs --dry-run
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
The script refuses destructive file deletion unless you pass `--yes`; the npm
|
|
110
|
+
scripts include `--yes` because they are explicit clean/uninstall scripts.
|
|
111
|
+
|
|
112
|
+
## Useful variants
|
|
113
|
+
|
|
114
|
+
Clean a different workspace settings file:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
node scripts/clean-vscode-extension.mjs --yes --workspace ../other-project
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Use VS Code Insiders:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
node scripts/clean-vscode-extension.mjs --yes --code code-insiders
|
|
124
|
+
node scripts/install-vscode-extension.mjs --code code-insiders
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Delete the compiled extension output too:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
node scripts/clean-vscode-extension.mjs --yes --extension-build
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## After reinstall
|
|
134
|
+
|
|
135
|
+
Run:
|
|
136
|
+
|
|
137
|
+
```txt
|
|
138
|
+
Brass Agent: Doctor
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Then try:
|
|
142
|
+
|
|
143
|
+
```txt
|
|
144
|
+
Brass Agent: Open Chat
|
|
145
|
+
/help
|
|
146
|
+
/inspect
|
|
147
|
+
```
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# VS Code Code Actions / Lightbulb
|
|
2
|
+
|
|
3
|
+
Brass Agent can expose native VS Code code actions so common workflows are available from the editor lightbulb and Quick Fix menu.
|
|
4
|
+
|
|
5
|
+
This keeps the editor UX closer to Copilot-style usage without changing the architecture:
|
|
6
|
+
|
|
7
|
+
```txt
|
|
8
|
+
VS Code CodeAction
|
|
9
|
+
-> Brass Agent Chat draft
|
|
10
|
+
-> brass-agent CLI protocol
|
|
11
|
+
-> patch preview / approval
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
The extension still does not apply patches directly.
|
|
15
|
+
|
|
16
|
+
## Problem actions
|
|
17
|
+
|
|
18
|
+
When VS Code reports diagnostics for the current range, the lightbulb can show:
|
|
19
|
+
|
|
20
|
+
```txt
|
|
21
|
+
Fix problem with Brass Agent
|
|
22
|
+
Explain problem with Brass Agent
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
These actions open the Brass Agent Chat with a prompt containing:
|
|
26
|
+
|
|
27
|
+
```txt
|
|
28
|
+
file path
|
|
29
|
+
language id
|
|
30
|
+
range
|
|
31
|
+
diagnostics
|
|
32
|
+
relevant code snippet
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
`Fix problem` uses apply-after-preview mode, so any generated diff is shown before it can be applied.
|
|
36
|
+
|
|
37
|
+
## Selection actions
|
|
38
|
+
|
|
39
|
+
When text is selected, the lightbulb can show:
|
|
40
|
+
|
|
41
|
+
```txt
|
|
42
|
+
Explain selection with Brass Agent
|
|
43
|
+
Fix selection with Brass Agent
|
|
44
|
+
Refactor selection with Brass Agent
|
|
45
|
+
Generate tests with Brass Agent
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
These actions prefill the Chat view with the selected code and an appropriate task.
|
|
49
|
+
|
|
50
|
+
## Slash commands still work
|
|
51
|
+
|
|
52
|
+
The Chat view still supports:
|
|
53
|
+
|
|
54
|
+
```txt
|
|
55
|
+
/inspect
|
|
56
|
+
/fix-tests
|
|
57
|
+
/typecheck
|
|
58
|
+
/lint
|
|
59
|
+
/explain-last
|
|
60
|
+
/apply-last
|
|
61
|
+
/rollback-last
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Use code actions for local editor context, and slash commands for workspace-level tasks.
|
|
65
|
+
|
|
66
|
+
## Notes
|
|
67
|
+
|
|
68
|
+
- Code actions are registered for `file` documents.
|
|
69
|
+
- Patch application remains mediated by `brass-agent`.
|
|
70
|
+
- Problem actions depend on diagnostics from installed language extensions, such as TypeScript or ESLint.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# VS Code enhanced diff preview
|
|
2
|
+
|
|
3
|
+
P35 improves the patch preview Webview used by Brass Agent.
|
|
4
|
+
|
|
5
|
+
The extension still does not apply patches directly. The Webview is only a review and approval surface; applying still goes through `brass-agent --apply-patch-file`.
|
|
6
|
+
|
|
7
|
+
## What the preview shows
|
|
8
|
+
|
|
9
|
+
The preview now groups unified diffs by file and shows:
|
|
10
|
+
|
|
11
|
+
```txt
|
|
12
|
+
file count
|
|
13
|
+
added / removed lines
|
|
14
|
+
per-file hunks
|
|
15
|
+
per-file patch sections
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Each file section can be expanded or collapsed.
|
|
19
|
+
|
|
20
|
+
## Actions
|
|
21
|
+
|
|
22
|
+
The preview supports:
|
|
23
|
+
|
|
24
|
+
```txt
|
|
25
|
+
Apply Patch
|
|
26
|
+
Copy Full Patch
|
|
27
|
+
Collapse All
|
|
28
|
+
Expand All
|
|
29
|
+
Open file
|
|
30
|
+
Copy file patch
|
|
31
|
+
Close
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`Open file` resolves the path inside the workspace before opening it. Paths outside the workspace are rejected.
|
|
35
|
+
|
|
36
|
+
## Safety
|
|
37
|
+
|
|
38
|
+
The apply flow is unchanged:
|
|
39
|
+
|
|
40
|
+
```txt
|
|
41
|
+
Patch Preview
|
|
42
|
+
-> user approves exact diff
|
|
43
|
+
-> brass-agent --apply-patch-file <temp.diff> --yes
|
|
44
|
+
-> PermissionService / PatchService / git apply --check / git apply
|
|
45
|
+
```
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# VS Code Inline Assist
|
|
2
|
+
|
|
3
|
+
P34 adds a lightweight Inline Assist flow for editor-first usage.
|
|
4
|
+
|
|
5
|
+
It is not ghost-text autocomplete. It is a quick editor command that uses the current selection, or a configurable number of surrounding lines around the cursor, and opens the Brass Agent Chat with a focused prompt.
|
|
6
|
+
|
|
7
|
+
## Command
|
|
8
|
+
|
|
9
|
+
```txt
|
|
10
|
+
Brass Agent: Inline Assist...
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
You can also access it from the editor context menu.
|
|
14
|
+
|
|
15
|
+
## Available intents
|
|
16
|
+
|
|
17
|
+
Inline Assist offers:
|
|
18
|
+
|
|
19
|
+
```txt
|
|
20
|
+
Ask about this code
|
|
21
|
+
Explain this code
|
|
22
|
+
Fix this code
|
|
23
|
+
Refactor this code
|
|
24
|
+
Generate tests
|
|
25
|
+
Custom instruction...
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Read-only intents open the Chat in Ask mode. Patch-producing intents open the Chat in apply-after-preview mode, so any diff still goes through patch preview and exact apply via `brass-agent`.
|
|
29
|
+
|
|
30
|
+
## Selection vs cursor context
|
|
31
|
+
|
|
32
|
+
If text is selected, Inline Assist includes that exact selection.
|
|
33
|
+
|
|
34
|
+
If there is no selection, it includes surrounding lines around the cursor.
|
|
35
|
+
|
|
36
|
+
Configure the number of surrounding lines:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"brassAgent.inlineAssistSurroundingLines": 20
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Set it to `0` to include only the current line when there is no selection.
|
|
45
|
+
|
|
46
|
+
## Safety
|
|
47
|
+
|
|
48
|
+
Inline Assist does not edit files directly. The flow is:
|
|
49
|
+
|
|
50
|
+
```txt
|
|
51
|
+
editor selection/cursor context
|
|
52
|
+
-> Chat draft
|
|
53
|
+
-> brass-agent run
|
|
54
|
+
-> patch preview if any
|
|
55
|
+
-> exact patch apply via CLI only after approval
|
|
56
|
+
```
|