@decibelsystems/tools 2.1.4 → 3.0.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 (295) hide show
  1. package/CHANGELOG.md +160 -0
  2. package/README.md +1 -1
  3. package/dist/agentPresence.d.ts +80 -0
  4. package/dist/agentPresence.d.ts.map +1 -1
  5. package/dist/agentPresence.js +177 -0
  6. package/dist/agentPresence.js.map +1 -1
  7. package/dist/agentic/index.d.ts +18 -8
  8. package/dist/agentic/index.d.ts.map +1 -1
  9. package/dist/agentic/index.js +18 -144
  10. package/dist/agentic/index.js.map +1 -1
  11. package/dist/agentic/types.d.ts +106 -0
  12. package/dist/agentic/types.d.ts.map +1 -1
  13. package/dist/agentic/types.js +77 -1
  14. package/dist/agentic/types.js.map +1 -1
  15. package/dist/architectAdrs.d.ts +14 -2
  16. package/dist/architectAdrs.d.ts.map +1 -1
  17. package/dist/architectAdrs.js +9 -3
  18. package/dist/architectAdrs.js.map +1 -1
  19. package/dist/client/transports.d.ts.map +1 -1
  20. package/dist/client/transports.js +13 -3
  21. package/dist/client/transports.js.map +1 -1
  22. package/dist/daemon.d.ts +19 -0
  23. package/dist/daemon.d.ts.map +1 -1
  24. package/dist/daemon.js +181 -38
  25. package/dist/daemon.js.map +1 -1
  26. package/dist/daemonConfig.d.ts +30 -0
  27. package/dist/daemonConfig.d.ts.map +1 -1
  28. package/dist/daemonConfig.js +56 -9
  29. package/dist/daemonConfig.js.map +1 -1
  30. package/dist/decibelPaths.d.ts.map +1 -1
  31. package/dist/decibelPaths.js +39 -6
  32. package/dist/decibelPaths.js.map +1 -1
  33. package/dist/domain/issue.d.ts +77 -0
  34. package/dist/domain/issue.d.ts.map +1 -0
  35. package/dist/domain/issue.js +134 -0
  36. package/dist/domain/issue.js.map +1 -0
  37. package/dist/domain/issueCodec.d.ts +39 -0
  38. package/dist/domain/issueCodec.d.ts.map +1 -0
  39. package/dist/domain/issueCodec.js +298 -0
  40. package/dist/domain/issueCodec.js.map +1 -0
  41. package/dist/domain/issueRepository.d.ts +91 -0
  42. package/dist/domain/issueRepository.d.ts.map +1 -0
  43. package/dist/domain/issueRepository.js +257 -0
  44. package/dist/domain/issueRepository.js.map +1 -0
  45. package/dist/facades/definitions.d.ts +0 -1
  46. package/dist/facades/definitions.d.ts.map +1 -1
  47. package/dist/facades/definitions.js +94 -98
  48. package/dist/facades/definitions.js.map +1 -1
  49. package/dist/facades/index.d.ts +2 -1
  50. package/dist/facades/index.d.ts.map +1 -1
  51. package/dist/facades/index.js +1 -1
  52. package/dist/facades/index.js.map +1 -1
  53. package/dist/facades/types.d.ts +17 -0
  54. package/dist/facades/types.d.ts.map +1 -1
  55. package/dist/httpArgs.d.ts +11 -0
  56. package/dist/httpArgs.d.ts.map +1 -0
  57. package/dist/httpArgs.js +39 -0
  58. package/dist/httpArgs.js.map +1 -0
  59. package/dist/httpServer.d.ts +1 -12
  60. package/dist/httpServer.d.ts.map +1 -1
  61. package/dist/httpServer.js +173 -98
  62. package/dist/httpServer.js.map +1 -1
  63. package/dist/kernel.d.ts +55 -1
  64. package/dist/kernel.d.ts.map +1 -1
  65. package/dist/kernel.js +366 -31
  66. package/dist/kernel.js.map +1 -1
  67. package/dist/lib/agent-services/assumptions.d.ts.map +1 -1
  68. package/dist/lib/agent-services/assumptions.js +8 -2
  69. package/dist/lib/agent-services/assumptions.js.map +1 -1
  70. package/dist/lib/atomicWrite.d.ts +26 -0
  71. package/dist/lib/atomicWrite.d.ts.map +1 -0
  72. package/dist/lib/atomicWrite.js +73 -0
  73. package/dist/lib/atomicWrite.js.map +1 -0
  74. package/dist/lib/envelope.d.ts +31 -0
  75. package/dist/lib/envelope.d.ts.map +1 -0
  76. package/dist/lib/envelope.js +80 -0
  77. package/dist/lib/envelope.js.map +1 -0
  78. package/dist/lib/fileLock.d.ts +38 -0
  79. package/dist/lib/fileLock.d.ts.map +1 -0
  80. package/dist/lib/fileLock.js +124 -0
  81. package/dist/lib/fileLock.js.map +1 -0
  82. package/dist/lib/recordIdAllocator.d.ts +86 -0
  83. package/dist/lib/recordIdAllocator.d.ts.map +1 -0
  84. package/dist/lib/recordIdAllocator.js +161 -0
  85. package/dist/lib/recordIdAllocator.js.map +1 -0
  86. package/dist/license.js +3 -3
  87. package/dist/license.js.map +1 -1
  88. package/dist/projectRegistry.d.ts +65 -3
  89. package/dist/projectRegistry.d.ts.map +1 -1
  90. package/dist/projectRegistry.js +233 -33
  91. package/dist/projectRegistry.js.map +1 -1
  92. package/dist/runtime/circuitBreaker.d.ts +95 -0
  93. package/dist/runtime/circuitBreaker.d.ts.map +1 -0
  94. package/dist/runtime/circuitBreaker.js +178 -0
  95. package/dist/runtime/circuitBreaker.js.map +1 -0
  96. package/dist/runtime/ensureRuntime.d.ts +103 -0
  97. package/dist/runtime/ensureRuntime.d.ts.map +1 -0
  98. package/dist/runtime/ensureRuntime.js +281 -0
  99. package/dist/runtime/ensureRuntime.js.map +1 -0
  100. package/dist/runtime/extensions.d.ts +57 -0
  101. package/dist/runtime/extensions.d.ts.map +1 -0
  102. package/dist/runtime/extensions.js +216 -0
  103. package/dist/runtime/extensions.js.map +1 -0
  104. package/dist/runtime/localHttp.d.ts +24 -0
  105. package/dist/runtime/localHttp.d.ts.map +1 -0
  106. package/dist/runtime/localHttp.js +84 -0
  107. package/dist/runtime/localHttp.js.map +1 -0
  108. package/dist/runtime/projectResolution.d.ts +29 -0
  109. package/dist/runtime/projectResolution.d.ts.map +1 -0
  110. package/dist/runtime/projectResolution.js +67 -0
  111. package/dist/runtime/projectResolution.js.map +1 -0
  112. package/dist/runtime/protocol.d.ts +62 -0
  113. package/dist/runtime/protocol.d.ts.map +1 -0
  114. package/dist/runtime/protocol.js +74 -0
  115. package/dist/runtime/protocol.js.map +1 -0
  116. package/dist/sentinelIssues.d.ts +26 -2
  117. package/dist/sentinelIssues.d.ts.map +1 -1
  118. package/dist/sentinelIssues.js +163 -76
  119. package/dist/sentinelIssues.js.map +1 -1
  120. package/dist/server.js +65 -12
  121. package/dist/server.js.map +1 -1
  122. package/dist/setup.d.ts +83 -0
  123. package/dist/setup.d.ts.map +1 -0
  124. package/dist/setup.js +445 -0
  125. package/dist/setup.js.map +1 -0
  126. package/dist/store/markdown.d.ts +14 -1
  127. package/dist/store/markdown.d.ts.map +1 -1
  128. package/dist/store/markdown.js +36 -3
  129. package/dist/store/markdown.js.map +1 -1
  130. package/dist/tools/agentic/index.d.ts.map +1 -1
  131. package/dist/tools/agentic/index.js +28 -2
  132. package/dist/tools/agentic/index.js.map +1 -1
  133. package/dist/tools/architect/index.d.ts.map +1 -1
  134. package/dist/tools/architect/index.js +7 -2
  135. package/dist/tools/architect/index.js.map +1 -1
  136. package/dist/tools/conductor/index.d.ts +9 -0
  137. package/dist/tools/conductor/index.d.ts.map +1 -0
  138. package/dist/tools/conductor/index.js +242 -0
  139. package/dist/tools/conductor/index.js.map +1 -0
  140. package/dist/tools/context.d.ts +10 -5
  141. package/dist/tools/context.d.ts.map +1 -1
  142. package/dist/tools/context.js +45 -18
  143. package/dist/tools/context.js.map +1 -1
  144. package/dist/tools/coordinator/coordinator.d.ts.map +1 -1
  145. package/dist/tools/coordinator/coordinator.js +48 -19
  146. package/dist/tools/coordinator/coordinator.js.map +1 -1
  147. package/dist/tools/crit.d.ts +2 -1
  148. package/dist/tools/crit.d.ts.map +1 -1
  149. package/dist/tools/crit.js +19 -4
  150. package/dist/tools/crit.js.map +1 -1
  151. package/dist/tools/designer/index.d.ts.map +1 -1
  152. package/dist/tools/designer/index.js +4 -3
  153. package/dist/tools/designer/index.js.map +1 -1
  154. package/dist/tools/designer/lateral-tools.d.ts.map +1 -1
  155. package/dist/tools/designer/lateral-tools.js +4 -2
  156. package/dist/tools/designer/lateral-tools.js.map +1 -1
  157. package/dist/tools/designer.d.ts +2 -1
  158. package/dist/tools/designer.d.ts.map +1 -1
  159. package/dist/tools/designer.js +24 -12
  160. package/dist/tools/designer.js.map +1 -1
  161. package/dist/tools/dojo.d.ts +3 -2
  162. package/dist/tools/dojo.d.ts.map +1 -1
  163. package/dist/tools/dojo.js +64 -22
  164. package/dist/tools/dojo.js.map +1 -1
  165. package/dist/tools/dojoPolicy.js +1 -1
  166. package/dist/tools/dojoPolicy.js.map +1 -1
  167. package/dist/tools/friction.d.ts.map +1 -1
  168. package/dist/tools/friction.js +16 -6
  169. package/dist/tools/friction.js.map +1 -1
  170. package/dist/tools/guardian.d.ts +29 -7
  171. package/dist/tools/guardian.d.ts.map +1 -1
  172. package/dist/tools/guardian.js +90 -75
  173. package/dist/tools/guardian.js.map +1 -1
  174. package/dist/tools/hygiene/oracle-hygiene.d.ts.map +1 -1
  175. package/dist/tools/hygiene/oracle-hygiene.js +8 -2
  176. package/dist/tools/hygiene/oracle-hygiene.js.map +1 -1
  177. package/dist/tools/index.d.ts.map +1 -1
  178. package/dist/tools/index.js +29 -18
  179. package/dist/tools/index.js.map +1 -1
  180. package/dist/tools/learnings.d.ts +2 -1
  181. package/dist/tools/learnings.d.ts.map +1 -1
  182. package/dist/tools/learnings.js +31 -15
  183. package/dist/tools/learnings.js.map +1 -1
  184. package/dist/tools/oracle.d.ts.map +1 -1
  185. package/dist/tools/oracle.js +19 -6
  186. package/dist/tools/oracle.js.map +1 -1
  187. package/dist/tools/policy.d.ts +2 -1
  188. package/dist/tools/policy.d.ts.map +1 -1
  189. package/dist/tools/policy.js +28 -9
  190. package/dist/tools/policy.js.map +1 -1
  191. package/dist/tools/postoffice/index.d.ts +10 -0
  192. package/dist/tools/postoffice/index.d.ts.map +1 -0
  193. package/dist/tools/postoffice/index.js +218 -0
  194. package/dist/tools/postoffice/index.js.map +1 -0
  195. package/dist/tools/postoffice.d.ts +78 -0
  196. package/dist/tools/postoffice.d.ts.map +1 -0
  197. package/dist/tools/postoffice.js +199 -0
  198. package/dist/tools/postoffice.js.map +1 -0
  199. package/dist/tools/provenance.d.ts +7 -0
  200. package/dist/tools/provenance.d.ts.map +1 -1
  201. package/dist/tools/provenance.js +42 -16
  202. package/dist/tools/provenance.js.map +1 -1
  203. package/dist/tools/registry/index.d.ts.map +1 -1
  204. package/dist/tools/registry/index.js +41 -12
  205. package/dist/tools/registry/index.js.map +1 -1
  206. package/dist/tools/sentinel/index.d.ts +1 -0
  207. package/dist/tools/sentinel/index.d.ts.map +1 -1
  208. package/dist/tools/sentinel/index.js +88 -4
  209. package/dist/tools/sentinel/index.js.map +1 -1
  210. package/dist/tools/sentinel.d.ts +117 -1
  211. package/dist/tools/sentinel.d.ts.map +1 -1
  212. package/dist/tools/sentinel.js +761 -339
  213. package/dist/tools/sentinel.js.map +1 -1
  214. package/dist/tools/shared/index.d.ts +2 -1
  215. package/dist/tools/shared/index.d.ts.map +1 -1
  216. package/dist/tools/shared/index.js +2 -1
  217. package/dist/tools/shared/index.js.map +1 -1
  218. package/dist/tools/shared/response.d.ts +24 -0
  219. package/dist/tools/shared/response.d.ts.map +1 -1
  220. package/dist/tools/shared/response.js +61 -7
  221. package/dist/tools/shared/response.js.map +1 -1
  222. package/dist/tools/shared/storeRead.d.ts +153 -0
  223. package/dist/tools/shared/storeRead.d.ts.map +1 -0
  224. package/dist/tools/shared/storeRead.js +242 -0
  225. package/dist/tools/shared/storeRead.js.map +1 -0
  226. package/dist/tools/testSpec.d.ts +3 -2
  227. package/dist/tools/testSpec.d.ts.map +1 -1
  228. package/dist/tools/testSpec.js +51 -14
  229. package/dist/tools/testSpec.js.map +1 -1
  230. package/dist/tools/vector.d.ts +33 -1
  231. package/dist/tools/vector.d.ts.map +1 -1
  232. package/dist/tools/vector.js +31 -5
  233. package/dist/tools/vector.js.map +1 -1
  234. package/dist/tools/zoom/index.d.ts +15 -0
  235. package/dist/tools/zoom/index.d.ts.map +1 -0
  236. package/dist/tools/zoom/index.js +174 -0
  237. package/dist/tools/zoom/index.js.map +1 -0
  238. package/dist/tools/zoom.d.ts +234 -0
  239. package/dist/tools/zoom.d.ts.map +1 -0
  240. package/dist/tools/zoom.js +627 -0
  241. package/dist/tools/zoom.js.map +1 -0
  242. package/dist/transports/bridge.d.ts +1 -1
  243. package/dist/transports/bridge.d.ts.map +1 -1
  244. package/dist/transports/bridge.js +2 -0
  245. package/dist/transports/bridge.js.map +1 -1
  246. package/dist/transports/http.d.ts +1 -1
  247. package/dist/transports/http.d.ts.map +1 -1
  248. package/dist/transports/http.js +3 -1
  249. package/dist/transports/http.js.map +1 -1
  250. package/dist/transports/index.d.ts +1 -0
  251. package/dist/transports/index.d.ts.map +1 -1
  252. package/dist/transports/index.js +1 -0
  253. package/dist/transports/index.js.map +1 -1
  254. package/dist/transports/mcp.d.ts +1 -1
  255. package/dist/transports/mcp.d.ts.map +1 -1
  256. package/dist/transports/mcp.js +7 -3
  257. package/dist/transports/mcp.js.map +1 -1
  258. package/dist/transports/stdio.d.ts +1 -1
  259. package/dist/transports/stdio.d.ts.map +1 -1
  260. package/dist/transports/stdio.js +2 -0
  261. package/dist/transports/stdio.js.map +1 -1
  262. package/dist/transports/thinStdio.d.ts +22 -0
  263. package/dist/transports/thinStdio.d.ts.map +1 -0
  264. package/dist/transports/thinStdio.js +218 -0
  265. package/dist/transports/thinStdio.js.map +1 -0
  266. package/dist/transports/types.d.ts +8 -1
  267. package/dist/transports/types.d.ts.map +1 -1
  268. package/dist/types/agent-services.d.ts +7 -0
  269. package/dist/types/agent-services.d.ts.map +1 -1
  270. package/package.json +9 -4
  271. package/templates/com.decibel.daemon.plist +6 -1
  272. package/dist/tools/deck.d.ts +0 -11
  273. package/dist/tools/deck.d.ts.map +0 -1
  274. package/dist/tools/deck.js +0 -1656
  275. package/dist/tools/deck.js.map +0 -1
  276. package/dist/tools/mother.d.ts +0 -11
  277. package/dist/tools/mother.d.ts.map +0 -1
  278. package/dist/tools/mother.js +0 -503
  279. package/dist/tools/mother.js.map +0 -1
  280. package/dist/tools/registry.d.ts +0 -3
  281. package/dist/tools/registry.d.ts.map +0 -1
  282. package/dist/tools/registry.js +0 -189
  283. package/dist/tools/registry.js.map +0 -1
  284. package/dist/tools/senken.d.ts +0 -11
  285. package/dist/tools/senken.d.ts.map +0 -1
  286. package/dist/tools/senken.js +0 -482
  287. package/dist/tools/senken.js.map +0 -1
  288. package/dist/tools/terminal.d.ts +0 -17
  289. package/dist/tools/terminal.d.ts.map +0 -1
  290. package/dist/tools/terminal.js +0 -968
  291. package/dist/tools/terminal.js.map +0 -1
  292. package/dist/tools/toolsIndex.d.ts +0 -5
  293. package/dist/tools/toolsIndex.d.ts.map +0 -1
  294. package/dist/tools/toolsIndex.js +0 -37
  295. package/dist/tools/toolsIndex.js.map +0 -1
