brass-runtime 1.15.0 → 1.16.1

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.
Files changed (209) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +673 -136
  3. package/dist/agent/cli/main.cjs +40 -35
  4. package/dist/agent/cli/main.js +9 -4
  5. package/dist/agent/cli/main.mjs +9 -4
  6. package/dist/agent/index.cjs +8 -4
  7. package/dist/agent/index.d.ts +1 -1
  8. package/dist/agent/index.js +7 -3
  9. package/dist/agent/index.mjs +7 -3
  10. package/dist/chunk-2HQTDLHF.mjs +683 -0
  11. package/dist/chunk-36I3M4UC.mjs +370 -0
  12. package/dist/chunk-3AYM6WPJ.js +1629 -0
  13. package/dist/chunk-3LOYJFRR.cjs +300 -0
  14. package/dist/chunk-3RG5ZIWI.js +10 -0
  15. package/dist/chunk-3Y2RIUMM.js +300 -0
  16. package/dist/{chunk-VEZNF5GZ.cjs → chunk-4ROBZFL6.cjs} +130 -126
  17. package/dist/{chunk-3QMOKAS5.js → chunk-52OB2ROS.js} +9 -5
  18. package/dist/chunk-52PPNNI4.cjs +416 -0
  19. package/dist/chunk-5EC274J5.cjs +2874 -0
  20. package/dist/chunk-5QC7LRZ3.js +229 -0
  21. package/dist/chunk-5VRJNBLZ.mjs +2874 -0
  22. package/dist/chunk-62AZW6UT.cjs +313 -0
  23. package/dist/chunk-6IXXWIUM.js +683 -0
  24. package/dist/chunk-74ZTY6CP.js +2871 -0
  25. package/dist/chunk-76YMRMH2.cjs +777 -0
  26. package/dist/chunk-7CMJS3QE.mjs +2871 -0
  27. package/dist/{chunk-4NHES7VK.mjs → chunk-7JIJOVCT.js} +27 -13
  28. package/dist/chunk-A2OM6NEH.mjs +194 -0
  29. package/dist/chunk-AGR5B2BC.cjs +683 -0
  30. package/dist/chunk-AVNQLJ5V.js +777 -0
  31. package/dist/chunk-B33ICAKP.js +313 -0
  32. package/dist/{chunk-ELOOF35R.mjs → chunk-B5JD23U7.mjs} +1 -1
  33. package/dist/chunk-BABBZK4Y.js +2024 -0
  34. package/dist/chunk-C3MDXTRZ.js +354 -0
  35. package/dist/chunk-CIZFIMK5.js +2193 -0
  36. package/dist/chunk-CZIVE6NT.cjs +354 -0
  37. package/dist/chunk-DNFJLJMW.mjs +354 -0
  38. package/dist/chunk-DNFO2EIZ.mjs +777 -0
  39. package/dist/chunk-EJ6BPYVR.mjs +416 -0
  40. package/dist/chunk-ENKODRU3.cjs +2193 -0
  41. package/dist/chunk-EOC4UHBS.mjs +229 -0
  42. package/dist/{chunk-BMH5AV44.js → chunk-FH2X7BVP.js} +756 -440
  43. package/dist/{chunk-PPUXIH5R.js → chunk-FHQGHPMO.mjs} +27 -13
  44. package/dist/{chunk-TGIFUAK4.cjs → chunk-GLE2WY7Z.cjs} +951 -635
  45. package/dist/{chunk-BDF4AMWX.mjs → chunk-GYM3LLGS.mjs} +756 -440
  46. package/dist/chunk-HLWLMW2F.mjs +2024 -0
  47. package/dist/chunk-JF5WGYJJ.cjs +194 -0
  48. package/dist/chunk-KH4SYAOS.mjs +1629 -0
  49. package/dist/chunk-KN32XNTH.mjs +313 -0
  50. package/dist/chunk-KQLYONSE.cjs +2871 -0
  51. package/dist/{chunk-STVLQ3XD.cjs → chunk-KZJQ723N.cjs} +92 -78
  52. package/dist/chunk-L2SYFEBS.js +194 -0
  53. package/dist/chunk-L6VB5N7Q.cjs +104 -0
  54. package/dist/{chunk-K6M7MDZ4.mjs → chunk-MBEJI5HF.mjs} +9 -5
  55. package/dist/chunk-MIIYDLGM.js +2874 -0
  56. package/dist/chunk-MOO4L7F4.mjs +104 -0
  57. package/dist/chunk-MT3OWDPC.mjs +2193 -0
  58. package/dist/chunk-MVGUEJ5Z.cjs +370 -0
  59. package/dist/chunk-OBGZSXTJ.cjs +10 -0
  60. package/dist/chunk-PD4EJTQC.cjs +229 -0
  61. package/dist/chunk-PWC3RBQE.mjs +300 -0
  62. package/dist/chunk-Q2I37RP3.cjs +1629 -0
  63. package/dist/chunk-RKGKFN2A.js +416 -0
  64. package/dist/{chunk-R3R2FVLG.cjs → chunk-SA6HUJVI.cjs} +5 -5
  65. package/dist/chunk-TRM4JUZQ.js +104 -0
  66. package/dist/chunk-UB4B6OFY.js +370 -0
  67. package/dist/{chunk-TO7IKXYT.js → chunk-UCUBNWM2.js} +1 -1
  68. package/dist/chunk-VN44DYYT.cjs +2024 -0
  69. package/dist/chunk-Y6FXYEAI.mjs +10 -0
  70. package/dist/client-CZHU674n.d.ts +820 -0
  71. package/dist/core/index.cjs +198 -4
  72. package/dist/core/index.d.ts +311 -212
  73. package/dist/core/index.js +237 -43
  74. package/dist/core/index.mjs +237 -43
  75. package/dist/{effect-CMOQKX8y.d.ts → effect-DIUHZ9IN.d.ts} +195 -1
  76. package/dist/effectRunner-CFLC32IK.cjs +8 -0
  77. package/dist/effectRunner-L4S7IPT3.js +8 -0
  78. package/dist/effectRunner-NNGG75QA.mjs +8 -0
  79. package/dist/http/index.cjs +1227 -2971
  80. package/dist/http/index.d.ts +826 -280
  81. package/dist/http/index.js +1089 -2833
  82. package/dist/http/index.mjs +1089 -2833
  83. package/dist/http/testing.cjs +161 -0
  84. package/dist/http/testing.d.ts +43 -0
  85. package/dist/http/testing.js +161 -0
  86. package/dist/http/testing.mjs +161 -0
  87. package/dist/index.cjs +486 -250
  88. package/dist/index.d.ts +87 -95
  89. package/dist/index.js +391 -155
  90. package/dist/index.mjs +391 -155
  91. package/dist/observability/index.cjs +162 -0
  92. package/dist/observability/index.d.ts +152 -0
  93. package/dist/observability/index.js +162 -0
  94. package/dist/observability/index.mjs +162 -0
  95. package/dist/perf/cli.cjs +401 -0
  96. package/dist/perf/cli.d.ts +1 -0
  97. package/dist/perf/cli.js +401 -0
  98. package/dist/perf/cli.mjs +401 -0
  99. package/dist/perf/index.cjs +141 -0
  100. package/dist/perf/index.d.ts +483 -0
  101. package/dist/perf/index.js +141 -0
  102. package/dist/perf/index.mjs +141 -0
  103. package/dist/schedule-CK3Ml_7p.d.ts +259 -0
  104. package/dist/schema/index.cjs +29 -0
  105. package/dist/schema/index.d.ts +179 -0
  106. package/dist/schema/index.js +29 -0
  107. package/dist/schema/index.mjs +29 -0
  108. package/dist/server-GJPg8ZSG.d.ts +675 -0
  109. package/dist/{stream-FQm9h4Mg.d.ts → stream-B4oK9JFP.d.ts} +1 -1
  110. package/dist/tracer-Hwt1cl7h.d.ts +189 -0
  111. package/dist/tracing-DqbTKGcf.d.ts +148 -0
  112. package/docs/ARCHITECTURE.md +292 -0
  113. package/docs/README.md +63 -0
  114. package/docs/adr/0001-ai-context-pack.md +32 -0
  115. package/docs/agent-apply-mode.md +104 -0
  116. package/docs/agent-approvals.md +110 -0
  117. package/docs/agent-batch.md +185 -0
  118. package/docs/agent-boundaries.md +112 -0
  119. package/docs/agent-chat-sessions.md +160 -0
  120. package/docs/agent-ci.md +17 -0
  121. package/docs/agent-cli.md +405 -0
  122. package/docs/agent-config.md +480 -0
  123. package/docs/agent-context-discovery.md +159 -0
  124. package/docs/agent-copilot-like-dx.md +126 -0
  125. package/docs/agent-declarative-optimized-planning.md +138 -0
  126. package/docs/agent-dx.md +224 -0
  127. package/docs/agent-env-files.md +126 -0
  128. package/docs/agent-follow-up-context.md +43 -0
  129. package/docs/agent-global-usage.md +180 -0
  130. package/docs/agent-init.md +109 -0
  131. package/docs/agent-install-and-configure.md +516 -0
  132. package/docs/agent-language-workspace-ux.md +99 -0
  133. package/docs/agent-llm-adapters.md +123 -0
  134. package/docs/agent-local-install.md +190 -0
  135. package/docs/agent-local-tests.md +51 -0
  136. package/docs/agent-observability.md +155 -0
  137. package/docs/agent-patch-quality-loop.md +162 -0
  138. package/docs/agent-presets.md +22 -0
  139. package/docs/agent-project-commands.md +237 -0
  140. package/docs/agent-project-intelligence.md +156 -0
  141. package/docs/agent-redaction.md +18 -0
  142. package/docs/agent-release-readiness.md +76 -0
  143. package/docs/agent-rollback-safety.md +162 -0
  144. package/docs/agent-rollback.md +23 -0
  145. package/docs/agent-run-artifacts.md +16 -0
  146. package/docs/agent-vscode-auto-discovery.md +137 -0
  147. package/docs/agent-vscode-batch-runner.md +100 -0
  148. package/docs/agent-vscode-chat-layout.md +90 -0
  149. package/docs/agent-vscode-clean-install.md +147 -0
  150. package/docs/agent-vscode-code-actions.md +70 -0
  151. package/docs/agent-vscode-diff-preview.md +45 -0
  152. package/docs/agent-vscode-inline-assist.md +56 -0
  153. package/docs/agent-vscode-install.md +186 -0
  154. package/docs/agent-vscode-model-setup.md +97 -0
  155. package/docs/agent-vscode-patch-preview.md +92 -0
  156. package/docs/agent-vscode-problems.md +79 -0
  157. package/docs/agent-vscode-project-dashboard.md +106 -0
  158. package/docs/agent-vscode-run-history.md +92 -0
  159. package/docs/agent-vscode-ux.md +73 -0
  160. package/docs/ai/INVARIANTS.md +84 -0
  161. package/docs/ai/PROJECT_MAP.md +338 -0
  162. package/docs/ai/PUBLIC_API.md +336 -0
  163. package/docs/ai/VALIDATION_MATRIX.md +67 -0
  164. package/docs/api-polish.md +37 -0
  165. package/docs/cancellation.md +162 -0
  166. package/docs/coverage.md +46 -0
  167. package/docs/getting-started.md +159 -0
  168. package/docs/guides/README.md +40 -0
  169. package/docs/guides/circuit-breaker.md +89 -0
  170. package/docs/guides/error-handling.md +91 -0
  171. package/docs/guides/getting-started.md +107 -0
  172. package/docs/guides/layers.md +189 -0
  173. package/docs/guides/metrics.md +101 -0
  174. package/docs/guides/resource-management.md +141 -0
  175. package/docs/guides/retry.md +215 -0
  176. package/docs/guides/semaphore.md +66 -0
  177. package/docs/guides/streams.md +117 -0
  178. package/docs/guides/supervisors.md +98 -0
  179. package/docs/guides/testing.md +162 -0
  180. package/docs/guides/tracing.md +71 -0
  181. package/docs/http-recipes.md +399 -0
  182. package/docs/http.md +749 -0
  183. package/docs/modules.md +285 -0
  184. package/docs/observability-collector-smoke.md +31 -0
  185. package/docs/observability-framework-examples.md +98 -0
  186. package/docs/observability.md +542 -0
  187. package/docs/otel-collector-smoke.yaml +27 -0
  188. package/docs/performance-profiler.md +199 -0
  189. package/docs/production-readiness.md +73 -0
  190. package/docs/recipes/README.md +12 -0
  191. package/docs/recipes/http-server.md +45 -0
  192. package/docs/recipes/layers.md +44 -0
  193. package/docs/recipes/performance.md +47 -0
  194. package/docs/recipes/runtime.md +41 -0
  195. package/docs/recipes/testing.md +41 -0
  196. package/docs/release.md +53 -0
  197. package/docs/wasm-bounded-queues.md +44 -0
  198. package/docs/wasm-engine-observability-benchmarks.md +85 -0
  199. package/docs/wasm-fiber-engine.md +117 -0
  200. package/docs/wasm-scheduler-state-machine.md +122 -0
  201. package/docs/wasm-stream-chunks.md +54 -0
  202. package/package.json +48 -2
  203. package/dist/chunk-AR22SXML.js +0 -1043
  204. package/dist/chunk-BDYEENHT.js +0 -224
  205. package/dist/chunk-JFPU5GQI.mjs +0 -1043
  206. package/dist/chunk-MS34J5LY.cjs +0 -224
  207. package/dist/chunk-UMAZLXAB.mjs +0 -224
  208. package/dist/chunk-XPZNXSVN.cjs +0 -1043
  209. package/dist/tracing-DNT9jEbr.d.ts +0 -106
@@ -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
+ ```