ummaya 0.2.4 → 0.2.5

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 (477) hide show
  1. package/README.md +15 -2
  2. package/bin/ummaya +10 -1
  3. package/npm-shrinkwrap.json +253 -2
  4. package/package.json +5 -1
  5. package/prompts/manifest.yaml +1 -1
  6. package/prompts/system_v1.md +1 -0
  7. package/pyproject.toml +26 -2
  8. package/specs/2803-document-production-hardening/contracts/document-tools.schema.json +1043 -0
  9. package/src/ummaya/_canonical/__init__.py +2 -0
  10. package/src/ummaya/engine/engine.py +29 -132
  11. package/src/ummaya/evidence/__init__.py +21 -2
  12. package/src/ummaya/evidence/dataset_contract.py +193 -0
  13. package/src/ummaya/evidence/document_authoring_cases.py +33 -0
  14. package/src/ummaya/evidence/document_harness.py +313 -0
  15. package/src/ummaya/evidence/document_viewer_ux.py +391 -0
  16. package/src/ummaya/evidence/gates.py +70 -0
  17. package/src/ummaya/evidence/json_types.py +20 -0
  18. package/src/ummaya/evidence/models.py +88 -1
  19. package/src/ummaya/evidence/output_payload.py +89 -0
  20. package/src/ummaya/evidence/payload_documents.py +233 -0
  21. package/src/ummaya/evidence/route_contracts.py +224 -0
  22. package/src/ummaya/evidence/route_helpers.py +150 -0
  23. package/src/ummaya/evidence/runner.py +81 -212
  24. package/src/ummaya/evidence/source_provenance.py +246 -0
  25. package/src/ummaya/evidence/source_provenance_redaction.py +176 -0
  26. package/src/ummaya/evidence/tool_layer.py +39 -0
  27. package/src/ummaya/evidence/tool_layer_models.py +151 -0
  28. package/src/ummaya/ipc/adapter_manifest_emitter.py +26 -10
  29. package/src/ummaya/ipc/document_intent_normalization.py +185 -0
  30. package/src/ummaya/ipc/frame_schema.py +5 -5
  31. package/src/ummaya/ipc/route_diagnostics.py +73 -0
  32. package/src/ummaya/ipc/stdio.py +1109 -477
  33. package/src/ummaya/llm/client.py +102 -3
  34. package/src/ummaya/llm/config.py +8 -3
  35. package/src/ummaya/primitives/__init__.py +6 -2
  36. package/src/ummaya/primitives/delegation.py +1 -1
  37. package/src/ummaya/primitives/document.py +28 -0
  38. package/src/ummaya/settings.py +0 -3
  39. package/src/ummaya/tools/discovery_bridge.py +17 -1
  40. package/src/ummaya/tools/documents/__init__.py +297 -0
  41. package/src/ummaya/tools/documents/adapter_registry.py +487 -0
  42. package/src/ummaya/tools/documents/archive_container_probe.py +167 -0
  43. package/src/ummaya/tools/documents/artifact_store.py +454 -0
  44. package/src/ummaya/tools/documents/authoring.py +283 -0
  45. package/src/ummaya/tools/documents/baselines.py +114 -0
  46. package/src/ummaya/tools/documents/capability.py +331 -0
  47. package/src/ummaya/tools/documents/contracts.py +112 -0
  48. package/src/ummaya/tools/documents/conversion.py +521 -0
  49. package/src/ummaya/tools/documents/diff.py +275 -0
  50. package/src/ummaya/tools/documents/engines.py +163 -0
  51. package/src/ummaya/tools/documents/evaluation.py +291 -0
  52. package/src/ummaya/tools/documents/explicit_values.py +108 -0
  53. package/src/ummaya/tools/documents/fixtures.py +174 -0
  54. package/src/ummaya/tools/documents/format_completion_audit.py +471 -0
  55. package/src/ummaya/tools/documents/formats/__init__.py +2 -0
  56. package/src/ummaya/tools/documents/formats/archive.py +528 -0
  57. package/src/ummaya/tools/documents/formats/base.py +41 -0
  58. package/src/ummaya/tools/documents/formats/code_file.py +211 -0
  59. package/src/ummaya/tools/documents/formats/data_file.py +272 -0
  60. package/src/ummaya/tools/documents/formats/hwp.py +284 -0
  61. package/src/ummaya/tools/documents/formats/hwpx.py +1837 -0
  62. package/src/ummaya/tools/documents/formats/odf.py +435 -0
  63. package/src/ummaya/tools/documents/formats/ooxml.py +1030 -0
  64. package/src/ummaya/tools/documents/formats/passive.py +766 -0
  65. package/src/ummaya/tools/documents/formats/pdf.py +702 -0
  66. package/src/ummaya/tools/documents/formats/text_web.py +268 -0
  67. package/src/ummaya/tools/documents/hwp_conversion_probe.py +178 -0
  68. package/src/ummaya/tools/documents/hwp_direct_candidate.py +141 -0
  69. package/src/ummaya/tools/documents/inspection.py +289 -0
  70. package/src/ummaya/tools/documents/intake.py +1079 -0
  71. package/src/ummaya/tools/documents/legacy_office_promotion_probe.py +366 -0
  72. package/src/ummaya/tools/documents/models.py +1598 -0
  73. package/src/ummaya/tools/documents/odf_promotion_probe.py +167 -0
  74. package/src/ummaya/tools/documents/orchestrator.py +96 -0
  75. package/src/ummaya/tools/documents/passive_capability_probe.py +251 -0
  76. package/src/ummaya/tools/documents/patch.py +170 -0
  77. package/src/ummaya/tools/documents/pdfa_conformance.py +284 -0
  78. package/src/ummaya/tools/documents/pdfa_promotion_probe.py +198 -0
  79. package/src/ummaya/tools/documents/permissions.py +110 -0
  80. package/src/ummaya/tools/documents/planner.py +616 -0
  81. package/src/ummaya/tools/documents/registry.py +2733 -0
  82. package/src/ummaya/tools/documents/render.py +978 -0
  83. package/src/ummaya/tools/documents/render_comparison.py +113 -0
  84. package/src/ummaya/tools/documents/render_comparison_models.py +74 -0
  85. package/src/ummaya/tools/documents/render_comparison_regions.py +73 -0
  86. package/src/ummaya/tools/documents/render_comparison_style.py +161 -0
  87. package/src/ummaya/tools/documents/reread.py +157 -0
  88. package/src/ummaya/tools/documents/runtime_authoring.py +244 -0
  89. package/src/ummaya/tools/documents/runtime_authoring_bundle.py +76 -0
  90. package/src/ummaya/tools/documents/scorecard.py +184 -0
  91. package/src/ummaya/tools/documents/socratic_planner.py +193 -0
  92. package/src/ummaya/tools/documents/style.py +48 -0
  93. package/src/ummaya/tools/documents/tool_defs.py +523 -0
  94. package/src/ummaya/tools/documents/validate.py +347 -0
  95. package/src/ummaya/tools/executor.py +29 -0
  96. package/src/ummaya/tools/live_proxy.py +0 -3
  97. package/src/ummaya/tools/models.py +5 -1
  98. package/src/ummaya/tools/register_all.py +8 -0
  99. package/src/ummaya/tools/registry.py +10 -1
  100. package/src/ummaya/tools/routing/__init__.py +59 -0
  101. package/src/ummaya/tools/routing/builder.py +105 -0
  102. package/src/ummaya/tools/routing/cards.py +29 -0
  103. package/src/ummaya/tools/routing/decision_service.py +534 -0
  104. package/src/ummaya/tools/routing/decision_types.py +74 -0
  105. package/src/ummaya/tools/routing/feasibility.py +122 -0
  106. package/src/ummaya/tools/routing/intent.py +17 -0
  107. package/src/ummaya/tools/routing/intent_extractor.py +207 -0
  108. package/src/ummaya/tools/routing/intent_patterns.py +160 -0
  109. package/src/ummaya/tools/routing/intent_public_data.py +150 -0
  110. package/src/ummaya/tools/routing/intent_types.py +48 -0
  111. package/src/ummaya/tools/routing/lint.py +78 -0
  112. package/src/ummaya/tools/routing/metadata.py +174 -0
  113. package/src/ummaya/tools/routing/projection.py +340 -0
  114. package/src/ummaya/tools/routing/retrieval_policy.py +629 -0
  115. package/src/ummaya/tools/routing/schema.py +81 -0
  116. package/src/ummaya/tools/routing/types.py +96 -0
  117. package/src/ummaya/tools/routing_index.py +2 -2
  118. package/src/ummaya/tools/search.py +34 -746
  119. package/tests/fixtures/documents/public_forms/baselines.yaml +113 -0
  120. package/tui/package.json +1 -1
  121. package/tui/src/.cc-byte-identical-whitelist.yaml +266 -0
  122. package/tui/src/QueryEngine.ts +12 -8
  123. package/tui/src/bridge/inboundAttachments.ts +3 -3
  124. package/tui/src/cli/handlers/auth.ts +3 -12
  125. package/tui/src/cli/print.ts +7 -7
  126. package/tui/src/commands/insights.ts +1 -1
  127. package/tui/src/commands/install-github-app/types.ts +8 -30
  128. package/tui/src/commands/plugin/types.ts +6 -28
  129. package/tui/src/commands/plugin/unifiedTypes.ts +4 -26
  130. package/tui/src/commands/rename/generateSessionName.ts +1 -1
  131. package/tui/src/components/Feedback.tsx +1 -1
  132. package/tui/src/components/LogoV2/EmergencyTip.tsx +11 -2
  133. package/tui/src/components/LogoV2/WelcomeV2.tsx +1 -3
  134. package/tui/src/components/ScrollKeybindingHandler.tsx +6 -6
  135. package/tui/src/components/Spinner/types.ts +6 -28
  136. package/tui/src/components/agents/generateAgent.ts +1 -1
  137. package/tui/src/components/agents/new-agent-creation/types.ts +4 -26
  138. package/tui/src/components/config/EnvSecretIsolatedEditor.tsx +1 -1
  139. package/tui/src/components/mcp/types.ts +16 -38
  140. package/tui/src/components/messages/AssistantToolUseMessage.tsx +3 -2
  141. package/tui/src/components/messages/UserCrossSessionMessage.ts +16 -4
  142. package/tui/src/components/messages/UserForkBoilerplateMessage.ts +16 -4
  143. package/tui/src/components/messages/UserGitHubWebhookMessage.ts +16 -4
  144. package/tui/src/components/messages/UserToolResultMessage/utils.tsx +3 -2
  145. package/tui/src/components/permissions/MonitorPermissionRequest/MonitorPermissionRequest.ts +9 -4
  146. package/tui/src/components/permissions/ReviewArtifactPermissionRequest/ReviewArtifactPermissionRequest.ts +9 -4
  147. package/tui/src/components/primitive/DocumentSocraticReviewBlock.tsx +129 -0
  148. package/tui/src/components/primitive/DocumentToolResultCard.tsx +224 -0
  149. package/tui/src/components/primitive/documentSocraticReview.ts +215 -0
  150. package/tui/src/components/primitive/index.tsx +43 -1
  151. package/tui/src/components/primitive/types.ts +137 -0
  152. package/tui/src/components/ui/option.ts +4 -26
  153. package/tui/src/constants/common.ts +0 -2
  154. package/tui/src/constants/prompts.ts +4 -3
  155. package/tui/src/constants/querySource.ts +4 -26
  156. package/tui/src/entrypoints/sdk/controlTypes.ts +26 -48
  157. package/tui/src/entrypoints/sdk/coreTypes.generated.ts +3 -25
  158. package/tui/src/entrypoints/sdk/runtimeTypes.ts +38 -60
  159. package/tui/src/entrypoints/sdk/sdkUtilityTypes.ts +4 -26
  160. package/tui/src/entrypoints/sdk/settingsTypes.generated.ts +3 -25
  161. package/tui/src/entrypoints/sdk/toolTypes.ts +3 -25
  162. package/tui/src/hooks/toolPermission/handlers/interactiveHandler.ts +10 -0
  163. package/tui/src/hooks/useApiKeyVerification.ts +1 -1
  164. package/tui/src/hooks/useVirtualScroll.ts +1 -1
  165. package/tui/src/ink/ink.tsx +33 -14
  166. package/tui/src/ink/reconciler.ts +2 -3
  167. package/tui/src/ink/render-to-screen.ts +30 -10
  168. package/tui/src/ipc/bridge.ts +62 -15
  169. package/tui/src/ipc/bridgeSingleton.ts +5 -1
  170. package/tui/src/ipc/codec.ts +3 -3
  171. package/tui/src/ipc/frames.generated.ts +12 -12
  172. package/tui/src/ipc/llmClient.ts +151 -27
  173. package/tui/src/ipc/schema/frame.schema.json +1 -1
  174. package/tui/src/keybindings/defaultBindings.ts +4 -0
  175. package/tui/src/main.tsx +29 -11
  176. package/tui/src/native-ts/file-index/index.ts +33 -3
  177. package/tui/src/observability/surface.ts +2 -2
  178. package/tui/src/probes/toolRegistryProbe.tsx +3 -1
  179. package/tui/src/projectOnboardingState.ts +7 -6
  180. package/tui/src/query/chatMessageTypes.ts +18 -0
  181. package/tui/src/query/chatMessagesBuilder.ts +1 -1
  182. package/tui/src/query/deps.ts +1 -1
  183. package/tui/src/query/messageGuards.ts +106 -0
  184. package/tui/src/query/publicDataTerminalRepair.ts +384 -0
  185. package/tui/src/query/run.ts +1075 -0
  186. package/tui/src/query/supportBoundary.ts +168 -0
  187. package/tui/src/query/toolResultErrors.ts +103 -0
  188. package/tui/src/query/toolRunner.ts +687 -0
  189. package/tui/src/query/unavailableToolRepair.ts +118 -0
  190. package/tui/src/query.ts +9 -2186
  191. package/tui/src/screens/REPL.tsx +40 -29
  192. package/tui/src/services/api/adapterManifest.ts +4 -0
  193. package/tui/src/services/api/backendChat/events.ts +117 -0
  194. package/tui/src/services/api/backendChat/finalMessage.ts +40 -0
  195. package/tui/src/services/api/backendChat/frame.ts +9 -0
  196. package/tui/src/services/api/backendChat/streaming.ts +430 -0
  197. package/tui/src/services/api/backendChat/types.ts +62 -0
  198. package/tui/src/services/api/backendChat.ts +1 -0
  199. package/tui/src/services/api/client.ts +65 -2
  200. package/tui/src/services/api/errorUtils.ts +5 -5
  201. package/tui/src/services/api/errors.ts +1 -1
  202. package/tui/src/services/api/logging.ts +1 -1
  203. package/tui/src/services/api/ummaya/evidence.ts +194 -0
  204. package/tui/src/services/api/ummaya/messages.ts +255 -0
  205. package/tui/src/services/api/ummaya/nonStreaming.ts +66 -0
  206. package/tui/src/services/api/ummaya/provider.ts +200 -0
  207. package/tui/src/services/api/ummaya/reasoning.ts +24 -0
  208. package/tui/src/services/api/ummaya/request.ts +200 -0
  209. package/tui/src/services/api/ummaya/selectionContext.ts +240 -0
  210. package/tui/src/services/api/ummaya/streaming.ts +365 -0
  211. package/tui/src/services/api/ummaya/streamingPayload.ts +129 -0
  212. package/tui/src/services/api/ummaya/streamingReader.ts +40 -0
  213. package/tui/src/services/api/ummaya/toolSelection.ts +217 -0
  214. package/tui/src/services/api/ummaya/types.ts +110 -0
  215. package/tui/src/services/api/ummaya/usage.ts +30 -0
  216. package/tui/src/services/api/ummaya.ts +26 -418
  217. package/tui/src/services/api/withRetry.ts +1 -1
  218. package/tui/src/services/awaySummary.ts +2 -2
  219. package/tui/src/services/claudeAiLimits.ts +1 -1
  220. package/tui/src/services/compact/autoCompact.ts +1 -1
  221. package/tui/src/services/compact/compact.ts +1 -1
  222. package/tui/src/services/lsp/types.ts +8 -30
  223. package/tui/src/services/tips/types.ts +6 -28
  224. package/tui/src/services/tokenEstimation.ts +1 -1
  225. package/tui/src/services/toolRegistry/bootGuard.ts +5 -5
  226. package/tui/src/services/toolUseSummary/toolUseSummaryGenerator.ts +1 -1
  227. package/tui/src/services/tools/toolExecution.ts +94 -1
  228. package/tui/src/store/pendingPermissionSlot.ts +1 -1
  229. package/tui/src/store/session-store.ts +10 -36
  230. package/tui/src/stubs/any-stub.ts +15 -10
  231. package/tui/src/stubs/color-diff-napi.ts +37 -23
  232. package/tui/src/stubs/globals.d.ts +3 -3
  233. package/tui/src/stubs/macro-preload.ts +23 -12
  234. package/tui/src/tools/AdapterTool/AdapterTool.ts +1207 -714
  235. package/tui/src/tools/AdapterTool/routeDiagnostics.ts +75 -0
  236. package/tui/src/tools/AgentTool/AgentTool.tsx +84 -1371
  237. package/tui/src/tools/AgentTool/agentToolHandoff.ts +114 -0
  238. package/tui/src/tools/AgentTool/agentToolPartialResult.ts +16 -0
  239. package/tui/src/tools/AgentTool/agentToolProgress.ts +32 -0
  240. package/tui/src/tools/AgentTool/agentToolResolver.ts +161 -0
  241. package/tui/src/tools/AgentTool/agentToolResult.ts +163 -0
  242. package/tui/src/tools/AgentTool/agentToolUtils.ts +14 -686
  243. package/tui/src/tools/AgentTool/asyncAgentLifecycle.ts +208 -0
  244. package/tui/src/tools/AgentTool/asyncLifecycle.ts +153 -0
  245. package/tui/src/tools/AgentTool/backgroundedCompletion.ts +126 -0
  246. package/tui/src/tools/AgentTool/backgroundedLifecycle.ts +174 -0
  247. package/tui/src/tools/AgentTool/foregroundBackground.ts +83 -0
  248. package/tui/src/tools/AgentTool/foregroundDrain.tsx +133 -0
  249. package/tui/src/tools/AgentTool/foregroundFinalize.ts +98 -0
  250. package/tui/src/tools/AgentTool/foregroundLifecycle.tsx +237 -0
  251. package/tui/src/tools/AgentTool/foregroundProgress.tsx +169 -0
  252. package/tui/src/tools/AgentTool/foregroundTask.ts +89 -0
  253. package/tui/src/tools/AgentTool/forkSubagent.ts +1 -12
  254. package/tui/src/tools/AgentTool/forkSubagentGate.ts +34 -0
  255. package/tui/src/tools/AgentTool/launchRouting.ts +203 -0
  256. package/tui/src/tools/AgentTool/lifecycle.ts +244 -0
  257. package/tui/src/tools/AgentTool/mcpRouting.ts +73 -0
  258. package/tui/src/tools/AgentTool/orchestrationSupport.ts +70 -0
  259. package/tui/src/tools/AgentTool/permissions.ts +39 -0
  260. package/tui/src/tools/AgentTool/promptSetup.ts +181 -0
  261. package/tui/src/tools/AgentTool/remoteRouting.ts +62 -0
  262. package/tui/src/tools/AgentTool/resultMapping.ts +116 -0
  263. package/tui/src/tools/AgentTool/resumeAgent.ts +39 -107
  264. package/tui/src/tools/AgentTool/resumeAgentHelpers.ts +140 -0
  265. package/tui/src/tools/AgentTool/runAgent.ts +1 -1
  266. package/tui/src/tools/AgentTool/runtimeConfig.ts +57 -0
  267. package/tui/src/tools/AgentTool/schemas.ts +196 -0
  268. package/tui/src/tools/AgentTool/sourceVerificationPropagation.ts +263 -0
  269. package/tui/src/tools/AgentTool/worktreeLifecycle.ts +105 -0
  270. package/tui/src/tools/AskUserQuestionTool/AskUserQuestionTool.tsx +174 -202
  271. package/tui/src/tools/BashTool/BashTool.tsx +71 -1072
  272. package/tui/src/tools/BashTool/bashCommandHelpers.ts +12 -12
  273. package/tui/src/tools/BashTool/bashPermissions/astPreflight.ts +173 -0
  274. package/tui/src/tools/BashTool/bashPermissions/classifierChecks.ts +199 -0
  275. package/tui/src/tools/BashTool/bashPermissions/compoundGuards.ts +53 -0
  276. package/tui/src/tools/BashTool/bashPermissions/constants.ts +99 -0
  277. package/tui/src/tools/BashTool/bashPermissions/index.ts +38 -0
  278. package/tui/src/tools/BashTool/bashPermissions/legacyMisparsing.ts +62 -0
  279. package/tui/src/tools/BashTool/bashPermissions/main.ts +135 -0
  280. package/tui/src/tools/BashTool/bashPermissions/normalizedCommands.ts +33 -0
  281. package/tui/src/tools/BashTool/bashPermissions/operatorFlow.ts +98 -0
  282. package/tui/src/tools/BashTool/bashPermissions/permissionChecks.ts +200 -0
  283. package/tui/src/tools/BashTool/bashPermissions/prefixSuggestions.ts +88 -0
  284. package/tui/src/tools/BashTool/bashPermissions/promptClassifierRules.ts +125 -0
  285. package/tui/src/tools/BashTool/bashPermissions/ruleDelegates.ts +19 -0
  286. package/tui/src/tools/BashTool/bashPermissions/ruleMatching.ts +145 -0
  287. package/tui/src/tools/BashTool/bashPermissions/sandboxAutoAllow.ts +75 -0
  288. package/tui/src/tools/BashTool/bashPermissions/subcommandFlow.ts +205 -0
  289. package/tui/src/tools/BashTool/bashPermissions/subcommandGuards.ts +73 -0
  290. package/tui/src/tools/BashTool/bashPermissions/subcommandResultHelpers.ts +116 -0
  291. package/tui/src/tools/BashTool/bashPermissions/types.ts +26 -0
  292. package/tui/src/tools/BashTool/bashPermissions/wrapperStripping.ts +139 -0
  293. package/tui/src/tools/BashTool/bashPermissions.ts +26 -2621
  294. package/tui/src/tools/BashTool/call.ts +202 -0
  295. package/tui/src/tools/BashTool/callLoader.ts +35 -0
  296. package/tui/src/tools/BashTool/commandClassification.ts +151 -0
  297. package/tui/src/tools/BashTool/commandClassificationLoader.ts +40 -0
  298. package/tui/src/tools/BashTool/cwdReset.ts +33 -0
  299. package/tui/src/tools/BashTool/lineTruncation.ts +11 -0
  300. package/tui/src/tools/BashTool/modeValidation.ts +13 -1
  301. package/tui/src/tools/BashTool/outputPersistence.ts +42 -0
  302. package/tui/src/tools/BashTool/permissionClassification.ts +66 -0
  303. package/tui/src/tools/BashTool/permissionLoader.ts +44 -0
  304. package/tui/src/tools/BashTool/resultLoader.ts +29 -0
  305. package/tui/src/tools/BashTool/resultMapping.ts +83 -0
  306. package/tui/src/tools/BashTool/sandboxPolicy.ts +79 -0
  307. package/tui/src/tools/BashTool/schemas.ts +65 -0
  308. package/tui/src/tools/BashTool/sedEditExecution.ts +59 -0
  309. package/tui/src/tools/BashTool/shellExecution.tsx +245 -0
  310. package/tui/src/tools/BashTool/shellOutputUtils.ts +85 -0
  311. package/tui/src/tools/BashTool/shellPermissionGauntlet.ts +97 -0
  312. package/tui/src/tools/BashTool/uiLoader.ts +37 -0
  313. package/tui/src/tools/BriefTool/upload.ts +1 -1
  314. package/tui/src/tools/CalculatorTool/parser.ts +2 -2
  315. package/tui/src/tools/DocumentPrimitive/DocumentPrimitive.ts +262 -0
  316. package/tui/src/tools/DocumentPrimitive/dispatchNormalization.ts +270 -0
  317. package/tui/src/tools/DocumentPrimitive/documentDestinationPath.ts +18 -0
  318. package/tui/src/tools/DocumentPrimitive/documentMutationGuard.ts +22 -0
  319. package/tui/src/tools/DocumentPrimitive/documentPatchNormalization.ts +248 -0
  320. package/tui/src/tools/DocumentPrimitive/documentSourceVerification.ts +245 -0
  321. package/tui/src/tools/DocumentPrimitive/documentSourceVerificationFields.ts +103 -0
  322. package/tui/src/tools/DocumentPrimitive/modelVisibleOutput.ts +40 -0
  323. package/tui/src/tools/DocumentPrimitive/prompt.ts +35 -0
  324. package/tui/src/tools/FileEditTool/FileEditTool.ts +9 -507
  325. package/tui/src/tools/FileEditTool/call.ts +228 -0
  326. package/tui/src/tools/FileEditTool/validateInput.ts +196 -0
  327. package/tui/src/tools/FileReadTool/imageProcessor.ts +13 -0
  328. package/tui/src/tools/FileWriteTool/FileWriteTool.ts +7 -300
  329. package/tui/src/tools/FileWriteTool/call.ts +223 -0
  330. package/tui/src/tools/FileWriteTool/validateInput.ts +80 -0
  331. package/tui/src/tools/ListMcpResourcesTool/ListMcpResourcesTool.ts +19 -3
  332. package/tui/src/tools/LookupPrimitive/LookupPrimitive.ts +25 -32
  333. package/tui/src/tools/LookupPrimitive/prompt.ts +0 -2
  334. package/tui/src/tools/MCPTool/trustPolicy.ts +118 -0
  335. package/tui/src/tools/McpAuthTool/McpAuthTool.ts +21 -3
  336. package/tui/src/tools/NotebookEditTool/NotebookEditTool.ts +7 -326
  337. package/tui/src/tools/NotebookEditTool/call.ts +254 -0
  338. package/tui/src/tools/NotebookEditTool/notebookModel.ts +51 -0
  339. package/tui/src/tools/NotebookEditTool/validateInput.ts +142 -0
  340. package/tui/src/tools/PowerShellTool/PowerShellTool.tsx +46 -937
  341. package/tui/src/tools/PowerShellTool/acceptEditsCommandValidation.ts +162 -0
  342. package/tui/src/tools/PowerShellTool/call.ts +179 -0
  343. package/tui/src/tools/PowerShellTool/callLoader.ts +37 -0
  344. package/tui/src/tools/PowerShellTool/commandClassification.ts +86 -0
  345. package/tui/src/tools/PowerShellTool/modeValidation.ts +25 -332
  346. package/tui/src/tools/PowerShellTool/outputPersistence.ts +42 -0
  347. package/tui/src/tools/PowerShellTool/permissionClassification.ts +28 -0
  348. package/tui/src/tools/PowerShellTool/resultLoader.ts +31 -0
  349. package/tui/src/tools/PowerShellTool/resultMapping.ts +75 -0
  350. package/tui/src/tools/PowerShellTool/schemas.ts +40 -0
  351. package/tui/src/tools/PowerShellTool/shellExecution.tsx +258 -0
  352. package/tui/src/tools/PowerShellTool/symlinkModeValidation.ts +44 -0
  353. package/tui/src/tools/PowerShellTool/uiLoader.ts +37 -0
  354. package/tui/src/tools/PowerShellTool/validation.ts +39 -0
  355. package/tui/src/tools/ReadMcpResourceTool/ReadMcpResourceTool.ts +19 -3
  356. package/tui/src/tools/ResolveLocationPrimitive/ResolveLocationPrimitive.ts +1 -11
  357. package/tui/src/tools/ResolveLocationPrimitive/prompt.ts +2 -6
  358. package/tui/src/tools/SkillTool/SkillTool.ts +2 -2
  359. package/tui/src/tools/SubmitPrimitive/SubmitPrimitive.ts +27 -10
  360. package/tui/src/tools/TaskCreateTool/TaskCreateTool.ts +16 -2
  361. package/tui/src/tools/TaskGetTool/TaskGetTool.ts +23 -3
  362. package/tui/src/tools/TaskListTool/TaskListTool.ts +22 -4
  363. package/tui/src/tools/TaskOutputTool/TaskOutputTool.tsx +46 -547
  364. package/tui/src/tools/TaskOutputTool/lookup.ts +216 -0
  365. package/tui/src/tools/TaskOutputTool/render.tsx +257 -0
  366. package/tui/src/tools/TaskOutputTool/schemas.ts +55 -0
  367. package/tui/src/tools/TaskOutputTool/serialization.ts +36 -0
  368. package/tui/src/tools/TaskStopTool/TaskStopTool.ts +10 -0
  369. package/tui/src/tools/TaskUpdateTool/TaskUpdateTool.ts +14 -364
  370. package/tui/src/tools/TaskUpdateTool/completion.ts +62 -0
  371. package/tui/src/tools/TaskUpdateTool/schemas.ts +62 -0
  372. package/tui/src/tools/TaskUpdateTool/serialization.ts +46 -0
  373. package/tui/src/tools/TaskUpdateTool/statusUpdate.ts +247 -0
  374. package/tui/src/tools/TodoWriteTool/TodoWriteTool.ts +21 -2
  375. package/tui/src/tools/ToolSearchTool/ToolSearchTool.ts +21 -302
  376. package/tui/src/tools/ToolSearchTool/ccSupportTools.ts +223 -0
  377. package/tui/src/tools/ToolSearchTool/descriptionCache.ts +50 -0
  378. package/tui/src/tools/ToolSearchTool/keywordSearch.ts +216 -0
  379. package/tui/src/tools/ToolSearchTool/prompt.ts +10 -4
  380. package/tui/src/tools/ToolSearchTool/resultMapping.ts +30 -0
  381. package/tui/src/tools/ToolSearchTool/schemas.ts +30 -0
  382. package/tui/src/tools/ToolSearchTool/searchPool.ts +47 -0
  383. package/tui/src/tools/ToolSearchTool/supportIntentHints.ts +140 -0
  384. package/tui/src/tools/TranslateTool/TranslateTool.ts +1 -1
  385. package/tui/src/tools/VerifyPrimitive/VerifyPrimitive.ts +2 -1
  386. package/tui/src/tools/WebFetchTool/WebFetchTool.ts +43 -138
  387. package/tui/src/tools/WebFetchTool/call.ts +227 -0
  388. package/tui/src/tools/WebFetchTool/resolvedAddressSafety.ts +78 -0
  389. package/tui/src/tools/WebFetchTool/sourceVerification.ts +204 -0
  390. package/tui/src/tools/WebFetchTool/types.ts +23 -0
  391. package/tui/src/tools/WebFetchTool/urlSafety.ts +181 -0
  392. package/tui/src/tools/WebFetchTool/utils.ts +1 -1
  393. package/tui/src/tools/WebSearchTool/UI.tsx +0 -1
  394. package/tui/src/tools/WebSearchTool/WebSearchTool.ts +9 -313
  395. package/tui/src/tools/WebSearchTool/call.ts +33 -0
  396. package/tui/src/tools/WebSearchTool/responseMapping.ts +190 -0
  397. package/tui/src/tools/WebSearchTool/resultBlock.ts +47 -0
  398. package/tui/src/tools/WebSearchTool/schemas.ts +47 -0
  399. package/tui/src/tools/WebSearchTool/toolSchema.ts +12 -0
  400. package/tui/src/tools/WorkspaceToolAdapter/WorkspaceToolAdapter.ts +79 -0
  401. package/tui/src/tools/WorkspaceToolAdapter/allowedRootPolicy.ts +85 -0
  402. package/tui/src/tools/WorkspaceToolAdapter/documentFormatGuards.ts +73 -0
  403. package/tui/src/tools/WorkspaceToolAdapter/inputNormalization.ts +105 -0
  404. package/tui/src/tools/WorkspaceToolAdapter/mcpExposurePolicy.ts +64 -0
  405. package/tui/src/tools/WorkspaceToolAdapter/toolDefFactory.ts +215 -0
  406. package/tui/src/tools/WorkspaceToolAdapter/toolNames.ts +6 -0
  407. package/tui/src/tools/WorkspaceToolAdapter/workspacePolicy.ts +15 -0
  408. package/tui/src/tools/_shared/dispatchPrimitive.ts +6 -6
  409. package/tui/src/tools/_shared/documentChangeToPatch.ts +125 -0
  410. package/tui/src/tools/_shared/documentDispatchArguments.ts +87 -0
  411. package/tui/src/tools/_shared/documentPrimitiveTimeout.ts +13 -0
  412. package/tui/src/tools/_shared/documentToolResultRender.ts +98 -0
  413. package/tui/src/tools/_shared/pendingCallRegistry.ts +1 -6
  414. package/tui/src/tools/_shared/rootPrimitiveInput.ts +1 -0
  415. package/tui/src/tools/_shared/toolChoiceRepair/documentCompletionPatterns.ts +58 -0
  416. package/tui/src/tools/_shared/toolChoiceRepair/documentCompletionPrompt.ts +271 -0
  417. package/tui/src/tools/_shared/toolChoiceRepair/documentRepair.ts +452 -0
  418. package/tui/src/tools/_shared/toolChoiceRepair/messageAccess.ts +80 -0
  419. package/tui/src/tools/_shared/toolChoiceRepair/publicDataRepair.ts +92 -0
  420. package/tui/src/tools/_shared/toolChoiceRepair/supportRepair.ts +135 -0
  421. package/tui/src/tools/_shared/toolChoiceRepair.ts +55 -860
  422. package/tui/src/tools/shared/mockDisclaimer.ts +1 -1
  423. package/tui/src/tools.ts +39 -190
  424. package/tui/src/types/fileSuggestion.ts +4 -26
  425. package/tui/src/types/generated/events_mono/claude_code/v1/claude_code_internal_event.ts +186 -148
  426. package/tui/src/types/generated/events_mono/common/v1/auth.ts +25 -11
  427. package/tui/src/types/generated/events_mono/growthbook/v1/growthbook_experiment_event.ts +47 -30
  428. package/tui/src/types/generated/google/protobuf/timestamp.ts +21 -7
  429. package/tui/src/types/message.ts +80 -102
  430. package/tui/src/types/messageQueueTypes.ts +6 -28
  431. package/tui/src/types/notebook.ts +16 -38
  432. package/tui/src/types/statusLine.ts +4 -26
  433. package/tui/src/types/tools.ts +24 -46
  434. package/tui/src/types/utils.ts +6 -28
  435. package/tui/src/upstreamproxy/relay.ts +7 -3
  436. package/tui/src/upstreamproxy/upstreamproxy.ts +1 -1
  437. package/tui/src/utils/assistantMessageFactories.ts +9 -3
  438. package/tui/src/utils/auth.ts +129 -139
  439. package/tui/src/utils/bash/ast.ts +23 -23
  440. package/tui/src/utils/bash/bashParser.ts +5 -5
  441. package/tui/src/utils/billing.ts +1 -1
  442. package/tui/src/utils/collapseReadSearch.ts +3 -3
  443. package/tui/src/utils/cronTasks.ts +1 -1
  444. package/tui/src/utils/execFileNoThrow.ts +1 -1
  445. package/tui/src/utils/filePersistence/types.ts +16 -38
  446. package/tui/src/utils/forkedAgent.ts +1 -1
  447. package/tui/src/utils/gracefulShutdown.ts +4 -4
  448. package/tui/src/utils/heapDumpService.ts +12 -8
  449. package/tui/src/utils/hooks/apiQueryHookHelper.ts +1 -1
  450. package/tui/src/utils/hooks/execPromptHook.ts +1 -1
  451. package/tui/src/utils/hooks/skillImprovement.ts +1 -1
  452. package/tui/src/utils/mcp/dateTimeParser.ts +1 -1
  453. package/tui/src/utils/messages.ts +18 -0
  454. package/tui/src/utils/migrateSessions.ts +3 -3
  455. package/tui/src/utils/model/model.ts +6 -6
  456. package/tui/src/utils/permissions/yoloClassifier.ts +1 -1
  457. package/tui/src/utils/plugins/headlessPluginInstall.ts +1 -1
  458. package/tui/src/utils/plugins/mcpPluginIntegration.ts +1 -1
  459. package/tui/src/utils/plugins/mcpbHandler.ts +1 -1
  460. package/tui/src/utils/plugins/pluginLoader.ts +8 -8
  461. package/tui/src/utils/protectedNamespace.ts +5 -3
  462. package/tui/src/utils/rawJsonToolCall.ts +242 -0
  463. package/tui/src/utils/ripgrep.ts +16 -7
  464. package/tui/src/utils/sessionTitle.ts +1 -1
  465. package/tui/src/utils/settings/permissionValidation.ts +14 -2
  466. package/tui/src/utils/shell/prefix.ts +1 -1
  467. package/tui/src/utils/sideQuery.ts +1 -1
  468. package/tui/src/utils/systemThemeWatcher.ts +13 -3
  469. package/tui/src/utils/teleport.tsx +1 -1
  470. package/uv.lock +400 -14
  471. package/tui/src/services/api/claude.ts +0 -3540
  472. package/tui/src/tools/_shared/directPublicDataGuard.ts +0 -362
  473. package/tui/src/tools/_shared/kmaAnalysisGuard.ts +0 -197
  474. package/tui/src/tools/_shared/kmaAviationGuard.ts +0 -70
  475. package/tui/src/tools/_shared/nmcAedGuard.ts +0 -234
  476. package/tui/src/tools/_shared/protectedCheckGuard.ts +0 -207
  477. package/tui/src/tools/_shared/textToolCallGuard.ts +0 -91