package/dist/kernel.js CHANGED
@@ -12,24 +12,191 @@ import { EventEmitter } from 'events';
12
12
  import { getAllTools } from './tools/index.js';
13
13
  import { trackToolUse } from './tools/shared/index.js';
14
14
  import { log } from './config.js';
15
- import { coreFacades, proFacades, appFacades } from './facades/definitions.js';
15
+ import { coreFacades, proFacades } from './facades/definitions.js';
16
+ import { loadExtensions } from './runtime/extensions.js';
16
17
  import { buildMcpDefinitions, validateFacades } from './facades/index.js';
17
18
  import { getEnabledFacades } from './toolConfig.js';
18
- // Tier gating (same logic as tools/index.ts)
19
- const PRO_ENABLED = process.env.DECIBEL_PRO === '1' || process.env.NODE_ENV !== 'production';
20
- const APPS_ENABLED = process.env.DECIBEL_APPS === '1' || process.env.NODE_ENV !== 'production';
19
+ import { CircuitBreakerRegistry } from './runtime/circuitBreaker.js';
20
+ import { withResolutionTracking, currentResolution } from './runtime/projectResolution.js';
21
+ // Tier gating (same logic as tools/index.ts).
22
+ //
23
+ // Fails CLOSED: opt in explicitly. The previous form OR'd in
24
+ // `NODE_ENV !== 'production'`, which is true whenever NODE_ENV is simply unset —
25
+ // the default for a plain `npx @decibelsystems/tools` install and for any client
26
+ // that spawns the server without a curated env (Claude Desktop, Cursor). That
27
+ // silently exposed every pro and apps facade, including `terminal` (reads
28
+ // DX_WALLET_PRIVATE_KEY) and the Postgres trading facades, to ordinary users.
29
+ const PRO_ENABLED = process.env.DECIBEL_PRO === '1';
30
+ // Apps-tier facades are no longer env-gated. They arrive as extensions from the
31
+ // allowlist in ~/.decibel/config.yaml — see runtime/extensions.ts. DECIBEL_APPS
32
+ // was machine-dependent in the worst way: it lived in a launchd plist, so
33
+ // regenerating the plist dropped four facades with no error on any surface.
34
+ let lastExtensionLoad = null;
35
+ /**
36
+ * What the last createKernel() call loaded, and what it refused. Surfaced on
37
+ * /health so a rejected extension is visible without reading the daemon log.
38
+ */
39
+ export function getExtensionDiagnostics() {
40
+ return {
41
+ loaded: (lastExtensionLoad?.extensions ?? []).map(e => ({
42
+ name: e.manifest.name,
43
+ version: e.manifest.version,
44
+ tier: e.manifest.tier,
45
+ facades: e.facades.map(f => f.name),
46
+ })),
47
+ rejected: lastExtensionLoad?.rejected ?? [],
48
+ };
49
+ }
50
+ /**
51
+ * Coerce params that arrived as JSON strings but whose target tool's schema
52
+ * declares them as object or array. Facade MCP definitions expose only
53
+ * `{action}` with additionalProperties, so callers get no type info for
54
+ * nested params and often serialize them (ISS-0112, ISS-0116). A parse
55
+ * failure or type mismatch leaves the value untouched — the tool's own
56
+ * validation stays the source of truth for errors.
57
+ */
58
+ export function coerceStringifiedParams(params, schema) {
59
+ const props = schema?.properties;
60
+ if (!props)
61
+ return params;
62
+ let out;
63
+ for (const [key, value] of Object.entries(params)) {
64
+ if (typeof value !== 'string')
65
+ continue;
66
+ const prop = props[key];
67
+ if (!prop)
68
+ continue;
69
+ const types = Array.isArray(prop.type) ? prop.type : [prop.type];
70
+ const wantsObject = types.includes('object');
71
+ const wantsArray = types.includes('array');
72
+ if (!wantsObject && !wantsArray)
73
+ continue;
74
+ // String is also acceptable per the schema — don't second-guess the caller
75
+ if (types.includes('string'))
76
+ continue;
77
+ const trimmed = value.trim();
78
+ const looksObject = trimmed.startsWith('{') && trimmed.endsWith('}');
79
+ const looksArray = trimmed.startsWith('[') && trimmed.endsWith(']');
80
+ if (!(wantsObject && looksObject) && !(wantsArray && looksArray))
81
+ continue;
82
+ let parsed;
83
+ try {
84
+ parsed = JSON.parse(trimmed);
85
+ }
86
+ catch {
87
+ continue;
88
+ }
89
+ const isPlainObject = typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed);
90
+ if ((wantsObject && isPlainObject) || (wantsArray && Array.isArray(parsed))) {
91
+ out ??= { ...params };
92
+ out[key] = parsed;
93
+ }
94
+ }
95
+ return out ?? params;
96
+ }
97
+ /**
98
+ * Tell the caller when the project it was served is not the project it asked
99
+ * for. Only fires when the resolver SUBSTITUTED one — a normal call is byte
100
+ * for byte unchanged, so this adds no noise to the ninety-nine percent case.
101
+ *
102
+ * The substitution is silent today by construction: strategy 7 returns a
103
+ * different id, and strategy 6 returns the requested id attached to a
104
+ * different path, so a caller comparing what it asked for against what it got
105
+ * cannot even detect the second one. HQ fans out across 34 projects; without
106
+ * this, a mistyped or unregistered id renders another project's issues under
107
+ * the requested project's name and nothing anywhere looks wrong.
108
+ *
109
+ * This does not change resolution — whether the forgiving strategies should
110
+ * apply to programmatic callers at all is a separate decision. It makes the
111
+ * outcome legible either way.
112
+ */
113
+ function annotateResolution(result) {
114
+ const record = currentResolution();
115
+ if (!record || record.matched)
116
+ return result;
117
+ const text = result.content?.find((c) => c.type === 'text')?.text;
118
+ if (!text)
119
+ return result;
120
+ let payload;
121
+ try {
122
+ payload = JSON.parse(text);
123
+ }
124
+ catch {
125
+ return result; // Not JSON — leave it alone rather than mangling it.
126
+ }
127
+ if (typeof payload !== 'object' || payload === null || Array.isArray(payload)) {
128
+ return result;
129
+ }
130
+ const annotated = {
131
+ ...payload,
132
+ project_resolution: {
133
+ requested: record.requested,
134
+ resolved: record.resolvedId,
135
+ strategy: record.strategy,
136
+ matched: false,
137
+ warning: `This result is for project "${record.resolvedId}", not "${record.requested}". ` +
138
+ 'The requested project could not be resolved, so the runtime substituted one ' +
139
+ 'discovered from its own environment. Treat this data as belonging to the ' +
140
+ 'resolved project.',
141
+ },
142
+ };
143
+ return {
144
+ ...result,
145
+ content: [{ type: 'text', text: JSON.stringify(annotated, null, 2) }],
146
+ };
147
+ }
148
+ /**
149
+ * Invoke a handler with project-resolution tracking, and annotate its result
150
+ * before the tracking scope closes. Annotating outside the scope reads an
151
+ * empty store — AsyncLocalStorage ends `run` when the callback settles, so the
152
+ * record is gone by the time the caller has the value in hand.
153
+ */
154
+ function runTracked(tool, params) {
155
+ return withResolutionTracking(async () => annotateResolution(await tool.handler(params)));
156
+ }
157
+ /** Best-effort one-line reason from an `isError` result, for circuit reporting. */
158
+ function resultErrorText(result) {
159
+ const text = result.content?.find((c) => c.type === 'text')?.text;
160
+ if (!text)
161
+ return undefined;
162
+ try {
163
+ const parsed = JSON.parse(text);
164
+ if (typeof parsed.error === 'string')
165
+ return parsed.error;
166
+ }
167
+ catch {
168
+ // Not JSON — fall through to the raw text.
169
+ }
170
+ return text.slice(0, 200);
171
+ }
21
172
  /**
22
173
  * Create the tool kernel. Call once at startup — both transports share it.
23
174
  */
