jfl 0.8.0 → 0.9.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 (249) hide show
  1. package/dist/commands/doctor.d.ts +1 -0
  2. package/dist/commands/doctor.d.ts.map +1 -1
  3. package/dist/commands/doctor.js +30 -1
  4. package/dist/commands/doctor.js.map +1 -1
  5. package/dist/commands/ide.d.ts +2 -1
  6. package/dist/commands/ide.d.ts.map +1 -1
  7. package/dist/commands/ide.js +60 -1
  8. package/dist/commands/ide.js.map +1 -1
  9. package/dist/commands/init-from-service.d.ts +15 -0
  10. package/dist/commands/init-from-service.d.ts.map +1 -0
  11. package/dist/commands/init-from-service.js +541 -0
  12. package/dist/commands/init-from-service.js.map +1 -0
  13. package/dist/commands/init.d.ts +1 -0
  14. package/dist/commands/init.d.ts.map +1 -1
  15. package/dist/commands/init.js +32 -1
  16. package/dist/commands/init.js.map +1 -1
  17. package/dist/commands/kanban.d.ts.map +1 -1
  18. package/dist/commands/kanban.js +13 -4
  19. package/dist/commands/kanban.js.map +1 -1
  20. package/dist/commands/linear.d.ts +41 -0
  21. package/dist/commands/linear.d.ts.map +1 -0
  22. package/dist/commands/linear.js +715 -0
  23. package/dist/commands/linear.js.map +1 -0
  24. package/dist/commands/peter.d.ts.map +1 -1
  25. package/dist/commands/peter.js +232 -25
  26. package/dist/commands/peter.js.map +1 -1
  27. package/dist/commands/services.d.ts.map +1 -1
  28. package/dist/commands/services.js +146 -0
  29. package/dist/commands/services.js.map +1 -1
  30. package/dist/commands/setup.d.ts.map +1 -1
  31. package/dist/commands/setup.js +173 -13
  32. package/dist/commands/setup.js.map +1 -1
  33. package/dist/commands/telemetry-monitor.d.ts +11 -0
  34. package/dist/commands/telemetry-monitor.d.ts.map +1 -0
  35. package/dist/commands/telemetry-monitor.js +224 -0
  36. package/dist/commands/telemetry-monitor.js.map +1 -0
  37. package/dist/commands/telemetry-test.d.ts +11 -0
  38. package/dist/commands/telemetry-test.d.ts.map +1 -0
  39. package/dist/commands/telemetry-test.js +67 -0
  40. package/dist/commands/telemetry-test.js.map +1 -0
  41. package/dist/commands/tenet-agents.d.ts +13 -0
  42. package/dist/commands/tenet-agents.d.ts.map +1 -0
  43. package/dist/commands/tenet-agents.js +191 -0
  44. package/dist/commands/tenet-agents.js.map +1 -0
  45. package/dist/commands/tenet-setup.d.ts +19 -0
  46. package/dist/commands/tenet-setup.d.ts.map +1 -0
  47. package/dist/commands/tenet-setup.js +131 -0
  48. package/dist/commands/tenet-setup.js.map +1 -0
  49. package/dist/commands/train.d.ts +18 -0
  50. package/dist/commands/train.d.ts.map +1 -1
  51. package/dist/commands/train.js +182 -0
  52. package/dist/commands/train.js.map +1 -1
  53. package/dist/commands/whoami.d.ts +2 -0
  54. package/dist/commands/whoami.d.ts.map +1 -0
  55. package/dist/commands/whoami.js +24 -0
  56. package/dist/commands/whoami.js.map +1 -0
  57. package/dist/index.js +159 -10
  58. package/dist/index.js.map +1 -1
  59. package/dist/lib/advanced-setup.d.ts +78 -0
  60. package/dist/lib/advanced-setup.d.ts.map +1 -0
  61. package/dist/lib/advanced-setup.js +433 -0
  62. package/dist/lib/advanced-setup.js.map +1 -0
  63. package/dist/lib/agent-config.d.ts +33 -0
  64. package/dist/lib/agent-config.d.ts.map +1 -1
  65. package/dist/lib/agent-config.js +26 -0
  66. package/dist/lib/agent-config.js.map +1 -1
  67. package/dist/lib/counterfactual-training-bridge.d.ts +114 -0
  68. package/dist/lib/counterfactual-training-bridge.d.ts.map +1 -0
  69. package/dist/lib/counterfactual-training-bridge.js +322 -0
  70. package/dist/lib/counterfactual-training-bridge.js.map +1 -0
  71. package/dist/lib/discovery-agent.d.ts +48 -0
  72. package/dist/lib/discovery-agent.d.ts.map +1 -0
  73. package/dist/lib/discovery-agent.js +111 -0
  74. package/dist/lib/discovery-agent.js.map +1 -0
  75. package/dist/lib/flow-engine.d.ts.map +1 -1
  76. package/dist/lib/flow-engine.js +46 -8
  77. package/dist/lib/flow-engine.js.map +1 -1
  78. package/dist/lib/gtm-generator.d.ts +29 -0
  79. package/dist/lib/gtm-generator.d.ts.map +1 -0
  80. package/dist/lib/gtm-generator.js +252 -0
  81. package/dist/lib/gtm-generator.js.map +1 -0
  82. package/dist/lib/hub-health.d.ts +40 -0
  83. package/dist/lib/hub-health.d.ts.map +1 -0
  84. package/dist/lib/hub-health.js +89 -0
  85. package/dist/lib/hub-health.js.map +1 -0
  86. package/dist/lib/invariant-monitor.d.ts +6 -2
  87. package/dist/lib/invariant-monitor.d.ts.map +1 -1
  88. package/dist/lib/invariant-monitor.js +89 -2
  89. package/dist/lib/invariant-monitor.js.map +1 -1
  90. package/dist/lib/journal-analyzer.d.ts +71 -0
  91. package/dist/lib/journal-analyzer.d.ts.map +1 -0
  92. package/dist/lib/journal-analyzer.js +306 -0
  93. package/dist/lib/journal-analyzer.js.map +1 -0
  94. package/dist/lib/linear-client.d.ts +73 -0
  95. package/dist/lib/linear-client.d.ts.map +1 -0
  96. package/dist/lib/linear-client.js +112 -0
  97. package/dist/lib/linear-client.js.map +1 -0
  98. package/dist/lib/linear-id-map.d.ts +20 -0
  99. package/dist/lib/linear-id-map.d.ts.map +1 -0
  100. package/dist/lib/linear-id-map.js +57 -0
  101. package/dist/lib/linear-id-map.js.map +1 -0
  102. package/dist/lib/linear-kanban.d.ts +66 -0
  103. package/dist/lib/linear-kanban.d.ts.map +1 -0
  104. package/dist/lib/linear-kanban.js +175 -0
  105. package/dist/lib/linear-kanban.js.map +1 -0
  106. package/dist/lib/onboarding.d.ts +40 -0
  107. package/dist/lib/onboarding.d.ts.map +1 -0
  108. package/dist/lib/onboarding.js +213 -0
  109. package/dist/lib/onboarding.js.map +1 -0
  110. package/dist/lib/physical-world-model.d.ts +50 -0
  111. package/dist/lib/physical-world-model.d.ts.map +1 -0
  112. package/dist/lib/physical-world-model.js +251 -0
  113. package/dist/lib/physical-world-model.js.map +1 -0
  114. package/dist/lib/planning-loop.d.ts +157 -0
  115. package/dist/lib/planning-loop.d.ts.map +1 -0
  116. package/dist/lib/planning-loop.js +537 -0
  117. package/dist/lib/planning-loop.js.map +1 -0
  118. package/dist/lib/policy-head.d.ts +13 -0
  119. package/dist/lib/policy-head.d.ts.map +1 -1
  120. package/dist/lib/policy-head.js +168 -2
  121. package/dist/lib/policy-head.js.map +1 -1
  122. package/dist/lib/resource-optimizer-middleware.d.ts +39 -0
  123. package/dist/lib/resource-optimizer-middleware.d.ts.map +1 -0
  124. package/dist/lib/resource-optimizer-middleware.js +222 -0
  125. package/dist/lib/resource-optimizer-middleware.js.map +1 -0
  126. package/dist/lib/resource-optimizer.d.ts +71 -0
  127. package/dist/lib/resource-optimizer.d.ts.map +1 -0
  128. package/dist/lib/resource-optimizer.js +228 -0
  129. package/dist/lib/resource-optimizer.js.map +1 -0
  130. package/dist/lib/rl-manager.d.ts +74 -0
  131. package/dist/lib/rl-manager.d.ts.map +1 -0
  132. package/dist/lib/rl-manager.js +244 -0
  133. package/dist/lib/rl-manager.js.map +1 -0
  134. package/dist/lib/service-analyzer.d.ts +76 -0
  135. package/dist/lib/service-analyzer.d.ts.map +1 -0
  136. package/dist/lib/service-analyzer.js +704 -0
  137. package/dist/lib/service-analyzer.js.map +1 -0
  138. package/dist/lib/service-gtm.js +2 -2
  139. package/dist/lib/service-gtm.js.map +1 -1
  140. package/dist/lib/service-questionnaire.d.ts +11 -0
  141. package/dist/lib/service-questionnaire.d.ts.map +1 -0
  142. package/dist/lib/service-questionnaire.js +89 -0
  143. package/dist/lib/service-questionnaire.js.map +1 -0
  144. package/dist/lib/setup/agent-generator.d.ts +2 -0
  145. package/dist/lib/setup/agent-generator.d.ts.map +1 -1
  146. package/dist/lib/setup/agent-generator.js +128 -4
  147. package/dist/lib/setup/agent-generator.js.map +1 -1
  148. package/dist/lib/setup/flow-generator.d.ts +10 -0
  149. package/dist/lib/setup/flow-generator.d.ts.map +1 -0
  150. package/dist/lib/setup/flow-generator.js +113 -0
  151. package/dist/lib/setup/flow-generator.js.map +1 -0
  152. package/dist/lib/setup/invariant-bridge.d.ts +91 -0
  153. package/dist/lib/setup/invariant-bridge.d.ts.map +1 -0
  154. package/dist/lib/setup/invariant-bridge.js +384 -0
  155. package/dist/lib/setup/invariant-bridge.js.map +1 -0
  156. package/dist/lib/setup/spec-generator.d.ts +41 -5
  157. package/dist/lib/setup/spec-generator.d.ts.map +1 -1
  158. package/dist/lib/setup/spec-generator.js +503 -29
  159. package/dist/lib/setup/spec-generator.js.map +1 -1
  160. package/dist/lib/stratus-client.js +1 -1
  161. package/dist/lib/stratus-client.js.map +1 -1
  162. package/dist/lib/surface-agent.d.ts +78 -0
  163. package/dist/lib/surface-agent.d.ts.map +1 -0
  164. package/dist/lib/surface-agent.js +105 -0
  165. package/dist/lib/surface-agent.js.map +1 -0
  166. package/dist/lib/surface-coordination-example.d.ts +30 -0
  167. package/dist/lib/surface-coordination-example.d.ts.map +1 -0
  168. package/dist/lib/surface-coordination-example.js +164 -0
  169. package/dist/lib/surface-coordination-example.js.map +1 -0
  170. package/dist/lib/telemetry/physical-world-collector.d.ts +15 -0
  171. package/dist/lib/telemetry/physical-world-collector.d.ts.map +1 -0
  172. package/dist/lib/telemetry/physical-world-collector.js +177 -0
  173. package/dist/lib/telemetry/physical-world-collector.js.map +1 -0
  174. package/dist/lib/telemetry/training-bridge.d.ts +51 -0
  175. package/dist/lib/telemetry/training-bridge.d.ts.map +1 -0
  176. package/dist/lib/telemetry/training-bridge.js +185 -0
  177. package/dist/lib/telemetry/training-bridge.js.map +1 -0
  178. package/dist/lib/telemetry.d.ts +2 -1
  179. package/dist/lib/telemetry.d.ts.map +1 -1
  180. package/dist/lib/telemetry.js +23 -2
  181. package/dist/lib/telemetry.js.map +1 -1
  182. package/dist/lib/tenet-board-agent.d.ts +52 -0
  183. package/dist/lib/tenet-board-agent.d.ts.map +1 -0
  184. package/dist/lib/tenet-board-agent.js +226 -0
  185. package/dist/lib/tenet-board-agent.js.map +1 -0
  186. package/dist/lib/tenet-ide-agent.d.ts +40 -0
  187. package/dist/lib/tenet-ide-agent.d.ts.map +1 -0
  188. package/dist/lib/tenet-ide-agent.js +199 -0
  189. package/dist/lib/tenet-ide-agent.js.map +1 -0
  190. package/dist/lib/workspace/data-pipeline.d.ts.map +1 -1
  191. package/dist/lib/workspace/data-pipeline.js +27 -5
  192. package/dist/lib/workspace/data-pipeline.js.map +1 -1
  193. package/dist/lib/workspace/sidebar-runner.d.ts +13 -0
  194. package/dist/lib/workspace/sidebar-runner.d.ts.map +1 -0
  195. package/dist/lib/workspace/sidebar-runner.js +419 -0
  196. package/dist/lib/workspace/sidebar-runner.js.map +1 -0
  197. package/dist/lib/workspace/surface-registry.d.ts.map +1 -1
  198. package/dist/lib/workspace/surface-registry.js +4 -1
  199. package/dist/lib/workspace/surface-registry.js.map +1 -1
  200. package/dist/lib/workspace/surfaces/agent-overview.d.ts +3 -3
  201. package/dist/lib/workspace/surfaces/agent-overview.d.ts.map +1 -1
  202. package/dist/lib/workspace/surfaces/agent-overview.js +3 -3
  203. package/dist/lib/workspace/surfaces/agent-overview.js.map +1 -1
  204. package/dist/lib/workspace/surfaces/index.d.ts +3 -0
  205. package/dist/lib/workspace/surfaces/index.d.ts.map +1 -1
  206. package/dist/lib/workspace/surfaces/index.js +3 -0
  207. package/dist/lib/workspace/surfaces/index.js.map +1 -1
  208. package/dist/lib/workspace/surfaces/kanban.d.ts +15 -0
  209. package/dist/lib/workspace/surfaces/kanban.d.ts.map +1 -0
  210. package/dist/lib/workspace/surfaces/kanban.js +43 -0
  211. package/dist/lib/workspace/surfaces/kanban.js.map +1 -0
  212. package/dist/lib/workspace/surfaces/physical-world.d.ts +15 -0
  213. package/dist/lib/workspace/surfaces/physical-world.d.ts.map +1 -0
  214. package/dist/lib/workspace/surfaces/physical-world.js +37 -0
  215. package/dist/lib/workspace/surfaces/physical-world.js.map +1 -0
  216. package/dist/lib/workspace/surfaces/sidebar.d.ts +22 -0
  217. package/dist/lib/workspace/surfaces/sidebar.d.ts.map +1 -0
  218. package/dist/lib/workspace/surfaces/sidebar.js +90 -0
  219. package/dist/lib/workspace/surfaces/sidebar.js.map +1 -0
  220. package/dist/types/flows.d.ts +2 -1
  221. package/dist/types/flows.d.ts.map +1 -1
  222. package/dist/types/physical-world-model.d.ts +65 -0
  223. package/dist/types/physical-world-model.d.ts.map +1 -0
  224. package/dist/types/physical-world-model.js +43 -0
  225. package/dist/types/physical-world-model.js.map +1 -0
  226. package/dist/types/telemetry.d.ts +37 -0
  227. package/dist/types/telemetry.d.ts.map +1 -1
  228. package/dist/types/world-model.d.ts.map +1 -1
  229. package/dist/types/world-model.js +14 -7
  230. package/dist/types/world-model.js.map +1 -1
  231. package/dist/utils/context-hub-port.d.ts.map +1 -1
  232. package/dist/utils/context-hub-port.js +6 -1
  233. package/dist/utils/context-hub-port.js.map +1 -1
  234. package/package.json +3 -2
  235. package/packages/pi/extensions/index.ts +34 -6
  236. package/packages/pi/extensions/onboarding-v1.ts +8 -8
  237. package/packages/pi/extensions/onboarding-v2.ts +5 -5
  238. package/scripts/telemetry-dashboard.sh +44 -0
  239. package/scripts/test-planning-loop-e2e.ts +181 -0
  240. package/scripts/test-server-inference.ts +49 -0
  241. package/scripts/test-state-sensitivity.ts +32 -0
  242. package/scripts/train/v2/benchmark.py +661 -0
  243. package/scripts/train/v2/generate_balanced.py +439 -0
  244. package/scripts/train/v2/generate_hard_negatives.py +219 -0
  245. package/scripts/train/v2/infer.py +149 -36
  246. package/scripts/train/v2/infer_server.py +224 -0
  247. package/scripts/train/v2/online_train.py +576 -0
  248. package/scripts/train/v2/precompute.py +24 -6
  249. package/template/CLAUDE.md +74 -132
