answer42 0.2.4__tar.gz → 0.2.7__tar.gz

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 (59) hide show
  1. {answer42-0.2.4 → answer42-0.2.7}/PKG-INFO +1 -1
  2. {answer42-0.2.4 → answer42-0.2.7}/docs/architecture.md +23 -1
  3. {answer42-0.2.4 → answer42-0.2.7}/pyproject.toml +1 -1
  4. {answer42-0.2.4 → answer42-0.2.7}/scripts/build_pages.py +1 -2
  5. {answer42-0.2.4 → answer42-0.2.7}/src/cf/DataProcessors/MCPTestManager/Forms//320/244/320/276/321/200/320/274/320/260/Ext/Form/Module.bsl +476 -17
  6. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/assets/MCPTestManager.cf +0 -0
  7. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/assets/skills/answer42-rag/SKILL.md +8 -0
  8. answer42-0.2.7/src/mcp_1c/rag/detect.py +101 -0
  9. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/rag/model.py +11 -0
  10. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/rag/parsers.py +27 -0
  11. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/rag/service.py +167 -8
  12. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/rag/store.py +12 -2
  13. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/runtime.py +1 -1
  14. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/server.py +783 -10
  15. answer42-0.2.4/src/mcp_1c/rag/detect.py +0 -23
  16. {answer42-0.2.4 → answer42-0.2.7}/.gitignore +0 -0
  17. {answer42-0.2.4 → answer42-0.2.7}/LICENSE +0 -0
  18. {answer42-0.2.4 → answer42-0.2.7}/README.md +0 -0
  19. {answer42-0.2.4 → answer42-0.2.7}/credentials.example.json +0 -0
  20. {answer42-0.2.4 → answer42-0.2.7}/docs/agent-installation.md +0 -0
  21. {answer42-0.2.4 → answer42-0.2.7}/docs/assets/answer42-logo.png +0 -0
  22. {answer42-0.2.4 → answer42-0.2.7}/docs/assets/platform42-logo.svg +0 -0
  23. {answer42-0.2.4 → answer42-0.2.7}/docs/installation.md +0 -0
  24. {answer42-0.2.4 → answer42-0.2.7}/scripts/build_cf.py +0 -0
  25. {answer42-0.2.4 → answer42-0.2.7}/scripts/e2e_stable.py +0 -0
  26. {answer42-0.2.4 → answer42-0.2.7}/scripts/openclaw_mcp_autoreload.py +0 -0
  27. {answer42-0.2.4 → answer42-0.2.7}/scripts/rag_cli.py +0 -0
  28. {answer42-0.2.4 → answer42-0.2.7}/src/cf/ConfigDumpInfo.xml +0 -0
  29. {answer42-0.2.4 → answer42-0.2.7}/src/cf/Configuration.xml +0 -0
  30. {answer42-0.2.4 → answer42-0.2.7}/src/cf/DataProcessors/MCPTestManager/Ext/ObjectModule.bsl +0 -0
  31. {answer42-0.2.4 → answer42-0.2.7}/src/cf/DataProcessors/MCPTestManager/Forms//320/244/320/276/321/200/320/274/320/260/Ext/Form.xml" +0 -0
  32. {answer42-0.2.4 → answer42-0.2.7}/src/cf/DataProcessors/MCPTestManager/Forms//320/244/320/276/321/200/320/274/320/260.xml" +0 -0
  33. {answer42-0.2.4 → answer42-0.2.7}/src/cf/DataProcessors/MCPTestManager.xml +0 -0
  34. {answer42-0.2.4 → answer42-0.2.7}/src/cf/Ext/ManagedApplicationModule.bsl +0 -0
  35. {answer42-0.2.4 → answer42-0.2.7}/src/cf/Languages//320/240/321/203/321/201/321/201/320/272/320/270/320/271.xml" +0 -0
  36. {answer42-0.2.4 → answer42-0.2.7}/src/client_cf/Catalogs//320/237/320/241_/320/222/320/273/320/260/320/264/320/265/320/273/320/265/321/206.xml" +0 -0
  37. {answer42-0.2.4 → answer42-0.2.7}/src/client_cf/Catalogs//320/237/320/241_/320/241/320/277/321/200/320/260/320/262/320/276/321/207/320/275/320/270/320/2721.xml" +0 -0
  38. {answer42-0.2.4 → answer42-0.2.7}/src/client_cf/ConfigDumpInfo.xml +0 -0
  39. {answer42-0.2.4 → answer42-0.2.7}/src/client_cf/Configuration.xml +0 -0
  40. {answer42-0.2.4 → answer42-0.2.7}/src/client_cf/Languages//320/240/321/203/321/201/321/201/320/272/320/270/320/271.xml" +0 -0
  41. {answer42-0.2.4 → answer42-0.2.7}/src/client_cf/Reports//320/237/320/241_/320/241/320/277/320/270/321/201/320/276/320/272/320/255/320/273/320/265/320/274/320/265/320/275/321/202/320/276/320/262/Ext/ManagerModule.bsl" +0 -0
  42. {answer42-0.2.4 → answer42-0.2.7}/src/client_cf/Reports//320/237/320/241_/320/241/320/277/320/270/321/201/320/276/320/272/320/255/320/273/320/265/320/274/320/265/320/275/321/202/320/276/320/262/Ext/ObjectModule.bsl" +0 -0
  43. {answer42-0.2.4 → answer42-0.2.7}/src/client_cf/Reports//320/237/320/241_/320/241/320/277/320/270/321/201/320/276/320/272/320/255/320/273/320/265/320/274/320/265/320/275/321/202/320/276/320/262/Templates//320/236/321/201/320/275/320/276/320/262/320/275/320/260/321/217/320/241/321/205/320/265/320/274/320/260/320/232/320/276/320/274/320/277/320/276/320/275/320/276/320/262/320/272/320/270/320/224/320/260/320/275/320/275/321/213/321/205/Ext/Template.xml" +0 -0
  44. {answer42-0.2.4 → answer42-0.2.7}/src/client_cf/Reports//320/237/320/241_/320/241/320/277/320/270/321/201/320/276/320/272/320/255/320/273/320/265/320/274/320/265/320/275/321/202/320/276/320/262/Templates//320/236/321/201/320/275/320/276/320/262/320/275/320/260/321/217/320/241/321/205/320/265/320/274/320/260/320/232/320/276/320/274/320/277/320/276/320/275/320/276/320/262/320/272/320/270/320/224/320/260/320/275/320/275/321/213/321/205.xml" +0 -0
  45. {answer42-0.2.4 → answer42-0.2.7}/src/client_cf/Reports//320/237/320/241_/320/241/320/277/320/270/321/201/320/276/320/272/320/255/320/273/320/265/320/274/320/265/320/275/321/202/320/276/320/262.xml" +0 -0
  46. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/__init__.py +0 -0
  47. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/assets/MCPTestClient.cf +0 -0
  48. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/assets/__init__.py +0 -0
  49. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/assets/skills/answer42/SKILL.md +0 -0
  50. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/bridge.py +0 -0
  51. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/credentials.py +0 -0
  52. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/os_support.py +0 -0
  53. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/platform.py +0 -0
  54. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/protocol.py +0 -0
  55. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/rag/__init__.py +0 -0
  56. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/recorder.py +0 -0
  57. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/release_helper.py +0 -0
  58. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/skill_installer.py +0 -0
  59. {answer42-0.2.4 → answer42-0.2.7}/src/mcp_1c/window_control.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: answer42