@@ -12,6 +12,7 @@ import random
12
12
  import time
13
13
  from collections.abc import AsyncIterator, Iterator
14
14
  from contextvars import Token
15
+ from copy import deepcopy
15
16
  from dataclasses import dataclass
16
17
  from typing import TYPE_CHECKING, cast
17
18
 
@@ -168,6 +169,62 @@ def _compute_prompt_hash(system_text: str) -> str:
168
169
  return hashlib.sha256(hashed.encode("utf-8")).hexdigest()
169
170
 
170
171
 
172
+ def _provider_safe_parameters_schema(schema: dict[str, object]) -> dict[str, object]:
173
+ """Inline Pydantic-local JSON Schema refs before sending tool schemas."""
174
+ root = deepcopy(schema)
175
+ defs_obj = root.get("$defs")
176
+ defs: dict[str, object] = {}
177
+ if isinstance(defs_obj, dict):
178
+ defs = {str(name): value for name, value in defs_obj.items()}
179
+
180
+ inlined = _inline_local_json_schema_refs(root, defs, ())
181
+ if not isinstance(inlined, dict):
182
+ raise ValueError("OpenAI tool parameters schema must be a JSON object")
183
+ return cast(dict[str, object], inlined)
184
+
185
+
186
+ def _inline_local_json_schema_refs(
187
+ node: object,
188
+ defs: dict[str, object],
189
+ stack: tuple[str, ...],
190
+ ) -> object:
191
+ if isinstance(node, list):
192
+ return [_inline_local_json_schema_refs(item, defs, stack) for item in node]
193
+ if not isinstance(node, dict):
194
+ return node
195
+
196
+ ref_name = _local_def_ref_name(node.get("$ref"))
197
+ if ref_name is not None:
198
+ if ref_name in stack:
199
+ raise ValueError(f"Cyclic JSON Schema reference is not supported: #/$defs/{ref_name}")
200
+ if ref_name not in defs:
201
+ raise ValueError(f"Unknown JSON Schema reference: #/$defs/{ref_name}")
202
+
203
+ target = deepcopy(defs[ref_name])
204
+ expanded = _inline_local_json_schema_refs(target, defs, (*stack, ref_name))
205
+ siblings = {str(key): value for key, value in node.items() if key not in {"$ref", "$defs"}}
206
+ if not siblings:
207
+ return expanded
208
+ if not isinstance(expanded, dict):
209
+ raise ValueError(f"JSON Schema reference target must be an object: #/$defs/{ref_name}")
210
+ merged = cast(dict[str, object], expanded).copy()
211
+ for key, value in siblings.items():
212
+ merged[key] = _inline_local_json_schema_refs(value, defs, stack)
213
+ return merged
214
+
215
+ return {
216
+ str(key): _inline_local_json_schema_refs(value, defs, stack)
217
+ for key, value in node.items()
218
+ if key != "$defs"
219
+ }
220
+
221
+
222
+ def _local_def_ref_name(ref: object) -> str | None:
223
+ if not isinstance(ref, str) or not ref.startswith("#/$defs/"):
224
+ return None
225
+ return ref.removeprefix("#/$defs/").replace("~1", "/").replace("~0", "~")
226
+
227
+
171
228
  class LLMClient:
172
229
  """Async LLM client for FriendliAI Serverless endpoint."""
173
230
 
@@ -576,7 +633,38 @@ class LLMClient:
576
633
 
577
634
  # Yield events; watch for mid-stream 429 envelopes (T016)
578
635
  rate_limited_mid_stream = False
579
- async for line in response.aiter_lines():
636
+ line_iter = response.aiter_lines()
637
+ next_data_line_deadline = (
638
+ time.monotonic() + self._config.stream_idle_timeout
639
+ )
640
+ while True:
641
+ try:
642
+ timeout_remaining = next_data_line_deadline - time.monotonic()
643
+ if timeout_remaining <= 0:
644
+ raise TimeoutError
645
+ line = await asyncio.wait_for(
646
+ anext(line_iter),
647
+ timeout=timeout_remaining,
648
+ )
649
+ except StopAsyncIteration:
650
+ break
651
+ except TimeoutError as exc:
652
+ _duration_ms = (time.monotonic() - _stream_start) * 1000
653
+ self._metrics_record_call(
654
+ success=False,
655
+ duration_ms=_duration_ms,
656
+ )
657
+ _metrics_recorded = True
658
+ raise StreamInterruptedError(
659
+ "Stream idle timeout after "
660
+ f"{self._config.stream_idle_timeout:g}s "
661
+ "without a new SSE data line"
662
+ ) from exc
663
+ if not line.startswith("data: "):
664
+ continue
665
+ next_data_line_deadline = (
666
+ time.monotonic() + self._config.stream_idle_timeout
667
+ )
580
668
  if self._is_rate_limit_envelope(line):