@@ -38,6 +38,9 @@ export class PolicyHeadInference {
38
38
  embedCache = new Map();
39
39
  projectRoot;
40
40
  useV2 = false;
41
+ serverProcess = null;
42
+ serverReady = false;
43
+ serverBuffer = "";
41
44
  constructor(projectRoot) {
42
45
  this.projectRoot = projectRoot || process.cwd();
43
46
  // Try v2 first, fall back to v1
@@ -136,16 +139,30 @@ export class PolicyHeadInference {
136
139
  throw new Error(`v2 checkpoint not found: ${checkpointPath}`);
137
140
  }
138
141
  const stateText = this.formatStateText(state);
142
+ // Try persistent server first (fast path: ~50ms)
143
+ try {
144
+ const result = await this.serverInfer(stateText, goal);
145
+ return result;
146
+ }
147
+ catch (err) {
148
+ console.log(`[policy-head] Server inference failed, falling back to subprocess: ${err.message}`);
149
+ }
150
+ // Fallback: subprocess with cache (slow path: ~3-5s)
139
151
  const inferScript = join(__ph_dirname, "..", "..", "scripts", "train", "v2", "infer.py");
152
+ const cacheDir = this.findCacheDir(checkpointPath);
140
153
  const pythonBin = this.findPython();
141
- const result = spawnSync(pythonBin, [
154
+ const args = [
142
155
  inferScript,
143
156
  "--checkpoint", checkpointPath,
144
157
  "--state", stateText,
145
158
  "--goal", goal,
146
159
  "--top-k", "3",
147
160
  "--json",
148
- ], {
161
+ ];
162
+ if (cacheDir) {
163
+ args.push("--cache-dir", cacheDir);
164
+ }
165
+ const result = spawnSync(pythonBin, args, {
149
166
  encoding: "utf-8",
150
167
  timeout: 30_000,
151
168
  env: { ...process.env },
@@ -161,6 +178,141 @@ export class PolicyHeadInference {
161
178
  throw new Error(`Failed to parse v2 inference output: ${output.slice(0, 200)}`);
162
179
  }
163
180
  }
181
+ /**
182
+ * Start a persistent inference server process.
183
+ * Keeps model + cache warm in memory for fast repeated inference.
184
+ */
185
+ async startServer() {
186
+ if (this.serverProcess && !this.serverProcess.killed)
187
+ return;
188
+ const checkpointPath = this.v2Meta?.checkpoint_path;
189
+ if (!checkpointPath || !existsSync(checkpointPath)) {
190
+ throw new Error(`No checkpoint for server: ${checkpointPath}`);
191
+ }
192
+ const { spawn } = await import("child_process");
193
+ const serverScript = join(__ph_dirname, "..", "..", "scripts", "train", "v2", "infer_server.py");
194
+ if (!existsSync(serverScript)) {
195
+ throw new Error(`Server script not found: ${serverScript}`);
196
+ }
197
+ const cacheDir = this.findCacheDir(checkpointPath);
198
+ const pythonBin = this.findPython();
199
+ const args = [serverScript, "--checkpoint", checkpointPath];
200
+ if (cacheDir)
201
+ args.push("--cache-dir", cacheDir);
202
+ console.log(`[policy-head] Starting server: ${pythonBin} ${serverScript}`);
203
+ console.log(`[policy-head] checkpoint: ${checkpointPath}`);
204
+ if (cacheDir)
205
+ console.log(`[policy-head] cache-dir: ${cacheDir}`);
206
+ this.serverProcess = spawn(pythonBin, args, {
207
+ stdio: ["pipe", "pipe", "pipe"],
208
+ env: { ...process.env },
209
+ });
210
+ // Capture stderr for debugging
211
+ let stderrOutput = "";
212
+ this.serverProcess.stderr?.on("data", (data) => {
213
+ stderrOutput += data.toString();
214
+ });
215
+ // Read the initial "ready" line
216
+ return new Promise((resolve, reject) => {
217
+ const timeout = setTimeout(() => {
218
+ reject(new Error(`Server startup timeout. stderr: ${stderrOutput.slice(0, 300)}`));
219
+ }, 30_000);
220
+ const onData = (data) => {
221
+ const line = data.toString().trim();
222
+ try {
223
+ const msg = JSON.parse(line);
224
+ if (msg.status === "ready") {
225
+ this.serverReady = true;
226
+ console.log(`[policy-head] Server ready: device=${msg.device} cache=${msg.cache_size} model_load=${msg.model_load_ms}ms`);
227
+ clearTimeout(timeout);
228
+ resolve();
229
+ }
230
+ }
231
+ catch {
232
+ // Not JSON yet, keep waiting
233
+ }
234
+ };
235
+ this.serverProcess.stdout?.once("data", onData);
236
+ this.serverProcess.on("error", (err) => {
237
+ clearTimeout(timeout);
238
+ reject(new Error(`Server process error: ${err.message}`));
239
+ });
240
+ this.serverProcess.on("exit", (code) => {
241
+ if (!this.serverReady) {
242
+ clearTimeout(timeout);
243
+ reject(new Error(`Server exited with code ${code} before ready. stderr: ${stderrOutput.slice(0, 300)}`));
244
+ }
245
+ });
246
+ });
247
+ }
248
+ /** Send inference request to persistent server */
249
+ async serverInfer(stateText, goal) {
250
+ // Start server on first call
251
+ if (!this.serverProcess || this.serverProcess.killed) {
252
+ await this.startServer();
253
+ }
254
+ if (!this.serverReady || !this.serverProcess) {
255
+ throw new Error("Server not ready");
256
+ }
257
+ const request = JSON.stringify({ state: stateText, goal, top_k: 3 }) + "\n";
258
+ return new Promise((resolve, reject) => {
259
+ const timeout = setTimeout(() => {
260
+ reject(new Error("Server inference timeout"));
261
+ }, 15_000);
262
+ const onData = (data) => {
263
+ this.serverBuffer += data.toString();
264
+ const lines = this.serverBuffer.split("\n");
265
+ // Process complete lines
266
+ for (let i = 0; i < lines.length - 1; i++) {
267
+ const line = lines[i].trim();
268
+ if (!line)
269
+ continue;
270
+ try {
271
+ const msg = JSON.parse(line);
272
+ if (msg.error) {
273
+ clearTimeout(timeout);
274
+ this.serverProcess.stdout?.removeListener("data", onData);
275
+ reject(new Error(msg.error));
276
+ return;
277
+ }
278
+ if (msg.action) {
279
+ clearTimeout(timeout);
280
+ this.serverProcess.stdout?.removeListener("data", onData);
281
+ resolve({
282
+ action: msg.action,
283
+ confidence: msg.confidence,
284
+ alternatives: msg.alternatives || [],
285
+ });
286
+ return;
287
+ }
288
+ }
289
+ catch {
290
+ // Skip non-JSON lines
291
+ }
292
+ }
293
+ // Keep the incomplete last line in the buffer
294
+ this.serverBuffer = lines[lines.length - 1];
295
+ };
296
+ this.serverProcess.stdout?.on("data", onData);
297
+ this.serverProcess.stdin?.write(request);
298
+ });
299
+ }
300
+ /** Stop the persistent inference server */
301
+ stopServer() {
302
+ if (this.serverProcess && !this.serverProcess.killed) {
303
+ try {
304
+ this.serverProcess.stdin?.write(JSON.stringify({ cmd: "quit" }) + "\n");
305
+ }
306
+ catch { }
307
+ setTimeout(() => {
308
+ if (this.serverProcess && !this.serverProcess.killed) {
309
+ this.serverProcess.kill();
310
+ }
311
+ }, 1000);
312
+ this.serverReady = false;
313
+ this.serverProcess = null;
314
+ }
315
+ }
164
316
  async predictReward(state, action) {
165
317
  // v2 path: use action selection confidence as reward proxy
166
318
  if (this.useV2 && this.v2Meta) {
@@ -220,6 +372,20 @@ export class PolicyHeadInference {
220
372
  results.forEach((r, i) => { r.rank = i + 1; });
221
373
  return results;
222
374
  }
375
+ findCacheDir(checkpointPath) {
376
+ // Look for embeddings_cache.npz + text_to_idx.json
377
+ const candidates = [
378
+ join(this.projectRoot, ".jfl", "v2-data"),
379
+ join(dirname(checkpointPath), "..", "v2-data"),
380
+ join(dirname(checkpointPath), "v2-data"),
381
+ ];
382
+ for (const dir of candidates) {
383
+ if (existsSync(join(dir, "embeddings_cache.npz")) && existsSync(join(dir, "text_to_idx.json"))) {
384
+ return dir;
385
+ }
386
+ }
387
+ return null;
388
+ }
223
389
  findPython() {
224
390
  const cliRoot = join(__ph_dirname, "..", "..");
225
391
  const venvPython = join(cliRoot, ".venv", "bin", "python3");
@@ -1 +1 @@
1
- {"version":3,"file":"policy-head.js","sourceRoot":"","sources":["../../src/lib/policy-head.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy-head.js","sourceRoot":"","sources":["../../src/lib/policy-head.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @purpose CLI middleware that wires ResourceOptimizer into every command
3
+ *
4
+ * preAction: Capture state, run RO.decide(), apply guidance (delay/throttle)
5
+ * postAction: Capture post-state, call RO.recordTransition(), flush to disk
6
+ *
7
+ * Performance budget: <5ms for preAction (uses fast os module, not execSync)
8
+ * Background: Full physical-world capture runs on 5s timer for cache refresh
9
+ *
10
+ * @invariant RO can DELAY but never CANCEL commands
11
+ * @spec knowledge/CASH-REVIEW-RESPONSES.md
12
+ */
13
+ import type { ResourceGuidance } from "./resource-optimizer.js";
14
+ /**
15
+ * preAction hook — runs before every CLI command.
16
+ * Budget: <5ms. Uses fast os module capture + cached state.
17
+ *
18
+ * @returns true if command should proceed, false to skip (never happens — RO can only DELAY)
19
+ */
20
+ export declare function resourceOptimizerPreAction(commandName: string): Promise<ResourceGuidance>;
21
+ /**
22
+ * postAction hook — runs after every CLI command.
23
+ * Records the transition and flushes to disk.
24
+ */
25
+ export declare function resourceOptimizerPostAction(commandName: string, projectRoot: string): Promise<void>;
26
+ /**
27
+ * Apply guidance — delay if needed.
28
+ * Returns immediately for passthrough/monitor/boost.
29
+ */
30
+ export declare function applyGuidance(guidance: ResourceGuidance): Promise<void>;
31
+ /**
32
+ * Get RO stats for dashboard/status display
33
+ */
34
+ export declare function getResourceOptimizerStats(projectRoot: string): {
35
+ transitions: number;
36
+ trainingReady: boolean;
37
+ lastAction: string | null;
38
+ };
39
+ //# sourceMappingURL=resource-optimizer-middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-optimizer-middleware.d.ts","sourceRoot":"","sources":["../../src/lib/resource-optimizer-middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAkB,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AA+I/E;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsC/F;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAI7E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG;IAC9D,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,OAAO,CAAA;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B,CAOA"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * @purpose CLI middleware that wires ResourceOptimizer into every command
3
+ *
4
+ * preAction: Capture state, run RO.decide(), apply guidance (delay/throttle)
5
+ * postAction: Capture post-state, call RO.recordTransition(), flush to disk
6
+ *
7
+ * Performance budget: <5ms for preAction (uses fast os module, not execSync)
8
+ * Background: Full physical-world capture runs on 5s timer for cache refresh
9
+ *
10
+ * @invariant RO can DELAY but never CANCEL commands
11
+ * @spec knowledge/CASH-REVIEW-RESPONSES.md
12
+ */
13
+ import { cpus, totalmem, freemem, loadavg } from "os";
14
+ import { existsSync, appendFileSync, mkdirSync, readFileSync } from "fs";
15
+ import { join } from "path";
16
+ // ============================================================================
17
+ // Fast State Capture (0ms — no execSync, no subprocess)
18
+ // ============================================================================
19
+ /**
20
+ * Ultra-fast state capture using Node's os module.
21
+ * Missing fields (thermal, battery, git) are filled from cache or defaults.
22
+ */
23
+ function captureFastState(cache) {
24
+ const totalMem = totalmem() / (1024 * 1024);
25
+ const freeMemMb = freemem() / (1024 * 1024);
26
+ const usedMemMb = totalMem - freeMemMb;
27
+ const load = loadavg();
28
+ return {
29
+ cpu_usage_percent: cache?.cpu_usage_percent ?? estimateCpuFromLoad(load[0]),
30
+ memory_usage_mb: usedMemMb,
31
+ memory_available_mb: freeMemMb,
32
+ thermal_state: cache?.thermal_state ?? "nominal",
33
+ system_load_1m: load[0],
34
+ disk_free_gb: cache?.disk_free_gb ?? 50,
35
+ battery_level: cache?.battery_level,
36
+ battery_charging: cache?.battery_charging,
37
+ git_branch: cache?.git_branch ?? "main",
38
+ git_dirty_files: cache?.git_dirty_files ?? 0,
39
+ concurrent_terminals: cache?.concurrent_terminals ?? 1,
40
+ active_ide: cache?.active_ide ?? false,
41
+ recent_build_time_ms: cache?.recent_build_time_ms,
42
+ recent_test_time_ms: cache?.recent_test_time_ms,
43
+ avg_command_duration_ms: cache?.avg_command_duration_ms ?? 800,
44
+ network_latency_ms: cache?.network_latency_ms,
45
+ internet_connectivity: cache?.internet_connectivity ?? true,
46
+ localhost_ports_active: cache?.localhost_ports_active ?? [],
47
+ };
48
+ }
49
+ /** Estimate CPU% from load average (rough — load/cores * 100) */
50
+ function estimateCpuFromLoad(load1m) {
51
+ const cores = cpus().length;
52
+ return Math.min(100, (load1m / cores) * 100);
53
+ }
54
+ function getTransitionPath(projectRoot) {
55
+ const dir = join(projectRoot, ".jfl", "telemetry");
56
+ if (!existsSync(dir)) {
57
+ mkdirSync(dir, { recursive: true });
58
+ }
59
+ return join(dir, "resource-transitions.jsonl");
60
+ }
61
+ function flushTransition(projectRoot, record) {
62
+ try {
63
+ const path = getTransitionPath(projectRoot);
64
+ appendFileSync(path, JSON.stringify(record) + "\n");
65
+ }
66
+ catch {
67
+ // Non-blocking — don't crash CLI for telemetry
68
+ }
69
+ }
70
+ function countTransitions(projectRoot) {
71
+ try {
72
+ const path = getTransitionPath(projectRoot);
73
+ if (!existsSync(path))
74
+ return 0;
75
+ const content = readFileSync(path, "utf-8");
76
+ return content.split("\n").filter(Boolean).length;
77
+ }
78
+ catch {
79
+ return 0;
80
+ }
81
+ }
82
+ // ============================================================================
83
+ // Background State Refresh
84
+ // ============================================================================
85
+ let _fullStateCache = null;
86
+ let _bgTimer = null;
87
+ let _roInstance = null;
88
+ async function refreshFullState() {
89
+ try {
90
+ const { PhysicalWorldModel } = await import("./physical-world-model.js");
91
+ const model = new PhysicalWorldModel();
92
+ _fullStateCache = await model.captureCurrentState();
93
+ }
94
+ catch {
95
+ // If full capture fails, fast capture is still available
96
+ }
97
+ }
98
+ function ensureBackgroundRefresh() {
99
+ if (_bgTimer)
100
+ return;
101
+ // Refresh full state every 5s in background
102
+ _bgTimer = setInterval(() => {
103
+ refreshFullState().catch(() => { });
104
+ }, 5000);
105
+ // Don't keep process alive for background timer
106
+ if (_bgTimer.unref)
107
+ _bgTimer.unref();
108
+ // Initial async refresh
109
+ refreshFullState().catch(() => { });
110
+ }
111
+ async function getOrCreateRO() {
112
+ if (!_roInstance) {
113
+ const { getResourceOptimizer } = await import("./resource-optimizer.js");
114
+ _roInstance = getResourceOptimizer();
115
+ }
116
+ return _roInstance;
117
+ }
118
+ // ============================================================================
119
+ // Middleware Hooks (wired into Commander preAction/postAction)
120
+ // ============================================================================
121
+ /** Per-command state stored between pre and post action */
122
+ const commandState = new Map();
123
+ /**
124
+ * preAction hook — runs before every CLI command.
125
+ * Budget: <5ms. Uses fast os module capture + cached state.
126
+ *
127
+ * @returns true if command should proceed, false to skip (never happens — RO can only DELAY)
128
+ */
129
+ export async function resourceOptimizerPreAction(commandName) {
130
+ const start = Date.now();
131
+ try {
132
+ // Start background refresh if not running
133
+ ensureBackgroundRefresh();
134
+ // Fast capture (<1ms)
135
+ const state = captureFastState(_fullStateCache);
136
+ // Get RO decision (<1ms for rules, <5ms with model)
137
+ const ro = await getOrCreateRO();
138
+ const guidance = ro.decide(state, commandName);
139
+ // Store for postAction
140
+ commandState.set(commandName, {
141
+ beforeState: state,
142
+ guidance,
143
+ startTime: Date.now(),
144
+ });
145
+ const elapsed = Date.now() - start;
146
+ if (elapsed > 10) {
147
+ // Log if we exceeded budget (shouldn't happen)
148
+ console.error(` [ro-middleware] preAction took ${elapsed}ms (budget: 5ms)`);
149
+ }
150
+ return guidance;
151
+ }
152
+ catch {
153
+ // Never fail the command for RO issues
154
+ return {
155
+ action: "passthrough",
156
+ delay_ms: 0,
157
+ reason: "RO middleware error — passthrough",
158
+ confidence: 1.0,
159
+ source: "passthrough",
160
+ };
161
+ }
162
+ }
163
+ /**
164
+ * postAction hook — runs after every CLI command.
165
+ * Records the transition and flushes to disk.
166
+ */
167
+ export async function resourceOptimizerPostAction(commandName, projectRoot) {
168
+ try {
169
+ const cmdState = commandState.get(commandName);
170
+ if (!cmdState)
171
+ return;
172
+ commandState.delete(commandName);
173
+ // Fast capture of post-state
174
+ const afterState = captureFastState(_fullStateCache);
175
+ // Record transition in RO
176
+ const ro = await getOrCreateRO();
177
+ ro.recordTransition(cmdState.beforeState, commandName, afterState, cmdState.guidance.action);
178
+ // Flush to disk (non-blocking)
179
+ const record = {
180
+ ts: new Date().toISOString(),
181
+ command: commandName,
182
+ action: cmdState.guidance.action,
183
+ delay_ms: cmdState.guidance.delay_ms,
184
+ confidence: cmdState.guidance.confidence,
185
+ source: cmdState.guidance.source,
186
+ reason: cmdState.guidance.reason,
187
+ duration_ms: Date.now() - cmdState.startTime,
188
+ cpu_before: cmdState.beforeState.cpu_usage_percent,
189
+ mem_before_mb: cmdState.beforeState.memory_usage_mb,
190
+ load_before: cmdState.beforeState.system_load_1m,
191
+ cpu_after: afterState.cpu_usage_percent,
192
+ mem_after_mb: afterState.memory_usage_mb,
193
+ load_after: afterState.system_load_1m,
194
+ thermal: afterState.thermal_state,
195
+ };
196
+ flushTransition(projectRoot, record);
197
+ }
198
+ catch {
199
+ // Never fail — this is telemetry
200
+ }
201
+ }
202
+ /**
203
+ * Apply guidance — delay if needed.
204
+ * Returns immediately for passthrough/monitor/boost.
205
+ */
206
+ export async function applyGuidance(guidance) {
207
+ if (guidance.delay_ms > 0) {
208
+ await new Promise(resolve => setTimeout(resolve, guidance.delay_ms));
209
+ }
210
+ }
211
+ /**
212
+ * Get RO stats for dashboard/status display
213
+ */
214
+ export function getResourceOptimizerStats(projectRoot) {
215
+ const transitions = countTransitions(projectRoot);
216
+ return {
217
+ transitions,
218
+ trainingReady: transitions >= 5000,
219
+ lastAction: null, // Could parse last line of JSONL
220
+ };
221
+ }
222
+ //# sourceMappingURL=resource-optimizer-middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-optimizer-middleware.js","sourceRoot":"","sources":["../../src/lib/resource-optimizer-middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,+EAA+E;AAC/E,wDAAwD;AACxD,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,gBAAgB,CAAC,KAAgC;IACxD,MAAM,QAAQ,GAAG,QAAQ,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;IAC3C,MAAM,SAAS,GAAG,OAAO,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;IAC3C,MAAM,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAA;IACtC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,OAAO;QACL,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3E,eAAe,EAAE,SAAS;QAC1B,mBAAmB,EAAE,SAAS;QAC9B,aAAa,EAAE,KAAK,EAAE,aAAa,IAAI,SAAS;QAChD,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;QACvB,YAAY,EAAE,KAAK,EAAE,YAAY,IAAI,EAAE;QACvC,aAAa,EAAE,KAAK,EAAE,aAAa;QACnC,gBAAgB,EAAE,KAAK,EAAE,gBAAgB;QACzC,UAAU,EAAE,KAAK,EAAE,UAAU,IAAI,MAAM;QACvC,eAAe,EAAE,KAAK,EAAE,eAAe,IAAI,CAAC;QAC5C,oBAAoB,EAAE,KAAK,EAAE,oBAAoB,IAAI,CAAC;QACtD,UAAU,EAAE,KAAK,EAAE,UAAU,IAAI,KAAK;QACtC,oBAAoB,EAAE,KAAK,EAAE,oBAAoB;QACjD,mBAAmB,EAAE,KAAK,EAAE,mBAAmB;QAC/C,uBAAuB,EAAE,KAAK,EAAE,uBAAuB,IAAI,GAAG;QAC9D,kBAAkB,EAAE,KAAK,EAAE,kBAAkB;QAC7C,qBAAqB,EAAE,KAAK,EAAE,qBAAqB,IAAI,IAAI;QAC3D,sBAAsB,EAAE,KAAK,EAAE,sBAAsB,IAAI,EAAE;KAC5D,CAAA;AACH,CAAC;AAED,iEAAiE;AACjE,SAAS,mBAAmB,CAAC,MAAc;IACzC,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC,MAAM,CAAA;IAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAA;AAC9C,CAAC;AAwBD,SAAS,iBAAiB,CAAC,WAAmB;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;IAClD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACrC,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,EAAE,4BAA4B,CAAC,CAAA;AAChD,CAAC;AAED,SAAS,eAAe,CAAC,WAAmB,EAAE,MAAwB;IACpE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAA;QAC3C,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAA;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;IACjD,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAA;QAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAA;QAC/B,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC3C,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAA;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAA;IACV,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,IAAI,eAAe,GAA8B,IAAI,CAAA;AACrD,IAAI,QAAQ,GAA0C,IAAI,CAAA;AAC1D,IAAI,WAAW,GAA+D,IAAI,CAAA;AAElF,KAAK,UAAU,gBAAgB;IAC7B,IAAI,CAAC;QACH,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACxE,MAAM,KAAK,GAAG,IAAI,kBAAkB,EAAE,CAAA;QACtC,eAAe,GAAG,MAAM,KAAK,CAAC,mBAAmB,EAAE,CAAA;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;IAC3D,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB;IAC9B,IAAI,QAAQ;QAAE,OAAM;IACpB,4CAA4C;IAC5C,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QAC1B,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACpC,CAAC,EAAE,IAAI,CAAC,CAAA;IACR,gDAAgD;IAChD,IAAI,QAAQ,CAAC,KAAK;QAAE,QAAQ,CAAC,KAAK,EAAE,CAAA;IACpC,wBAAwB;IACxB,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;AACpC,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;QACxE,WAAW,GAAG,oBAAoB,EAAE,CAAA;IACtC,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,+EAA+E;AAC/E,+DAA+D;AAC/D,+EAA+E;AAE/E,2DAA2D;AAC3D,MAAM,YAAY,GAAG,IAAI,GAAG,EAIxB,CAAA;AAEJ;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,WAAmB;IAClE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAExB,IAAI,CAAC;QACH,0CAA0C;QAC1C,uBAAuB,EAAE,CAAA;QAEzB,sBAAsB;QACtB,MAAM,KAAK,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAA;QAE/C,oDAAoD;QACpD,MAAM,EAAE,GAAG,MAAM,aAAa,EAAE,CAAA;QAChC,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QAE9C,uBAAuB;QACvB,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE;YAC5B,WAAW,EAAE,KAAK;YAClB,QAAQ;YACR,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;QAClC,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;YACjB,+CAA+C;YAC/C,OAAO,CAAC,KAAK,CAAC,oCAAoC,OAAO,kBAAkB,CAAC,CAAA;QAC9E,CAAC;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,uCAAuC;QACvC,OAAO;YACL,MAAM,EAAE,aAAa;YACrB,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,mCAAmC;YAC3C,UAAU,EAAE,GAAG;YACf,MAAM,EAAE,aAAa;SACtB,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,WAAmB,EACnB,WAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAC9C,IAAI,CAAC,QAAQ;YAAE,OAAM;QACrB,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAEhC,6BAA6B;QAC7B,MAAM,UAAU,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAA;QAEpD,0BAA0B;QAC1B,MAAM,EAAE,GAAG,MAAM,aAAa,EAAE,CAAA;QAChC,EAAE,CAAC,gBAAgB,CACjB,QAAQ,CAAC,WAAW,EACpB,WAAW,EACX,UAAU,EACV,QAAQ,CAAC,QAAQ,CAAC,MAAM,CACzB,CAAA;QAED,+BAA+B;QAC/B,MAAM,MAAM,GAAqB;YAC/B,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;YAChC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ;YACpC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU;YACxC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;YAChC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;YAChC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS;YAC5C,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,iBAAiB;YAClD,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC,eAAe;YACnD,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,cAAc;YAChD,SAAS,EAAE,UAAU,CAAC,iBAAiB;YACvC,YAAY,EAAE,UAAU,CAAC,eAAe;YACxC,UAAU,EAAE,UAAU,CAAC,cAAc;YACrC,OAAO,EAAE,UAAU,CAAC,aAAa;SAClC,CAAA;QACD,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAA0B;IAC5D,IAAI,QAAQ,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;IACtE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,WAAmB;IAK3D,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAA;IACjD,OAAO;QACL,WAAW;QACX,aAAa,EAAE,WAAW,IAAI,IAAI;QAClC,UAAU,EAAE,IAAI,EAAE,iCAAiC;KACpD,CAAA;AACH,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * ResourceOptimizer — Lightweight RL agent for system resource management
3
+ *
4
+ * Runs in the hot path of every CLI command (<5ms budget).
5
+ * Uses cached physical state + tiny GRU model (18K params) for temporal patterns.
6
+ * Falls back to rule-based policy when no model is trained.
7
+ *
8
+ * Authority: Can DELAY/THROTTLE but never CANCEL or REDIRECT actions.
9
+ * The InvariantMonitor has veto power above this.
10
+ *
11
+ * Cold start: Rules-only for first 7 days while collecting telemetry.
12
+ * Model takes over for scenarios it's confident on after 5K+ tuples.
13
+ *
14
+ * @purpose Real-time system resource management agent
15
+ * @spec knowledge/CASH-REVIEW-RESPONSES.md
16
+ */
17
+ import type { PhysicalWorldState } from "../types/physical-world-model.js";
18
+ export type ResourceAction = "passthrough" | "throttle" | "defer_background" | "gc_hint" | "conservation" | "boost" | "monitor";
19
+ export interface ResourceGuidance {
20
+ action: ResourceAction;
21
+ delay_ms: number;
22
+ reason: string;
23
+ confidence: number;
24
+ source: "model" | "rules" | "passthrough";
25
+ }
26
+ export interface ResourceOptimizerConfig {
27
+ /** Enable/disable the optimizer */
28
+ enabled: boolean;
29
+ /** Maximum decision latency in ms */
30
+ maxDecisionMs: number;
31
+ /** Minimum model confidence to override rules */
32
+ minModelConfidence: number;
33
+ /** Path to trained model weights (null = rules only) */
34
+ modelPath: string | null;
35
+ /** State cache refresh interval in ms */
36
+ stateCacheIntervalMs: number;
37
+ }
38
+ export declare class ResourceOptimizer {
39
+ private config;
40
+ private stateCache;
41
+ private stateCacheTimer;
42
+ private transitionBuffer;
43
+ private readonly MAX_BUFFER;
44
+ constructor(config?: Partial<ResourceOptimizerConfig>);
45
+ /**
46
+ * Make a resource management decision.
47
+ * Must complete in <5ms.
48
+ *
49
+ * @param state - Current physical world state (from cache)
50
+ * @param command - The command about to execute
51
+ * @returns Resource guidance (action + delay)
52
+ */
53
+ decide(state: PhysicalWorldState, command: string): ResourceGuidance;
54
+ /**
55
+ * Record a transition for training.
56
+ * Called AFTER command execution, non-blocking.
57
+ */
58
+ recordTransition(beforeState: PhysicalWorldState, command: string, afterState: PhysicalWorldState, actionTaken?: ResourceAction): void;
59
+ /** Get buffer size for training readiness check */
60
+ get bufferSize(): number;
61
+ /** Check if we have enough data to train */
62
+ get isTrainingReady(): boolean;
63
+ /** Export buffer for training pipeline */
64
+ exportBuffer(): typeof this.transitionBuffer;
65
+ /** Get current config */
66
+ getConfig(): ResourceOptimizerConfig;
67
+ /** Update config (e.g., enable/disable, change model path) */
68
+ updateConfig(updates: Partial<ResourceOptimizerConfig>): void;
69
+ }
70
+ export declare function getResourceOptimizer(config?: Partial<ResourceOptimizerConfig>): ResourceOptimizer;
71
+ //# sourceMappingURL=resource-optimizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-optimizer.d.ts","sourceRoot":"","sources":["../../src/lib/resource-optimizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAM1E,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,UAAU,GACV,kBAAkB,GAClB,SAAS,GACT,cAAc,GACd,OAAO,GACP,SAAS,CAAA;AAEb,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,cAAc,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,aAAa,CAAA;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAA;IACrB,iDAAiD;IACjD,kBAAkB,EAAE,MAAM,CAAA;IAC1B,wDAAwD;IACxD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,yCAAyC;IACzC,oBAAoB,EAAE,MAAM,CAAA;CAC7B;AA4ID,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,eAAe,CAA8C;IACrE,OAAO,CAAC,gBAAgB,CAMjB;IACP,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;gBAEvB,MAAM,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC;IAIrD;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,GAAG,gBAAgB;IAsBpE;;;OAGG;IACH,gBAAgB,CACd,WAAW,EAAE,kBAAkB,EAC/B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,kBAAkB,EAC9B,WAAW,GAAE,cAA8B,GAC1C,IAAI;IAeP,mDAAmD;IACnD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,4CAA4C;IAC5C,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,0CAA0C;IAC1C,YAAY,IAAI,OAAO,IAAI,CAAC,gBAAgB;IAI5C,yBAAyB;IACzB,SAAS,IAAI,uBAAuB;IAIpC,8DAA8D;IAC9D,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI;CAG9D;AAQD,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,iBAAiB,CAKjG"}