ummaya 0.2.3 → 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 (534) hide show
  1. package/README.md +17 -3
  2. package/bin/ummaya +10 -1
  3. package/npm-shrinkwrap.json +253 -2
  4. package/package.json +5 -1
  5. package/prompts/manifest.yaml +2 -2
  6. package/prompts/session_guidance_v1.md +3 -1
  7. package/prompts/system_v1.md +9 -7
  8. package/pyproject.toml +26 -7
  9. package/specs/2803-document-production-hardening/contracts/document-tools.schema.json +1043 -0
  10. package/src/ummaya/_canonical/__init__.py +2 -0
  11. package/src/ummaya/context/builder.py +17 -11
  12. package/src/ummaya/engine/engine.py +30 -113
  13. package/src/ummaya/engine/query.py +20 -0
  14. package/src/ummaya/evidence/__init__.py +44 -0
  15. package/src/ummaya/evidence/__main__.py +7 -0
  16. package/src/ummaya/evidence/dataset_contract.py +193 -0
  17. package/src/ummaya/evidence/document_authoring_cases.py +33 -0
  18. package/src/ummaya/evidence/document_harness.py +313 -0
  19. package/src/ummaya/evidence/document_viewer_ux.py +391 -0
  20. package/src/ummaya/evidence/gates.py +70 -0
  21. package/src/ummaya/evidence/json_types.py +20 -0
  22. package/src/ummaya/evidence/models.py +145 -0
  23. package/src/ummaya/evidence/output_payload.py +89 -0
  24. package/src/ummaya/evidence/payload_documents.py +233 -0
  25. package/src/ummaya/evidence/route_contracts.py +224 -0
  26. package/src/ummaya/evidence/route_helpers.py +150 -0
  27. package/src/ummaya/evidence/runner.py +177 -0
  28. package/src/ummaya/evidence/source_provenance.py +246 -0
  29. package/src/ummaya/evidence/source_provenance_redaction.py +176 -0
  30. package/src/ummaya/evidence/task_registry.py +264 -0
  31. package/src/ummaya/evidence/tool_layer.py +39 -0
  32. package/src/ummaya/evidence/tool_layer_models.py +151 -0
  33. package/src/ummaya/ipc/adapter_manifest_emitter.py +26 -10
  34. package/src/ummaya/ipc/document_intent_normalization.py +185 -0
  35. package/src/ummaya/ipc/frame_schema.py +52 -5
  36. package/src/ummaya/ipc/route_diagnostics.py +73 -0
  37. package/src/ummaya/ipc/stdio.py +2282 -417
  38. package/src/ummaya/llm/client.py +234 -59
  39. package/src/ummaya/llm/config.py +8 -3
  40. package/src/ummaya/llm/reasoning.py +84 -0
  41. package/src/ummaya/primitives/__init__.py +6 -2
  42. package/src/ummaya/primitives/delegation.py +1 -1
  43. package/src/ummaya/primitives/document.py +28 -0
  44. package/src/ummaya/settings.py +0 -3
  45. package/src/ummaya/tools/discovery_bridge.py +34 -2
  46. package/src/ummaya/tools/documents/__init__.py +297 -0
  47. package/src/ummaya/tools/documents/adapter_registry.py +487 -0
  48. package/src/ummaya/tools/documents/archive_container_probe.py +167 -0
  49. package/src/ummaya/tools/documents/artifact_store.py +454 -0
  50. package/src/ummaya/tools/documents/authoring.py +283 -0
  51. package/src/ummaya/tools/documents/baselines.py +114 -0
  52. package/src/ummaya/tools/documents/capability.py +331 -0
  53. package/src/ummaya/tools/documents/contracts.py +112 -0
  54. package/src/ummaya/tools/documents/conversion.py +521 -0
  55. package/src/ummaya/tools/documents/diff.py +275 -0
  56. package/src/ummaya/tools/documents/engines.py +163 -0
  57. package/src/ummaya/tools/documents/evaluation.py +291 -0
  58. package/src/ummaya/tools/documents/explicit_values.py +108 -0
  59. package/src/ummaya/tools/documents/fixtures.py +174 -0
  60. package/src/ummaya/tools/documents/format_completion_audit.py +471 -0
  61. package/src/ummaya/tools/documents/formats/__init__.py +2 -0
  62. package/src/ummaya/tools/documents/formats/archive.py +528 -0
  63. package/src/ummaya/tools/documents/formats/base.py +41 -0
  64. package/src/ummaya/tools/documents/formats/code_file.py +211 -0
  65. package/src/ummaya/tools/documents/formats/data_file.py +272 -0
  66. package/src/ummaya/tools/documents/formats/hwp.py +284 -0
  67. package/src/ummaya/tools/documents/formats/hwpx.py +1837 -0
  68. package/src/ummaya/tools/documents/formats/odf.py +435 -0
  69. package/src/ummaya/tools/documents/formats/ooxml.py +1030 -0
  70. package/src/ummaya/tools/documents/formats/passive.py +766 -0
  71. package/src/ummaya/tools/documents/formats/pdf.py +702 -0
  72. package/src/ummaya/tools/documents/formats/text_web.py +268 -0
  73. package/src/ummaya/tools/documents/hwp_conversion_probe.py +178 -0
  74. package/src/ummaya/tools/documents/hwp_direct_candidate.py +141 -0
  75. package/src/ummaya/tools/documents/inspection.py +289 -0
  76. package/src/ummaya/tools/documents/intake.py +1079 -0
  77. package/src/ummaya/tools/documents/legacy_office_promotion_probe.py +366 -0
  78. package/src/ummaya/tools/documents/models.py +1598 -0
  79. package/src/ummaya/tools/documents/odf_promotion_probe.py +167 -0
  80. package/src/ummaya/tools/documents/orchestrator.py +96 -0
  81. package/src/ummaya/tools/documents/passive_capability_probe.py +251 -0
  82. package/src/ummaya/tools/documents/patch.py +170 -0
  83. package/src/ummaya/tools/documents/pdfa_conformance.py +284 -0
  84. package/src/ummaya/tools/documents/pdfa_promotion_probe.py +198 -0
  85. package/src/ummaya/tools/documents/permissions.py +110 -0
  86. package/src/ummaya/tools/documents/planner.py +616 -0
  87. package/src/ummaya/tools/documents/registry.py +2733 -0
  88. package/src/ummaya/tools/documents/render.py +978 -0
  89. package/src/ummaya/tools/documents/render_comparison.py +113 -0
  90. package/src/ummaya/tools/documents/render_comparison_models.py +74 -0
  91. package/src/ummaya/tools/documents/render_comparison_regions.py +73 -0
  92. package/src/ummaya/tools/documents/render_comparison_style.py +161 -0
  93. package/src/ummaya/tools/documents/reread.py +157 -0
  94. package/src/ummaya/tools/documents/runtime_authoring.py +244 -0
  95. package/src/ummaya/tools/documents/runtime_authoring_bundle.py +76 -0
  96. package/src/ummaya/tools/documents/scorecard.py +184 -0
  97. package/src/ummaya/tools/documents/socratic_planner.py +193 -0
  98. package/src/ummaya/tools/documents/style.py +48 -0
  99. package/src/ummaya/tools/documents/tool_defs.py +523 -0
  100. package/src/ummaya/tools/documents/validate.py +347 -0
  101. package/src/ummaya/tools/executor.py +61 -12
  102. package/src/ummaya/tools/geocoding/kakao_client.py +1 -2
  103. package/src/ummaya/tools/kma/apihub_catalog.py +984 -1
  104. package/src/ummaya/tools/kma/apihub_structured_adapter.py +86 -6
  105. package/src/ummaya/tools/kma/apihub_url_adapter.py +593 -0
  106. package/src/ummaya/tools/kma/apihub_url_catalog.py +296 -0
  107. package/src/ummaya/tools/live_proxy.py +0 -3
  108. package/src/ummaya/tools/location_adapters.py +8 -6
  109. package/src/ummaya/tools/manifest_metadata.py +16 -3
  110. package/src/ummaya/tools/models.py +5 -1
  111. package/src/ummaya/tools/mvp_surface.py +2 -2
  112. package/src/ummaya/tools/nmc/emergency_search.py +8 -6
  113. package/src/ummaya/tools/register_all.py +17 -0
  114. package/src/ummaya/tools/registry.py +10 -1
  115. package/src/ummaya/tools/resolve_location.py +4 -4
  116. package/src/ummaya/tools/routing/__init__.py +59 -0
  117. package/src/ummaya/tools/routing/builder.py +105 -0
  118. package/src/ummaya/tools/routing/cards.py +29 -0
  119. package/src/ummaya/tools/routing/decision_service.py +534 -0
  120. package/src/ummaya/tools/routing/decision_types.py +74 -0
  121. package/src/ummaya/tools/routing/feasibility.py +122 -0
  122. package/src/ummaya/tools/routing/intent.py +17 -0
  123. package/src/ummaya/tools/routing/intent_extractor.py +207 -0
  124. package/src/ummaya/tools/routing/intent_patterns.py +160 -0
  125. package/src/ummaya/tools/routing/intent_public_data.py +150 -0
  126. package/src/ummaya/tools/routing/intent_types.py +48 -0
  127. package/src/ummaya/tools/routing/lint.py +78 -0
  128. package/src/ummaya/tools/routing/metadata.py +174 -0
  129. package/src/ummaya/tools/routing/projection.py +340 -0
  130. package/src/ummaya/tools/routing/retrieval_policy.py +629 -0
  131. package/src/ummaya/tools/routing/schema.py +81 -0
  132. package/src/ummaya/tools/routing/types.py +96 -0
  133. package/src/ummaya/tools/routing_index.py +2 -2
  134. package/src/ummaya/tools/search.py +40 -106
  135. package/src/ummaya/tools/verified_data_go_kr/_manifest.py +115 -25
  136. package/src/ummaya/tools/verified_data_go_kr/airkorea_air_quality.py +109 -4
  137. package/src/ummaya/tools/verified_data_go_kr/nmc_aed_site.py +108 -2
  138. package/src/ummaya/tools/verified_data_go_kr/pps_bid_public_info.py +174 -9
  139. package/src/ummaya/tools/verified_data_go_kr/tago_bus_arrival.py +66 -3
  140. package/src/ummaya/tools/verified_data_go_kr/tago_bus_location.py +12 -2
  141. package/src/ummaya/tools/verified_data_go_kr/tago_bus_route.py +8 -2
  142. package/src/ummaya/tools/verified_data_go_kr/tago_bus_route_station.py +114 -0
  143. package/src/ummaya/tools/verified_data_go_kr/tago_bus_station.py +14 -3
  144. package/src/ummaya/tools/verify_canonical_map.py +21 -0
  145. package/tests/fixtures/documents/public_forms/baselines.yaml +113 -0
  146. package/tui/package.json +1 -2
  147. package/tui/src/.cc-byte-identical-whitelist.yaml +266 -0
  148. package/tui/src/QueryEngine.ts +12 -4
  149. package/tui/src/bridge/inboundAttachments.ts +3 -3
  150. package/tui/src/cli/handlers/auth.ts +4 -13
  151. package/tui/src/cli/handlers/mcp.tsx +3 -3
  152. package/tui/src/cli/print.ts +69 -18
  153. package/tui/src/cli/update.ts +13 -13
  154. package/tui/src/commands/copy/index.ts +1 -1
  155. package/tui/src/commands/cost/cost.ts +2 -2
  156. package/tui/src/commands/init-verifiers.ts +5 -5
  157. package/tui/src/commands/init.ts +30 -30
  158. package/tui/src/commands/insights.ts +44 -44
  159. package/tui/src/commands/install-github-app/install-github-app.tsx +2 -2
  160. package/tui/src/commands/install-github-app/setupGitHubActions.ts +3 -3
  161. package/tui/src/commands/install-github-app/types.ts +8 -30
  162. package/tui/src/commands/install.tsx +5 -5
  163. package/tui/src/commands/mcp/addCommand.ts +5 -5
  164. package/tui/src/commands/mcp/xaaIdpCommand.ts +2 -2
  165. package/tui/src/commands/plugin/ManageMarketplaces.tsx +2 -2
  166. package/tui/src/commands/plugin/types.ts +6 -28
  167. package/tui/src/commands/plugin/unifiedTypes.ts +4 -26
  168. package/tui/src/commands/reasoning/index.ts +13 -0
  169. package/tui/src/commands/reasoning/reasoning.tsx +177 -0
  170. package/tui/src/commands/rename/generateSessionName.ts +1 -1
  171. package/tui/src/commands/thinkback/thinkback.tsx +3 -3
  172. package/tui/src/commands.ts +2 -0
  173. package/tui/src/components/Feedback.tsx +1 -1
  174. package/tui/src/components/LogoV2/EmergencyTip.tsx +11 -2
  175. package/tui/src/components/LogoV2/WelcomeV2.tsx +1 -3
  176. package/tui/src/components/Messages.tsx +2 -1
  177. package/tui/src/components/ScrollKeybindingHandler.tsx +6 -6
  178. package/tui/src/components/Spinner/types.ts +6 -28
  179. package/tui/src/components/Spinner.tsx +2 -2
  180. package/tui/src/components/agents/generateAgent.ts +1 -1
  181. package/tui/src/components/agents/new-agent-creation/types.ts +4 -26
  182. package/tui/src/components/config/EnvSecretIsolatedEditor.tsx +1 -1
  183. package/tui/src/components/design-system/LoadingState.tsx +2 -2
  184. package/tui/src/components/mcp/types.ts +16 -38
  185. package/tui/src/components/messages/AssistantToolUseMessage.tsx +3 -2
  186. package/tui/src/components/messages/UserCrossSessionMessage.ts +16 -4
  187. package/tui/src/components/messages/UserForkBoilerplateMessage.ts +16 -4
  188. package/tui/src/components/messages/UserGitHubWebhookMessage.ts +16 -4
  189. package/tui/src/components/messages/UserToolResultMessage/utils.tsx +3 -2
  190. package/tui/src/components/permissions/MonitorPermissionRequest/MonitorPermissionRequest.ts +9 -4
  191. package/tui/src/components/permissions/ReviewArtifactPermissionRequest/ReviewArtifactPermissionRequest.ts +9 -4
  192. package/tui/src/components/primitive/DocumentSocraticReviewBlock.tsx +129 -0
  193. package/tui/src/components/primitive/DocumentToolResultCard.tsx +224 -0
  194. package/tui/src/components/primitive/documentSocraticReview.ts +215 -0
  195. package/tui/src/components/primitive/index.tsx +43 -1
  196. package/tui/src/components/primitive/types.ts +137 -0
  197. package/tui/src/components/ui/option.ts +4 -26
  198. package/tui/src/constants/common.ts +0 -2
  199. package/tui/src/constants/prompts.ts +4 -3
  200. package/tui/src/constants/querySource.ts +4 -26
  201. package/tui/src/entrypoints/sdk/controlTypes.ts +26 -48
  202. package/tui/src/entrypoints/sdk/coreTypes.generated.ts +3 -25
  203. package/tui/src/entrypoints/sdk/runtimeTypes.ts +38 -60
  204. package/tui/src/entrypoints/sdk/sdkUtilityTypes.ts +4 -26
  205. package/tui/src/entrypoints/sdk/settingsTypes.generated.ts +3 -25
  206. package/tui/src/entrypoints/sdk/toolTypes.ts +3 -25
  207. package/tui/src/hooks/toolPermission/handlers/interactiveHandler.ts +10 -0
  208. package/tui/src/hooks/useApiKeyVerification.ts +1 -1
  209. package/tui/src/hooks/useVirtualScroll.ts +1 -1
  210. package/tui/src/ink/ink.tsx +33 -14
  211. package/tui/src/ink/reconciler.ts +2 -3
  212. package/tui/src/ink/render-to-screen.ts +30 -10
  213. package/tui/src/ipc/bridge.ts +62 -15
  214. package/tui/src/ipc/bridgeSingleton.ts +5 -1
  215. package/tui/src/ipc/codec.ts +29 -3
  216. package/tui/src/ipc/frames.generated.ts +407 -312
  217. package/tui/src/ipc/llmClient.ts +279 -76
  218. package/tui/src/ipc/llmTypes.ts +16 -1
  219. package/tui/src/ipc/schema/frame.schema.json +1 -3475
  220. package/tui/src/keybindings/defaultBindings.ts +4 -0
  221. package/tui/src/main.tsx +32 -11
  222. package/tui/src/native-ts/file-index/index.ts +33 -3
  223. package/tui/src/observability/surface.ts +2 -2
  224. package/tui/src/probes/toolRegistryProbe.tsx +3 -1
  225. package/tui/src/projectOnboardingState.ts +7 -6
  226. package/tui/src/query/chatMessageTypes.ts +18 -0
  227. package/tui/src/query/chatMessagesBuilder.ts +1 -1
  228. package/tui/src/query/deps.ts +1 -1
  229. package/tui/src/query/messageGuards.ts +106 -0
  230. package/tui/src/query/publicDataTerminalRepair.ts +384 -0
  231. package/tui/src/query/run.ts +1075 -0
  232. package/tui/src/query/supportBoundary.ts +168 -0
  233. package/tui/src/query/toolResultErrors.ts +103 -0
  234. package/tui/src/query/toolRunner.ts +687 -0
  235. package/tui/src/query/unavailableToolRepair.ts +118 -0
  236. package/tui/src/query.ts +9 -1721
  237. package/tui/src/screens/REPL.tsx +42 -31
  238. package/tui/src/services/api/adapterManifest.ts +4 -0
  239. package/tui/src/services/api/backendChat/events.ts +117 -0
  240. package/tui/src/services/api/backendChat/finalMessage.ts +40 -0
  241. package/tui/src/services/api/backendChat/frame.ts +9 -0
  242. package/tui/src/services/api/backendChat/streaming.ts +430 -0
  243. package/tui/src/services/api/backendChat/types.ts +62 -0
  244. package/tui/src/services/api/backendChat.ts +1 -0
  245. package/tui/src/services/api/client.ts +98 -14
  246. package/tui/src/services/api/errorUtils.ts +5 -5
  247. package/tui/src/services/api/errors.ts +1 -1
  248. package/tui/src/services/api/logging.ts +1 -1
  249. package/tui/src/services/api/ummaya/evidence.ts +194 -0
  250. package/tui/src/services/api/ummaya/messages.ts +255 -0
  251. package/tui/src/services/api/ummaya/nonStreaming.ts +66 -0
  252. package/tui/src/services/api/ummaya/provider.ts +200 -0
  253. package/tui/src/services/api/ummaya/reasoning.ts +24 -0
  254. package/tui/src/services/api/ummaya/request.ts +200 -0
  255. package/tui/src/services/api/ummaya/selectionContext.ts +240 -0
  256. package/tui/src/services/api/ummaya/streaming.ts +365 -0
  257. package/tui/src/services/api/ummaya/streamingPayload.ts +129 -0
  258. package/tui/src/services/api/ummaya/streamingReader.ts +40 -0
  259. package/tui/src/services/api/ummaya/toolSelection.ts +217 -0
  260. package/tui/src/services/api/ummaya/types.ts +110 -0
  261. package/tui/src/services/api/ummaya/usage.ts +30 -0
  262. package/tui/src/services/api/ummaya.ts +26 -364
  263. package/tui/src/services/api/withRetry.ts +1 -1
  264. package/tui/src/services/awaySummary.ts +2 -2
  265. package/tui/src/services/claudeAiLimits.ts +1 -1
  266. package/tui/src/services/compact/autoCompact.ts +1 -1
  267. package/tui/src/services/compact/compact.ts +1 -1
  268. package/tui/src/services/lsp/types.ts +8 -30
  269. package/tui/src/services/tips/types.ts +6 -28
  270. package/tui/src/services/tokenEstimation.ts +1 -1
  271. package/tui/src/services/toolRegistry/bootGuard.ts +5 -5
  272. package/tui/src/services/toolUseSummary/toolUseSummaryGenerator.ts +1 -1
  273. package/tui/src/services/tools/toolExecution.ts +94 -1
  274. package/tui/src/skills/bundled/stuck.ts +12 -12
  275. package/tui/src/state/AppStateStore.ts +7 -0
  276. package/tui/src/store/pendingPermissionSlot.ts +1 -1
  277. package/tui/src/store/session-store.ts +10 -36
  278. package/tui/src/stubs/any-stub.ts +15 -10
  279. package/tui/src/stubs/color-diff-napi.ts +37 -23
  280. package/tui/src/stubs/globals.d.ts +3 -3
  281. package/tui/src/stubs/macro-preload.ts +23 -12
  282. package/tui/src/tools/AdapterTool/AdapterTool.ts +1239 -163
  283. package/tui/src/tools/AdapterTool/routeDiagnostics.ts +75 -0
  284. package/tui/src/tools/AgentTool/AgentTool.tsx +84 -1371
  285. package/tui/src/tools/AgentTool/agentToolHandoff.ts +114 -0
  286. package/tui/src/tools/AgentTool/agentToolPartialResult.ts +16 -0
  287. package/tui/src/tools/AgentTool/agentToolProgress.ts +32 -0
  288. package/tui/src/tools/AgentTool/agentToolResolver.ts +161 -0
  289. package/tui/src/tools/AgentTool/agentToolResult.ts +163 -0
  290. package/tui/src/tools/AgentTool/agentToolUtils.ts +14 -686
  291. package/tui/src/tools/AgentTool/asyncAgentLifecycle.ts +208 -0
  292. package/tui/src/tools/AgentTool/asyncLifecycle.ts +153 -0
  293. package/tui/src/tools/AgentTool/backgroundedCompletion.ts +126 -0
  294. package/tui/src/tools/AgentTool/backgroundedLifecycle.ts +174 -0
  295. package/tui/src/tools/AgentTool/foregroundBackground.ts +83 -0
  296. package/tui/src/tools/AgentTool/foregroundDrain.tsx +133 -0
  297. package/tui/src/tools/AgentTool/foregroundFinalize.ts +98 -0
  298. package/tui/src/tools/AgentTool/foregroundLifecycle.tsx +237 -0
  299. package/tui/src/tools/AgentTool/foregroundProgress.tsx +169 -0
  300. package/tui/src/tools/AgentTool/foregroundTask.ts +89 -0
  301. package/tui/src/tools/AgentTool/forkSubagent.ts +1 -12
  302. package/tui/src/tools/AgentTool/forkSubagentGate.ts +34 -0
  303. package/tui/src/tools/AgentTool/launchRouting.ts +203 -0
  304. package/tui/src/tools/AgentTool/lifecycle.ts +244 -0
  305. package/tui/src/tools/AgentTool/mcpRouting.ts +73 -0
  306. package/tui/src/tools/AgentTool/orchestrationSupport.ts +70 -0
  307. package/tui/src/tools/AgentTool/permissions.ts +39 -0
  308. package/tui/src/tools/AgentTool/promptSetup.ts +181 -0
  309. package/tui/src/tools/AgentTool/remoteRouting.ts +62 -0
  310. package/tui/src/tools/AgentTool/resultMapping.ts +116 -0
  311. package/tui/src/tools/AgentTool/resumeAgent.ts +39 -107
  312. package/tui/src/tools/AgentTool/resumeAgentHelpers.ts +140 -0
  313. package/tui/src/tools/AgentTool/runAgent.ts +1 -1
  314. package/tui/src/tools/AgentTool/runtimeConfig.ts +57 -0
  315. package/tui/src/tools/AgentTool/schemas.ts +196 -0
  316. package/tui/src/tools/AgentTool/sourceVerificationPropagation.ts +263 -0
  317. package/tui/src/tools/AgentTool/worktreeLifecycle.ts +105 -0
  318. package/tui/src/tools/AskUserQuestionTool/AskUserQuestionTool.tsx +174 -202
  319. package/tui/src/tools/BashTool/BashTool.tsx +71 -1072
  320. package/tui/src/tools/BashTool/bashCommandHelpers.ts +12 -12
  321. package/tui/src/tools/BashTool/bashPermissions/astPreflight.ts +173 -0
  322. package/tui/src/tools/BashTool/bashPermissions/classifierChecks.ts +199 -0
  323. package/tui/src/tools/BashTool/bashPermissions/compoundGuards.ts +53 -0
  324. package/tui/src/tools/BashTool/bashPermissions/constants.ts +99 -0
  325. package/tui/src/tools/BashTool/bashPermissions/index.ts +38 -0
  326. package/tui/src/tools/BashTool/bashPermissions/legacyMisparsing.ts +62 -0
  327. package/tui/src/tools/BashTool/bashPermissions/main.ts +135 -0
  328. package/tui/src/tools/BashTool/bashPermissions/normalizedCommands.ts +33 -0
  329. package/tui/src/tools/BashTool/bashPermissions/operatorFlow.ts +98 -0
  330. package/tui/src/tools/BashTool/bashPermissions/permissionChecks.ts +200 -0
  331. package/tui/src/tools/BashTool/bashPermissions/prefixSuggestions.ts +88 -0
  332. package/tui/src/tools/BashTool/bashPermissions/promptClassifierRules.ts +125 -0
  333. package/tui/src/tools/BashTool/bashPermissions/ruleDelegates.ts +19 -0
  334. package/tui/src/tools/BashTool/bashPermissions/ruleMatching.ts +145 -0
  335. package/tui/src/tools/BashTool/bashPermissions/sandboxAutoAllow.ts +75 -0
  336. package/tui/src/tools/BashTool/bashPermissions/subcommandFlow.ts +205 -0
  337. package/tui/src/tools/BashTool/bashPermissions/subcommandGuards.ts +73 -0
  338. package/tui/src/tools/BashTool/bashPermissions/subcommandResultHelpers.ts +116 -0
  339. package/tui/src/tools/BashTool/bashPermissions/types.ts +26 -0
  340. package/tui/src/tools/BashTool/bashPermissions/wrapperStripping.ts +139 -0
  341. package/tui/src/tools/BashTool/bashPermissions.ts +26 -2621
  342. package/tui/src/tools/BashTool/call.ts +202 -0
  343. package/tui/src/tools/BashTool/callLoader.ts +35 -0
  344. package/tui/src/tools/BashTool/commandClassification.ts +151 -0
  345. package/tui/src/tools/BashTool/commandClassificationLoader.ts +40 -0
  346. package/tui/src/tools/BashTool/cwdReset.ts +33 -0
  347. package/tui/src/tools/BashTool/lineTruncation.ts +11 -0
  348. package/tui/src/tools/BashTool/modeValidation.ts +13 -1
  349. package/tui/src/tools/BashTool/outputPersistence.ts +42 -0
  350. package/tui/src/tools/BashTool/permissionClassification.ts +66 -0
  351. package/tui/src/tools/BashTool/permissionLoader.ts +44 -0
  352. package/tui/src/tools/BashTool/resultLoader.ts +29 -0
  353. package/tui/src/tools/BashTool/resultMapping.ts +83 -0
  354. package/tui/src/tools/BashTool/sandboxPolicy.ts +79 -0
  355. package/tui/src/tools/BashTool/schemas.ts +65 -0
  356. package/tui/src/tools/BashTool/sedEditExecution.ts +59 -0
  357. package/tui/src/tools/BashTool/shellExecution.tsx +245 -0
  358. package/tui/src/tools/BashTool/shellOutputUtils.ts +85 -0
  359. package/tui/src/tools/BashTool/shellPermissionGauntlet.ts +97 -0
  360. package/tui/src/tools/BashTool/uiLoader.ts +37 -0
  361. package/tui/src/tools/BriefTool/upload.ts +1 -1
  362. package/tui/src/tools/CalculatorTool/parser.ts +2 -2
  363. package/tui/src/tools/DocumentPrimitive/DocumentPrimitive.ts +262 -0
  364. package/tui/src/tools/DocumentPrimitive/dispatchNormalization.ts +270 -0
  365. package/tui/src/tools/DocumentPrimitive/documentDestinationPath.ts +18 -0
  366. package/tui/src/tools/DocumentPrimitive/documentMutationGuard.ts +22 -0
  367. package/tui/src/tools/DocumentPrimitive/documentPatchNormalization.ts +248 -0
  368. package/tui/src/tools/DocumentPrimitive/documentSourceVerification.ts +245 -0
  369. package/tui/src/tools/DocumentPrimitive/documentSourceVerificationFields.ts +103 -0
  370. package/tui/src/tools/DocumentPrimitive/modelVisibleOutput.ts +40 -0
  371. package/tui/src/tools/DocumentPrimitive/prompt.ts +35 -0
  372. package/tui/src/tools/FileEditTool/FileEditTool.ts +9 -507
  373. package/tui/src/tools/FileEditTool/call.ts +228 -0
  374. package/tui/src/tools/FileEditTool/validateInput.ts +196 -0
  375. package/tui/src/tools/FileReadTool/imageProcessor.ts +13 -0
  376. package/tui/src/tools/FileWriteTool/FileWriteTool.ts +7 -300
  377. package/tui/src/tools/FileWriteTool/call.ts +223 -0
  378. package/tui/src/tools/FileWriteTool/validateInput.ts +80 -0
  379. package/tui/src/tools/ListMcpResourcesTool/ListMcpResourcesTool.ts +19 -3
  380. package/tui/src/tools/LookupPrimitive/LookupPrimitive.ts +48 -29
  381. package/tui/src/tools/LookupPrimitive/prompt.ts +6 -7
  382. package/tui/src/tools/MCPTool/trustPolicy.ts +118 -0
  383. package/tui/src/tools/McpAuthTool/McpAuthTool.ts +21 -3
  384. package/tui/src/tools/NotebookEditTool/NotebookEditTool.ts +7 -326
  385. package/tui/src/tools/NotebookEditTool/call.ts +254 -0
  386. package/tui/src/tools/NotebookEditTool/notebookModel.ts +51 -0
  387. package/tui/src/tools/NotebookEditTool/validateInput.ts +142 -0
  388. package/tui/src/tools/PowerShellTool/PowerShellTool.tsx +46 -937
  389. package/tui/src/tools/PowerShellTool/acceptEditsCommandValidation.ts +162 -0
  390. package/tui/src/tools/PowerShellTool/call.ts +179 -0
  391. package/tui/src/tools/PowerShellTool/callLoader.ts +37 -0
  392. package/tui/src/tools/PowerShellTool/commandClassification.ts +86 -0
  393. package/tui/src/tools/PowerShellTool/modeValidation.ts +25 -332
  394. package/tui/src/tools/PowerShellTool/outputPersistence.ts +42 -0
  395. package/tui/src/tools/PowerShellTool/permissionClassification.ts +28 -0
  396. package/tui/src/tools/PowerShellTool/resultLoader.ts +31 -0
  397. package/tui/src/tools/PowerShellTool/resultMapping.ts +75 -0
  398. package/tui/src/tools/PowerShellTool/schemas.ts +40 -0
  399. package/tui/src/tools/PowerShellTool/shellExecution.tsx +258 -0
  400. package/tui/src/tools/PowerShellTool/symlinkModeValidation.ts +44 -0
  401. package/tui/src/tools/PowerShellTool/uiLoader.ts +37 -0
  402. package/tui/src/tools/PowerShellTool/validation.ts +39 -0
  403. package/tui/src/tools/ReadMcpResourceTool/ReadMcpResourceTool.ts +19 -3
  404. package/tui/src/tools/ResolveLocationPrimitive/ResolveLocationPrimitive.ts +30 -19
  405. package/tui/src/tools/ResolveLocationPrimitive/prompt.ts +2 -6
  406. package/tui/src/tools/SkillTool/SkillTool.ts +2 -2
  407. package/tui/src/tools/SubmitPrimitive/SubmitPrimitive.ts +51 -18
  408. package/tui/src/tools/TaskCreateTool/TaskCreateTool.ts +16 -2
  409. package/tui/src/tools/TaskGetTool/TaskGetTool.ts +23 -3
  410. package/tui/src/tools/TaskListTool/TaskListTool.ts +22 -4
  411. package/tui/src/tools/TaskOutputTool/TaskOutputTool.tsx +46 -547
  412. package/tui/src/tools/TaskOutputTool/lookup.ts +216 -0
  413. package/tui/src/tools/TaskOutputTool/render.tsx +257 -0
  414. package/tui/src/tools/TaskOutputTool/schemas.ts +55 -0
  415. package/tui/src/tools/TaskOutputTool/serialization.ts +36 -0
  416. package/tui/src/tools/TaskStopTool/TaskStopTool.ts +10 -0
  417. package/tui/src/tools/TaskUpdateTool/TaskUpdateTool.ts +14 -364
  418. package/tui/src/tools/TaskUpdateTool/completion.ts +62 -0
  419. package/tui/src/tools/TaskUpdateTool/schemas.ts +62 -0
  420. package/tui/src/tools/TaskUpdateTool/serialization.ts +46 -0
  421. package/tui/src/tools/TaskUpdateTool/statusUpdate.ts +247 -0
  422. package/tui/src/tools/TodoWriteTool/TodoWriteTool.ts +21 -2
  423. package/tui/src/tools/ToolSearchTool/ToolSearchTool.ts +21 -302
  424. package/tui/src/tools/ToolSearchTool/ccSupportTools.ts +223 -0
  425. package/tui/src/tools/ToolSearchTool/descriptionCache.ts +50 -0
  426. package/tui/src/tools/ToolSearchTool/keywordSearch.ts +216 -0
  427. package/tui/src/tools/ToolSearchTool/prompt.ts +10 -4
  428. package/tui/src/tools/ToolSearchTool/resultMapping.ts +30 -0
  429. package/tui/src/tools/ToolSearchTool/schemas.ts +30 -0
  430. package/tui/src/tools/ToolSearchTool/searchPool.ts +47 -0
  431. package/tui/src/tools/ToolSearchTool/supportIntentHints.ts +140 -0
  432. package/tui/src/tools/TranslateTool/TranslateTool.ts +1 -1
  433. package/tui/src/tools/VerifyPrimitive/VerifyPrimitive.ts +27 -10
  434. package/tui/src/tools/WebFetchTool/WebFetchTool.ts +43 -138
  435. package/tui/src/tools/WebFetchTool/call.ts +227 -0
  436. package/tui/src/tools/WebFetchTool/resolvedAddressSafety.ts +78 -0
  437. package/tui/src/tools/WebFetchTool/sourceVerification.ts +204 -0
  438. package/tui/src/tools/WebFetchTool/types.ts +23 -0
  439. package/tui/src/tools/WebFetchTool/urlSafety.ts +181 -0
  440. package/tui/src/tools/WebFetchTool/utils.ts +1 -1
  441. package/tui/src/tools/WebSearchTool/UI.tsx +0 -1
  442. package/tui/src/tools/WebSearchTool/WebSearchTool.ts +9 -313
  443. package/tui/src/tools/WebSearchTool/call.ts +33 -0
  444. package/tui/src/tools/WebSearchTool/responseMapping.ts +190 -0
  445. package/tui/src/tools/WebSearchTool/resultBlock.ts +47 -0
  446. package/tui/src/tools/WebSearchTool/schemas.ts +47 -0
  447. package/tui/src/tools/WebSearchTool/toolSchema.ts +12 -0
  448. package/tui/src/tools/WorkspaceToolAdapter/WorkspaceToolAdapter.ts +79 -0
  449. package/tui/src/tools/WorkspaceToolAdapter/allowedRootPolicy.ts +85 -0
  450. package/tui/src/tools/WorkspaceToolAdapter/documentFormatGuards.ts +73 -0
  451. package/tui/src/tools/WorkspaceToolAdapter/inputNormalization.ts +105 -0
  452. package/tui/src/tools/WorkspaceToolAdapter/mcpExposurePolicy.ts +64 -0
  453. package/tui/src/tools/WorkspaceToolAdapter/toolDefFactory.ts +215 -0
  454. package/tui/src/tools/WorkspaceToolAdapter/toolNames.ts +6 -0
  455. package/tui/src/tools/WorkspaceToolAdapter/workspacePolicy.ts +15 -0
  456. package/tui/src/tools/_shared/citizenUserText.ts +49 -0
  457. package/tui/src/tools/_shared/dispatchPrimitive.ts +6 -6
  458. package/tui/src/tools/_shared/documentChangeToPatch.ts +125 -0
  459. package/tui/src/tools/_shared/documentDispatchArguments.ts +87 -0
  460. package/tui/src/tools/_shared/documentPrimitiveTimeout.ts +13 -0
  461. package/tui/src/tools/_shared/documentToolResultRender.ts +98 -0
  462. package/tui/src/tools/_shared/locationInputRepair.ts +112 -0
  463. package/tui/src/tools/_shared/pendingCallRegistry.ts +1 -6
  464. package/tui/src/tools/_shared/rootPrimitiveInput.ts +68 -0
  465. package/tui/src/tools/_shared/toolChoiceRepair/documentCompletionPatterns.ts +58 -0
  466. package/tui/src/tools/_shared/toolChoiceRepair/documentCompletionPrompt.ts +271 -0
  467. package/tui/src/tools/_shared/toolChoiceRepair/documentRepair.ts +452 -0
  468. package/tui/src/tools/_shared/toolChoiceRepair/messageAccess.ts +80 -0
  469. package/tui/src/tools/_shared/toolChoiceRepair/publicDataRepair.ts +92 -0
  470. package/tui/src/tools/_shared/toolChoiceRepair/supportRepair.ts +135 -0
  471. package/tui/src/tools/_shared/toolChoiceRepair.ts +61 -0
  472. package/tui/src/tools/shared/mockDisclaimer.ts +1 -1
  473. package/tui/src/tools.ts +39 -190
  474. package/tui/src/types/fileSuggestion.ts +4 -26
  475. package/tui/src/types/generated/events_mono/claude_code/v1/claude_code_internal_event.ts +186 -148
  476. package/tui/src/types/generated/events_mono/common/v1/auth.ts +25 -11
  477. package/tui/src/types/generated/events_mono/growthbook/v1/growthbook_experiment_event.ts +47 -30
  478. package/tui/src/types/generated/google/protobuf/timestamp.ts +21 -7
  479. package/tui/src/types/message.ts +80 -102
  480. package/tui/src/types/messageQueueTypes.ts +6 -28
  481. package/tui/src/types/notebook.ts +16 -38
  482. package/tui/src/types/statusLine.ts +4 -26
  483. package/tui/src/types/tools.ts +24 -46
  484. package/tui/src/types/utils.ts +6 -28
  485. package/tui/src/upstreamproxy/relay.ts +7 -3
  486. package/tui/src/upstreamproxy/upstreamproxy.ts +1 -1
  487. package/tui/src/utils/assistantMessageFactories.ts +9 -3
  488. package/tui/src/utils/attachments.ts +1 -1
  489. package/tui/src/utils/auth.ts +129 -139
  490. package/tui/src/utils/bash/ast.ts +23 -23
  491. package/tui/src/utils/bash/bashParser.ts +5 -5
  492. package/tui/src/utils/billing.ts +1 -1
  493. package/tui/src/utils/collapseReadSearch.ts +3 -3
  494. package/tui/src/utils/cronTasks.ts +1 -1
  495. package/tui/src/utils/execFileNoThrow.ts +1 -1
  496. package/tui/src/utils/filePersistence/types.ts +16 -38
  497. package/tui/src/utils/forkedAgent.ts +1 -1
  498. package/tui/src/utils/gracefulShutdown.ts +4 -4
  499. package/tui/src/utils/heapDumpService.ts +12 -8
  500. package/tui/src/utils/hooks/apiQueryHookHelper.ts +1 -1
  501. package/tui/src/utils/hooks/execPromptHook.ts +1 -1
  502. package/tui/src/utils/hooks/skillImprovement.ts +1 -1
  503. package/tui/src/utils/kExaoneReasoning.ts +138 -0
  504. package/tui/src/utils/mcp/dateTimeParser.ts +1 -1
  505. package/tui/src/utils/messages.ts +19 -0
  506. package/tui/src/utils/migrateSessions.ts +3 -3
  507. package/tui/src/utils/model/model.ts +6 -6
  508. package/tui/src/utils/multiToolLayout.ts +13 -0
  509. package/tui/src/utils/permissions/yoloClassifier.ts +1 -1
  510. package/tui/src/utils/plugins/headlessPluginInstall.ts +1 -1
  511. package/tui/src/utils/plugins/mcpPluginIntegration.ts +1 -1
  512. package/tui/src/utils/plugins/mcpbHandler.ts +1 -1
  513. package/tui/src/utils/plugins/pluginLoader.ts +8 -8
  514. package/tui/src/utils/processUserInput/processSlashCommand.tsx +2 -2
  515. package/tui/src/utils/processUserInput/processUserInput.ts +26 -0
  516. package/tui/src/utils/protectedNamespace.ts +5 -3
  517. package/tui/src/utils/rawJsonToolCall.ts +242 -0
  518. package/tui/src/utils/ripgrep.ts +16 -7
  519. package/tui/src/utils/sessionTitle.ts +1 -1
  520. package/tui/src/utils/settings/applySettingsChange.ts +4 -0
  521. package/tui/src/utils/settings/permissionValidation.ts +14 -2
  522. package/tui/src/utils/settings/types.ts +9 -3
  523. package/tui/src/utils/shell/prefix.ts +1 -1
  524. package/tui/src/utils/sideQuery.ts +1 -1
  525. package/tui/src/utils/stats.ts +1 -1
  526. package/tui/src/utils/systemThemeWatcher.ts +13 -3
  527. package/tui/src/utils/teleport.tsx +1 -1
  528. package/uv.lock +394 -22
  529. package/assets/copilot-gate-logo.svg +0 -58
  530. package/assets/govon-logo.svg +0 -40
  531. package/src/ummaya/eval/__init__.py +0 -5
  532. package/src/ummaya/eval/retrieval.py +0 -713
  533. package/tui/src/services/api/claude.ts +0 -3510
  534. package/tui/src/utils/messageStream.ts +0 -186