581
669
  rate_limited_mid_stream = True
582
670
  delay = self._compute_rate_limit_delay(response, attempt, policy)
@@ -1104,8 +1192,19 @@ class LLMClient:
1104
1192
  reaches FriendliAI's strict OpenAI-compatible validator.
1105
1193
  """
1106
1194
  if isinstance(tool, ToolDefinition):
1107
- return cast(dict[str, object], tool.model_dump())
1108
- return cast(dict[str, object], ToolDefinition.model_validate(tool).model_dump())
1195
+ payload = cast(dict[str, object], tool.model_dump())
1196
+ else:
1197
+ payload = cast(dict[str, object], ToolDefinition.model_validate(tool).model_dump())
1198
+
1199
+ function_obj = payload.get("function")
1200
+ if isinstance(function_obj, dict):
1201
+ function = cast(dict[str, object], function_obj)
1202
+ parameters_obj = function.get("parameters")
1203
+ if isinstance(parameters_obj, dict):
1204
+ function["parameters"] = _provider_safe_parameters_schema(
1205
+ cast(dict[str, object], parameters_obj)
1206
+ )
1207
+ return payload
1109
1208
 
1110
1209
  # ------------------------------------------------------------------
1111
1210
  # Private retry helpers (T015)
@@ -16,6 +16,7 @@ class LLMClientConfig(BaseSettings):
16
16
  UMMAYA_FRIENDLI_MODEL — model identifier
17
17
  UMMAYA_LLM_SESSION_BUDGET — per-session token budget
18
18
  UMMAYA_LLM_TIMEOUT_SECONDS — HTTP stream timeout budget
19
+ UMMAYA_LLM_STREAM_IDLE_TIMEOUT_SECONDS — max idle gap between stream lines
19
20
  """
