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,180 @@
1
+ # Brass Agent global usage and workspace discovery
2
+
3
+ `brass-agent` is meant to run from **any project**, not only from the `brass-runtime` checkout.
4
+
5
+ The runtime checkout is where the CLI is built. The workspace is whichever project you run the CLI against.
6
+
7
+ ```txt
8
+ brass-runtime checkout
9
+ -> builds/installs brass-agent
10
+
11
+ any other project
12
+ -> run brass-agent here
13
+ -> agent discovers that project as the workspace
14
+ ```
15
+
16
+ ## Install the CLI globally for local development
17
+
18
+ From the `brass-runtime` checkout:
19
+
20
+ ```bash
21
+ npm run agent:link
22
+ ```
23
+
24
+ This runs:
25
+
26
+ ```bash
27
+ npm run build
28
+ npm link
29
+ ```
30
+
31
+ After that, `brass-agent` should be available on your `PATH` from any folder:
32
+
33
+ ```bash
34
+ brass-agent --where
35
+ brass-agent --doctor
36
+ brass-agent --preset inspect
37
+ ```
38
+
39
+ To remove the global CLI link/install:
40
+
41
+ ```bash
42
+ npm run agent:unlink
43
+ ```
44
+
45
+ This command is idempotent: it is okay if the package is not currently linked or installed globally.
46
+
47
+ ## Use it in another project
48
+
49
+ ```bash
50
+ cd /path/to/another-project
51
+ brass-agent --where
52
+ brass-agent --init --init-profile google
53
+ brass-agent --doctor
54
+ brass-agent --preset inspect
55
+ ```
56
+
57
+ `--where` prints the workspace root the agent will use.
58
+
59
+ ## Workspace auto-discovery
60
+
61
+ By default, `brass-agent` treats `--cwd` as a **starting directory**, not necessarily the final workspace root.
62
+
63
+ It searches upward for the nearest workspace marker:
64
+
65
+ ```txt
66
+ .brass-agent.json
67
+ brass-agent.config.json
68
+ package.json
69
+ pnpm-workspace.yaml
70
+ turbo.json
71
+ nx.json
72
+ .git
73
+ ```
74
+
75
+ Examples:
76
+
77
+ ```bash
78
+ cd /repo/packages/api/src/routes
79
+ brass-agent --where
80
+ ```
81
+
82
+ May resolve to:
83
+
84
+ ```txt
85
+ workspace: /repo/packages/api
86
+ marker: package.json
87
+ ```
88
+
89
+ Then config discovery, env-file loading, package-manager detection, validation commands, context discovery, and patch application all use that resolved workspace.
90
+
91
+ ## Disable workspace discovery
92
+
93
+ If you intentionally want the exact current folder:
94
+
95
+ ```bash
96
+ brass-agent --no-discover-workspace --where
97
+ ```
98
+
99
+ or:
100
+
101
+ ```bash
102
+ brass-agent --no-discover-workspace --cwd ./some/subdir "inspect this folder"
103
+ ```
104
+
105
+ ## VS Code with a global CLI
106
+
107
+ If the CLI is globally linked, the VS Code extension can just use:
108
+
109
+ ```json
110
+ {
111
+ "brassAgent.command": "brass-agent"
112
+ }
113
+ ```
114
+
115
+ To install the extension and write that setting into the current workspace:
116
+
117
+ ```bash
118
+ npm run agent:vscode:install:global
119
+ ```
120
+
121
+ That script now links the CLI globally first, then installs the VS Code extension with `brassAgent.command = "brass-agent"`.
122
+
123
+ To remove the global VS Code setup and the global CLI link/install:
124
+
125
+ ```bash
126
+ npm run agent:vscode:uninstall:global
127
+ ```
128
+
129
+ To force a full clean global reinstall:
130
+
131
+ ```bash
132
+ npm run agent:vscode:reinstall:global
133
+ ```
134
+
135
+ For a different workspace:
136
+
137
+ ```bash
138
+ node scripts/install-vscode-extension.mjs \
139
+ --use-global-command \
140
+ --workspace /path/to/another-project
141
+ ```
142
+
143
+ This is the best setup when you want one local Brass Agent installation and many workspaces.
144
+
145
+ ## Absolute local CLI path
146
+
147
+ For development of the agent itself, the installer may write an absolute command:
148
+
149
+ ```json
150
+ {
151
+ "brassAgent.command": "/path/to/brass-runtime/dist/agent/cli/main.cjs"
152
+ }
153
+ ```
154
+
155
+ That works too, but it is less portable than `brass-agent`.
156
+
157
+ ## Recommended daily workflow
158
+
159
+ Once globally linked:
160
+
161
+ ```bash
162
+ cd /path/to/project
163
+ brass-agent --where
164
+ brass-agent --doctor
165
+ brass-agent --preset inspect
166
+ brass-agent --preset typecheck
167
+ brass-agent "fix the failing tests"
168
+ ```
169
+
170
+ From VS Code:
171
+
172
+ ```txt
173
+ Brass Agent -> Chat -> /inspect
174
+ Brass Agent -> Chat -> /fix-tests
175
+ ```
176
+
177
+
178
+ ## VS Code auto-discovery
179
+
180
+ The VS Code extension can now use `brassAgent.command = "auto"` and prefer its bundled CLI, so you can open any repo and use Brass Agent without linking the CLI globally. See [VS Code auto-discovery](./agent-vscode-auto-discovery.md).
@@ -0,0 +1,109 @@
1
+ # Brass Agent init
2
+
3
+ > For the end-to-end setup flow, see [Brass Agent install and configure](./agent-install-and-configure.md).
4
+
5
+ `brass-agent --init` bootstraps a workspace for local Brass Agent usage without adding CI or release automation.
6
+
7
+ It creates these files in `--cwd`:
8
+
9
+ - `.brass-agent.json` — project-local policy/config.
10
+ - `brass-agent.batch.json` — sample multi-goal workflow for `--batch-file`.
11
+ - `.env.example` — example LLM environment variables; real secrets must stay outside git.
12
+ - `BRASS_AGENT.md` — short local usage note for the repository.
13
+
14
+ The command never writes real secrets and does not overwrite existing files unless `--force` or `--init-force` is passed.
15
+
16
+ ## Basic usage
17
+
18
+ ```bash
19
+ brass-agent --init
20
+ brass-agent --doctor
21
+ ```
22
+
23
+ For development from the repository:
24
+
25
+ ```bash
26
+ npm run agent:init
27
+ npm run agent:init:dry-run
28
+ ```
29
+
30
+ Initialize a different workspace:
31
+
32
+ ```bash
33
+ brass-agent --init --cwd ../my-project
34
+ ```
35
+
36
+ Preview without writing:
37
+
38
+ ```bash
39
+ brass-agent --init --init-dry-run
40
+ ```
41
+
42
+ Overwrite previously generated files:
43
+
44
+ ```bash
45
+ brass-agent --init --force
46
+ ```
47
+
48
+ ## Profiles
49
+
50
+ `--init-profile` selects how much LLM config is written.
51
+
52
+ ```bash
53
+ brass-agent --init --init-profile default
54
+ brass-agent --init --init-profile google
55
+ brass-agent --init --init-profile openai-compatible
56
+ brass-agent --init --init-profile fake
57
+ ```
58
+
59
+ Profiles:
60
+
61
+ - `default` leaves `config.llm` unset, so the CLI keeps its normal provider auto-detection and can fall back to fake mode.
62
+ - `google` writes Gemini config using `GEMINI_API_KEY` and `gemini-2.5-flash`.
63
+ - `openai-compatible` writes `/chat/completions` config using `BRASS_LLM_API_KEY` and `BRASS_LLM_ENDPOINT`.
64
+ - `fake` writes an offline fake provider config for smoke tests.
65
+
66
+ `--init-provider` is an alias for provider-oriented profiles:
67
+
68
+ ```bash
69
+ brass-agent --init --init-provider google
70
+ brass-agent --init --init-provider auto
71
+ ```
72
+
73
+ `auto` maps to the `default` profile.
74
+
75
+ ## Generated config shape
76
+
77
+ The generated `.brass-agent.json` is intentionally conservative:
78
+
79
+ - default mode is `propose`;
80
+ - approval mode is `auto`;
81
+ - patch apply requires approval;
82
+ - redaction is enabled;
83
+ - context discovery excludes `.env*`, private keys, `node_modules`, build outputs, and `secrets/**`;
84
+ - rollback safety is enabled for generated patches;
85
+ - shell permissions inherit the built-in validation allowlist and explicitly deny dangerous commands like `rm *`, `git push *`, `git reset *`, and `git clean *`.
86
+
87
+ The initializer also inspects `package.json` when present:
88
+
89
+ - package manager is inferred from `packageManager` or lockfiles;
90
+ - `includeTypecheck` is enabled only when common typecheck scripts exist;
91
+ - `includeLint` is enabled only when common lint scripts exist;
92
+ - the sample batch file includes only presets that make sense for the scripts it finds.
93
+
94
+ ## Recommended flow
95
+
96
+ ```bash
97
+ brass-agent --init
98
+ brass-agent --doctor
99
+ brass-agent --preset inspect
100
+ brass-agent --batch-file brass-agent.batch.json
101
+ ```
102
+
103
+ For VS Code, run the local installer after init:
104
+
105
+ ```bash
106
+ npm run agent:vscode:install
107
+ ```
108
+
109
+ or install the `.vsix` manually from `extensions/vscode-brass-agent`.