mova_agent 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/README.md +94 -0
  2. package/build/scripts/check_docs.d.ts +2 -0
  3. package/build/scripts/check_docs.d.ts.map +1 -0
  4. package/build/scripts/check_docs.js +48 -0
  5. package/build/scripts/check_docs.js.map +1 -0
  6. package/build/scripts/check_schema_paths.d.ts +3 -0
  7. package/build/scripts/check_schema_paths.d.ts.map +1 -0
  8. package/build/scripts/check_schema_paths.js +15 -0
  9. package/build/scripts/check_schema_paths.js.map +1 -0
  10. package/build/scripts/check_schema_paths_dist.d.ts +3 -0
  11. package/build/scripts/check_schema_paths_dist.d.ts.map +1 -0
  12. package/build/scripts/check_schema_paths_dist.js +16 -0
  13. package/build/scripts/check_schema_paths_dist.js.map +1 -0
  14. package/build/scripts/check_structure.d.ts +2 -0
  15. package/build/scripts/check_structure.d.ts.map +1 -0
  16. package/build/scripts/check_structure.js +59 -0
  17. package/build/scripts/check_structure.js.map +1 -0
  18. package/build/scripts/debug_validate.d.ts +3 -0
  19. package/build/scripts/debug_validate.d.ts.map +1 -0
  20. package/build/scripts/debug_validate.js +39 -0
  21. package/build/scripts/debug_validate.js.map +1 -0
  22. package/build/scripts/debug_validate2.d.ts +3 -0
  23. package/build/scripts/debug_validate2.d.ts.map +1 -0
  24. package/build/scripts/debug_validate2.js +18 -0
  25. package/build/scripts/debug_validate2.js.map +1 -0
  26. package/build/scripts/debug_validate_runtime.d.ts +3 -0
  27. package/build/scripts/debug_validate_runtime.d.ts.map +1 -0
  28. package/build/scripts/debug_validate_runtime.js +39 -0
  29. package/build/scripts/debug_validate_runtime.js.map +1 -0
  30. package/build/scripts/dump_ajv_schemas.d.ts +2 -0
  31. package/build/scripts/dump_ajv_schemas.d.ts.map +1 -0
  32. package/build/scripts/dump_ajv_schemas.js +22 -0
  33. package/build/scripts/dump_ajv_schemas.js.map +1 -0
  34. package/build/scripts/dump_resolved_schema.d.ts +3 -0
  35. package/build/scripts/dump_resolved_schema.d.ts.map +1 -0
  36. package/build/scripts/dump_resolved_schema.js +22 -0
  37. package/build/scripts/dump_resolved_schema.js.map +1 -0
  38. package/build/scripts/gen_types.d.ts +2 -0
  39. package/build/scripts/gen_types.d.ts.map +1 -0
  40. package/build/scripts/gen_types.js +133 -0
  41. package/build/scripts/gen_types.js.map +1 -0
  42. package/build/scripts/inspect_validation.d.ts +3 -0
  43. package/build/scripts/inspect_validation.d.ts.map +1 -0
  44. package/build/scripts/inspect_validation.js +36 -0
  45. package/build/scripts/inspect_validation.js.map +1 -0
  46. package/build/scripts/legacy/check_errors.d.ts +3 -0
  47. package/build/scripts/legacy/check_errors.d.ts.map +1 -0
  48. package/build/scripts/legacy/check_errors.js +14 -0
  49. package/build/scripts/legacy/check_errors.js.map +1 -0
  50. package/build/scripts/legacy/compile_test.d.ts +5 -0
  51. package/build/scripts/legacy/compile_test.d.ts.map +1 -0
  52. package/build/scripts/legacy/compile_test.js +25 -0
  53. package/build/scripts/legacy/compile_test.js.map +1 -0
  54. package/build/scripts/legacy/debug_neg.d.ts +6 -0
  55. package/build/scripts/legacy/debug_neg.d.ts.map +1 -0
  56. package/build/scripts/legacy/debug_neg.js +230 -0
  57. package/build/scripts/legacy/debug_neg.js.map +1 -0
  58. package/build/scripts/legacy/debug_quality_pos.d.ts +5 -0
  59. package/build/scripts/legacy/debug_quality_pos.d.ts.map +1 -0
  60. package/build/scripts/legacy/debug_quality_pos.js +195 -0
  61. package/build/scripts/legacy/debug_quality_pos.js.map +1 -0
  62. package/build/scripts/legacy/debug_test.d.ts +1 -0
  63. package/build/scripts/legacy/debug_test.d.ts.map +1 -0
  64. package/build/scripts/legacy/debug_test.js +51 -0
  65. package/build/scripts/legacy/debug_test.js.map +1 -0
  66. package/build/scripts/legacy/hello_test.d.ts +1 -0
  67. package/build/scripts/legacy/hello_test.d.ts.map +1 -0
  68. package/build/scripts/legacy/hello_test.js +3 -0
  69. package/build/scripts/legacy/hello_test.js.map +1 -0
  70. package/build/scripts/legacy/import_test.d.ts +2 -0
  71. package/build/scripts/legacy/import_test.d.ts.map +1 -0
  72. package/build/scripts/legacy/import_test.js +4 -0
  73. package/build/scripts/legacy/import_test.js.map +1 -0
  74. package/build/scripts/legacy/quality_neg.d.ts +6 -0
  75. package/build/scripts/legacy/quality_neg.d.ts.map +1 -0
  76. package/build/scripts/legacy/quality_neg.js +362 -0
  77. package/build/scripts/legacy/quality_neg.js.map +1 -0
  78. package/build/scripts/legacy/quality_pos.d.ts +7 -0
  79. package/build/scripts/legacy/quality_pos.d.ts.map +1 -0
  80. package/build/scripts/legacy/quality_pos.js +345 -0
  81. package/build/scripts/legacy/quality_pos.js.map +1 -0
  82. package/build/scripts/legacy/simple_test.d.ts +2 -0
  83. package/build/scripts/legacy/simple_test.d.ts.map +1 -0
  84. package/build/scripts/legacy/simple_test.js +4 -0
  85. package/build/scripts/legacy/simple_test.js.map +1 -0
  86. package/build/scripts/legacy/test.d.ts +1 -0
  87. package/build/scripts/legacy/test.d.ts.map +1 -0
  88. package/build/scripts/legacy/test.js +3 -0
  89. package/build/scripts/legacy/test.js.map +1 -0
  90. package/build/scripts/legacy/test_additional_props.d.ts +6 -0
  91. package/build/scripts/legacy/test_additional_props.d.ts.map +1 -0
  92. package/build/scripts/legacy/test_additional_props.js +45 -0
  93. package/build/scripts/legacy/test_additional_props.js.map +1 -0
  94. package/build/scripts/legacy/test_ajv_validation.d.ts +2 -0
  95. package/build/scripts/legacy/test_ajv_validation.d.ts.map +1 -0
  96. package/build/scripts/legacy/test_ajv_validation.js +35 -0
  97. package/build/scripts/legacy/test_ajv_validation.js.map +1 -0
  98. package/build/scripts/legacy/test_build.d.ts +2 -0
  99. package/build/scripts/legacy/test_build.d.ts.map +1 -0
  100. package/build/scripts/legacy/test_build.js +14 -0
  101. package/build/scripts/legacy/test_build.js.map +1 -0
  102. package/build/scripts/legacy/test_direct.d.ts +3 -0
  103. package/build/scripts/legacy/test_direct.d.ts.map +1 -0
  104. package/build/scripts/legacy/test_direct.js +24 -0
  105. package/build/scripts/legacy/test_direct.js.map +1 -0
  106. package/build/scripts/legacy/test_import.d.ts +2 -0
  107. package/build/scripts/legacy/test_import.d.ts.map +1 -0
  108. package/build/scripts/legacy/test_import.js +7 -0
  109. package/build/scripts/legacy/test_import.js.map +1 -0
  110. package/build/scripts/legacy/test_mova_schemas.d.ts +2 -0
  111. package/build/scripts/legacy/test_mova_schemas.d.ts.map +1 -0
  112. package/build/scripts/legacy/test_mova_schemas.js +37 -0
  113. package/build/scripts/legacy/test_mova_schemas.js.map +1 -0
  114. package/build/scripts/legacy/test_scenario_integration.d.ts +13 -0
  115. package/build/scripts/legacy/test_scenario_integration.d.ts.map +1 -0
  116. package/build/scripts/legacy/test_scenario_integration.js +156 -0
  117. package/build/scripts/legacy/test_scenario_integration.js.map +1 -0
  118. package/build/scripts/legacy/test_schemas.d.ts +2 -0
  119. package/build/scripts/legacy/test_schemas.d.ts.map +1 -0
  120. package/build/scripts/legacy/test_schemas.js +48 -0
  121. package/build/scripts/legacy/test_schemas.js.map +1 -0
  122. package/build/scripts/legacy/test_schemas_simple.d.ts +2 -0
  123. package/build/scripts/legacy/test_schemas_simple.d.ts.map +1 -0
  124. package/build/scripts/legacy/test_schemas_simple.js +36 -0
  125. package/build/scripts/legacy/test_schemas_simple.js.map +1 -0
  126. package/build/scripts/legacy/test_simple.d.ts +4 -0
  127. package/build/scripts/legacy/test_simple.d.ts.map +1 -0
  128. package/build/scripts/legacy/test_simple.js +17 -0
  129. package/build/scripts/legacy/test_simple.js.map +1 -0
  130. package/build/scripts/legacy/test_warnings.d.ts +6 -0
  131. package/build/scripts/legacy/test_warnings.d.ts.map +1 -0
  132. package/build/scripts/legacy/test_warnings.js +48 -0
  133. package/build/scripts/legacy/test_warnings.js.map +1 -0
  134. package/build/scripts/legacy/very_simple_test.d.ts +1 -0
  135. package/build/scripts/legacy/very_simple_test.d.ts.map +1 -0
  136. package/build/scripts/legacy/very_simple_test.js +3 -0
  137. package/build/scripts/legacy/very_simple_test.js.map +1 -0
  138. package/build/scripts/merge_and_validate.d.ts +6 -0
  139. package/build/scripts/merge_and_validate.d.ts.map +1 -0
  140. package/build/scripts/merge_and_validate.js +53 -0
  141. package/build/scripts/merge_and_validate.js.map +1 -0
  142. package/build/src/ajv/ajv_loader.d.ts +47 -0
  143. package/build/src/ajv/ajv_loader.d.ts.map +1 -0
  144. package/build/src/ajv/ajv_loader.js +274 -0
  145. package/build/src/ajv/ajv_loader.js.map +1 -0
  146. package/build/src/ajv/schema_registry.d.ts +19 -0
  147. package/build/src/ajv/schema_registry.d.ts.map +1 -0
  148. package/build/src/ajv/schema_registry.js +121 -0
  149. package/build/src/ajv/schema_registry.js.map +1 -0
  150. package/build/src/drivers/__tests__/registry.test.d.ts +2 -0
  151. package/build/src/drivers/__tests__/registry.test.d.ts.map +1 -0
  152. package/build/src/drivers/__tests__/registry.test.js +100 -0
  153. package/build/src/drivers/__tests__/registry.test.js.map +1 -0
  154. package/build/src/drivers/httpDriver.d.ts +3 -0
  155. package/build/src/drivers/httpDriver.d.ts.map +1 -0
  156. package/build/src/drivers/httpDriver.js +76 -0
  157. package/build/src/drivers/httpDriver.js.map +1 -0
  158. package/build/src/drivers/index.d.ts +20 -0
  159. package/build/src/drivers/index.d.ts.map +1 -0
  160. package/build/src/drivers/index.js +33 -0
  161. package/build/src/drivers/index.js.map +1 -0
  162. package/build/src/drivers/restrictedShellDriver.d.ts +12 -0
  163. package/build/src/drivers/restrictedShellDriver.d.ts.map +1 -0
  164. package/build/src/drivers/restrictedShellDriver.js +88 -0
  165. package/build/src/drivers/restrictedShellDriver.js.map +1 -0
  166. package/build/src/episodes/__tests__/episode_writer_atomic.test.d.ts +2 -0
  167. package/build/src/episodes/__tests__/episode_writer_atomic.test.d.ts.map +1 -0
  168. package/build/src/episodes/__tests__/episode_writer_atomic.test.js +86 -0
  169. package/build/src/episodes/__tests__/episode_writer_atomic.test.js.map +1 -0
  170. package/build/src/episodes/episode_writer.d.ts +100 -0
  171. package/build/src/episodes/episode_writer.d.ts.map +1 -0
  172. package/build/src/episodes/episode_writer.js +503 -0
  173. package/build/src/episodes/episode_writer.js.map +1 -0
  174. package/build/src/episodes/episode_writer_atomic.d.ts +10 -0
  175. package/build/src/episodes/episode_writer_atomic.d.ts.map +1 -0
  176. package/build/src/episodes/episode_writer_atomic.js +46 -0
  177. package/build/src/episodes/episode_writer_atomic.js.map +1 -0
  178. package/build/src/evidence/evidence_writer.d.ts +16 -0
  179. package/build/src/evidence/evidence_writer.d.ts.map +1 -0
  180. package/build/src/evidence/evidence_writer.js +78 -0
  181. package/build/src/evidence/evidence_writer.js.map +1 -0
  182. package/build/src/handlers/registry.d.ts +20 -0
  183. package/build/src/handlers/registry.d.ts.map +1 -0
  184. package/build/src/handlers/registry.js +38 -0
  185. package/build/src/handlers/registry.js.map +1 -0
  186. package/build/src/interpreter/interpreter.d.ts +90 -0
  187. package/build/src/interpreter/interpreter.d.ts.map +1 -0
  188. package/build/src/interpreter/interpreter.js +732 -0
  189. package/build/src/interpreter/interpreter.js.map +1 -0
  190. package/build/src/interpreter/interpreter_with_budget.d.ts +92 -0
  191. package/build/src/interpreter/interpreter_with_budget.d.ts.map +1 -0
  192. package/build/src/interpreter/interpreter_with_budget.js +678 -0
  193. package/build/src/interpreter/interpreter_with_budget.js.map +1 -0
  194. package/build/src/logging/logger.d.ts +83 -0
  195. package/build/src/logging/logger.d.ts.map +1 -0
  196. package/build/src/logging/logger.js +226 -0
  197. package/build/src/logging/logger.js.map +1 -0
  198. package/build/src/policy/policy_engine.d.ts +116 -0
  199. package/build/src/policy/policy_engine.d.ts.map +1 -0
  200. package/build/src/policy/policy_engine.js +296 -0
  201. package/build/src/policy/policy_engine.js.map +1 -0
  202. package/build/src/skills/skills_layer.d.ts +94 -0
  203. package/build/src/skills/skills_layer.d.ts.map +1 -0
  204. package/build/src/skills/skills_layer.js +405 -0
  205. package/build/src/skills/skills_layer.js.map +1 -0
  206. package/build/src/telemetry/token_budget_enforcer.d.ts +113 -0
  207. package/build/src/telemetry/token_budget_enforcer.d.ts.map +1 -0
  208. package/build/src/telemetry/token_budget_enforcer.js +253 -0
  209. package/build/src/telemetry/token_budget_enforcer.js.map +1 -0
  210. package/build/src/telemetry/token_budget_loader.d.ts +29 -0
  211. package/build/src/telemetry/token_budget_loader.d.ts.map +1 -0
  212. package/build/src/telemetry/token_budget_loader.js +112 -0
  213. package/build/src/telemetry/token_budget_loader.js.map +1 -0
  214. package/build/src/telemetry/token_meter.d.ts +65 -0
  215. package/build/src/telemetry/token_meter.d.ts.map +1 -0
  216. package/build/src/telemetry/token_meter.js +153 -0
  217. package/build/src/telemetry/token_meter.js.map +1 -0
  218. package/build/src/ux/cli_interface.d.ts +85 -0
  219. package/build/src/ux/cli_interface.d.ts.map +1 -0
  220. package/build/src/ux/cli_interface.js +651 -0
  221. package/build/src/ux/cli_interface.js.map +1 -0
  222. package/build/test/drivers/registry.test.d.ts +2 -0
  223. package/build/test/drivers/registry.test.d.ts.map +1 -0
  224. package/build/test/drivers/registry.test.js +100 -0
  225. package/build/test/drivers/registry.test.js.map +1 -0
  226. package/build/test/episodes/episode_writer_atomic.test.d.ts +2 -0
  227. package/build/test/episodes/episode_writer_atomic.test.d.ts.map +1 -0
  228. package/build/test/episodes/episode_writer_atomic.test.js +86 -0
  229. package/build/test/episodes/episode_writer_atomic.test.js.map +1 -0
  230. package/build/tests/ajv/check_schemas.d.ts +4 -0
  231. package/build/tests/ajv/check_schemas.d.ts.map +1 -0
  232. package/build/tests/ajv/check_schemas.js +27 -0
  233. package/build/tests/ajv/check_schemas.js.map +1 -0
  234. package/build/tests/ajv/final_test.d.ts +2 -0
  235. package/build/tests/ajv/final_test.d.ts.map +1 -0
  236. package/build/tests/ajv/final_test.js +42 -0
  237. package/build/tests/ajv/final_test.js.map +1 -0
  238. package/build/tests/ajv/simple_test.d.ts +2 -0
  239. package/build/tests/ajv/simple_test.d.ts.map +1 -0
  240. package/build/tests/ajv/simple_test.js +40 -0
  241. package/build/tests/ajv/simple_test.js.map +1 -0
  242. package/build/tests/ajv/test_schema_loading.d.ts +2 -0
  243. package/build/tests/ajv/test_schema_loading.d.ts.map +1 -0
  244. package/build/tests/ajv/test_schema_loading.js +39 -0
  245. package/build/tests/ajv/test_schema_loading.js.map +1 -0
  246. package/build/tools/mova-agent.d.ts +2 -0
  247. package/build/tools/mova-agent.d.ts.map +1 -0
  248. package/build/tools/mova-agent.js +15 -0
  249. package/build/tools/mova-agent.js.map +1 -0
  250. package/package.json +63 -0
  251. package/src/ajv/ajv_loader.ts +311 -0
  252. package/src/ajv/schema_registry.ts +92 -0
  253. package/src/drivers/httpDriver.ts +90 -0
  254. package/src/drivers/index.ts +48 -0
  255. package/src/drivers/restrictedShellDriver.ts +68 -0
  256. package/src/episodes/episode_writer.ts +675 -0
  257. package/src/episodes/episode_writer_atomic.ts +44 -0
  258. package/src/evidence/evidence_writer.ts +74 -0
  259. package/src/handlers/registry.ts +53 -0
  260. package/src/interpreter/interpreter.ts +1009 -0
  261. package/src/interpreter/interpreter_with_budget.ts +923 -0
  262. package/src/logging/logger.ts +269 -0
  263. package/src/policy/policy_engine.ts +395 -0
  264. package/src/skills/skills_layer.ts +510 -0
  265. package/src/telemetry/token_budget_enforcer.ts +338 -0
  266. package/src/telemetry/token_budget_loader.ts +133 -0
  267. package/src/telemetry/token_meter.ts +185 -0
  268. package/src/types/generated/ds.connector_core_v1.d.ts +116 -0
  269. package/src/types/generated/ds.instruction_profile_core_v1.d.ts +141 -0
  270. package/src/types/generated/ds.mova4_core_catalog_v1.d.ts +80 -0
  271. package/src/types/generated/ds.mova_agent_run_summary_v1.d.ts +120 -0
  272. package/src/types/generated/ds.mova_agent_step_v1.d.ts +53 -0
  273. package/src/types/generated/ds.mova_agent_tool_pool_v1.d.ts +152 -0
  274. package/src/types/generated/ds.mova_agent_validation_report_v1.d.ts +43 -0
  275. package/src/types/generated/ds.mova_episode_core_v1.d.ts +56 -0
  276. package/src/types/generated/ds.mova_schema_core_v1.d.ts +49 -0
  277. package/src/types/generated/ds.mova_token_budget_contract_v0.d.ts +140 -0
  278. package/src/types/generated/ds.runtime_binding_core_v1.d.ts +112 -0
  279. package/src/types/generated/ds.security_event_episode_core_v1.d.ts +138 -0
  280. package/src/types/generated/ds.ui_text_bundle_core_v1.d.ts +118 -0
  281. package/src/types/generated/env.instruction_profile_publish_v1.d.ts +159 -0
  282. package/src/types/generated/env.mova4_core_catalog_publish_v1.d.ts +25 -0
  283. package/src/types/generated/env.mova_agent_plan_v1.d.ts +40 -0
  284. package/src/types/generated/env.mova_agent_request_v1.d.ts +43 -0
  285. package/src/types/generated/env.security_event_store_v1.d.ts +191 -0
  286. package/src/types/generated/index.d.ts +25 -0
  287. package/src/ux/cli_interface.ts +719 -0