@@ -0,0 +1,114 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ """TAGO bus route-station search adapter."""
3
+
4
+ from __future__ import annotations
5
+
6
+ from typing import cast
7
+
8
+ from pydantic import BaseModel, ConfigDict, Field
9
+
10
+ from ummaya.tools.executor import ToolExecutor
11
+ from ummaya.tools.models import GovAPITool
12
+ from ummaya.tools.registry import ToolRegistry
13
+ from ummaya.tools.verified_data_go_kr._factory import (
14
+ build_tool,
15
+ handle_verified_input,
16
+ register_module,
17
+ )
18
+ from ummaya.tools.verified_data_go_kr._manifest import require_spec
19
+
20
+ _TAGO_CITY_CODE_DESCRIPTION = (
21
+ "Official TAGO cityCode from the provider getCtyCodeList contract. "
22
+ "Common metropolitan examples: Busan=21, Daegu=22, Incheon=23, "
23
+ "Gwangju=24, Daejeon=25, Ulsan=26."
24
+ )
25
+
26
+
27
+ class TagoBusRouteStationInput(BaseModel):
28
+ """Input for TAGO route-station search."""
29
+
30
+ model_config = ConfigDict(extra="forbid")
31
+
32
+ city_code: str = Field(..., min_length=1, description=_TAGO_CITY_CODE_DESCRIPTION)
33
+ route_id: str = Field(
34
+ ...,
35
+ min_length=1,
36
+ description="Official TAGO routeId returned by tago_bus_route_search.",
37
+ )
38
+ node_nm: str | None = Field(
39
+ default=None,
40
+ min_length=1,
41
+ description=(
42
+ "Optional client-side filter against the official TAGO response field nodenm. "
43
+ "Use it to narrow a route's passing stops to a citizen-named place such as 부산역."
44
+ ),
45
+ )
46
+ updown_cd: str | None = Field(
47
+ default=None,
48
+ min_length=1,
49
+ description=(
50
+ "Optional client-side filter against the official TAGO response field updowncd "
51
+ "when a direction is already known."
52
+ ),
53
+ )
54
+ page_no: int = Field(default=1, ge=1, description="Page number.")
55
+ num_of_rows: int = Field(default=100, ge=1, le=100, description="Rows per page.")
56
+
57
+
58
+ SPEC = require_spec("tago_bus_route_station_search")
59
+ INPUT_SCHEMA = TagoBusRouteStationInput
60
+ TOOL: GovAPITool = build_tool(SPEC, INPUT_SCHEMA)
61
+
62
+
63
+ async def handle(
64
+ input_model: TagoBusRouteStationInput,
65
+ *,
66
+ fixture_body: bytes | None = None,
67
+ ) -> dict[str, object]:
68
+ """Fetch or replay TAGO route-station rows."""
69
+
70
+ output = await handle_verified_input(input_model, SPEC, fixture_body=fixture_body)
71
+ if input_model.node_nm is None and input_model.updown_cd is None:
72
+ return output
73
+ return _filter_route_stations(
74
+ output,
75
+ node_nm=input_model.node_nm,
76
+ updown_cd=input_model.updown_cd,
77
+ )
78
+
79
+
80
+ def _filter_route_stations(
81
+ output: dict[str, object],
82
+ *,
83
+ node_nm: str | None,
84
+ updown_cd: str | None,
85
+ ) -> dict[str, object]:
86
+ items = output.get("items")
87
+ if not isinstance(items, list):
88
+ return output
89
+
90
+ filtered: list[dict[str, object]] = []
91
+ for item in items:
92
+ if not isinstance(item, dict):
93
+ continue
94
+ record = item.get("record")
95
+ if not isinstance(record, dict):
96
+ continue
97
+ typed_record = cast(dict[str, object], record)
98
+ if node_nm is not None and node_nm not in str(typed_record.get("nodenm", "")):
99
+ continue
100
+ if updown_cd is not None and str(typed_record.get("updowncd", "")) != updown_cd:
101
+ continue
102
+ filtered.append(cast(dict[str, object], item))
103
+
104
+ filtered_output = dict(output)
105
+ filtered_output["items"] = filtered
106
+ filtered_output["total_count"] = len(filtered)
107
+ filtered_output["next_cursor"] = None
108
+ return filtered_output
109
+
110
+
111
+ def register(registry: ToolRegistry, executor: ToolExecutor) -> None:
112
+ """Register this adapter."""
113
+
114
+ register_module(registry, executor, tool=TOOL, input_schema=INPUT_SCHEMA, handler=handle)
@@ -15,15 +15,26 @@ from ummaya.tools.verified_data_go_kr._factory import (
15
15
  )