3
- Version: 0.2.4
3
+ Version: 0.2.7
4
4
  Summary: Answer42 — The Answer to Life, Universe, and 1C — UI Driver. MCP-powered 1C:Enterprise UI automation: click, fill, navigate, test, and introspect managed forms through the test-client API
5
5
  Author: Marvin (AI Assistant), 42Clouds, and contributors
6
6
  Author-email: "Kosolapov Stanislav (proDOOMman)" <prodoomman@gmail.com>
@@ -87,7 +87,7 @@ class SessionState:
87
87
  - динамические списки: `dynamic_list_available_fields`, `dynamic_list_apply_settings`, `dynamic_list_set_order`, `dynamic_list_output`, `dynamic_list_open_settings`, `dynamic_list_clear_settings`, `dynamic_list_open_form_settings`;
88
88
  - табличные документы: `tabular_documents`, `tabular_document_text`, `tabular_document_save`;
89
89
  - доказательная запись: `recording_start`, `recording_capture`, `recording_stop`;
90
- - RAG: `rag_source_add`, `rag_sources_list`, `rag_snapshot_create`, `rag_snapshots_list`, `rag_index_build`, `rag_lookup_object`, `rag_query`.
90
+ - RAG: `rag_source_add`, `rag_sources_add_from_directory`, `rag_source_roots_list`, `rag_sources_list`, `rag_available_configurations`, `rag_snapshot_create`, `rag_snapshots_list`, `rag_index_build`, `rag_lookup_object`, `rag_query`.
91
91
 
