@ironbee-ai/cli 0.12.0 → 0.14.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.
Files changed (227) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +12 -2
  3. package/dist/assets/banner.txt +1 -1
  4. package/dist/clients/claude/hooks/activity-start.d.ts.map +1 -1
  5. package/dist/clients/claude/hooks/activity-start.js +4 -0
  6. package/dist/clients/claude/hooks/activity-start.js.map +1 -1
  7. package/dist/clients/claude/hooks/session-start.d.ts.map +1 -1
  8. package/dist/clients/claude/hooks/session-start.js +4 -0
  9. package/dist/clients/claude/hooks/session-start.js.map +1 -1
  10. package/dist/clients/claude/hooks/session-status.d.ts.map +1 -1
  11. package/dist/clients/claude/hooks/session-status.js +8 -2
  12. package/dist/clients/claude/hooks/session-status.js.map +1 -1
  13. package/dist/clients/claude/index.d.ts +10 -0
  14. package/dist/clients/claude/index.d.ts.map +1 -1
  15. package/dist/clients/claude/index.js +110 -0
  16. package/dist/clients/claude/index.js.map +1 -1
  17. package/dist/clients/cursor/index.d.ts.map +1 -1
  18. package/dist/clients/cursor/index.js +6 -0
  19. package/dist/clients/cursor/index.js.map +1 -1
  20. package/dist/clients/registry.d.ts +8 -9
  21. package/dist/clients/registry.d.ts.map +1 -1
  22. package/dist/clients/registry.js +13 -11
  23. package/dist/clients/registry.js.map +1 -1
  24. package/dist/commands/config.d.ts.map +1 -1
  25. package/dist/commands/config.js +1 -0
  26. package/dist/commands/config.js.map +1 -1
  27. package/dist/commands/install.d.ts.map +1 -1
  28. package/dist/commands/install.js +4 -5
  29. package/dist/commands/install.js.map +1 -1
  30. package/dist/commands/otel.d.ts +20 -0
  31. package/dist/commands/otel.d.ts.map +1 -0
  32. package/dist/commands/otel.js +132 -0
  33. package/dist/commands/otel.js.map +1 -0
  34. package/dist/commands/register.d.ts +0 -1
  35. package/dist/commands/register.d.ts.map +1 -1
  36. package/dist/commands/register.js +7 -27
  37. package/dist/commands/register.js.map +1 -1
  38. package/dist/commands/uninstall.d.ts +2 -3
  39. package/dist/commands/uninstall.d.ts.map +1 -1
  40. package/dist/commands/uninstall.js +3 -4
  41. package/dist/commands/uninstall.js.map +1 -1
  42. package/dist/commands/unregister.d.ts +0 -1
  43. package/dist/commands/unregister.d.ts.map +1 -1
  44. package/dist/commands/unregister.js +3 -24
  45. package/dist/commands/unregister.js.map +1 -1
  46. package/dist/index.js +37 -16
  47. package/dist/index.js.map +1 -1
  48. package/dist/lib/config.d.ts +47 -0
  49. package/dist/lib/config.d.ts.map +1 -1
  50. package/dist/lib/config.js +57 -3
  51. package/dist/lib/config.js.map +1 -1
  52. package/dist/lib/event.d.ts +112 -0
  53. package/dist/lib/event.d.ts.map +1 -1
  54. package/dist/lib/event.js +1 -0
  55. package/dist/lib/event.js.map +1 -1
  56. package/dist/lib/fs-prune.d.ts +20 -0
  57. package/dist/lib/fs-prune.d.ts.map +1 -0
  58. package/dist/lib/fs-prune.js +72 -0
  59. package/dist/lib/fs-prune.js.map +1 -0
  60. package/dist/lib/gitignore.d.ts.map +1 -1
  61. package/dist/lib/gitignore.js +6 -0
  62. package/dist/lib/gitignore.js.map +1 -1
  63. package/dist/lib/projects-registry.d.ts +6 -13
  64. package/dist/lib/projects-registry.d.ts.map +1 -1
  65. package/dist/lib/projects-registry.js +11 -46
  66. package/dist/lib/projects-registry.js.map +1 -1
  67. package/dist/lib/version.d.ts +5 -0
  68. package/dist/lib/version.d.ts.map +1 -1
  69. package/dist/lib/version.js +5 -0
  70. package/dist/lib/version.js.map +1 -1
  71. package/dist/otel/collector.d.ts +66 -0
  72. package/dist/otel/collector.d.ts.map +1 -0
  73. package/dist/otel/collector.js +317 -0
  74. package/dist/otel/collector.js.map +1 -0
  75. package/dist/otel/context/build.d.ts +37 -0
  76. package/dist/otel/context/build.d.ts.map +1 -0
  77. package/dist/otel/context/build.js +103 -0
  78. package/dist/otel/context/build.js.map +1 -0
  79. package/dist/otel/context/classify.d.ts +40 -0
  80. package/dist/otel/context/classify.d.ts.map +1 -0
  81. package/dist/otel/context/classify.js +228 -0
  82. package/dist/otel/context/classify.js.map +1 -0
  83. package/dist/otel/context/extract.d.ts +39 -0
  84. package/dist/otel/context/extract.d.ts.map +1 -0
  85. package/dist/otel/context/extract.js +76 -0
  86. package/dist/otel/context/extract.js.map +1 -0
  87. package/dist/otel/context/markers.d.ts +37 -0
  88. package/dist/otel/context/markers.d.ts.map +1 -0
  89. package/dist/otel/context/markers.js +179 -0
  90. package/dist/otel/context/markers.js.map +1 -0
  91. package/dist/otel/context/util.d.ts +15 -0
  92. package/dist/otel/context/util.d.ts.map +1 -0
  93. package/dist/otel/context/util.js +33 -0
  94. package/dist/otel/context/util.js.map +1 -0
  95. package/dist/otel/daemon/ensure.d.ts +52 -0
  96. package/dist/otel/daemon/ensure.d.ts.map +1 -0
  97. package/dist/otel/daemon/ensure.js +226 -0
  98. package/dist/otel/daemon/ensure.js.map +1 -0
  99. package/dist/otel/daemon/forward.d.ts +47 -0
  100. package/dist/otel/daemon/forward.d.ts.map +1 -0
  101. package/dist/otel/daemon/forward.js +0 -0
  102. package/dist/otel/daemon/forward.js.map +1 -0
  103. package/dist/otel/daemon/paths.d.ts +24 -0
  104. package/dist/otel/daemon/paths.d.ts.map +1 -0
  105. package/dist/otel/daemon/paths.js +47 -0
  106. package/dist/otel/daemon/paths.js.map +1 -0
  107. package/dist/otel/daemon/process.d.ts +21 -0
  108. package/dist/otel/daemon/process.d.ts.map +1 -0
  109. package/dist/otel/daemon/process.js +149 -0
  110. package/dist/otel/daemon/process.js.map +1 -0
  111. package/dist/otel/daemon/reprocess.d.ts +27 -0
  112. package/dist/otel/daemon/reprocess.d.ts.map +1 -0
  113. package/dist/otel/daemon/reprocess.js +112 -0
  114. package/dist/otel/daemon/reprocess.js.map +1 -0
  115. package/dist/otel/log-handler.d.ts +37 -0
  116. package/dist/otel/log-handler.d.ts.map +1 -0
  117. package/dist/otel/log-handler.js +332 -0
  118. package/dist/otel/log-handler.js.map +1 -0
  119. package/dist/otel/metric-handler.d.ts +12 -0
  120. package/dist/otel/metric-handler.d.ts.map +1 -0
  121. package/dist/otel/metric-handler.js +18 -0
  122. package/dist/otel/metric-handler.js.map +1 -0
  123. package/dist/otel/trace-handler.d.ts +12 -0
  124. package/dist/otel/trace-handler.d.ts.map +1 -0
  125. package/dist/otel/trace-handler.js +18 -0
  126. package/dist/otel/trace-handler.js.map +1 -0
  127. package/dist/otel/types.d.ts +105 -0
  128. package/dist/otel/types.d.ts.map +1 -0
  129. package/dist/otel/types.js +15 -0
  130. package/dist/otel/types.js.map +1 -0
  131. package/dist/tui/command.d.ts +18 -0
  132. package/dist/tui/command.d.ts.map +1 -0
  133. package/dist/tui/command.js +87 -0
  134. package/dist/tui/command.js.map +1 -0
  135. package/dist/tui/config/area.d.ts +6 -0
  136. package/dist/tui/config/area.d.ts.map +1 -0
  137. package/dist/tui/config/area.js +16 -0
  138. package/dist/tui/config/area.js.map +1 -0
  139. package/dist/tui/config/docs.d.ts +28 -0
  140. package/dist/tui/config/docs.d.ts.map +1 -0
  141. package/dist/tui/config/docs.js +68 -0
  142. package/dist/tui/config/docs.js.map +1 -0
  143. package/dist/tui/config/edit.d.ts +36 -0
  144. package/dist/tui/config/edit.d.ts.map +1 -0
  145. package/dist/tui/config/edit.js +69 -0
  146. package/dist/tui/config/edit.js.map +1 -0
  147. package/dist/tui/config/introspect.d.ts +58 -0
  148. package/dist/tui/config/introspect.d.ts.map +1 -0
  149. package/dist/tui/config/introspect.js +93 -0
  150. package/dist/tui/config/introspect.js.map +1 -0
  151. package/dist/tui/config/schema.d.ts +81 -0
  152. package/dist/tui/config/schema.d.ts.map +1 -0
  153. package/dist/tui/config/schema.js +578 -0
  154. package/dist/tui/config/schema.js.map +1 -0
  155. package/dist/tui/config/tree.d.ts +39 -0
  156. package/dist/tui/config/tree.d.ts.map +1 -0
  157. package/dist/tui/config/tree.js +59 -0
  158. package/dist/tui/config/tree.js.map +1 -0
  159. package/dist/tui/config/value.d.ts +75 -0
  160. package/dist/tui/config/value.d.ts.map +1 -0
  161. package/dist/tui/config/value.js +228 -0
  162. package/dist/tui/config/value.js.map +1 -0
  163. package/dist/tui/config/view.d.ts +13 -0
  164. package/dist/tui/config/view.d.ts.map +1 -0
  165. package/dist/tui/config/view.js +423 -0
  166. package/dist/tui/config/view.js.map +1 -0
  167. package/dist/tui/import/area.d.ts +11 -0
  168. package/dist/tui/import/area.d.ts.map +1 -0
  169. package/dist/tui/import/area.js +202 -0
  170. package/dist/tui/import/area.js.map +1 -0
  171. package/dist/tui/index.d.ts +9 -0
  172. package/dist/tui/index.d.ts.map +1 -0
  173. package/dist/tui/index.js +14 -0
  174. package/dist/tui/index.js.map +1 -0
  175. package/dist/tui/platforms/area.d.ts +12 -0
  176. package/dist/tui/platforms/area.d.ts.map +1 -0
  177. package/dist/tui/platforms/area.js +228 -0
  178. package/dist/tui/platforms/area.js.map +1 -0
  179. package/dist/tui/projects/area.d.ts +26 -0
  180. package/dist/tui/projects/area.d.ts.map +1 -0
  181. package/dist/tui/projects/area.js +588 -0
  182. package/dist/tui/projects/area.js.map +1 -0
  183. package/dist/tui/queue/area.d.ts +11 -0
  184. package/dist/tui/queue/area.d.ts.map +1 -0
  185. package/dist/tui/queue/area.js +338 -0
  186. package/dist/tui/queue/area.js.map +1 -0
  187. package/dist/tui/queue/read.d.ts +49 -0
  188. package/dist/tui/queue/read.d.ts.map +1 -0
  189. package/dist/tui/queue/read.js +261 -0
  190. package/dist/tui/queue/read.js.map +1 -0
  191. package/dist/tui/sessions/area.d.ts +10 -0
  192. package/dist/tui/sessions/area.d.ts.map +1 -0
  193. package/dist/tui/sessions/area.js +266 -0
  194. package/dist/tui/sessions/area.js.map +1 -0
  195. package/dist/tui/sessions/read.d.ts +79 -0
  196. package/dist/tui/sessions/read.d.ts.map +1 -0
  197. package/dist/tui/sessions/read.js +202 -0
  198. package/dist/tui/sessions/read.js.map +1 -0
  199. package/dist/tui/shell/area.d.ts +47 -0
  200. package/dist/tui/shell/area.d.ts.map +1 -0
  201. package/dist/tui/shell/area.js +13 -0
  202. package/dist/tui/shell/area.js.map +1 -0
  203. package/dist/tui/shell/frame.d.ts +23 -0
  204. package/dist/tui/shell/frame.d.ts.map +1 -0
  205. package/dist/tui/shell/frame.js +91 -0
  206. package/dist/tui/shell/frame.js.map +1 -0
  207. package/dist/tui/shell/registry.d.ts +11 -0
  208. package/dist/tui/shell/registry.d.ts.map +1 -0
  209. package/dist/tui/shell/registry.js +29 -0
  210. package/dist/tui/shell/registry.js.map +1 -0
  211. package/dist/tui/shell/rerender.d.ts +16 -0
  212. package/dist/tui/shell/rerender.d.ts.map +1 -0
  213. package/dist/tui/shell/rerender.js +34 -0
  214. package/dist/tui/shell/rerender.js.map +1 -0
  215. package/dist/tui/shell/session.d.ts +75 -0
  216. package/dist/tui/shell/session.d.ts.map +1 -0
  217. package/dist/tui/shell/session.js +333 -0
  218. package/dist/tui/shell/session.js.map +1 -0
  219. package/dist/tui/shell/shell.d.ts +16 -0
  220. package/dist/tui/shell/shell.d.ts.map +1 -0
  221. package/dist/tui/shell/shell.js +213 -0
  222. package/dist/tui/shell/shell.js.map +1 -0
  223. package/dist/tui/shell/util.d.ts +18 -0
  224. package/dist/tui/shell/util.d.ts.map +1 -0
  225. package/dist/tui/shell/util.js +31 -0
  226. package/dist/tui/shell/util.js.map +1 -0
  227. package/package.json +4 -1