16
16
  from ummaya.tools.verified_data_go_kr._manifest import require_spec
17
17
 
18
+ _TAGO_CITY_CODE_DESCRIPTION = (
19
+ "Official TAGO cityCode from the provider getCtyCodeList contract. "
20
+ "Common metropolitan examples: Busan=21, Daegu=22, Incheon=23, "
21
+ "Gwangju=24, Daejeon=25, Ulsan=26."
22
+ )
23
+
18
24
 
19
25
  class TagoBusStationInput(BaseModel):
20
26
  """Input for TAGO bus station search."""
21
27
 
22
28
  model_config = ConfigDict(extra="forbid")
23
29
 
24
- city_code: str = Field(..., min_length=1, description="TAGO city code.")
25
- node_nm: str | None = Field(default=None, description="Bus station name.")
26
- node_no: str | None = Field(default=None, description="Bus station number.")
30
+ city_code: str = Field(..., min_length=1, description=_TAGO_CITY_CODE_DESCRIPTION)
31
+ node_nm: str | None = Field(
32
+ default=None,
33
+ description=(
34
+ "Bus stop name fragment, for example 부산역 when the citizen asks near Busan Station."
35
+ ),
36
+ )
37
+ node_no: str | None = Field(default=None, description="Bus stop number printed at the stop.")
27
38
  page_no: int = Field(default=1, ge=1, description="Page number.")
