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.
- package/README.md +94 -0
- package/build/scripts/check_docs.d.ts +2 -0
- package/build/scripts/check_docs.d.ts.map +1 -0
- package/build/scripts/check_docs.js +48 -0
- package/build/scripts/check_docs.js.map +1 -0
- package/build/scripts/check_schema_paths.d.ts +3 -0
- package/build/scripts/check_schema_paths.d.ts.map +1 -0
- package/build/scripts/check_schema_paths.js +15 -0
- package/build/scripts/check_schema_paths.js.map +1 -0
- package/build/scripts/check_schema_paths_dist.d.ts +3 -0
- package/build/scripts/check_schema_paths_dist.d.ts.map +1 -0
- package/build/scripts/check_schema_paths_dist.js +16 -0
- package/build/scripts/check_schema_paths_dist.js.map +1 -0
- package/build/scripts/check_structure.d.ts +2 -0
- package/build/scripts/check_structure.d.ts.map +1 -0
- package/build/scripts/check_structure.js +59 -0
- package/build/scripts/check_structure.js.map +1 -0
- package/build/scripts/debug_validate.d.ts +3 -0
- package/build/scripts/debug_validate.d.ts.map +1 -0
- package/build/scripts/debug_validate.js +39 -0
- package/build/scripts/debug_validate.js.map +1 -0
- package/build/scripts/debug_validate2.d.ts +3 -0
- package/build/scripts/debug_validate2.d.ts.map +1 -0
- package/build/scripts/debug_validate2.js +18 -0
- package/build/scripts/debug_validate2.js.map +1 -0
- package/build/scripts/debug_validate_runtime.d.ts +3 -0
- package/build/scripts/debug_validate_runtime.d.ts.map +1 -0
- package/build/scripts/debug_validate_runtime.js +39 -0
- package/build/scripts/debug_validate_runtime.js.map +1 -0
- package/build/scripts/dump_ajv_schemas.d.ts +2 -0
- package/build/scripts/dump_ajv_schemas.d.ts.map +1 -0
- package/build/scripts/dump_ajv_schemas.js +22 -0
- package/build/scripts/dump_ajv_schemas.js.map +1 -0
- package/build/scripts/dump_resolved_schema.d.ts +3 -0
- package/build/scripts/dump_resolved_schema.d.ts.map +1 -0
- package/build/scripts/dump_resolved_schema.js +22 -0
- package/build/scripts/dump_resolved_schema.js.map +1 -0
- package/build/scripts/gen_types.d.ts +2 -0
- package/build/scripts/gen_types.d.ts.map +1 -0
- package/build/scripts/gen_types.js +133 -0
- package/build/scripts/gen_types.js.map +1 -0
- package/build/scripts/inspect_validation.d.ts +3 -0
- package/build/scripts/inspect_validation.d.ts.map +1 -0
- package/build/scripts/inspect_validation.js +36 -0
- package/build/scripts/inspect_validation.js.map +1 -0
- package/build/scripts/legacy/check_errors.d.ts +3 -0
- package/build/scripts/legacy/check_errors.d.ts.map +1 -0
- package/build/scripts/legacy/check_errors.js +14 -0
- package/build/scripts/legacy/check_errors.js.map +1 -0
- package/build/scripts/legacy/compile_test.d.ts +5 -0
- package/build/scripts/legacy/compile_test.d.ts.map +1 -0
- package/build/scripts/legacy/compile_test.js +25 -0
- package/build/scripts/legacy/compile_test.js.map +1 -0
- package/build/scripts/legacy/debug_neg.d.ts +6 -0
- package/build/scripts/legacy/debug_neg.d.ts.map +1 -0
- package/build/scripts/legacy/debug_neg.js +230 -0
- package/build/scripts/legacy/debug_neg.js.map +1 -0
- package/build/scripts/legacy/debug_quality_pos.d.ts +5 -0
- package/build/scripts/legacy/debug_quality_pos.d.ts.map +1 -0
- package/build/scripts/legacy/debug_quality_pos.js +195 -0
- package/build/scripts/legacy/debug_quality_pos.js.map +1 -0
- package/build/scripts/legacy/debug_test.d.ts +1 -0
- package/build/scripts/legacy/debug_test.d.ts.map +1 -0
- package/build/scripts/legacy/debug_test.js +51 -0
- package/build/scripts/legacy/debug_test.js.map +1 -0
- package/build/scripts/legacy/hello_test.d.ts +1 -0
- package/build/scripts/legacy/hello_test.d.ts.map +1 -0
- package/build/scripts/legacy/hello_test.js +3 -0
- package/build/scripts/legacy/hello_test.js.map +1 -0
- package/build/scripts/legacy/import_test.d.ts +2 -0
- package/build/scripts/legacy/import_test.d.ts.map +1 -0
- package/build/scripts/legacy/import_test.js +4 -0
- package/build/scripts/legacy/import_test.js.map +1 -0
- package/build/scripts/legacy/quality_neg.d.ts +6 -0
- package/build/scripts/legacy/quality_neg.d.ts.map +1 -0
- package/build/scripts/legacy/quality_neg.js +362 -0
- package/build/scripts/legacy/quality_neg.js.map +1 -0
- package/build/scripts/legacy/quality_pos.d.ts +7 -0
- package/build/scripts/legacy/quality_pos.d.ts.map +1 -0
- package/build/scripts/legacy/quality_pos.js +345 -0
- package/build/scripts/legacy/quality_pos.js.map +1 -0
- package/build/scripts/legacy/simple_test.d.ts +2 -0
- package/build/scripts/legacy/simple_test.d.ts.map +1 -0
- package/build/scripts/legacy/simple_test.js +4 -0
- package/build/scripts/legacy/simple_test.js.map +1 -0
- package/build/scripts/legacy/test.d.ts +1 -0
- package/build/scripts/legacy/test.d.ts.map +1 -0
- package/build/scripts/legacy/test.js +3 -0
- package/build/scripts/legacy/test.js.map +1 -0
- package/build/scripts/legacy/test_additional_props.d.ts +6 -0
- package/build/scripts/legacy/test_additional_props.d.ts.map +1 -0
- package/build/scripts/legacy/test_additional_props.js +45 -0
- package/build/scripts/legacy/test_additional_props.js.map +1 -0
- package/build/scripts/legacy/test_ajv_validation.d.ts +2 -0
- package/build/scripts/legacy/test_ajv_validation.d.ts.map +1 -0
- package/build/scripts/legacy/test_ajv_validation.js +35 -0
- package/build/scripts/legacy/test_ajv_validation.js.map +1 -0
- package/build/scripts/legacy/test_build.d.ts +2 -0
- package/build/scripts/legacy/test_build.d.ts.map +1 -0
- package/build/scripts/legacy/test_build.js +14 -0
- package/build/scripts/legacy/test_build.js.map +1 -0
- package/build/scripts/legacy/test_direct.d.ts +3 -0
- package/build/scripts/legacy/test_direct.d.ts.map +1 -0
- package/build/scripts/legacy/test_direct.js +24 -0
- package/build/scripts/legacy/test_direct.js.map +1 -0
- package/build/scripts/legacy/test_import.d.ts +2 -0
- package/build/scripts/legacy/test_import.d.ts.map +1 -0
- package/build/scripts/legacy/test_import.js +7 -0
- package/build/scripts/legacy/test_import.js.map +1 -0
- package/build/scripts/legacy/test_mova_schemas.d.ts +2 -0
- package/build/scripts/legacy/test_mova_schemas.d.ts.map +1 -0
- package/build/scripts/legacy/test_mova_schemas.js +37 -0
- package/build/scripts/legacy/test_mova_schemas.js.map +1 -0
- package/build/scripts/legacy/test_scenario_integration.d.ts +13 -0
- package/build/scripts/legacy/test_scenario_integration.d.ts.map +1 -0
- package/build/scripts/legacy/test_scenario_integration.js +156 -0
- package/build/scripts/legacy/test_scenario_integration.js.map +1 -0
- package/build/scripts/legacy/test_schemas.d.ts +2 -0
- package/build/scripts/legacy/test_schemas.d.ts.map +1 -0
- package/build/scripts/legacy/test_schemas.js +48 -0
- package/build/scripts/legacy/test_schemas.js.map +1 -0
- package/build/scripts/legacy/test_schemas_simple.d.ts +2 -0
- package/build/scripts/legacy/test_schemas_simple.d.ts.map +1 -0
- package/build/scripts/legacy/test_schemas_simple.js +36 -0
- package/build/scripts/legacy/test_schemas_simple.js.map +1 -0
- package/build/scripts/legacy/test_simple.d.ts +4 -0
- package/build/scripts/legacy/test_simple.d.ts.map +1 -0
- package/build/scripts/legacy/test_simple.js +17 -0
- package/build/scripts/legacy/test_simple.js.map +1 -0
- package/build/scripts/legacy/test_warnings.d.ts +6 -0
- package/build/scripts/legacy/test_warnings.d.ts.map +1 -0
- package/build/scripts/legacy/test_warnings.js +48 -0
- package/build/scripts/legacy/test_warnings.js.map +1 -0
- package/build/scripts/legacy/very_simple_test.d.ts +1 -0
- package/build/scripts/legacy/very_simple_test.d.ts.map +1 -0
- package/build/scripts/legacy/very_simple_test.js +3 -0
- package/build/scripts/legacy/very_simple_test.js.map +1 -0
- package/build/scripts/merge_and_validate.d.ts +6 -0
- package/build/scripts/merge_and_validate.d.ts.map +1 -0
- package/build/scripts/merge_and_validate.js +53 -0
- package/build/scripts/merge_and_validate.js.map +1 -0
- package/build/src/ajv/ajv_loader.d.ts +47 -0
- package/build/src/ajv/ajv_loader.d.ts.map +1 -0
- package/build/src/ajv/ajv_loader.js +274 -0
- package/build/src/ajv/ajv_loader.js.map +1 -0
- package/build/src/ajv/schema_registry.d.ts +19 -0
- package/build/src/ajv/schema_registry.d.ts.map +1 -0
- package/build/src/ajv/schema_registry.js +121 -0
- package/build/src/ajv/schema_registry.js.map +1 -0
- package/build/src/drivers/__tests__/registry.test.d.ts +2 -0
- package/build/src/drivers/__tests__/registry.test.d.ts.map +1 -0
- package/build/src/drivers/__tests__/registry.test.js +100 -0
- package/build/src/drivers/__tests__/registry.test.js.map +1 -0
- package/build/src/drivers/httpDriver.d.ts +3 -0
- package/build/src/drivers/httpDriver.d.ts.map +1 -0
- package/build/src/drivers/httpDriver.js +76 -0
- package/build/src/drivers/httpDriver.js.map +1 -0
- package/build/src/drivers/index.d.ts +20 -0
- package/build/src/drivers/index.d.ts.map +1 -0
- package/build/src/drivers/index.js +33 -0
- package/build/src/drivers/index.js.map +1 -0
- package/build/src/drivers/restrictedShellDriver.d.ts +12 -0
- package/build/src/drivers/restrictedShellDriver.d.ts.map +1 -0
- package/build/src/drivers/restrictedShellDriver.js +88 -0
- package/build/src/drivers/restrictedShellDriver.js.map +1 -0
- package/build/src/episodes/__tests__/episode_writer_atomic.test.d.ts +2 -0
- package/build/src/episodes/__tests__/episode_writer_atomic.test.d.ts.map +1 -0
- package/build/src/episodes/__tests__/episode_writer_atomic.test.js +86 -0
- package/build/src/episodes/__tests__/episode_writer_atomic.test.js.map +1 -0
- package/build/src/episodes/episode_writer.d.ts +100 -0
- package/build/src/episodes/episode_writer.d.ts.map +1 -0
- package/build/src/episodes/episode_writer.js +503 -0
- package/build/src/episodes/episode_writer.js.map +1 -0
- package/build/src/episodes/episode_writer_atomic.d.ts +10 -0
- package/build/src/episodes/episode_writer_atomic.d.ts.map +1 -0
- package/build/src/episodes/episode_writer_atomic.js +46 -0
- package/build/src/episodes/episode_writer_atomic.js.map +1 -0
- package/build/src/evidence/evidence_writer.d.ts +16 -0
- package/build/src/evidence/evidence_writer.d.ts.map +1 -0
- package/build/src/evidence/evidence_writer.js +78 -0
- package/build/src/evidence/evidence_writer.js.map +1 -0
- package/build/src/handlers/registry.d.ts +20 -0
- package/build/src/handlers/registry.d.ts.map +1 -0
- package/build/src/handlers/registry.js +38 -0
- package/build/src/handlers/registry.js.map +1 -0
- package/build/src/interpreter/interpreter.d.ts +90 -0
- package/build/src/interpreter/interpreter.d.ts.map +1 -0
- package/build/src/interpreter/interpreter.js +732 -0
- package/build/src/interpreter/interpreter.js.map +1 -0
- package/build/src/interpreter/interpreter_with_budget.d.ts +92 -0
- package/build/src/interpreter/interpreter_with_budget.d.ts.map +1 -0
- package/build/src/interpreter/interpreter_with_budget.js +678 -0
- package/build/src/interpreter/interpreter_with_budget.js.map +1 -0
- package/build/src/logging/logger.d.ts +83 -0
- package/build/src/logging/logger.d.ts.map +1 -0
- package/build/src/logging/logger.js +226 -0
- package/build/src/logging/logger.js.map +1 -0
- package/build/src/policy/policy_engine.d.ts +116 -0
- package/build/src/policy/policy_engine.d.ts.map +1 -0
- package/build/src/policy/policy_engine.js +296 -0
- package/build/src/policy/policy_engine.js.map +1 -0
- package/build/src/skills/skills_layer.d.ts +94 -0
- package/build/src/skills/skills_layer.d.ts.map +1 -0
- package/build/src/skills/skills_layer.js +405 -0
- package/build/src/skills/skills_layer.js.map +1 -0
- package/build/src/telemetry/token_budget_enforcer.d.ts +113 -0
- package/build/src/telemetry/token_budget_enforcer.d.ts.map +1 -0
- package/build/src/telemetry/token_budget_enforcer.js +253 -0
- package/build/src/telemetry/token_budget_enforcer.js.map +1 -0
- package/build/src/telemetry/token_budget_loader.d.ts +29 -0
- package/build/src/telemetry/token_budget_loader.d.ts.map +1 -0
- package/build/src/telemetry/token_budget_loader.js +112 -0
- package/build/src/telemetry/token_budget_loader.js.map +1 -0
- package/build/src/telemetry/token_meter.d.ts +65 -0
- package/build/src/telemetry/token_meter.d.ts.map +1 -0
- package/build/src/telemetry/token_meter.js +153 -0
- package/build/src/telemetry/token_meter.js.map +1 -0
- package/build/src/ux/cli_interface.d.ts +85 -0
- package/build/src/ux/cli_interface.d.ts.map +1 -0
- package/build/src/ux/cli_interface.js +651 -0
- package/build/src/ux/cli_interface.js.map +1 -0
- package/build/test/drivers/registry.test.d.ts +2 -0
- package/build/test/drivers/registry.test.d.ts.map +1 -0
- package/build/test/drivers/registry.test.js +100 -0
- package/build/test/drivers/registry.test.js.map +1 -0
- package/build/test/episodes/episode_writer_atomic.test.d.ts +2 -0
- package/build/test/episodes/episode_writer_atomic.test.d.ts.map +1 -0
- package/build/test/episodes/episode_writer_atomic.test.js +86 -0
- package/build/test/episodes/episode_writer_atomic.test.js.map +1 -0
- package/build/tests/ajv/check_schemas.d.ts +4 -0
- package/build/tests/ajv/check_schemas.d.ts.map +1 -0
- package/build/tests/ajv/check_schemas.js +27 -0
- package/build/tests/ajv/check_schemas.js.map +1 -0
- package/build/tests/ajv/final_test.d.ts +2 -0
- package/build/tests/ajv/final_test.d.ts.map +1 -0
- package/build/tests/ajv/final_test.js +42 -0
- package/build/tests/ajv/final_test.js.map +1 -0
- package/build/tests/ajv/simple_test.d.ts +2 -0
- package/build/tests/ajv/simple_test.d.ts.map +1 -0
- package/build/tests/ajv/simple_test.js +40 -0
- package/build/tests/ajv/simple_test.js.map +1 -0
- package/build/tests/ajv/test_schema_loading.d.ts +2 -0
- package/build/tests/ajv/test_schema_loading.d.ts.map +1 -0
- package/build/tests/ajv/test_schema_loading.js +39 -0
- package/build/tests/ajv/test_schema_loading.js.map +1 -0
- package/build/tools/mova-agent.d.ts +2 -0
- package/build/tools/mova-agent.d.ts.map +1 -0
- package/build/tools/mova-agent.js +15 -0
- package/build/tools/mova-agent.js.map +1 -0
- package/package.json +63 -0
- package/src/ajv/ajv_loader.ts +311 -0
- package/src/ajv/schema_registry.ts +92 -0
- package/src/drivers/httpDriver.ts +90 -0
- package/src/drivers/index.ts +48 -0
- package/src/drivers/restrictedShellDriver.ts +68 -0
- package/src/episodes/episode_writer.ts +675 -0
- package/src/episodes/episode_writer_atomic.ts +44 -0
- package/src/evidence/evidence_writer.ts +74 -0
- package/src/handlers/registry.ts +53 -0
- package/src/interpreter/interpreter.ts +1009 -0
- package/src/interpreter/interpreter_with_budget.ts +923 -0
- package/src/logging/logger.ts +269 -0
- package/src/policy/policy_engine.ts +395 -0
- package/src/skills/skills_layer.ts +510 -0
- package/src/telemetry/token_budget_enforcer.ts +338 -0
- package/src/telemetry/token_budget_loader.ts +133 -0
- package/src/telemetry/token_meter.ts +185 -0
- package/src/types/generated/ds.connector_core_v1.d.ts +116 -0
- package/src/types/generated/ds.instruction_profile_core_v1.d.ts +141 -0
- package/src/types/generated/ds.mova4_core_catalog_v1.d.ts +80 -0
- package/src/types/generated/ds.mova_agent_run_summary_v1.d.ts +120 -0
- package/src/types/generated/ds.mova_agent_step_v1.d.ts +53 -0
- package/src/types/generated/ds.mova_agent_tool_pool_v1.d.ts +152 -0
- package/src/types/generated/ds.mova_agent_validation_report_v1.d.ts +43 -0
- package/src/types/generated/ds.mova_episode_core_v1.d.ts +56 -0
- package/src/types/generated/ds.mova_schema_core_v1.d.ts +49 -0
- package/src/types/generated/ds.mova_token_budget_contract_v0.d.ts +140 -0
- package/src/types/generated/ds.runtime_binding_core_v1.d.ts +112 -0
- package/src/types/generated/ds.security_event_episode_core_v1.d.ts +138 -0
- package/src/types/generated/ds.ui_text_bundle_core_v1.d.ts +118 -0
- package/src/types/generated/env.instruction_profile_publish_v1.d.ts +159 -0
- package/src/types/generated/env.mova4_core_catalog_publish_v1.d.ts +25 -0
- package/src/types/generated/env.mova_agent_plan_v1.d.ts +40 -0
- package/src/types/generated/env.mova_agent_request_v1.d.ts +43 -0
- package/src/types/generated/env.security_event_store_v1.d.ts +191 -0
- package/src/types/generated/index.d.ts +25 -0
- 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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"}
|