24
175
  export async function createKernel() {
25
176
  const tools = await getAllTools();
26
177
  const toolMap = new Map(tools.map(t => [t.definition.name, t]));
27
- // Build facade registry (core + pro if enabled + apps if enabled)
28
- let facades = [
178
+ // Build facade registry: core, plus pro when licensed, plus whatever the
179
+ // extension allowlist yields.
180
+ const baseFacades = [
29
181
  ...coreFacades,
30
182
  ...(PRO_ENABLED ? proFacades : []),
31
- ...(APPS_ENABLED ? appFacades : []),
32
183
  ];
184
+ // Extensions register into this same toolMap and facade list, so dispatching
185
+ // to an extension facade takes exactly the path a core call takes — no second
186
+ // lookup, no parallel registry, nothing that can disagree with core.
187
+ //
188
+ // Fail closed by absence: a facade that was not allowlisted is never
189
+ // registered, so dispatch answers "unknown facade" rather than returning an
190
+ // empty result. That distinction matters more than it looks — an unregistered
191
+ // facade returning something zero-shaped is indistinguishable from a real
192
+ // empty answer, which is exactly how a broken voice inbox read as "0 messages"
193
+ // for five hours on 2026-09-01.
194
+ const loaded = await loadExtensions(new Set(baseFacades.map(f => f.name)));
195
+ lastExtensionLoad = loaded;
196
+ for (const tool of loaded.tools) {
197
+ toolMap.set(tool.definition.name, tool);
198
+ }
199
+ let facades = [...baseFacades, ...loaded.facades];
33
200
  // DECIBEL_FACADES env var or config: restrict to only these facades
34
201
  // Always include 'registry' so config tools remain accessible
35
202
  const enabledFacades = getEnabledFacades();
@@ -69,17 +236,60 @@ export async function createKernel() {
69
236
  // Register a no-op default so unsubscribed errors don't crash the process.
70
237
  const emitter = new EventEmitter();
71
238
  emitter.on('error', () => { });
72
- // Pre-build MCP definitions for each tier (cached)
239
+ // Per-facade circuit breaker. See src/runtime/circuitBreaker.ts for what
240
+ // counts as a fault and why `isError` alone is neither necessary nor
241
+ // sufficient.
242
+ const circuits = new CircuitBreakerRegistry();
243
+ /**
244
+ * Emit without letting a subscriber take the call down with it. Listeners
245
+ * run synchronously on the dispatch path — an SSE writer whose socket died
246
+ * mid-write, or a logging hook with a bad assumption, would otherwise throw
247
+ * straight out of a tool call that had already succeeded.
248
+ */
249
+ function safeEmit(event, payload) {
250
+ try {
251
+ emitter.emit(event, payload);
252
+ }
253
+ catch (err) {
254
+ log(`Kernel: dispatch listener for "${event}" threw — ${err instanceof Error ? err.message : String(err)}`);
255
+ }
256
+ }
257
+ /** The circuit a call belongs to: its facade, or the facade that owns the tool. */
258
+ function circuitKey(name) {
259
+ if (facadeMap.has(name))
260
+ return name;
261
+ return toolToFacade.get(name)?.name ?? name;
262
+ }
263
+ function circuitOpenResult(key, decision) {
264
+ return {
265
+ content: [{ type: 'text', text: JSON.stringify({
266
+ error: `Facade "${key}" is temporarily unavailable — circuit open after repeated failures`,
267
+ circuit_open: true,
268
+ facade: key,
269
+ retry_after_ms: decision.retryAfterMs,
270
+ opened_at: decision.openedAt,
271
+ last_error: decision.lastError,
272
+ hint: 'The facade\'s dependency (database, network service, or mount) is failing. Other facades are unaffected.',
273
+ }) }],
274
+ isError: true,
275
+ };
276
+ }
277
+ // Pre-build MCP definitions for each tier (cached). Keyed on transport too:
278
+ // an HTTP listing must not advertise a local-only facade it would then refuse
279
+ // to dispatch. Offering a tool and rejecting every call to it is a worse
280
+ // failure than not offering it — the caller reads the rejection as a bug.
73
281
  const mcpDefCache = new Map();
74
- function getMcpToolDefinitions(tier = 'full') {
75
- let cached = mcpDefCache.get(tier);
282
+ function getMcpToolDefinitions(tier = 'full', opts = {}) {
283
+ const key = `${tier}:${opts.transport ?? 'stdio'}`;
284
+ let cached = mcpDefCache.get(key);
76
285
  if (!cached) {
77
- cached = buildMcpDefinitions(facades, tier, toolMap);
78
- mcpDefCache.set(tier, cached);
286
+ const visible = opts.transport === 'http' ? facades.filter(f => !f.localOnly) : facades;
287
+ cached = buildMcpDefinitions(visible, tier, toolMap);
288
+ mcpDefCache.set(key, cached);
79
289
  }
80
290
  return cached;
81
291
  }
82
- async function dispatch(name, args, context) {
292
+ async function dispatchInner(name, args, context) {
83
293
  const agentId = context?.agentId || 'anonymous';
84
294
  const runId = context?.runId;
85
295
  const requestId = context?.requestId;
@@ -99,6 +309,27 @@ export async function createKernel() {
99
309
  };
100
310
  }
101
311
  }
312
+ // Local-only enforcement: a facade whose blast radius exceeds the caller's
313
+ // own project never leaves the local machine, whatever the tier says.
314
+ // Checked BEFORE tier, because a licensed pro caller over HTTP is exactly
315
+ // the case tier gating would wave through.
316
+ if (context?.transport === 'http') {
317
+ const localFacade = facadeMap.get(name) ?? (() => {
318
+ const owner = toolToFacade.get(name);
319
+ return owner ? facadeMap.get(owner.name) : undefined;
320
+ })();
321
+ if (localFacade?.localOnly) {
322
+ return {
323
+ content: [{ type: 'text', text: JSON.stringify({
324
+ error: `Facade "${localFacade.name}" is local-only and is not served over HTTP`,
325
+ facade: localFacade.name,
326
+ transport: 'http',
327
+ hint: 'Call it from a local stdio client. This facade reaches credentials whose scope is wider than one project, so it is not exposed on a network bind.',
328
+ }) }],
329
+ isError: true,
330
+ };
331
+ }
332
+ }
102
333
  // Tier enforcement: reject pro/apps facade calls from core-tier callers
103
334
  if (context?.tier === 'core') {
104
335
  const targetFacade = facadeMap.get(name);
@@ -168,35 +399,56 @@ export async function createKernel() {
168
399
  }
169
400
  // Flat params: action-specific fields are at root level.
170
401
  // Backward compat: also merge args.params if present (batch API, legacy callers).
171
- // Normalize project_id → projectId (snake_case callers like hooks/agents).
172
- const { action: _action, params: legacyParams, project_id, ...flatParams } = args;
402
+ // Alias project_id → projectId (snake_case callers like hooks/agents).
403
+ // Both keys are kept: many internal tools read input.project_id directly,
404
+ // and dropping it silently strips project scope over MCP dispatch.
405
+ const { action: _action, params: legacyParams, ...flatParams } = args;
173
406
  const merged = { ...(legacyParams || {}), ...flatParams };
174
- if (project_id !== undefined && merged.projectId === undefined) {
175
- merged.projectId = project_id;
407
+ if (merged.project_id !== undefined && merged.projectId === undefined) {
408
+ merged.projectId = merged.project_id;
176
409
  }
177
- const params = merged;
410
+ const params = coerceStringifiedParams(merged, tool.definition.inputSchema);
178
411
  log(`Kernel: facade ${name}.${action} → ${internalName} (agent=${agentId}${runId ? ` run=${runId}` : ''})`);
179
412
  trackToolUse(internalName);
413
+ const breaker = circuits.beforeCall(name);
414
+ if (!breaker.allowed) {
415
+ safeEmit('error', {
416
+ type: 'error', facade: name, action, tool: internalName,
417
+ agentId, runId, requestId, timestamp: new Date().toISOString(),
418
+ duration_ms: 0,
419
+ error: `circuit open for facade "${name}"`,
420
+ });
421
+ return circuitOpenResult(name, breaker);
422
+ }
180
423
  const startTime = Date.now();
181
- emitter.emit('dispatch', {
424
+ safeEmit('dispatch', {
182
425
  type: 'dispatch', facade: name, action, tool: internalName,
183
426
  agentId, runId, requestId, timestamp: new Date().toISOString(),
184
427
  });
185
428
  try {
186
- const result = await tool.handler(params);
187
- emitter.emit('result', {
429
+ const result = await runTracked(tool, params);
430
+ const duration = Date.now() - startTime;
431
+ circuits.afterCall(name, {
432
+ threw: false,
433
+ isError: !!result.isError,
434
+ durationMs: duration,
435
+ error: result.isError ? resultErrorText(result) : undefined,
436
+ });
437
+ safeEmit('result', {
188
438
  type: 'result', facade: name, action, tool: internalName,
189
439
  agentId, runId, requestId, timestamp: new Date().toISOString(),
190
- duration_ms: Date.now() - startTime, success: !result.isError,
440
+ duration_ms: duration, success: !result.isError,
191
441
  });
192
442
  return result;
193
443
  }
194
444
  catch (err) {
195
445
  const errMsg = err instanceof Error ? err.message : String(err);
196
- emitter.emit('error', {
446
+ const duration = Date.now() - startTime;
447
+ circuits.afterCall(name, { threw: true, isError: true, durationMs: duration, error: errMsg });
448
+ safeEmit('error', {
197
449
  type: 'error', facade: name, action, tool: internalName,
198
450
  agentId, runId, requestId, timestamp: new Date().toISOString(),
199
- duration_ms: Date.now() - startTime,
451
+ duration_ms: duration,
200
452
  error: errMsg,
201
453
  });
202
454
  return {
@@ -220,26 +472,49 @@ export async function createKernel() {
220
472
  }
221
473
  log(`Kernel: dispatch ${name} (agent=${agentId}${runId ? ` run=${runId}` : ''})`);
222
474
  trackToolUse(name);
475
+ const directParams = coerceStringifiedParams(args, tool.definition.inputSchema);
476
+ // Direct tool calls share the circuit of the facade that owns the tool —
477
+ // `senken_trade_summary` and `senken.trade_summary` reach the same pool.
478
+ const key = circuitKey(name);
479
+ const breaker = circuits.beforeCall(key);
480
+ if (!breaker.allowed) {
481
+ safeEmit('error', {
482
+ type: 'error', tool: name,
483
+ agentId, runId, requestId, timestamp: new Date().toISOString(),
484
+ duration_ms: 0,
485
+ error: `circuit open for facade "${key}"`,
486
+ });
487
+ return circuitOpenResult(key, breaker);
488
+ }
223
489
  const startTime = Date.now();
224
- emitter.emit('dispatch', {
490
+ safeEmit('dispatch', {
225
491
  type: 'dispatch', tool: name,
226
492
  agentId, runId, requestId, timestamp: new Date().toISOString(),
227
493
  });
228
494
  try {
229
- const result = await tool.handler(args);
230
- emitter.emit('result', {
495
+ const result = await runTracked(tool, directParams);
496
+ const duration = Date.now() - startTime;
497
+ circuits.afterCall(key, {
498
+ threw: false,
499
+ isError: !!result.isError,
500
+ durationMs: duration,
501
+ error: result.isError ? resultErrorText(result) : undefined,
502
+ });
503
+ safeEmit('result', {
231
504
  type: 'result', tool: name,
232
505
  agentId, runId, requestId, timestamp: new Date().toISOString(),
233
- duration_ms: Date.now() - startTime, success: !result.isError,
506
+ duration_ms: duration, success: !result.isError,
234
507
  });
235
508
  return result;
236
509
  }
237
510
  catch (err) {
238
511
  const errMsg = err instanceof Error ? err.message : String(err);
239
- emitter.emit('error', {
512
+ const duration = Date.now() - startTime;
513
+ circuits.afterCall(key, { threw: true, isError: true, durationMs: duration, error: errMsg });
514
+ safeEmit('error', {
240
515
  type: 'error', tool: name,
241
516
  agentId, runId, requestId, timestamp: new Date().toISOString(),
242
- duration_ms: Date.now() - startTime,
517
+ duration_ms: duration,
243
518
  error: errMsg,
244
519
  });
245
520
  return {
@@ -251,10 +526,64 @@ export async function createKernel() {
251
526
  };
252
527
  }
253
528
  }
529
+ /**
530
+ * The isolation boundary. Every failure a facade can produce becomes a
531
+ * `ToolResult`, never a rejected promise: the inner dispatch already handles
532
+ * a throwing *handler*, but the code around it can fail too — a malformed
533
+ * schema in `coerceStringifiedParams`, an unexpected shape in facade
534
+ * resolution, an out-of-memory string build. Whatever escapes, one facade's
535
+ * fault must not take down a runtime that six clients share.
536
+ *
537
+ * The transports depend on this: `server.ts` and `httpServer.ts` turn a
538
+ * rejected dispatch into a transport-level error, which for stdio means the
539
+ * MCP client sees a protocol fault rather than a tool that failed.
540
+ */
541
+ async function dispatch(name, args, context) {
542
+ try {
543
+ return await dispatchInner(name, args, context);
544
+ }
545
+ catch (err) {
546
+ const errMsg = err instanceof Error ? err.message : String(err);
547
+ log(`Kernel: dispatch of "${name}" failed outside the handler — ${errMsg}`);
548
+ circuits.recordFault(circuitKey(name), errMsg);
549
+ safeEmit('error', {
550
+ type: 'error', tool: name,
551
+ agentId: context?.agentId || 'anonymous',
552
+ runId: context?.runId,
553
+ requestId: context?.requestId,
554
+ timestamp: new Date().toISOString(),
555
+ error: errMsg,
556
+ });
557
+ return {
558
+ content: [{ type: 'text', text: JSON.stringify({
559
+ error: errMsg,
560
+ tool: name,
561
+ dispatch_fault: true,
562
+ }) }],
563
+ isError: true,
564
+ };
565
+ }
566
+ }
254
567
  async function batch(calls, context) {
255
568
  log(`Kernel: batch dispatch — ${calls.length} calls (agent=${context?.agentId || 'anonymous'})`);
256
569
  const promises = calls.map(async (call) => {
257
570
  const start = Date.now();
571
+ // Structural check before dispatch. Without it an unknown facade came
572
+ // back as a text node saying "Unknown tool: x" inside an otherwise
573
+ // successful-looking result, so a caller reading the envelope saw
574
+ // success for a facade that does not exist on this machine. That matters
575
+ // more since Phase 7 made the registered set machine-dependent: a missing
576
+ // extension MUST NOT be indistinguishable from an empty answer.
577
+ // Raw tool names are accepted here too, because dispatch accepts them.
578
+ if (!facadeMap.has(call.facade) && !toolMap.has(call.facade)) {
579
+ return {
580
+ facade: call.facade,
581
+ action: call.action,
582
+ error: `Unknown facade: ${call.facade}`,
583
+ code: 'UNKNOWN_FACADE',
584
+ duration_ms: Date.now() - start,
585
+ };
586
+ }
258
587
  try {
259
588
  const result = await dispatch(call.facade, { action: call.action, ...(call.params || {}) }, context);
260
589
  return {
@@ -285,7 +614,13 @@ export async function createKernel() {
285
614
  on: (event, listener) => emitter.on(event, listener),
286
615
  off: (event, listener) => emitter.off(event, listener),
287
616
  getMcpToolDefinitions,
288
- toolCount: tools.length,
617
+ circuitSnapshot: () => circuits.snapshot(),
618
+ resetCircuit: (key) => circuits.reset(key),
619
+ // toolMap, not `tools` — extension tools are merged into the map after
620
+ // getAllTools() returns, so counting the array would under-report by
621
+ // exactly the private tools and make /health disagree with what dispatch
622
+ // can actually reach.
623
+ toolCount: toolMap.size,
289
624
  facadeCount: facades.length,
290
625
  };
291
626
  }
@@ -1 +1 @@
1
- {"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"assumptions.d.ts","sourceRoot":"","sources":["../../../src/lib/agent-services/assumptions.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAGV,0BAA0B,EAC1B,kBAAkB,EAEnB,MAAM,+BAA+B,CAAC;AA0IvC;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IACR,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,0BAA0B,CAAC,CAmErC;AA4FD;;GAEG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBnD"}
1
+ {"version":3,"file":"assumptions.d.ts","sourceRoot":"","sources":["../../../src/lib/agent-services/assumptions.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAGV,0BAA0B,EAC1B,kBAAkB,EAEnB,MAAM,+BAA+B,CAAC;AA2IvC;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IACR,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,0BAA0B,CAAC,CAyErC;AA4FD;;GAEG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBnD"}
@@ -5,6 +5,7 @@
5
5
  // and things the agent should always ask about rather than assume.
6
6
  // ============================================================================
7
7
  import { getRun, listRuns } from '../../tools/vector.js';
8
+ import { countedStoreMeta } from '../../tools/shared/storeRead.js';
8
9
  // ============================================================================
9
10
  // Constants
10
11
  // ============================================================================
@@ -129,10 +130,14 @@ export async function aggregateAssumptions(projectId, options) {
129
130
  const lookbackDays = options?.lookback_days || 30;
130
131
  const maxRuns = options?.max_runs || 100;
131
132
  // Get recent runs
132
- const { runs } = await listRuns({
133
+ const { runs, unreadable_count: runsUnreadable = 0 } = await listRuns({
133
134
  projectId,
134
135
  limit: maxRuns,
135
136
  });
137
+ // Runs listRuns could not describe, plus runs whose events this loop could
138
+ // not read. Both mean the same thing here: assumptions that were made and
139
+ // are not in the totals below.
140
+ let unreadable = runsUnreadable;
136
141
  // Filter by date
137
142
  const cutoff = new Date();
138
143
  cutoff.setDate(cutoff.getDate() - lookbackDays);
@@ -163,7 +168,7 @@ export async function aggregateAssumptions(projectId, options) {
163
168
  allAssumptions.push(...assumptions);
164
169
  }
165
170
  catch {
166
- // Skip runs we can't read
171
+ unreadable++;
167
172
  }
168
173
  }
169
174
  // Calculate stats
@@ -176,6 +181,7 @@ export async function aggregateAssumptions(projectId, options) {
176
181
  end: new Date().toISOString(),
177
182
  run_count: recentRuns.length,
178
183
  },
184
+ ...countedStoreMeta(recentRuns.length, unreadable),
179
185
  };
180
186
  }
181
187
  /**