@@ -37,6 +37,7 @@ export declare const EventType: {
37
37
  readonly SESSION_TURN_STEP: "session_turn_step_analytics";
38
38
  readonly API_REQUEST: "api_request";
39
39
  readonly SESSION_STATUS: "session_status";
40
+ readonly SESSION_CONTEXT: "session_context";
40
41
  };
41
42
  export type EventTypeValue = typeof EventType[keyof typeof EventType];
42
43
  /**
@@ -147,4 +148,115 @@ export interface SessionStatusEvent extends ActivityAwareEvent {
147
148
  seven_day?: RateLimitWindow;
148
149
  };
149
150
  }
151
+ /**
152
+ * Byte + approximate-token usage for one `session_context` breakdown category.
153
+ * `bytes` is exact (`Buffer.byteLength(JSON.stringify(node))`); `approx_tokens`
154
+ * is `bytes / BYTES_PER_TOKEN` — indicative only (token density varies by
155
+ * content type), so bytes are the trustworthy unit.
156
+ */
157
+ export interface CategoryUsage {
158
+ bytes: number;
159
+ approx_tokens: number;
160
+ /**
161
+ * `bytes` as a share of the event's `total_input_bytes`, rounded to 2 dp
162
+ * (e.g. `81.42`). The single denominator is the whole request, so every
163
+ * `CategoryUsage` — `breakdown.*` and every `breakdown_detail.*` entry — is
164
+ * directly comparable, and the top-level `breakdown` percents sum to ~100
165
+ * (±per-entry rounding). `0` when `total_input_bytes` is 0.
166
+ */
167
+ percent: number;
168
+ }
169
+ /**
170
+ * Per-category context breakdown — where the bytes of one Messages API request
171
+ * go. Fixed-key by design (categories rarely change); the backend record is a
172
+ * tolerant reader so adding a category stays forward-compatible. `others` is
173
+ * the REMAINDER (`total_input_bytes − Σ(rest)`), so the values sum exactly to
174
+ * `total_input_bytes`.
175
+ */
176
+ export interface SessionContextBreakdown {
177
+ /** `system[]` base prompt. */
178
+ system_prompt: CategoryUsage;
179
+ /** `tools[]` non-mcp tool definitions. */
180
+ builtin_tools: CategoryUsage;
181
+ /** `tools[]` `mcp__*` tool definitions. */
182
+ mcp_tools: CategoryUsage;
183
+ /** CLAUDE.md / `.claude/rules/*` (in user `<system-reminder>` blocks). */
184
+ rules: CategoryUsage;
185
+ /** MEMORY.md auto-memory. */
186
+ memory: CategoryUsage;
187
+ /** Available-skills listing (a `role:"system"` message) + invoked skill bodies. */
188
+ skills: CategoryUsage;
189
+ /** `role:"system"` hook injections + miscellaneous reminders. */
190
+ system_messages: CategoryUsage;
191
+ /** Real human prompts. */
192
+ user_messages: CategoryUsage;
193
+ /** Assistant `thinking` / `text` / `tool_use` blocks (combined). */
194
+ assistant_messages: CategoryUsage;
195
+ /** `tool_result` blocks. */
196
+ tool_result: CategoryUsage;
197
+ /** Remainder: scaffolding (`metadata`/`betas`/…) + JSON structural bytes. */
198
+ others: CategoryUsage;
199
+ }
200
+ /**
201
+ * Context-window usage breakdown for one Claude Code Messages API request,
202
+ * derived by the local OTEL collector daemon from the raw request body
203
+ * (`OTEL_LOG_RAW_API_BODIES=file:<dir>`). Ships only structural signals (sizes
204
+ * / counts / labels) — never content.
205
+ *
206
+ * Extends the flat `Event` (not activity-aware): the daemon is outside the hook
207
+ * pipeline and has no `activity_id`. Backend correlates to a turn via
208
+ * `session_id` + `timestamp` (set to the request time).
209
+ */
210
+ export interface SessionContextEvent extends Event {
211
+ type: "session_context";
212
+ /** OTEL `event.sequence` (orders requests within a session); `null` on the catch-up path. */
213
+ sequence_number: number | null;
214
+ /** e.g. `"claude-opus-4-7"`. */
215
+ model: string;
216
+ /**
217
+ * `"repl_main_thread"` / `"compact"` / `"generate_session_title"` / a
218
+ * subagent name. Lets the backend separate main-thread context from
219
+ * background/utility calls. `null` on the catch-up path (event-only field).
220
+ */
221
+ query_source: string | null;
222
+ /** Sum of all category bytes (≈ the request body size). */
223
+ total_input_bytes: number;
224
+ /** `total_input_bytes / BYTES_PER_TOKEN` — indicative. */
225
+ total_input_tokens_approx: number;
226
+ breakdown: SessionContextBreakdown;
227
+ /**
228
+ * Per-name sub-breakdown of four of the fixed `breakdown` categories. Each
229
+ * map's `CategoryUsage` bytes sum **exactly** to the matching `breakdown`
230
+ * category total — bytes that can't be attributed to a specific name land in
231
+ * an `[other]` key, so the detail always reconciles with the aggregate.
232
+ * Keys are structural labels (server / file / skill / tool names), never content.
233
+ */
234
+ breakdown_detail: {
235
+ /** `mcp_tools` split by MCP server (`mcp__<server>__<tool>` → `<server>`). Sums to `breakdown.mcp_tools`. */
236
+ mcp_tools_by_server: Record<string, CategoryUsage>;
237
+ /** `rules` split by source file basename (CLAUDE.md / imported fragments / `.claude/rules/*`). Sums to `breakdown.rules`. */
238
+ rules_by_name: Record<string, CategoryUsage>;
239
+ /** `skills` split by skill name (from the `- <name>: <desc>` listing lines). Sums to `breakdown.skills`. */
240
+ skills_by_name: Record<string, CategoryUsage>;
241
+ /**
242
+ * `tool_result` split by the tool that produced it, joined within the body
243
+ * (`tool_use_id` → name). Key is our own format: `<server>:<tool>` for MCP
244
+ * (the `mcp__` host prefix dropped), bare name for built-ins (`Bash`).
245
+ * Orphan results (originating `tool_use` compacted away) → `[other]`.
246
+ * Sums to `breakdown.tool_result`.
247
+ */
248
+ tool_results_by_name: Record<string, CategoryUsage>;
249
+ };
250
+ tool_counts: {
251
+ builtin: number;
252
+ mcp: number;
253
+ total: number;
254
+ };
255
+ message_counts: {
256
+ user: number;
257
+ assistant: number;
258
+ tool_result: number;
259
+ system: number;
260
+ };
261
+ }
150
262
  //# sourceMappingURL=event.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/lib/event.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/lib/event.ts"],"names":[],"mappings":"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"}