20
21
 
21
22
  model_config = SettingsConfigDict(
@@ -59,6 +60,11 @@ class LLMClientConfig(BaseSettings):
59
60
  ),
60
61
  description="HTTP request timeout in seconds.",
61
62
  )
63
+ stream_idle_timeout: float = Field(
64
+ default=90.0,
65
+ validation_alias="UMMAYA_LLM_STREAM_IDLE_TIMEOUT_SECONDS",
66
+ description="Maximum idle time between streaming response lines in seconds.",
67
+ )
62
68
  max_retries: int = Field(
63
69
  default=3,
64
70
  description="Maximum number of retry attempts on transient failures.",
@@ -80,12 +86,11 @@ class LLMClientConfig(BaseSettings):
80
86
  raise ValueError("session_budget must be > 0")
81
87
  return value
82
88
 
83
- @field_validator("timeout")
89
+ @field_validator("timeout", "stream_idle_timeout")
84
90
  @classmethod
85
91
  def timeout_must_be_positive(cls, value: float) -> float:
86
- """Enforce timeout > 0."""
87
92
  if value <= 0:
88
- raise ValueError("timeout must be > 0")
93
+ raise ValueError("timeout values must be > 0")
89
94
  return value
90
95
 
91
96
  @field_validator("max_retries")
@@ -7,6 +7,7 @@ Exports the active primitive symbols that make up the main-tool surface:
7
7
  - ``locate``: geocoding (re-exported from Spec 022).
8
8
  - ``send``: write-transaction absorber (Spec 031 US1, T024).
9
9
  - ``check``: delegation-only identity binding (Spec 031 US2, T042).
10
+ - ``document``: local public-document authoring and review harness.
10
11
 
11
12
  ``subscribe`` is intentionally not part of the active surface. National alert
12
13
  and notice subscriptions are app/phone push-notification concerns, not a CLI
@@ -18,6 +19,7 @@ from __future__ import annotations
18
19
  from collections.abc import Callable
19
20
  from typing import Any
20
21
 
22
+ from ummaya.primitives.document import document
21
23
  from ummaya.primitives.submit import send
22
24
  from ummaya.primitives.verify import check
23
25
  from ummaya.tools.lookup import find
@@ -46,6 +48,7 @@ PRIMITIVE_REGISTRY: dict[str, Callable[..., Any]] = {
46
48
  "locate": locate,
47
49
  "send": send,
48
50
  "check": check,
51
+ "document": document,
49
52
  }
50
53
 
51
54
  # Subset of ``PRIMITIVE_REGISTRY`` whose invocation requires a Spec 033
@@ -64,9 +67,9 @@ PRIMITIVE_REGISTRY: dict[str, Callable[..., Any]] = {
64
67
  #
65
68
  # The complement (``PRIMITIVE_REGISTRY.keys() - GATED_PRIMITIVES``) is the
66
69
  # fully auto-allowed set: find / locate.
67
- GATED_PRIMITIVES: frozenset[str] = frozenset({"check", "send"})
70
+ GATED_PRIMITIVES: frozenset[str] = frozenset({"check", "send", "document"})
68
71
  LIGHT_GATE_PRIMITIVES: frozenset[str] = frozenset({"check"})
69
- HEAVY_GATE_PRIMITIVES: frozenset[str] = frozenset({"send"})
72
+ HEAVY_GATE_PRIMITIVES: frozenset[str] = frozenset({"send", "document"})
70
73
 
71
74
  # ``__all__`` enumerates the LLM-visible primitive *surface* — the active root
72
75
  # verbs. The metadata constants ``PRIMITIVE_REGISTRY``
@@ -77,6 +80,7 @@ __all__ = [
77
80
  "locate",
78
81
  "send",
79
82
  "check",
83
+ "document",
80
84
  ]
81
85
  # Metadata constants (GATED_PRIMITIVES / LIGHT_GATE_PRIMITIVES /
82
86
  # HEAVY_GATE_PRIMITIVES / PRIMITIVE_REGISTRY) are intentionally NOT in __all__
@@ -36,7 +36,7 @@ logger = logging.getLogger(__name__)
36
36
  # Accepts single-scope strings AND comma-joined multi-scope strings for US1.
37
37
  # ---------------------------------------------------------------------------
38
38
 
39
- _SCOPE_VERBS = r"find|locate|send|check|lookup|resolve_location|submit|verify"
39
+ _SCOPE_VERBS = r"find|locate|send|check|document|lookup|resolve_location|submit|verify"
40
40
 
41
41
  _SINGLE_SCOPE_PATTERN: re.Pattern[str] = re.compile(rf"^({_SCOPE_VERBS}):[a-z0-9_]+\.[a-z0-9_-]+$")
42
42
 
@@ -0,0 +1,28 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ """Document primitive placeholder.
3
+
4
+ The model-facing `document` tool is registered as a concrete GovAPITool by the
5
+ document harness. This coroutine exists so primitive registries and IPC guards
6
+ can identify `document` as an allowed top-level primitive name.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ from typing import Any
12
+
13
+
14
+ async def document(*_args: object, **_kwargs: object) -> dict[str, Any]:
15
+ """Document primitive marker.
16
+
17
+ Runtime execution is owned by `ummaya.tools.documents.registry` because it
18
+ needs session-local artifact stores and format-engine adapters.
19
+ """
20
+
21
+ return {
22
+ "kind": "error",
23
+ "reason": "direct_document_primitive_not_bound",
24
+ "message": "The document primitive must be executed through the registered document tool.",
25
+ }
26
+
27
+
28
+ __all__ = ["document"]
@@ -104,9 +104,6 @@ class UmmayaSettings(BaseSettings):
104
104
  live_adapter_proxy_timeout_seconds: float = Field(default=30.0, gt=0)
105
105
  """HTTP timeout for operator-managed live adapter proxy calls."""
106
106
 
107
- live_adapter_proxy_token: str = Field(default="")
108
- """Optional bearer token for private/self-hosted live adapter gateways."""
109
-
110
107
  live_adapter_gateway_token: str = Field(default="")
111
108
  """Optional bearer token required by the hosted live adapter gateway server."""
112
109
 
@@ -34,7 +34,7 @@ from typing import TYPE_CHECKING, Any
34
34
 
35
35
  from pydantic import BaseModel, ConfigDict, Field, RootModel
36
36
 
37
- from ummaya.tools.models import AdapterRealDomainPolicy, GovAPITool
37
+ from ummaya.tools.models import AdapterRealDomainPolicy, GovAPITool, MockFidelityGrade
38
38
 
39
39
  if TYPE_CHECKING:
40
40
  from ummaya.tools.registry import ToolRegistry
@@ -346,6 +346,7 @@ def _verify_to_govapitool(entry: dict[str, Any]) -> GovAPITool:
346
346
  rate_limit_per_minute=30,
347
347
  is_core=False, # Discoverable via lookup search; NOT in primary LLM tool list
348
348
  primitive="check",
349
+ adapter_mode="mock",
349
350
  )
350
351
 
351
352
 
@@ -385,9 +386,24 @@ def _submit_to_govapitool(
385
386
  rate_limit_per_minute=registration.rate_limit_per_minute,
386
387
  is_core=False, # Discoverable via lookup search; NOT in primary LLM tool list
387
388
  primitive="send",
389
+ adapter_mode="mock",
390
+ mock_fidelity_grade=_mock_fidelity_from_source_mode(registration.source_mode),
388
391
  )
389
392
 
390
393
 
394
+ def _mock_fidelity_from_source_mode(source_mode: object) -> MockFidelityGrade:
395
+ raw = str(getattr(source_mode, "value", source_mode))
396
+ match raw:
397
+ case "OPENAPI":
398
+ return "OPENAPI"
399
+ case "OOS":
400
+ return "OOS"
401
+ case "harness-only" | "HARNESS_ONLY":
402
+ return "HARNESS_ONLY"
403
+ case _:
404
+ return "unknown"
405
+
406
+
391
407
  # ---------------------------------------------------------------------------
392
408
  # Public entry point
393
409
  # ---------------------------------------------------------------------------
@@ -0,0 +1,297 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ """Public AX document harness package."""
3
+
4
+ from ummaya.tools.documents.adapter_registry import (
5
+ DocumentAdapterRegistry,
6
+ EngineBackedDocumentAdapter,
7
+ UnsupportedDocumentAdapterError,
8
+ build_default_document_adapter_registry,
9
+ build_document_adapter_registry_from_engine_registry,
10
+ )
11
+ from ummaya.tools.documents.artifact_store import (
12
+ ArtifactStoreConflictError,
13
+ ArtifactStoreError,
14
+ ArtifactStoreSecurityError,
15
+ DocumentArtifactStore,
16
+ )
17
+ from ummaya.tools.documents.baselines import (
18
+ CONFORMANCE_BASELINE_FIXTURE_PATH,
19
+ BaselineField,
20
+ BaselineTableGeometry,
21
+ BaselineTextAnchor,
22
+ ConformanceBaseline,
23
+ ConformanceBaselineCatalog,
24
+ load_conformance_baselines,
25
+ )
26
+ from ummaya.tools.documents.capability import (
27
+ FormatCapabilityProfile as CandidateCapabilityProfile,
28
+ )
29
+ from ummaya.tools.documents.capability import (
30
+ PromotionDecision,
31
+ PromotionDecisionManifest,
32
+ PromotionDecisionRecord,
33
+ build_inspection_read_profile,
34
+ evaluate_capability_promotion,
35
+ load_promotion_decision_manifest,
36
+ persist_promotion_decision_manifest,
37
+ )
38
+ from ummaya.tools.documents.contracts import (
39
+ DocumentToolContract,
40
+ DocumentToolContractCatalog,
41
+ load_document_tool_contracts,
42
+ )
43
+ from ummaya.tools.documents.diff import DocumentChange, DocumentDiff, RenderArtifactRecord
44
+ from ummaya.tools.documents.engines import (
45
+ DocumentEngineRegistry,
46
+ DocumentInspectionEngine,
47
+ DocumentMutationEngine,
48
+ UnsupportedDocumentEngineError,
49
+ build_default_document_engine_registry,
50
+ )
51
+ from ummaya.tools.documents.fixtures import (
52
+ DocumentFixtureManifest,
53
+ load_fixture_manifest,
54
+ )
55
+ from ummaya.tools.documents.formats.base import DocumentFormatAdapter
56
+ from ummaya.tools.documents.inspection import inspect_document
57
+ from ummaya.tools.documents.intake import (
58
+ DocumentIntakePolicy,
59
+ inspect_document_intake,
60
+ )
61
+ from ummaya.tools.documents.models import (
62
+ KNOWN_DOCUMENT_FORMAT_FAMILIES,
63
+ PROMOTED_RUNTIME_DOCUMENT_FORMATS,
64
+ ArtifactLineage,
65
+ AutonomousFillPlan,
66
+ AutonomousSaveIntent,
67
+ AutonomousStyleIntent,
68
+ BlockedReason,
69
+ DocumentArtifact,
70
+ DocumentChangedViewport,
71
+ DocumentClipRect,
72
+ DocumentExtraction,
73
+ DocumentFormat,
74
+ DocumentFormatFamily,
75
+ DocumentIntakeResult,
76
+ DocumentIntent,
77
+ DocumentIR,
78
+ DocumentPatch,
79
+ DocumentPatchOperation,
80
+ DocumentProtectedRange,
81
+ DocumentSavedExport,
82
+ DocumentSecurityFinding,
83
+ DocumentToolCall,
84
+ DocumentToolResult,
85
+ DocumentViewportCamera,
86
+ FormatCapabilityProfile,
87
+ FormField,
88
+ FormSlot,
89
+ KnownDocumentFormat,
90
+ OperationType,
91
+ PermissionState,
92
+ PrimitiveName,
93
+ PromotionCapability,
94
+ PromotionGateResult,
95
+ PromotionState,
96
+ ProtectedRangeCategory,
97
+ PublicFormValidationReport,
98
+ SecurityState,
99
+ SourceAnchor,
100
+ StyleDescriptor,
101
+ ToolResultStatus,
102
+ ValidationDecision,
103
+ ValidationFinding,
104
+ ValidationReadiness,
105
+ )
106
+ from ummaya.tools.documents.orchestrator import (
107
+ DocumentInspectionOrchestrator,
108
+ DocumentOrchestrator,
109
+ )
110
+ from ummaya.tools.documents.patch import (
111
+ DocumentPatchResult,
112
+ apply_document_patch,
113
+ copy_for_edit,
114
+ )
115
+ from ummaya.tools.documents.permissions import (
116
+ DocumentArtifactPermissionKind,
117
+ DocumentArtifactPermissionPayload,
118
+ build_document_artifact_permission,
119
+ document_permission_denied_result,
120
+ )
121
+ from ummaya.tools.documents.planner import plan_autonomous_fill, public_document_writing_profile
122
+ from ummaya.tools.documents.registry import (
123
+ DOCUMENT_TOOL_IDS,
124
+ DocumentToolRuntime,
125
+ register_document_tools,
126
+ )
127
+ from ummaya.tools.documents.render import (
128
+ DocumentRenderResult,
129
+ render_document_evidence,
130
+ )
131
+ from ummaya.tools.documents.reread import (
132
+ DocumentReReadResult,
133
+ ReReadMismatch,
134
+ reread_derivative,
135
+ )
136
+ from ummaya.tools.documents.scorecard import (
137
+ CapabilityScorecard,
138
+ PublicFormMetricScore,
139
+ compute_public_form_metrics,
140
+ )
141
+ from ummaya.tools.documents.style import (
142
+ DocumentPatchValidationError,
143
+ validate_document_patch,
144
+ )
145
+ from ummaya.tools.documents.tool_defs import (
146
+ DocumentApplyFillRequest,
147
+ DocumentApplyStyleRequest,
148
+ DocumentCopyForEditRequest,
149
+ DocumentExtractionResult,
150
+ DocumentExtractRequest,
151
+ DocumentFieldPatch,
152
+ DocumentFormSchemaRequest,
153
+ DocumentInspectRequest,
154
+ DocumentInspectResult,
155
+ DocumentLocator,
156
+ DocumentMutationResult,
157
+ DocumentRenderRequest,
158
+ DocumentSaveRequest,
159
+ DocumentStylePatch,
160
+ DocumentValidatePublicFormRequest,
161
+ DocumentValidationResult,
162
+ build_document_tool_definitions,
163
+ needs_input_document_tool_result,
164
+ unsupported_document_tool_result,
165
+ )
166
+ from ummaya.tools.documents.validate import validate_public_form
167
+
168
+ __all__ = [
169
+ "DOCUMENT_TOOL_IDS",
170
+ "ArtifactLineage",
171
+ "ArtifactStoreConflictError",
172
+ "ArtifactStoreError",
173
+ "ArtifactStoreSecurityError",
174
+ "AutonomousFillPlan",
175
+ "AutonomousSaveIntent",
176
+ "AutonomousStyleIntent",
177
+ "BlockedReason",
178
+ "BaselineField",
179
+ "BaselineTableGeometry",
180
+ "BaselineTextAnchor",
181
+ "CONFORMANCE_BASELINE_FIXTURE_PATH",
182
+ "CandidateCapabilityProfile",
183
+ "CapabilityScorecard",
184
+ "ConformanceBaseline",
185
+ "ConformanceBaselineCatalog",
186
+ "DocumentArtifact",
187
+ "DocumentArtifactPermissionKind",
188
+ "DocumentArtifactPermissionPayload",
189
+ "DocumentArtifactStore",
190
+ "DocumentAdapterRegistry",
191
+ "DocumentApplyFillRequest",
192
+ "DocumentApplyStyleRequest",
193
+ "DocumentChangedViewport",
194
+ "DocumentClipRect",
195
+ "DocumentCopyForEditRequest",
196
+ "DocumentEngineRegistry",
197
+ "DocumentExtractRequest",
198
+ "DocumentExtraction",
199
+ "DocumentExtractionResult",
200
+ "DocumentFieldPatch",
201
+ "DocumentFixtureManifest",
202
+ "DocumentFormat",
203
+ "DocumentFormatAdapter",
204
+ "DocumentFormatFamily",
205
+ "DocumentIR",
206
+ "DocumentFormSchemaRequest",
207
+ "DocumentIntakePolicy",
208
+ "DocumentIntakeResult",
209
+ "DocumentIntent",
210
+ "DocumentInspectRequest",
211
+ "DocumentInspectResult",
212
+ "DocumentInspectionEngine",
213
+ "DocumentInspectionOrchestrator",
214
+ "DocumentLocator",
215
+ "DocumentMutationEngine",
216
+ "DocumentMutationResult",
217
+ "DocumentOrchestrator",
218
+ "DocumentPatch",
219
+ "DocumentPatchResult",
220
+ "DocumentPatchOperation",
221
+ "DocumentPatchValidationError",
222
+ "DocumentProtectedRange",
223
+ "DocumentReReadResult",
224
+ "DocumentRenderResult",
225
+ "DocumentRenderRequest",
226
+ "DocumentSaveRequest",
227
+ "DocumentSavedExport",
228
+ "DocumentSecurityFinding",
229
+ "DocumentStylePatch",
230
+ "DocumentToolCall",
231
+ "DocumentToolContract",
232
+ "DocumentToolContractCatalog",
233
+ "DocumentToolResult",
234
+ "DocumentToolRuntime",
235
+ "DocumentViewportCamera",
236
+ "DocumentValidationResult",
237
+ "DocumentValidatePublicFormRequest",
238
+ "DocumentChange",
239
+ "DocumentDiff",
240
+ "EngineBackedDocumentAdapter",
241
+ "FormatCapabilityProfile",
242
+ "FormField",
243
+ "FormSlot",
244
+ "KNOWN_DOCUMENT_FORMAT_FAMILIES",
245
+ "KnownDocumentFormat",
246
+ "OperationType",
247
+ "PermissionState",
248
+ "PrimitiveName",
249
+ "ProtectedRangeCategory",
250
+ "PROMOTED_RUNTIME_DOCUMENT_FORMATS",
251
+ "PromotionCapability",
252
+ "PromotionDecision",
253
+ "PromotionDecisionManifest",
254
+ "PromotionDecisionRecord",
255
+ "PromotionGateResult",
256
+ "PromotionState",
257
+ "PublicFormValidationReport",
258
+ "PublicFormMetricScore",
259
+ "ReReadMismatch",
260
+ "RenderArtifactRecord",
261
+ "SecurityState",
262
+ "SourceAnchor",
263
+ "StyleDescriptor",
264
+ "ToolResultStatus",
265
+ "UnsupportedDocumentAdapterError",
266
+ "UnsupportedDocumentEngineError",
267
+ "build_document_adapter_registry_from_engine_registry",
268
+ "build_default_document_adapter_registry",
269
+ "build_default_document_engine_registry",
270
+ "ValidationDecision",
271
+ "ValidationFinding",
272
+ "ValidationReadiness",
273
+ "apply_document_patch",
274
+ "build_document_artifact_permission",
275
+ "build_document_tool_definitions",
276
+ "build_inspection_read_profile",
277
+ "copy_for_edit",
278
+ "compute_public_form_metrics",
279
+ "document_permission_denied_result",
280
+ "evaluate_capability_promotion",
281
+ "inspect_document_intake",
282
+ "inspect_document",
283
+ "load_document_tool_contracts",
284
+ "load_fixture_manifest",
285
+ "load_conformance_baselines",
286
+ "load_promotion_decision_manifest",
287
+ "needs_input_document_tool_result",
288
+ "plan_autonomous_fill",
289
+ "public_document_writing_profile",
290
+ "persist_promotion_decision_manifest",
291
+ "register_document_tools",
292
+ "render_document_evidence",
293
+ "reread_derivative",
294
+ "unsupported_document_tool_result",
295
+ "validate_document_patch",
296
+ "validate_public_form",
297
+ ]