28
39
  num_of_rows: int = Field(default=10, ge=1, le=100, description="Rows per page.")
29
40
 
@@ -11,6 +11,11 @@ Public API
11
11
  Return the ``family_hint`` string for the given check tool_id, or ``None``
12
12
  if the tool_id is not recognised.
13
13
 
14
+ ``resolve_tool_id(identifier)`` → ``str | None``
15
+ Return the canonical ``mock_verify_*`` tool_id when *identifier* is either a
16
+ canonical check tool_id or an internal family_hint alias such as
17
+ ``mobile_id`` / ``simple_auth_module``.
18
+
14
19
  ``get_canonical_map()`` → ``Mapping[str, str]``
15
20
  Return the full frozen ``{tool_id: family_hint}`` mapping.
16
21
 
@@ -99,6 +104,22 @@ def resolve_family(tool_id: str) -> str | None:
99
104
  return _load_map().get(tool_id)
100
105
 
101
106
 
107
+ def resolve_tool_id(identifier: str) -> str | None:
108
+ """Return the canonical check tool_id for *identifier*.
109
+
110
+ This is the runtime guard for model-facing alias drift. The manifest can
111
+ include internal verify-family entries for backward compatibility, but
112
+ adapter dispatch is owned by canonical ``mock_verify_*`` tool ids.
113
+ """
114
+ mapping = _load_map()
115
+ if identifier in mapping:
116
+ return identifier
117
+ for tool_id, family in mapping.items():
118
+ if family == identifier:
119
+ return tool_id
120
+ return None
121
+
122
+
102
123
  def get_canonical_map() -> Mapping[str, str]:
103
124
  """Return the full ``{tool_id: family_hint}`` frozen mapping (read-only)."""
104
125
  return _load_map()
@@ -0,0 +1,113 @@
1
+ version: 1
2
+ catalog_id: public-form-conformance-baselines-v1
3
+ source_policy: offline_fixtures_only
4
+ live_network_allowed: false
5
+ baselines:
6
+ - template_id: birth-benefit-application-hwpx
7
+ schema_id: birth-benefit-application-v1
8
+ format: hwpx
9
+ authoritative_standard: KS X 6101 OWPML/HWPX
10
+ authority_refs:
11
+ - specs/2803-document-production-hardening/spec.md#FR-002
12
+ - specs/2803-document-production-hardening/spec.md#FR-012
13
+ supports_conformance: true
14
+ expected_page_count: 2
15
+ required_fields:
16
+ - field_id: applicant_name
17
+ label: Applicant name
18
+ path: /body/section[1]/field[applicant_name]
19
+ - field_id: child_birth_date
20
+ label: Child birth date
21
+ path: /body/section[1]/field[child_birth_date]
22
+ protected_text:
23
+ - text: Birth benefit application
24
+ anchor: /body/section[1]/p[1]
25
+ - text: Required attachments
26
+ anchor: /body/section[2]/p[1]
27
+ required_labels:
28
+ - text: Applicant
29
+ anchor: /body/section[1]/table[1]/cell[1,1]
30
+ - text: Name
31
+ anchor: /body/section[1]/table[1]/cell[1,2]
32
+ - text: Child
33
+ anchor: /body/section[1]/table[1]/cell[2,1]
34
+ - text: Date of birth
35
+ anchor: /body/section[1]/table[1]/cell[2,2]
36
+ table_geometries:
37
+ - table_id: applicant-table
38
+ anchor: /body/section[1]/table[1]
39
+ rows: 2
40
+ columns: 2
41
+ signature_regions:
42
+ - text: Applicant signature or seal
43
+ anchor: /body/section[1]/p[2]
44
+ metadata_exact_matches:
45
+ page_count: 2
46
+ margin_top_mm: 20
47
+ margin_bottom_mm: 15
48
+ - template_id: civil-form-docx
49
+ schema_id: civil-form-ooxml-v1
50
+ format: docx
51
+ authoritative_standard: ECMA-376 Office Open XML
52
+ authority_refs:
53
+ - specs/2803-document-production-hardening/spec.md#FR-012
54
+ supports_conformance: true
55
+ required_fields: []
56
+ protected_text: []
57
+ required_labels: []
58
+ table_geometries: []
59
+ signature_regions: []
60
+ metadata_exact_matches: {}
61
+ - template_id: civil-ledger-xlsx
62
+ schema_id: civil-ledger-ooxml-v1
63
+ format: xlsx
64
+ authoritative_standard: ECMA-376 Office Open XML
65
+ authority_refs:
66
+ - specs/2803-document-production-hardening/spec.md#FR-012
67
+ supports_conformance: true
68
+ required_fields: []
69
+ protected_text: []
70
+ required_labels: []
71
+ table_geometries: []
72
+ signature_regions: []
73
+ metadata_exact_matches: {}
74
+ - template_id: civil-briefing-pptx
75
+ schema_id: civil-briefing-ooxml-v1
76
+ format: pptx
77
+ authoritative_standard: ECMA-376 Office Open XML
78
+ authority_refs:
79
+ - specs/2803-document-production-hardening/spec.md#FR-012
80
+ supports_conformance: true
81
+ required_fields: []
82
+ protected_text: []
83
+ required_labels: []
84
+ table_geometries: []
85
+ signature_regions: []
86
+ metadata_exact_matches: {}
87
+ - template_id: fillable-permit-pdf
88
+ schema_id: fillable-permit-pdf-v1
89
+ format: pdf
90
+ authoritative_standard: PDF AcroForm and rendered appearance
91
+ authority_refs:
92
+ - specs/2803-document-production-hardening/spec.md#FR-014
93
+ supports_conformance: true
94
+ required_fields: []
95
+ protected_text: []
96
+ required_labels: []
97
+ table_geometries: []
98
+ signature_regions: []
99
+ metadata_exact_matches: {}
100
+ - template_id: legacy-hwp-readonly
101
+ schema_id: legacy-hwp-readonly-v1
102
+ format: hwp
103
+ authoritative_standard: HWP binary read-only boundary
104
+ authority_refs:
105
+ - specs/2803-document-production-hardening/spec.md#FR-017
106
+ supports_conformance: false
107
+ unsupported_reason: HWP binary write is blocked in this epic; conformance-ready output requires HWPX or another promoted editable derivative.
108
+ required_fields: []
109
+ protected_text: []
110
+ required_labels: []
111
+ table_geometries: []
112
+ signature_regions: []
113
+ metadata_exact_matches: {}
package/tui/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ummaya",
3
- "version": "0.2.3",
3
+ "version": "0.2.5",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "engines": {
@@ -11,7 +11,6 @@
11
11
  "gen:ipc": "bun run scripts/gen-ipc-types.ts",
12
12
  "gen:pipa-hash": "bun run scripts/gen-pipa-hash.ts",
13
13
  "diff:upstream": "bun run scripts/diff-upstream.ts",
14
- "tui:smoke": "bun run scripts/tui-smoke.ts",
15
14
  "test:soak": "bun test --timeout 600000 tests/soak",
16
15
  "test": "bun test --max-concurrency=1 tests/entrypoints tests/hooks tests/i18n tests/ink tests/ipc tests/memdir tests/permissions tests/primitive tests/store tests/theme tests/unit",
17
16
  "typecheck": "tsc --noEmit -p tsconfig.typecheck.json",
@@ -377,3 +377,269 @@ entries:
377
377
  cause: W13
378
378
  spec_ref: "Epic #2639 D1 (TeleportResumeWrapper DROP)"
379
379
  notes: "launchTeleportResumeWrapper export removed; underlying TeleportResumeWrapper.tsx is in NEVER-PORT registry (tui/src/components/.never-port.md row 7)."
380
+ - path: tui/src/components/AutoModeOptInDialog.tsx
381
+ cause: W2,W14
382
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2; specs/2639-s3-ui-guard/spec.md"
383
+ notes: "Visible opt-in copy and brand surface align with UMMAYA while preserving CC dialog semantics."
384
+ - path: tui/src/components/BypassPermissionsModeDialog.tsx
385
+ cause: W2,W14
386
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2; specs/2639-s3-ui-guard/spec.md"
387
+ notes: "Permission-bypass warning copy is UMMAYA-branded without changing the underlying approval contract."
388
+ - path: tui/src/components/ClaudeInChromeOnboarding.tsx
389
+ cause: W2,W7
390
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2; specs/cc-migration-audit/scope-S3-components-screens.md § 7"
391
+ notes: "Claude 1P browser onboarding surface is rewritten or inert for the UMMAYA public-service client."
392
+ - path: tui/src/components/ClaudeMdExternalIncludesDialog.tsx
393
+ cause: W2,W14
394
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2; specs/2639-s3-ui-guard/spec.md"
395
+ notes: "External include warning copy uses UMMAYA terms while preserving CC trust semantics."
396
+ - path: tui/src/components/CostThresholdDialog.tsx
397
+ cause: W7,W14
398
+ spec_ref: "#1633; docs/requirements/ummaya-migration-tree.md § UI L2"
399
+ notes: "Claude billing threshold language is removed or neutralized for the single-provider UMMAYA harness."
400
+ - path: tui/src/components/DesktopHandoff.tsx
401
+ cause: W7,W13
402
+ spec_ref: "#1633; specs/cc-migration-audit/scope-S3-components-screens.md § 7"
403
+ notes: "Anthropic desktop handoff surface is retained only where needed for unreachable compatibility."
404
+ - path: tui/src/components/DesktopUpsell/DesktopUpsellStartup.tsx
405
+ cause: W7,W13
406
+ spec_ref: "#1633; specs/cc-migration-audit/scope-S3-components-screens.md § 7"
407
+ notes: "Claude desktop upsell is removed from the UMMAYA runtime surface."
408
+ - path: tui/src/components/Feedback.tsx
409
+ cause: W7,W13
410
+ spec_ref: "#1633; tui/src/components/.never-port.md"
411
+ notes: "Anthropic feedback endpoint surface is never-port for UMMAYA."
412
+ - path: tui/src/components/FeedbackSurvey/FeedbackSurveyView.tsx
413
+ cause: W7,W13
414
+ spec_ref: "#1633; specs/cc-migration-audit/scope-S3-components-screens.md § 7"
415
+ notes: "Anthropic survey copy and endpoint behavior are removed from the citizen harness."
416
+ - path: tui/src/components/FeedbackSurvey/TranscriptSharePrompt.tsx
417
+ cause: W7,W13
418
+ spec_ref: "#1633; specs/cc-migration-audit/scope-S3-components-screens.md § 7"
419
+ notes: "Transcript-sharing prompt no longer routes to Anthropic 1P survey infrastructure."
420
+ - path: tui/src/components/HelpV2/General.tsx
421
+ cause: W2,W14
422
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2; specs/2639-s3-ui-guard/spec.md"
423
+ notes: "Help text is UMMAYA-branded and adjusted for public-service workflows."
424
+ - path: tui/src/components/InterruptedByUser.tsx
425
+ cause: W14
426
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
427
+ notes: "Interruption wording follows the UMMAYA TUI copy audit without changing control flow."
428
+ - path: tui/src/components/LogSelector.tsx
429
+ cause: W2,W14
430
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
431
+ notes: "Log selection labels are UMMAYA-facing while preserving the CC selector behavior."
432
+ - path: tui/src/components/ScrollKeybindingHandler.tsx
433
+ cause: W14
434
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2; specs/2639-s3-ui-guard/spec.md"
435
+ notes: "Comment-only terminal selection and scroll wording cleanup from the real-use TUI audit; runtime behavior is unchanged."
436
+ expected_sha256: 2d751caa56cdc06adfdd727221219ef027b5f6211a7a2a69b2bbfcfa0427c57b
437
+ - path: tui/src/components/LogoV2/ChannelsNotice.tsx
438
+ cause: W2,W7
439
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § 마스코트 · 브랜딩 확정; specs/cc-migration-audit/scope-S3-components-screens.md § 7"
440
+ notes: "Claude channels notice is replaced by UMMAYA channel language."
441
+ - path: tui/src/components/LogoV2/EmergencyTip.tsx
442
+ cause: W2,W7
443
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § 마스코트 · 브랜딩 확정; specs/cc-migration-audit/scope-S3-components-screens.md § 7"
444
+ notes: "Dynamic top-of-feed notices are sanitized so upstream provider or SaaS copy cannot surface in the UMMAYA terminal."
445
+ expected_sha256: 03e6b435d81d7019fb4f0ee960514b100b59bba17959754fa2a0e803c5ab7e27
446
+ - path: tui/src/components/LogoV2/GuestPassesUpsell.tsx
447
+ cause: W7,W13
448
+ spec_ref: "tui/src/components/.never-port.md; specs/cc-migration-audit/scope-S3-components-screens.md § 7"
449
+ notes: "Guest-pass upsell is an Anthropic 1P business surface and is never-port for UMMAYA."
450
+ - path: tui/src/components/MCPServerDesktopImportDialog.tsx
451
+ cause: W2,W14
452
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2; specs/2639-s3-ui-guard/spec.md"
453
+ notes: "Desktop import copy is UMMAYA-facing while retaining MCP import semantics."
454
+ - path: tui/src/components/MCPServerDialogCopy.tsx
455
+ cause: W2,W14
456
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2; specs/2639-s3-ui-guard/spec.md"
457
+ notes: "MCP server dialog copy is adjusted for UMMAYA terminology."
458
+ - path: tui/src/components/ManagedSettingsSecurityDialog/ManagedSettingsSecurityDialog.tsx
459
+ cause: W2,W14
460
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
461
+ notes: "Managed-settings security text is UMMAYA-branded without changing policy enforcement."
462
+ - path: tui/src/components/ModelPicker.tsx
463
+ cause: W2,W14
464
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § L1-A; docs/requirements/ummaya-migration-tree.md § UI L2"
465
+ notes: "Model picker reflects the fixed K-EXAONE provider surface instead of Claude model selection."
466
+ - path: tui/src/components/OutputStylePicker.tsx
467
+ cause: W14
468
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
469
+ notes: "Output-style picker copy follows the UMMAYA TUI copy audit."
470
+ - path: tui/src/components/PackageManagerAutoUpdater.tsx
471
+ cause: W2,W14
472
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
473
+ notes: "Package-manager updater visible copy uses UMMAYA package identity."
474
+ - path: tui/src/components/Passes/Passes.tsx
475
+ cause: W7,W13
476
+ spec_ref: "tui/src/components/.never-port.md; specs/cc-migration-audit/scope-S3-components-screens.md § 7"
477
+ notes: "Claude subscription pass UI is never-port for the UMMAYA public-service harness."
478
+ - path: tui/src/components/RemoteCallout.tsx
479
+ cause: W7,W13
480
+ spec_ref: "#1633; specs/cc-migration-audit/scope-S3-components-screens.md § 7"
481
+ notes: "Anthropic remote-session callout is kept only as an unreachable compatibility surface."
482
+ - path: tui/src/components/Settings/Config.tsx
483
+ cause: W2,W14
484
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
485
+ notes: "Settings configuration copy uses UMMAYA terms while preserving setting keys."
486
+ - path: tui/src/components/Stats.tsx
487
+ cause: W2,W14
488
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
489
+ notes: "Stats display text follows UMMAYA terminology without altering metrics aggregation."
490
+ - path: tui/src/components/TeleportError.tsx
491
+ cause: W7,W13
492
+ spec_ref: "#1633; #1978 T011"
493
+ notes: "Teleport error surface remains stubbed after Anthropic teleport module deletion."
494
+ - path: tui/src/components/TeleportRepoMismatchDialog.tsx
495
+ cause: W7,W13
496
+ spec_ref: "#1633; #1978 T011"
497
+ notes: "Teleport repository mismatch dialog is retained only for compile compatibility."
498
+ - path: tui/src/components/ThemePicker.tsx
499
+ cause: W14
500
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
501
+ notes: "Theme picker text and defaults follow UMMAYA TUI audit output."
502
+ - path: tui/src/components/ThinkingToggle.tsx
503
+ cause: W2,W9
504
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § L1-A; #2521"
505
+ notes: "Thinking toggle reflects K-EXAONE reasoning behavior rather than Claude thinking copy."
506
+ - path: tui/src/components/WorkflowMultiselectDialog.tsx
507
+ cause: W14
508
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
509
+ notes: "Workflow selector copy follows UMMAYA workflow terminology."
510
+ - path: tui/src/components/agents/AgentDetail.tsx
511
+ cause: W14,W15
512
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2; .github/workflows/tui-boot-smoke.yml"
513
+ notes: "Agent detail surface uses UMMAYA copy with stable runtime imports."
514
+ - path: tui/src/components/agents/AgentsList.tsx
515
+ cause: W14,W15
516
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2; .github/workflows/tui-boot-smoke.yml"
517
+ notes: "Agent list surface uses UMMAYA copy with stable runtime imports."
518
+ - path: tui/src/components/agents/new-agent-creation/wizard-steps/ConfirmStep.tsx
519
+ cause: W14
520
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
521
+ notes: "Agent wizard confirmation copy follows UMMAYA terminology."
522
+ - path: tui/src/components/agents/new-agent-creation/wizard-steps/DescriptionStep.tsx
523
+ cause: W14
524
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
525
+ notes: "Agent wizard description copy follows UMMAYA terminology."
526
+ - path: tui/src/components/agents/new-agent-creation/wizard-steps/MethodStep.tsx
527
+ cause: W14
528
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
529
+ notes: "Agent wizard method copy follows UMMAYA terminology."
530
+ - path: tui/src/components/design-system/LoadingState.tsx
531
+ cause: W14
532
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
533
+ notes: "Loading state copy and layout are adjusted by the UMMAYA TUI audit."
534
+ - path: tui/src/components/grove/Grove.tsx
535
+ cause: W7,W13
536
+ spec_ref: "tui/src/components/.never-port.md; specs/cc-migration-audit/scope-S3-components-screens.md § 7"
537
+ notes: "Anthropic Grove surface is never-port for UMMAYA."
538
+ - path: tui/src/components/hooks/HooksConfigMenu.tsx
539
+ cause: W14,W15
540
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2; .github/workflows/tui-boot-smoke.yml"
541
+ notes: "Hooks config menu copy and imports are adjusted for the UMMAYA runtime."
542
+ - path: tui/src/components/hooks/SelectEventMode.tsx
543
+ cause: W14
544
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
545
+ notes: "Hook event selector copy follows UMMAYA terminology."
546
+ - path: tui/src/components/hooks/SelectHookMode.tsx
547
+ cause: W14
548
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
549
+ notes: "Hook selector copy follows UMMAYA terminology."
550
+ - path: tui/src/components/hooks/SelectMatcherMode.tsx
551
+ cause: W14
552
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
553
+ notes: "Hook matcher selector copy follows UMMAYA terminology."
554
+ - path: tui/src/components/hooks/ViewHookMode.tsx
555
+ cause: W14
556
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
557
+ notes: "Hook view mode copy follows UMMAYA terminology."
558
+ - path: tui/src/components/mcp/ElicitationDialog.tsx
559
+ cause: W14
560
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
561
+ notes: "MCP elicitation dialog copy is adjusted for UMMAYA."
562
+ - path: tui/src/components/mcp/MCPListPanel.tsx
563
+ cause: W14,W15
564
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2; .github/workflows/tui-boot-smoke.yml"
565
+ notes: "MCP list panel copy and imports are stabilized for the UMMAYA runtime."
566
+ - path: tui/src/components/mcp/MCPSettings.tsx
567
+ cause: W14,W15
568
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2; .github/workflows/tui-boot-smoke.yml"
569
+ notes: "MCP settings copy and imports are stabilized for the UMMAYA runtime."
570
+ - path: tui/src/components/mcp/McpParsingWarnings.tsx
571
+ cause: W14
572
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
573
+ notes: "MCP warning copy follows UMMAYA terminology."
574
+ - path: tui/src/components/messages/UserToolResultMessage/RejectedPlanMessage.tsx
575
+ cause: W14
576
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
577
+ notes: "Rejected-plan message copy follows the UMMAYA terminal audit."
578
+ - path: tui/src/components/permissions/BashPermissionRequest/bashToolUseOptions.tsx
579
+ cause: W14
580
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
581
+ notes: "Bash permission option copy follows UMMAYA permission UX wording."
582
+ - path: tui/src/components/permissions/ComputerUseApproval/ComputerUseApproval.tsx
583
+ cause: W14
584
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
585
+ notes: "Computer-use approval copy follows UMMAYA permission UX wording."
586
+ - path: tui/src/components/permissions/EnterPlanModePermissionRequest/EnterPlanModePermissionRequest.tsx
587
+ cause: W14
588
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
589
+ notes: "Plan-mode permission copy follows UMMAYA permission UX wording."
590
+ - path: tui/src/components/permissions/FilePermissionDialog/permissionOptions.tsx
591
+ cause: W14
592
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
593
+ notes: "File permission option copy follows UMMAYA permission UX wording."
594
+ - path: tui/src/components/permissions/PermissionPrompt.tsx
595
+ cause: W14
596
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
597
+ notes: "Permission prompt copy follows UMMAYA permission UX wording."
598
+ - path: tui/src/components/permissions/PowerShellPermissionRequest/powershellToolUseOptions.tsx
599
+ cause: W14
600
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
601
+ notes: "PowerShell permission option copy follows UMMAYA permission UX wording."
602
+ - path: tui/src/components/permissions/SandboxPermissionRequest.tsx
603
+ cause: W11,W14
604
+ spec_ref: "specs/cc-migration-audit/scope-S3-components-screens.md § 5.2; docs/requirements/ummaya-migration-tree.md § UI L2"
605
+ notes: "Sandbox permission surface removes Anthropic runtime hints and uses UMMAYA permission wording."
606
+ - path: tui/src/components/permissions/SkillPermissionRequest/SkillPermissionRequest.tsx
607
+ cause: W14
608
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
609
+ notes: "Skill permission copy follows UMMAYA permission UX wording."
610
+ - path: tui/src/components/permissions/WebFetchPermissionRequest/WebFetchPermissionRequest.tsx
611
+ cause: W14
612
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
613
+ notes: "Web fetch permission copy follows UMMAYA permission UX wording."
614
+ - path: tui/src/components/permissions/rules/AddPermissionRules.tsx
615
+ cause: W14
616
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
617
+ notes: "Permission-rule authoring copy follows UMMAYA permission UX wording."
618
+ - path: tui/src/components/permissions/rules/AddWorkspaceDirectory.tsx
619
+ cause: W14
620
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
621
+ notes: "Workspace-directory permission copy follows UMMAYA permission UX wording."
622
+ - path: tui/src/components/permissions/rules/PermissionRuleList.tsx
623
+ cause: W14
624
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
625
+ notes: "Permission-rule list copy follows UMMAYA permission UX wording."
626
+ - path: tui/src/components/permissions/rules/RemoveWorkspaceDirectory.tsx
627
+ cause: W14
628
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2"
629
+ notes: "Workspace-directory removal copy follows UMMAYA permission UX wording."
630
+ - path: tui/src/components/sandbox/SandboxOverridesTab.tsx
631
+ cause: W11,W14
632
+ spec_ref: "specs/cc-migration-audit/scope-S3-components-screens.md § 5.2; docs/requirements/ummaya-migration-tree.md § UI L2"
633
+ notes: "Sandbox override copy removes Anthropic runtime assumptions."
634
+ - path: tui/src/components/sandbox/SandboxSettings.tsx
635
+ cause: W11,W14
636
+ spec_ref: "specs/cc-migration-audit/scope-S3-components-screens.md § 5.2; docs/requirements/ummaya-migration-tree.md § UI L2"
637
+ notes: "Sandbox settings copy removes Anthropic runtime assumptions."
638
+ - path: tui/src/components/skills/SkillsMenu.tsx
639
+ cause: W14,W15
640
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2; .github/workflows/tui-boot-smoke.yml"
641
+ notes: "Skills menu copy and imports are stabilized for the UMMAYA runtime."
642
+ - path: tui/src/screens/Doctor.tsx
643
+ cause: W2,W14
644
+ spec_ref: "docs/requirements/ummaya-migration-tree.md § UI L2; specs/2639-s3-ui-guard/spec.md"
645
+ notes: "Doctor screen output is UMMAYA-branded while preserving diagnostic flow."
@@ -29,6 +29,11 @@ const updateUsage = (current: _NNU, delta: _NNU): _NNU => {
29
29
  return out
30
30
  }
31
31
  const accumulateUsage = (total: _NNU, current: _NNU): _NNU => updateUsage(total, current)
32
+ export function getMessageStartUsageDelta(event: {
33
+ readonly message?: { readonly usage?: NonNullableUsage }
34
+ }): NonNullableUsage | undefined {
35
+ return event.message?.usage
36
+ }
32
37
  import stripAnsi from 'strip-ansi'
33
38
  import type { Command } from './commands.js'
34
39
  import { getSlashCommandToolSkills } from './commands.js'
@@ -804,10 +809,13 @@ export class QueryEngine {
804
809
  if (message.event.type === 'message_start') {
805
810
  // Reset current message usage for new message
806
811
  currentMessageUsage = EMPTY_USAGE
807
- currentMessageUsage = updateUsage(
808
- currentMessageUsage,
809
- message.event.message.usage,
810
- )
812
+ const messageStartUsage = getMessageStartUsageDelta(message.event)
813
+ if (messageStartUsage !== undefined) {
814
+ currentMessageUsage = updateUsage(
815
+ currentMessageUsage,
816
+ messageStartUsage,
817
+ )
818
+ }
811
819
  }
812
820
  if (message.event.type === 'message_delta') {
813
821
  currentMessageUsage = updateUsage(
@@ -6,7 +6,7 @@
6
6
  * (oauth-authed, same store), write to ~/.claude/uploads/{sessionId}/, and
7
7
  * return @path refs to prepend. Claude's Read tool takes it from there.
8
8
  *
9
- * Best-effort: any failure (no token, network, non-2xx, disk) logs debug and
9
+ * Best-effort: each failure (no token, network, non-2xx, disk) logs debug and
10
10
  * skips that attachment. The message still reaches Claude, just without @path.
11
11
  */
12
12
 
@@ -63,7 +63,7 @@ function uploadsDir(): string {
63
63
 
64
64
  /**
65
65
  * Fetch + write one attachment. Returns the absolute path on success,
66
- * undefined on any failure.
66
+ * undefined when resolution fails.
67
67
  */
68
68
  async function resolveOne(att: InboundAttachment): Promise<string | undefined> {
69
69
  const token = getBridgeAccessToken()
@@ -129,7 +129,7 @@ export async function resolveInboundAttachments(
129
129
  const ok = paths.filter((p): p is string => p !== undefined)
130
130
  if (ok.length === 0) return ''
131
131
  // Quoted form — extractAtMentionedFiles truncates unquoted @refs at the
132
- // first space, which breaks any home dir with spaces (/Users/John Smith/).
132
+ // first space, which breaks home dirs with spaces (/Users/John Smith/).
133
133
  return ok.map(p => `@"${p}"`).join(' ') + ' '
134
134
  }
135
135