92
92
  ### `mcp_1c.bridge`
93
93
 
@@ -171,6 +171,24 @@ python3 scripts/rag_cli.py build --snapshot Configuration+Extension1
171
171
  python3 scripts/rag_cli.py lookup РегистрСведений.Регистр1 --snapshot Configuration+Extension1
172
172
  ```
173
173
 
174
+ ### Discovery roots
175
+
176
+ MCP tool `rag_sources_add_from_directory(path, watch=true)` scans a directory for
177
+ EDT/Designer XML configuration and extension roots, registers discovered sources,
178
+ and stores the directory in `source_roots`. Later calls to `rag_sources_list`,
179
+ `rag_source_roots_list` or `rag_available_configurations` can sync those roots and
180
+ pick up newly added source trees automatically. Discovery is bounded by
181
+ `max_depth` and skips noisy directories such as `.git`, `.venv`, `build`, `dist`
182
+ and `node_modules`.
183
+
184
+ `rag_available_configurations` returns grouped base/configuration sources,
185
+ extensions, other sources, snapshots, discovery roots and per-source indexed
186
+ object/chunk counts.
187
+
188
+ If a RAG lookup/query runs without a session snapshot, or the selected snapshot
189
+ has no indexed data, the result includes `rag_diagnostic.diagnostics[]` with a
190
+ machine-readable code and remediation message for the agent.
191
+
174
192
  ## Доказательная запись
175
193
 
176
194
  `recording_start()` включает запись. Каждый записываемый bridge-вызов сохраняет слайд с:
@@ -191,4 +209,8 @@ python3 scripts/rag_cli.py lookup РегистрСведений.Регистр1
191
209
  | `ONEC_MCP_REQUEST_TIMEOUT` | Таймаут запроса, сек | `60` |
192
210
  | `ONEC_MCP_DATA_DIR` | Рабочая директория | `/tmp/onec-mcp` |
193
211
  | `MCP_1C_RAG_DB` | Путь к RAG SQLite | `build/rag/onec-rag.sqlite` |
212
+ | `ONEC_MCP_DISABLE_RAG` | Отключить встроенный RAG (`1/true/yes/on`) | пусто |
213
+ | `ONEC_MCP_RAG_SOURCE_DIRS` | `:`/`;`-separated directories for startup RAG discovery/watch | пусто |
214
+ | `ONEC_MCP_RAG_SOURCE_PREFIX` | Prefix for auto-discovered source names | пусто |
215
+ | `ONEC_MCP_RAG_SOURCE_MAX_DEPTH` | Discovery depth for RAG source dirs | `4` |
194
216
  | `DISPLAY` | X11 display | `:99` |
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "answer42"
3
- version = "0.2.4"
3
+ version = "0.2.7"
4
4
  description = "Answer42 — The Answer to Life, Universe, and 1C — UI Driver. MCP-powered 1C:Enterprise UI automation: click, fill, navigate, test, and introspect managed forms through the test-client API"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -27,8 +27,7 @@ NAV = [
27
27
  ]
28
28
 
29
29
  CSS = """
30
- :root { color-scheme: light dark; --bg:#0b1020; --panel:#111936; --text:#eef3ff; --muted:#aebbe2; --link:#67e8f9; --line:#2b365f; --code:#080d1c; }
31
- @media (prefers-color-scheme: light) { :root { --bg:#f7f9ff; --panel:#ffffff; --text:#111827; --muted:#526078; --link:#0369a1; --line:#dbe3f5; --code:#f1f5f9; } }
30
+ :root { color-scheme: dark; --bg:#0b1020; --panel:#111936; --text:#eef3ff; --muted:#aebbe2; --link:#67e8f9; --line:#2b365f; --code:#080d1c; }
32
31
  * { box-sizing: border-box; }
33
32
  body { margin:0; font:16px/1.62 Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color:var(--text); background:radial-gradient(circle at 20% 0%, rgba(103,232,249,.18), transparent 28rem), var(--bg); }
34
33
  .wrapper { max-width: 1120px; margin: 0 auto; padding: 28px 20px 56px; }