package/dist/lib/event.js CHANGED
@@ -40,5 +40,6 @@ exports.EventType = {
40
40
  SESSION_TURN_STEP: "session_turn_step_analytics",
41
41
  API_REQUEST: "api_request",
42
42
  SESSION_STATUS: "session_status",
43
+ SESSION_CONTEXT: "session_context",
43
44
  };
44
45
  //# sourceMappingURL=event.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/lib/event.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAEH,8DAA8D;AACjD,QAAA,SAAS,GAkBlB;IACA,aAAa,EAAE,eAAe;IAC9B,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IACpC,sBAAsB,EAAE,wBAAwB;IAChD,aAAa,EAAE,eAAe;IAC9B,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,iBAAiB,EAAE,mBAAmB;IACtC,YAAY,EAAE,wBAAwB;IACtC,iBAAiB,EAAE,6BAA6B;IAChD,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,gBAAgB;CAC1B,CAAC"}
1
+ {"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/lib/event.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAEH,8DAA8D;AACjD,QAAA,SAAS,GAmBlB;IACA,aAAa,EAAE,eAAe;IAC9B,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IACpC,sBAAsB,EAAE,wBAAwB;IAChD,aAAa,EAAE,eAAe;IAC9B,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,iBAAiB,EAAE,mBAAmB;IACtC,YAAY,EAAE,wBAAwB;IACtC,iBAAiB,EAAE,6BAA6B;IAChD,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;CAC5B,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * IronBee — empty-directory pruning.
3
+ *
4
+ * Used by client `uninstall` to clean up directories ironbee owned once their
5
+ * files are gone: e.g. `.claude/commands`, `.claude/rules`, `.claude/skills`
6
+ * (and Cursor's nested `.cursor/skills/ironbee-analyze/`), then the `.claude` /
7
+ * `.cursor` root itself when nothing else remains. A dangling empty `.claude` /
8
+ * `.cursor` also makes `IClient.detect` (which checks for the dir) report the
9
+ * project as still present — pruning keeps detection honest.
10
+ */
11
+ /**
12
+ * Recursively remove empty directories within (and including) `baseDir`,
13
+ * bottom-up. A directory is removed ONLY when it has zero entries after its
14
+ * empty children are pruned — so any directory still holding a file (user
15
+ * content) survives, and so does `baseDir` itself if it isn't fully empty.
16
+ * No-op when `baseDir` is missing or not a directory. Best-effort: I/O errors
17
+ * are swallowed. Returns `true` when `baseDir` itself was removed.
18
+ */
19
+ export declare function pruneEmptyDirs(baseDir: string): boolean;
20
+ //# sourceMappingURL=fs-prune.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-prune.d.ts","sourceRoot":"","sources":["../../src/lib/fs-prune.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CA6CvD"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ /**
3
+ * IronBee — empty-directory pruning.
4
+ *
5
+ * Used by client `uninstall` to clean up directories ironbee owned once their
6
+ * files are gone: e.g. `.claude/commands`, `.claude/rules`, `.claude/skills`
7
+ * (and Cursor's nested `.cursor/skills/ironbee-analyze/`), then the `.claude` /
8
+ * `.cursor` root itself when nothing else remains. A dangling empty `.claude` /
9
+ * `.cursor` also makes `IClient.detect` (which checks for the dir) report the
10
+ * project as still present — pruning keeps detection honest.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.pruneEmptyDirs = pruneEmptyDirs;
14
+ const fs_1 = require("fs");
15
+ const path_1 = require("path");
16
+ /**
17
+ * Recursively remove empty directories within (and including) `baseDir`,
18
+ * bottom-up. A directory is removed ONLY when it has zero entries after its
19
+ * empty children are pruned — so any directory still holding a file (user
20
+ * content) survives, and so does `baseDir` itself if it isn't fully empty.
21
+ * No-op when `baseDir` is missing or not a directory. Best-effort: I/O errors
22
+ * are swallowed. Returns `true` when `baseDir` itself was removed.
23
+ */
24
+ function pruneEmptyDirs(baseDir) {
25
+ if (!(0, fs_1.existsSync)(baseDir)) {
26
+ return false;
27
+ }
28
+ try {
29
+ if (!(0, fs_1.statSync)(baseDir).isDirectory()) {
30
+ return false;
31
+ }
32
+ }
33
+ catch {
34
+ return false;
35
+ }
36
+ let entries;
37
+ try {
38
+ entries = (0, fs_1.readdirSync)(baseDir);
39
+ }
40
+ catch {
41
+ return false;
42
+ }
43
+ for (const name of entries) {
44
+ const child = (0, path_1.join)(baseDir, name);
45
+ try {
46
+ if ((0, fs_1.statSync)(child).isDirectory()) {
47
+ pruneEmptyDirs(child);
48
+ }
49
+ }
50
+ catch {
51
+ // unreadable child — leave it, don't risk a throw
52
+ }
53
+ }
54
+ let remaining;
55
+ try {
56
+ remaining = (0, fs_1.readdirSync)(baseDir);
57
+ }
58
+ catch {
59
+ return false;
60
+ }
61
+ if (remaining.length > 0) {
62
+ return false;
63
+ }
64
+ try {
65
+ (0, fs_1.rmdirSync)(baseDir);
66
+ return true;
67
+ }
68
+ catch {
69
+ return false;
70
+ }
71
+ }
72
+ //# sourceMappingURL=fs-prune.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-prune.js","sourceRoot":"","sources":["../../src/lib/fs-prune.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAaH,wCA6CC;AAxDD,2BAAkE;AAClE,+BAA4B;AAE5B;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,OAAe;IAC1C,IAAI,CAAC,IAAA,eAAU,EAAC,OAAO,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,CAAC;QACD,IAAI,CAAC,IAAA,aAAQ,EAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACD,OAAO,GAAG,IAAA,gBAAW,EAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,KAAK,GAAW,IAAA,WAAI,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC;YACD,IAAI,IAAA,aAAQ,EAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBAChC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,kDAAkD;QACtD,CAAC;IACL,CAAC;IAED,IAAI,SAAmB,CAAC;IACxB,IAAI,CAAC;QACD,SAAS,GAAG,IAAA,gBAAW,EAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,CAAC;QACD,IAAA,cAAS,EAAC,OAAO,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"gitignore.d.ts","sourceRoot":"","sources":["../../src/lib/gitignore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAqEH;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CA2BhE"}
1
+ {"version":3,"file":"gitignore.d.ts","sourceRoot":"","sources":["../../src/lib/gitignore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AA2EH;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CA2BhE"}
@@ -37,6 +37,12 @@ const IGNORE_ENTRIES = [
37
37
  pattern: ".ironbee/sessions/",
38
38
  lines: ["", IRONBEE_HEADER, ".ironbee/sessions/"],
39
39
  },
40
+ {
41
+ // Raw OTLP request/response bodies the OTEL collector daemon consumes
42
+ // (consume-once; never committed — they carry full prompts / outputs).
43
+ pattern: ".ironbee/otel/",
44
+ lines: [".ironbee/otel/"],
45
+ },
40
46
  {
41
47
  pattern: ".ironbee/config.local.json",
42
48
  // Standalone append — do NOT re-print the header, the sessions
@@ -1 +1 @@
1
- {"version":3,"file":"gitignore.js","sourceRoot":"","sources":["../../src/lib/gitignore.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;;AA4EH,0DA2BC;AArGD,2BAA6D;AAC7D,+BAA4B;AAC5B,qCAAkC;AAoBlC,MAAM,cAAc,GAAW,6BAA6B,CAAC;AAE7D,MAAM,cAAc,GAAkB;IAClC;QACI,OAAO,EAAE,oBAAoB;QAC7B,KAAK,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,oBAAoB,CAAC;KACpD;IACD;QACI,OAAO,EAAE,4BAA4B;QACrC,+DAA+D;QAC/D,oEAAoE;QACpE,KAAK,EAAE,CAAC,4BAA4B,CAAC;KACxC;IACD;QACI,qEAAqE;QACrE,mEAAmE;QACnE,iEAAiE;QACjE,kEAAkE;QAClE,kEAAkE;QAClE,qEAAqE;QACrE,iCAAiC;QACjC,OAAO,EAAE,6BAA6B;QACtC,KAAK,EAAE,CAAC,6BAA6B,CAAC;KACzC;CACJ,CAAC;AAEF;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,QAAgB,EAAE,OAAe;IAC5D,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,GAAW,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACpE,SAAS;QACb,CAAC;QACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,uBAAuB,CAAC,UAAkB;IACtD,IAAI,CAAC,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;QAC1B,eAAM,CAAC,KAAK,CAAC,yBAAyB,UAAU,4BAA4B,CAAC,CAAC;QAC9E,OAAO;IACX,CAAC;IACD,MAAM,aAAa,GAAW,IAAA,WAAI,EAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC7D,IAAI,CAAC;QACD,IAAI,QAAQ,GAAW,IAAA,eAAU,EAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAA,iBAAY,EAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,IAAI,OAAO,GAAY,KAAK,CAAC;QAC7B,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACjC,IAAI,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjD,SAAS;YACb,CAAC;YACD,gEAAgE;YAChE,qDAAqD;YACrD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,QAAQ,IAAI,IAAI,CAAC;YACrB,CAAC;YACD,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAC1C,OAAO,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACV,IAAA,kBAAa,EAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,eAAM,CAAC,KAAK,CAAC,oBAAoB,aAAa,YAAY,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACpG,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"gitignore.js","sourceRoot":"","sources":["../../src/lib/gitignore.ts"],"names":[],"mappings":"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"}
@@ -39,8 +39,6 @@
39
39
  export interface ProjectEntry {
40
40
  /** Absolute, realpath-canonicalized project directory. Identity key. */
41
41
  path: string;
42
- /** Client names (claude, cursor, …) installed into this project. */
43
- clients: string[];
44
42
  /** ISO 8601 timestamp of the first install. */
45
43
  installedAt: string;
46
44
  }
@@ -79,19 +77,14 @@ export declare function canonicalizePath(projectDir: string): string;
79
77
  * Failures are swallowed and logged — registry maintenance must not break
80
78
  * the user-visible `install` / `register` flow.
81
79
  */
82
- export declare function upsertProject(projectDir: string, clients: string[]): void;
80
+ export declare function upsertProject(projectDir: string): void;
83
81
  /**
84
- * Remove `clients` from a project entry. When the resulting `clients` list
85
- * is empty (every client uninstalled), the entry itself is dropped. When
86
- * `clients` is omitted, the entry is removed regardless of which clients
87
- * are recorded used by ad-hoc cleanup paths.
88
- *
89
- * Idempotent. Returns `true` when something was actually removed (entry
90
- * dropped or clients trimmed); `false` when there was nothing matching to
91
- * change. Lets callers like `ironbee unregister` distinguish "removed
92
- * vs. nothing-to-remove" without re-implementing the `pathMatches` lookup.
82
+ * Remove a project entry from the inventory entirely. Idempotent — returns
83
+ * `true` when an entry was removed, `false` when there was no matching entry.
84
+ * Lets callers like `ironbee unregister` distinguish "removed vs nothing to
85
+ * remove" without re-implementing the `pathMatches` lookup.
93
86
  */
94
- export declare function removeProject(projectDir: string, clients?: string[]): boolean;
87
+ export declare function removeProject(projectDir: string): boolean;
95
88
  /**
96
89
  * Return every registered project, raw (no staleness filtering). Callers
97
90
  * that want pruned results compose this with their own active-check —
@@ -1 +1 @@
1
- {"version":3,"file":"projects-registry.d.ts","sourceRoot":"","sources":["../../src/lib/projects-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AASH,MAAM,WAAW,YAAY;IACzB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC5B;AAMD,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAMD;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,YAAY,CAsC3C;AAsCD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAO3D;AAoBD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CA4BzE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAgC7E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,YAAY,EAAE,CAE7C"}
1
+ {"version":3,"file":"projects-registry.d.ts","sourceRoot":"","sources":["../../src/lib/projects-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AASH,MAAM,WAAW,YAAY;IACzB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC5B;AAMD,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAMD;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,YAAY,CAqC3C;AAsCD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAO3D;AAoBD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAqBtD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAezD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,YAAY,EAAE,CAE7C"}
@@ -89,11 +89,10 @@ function loadRegistry() {
89
89
  }
90
90
  const projects = obj.projects
91
91
  .filter((p) => p !== null && typeof p === "object")
92
+ // A legacy `clients` field on disk is ignored — the registry is now a
93
+ // set of project paths; client decisions follow live detection.
92
94
  .map((p) => ({
93
95
  path: typeof p.path === "string" ? p.path : "",
94
- clients: Array.isArray(p.clients)
95
- ? p.clients.filter((c) => typeof c === "string")
96
- : [],
97
96
  installedAt: typeof p.installedAt === "string" ? p.installedAt : "",
98
97
  }))
99
98
  .filter((p) => p.path.length > 0);
@@ -190,27 +189,20 @@ function pathMatches(stored, canonical) {
190
189
  * Failures are swallowed and logged — registry maintenance must not break
191
190
  * the user-visible `install` / `register` flow.
192
191
  */
193
- function upsertProject(projectDir, clients) {
194
- if (clients.length === 0) {
195
- return;
196
- }
192
+ function upsertProject(projectDir) {
197
193
  try {
198
194
  const canonical = canonicalizePath(projectDir);
199
195
  const file = loadRegistry();
200
196
  const now = new Date().toISOString();
201
197
  const idx = file.projects.findIndex((p) => pathMatches(p.path, canonical));
202
198
  if (idx === -1) {
203
- file.projects.push({
204
- path: canonical,
205
- clients: dedupe(clients),
206
- installedAt: now,
207
- });
199
+ file.projects.push({ path: canonical, installedAt: now });
208
200
  }
209
201
  else {
202
+ // Rewrite canonical (legacy paths get canonicalized on re-touch); keep installedAt.
210
203
  const existing = file.projects[idx];
211
204
  file.projects[idx] = {
212
205
  path: canonical,
213
- clients: dedupe([...existing.clients, ...clients]),
214
206
  installedAt: existing.installedAt.length > 0 ? existing.installedAt : now,
215
207
  };
216
208
  }
@@ -221,17 +213,12 @@ function upsertProject(projectDir, clients) {
221
213
  }
222
214
  }
223
215
  /**
224
- * Remove `clients` from a project entry. When the resulting `clients` list
225
- * is empty (every client uninstalled), the entry itself is dropped. When
226
- * `clients` is omitted, the entry is removed regardless of which clients
227
- * are recorded used by ad-hoc cleanup paths.
228
- *
229
- * Idempotent. Returns `true` when something was actually removed (entry
230
- * dropped or clients trimmed); `false` when there was nothing matching to
231
- * change. Lets callers like `ironbee unregister` distinguish "removed
232
- * vs. nothing-to-remove" without re-implementing the `pathMatches` lookup.
216
+ * Remove a project entry from the inventory entirely. Idempotent — returns
217
+ * `true` when an entry was removed, `false` when there was no matching entry.
218
+ * Lets callers like `ironbee unregister` distinguish "removed vs nothing to
219
+ * remove" without re-implementing the `pathMatches` lookup.
233
220
  */
234
- function removeProject(projectDir, clients) {
221
+ function removeProject(projectDir) {
235
222
  try {
236
223
  const canonical = canonicalizePath(projectDir);
237
224
  const file = loadRegistry();
@@ -239,26 +226,7 @@ function removeProject(projectDir, clients) {
239
226
  if (idx === -1) {
240
227
  return false;
241
228
  }
242
- if (clients === undefined || clients.length === 0) {
243
- file.projects.splice(idx, 1);
244
- }
245
- else {
246
- const existing = file.projects[idx];
247
- const remaining = existing.clients.filter((c) => !clients.includes(c));
248
- if (remaining.length === existing.clients.length) {
249
- // None of the requested clients were in the entry — nothing changed.
250
- return false;
251
- }
252
- if (remaining.length === 0) {
253
- file.projects.splice(idx, 1);
254
- }
255
- else {
256
- file.projects[idx] = {
257
- ...existing,
258
- clients: remaining,
259
- };
260
- }
261
- }
229
+ file.projects.splice(idx, 1);
262
230
  writeRegistry(file);
263
231
  return true;
264
232
  }
@@ -276,7 +244,4 @@ function removeProject(projectDir, clients) {
276
244
  function listProjects() {
277
245
  return loadRegistry().projects;
278
246
  }
279
- function dedupe(items) {
280
- return Array.from(new Set(items));
281
- }
282
247
  //# sourceMappingURL=projects-registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"projects-registry.js","sourceRoot":"","sources":["../../src/lib/projects-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projects-registry.js","sourceRoot":"","sources":["../../src/lib/projects-registry.ts"],"names":[],"mappings":"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"}
@@ -6,5 +6,10 @@
6
6
  */
7
7
  export declare function getLocalVersion(): string;
8
8
  export declare function fetchLatestVersion(): Promise<string | null>;
9
+ /**
10
+ * Compare two dotted numeric versions (`x.y.z`). Returns `1` if `a > b`, `-1`
11
+ * if `a < b`, `0` if equal. Missing segments are treated as `0`.
12
+ */
13
+ export declare function compareVersions(a: string, b: string): number;
9
14
  export declare function checkForUpdates(): Promise<void>;
10
15
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,wBAAgB,eAAe,IAAI,MAAM,CASxC;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwB3D;AAmBD,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CA2BrD"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,wBAAgB,eAAe,IAAI,MAAM,CASxC;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwB3D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAe5D;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CA2BrD"}
@@ -8,6 +8,7 @@
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.getLocalVersion = getLocalVersion;
10
10
  exports.fetchLatestVersion = fetchLatestVersion;
11
+ exports.compareVersions = compareVersions;
11
12
  exports.checkForUpdates = checkForUpdates;
12
13
  const https_1 = require("https");
13
14
  const fs_1 = require("fs");
@@ -48,6 +49,10 @@ function fetchLatestVersion() {
48
49
  });
49
50
  });
50
51
  }
52
+ /**
53
+ * Compare two dotted numeric versions (`x.y.z`). Returns `1` if `a > b`, `-1`
54
+ * if `a < b`, `0` if equal. Missing segments are treated as `0`.
55
+ */
51
56
  function compareVersions(a, b) {
52
57
  const pa = a.split(".").map(Number);
53
58
  const pb = b.split(".").map(Number);
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * IronBee — OTEL Collector daemon
3
+ *
4
+ * A machine-global OTLP/HTTP (JSON) receiver. Claude Code, when run with
5
+ * telemetry enabled, exports its log/event records over OTLP to this daemon
6
+ * (one per machine, shared by every concurrent session). Point it at the
7
+ * daemon with:
8
+ *
9
+ * export CLAUDE_CODE_ENABLE_TELEMETRY=1
10
+ * export OTEL_LOGS_EXPORTER=otlp
11
+ * export OTEL_EXPORTER_OTLP_PROTOCOL=http/json
12
+ * export OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:15986
13
+ *
14
+ * Endpoints:
15
+ * - `POST /v1/logs` → `log-handler.ts`
16
+ * - `POST /v1/traces` → `trace-handler.ts` (noop)
17
+ * - `POST /v1/metrics` → `metric-handler.ts` (noop)
18
+ * - `GET /health` → version / pid / idle / observability counters
19
+ * - `POST /admin/shutdown` → graceful shutdown (used by version self-replace)
20
+ *
21
+ * Singleton via port-bind arbitration: only one process can `listen()` on the
22
+ * port, so a losing race just gets `EADDRINUSE` and exits. Idle self-reap and
23
+ * graceful shutdown are HTTP/timer driven (no signals — cross-platform).
24
+ *
25
+ * Zero third-party deps: Node `http` + `zlib` only.
26
+ */
27
+ import { OTELCollectorOptions } from "./types";
28
+ export declare class OTELLogCollector {
29
+ private server;
30
+ private readonly host;
31
+ private readonly requestedPort;
32
+ private readonly idleTimeoutMs;
33
+ private readonly onShutdown?;
34
+ private readonly metricsProvider;
35
+ private readonly pipeline;
36
+ private startedAt;
37
+ private lastActiveAt;
38
+ private idleTimer;
39
+ private shuttingDown;
40
+ constructor(opts?: OTELCollectorOptions);
41
+ /** Start listening. Resolves once bound; rejects on a bind error (e.g. EADDRINUSE). */
42
+ start(): Promise<void>;
43
+ /** The actually-bound port (handles `port: 0` / OS-assigned). `null` before start. */
44
+ boundPort(): number | null;
45
+ /** Stop listening. Resolves once the server is closed (no-op when not started). */
46
+ stop(): Promise<void>;
47
+ private armIdleTimer;
48
+ private disarmIdleTimer;
49
+ /**
50
+ * Graceful shutdown (idle-reap or `/admin/shutdown`): stop accepting, close
51
+ * the server, then invoke `onShutdown`. Idempotent. (The work-queue drain +
52
+ * forward flush land with the forward pipeline.)
53
+ */
54
+ private gracefulShutdown;
55
+ private handleRequest;
56
+ private buildHealth;
57
+ /** Read the (optionally gzip'd) request body, then run `fn`; body-read errors → HTTP 400. */
58
+ private withBody;
59
+ private collectBody;
60
+ /** Consume and discard a request body, then run `done` (used for unknown paths). */
61
+ private drain;
62
+ private respond;
63
+ }
64
+ /** Construct and start an {@link OTELLogCollector} in one call. */
65
+ export declare function startOTELLogCollector(opts?: OTELCollectorOptions): Promise<OTELLogCollector>;
66
+ //# sourceMappingURL=collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/otel/collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAOH,OAAO,EACH,oBAAoB,EAIvB,MAAM,SAAS,CAAC;AAuBjB,qBAAa,gBAAgB;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2B;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAE3C,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,YAAY,CAAkB;gBAE1B,IAAI,CAAC,EAAE,oBAAoB;IAUvC,uFAAuF;IAChF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB7B,sFAAsF;IAC/E,SAAS,IAAI,MAAM,GAAG,IAAI;IAKjC,mFAAmF;IAC5E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB5B,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,eAAe;IAOvB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,aAAa;IAwErB,OAAO,CAAC,WAAW;IAiBnB,6FAA6F;IAC7F,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,WAAW;IA6CnB,oFAAoF;IACpF,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,OAAO;CAQlB;AAED,mEAAmE;AACnE,wBAAsB,qBAAqB,CAAC,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAIlG"}