jfl 0.8.1 → 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 (247) 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/scripts/telemetry-dashboard.sh +44 -0
  237. package/scripts/test-planning-loop-e2e.ts +181 -0
  238. package/scripts/test-server-inference.ts +49 -0
  239. package/scripts/test-state-sensitivity.ts +32 -0
  240. package/scripts/train/v2/benchmark.py +661 -0
  241. package/scripts/train/v2/generate_balanced.py +439 -0
  242. package/scripts/train/v2/generate_hard_negatives.py +219 -0
  243. package/scripts/train/v2/infer.py +149 -36
  244. package/scripts/train/v2/infer_server.py +224 -0
  245. package/scripts/train/v2/online_train.py +576 -0
  246. package/scripts/train/v2/precompute.py +24 -6
  247. package/template/CLAUDE.md +74 -132
@@ -0,0 +1,537 @@
1
+ /**
2
+ * Planning Loop
3
+ *
4
+ * Connects PolicyHead (action selection) with DynamicsModel (outcome prediction)
5
+ * in a collaborative planning loop. This is the core decision-making pipeline
6
+ * for agent action selection.
7
+ *
8
+ * Flow (from Drew's architecture, section 8.5):
9
+ * 1. Capture current WorldState
10
+ * 2. PolicyHead proposes top-k actions
11
+ * 3. DynamicsModel simulates each action (rollout)
12
+ * 4. Score predicted outcomes, select best
13
+ * 5. Execute action
14
+ * 6. Observe actual outcome
15
+ * 7. Record transition (WM learns dynamics, PH learns action selection)
16
+ * 8. Check invariants (InvariantMonitor)
17
+ *
18
+ * Phase 1: Single-step rollouts (this implementation)
19
+ * Phase 2: Multi-step lookahead (future)
20
+ * Phase 3: Beam search with pruning (future)
21
+ *
22
+ * @purpose Orchestrate PolicyHead → DynamicsModel → InvariantMonitor planning loop
23
+ * @spec knowledge/DREW-RESPONSE-ANSWERS.md
24
+ * @decision drew-planning-loop-architecture
25
+ */
26
+ import { PolicyHeadInference } from "./policy-head.js";
27
+ import { createDynamicsModel } from "./dynamics-model.js";
28
+ import { WorldModelStore } from "./world-model-store.js";
29
+ import { captureWorldState, createAgentAction } from "./state-capture.js";
30
+ import { checkInvariants, hasCriticalViolations } from "./invariant-monitor.js";
31
+ import { worldStateToRLState, agentActionToRLAction } from "../types/world-model.js";
32
+ import { TrainingBuffer } from "./training-buffer.js";
33
+ const DEFAULT_CONFIG = {
34
+ topK: 5,
35
+ minConfidence: 0.1,
36
+ maxPlanningTimeMs: 5000,
37
+ checkInvariants: true,
38
+ recordTransitions: true,
39
+ writeTrainingTuples: true,
40
+ rolloutDepth: 1,
41
+ outcomeWeight: 0.7,
42
+ verbose: false,
43
+ };
44
+ // ============================================================================
45
+ // Action Type Mapping
46
+ // ============================================================================
47
+ /**
48
+ * Map from PolicyHead tool names (v2 domain.json) to AgentActionType
49
+ */
50
+ const PH_TO_AGENT_ACTION = {
51
+ // Core tool types from domain.json
52
+ "Read": "research",
53
+ "Edit": "fix",
54
+ "Write": "feature",
55
+ "Bash": "experiment",
56
+ "Grep": "research",
57
+ "Glob": "research",
58
+ // Semantic action types (all 12 from v2 domain.json)
59
+ "fix_bug": "fix",
60
+ "refactor_code": "refactor",
61
+ "add_feature": "feature",
62
+ "add_tests": "test",
63
+ "update_config": "config",
64
+ "run_experiment": "experiment",
65
+ "run_eval": "eval",
66
+ "update_docs": "research",
67
+ "optimize_performance": "refactor",
68
+ "add_monitoring": "config",
69
+ "security_hardening": "config",
70
+ "dependency_update": "config",
71
+ "data_pipeline": "experiment",
72
+ "skip": "skip",
73
+ };
74
+ /**
75
+ * Map from AgentActionType to PolicyHead tool name for reverse lookup
76
+ */
77
+ const AGENT_ACTION_TO_PH = {
78
+ "fix": "fix_bug",
79
+ "refactor": "refactor_code",
80
+ "feature": "add_feature",
81
+ "test": "add_tests",
82
+ "config": "update_config",
83
+ "experiment": "run_experiment",
84
+ "eval": "run_eval",
85
+ "research": "Read",
86
+ "skip": "skip",
87
+ };
88
+ // ============================================================================
89
+ // Planning Loop Class
90
+ // ============================================================================
91
+ export class PlanningLoop {
92
+ policyHead;
93
+ dynamicsModel;
94
+ store;
95
+ trainingBuffer;
96
+ config;
97
+ projectRoot;
98
+ constructor(projectRoot, config) {
99
+ this.projectRoot = projectRoot || process.cwd();
100
+ this.config = { ...DEFAULT_CONFIG, ...config };
101
+ this.policyHead = new PolicyHeadInference(this.projectRoot);
102
+ this.dynamicsModel = createDynamicsModel(this.projectRoot);
103
+ this.store = new WorldModelStore(this.projectRoot);
104
+ this.trainingBuffer = new TrainingBuffer(this.projectRoot);
105
+ }
106
+ /** Check if the planning loop has all required components */
107
+ get isReady() {
108
+ return this.policyHead.isLoaded;
109
+ }
110
+ /** Get PolicyHead version and stats */
111
+ get policyHeadStats() {
112
+ return {
113
+ version: this.policyHead.version,
114
+ stats: this.policyHead.stats,
115
+ isLoaded: this.policyHead.isLoaded,
116
+ };
117
+ }
118
+ // ==========================================================================
119
+ // Core Planning Loop
120
+ // ==========================================================================
121
+ /**
122
+ * Run the planning loop: propose → simulate → select
123
+ *
124
+ * This is the main entry point. Given an agent and goal, it:
125
+ * 1. Captures current state
126
+ * 2. Gets top-k action proposals from PolicyHead
127
+ * 3. Simulates each action via DynamicsModel
128
+ * 4. Checks invariants for each simulated outcome
129
+ * 5. Scores and selects the best action
130
+ */
131
+ async plan(agentId, goal) {
132
+ const startTime = Date.now();
133
+ // Step 1: Capture current state
134
+ let state;
135
+ try {
136
+ state = await captureWorldState(this.projectRoot, agentId);
137
+ }
138
+ catch (err) {
139
+ if (this.config.verbose) {
140
+ console.log(`[planning] State capture failed: ${err.message}, using minimal state`);
141
+ }
142
+ state = this.minimalState(agentId);
143
+ }
144
+ if (this.config.verbose) {
145
+ console.log(`[planning] Captured state for agent=${agentId}`);
146
+ console.log(`[planning] Active agents: ${state.systemState.activeAgents.join(", ")}`);
147
+ console.log(`[planning] Hub connections: ${state.systemState.hubConnections}`);
148
+ }
149
+ // Step 2: Get action proposals from PolicyHead
150
+ const rlState = worldStateToRLState(state);
151
+ let proposals;
152
+ if (this.policyHead.isLoaded && this.policyHead.version === 2) {
153
+ try {
154
+ if (this.config.verbose) {
155
+ const stateText = this.policyHead.formatStateText(rlState);
156
+ console.log(`[planning] PH v2 input: state=${stateText.slice(0, 80)}... goal=${goal.slice(0, 80)}`);
157
+ }
158
+ const selection = await this.policyHead.selectAction(rlState, goal);
159
+ proposals = [
160
+ { action: selection.action, confidence: selection.confidence },
161
+ ...selection.alternatives.slice(0, this.config.topK - 1),
162
+ ];
163
+ }
164
+ catch (err) {
165
+ if (this.config.verbose) {
166
+ console.log(`[planning] PolicyHead v2 selectAction failed: ${err.message}`);
167
+ }
168
+ proposals = this.fallbackProposals(agentId);
169
+ }
170
+ }
171
+ else if (this.policyHead.isLoaded) {
172
+ // v1: use rankActions with synthetic RLActions
173
+ proposals = this.fallbackProposals(agentId);
174
+ try {
175
+ const rlActions = proposals.map(p => this.proposalToRLAction(p.action, goal));
176
+ const ranked = await this.policyHead.rankActions(rlState, rlActions);
177
+ proposals = ranked.map(r => ({
178
+ action: AGENT_ACTION_TO_PH[r.action.type] || r.action.type,
179
+ confidence: Math.max(0, Math.min(1, r.predictedReward)),
180
+ }));
181
+ }
182
+ catch {
183
+ // Keep fallback proposals
184
+ }
185
+ }
186
+ else {
187
+ // No policy head — use heuristic proposals
188
+ proposals = this.fallbackProposals(agentId);
189
+ }
190
+ if (this.config.verbose) {
191
+ console.log(`[planning] Got ${proposals.length} proposals:`);
192
+ for (const p of proposals) {
193
+ console.log(` ${p.action} (confidence=${p.confidence.toFixed(3)})`);
194
+ }
195
+ }
196
+ // Step 3: Simulate each action via DynamicsModel
197
+ const evaluatedActions = [];
198
+ let rolloutsPerformed = 0;
199
+ for (const proposal of proposals) {
200
+ // Check timeout
201
+ if (Date.now() - startTime > this.config.maxPlanningTimeMs) {
202
+ if (this.config.verbose) {
203
+ console.log(`[planning] Timeout reached, stopping rollouts`);
204
+ }
205
+ break;
206
+ }
207
+ // Skip low-confidence actions
208
+ if (proposal.confidence < this.config.minConfidence) {
209
+ evaluatedActions.push({
210
+ action: createAgentAction(agentId, PH_TO_AGENT_ACTION[proposal.action] || "experiment", { goal }, proposal.confidence),
211
+ phConfidence: proposal.confidence,
212
+ prediction: { outcome: emptyOutcome(), confidence: 0, reasoning: "Below confidence threshold", source: "fallback" },
213
+ combinedScore: 0,
214
+ invariantViolations: [],
215
+ filtered: true,
216
+ filterReason: `Confidence ${proposal.confidence.toFixed(3)} below threshold ${this.config.minConfidence}`,
217
+ });
218
+ continue;
219
+ }
220
+ // Convert proposal to AgentAction
221
+ const actionType = PH_TO_AGENT_ACTION[proposal.action] || "experiment";
222
+ const agentAction = createAgentAction(agentId, actionType, { goal, phAction: proposal.action }, proposal.confidence);
223
+ // Run DynamicsModel prediction
224
+ let prediction;
225
+ try {
226
+ prediction = await this.dynamicsModel.predictOutcome(state, agentAction);
227
+ rolloutsPerformed++;
228
+ }
229
+ catch (err) {
230
+ if (this.config.verbose) {
231
+ console.log(`[planning] DynamicsModel failed for ${proposal.action}: ${err.message}`);
232
+ }
233
+ prediction = {
234
+ outcome: emptyOutcome(),
235
+ confidence: 0.3,
236
+ reasoning: `DynamicsModel prediction failed: ${err.message}`,
237
+ source: "fallback",
238
+ };
239
+ }
240
+ // Step 4: Check invariants on predicted outcome
241
+ let violations = [];
242
+ if (this.config.checkInvariants && prediction.outcome) {
243
+ // Create a hypothetical posterior state based on prediction
244
+ const hypotheticalState = this.applyPredictionToState(state, prediction);
245
+ const invariantResults = checkInvariants(hypotheticalState);
246
+ violations = invariantResults.map(v => `${v.invariantId}: ${v.description}`);
247
+ }
248
+ // Step 5: Score the action
249
+ const outcomeScore = this.scoreOutcome(prediction);
250
+ const combinedScore = outcomeScore * this.config.outcomeWeight +
251
+ proposal.confidence * (1 - this.config.outcomeWeight);
252
+ const filtered = violations.some(v => v.includes("critical"));
253
+ evaluatedActions.push({
254
+ action: agentAction,
255
+ phConfidence: proposal.confidence,
256
+ prediction,
257
+ combinedScore: filtered ? -1 : combinedScore,
258
+ invariantViolations: violations,
259
+ filtered,
260
+ filterReason: filtered ? `Critical invariant violation: ${violations[0]}` : undefined,
261
+ });
262
+ }
263
+ // Step 6: Select best action
264
+ const validActions = evaluatedActions
265
+ .filter(a => !a.filtered)
266
+ .sort((a, b) => b.combinedScore - a.combinedScore);
267
+ let selectedAction = validActions[0] || null;
268
+ // Step 6b: Re-check invariants at selection time (TOCTOU guard)
269
+ // TLC found that environment can change between IM check and execution.
270
+ // Re-verify critical state hasn't changed since step 4.
271
+ if (selectedAction && this.config.checkInvariants) {
272
+ try {
273
+ const currentState = await captureWorldState(this.projectRoot, agentId);
274
+ if (hasCriticalViolations(currentState)) {
275
+ if (this.config.verbose) {
276
+ console.log(`[planning] TOCTOU guard: critical violation detected after selection, aborting`);
277
+ }
278
+ selectedAction = null;
279
+ }
280
+ }
281
+ catch {
282
+ // State capture failed — proceed with selected action (best effort)
283
+ }
284
+ }
285
+ const planningTimeMs = Date.now() - startTime;
286
+ if (this.config.verbose) {
287
+ console.log(`[planning] Completed in ${planningTimeMs}ms, ${rolloutsPerformed} rollouts`);
288
+ if (selectedAction) {
289
+ console.log(`[planning] Selected: ${selectedAction.action.actionType} (score=${selectedAction.combinedScore.toFixed(3)})`);
290
+ }
291
+ else {
292
+ console.log(`[planning] No valid action selected`);
293
+ }
294
+ }
295
+ return {
296
+ selectedAction,
297
+ allActions: evaluatedActions,
298
+ state,
299
+ planningTimeMs,
300
+ completed: Date.now() - startTime <= this.config.maxPlanningTimeMs,
301
+ rolloutsPerformed,
302
+ noSelectionReason: selectedAction ? undefined : "All proposed actions were filtered or none available",
303
+ };
304
+ }
305
+ // ==========================================================================
306
+ // Post-Execution: Observe & Learn
307
+ // ==========================================================================
308
+ /**
309
+ * Record the actual outcome after an action was executed.
310
+ * Updates both World Model (dynamics learning) and PolicyHead (training buffer).
311
+ *
312
+ * Call this after the selected action has been executed and the outcome observed.
313
+ */
314
+ async recordOutcome(priorState, action, predictedOutcome) {
315
+ // Capture posterior state
316
+ const posteriorState = await captureWorldState(this.projectRoot, action.agentId);
317
+ // Compute actual outcome from state diff
318
+ const actualOutcome = this.computeActualOutcome(priorState, posteriorState);
319
+ // Compute prediction error
320
+ const predictedDelta = predictedOutcome.immediate.evalScoreChange ?? 0;
321
+ const actualDelta = actualOutcome.immediate.evalScoreChange ?? 0;
322
+ const predictionError = Math.abs(predictedDelta - actualDelta);
323
+ // Record transition for WM dynamics learning
324
+ let transition;
325
+ if (this.config.recordTransitions) {
326
+ transition = {
327
+ id: this.transitionId(priorState, action),
328
+ schemaVersion: 1,
329
+ priorState,
330
+ action,
331
+ posteriorState,
332
+ outcome: actualOutcome,
333
+ causalLinks: [],
334
+ invariantViolations: checkInvariants(posteriorState),
335
+ };
336
+ this.store.recordTransition(transition);
337
+ }
338
+ // Write training tuple for PH learning
339
+ if (this.config.writeTrainingTuples) {
340
+ const rlAction = agentActionToRLAction(action);
341
+ const rlState = worldStateToRLState(priorState);
342
+ this.trainingBuffer.append({
343
+ agent: action.agentId,
344
+ state: rlState,
345
+ action: rlAction,
346
+ reward: {
347
+ composite_delta: actualDelta,
348
+ dimension_deltas: {},
349
+ tests_added: 0,
350
+ quality_score: actualDelta > 0 ? 1 : 0,
351
+ improved: actualDelta > 0,
352
+ prediction_error: predictionError,
353
+ },
354
+ metadata: {
355
+ branch: "main",
356
+ source: "autoresearch",
357
+ prediction_id: transition?.id,
358
+ },
359
+ });
360
+ }
361
+ return {
362
+ action,
363
+ predictedOutcome,
364
+ actualOutcome,
365
+ priorState,
366
+ posteriorState,
367
+ predictionError,
368
+ transition,
369
+ };
370
+ }
371
+ // ==========================================================================
372
+ // Helpers
373
+ // ==========================================================================
374
+ /** Create a minimal WorldState when full capture fails.
375
+ * Uses realistic defaults (not zeros) so PolicyHead gets meaningful embeddings. */
376
+ minimalState(agentId) {
377
+ return {
378
+ timestamp: Date.now(),
379
+ agentId,
380
+ systemState: {
381
+ activeAgents: [agentId],
382
+ worktreeAllocation: {},
383
+ hubConnections: 1,
384
+ buildStatus: { default: "success" },
385
+ fileLocks: [],
386
+ pendingEvals: 0,
387
+ },
388
+ contextState: {
389
+ recentCommits: 3,
390
+ openPRs: 1,
391
+ failingTests: 0,
392
+ codeChurn: 5,
393
+ humanActivity: true,
394
+ },
395
+ agentState: {
396
+ lastEvalScore: 0.7,
397
+ rewardEMA: 0.01,
398
+ actionHistory: ["experiment"],
399
+ consecutiveFailures: 0,
400
+ },
401
+ };
402
+ }
403
+ /** Score an outcome prediction (higher = better) */
404
+ scoreOutcome(prediction) {
405
+ const outcome = prediction.outcome;
406
+ let score = 0.5; // baseline neutral
407
+ // Eval score change is the primary signal
408
+ if (outcome.immediate.evalScoreChange !== undefined) {
409
+ // Normalize to 0-1 range (assuming typical deltas are -0.1 to +0.1)
410
+ score = Math.max(0, Math.min(1, 0.5 + (outcome.immediate.evalScoreChange * 5)));
411
+ }
412
+ // Build success bonus
413
+ if (outcome.immediate.buildStatus === "success") {
414
+ score += 0.1;
415
+ }
416
+ else if (outcome.immediate.buildStatus === "failed") {
417
+ score -= 0.2;
418
+ }
419
+ // Test results bonus
420
+ if (outcome.immediate.testResults) {
421
+ const { passed, failed } = outcome.immediate.testResults;
422
+ if (passed > 0 && failed === 0) {
423
+ score += 0.05;
424
+ }
425
+ else if (failed > 0) {
426
+ score -= 0.1;
427
+ }
428
+ }
429
+ // Weight by prediction confidence
430
+ score *= prediction.confidence;
431
+ return Math.max(0, Math.min(1, score));
432
+ }
433
+ /** Create a hypothetical state by applying a prediction */
434
+ applyPredictionToState(state, prediction) {
435
+ const nextState = JSON.parse(JSON.stringify(state));
436
+ const outcome = prediction.outcome;
437
+ // Apply eval score change
438
+ if (outcome.immediate.evalScoreChange !== undefined) {
439
+ nextState.agentState.lastEvalScore += outcome.immediate.evalScoreChange;
440
+ }
441
+ // Apply build status
442
+ if (outcome.immediate.buildStatus) {
443
+ // Mark primary build
444
+ const repos = Object.keys(nextState.systemState.buildStatus);
445
+ if (repos.length > 0) {
446
+ nextState.systemState.buildStatus[repos[0]] = outcome.immediate.buildStatus;
447
+ }
448
+ }
449
+ // Apply test results
450
+ if (outcome.immediate.testResults) {
451
+ nextState.contextState.failingTests = outcome.immediate.testResults.failed;
452
+ }
453
+ nextState.timestamp = Date.now();
454
+ return nextState;
455
+ }
456
+ /** Compute actual outcome by diffing prior and posterior states */
457
+ computeActualOutcome(prior, posterior) {
458
+ const evalScoreChange = posterior.agentState.lastEvalScore - prior.agentState.lastEvalScore;
459
+ // Determine build status from posterior
460
+ const buildStatuses = Object.values(posterior.systemState.buildStatus);
461
+ const buildStatus = buildStatuses.includes("failed") ? "failed"
462
+ : buildStatuses.includes("success") ? "success"
463
+ : undefined;
464
+ // Check for new commits
465
+ const commitCreated = posterior.contextState.recentCommits > prior.contextState.recentCommits;
466
+ return {
467
+ timestamp: posterior.timestamp,
468
+ immediate: {
469
+ evalScoreChange,
470
+ buildStatus,
471
+ testResults: {
472
+ passed: Math.max(0, posterior.contextState.failingTests === 0 ? 1 : 0),
473
+ failed: posterior.contextState.failingTests,
474
+ },
475
+ commitCreated,
476
+ },
477
+ mediumTerm: {
478
+ downstreamEvalImpact: {},
479
+ humanInterventionRequired: false,
480
+ systemStability: posterior.systemState.hubConnections > 0 ? 0.8 : 0.2,
481
+ },
482
+ };
483
+ }
484
+ /** Generate fallback proposals when PolicyHead is unavailable */
485
+ fallbackProposals(agentId) {
486
+ // Heuristic: score based on agent's recent history and system state
487
+ return [
488
+ { action: "fix_bug", confidence: 0.6 },
489
+ { action: "add_tests", confidence: 0.5 },
490
+ { action: "refactor_code", confidence: 0.4 },
491
+ { action: "run_experiment", confidence: 0.35 },
492
+ { action: "add_feature", confidence: 0.3 },
493
+ ];
494
+ }
495
+ /** Convert a PH action name + goal to an RLAction */
496
+ proposalToRLAction(phAction, goal) {
497
+ const actionType = PH_TO_AGENT_ACTION[phAction] || "experiment";
498
+ const validTypes = ["fix", "refactor", "feature", "test", "config", "experiment"];
499
+ const rlType = validTypes.includes(actionType)
500
+ ? actionType
501
+ : "experiment";
502
+ return {
503
+ type: rlType,
504
+ description: `${phAction}: ${goal}`,
505
+ files_affected: [],
506
+ scope: "medium",
507
+ branch: "",
508
+ };
509
+ }
510
+ /** Generate a deterministic transition ID */
511
+ transitionId(state, action) {
512
+ const { createHash } = require("crypto");
513
+ const key = `${state.timestamp}-${action.agentId}-${action.actionType}-${Date.now()}`;
514
+ return createHash("sha256").update(key).digest("hex").slice(0, 16);
515
+ }
516
+ }
517
+ // ============================================================================
518
+ // Factory
519
+ // ============================================================================
520
+ /**
521
+ * Create a PlanningLoop with default configuration
522
+ */
523
+ export function createPlanningLoop(projectRoot, config) {
524
+ return new PlanningLoop(projectRoot, config);
525
+ }
526
+ // ============================================================================
527
+ // Helpers
528
+ // ============================================================================
529
+ function emptyOutcome() {
530
+ return {
531
+ timestamp: Date.now(),
532
+ immediate: {
533
+ commitCreated: false,
534
+ },
535
+ };
536
+ }
537
+ //# sourceMappingURL=planning-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning-loop.js","sourceRoot":"","sources":["../../src/lib/planning-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAWH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EAAiB,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACzE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AA4BrD,MAAM,cAAc,GAAmB;IACrC,IAAI,EAAE,CAAC;IACP,aAAa,EAAE,GAAG;IAClB,iBAAiB,EAAE,IAAI;IACvB,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,IAAI;IACvB,mBAAmB,EAAE,IAAI;IACzB,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,GAAG;IAClB,OAAO,EAAE,KAAK;CACf,CAAA;AA4DD,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,kBAAkB,GAAoC;IAC1D,mCAAmC;IACnC,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,qDAAqD;IACrD,SAAS,EAAE,KAAK;IAChB,eAAe,EAAE,UAAU;IAC3B,aAAa,EAAE,SAAS;IACxB,WAAW,EAAE,MAAM;IACnB,eAAe,EAAE,QAAQ;IACzB,gBAAgB,EAAE,YAAY;IAC9B,UAAU,EAAE,MAAM;IAClB,aAAa,EAAE,UAAU;IACzB,sBAAsB,EAAE,UAAU;IAClC,gBAAgB,EAAE,QAAQ;IAC1B,oBAAoB,EAAE,QAAQ;IAC9B,mBAAmB,EAAE,QAAQ;IAC7B,eAAe,EAAE,YAAY;IAC7B,MAAM,EAAE,MAAM;CACf,CAAA;AAED;;GAEG;AACH,MAAM,kBAAkB,GAA2B;IACjD,KAAK,EAAE,SAAS;IAChB,UAAU,EAAE,eAAe;IAC3B,SAAS,EAAE,aAAa;IACxB,MAAM,EAAE,WAAW;IACnB,QAAQ,EAAE,eAAe;IACzB,YAAY,EAAE,gBAAgB;IAC9B,MAAM,EAAE,UAAU;IAClB,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,MAAM;CACf,CAAA;AAED,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,MAAM,OAAO,YAAY;IACf,UAAU,CAAqB;IAC/B,aAAa,CAAe;IAC5B,KAAK,CAAiB;IACtB,cAAc,CAAgB;IAC9B,MAAM,CAAgB;IACtB,WAAW,CAAQ;IAE3B,YAAY,WAAoB,EAAE,MAAgC;QAChE,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;QAC/C,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAA;QAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC3D,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC1D,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAClD,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC5D,CAAC;IAED,6DAA6D;IAC7D,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAA;IACjC,CAAC;IAED,uCAAuC;IACvC,IAAI,eAAe;QACjB,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO;YAChC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;YAC5B,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ;SACnC,CAAA;IACH,CAAC;IAED,6EAA6E;IAC7E,qBAAqB;IACrB,6EAA6E;IAE7E;;;;;;;;;OASG;IACH,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,IAAY;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAE5B,gCAAgC;QAChC,IAAI,KAAiB,CAAA;QACrB,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QAC5D,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,oCAAoC,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAA;YACrF,CAAC;YACD,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,uCAAuC,OAAO,EAAE,CAAC,CAAA;YAC7D,OAAO,CAAC,GAAG,CAAC,6BAA6B,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACrF,OAAO,CAAC,GAAG,CAAC,+BAA+B,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAAA;QAChF,CAAC;QAED,+CAA+C;QAC/C,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;QAC1C,IAAI,SAAwD,CAAA;QAE5D,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC;gBACH,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACxB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;oBAC1D,OAAO,CAAC,GAAG,CAAC,iCAAiC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAC,EAAE,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,EAAC,EAAE,CAAC,EAAE,CAAC,CAAA;gBACnG,CAAC;gBACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBACnE,SAAS,GAAG;oBACV,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,UAAU,EAAE;oBAC9D,GAAG,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;iBACzD,CAAA;YACH,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACxB,OAAO,CAAC,GAAG,CAAC,iDAAiD,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;gBAC7E,CAAC;gBACD,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;YAC7C,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACpC,+CAA+C;YAC/C,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;YAC3C,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;gBAC7E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;gBACpE,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC3B,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI;oBAC1D,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC;iBACxD,CAAC,CAAC,CAAA;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,0BAA0B;YAC5B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,2CAA2C;YAC3C,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;QAC7C,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,kBAAkB,SAAS,CAAC,MAAM,aAAa,CAAC,CAAA;YAC5D,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,gBAAgB,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YACtE,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,MAAM,gBAAgB,GAAsB,EAAE,CAAA;QAC9C,IAAI,iBAAiB,GAAG,CAAC,CAAA;QAEzB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,gBAAgB;YAChB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAC3D,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACxB,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAA;gBAC9D,CAAC;gBACD,MAAK;YACP,CAAC;YAED,8BAA8B;YAC9B,IAAI,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;gBACpD,gBAAgB,CAAC,IAAI,CAAC;oBACpB,MAAM,EAAE,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,YAAY,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC;oBACtH,YAAY,EAAE,QAAQ,CAAC,UAAU;oBACjC,UAAU,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,4BAA4B,EAAE,MAAM,EAAE,UAAU,EAAE;oBACnH,aAAa,EAAE,CAAC;oBAChB,mBAAmB,EAAE,EAAE;oBACvB,QAAQ,EAAE,IAAI;oBACd,YAAY,EAAE,cAAc,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;iBAC1G,CAAC,CAAA;gBACF,SAAQ;YACV,CAAC;YAED,kCAAkC;YAClC,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,YAAY,CAAA;YACtE,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;YAEpH,+BAA+B;YAC/B,IAAI,UAA4B,CAAA;YAChC,IAAI,CAAC;gBACH,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;gBACxE,iBAAiB,EAAE,CAAA;YACrB,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACxB,OAAO,CAAC,GAAG,CAAC,uCAAuC,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;gBACvF,CAAC;gBACD,UAAU,GAAG;oBACX,OAAO,EAAE,YAAY,EAAE;oBACvB,UAAU,EAAE,GAAG;oBACf,SAAS,EAAE,oCAAoC,GAAG,CAAC,OAAO,EAAE;oBAC5D,MAAM,EAAE,UAAU;iBACnB,CAAA;YACH,CAAC;YAED,gDAAgD;YAChD,IAAI,UAAU,GAAa,EAAE,CAAA;YAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACtD,4DAA4D;gBAC5D,MAAM,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;gBACxE,MAAM,gBAAgB,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAA;gBAC3D,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;YAC9E,CAAC;YAED,2BAA2B;YAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;YAClD,MAAM,aAAa,GACjB,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa;gBACxC,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;YAEvD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAA;YAE7D,gBAAgB,CAAC,IAAI,CAAC;gBACpB,MAAM,EAAE,WAAW;gBACnB,YAAY,EAAE,QAAQ,CAAC,UAAU;gBACjC,UAAU;gBACV,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa;gBAC5C,mBAAmB,EAAE,UAAU;gBAC/B,QAAQ;gBACR,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,iCAAiC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;aACtF,CAAC,CAAA;QACJ,CAAC;QAED,6BAA6B;QAC7B,MAAM,YAAY,GAAG,gBAAgB;aAClC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;aACxB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,CAAA;QAEpD,IAAI,cAAc,GAA2B,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;QAEpE,gEAAgE;QAChE,wEAAwE;QACxE,wDAAwD;QACxD,IAAI,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAClD,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;gBACvE,IAAI,qBAAqB,CAAC,YAAY,CAAC,EAAE,CAAC;oBACxC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;wBACxB,OAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAA;oBAC/F,CAAC;oBACD,cAAc,GAAG,IAAI,CAAA;gBACvB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,oEAAoE;YACtE,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;QAE7C,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,2BAA2B,cAAc,OAAO,iBAAiB,WAAW,CAAC,CAAA;YACzF,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,wBAAwB,cAAc,CAAC,MAAM,CAAC,UAAU,WAAW,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YAC5H,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAA;YACpD,CAAC;QACH,CAAC;QAED,OAAO;YACL,cAAc;YACd,UAAU,EAAE,gBAAgB;YAC5B,KAAK;YACL,cAAc;YACd,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAClE,iBAAiB;YACjB,iBAAiB,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,sDAAsD;SACvG,CAAA;IACH,CAAC;IAED,6EAA6E;IAC7E,kCAAkC;IAClC,6EAA6E;IAE7E;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CACjB,UAAsB,EACtB,MAAmB,EACnB,gBAA8B;QAE9B,0BAA0B;QAC1B,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QAEhF,yCAAyC;QACzC,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;QAE3E,2BAA2B;QAC3B,MAAM,cAAc,GAAG,gBAAgB,CAAC,SAAS,CAAC,eAAe,IAAI,CAAC,CAAA;QACtE,MAAM,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC,eAAe,IAAI,CAAC,CAAA;QAChE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,WAAW,CAAC,CAAA;QAE9D,6CAA6C;QAC7C,IAAI,UAAuC,CAAA;QAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAClC,UAAU,GAAG;gBACX,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC;gBACzC,aAAa,EAAE,CAAC;gBAChB,UAAU;gBACV,MAAM;gBACN,cAAc;gBACd,OAAO,EAAE,aAAa;gBACtB,WAAW,EAAE,EAAE;gBACf,mBAAmB,EAAE,eAAe,CAAC,cAAc,CAAC;aACrD,CAAA;YACD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;QACzC,CAAC;QAED,uCAAuC;QACvC,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;YAC9C,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;YAC/C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;gBACzB,KAAK,EAAE,MAAM,CAAC,OAAO;gBACrB,KAAK,EAAE,OAAO;gBACd,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE;oBACN,eAAe,EAAE,WAAW;oBAC5B,gBAAgB,EAAE,EAAE;oBACpB,WAAW,EAAE,CAAC;oBACd,aAAa,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtC,QAAQ,EAAE,WAAW,GAAG,CAAC;oBACzB,gBAAgB,EAAE,eAAe;iBAClC;gBACD,QAAQ,EAAE;oBACR,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,cAAc;oBACtB,aAAa,EAAE,UAAU,EAAE,EAAE;iBAC9B;aACF,CAAC,CAAA;QACJ,CAAC;QAED,OAAO;YACL,MAAM;YACN,gBAAgB;YAChB,aAAa;YACb,UAAU;YACV,cAAc;YACd,eAAe;YACf,UAAU;SACX,CAAA;IACH,CAAC;IAED,6EAA6E;IAC7E,UAAU;IACV,6EAA6E;IAE7E;wFACoF;IAC5E,YAAY,CAAC,OAAe;QAClC,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,OAAO;YACP,WAAW,EAAE;gBACX,YAAY,EAAE,CAAC,OAAO,CAAC;gBACvB,kBAAkB,EAAE,EAAE;gBACtB,cAAc,EAAE,CAAC;gBACjB,WAAW,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;gBACnC,SAAS,EAAE,EAAE;gBACb,YAAY,EAAE,CAAC;aAChB;YACD,YAAY,EAAE;gBACZ,aAAa,EAAE,CAAC;gBAChB,OAAO,EAAE,CAAC;gBACV,YAAY,EAAE,CAAC;gBACf,SAAS,EAAE,CAAC;gBACZ,aAAa,EAAE,IAAI;aACpB;YACD,UAAU,EAAE;gBACV,aAAa,EAAE,GAAG;gBAClB,SAAS,EAAE,IAAI;gBACf,aAAa,EAAE,CAAC,YAAY,CAAC;gBAC7B,mBAAmB,EAAE,CAAC;aACvB;SACF,CAAA;IACH,CAAC;IAED,oDAAoD;IAC5C,YAAY,CAAC,UAA4B;QAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAA;QAClC,IAAI,KAAK,GAAG,GAAG,CAAA,CAAC,mBAAmB;QAEnC,0CAA0C;QAC1C,IAAI,OAAO,CAAC,SAAS,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACpD,oEAAoE;YACpE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAC5B,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,GAAG,CAAC,CAAC,CAC9C,CAAC,CAAA;QACJ,CAAC;QAED,sBAAsB;QACtB,IAAI,OAAO,CAAC,SAAS,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAChD,KAAK,IAAI,GAAG,CAAA;QACd,CAAC;aAAM,IAAI,OAAO,CAAC,SAAS,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YACtD,KAAK,IAAI,GAAG,CAAA;QACd,CAAC;QAED,qBAAqB;QACrB,IAAI,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YAClC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAA;YACxD,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,KAAK,IAAI,IAAI,CAAA;YACf,CAAC;iBAAM,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,KAAK,IAAI,GAAG,CAAA;YACd,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,KAAK,IAAI,UAAU,CAAC,UAAU,CAAA;QAE9B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;IACxC,CAAC;IAED,2DAA2D;IACnD,sBAAsB,CAC5B,KAAiB,EACjB,UAA4B;QAE5B,MAAM,SAAS,GAAe,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;QAC/D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAA;QAElC,0BAA0B;QAC1B,IAAI,OAAO,CAAC,SAAS,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACpD,SAAS,CAAC,UAAU,CAAC,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC,eAAe,CAAA;QACzE,CAAC;QAED,qBAAqB;QACrB,IAAI,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YAClC,qBAAqB;YACrB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;YAC5D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAA;YAC7E,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YAClC,SAAS,CAAC,YAAY,CAAC,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAA;QAC5E,CAAC;QAED,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAChC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,mEAAmE;IAC3D,oBAAoB,CAC1B,KAAiB,EACjB,SAAqB;QAErB,MAAM,eAAe,GAAG,SAAS,CAAC,UAAU,CAAC,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAA;QAE3F,wCAAwC;QACxC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;QACtE,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAiB;YACtE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAkB;gBACxD,CAAC,CAAC,SAAS,CAAA;QAEb,wBAAwB;QACxB,MAAM,aAAa,GAAG,SAAS,CAAC,YAAY,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,aAAa,CAAA;QAE7F,OAAO;YACL,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,SAAS,EAAE;gBACT,eAAe;gBACf,WAAW;gBACX,WAAW,EAAE;oBACX,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtE,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,YAAY;iBAC5C;gBACD,aAAa;aACd;YACD,UAAU,EAAE;gBACV,oBAAoB,EAAE,EAAE;gBACxB,yBAAyB,EAAE,KAAK;gBAChC,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;aACtE;SACF,CAAA;IACH,CAAC;IAED,iEAAiE;IACzD,iBAAiB,CAAC,OAAe;QACvC,oEAAoE;QACpE,OAAO;YACL,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE;YACtC,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE;YACxC,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,EAAE;YAC5C,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI,EAAE;YAC9C,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,EAAE;SAC3C,CAAA;IACH,CAAC;IAED,qDAAqD;IAC7C,kBAAkB,CAAC,QAAgB,EAAE,IAAY;QACvD,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAA;QAC/D,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAU,CAAA;QAC1F,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,UAAiB,CAAC;YACnD,CAAC,CAAE,UAA+B;YAClC,CAAC,CAAC,YAAY,CAAA;QAEhB,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,GAAG,QAAQ,KAAK,IAAI,EAAE;YACnC,cAAc,EAAE,EAAE;YAClB,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,EAAE;SACX,CAAA;IACH,CAAC;IAED,6CAA6C;IACrC,YAAY,CAAC,KAAiB,EAAE,MAAmB;QACzD,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;QACxC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;QACrF,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACpE,CAAC;CACF;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,WAAoB,EACpB,MAAgC;IAEhC,OAAO,IAAI,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;AAC9C,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,SAAS,YAAY;IACnB,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,SAAS,EAAE;YACT,aAAa,EAAE,KAAK;SACrB;KACF,CAAA;AACH,CAAC"}
@@ -16,6 +16,9 @@ export declare class PolicyHeadInference {
16
16
  private embedCache;
17
17
  private projectRoot;
18
18
  private useV2;
19
+ private serverProcess;
20
+ private serverReady;
21
+ private serverBuffer;
19
22
  constructor(projectRoot?: string);
20
23
  get isLoaded(): boolean;
21
24
  get version(): number;
@@ -29,12 +32,22 @@ export declare class PolicyHeadInference {
29
32
  formatStateText(state: RLState): string;
30
33
  formatActionText(action: RLAction): string;
31
34
  selectAction(state: RLState, goal: string): Promise<ActionSelection>;
35
+ /**
36
+ * Start a persistent inference server process.
37
+ * Keeps model + cache warm in memory for fast repeated inference.
38
+ */
39
+ startServer(): Promise<void>;
40
+ /** Send inference request to persistent server */
41
+ private serverInfer;
42
+ /** Stop the persistent inference server */
43
+ stopServer(): void;
32
44
  predictReward(state: RLState, action: RLAction): Promise<number>;
33
45
  rankActions(state: RLState, actions: RLAction[]): Promise<Array<{
34
46
  action: RLAction;
35
47
  predictedReward: number;
36
48
  rank: number;
37
49
  }>>;
50
+ private findCacheDir;
38
51
  private findPython;
39
52
  }
40
53
  //# sourceMappingURL=policy-head.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"policy-head.d.ts","sourceRoot":"","sources":["../../src/lib/policy-head.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAwC7D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC5D;AAkCD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,KAAK,CAAiB;gBAElB,WAAW,CAAC,EAAE,MAAM;IAqBhC,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,KAAK,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAetH;IAEK,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA0BhD,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAevC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM;IAUpC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAuCpE,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAiChE,WAAW,CACf,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,QAAQ,EAAE,GAClB,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,QAAQ,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAmC9E,OAAO,CAAC,UAAU;CASnB"}
1
+ {"version":3,"file":"policy-head.d.ts","sourceRoot":"","sources":["../../src/lib/policy-head.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAwC7D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC5D;AAkCD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,aAAa,CAAgE;IACrF,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,YAAY,CAAa;gBAErB,WAAW,CAAC,EAAE,MAAM;IAqBhC,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,KAAK,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAetH;IAEK,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA0BhD,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAevC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM;IAUpC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAuD1E;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAqElC,kDAAkD;YACpC,WAAW;IAsDzB,2CAA2C;IAC3C,UAAU,IAAI,IAAI;IAeZ,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAiChE,WAAW,CACf,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,QAAQ,EAAE,GAClB,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,QAAQ,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAmC9E,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,UAAU;CASnB"}