@@ -0,0 +1,405 @@
1
+ "use strict";
2
+ /**
3
+ * Phase 5: Skills (planner/repair/explain)
4
+ *
5
+ * This phase implements the skills layer that provides higher-level
6
+ * capabilities built on top of the core interpreter.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ExplanationService = exports.RepairService = exports.Planner = exports.SkillsLayer = void 0;
10
+ class Planner {
11
+ /**
12
+ * Creates a plan based on a goal and available resources
13
+ */
14
+ async createPlan(request) {
15
+ // This is a simplified planner that creates a basic plan
16
+ // In a real implementation, this would use more sophisticated planning algorithms
17
+ const plan = {
18
+ id: `plan_${Date.now()}`,
19
+ payload: {
20
+ steps: [],
21
+ },
22
+ signature: null,
23
+ };
24
+ // More comprehensive pattern matching
25
+ const lowerGoal = request.goal.toLowerCase();
26
+ if (lowerGoal.includes('get data from api') ||
27
+ lowerGoal.includes('fetch from api') ||
28
+ lowerGoal.includes('retrieve from api')) {
29
+ plan.payload.steps = [
30
+ {
31
+ id: 'fetch-data',
32
+ verb: 'http',
33
+ connector_id: 'http_connector_1',
34
+ input: {
35
+ url: 'https://api.example.com/data',
36
+ method: 'GET',
37
+ },
38
+ tool_binding: {
39
+ driver_kind: 'http',
40
+ destination_allowlist: ['https://api.example.com'],
41
+ limits: {
42
+ timeout_ms: 5000,
43
+ max_data_size: 102400,
44
+ },
45
+ },
46
+ },
47
+ {
48
+ id: 'parse-response',
49
+ verb: 'noop',
50
+ connector_id: 'noop_connector_1',
51
+ input: {
52
+ raw_response: '{{outputs.fetch-data}}',
53
+ },
54
+ tool_binding: {
55
+ driver_kind: 'noop',
56
+ limits: {
57
+ timeout_ms: 1000,
58
+ max_data_size: 10240,
59
+ },
60
+ },
61
+ },
62
+ ];
63
+ }
64
+ else if (lowerGoal.includes('process data') || lowerGoal.includes('transform data')) {
65
+ plan.payload.steps = [
66
+ {
67
+ id: 'load-data',
68
+ verb: 'noop',
69
+ connector_id: 'noop_connector_1',
70
+ input: {
71
+ source: 'input_data',
72
+ },
73
+ tool_binding: {
74
+ driver_kind: 'noop',
75
+ limits: {
76
+ timeout_ms: 1000,
77
+ max_data_size: 10240,
78
+ },
79
+ },
80
+ },
81
+ {
82
+ id: 'transform-data',
83
+ verb: 'noop',
84
+ connector_id: 'noop_connector_2',
85
+ input: {
86
+ data: '{{outputs.load-data}}',
87
+ transformation: 'uppercase',
88
+ },
89
+ tool_binding: {
90
+ driver_kind: 'noop',
91
+ limits: {
92
+ timeout_ms: 2000,
93
+ max_data_size: 10240,
94
+ },
95
+ },
96
+ },
97
+ {
98
+ id: 'save-result',
99
+ verb: 'noop',
100
+ connector_id: 'noop_connector_3',
101
+ input: {
102
+ data: '{{outputs.transform-data}}',
103
+ destination: 'output_location',
104
+ },
105
+ tool_binding: {
106
+ driver_kind: 'noop',
107
+ limits: {
108
+ timeout_ms: 1000,
109
+ max_data_size: 10240,
110
+ },
111
+ },
112
+ },
113
+ ];
114
+ }
115
+ else if (lowerGoal.includes('weather') || lowerGoal.includes('temperature')) {
116
+ plan.payload.steps = [
117
+ {
118
+ id: 'fetch-weather',
119
+ verb: 'http',
120
+ connector_id: 'http_connector_1',
121
+ input: {
122
+ url: 'https://api.weather.com/v1/current',
123
+ method: 'GET',
124
+ headers: {
125
+ Authorization: 'Bearer {{API_KEY}}',
126
+ },
127
+ },
128
+ tool_binding: {
129
+ driver_kind: 'http',
130
+ destination_allowlist: ['https://api.weather.com'],
131
+ limits: {
132
+ timeout_ms: 5000,
133
+ max_data_size: 102400,
134
+ },
135
+ },
136
+ },
137
+ {
138
+ id: 'extract-temperature',
139
+ verb: 'noop',
140
+ connector_id: 'noop_connector_1',
141
+ input: {
142
+ weather_data: '{{outputs.fetch-weather}}',
143
+ path: '$.current.temperature',
144
+ },
145
+ tool_binding: {
146
+ driver_kind: 'noop',
147
+ limits: {
148
+ timeout_ms: 1000,
149
+ max_data_size: 10240,
150
+ },
151
+ },
152
+ },
153
+ {
154
+ id: 'store-temperature',
155
+ verb: 'noop',
156
+ connector_id: 'noop_connector_2',
157
+ input: {
158
+ temperature: '{{outputs.extract-temperature}}',
159
+ storage_key: 'current_temperature',
160
+ },
161
+ tool_binding: {
162
+ driver_kind: 'noop',
163
+ limits: {
164
+ timeout_ms: 1000,
165
+ max_data_size: 10240,
166
+ },
167
+ },
168
+ },
169
+ ];
170
+ }
171
+ else {
172
+ // Default plan with basic noop operations
173
+ plan.payload.steps = [
174
+ {
175
+ id: 'default-action',
176
+ verb: 'noop',
177
+ connector_id: 'noop_connector_1',
178
+ input: {
179
+ message: `Processing request: ${request.goal}`,
180
+ },
181
+ tool_binding: {
182
+ driver_kind: 'noop',
183
+ limits: {
184
+ timeout_ms: 1000,
185
+ max_data_size: 10240,
186
+ },
187
+ },
188
+ },
189
+ ];
190
+ }
191
+ return {
192
+ plan,
193
+ confidence: 0.8,
194
+ reasoning: 'Pattern matching used to generate appropriate plan',
195
+ };
196
+ }
197
+ }
198
+ exports.Planner = Planner;
199
+ class RepairService {
200
+ /**
201
+ * Attempts to repair a failed plan by identifying and correcting issues
202
+ */
203
+ async repairPlan(request) {
204
+ const repairedPlan = JSON.parse(JSON.stringify(request.failed_plan)); // Deep copy
205
+ // Example repair strategies
206
+ const recommendedActions = [];
207
+ // If the error mentions timeout, increase timeout in binding
208
+ if (request.error_details.toLowerCase().includes('timeout')) {
209
+ for (const step of repairedPlan.payload.steps) {
210
+ if (step.tool_binding && step.tool_binding.limits) {
211
+ // Increase timeout by 50%
212
+ step.tool_binding.limits.timeout_ms = Math.round(step.tool_binding.limits.timeout_ms * 1.5);
213
+ }
214
+ }
215
+ recommendedActions.push('Increased timeout limits for steps');
216
+ }
217
+ // If the error mentions invalid destination, check for allowlist issues
218
+ if (request.error_details.toLowerCase().includes('destination not allowlisted')) {
219
+ // This would typically involve adding the destination to allowlist
220
+ // after appropriate checks, but for safety, we'll recommend manual review
221
+ recommendedActions.push('Destination allowlist issue detected - requires manual verification');
222
+ }
223
+ return {
224
+ repaired_plan: repairedPlan,
225
+ success_probability: 0.7,
226
+ recommended_actions: recommendedActions,
227
+ };
228
+ }
229
+ }
230
+ exports.RepairService = RepairService;
231
+ class ExplanationService {
232
+ /**
233
+ * Provides explanations about plans, executions, and their results
234
+ */
235
+ async explain(request) {
236
+ let explanation = '';
237
+ const facts = [];
238
+ if (request.query.toLowerCase().includes('fail') ||
239
+ request.query.toLowerCase().includes('error')) {
240
+ // Explain why a step might have failed
241
+ if (request.execution_results) {
242
+ const error = request.execution_results.error || request.execution_results.message;
243
+ if (error && error.toLowerCase().includes('timeout')) {
244
+ explanation =
245
+ 'The operation failed due to a timeout. The request took longer than the allowed time limit.';
246
+ facts.push('Failure cause: Timeout exceeded');
247
+ facts.push('Recommendation: Increase timeout limits or optimize the operation');
248
+ }
249
+ else if (error &&
250
+ (error.toLowerCase().includes('forbidden') || error.toLowerCase().includes('denied'))) {
251
+ explanation =
252
+ 'The operation failed due to security policy violation. The requested action is not allowed by the current security configuration.';
253
+ facts.push('Failure cause: Security policy violation');
254
+ facts.push('Recommendation: Check allowlists and permissions');
255
+ }
256
+ else if (error &&
257
+ (error.toLowerCase().includes('not found') || error.toLowerCase().includes('404'))) {
258
+ explanation = 'The operation failed because the requested resource was not found.';
259
+ facts.push('Failure cause: Resource not found');
260
+ facts.push('Recommendation: Verify the resource identifier or availability');
261
+ }
262
+ else {
263
+ explanation = `The operation failed with an error: ${error || 'Unknown error occurred'}`;
264
+ facts.push(`Error details: ${error || 'No specific error details'}`);
265
+ }
266
+ }
267
+ else {
268
+ explanation =
269
+ 'The failure appears to be related to policy violations or resource constraints during execution.';
270
+ facts.push('Possible causes: Security policies, resource limits, or unavailable resources');
271
+ }
272
+ }
273
+ else if (request.query.toLowerCase().includes('do') ||
274
+ request.query.toLowerCase().includes('purpose') ||
275
+ request.query.toLowerCase().includes('what')) {
276
+ // Explain what the plan does
277
+ explanation = 'This plan executes a sequence of steps to achieve the specified goal. ';
278
+ if (request.plan && request.plan.payload && request.plan.payload.steps) {
279
+ const steps = request.plan.payload.steps;
280
+ explanation += `It includes ${steps.length} steps: `;
281
+ const verbs = steps
282
+ .map((step) => step.verb || 'unknown')
283
+ .filter((v) => v !== 'unknown');
284
+ explanation += verbs.join(', ') + '.';
285
+ facts.push(`Plan has ${steps.length} steps`);
286
+ facts.push(`Operations: ${verbs.join(', ')}`);
287
+ // Additional details about steps
288
+ for (let i = 0; i < steps.length; i++) {
289
+ const step = steps[i];
290
+ if (step.input) {
291
+ facts.push(`Step ${i + 1} (${step.verb}): processes input data`);
292
+ }
293
+ if (step.tool_binding && step.tool_binding.driver_kind) {
294
+ facts.push(`Step ${i + 1}: uses ${step.tool_binding.driver_kind} driver`);
295
+ }
296
+ if (step.tool_binding && step.tool_binding.destination_allowlist) {
297
+ facts.push(`Step ${i + 1}: restricted to destinations: ${step.tool_binding.destination_allowlist.join(', ')}`);
298
+ }
299
+ }
300
+ // Security aspects
301
+ if (steps.some((step) => step.tool_binding && step.tool_binding.destination_allowlist)) {
302
+ facts.push('Security: Destination allowlists applied to restrict network access');
303
+ }
304
+ }
305
+ else {
306
+ explanation += 'The plan structure is not available or invalid.';
307
+ facts.push('Plan structure: Invalid or unavailable');
308
+ }
309
+ }
310
+ else if (request.query.toLowerCase().includes('security') ||
311
+ request.query.toLowerCase().includes('safe')) {
312
+ explanation =
313
+ 'This system follows strict security policies with a deny-by-default approach. All operations are validated against security rules before execution.';
314
+ facts.push('Security model: Deny-by-default');
315
+ facts.push('All HTTP requests require destination allowlists');
316
+ facts.push('Resource limits enforced: timeouts and data sizes');
317
+ facts.push('Sensitive data is automatically redacted');
318
+ }
319
+ else {
320
+ // Generic explanation
321
+ explanation =
322
+ 'This system processes requests through a series of validated steps, ensuring security and compliance at each stage.';
323
+ facts.push('System type: Deterministic interpreter (not LLM-based)');
324
+ facts.push('Security: Enforced policies with allowlist approach');
325
+ facts.push('Processing: Sequential step execution with validation');
326
+ }
327
+ return {
328
+ explanation,
329
+ supporting_facts: facts,
330
+ confidence: 0.9,
331
+ };
332
+ }
333
+ /**
334
+ * Provides explanations about episodes and their evidence
335
+ */
336
+ async explainEpisode(episode, evidence) {
337
+ // This is a more comprehensive explanation service
338
+ // Analyze the episode and evidence to provide detailed explanations
339
+ const stepsCount = episode.plan?.payload?.steps ? episode.plan.payload.steps.length : 0;
340
+ const evidenceTypes = [...new Set(evidence.map((e) => e.type))];
341
+ const errorEvidence = evidence.filter((e) => e.type.includes('error'));
342
+ let explanation = `Episode ${episode.id} was processed with ${evidence.length} pieces of evidence of types: [${evidenceTypes.join(', ')}].\n`;
343
+ explanation += `The request was: "${episode.request}". `;
344
+ explanation += `The plan contained ${stepsCount} steps. `;
345
+ if (errorEvidence.length > 0) {
346
+ explanation += `There were ${errorEvidence.length} error evidences indicating potential issues. `;
347
+ }
348
+ else {
349
+ explanation += `No errors were detected during processing. `;
350
+ }
351
+ // Add information about the plan execution
352
+ if (episode.plan && episode.plan.payload && episode.plan.payload.steps) {
353
+ const successfulSteps = episode.plan.payload.steps.filter((step) => evidence.some((e) => e.related_step_id === step.id && !e.type.includes('error'))).length;
354
+ explanation += `Successfully executed ${successfulSteps}/${stepsCount} steps. `;
355
+ }
356
+ // Add security-related information
357
+ const policyChecks = evidence.filter((e) => e.type === 'security.policy_check');
358
+ if (policyChecks.length > 0) {
359
+ explanation += `Security policy was checked ${policyChecks.length} times during execution. `;
360
+ }
361
+ // Add dry-run information
362
+ const dryRunEvidence = evidence.filter((e) => e.type === 'execution.dry_run_marker');
363
+ if (dryRunEvidence.length > 0) {
364
+ explanation += 'Execution was performed in dry-run mode. ';
365
+ }
366
+ return {
367
+ explanation,
368
+ confidence: 0.85,
369
+ supporting_facts: evidence.map((e) => ({
370
+ id: e.id,
371
+ type: e.type,
372
+ summary: e.summary,
373
+ })),
374
+ };
375
+ }
376
+ }
377
+ exports.ExplanationService = ExplanationService;
378
+ // skills/skills_layer.ts - Main skills interface
379
+ class SkillsLayer {
380
+ planner;
381
+ repairService;
382
+ explanationService;
383
+ constructor() {
384
+ this.planner = new Planner();
385
+ this.repairService = new RepairService();
386
+ this.explanationService = new ExplanationService();
387
+ }
388
+ /**
389
+ * Entry point for skill-based operations
390
+ */
391
+ async executeSkill(skill, params) {
392
+ switch (skill) {
393
+ case 'plan':
394
+ return await this.planner.createPlan(params);
395
+ case 'repair':
396
+ return await this.repairService.repairPlan(params);
397
+ case 'explain':
398
+ return await this.explanationService.explain(params);
399
+ default:
400
+ throw new Error(`Unknown skill: ${skill}`);
401
+ }
402
+ }
403
+ }
404
+ exports.SkillsLayer = SkillsLayer;
405
+ //# sourceMappingURL=skills_layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills_layer.js","sourceRoot":"","sources":["../../../src/skills/skills_layer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Система проверки бюджета токенов для MOVA Agent
3
+ * Проверяет лимиты и применяет политику при превышении
4
+ */
5
+ import { TokenMeter, type TokenSummary } from './token_meter';
6
+ import type { SecurityEventEpisode } from '../episodes/episode_writer';
7
+ interface TokenBudgetLimits {
8
+ max_model_calls?: number;
9
+ max_input_tokens?: number;
10
+ max_output_tokens?: number;
11
+ max_total_tokens?: number;
12
+ max_output_tokens_per_call?: number;
13
+ max_total_cost_usd?: number;
14
+ max_tool_calls?: number;
15
+ max_tool_output_bytes_total?: number;
16
+ max_stdout_bytes?: number;
17
+ max_stderr_bytes?: number;
18
+ }
19
+ interface BudgetPolicy {
20
+ on_budget_exceeded: 'fail' | 'warn' | 'continue';
21
+ fail_fast?: boolean;
22
+ }
23
+ export interface TokenBudgetContract {
24
+ version: string;
25
+ limits: TokenBudgetLimits;
26
+ policy: BudgetPolicy;
27
+ applied_profile?: string;
28
+ profiles?: {
29
+ [key: string]: {
30
+ limits: TokenBudgetLimits;
31
+ policy: BudgetPolicy;
32
+ };
33
+ };
34
+ }
35
+ interface BudgetStatus {
36
+ exceeded: boolean;
37
+ violations: BudgetViolation[];
38
+ action: 'continue' | 'warn' | 'fail' | 'truncate_and_continue';
39
+ }
40
+ interface BudgetViolation {
41
+ type: string;
42
+ limit: number | string;
43
+ actual: number | string;
44
+ message: string;
45
+ }
46
+ export declare class TokenBudgetEnforcer {
47
+ private contract;
48
+ private tokenMeter;
49
+ private logger;
50
+ private modelCallCount;
51
+ private toolCallCount;
52
+ private toolOutputBytes;
53
+ constructor(contract: TokenBudgetContract, tokenMeter: TokenMeter);
54
+ /**
55
+ * Проверяет, можно ли выполнить вызов модели
56
+ */
57
+ checkModelCall(): BudgetStatus;
58
+ /**
59
+ * Проверяет, можно ли выполнить вызов инструмента
60
+ */
61
+ checkToolCall(): BudgetStatus;
62
+ /**
63
+ * Проверяет, можно ли добавить вывод инструмента
64
+ */
65
+ checkToolOutput(output: string): BudgetStatus;
66
+ /**
67
+ * Проверяет использование токенов после вызова модели
68
+ */
69
+ checkTokenUsage(usage: Partial<{
70
+ input_tokens: number;
71
+ output_tokens: number;
72
+ total_tokens: number;
73
+ cost_usd: number;
74
+ }>): BudgetStatus;
75
+ /**
76
+ * Обновляет внутренние счетчики после успешного вызова
77
+ */
78
+ recordSuccessfulModelCall(): void;
79
+ recordSuccessfulToolCall(output: string): void;
80
+ /**
81
+ * Обрабатывает статус нарушения бюджета в соответствии с политикой
82
+ */
83
+ private processStatus;
84
+ /**
85
+ * Создает эпизод нарушения бюджета
86
+ */
87
+ createBudgetViolationEpisode(violation: BudgetViolation, context: any): Partial<SecurityEventEpisode>;
88
+ /**
89
+ * Возвращает текущий статус бюджета
90
+ */
91
+ getStatus(): {
92
+ model_calls: number;
93
+ tool_calls: number;
94
+ tool_output_bytes: number;
95
+ token_usage: TokenSummary;
96
+ };
97
+ /**
98
+ * Возвращает краткую информацию о бюджете для включения в run_summary
99
+ */
100
+ getBudgetInfo(): {
101
+ contract_version: string;
102
+ policy: "fail" | "warn" | "continue";
103
+ limits: TokenBudgetLimits;
104
+ current_usage: {
105
+ model_calls: number;
106
+ tool_calls: number;
107
+ tool_output_bytes: number;
108
+ token_usage: TokenSummary;
109
+ };
110
+ };
111
+ }
112
+ export {};
113
+ //# sourceMappingURL=token_budget_enforcer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token_budget_enforcer.d.ts","sourceRoot":"","sources":["../../../src/telemetry/token_budget_enforcer.ts"],"names":[],"mappings":"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"}