@otto-code/server 0.7.2 → 0.7.3

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 (333) hide show
  1. package/dist/server/server/agent/providers/claude/agent.js +48 -3
  2. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts +10 -1
  3. package/dist/server/server/agent/providers/mock-load-test-agent.js +151 -5
  4. package/dist/server/server/agent/synthetic-conversation.d.ts +18 -0
  5. package/dist/server/server/agent/synthetic-conversation.js +567 -0
  6. package/dist/server/server/dotnet-process-registry.d.ts +111 -0
  7. package/dist/server/server/dotnet-process-registry.js +160 -0
  8. package/dist/server/server/lsp/connection.d.ts +4 -0
  9. package/dist/server/server/lsp/connection.js +39 -4
  10. package/dist/server/server/lsp/pool.js +1 -0
  11. package/dist/server/server/lsp/registry.d.ts +14 -1
  12. package/dist/server/server/lsp/registry.js +14 -2
  13. package/dist/server/server/lsp/service.d.ts +18 -2
  14. package/dist/server/server/lsp/service.js +14 -2
  15. package/dist/server/server/process-tree.d.ts +29 -0
  16. package/dist/server/server/process-tree.js +59 -0
  17. package/dist/server/server/session/files/workspace-files-session.js +11 -5
  18. package/dist/server/server/session.d.ts +11 -0
  19. package/dist/server/server/session.js +23 -0
  20. package/dist/server/server/solution-model/dotnet/probe.d.ts +2 -0
  21. package/dist/server/server/solution-model/dotnet/probe.js +33 -14
  22. package/dist/server/server/websocket-server.js +10 -0
  23. package/dist/server/server/workspace-git-service.d.ts +36 -0
  24. package/dist/server/server/workspace-git-service.js +110 -6
  25. package/dist/server/terminal/shell-integration/zsh/.zshenv +17 -17
  26. package/dist/server/terminal/shell-integration/zsh/otto-integration.zsh +32 -32
  27. package/dist/server/terminal/terminal.js +12 -2
  28. package/dist/server/web-ui/_expo/static/js/web/{__common-6d2299ed037bec2393245a7c0bf1c643.js → __common-8ab6f044d26f0be8899aaf3a990c8b65.js} +1855 -1855
  29. package/dist/server/web-ui/_expo/static/js/web/__common-8ab6f044d26f0be8899aaf3a990c8b65.js.br +0 -0
  30. package/dist/server/web-ui/_expo/static/js/web/__common-8ab6f044d26f0be8899aaf3a990c8b65.js.gz +0 -0
  31. package/dist/server/web-ui/_expo/static/js/web/{abnfDiagram-VRR7QNED-c3c2ca327b2d7ad9af3caa1cba884908.js → abnfDiagram-VRR7QNED-e33c74fb52c02570f5105b2e70194df6.js} +1 -1
  32. package/dist/server/web-ui/_expo/static/js/web/abnfDiagram-VRR7QNED-e33c74fb52c02570f5105b2e70194df6.js.br +0 -0
  33. package/dist/server/web-ui/_expo/static/js/web/abnfDiagram-VRR7QNED-e33c74fb52c02570f5105b2e70194df6.js.gz +0 -0
  34. package/dist/server/web-ui/_expo/static/js/web/{architecture-TIHT7OUA-0cf23d3dc9775f216c01daae4aae250a.js → architecture-TIHT7OUA-cc3220b1ecee09a0e5c0b99fbf886b82.js} +1 -1
  35. package/dist/server/web-ui/_expo/static/js/web/{architecture-TIHT7OUA-0cf23d3dc9775f216c01daae4aae250a.js.br → architecture-TIHT7OUA-cc3220b1ecee09a0e5c0b99fbf886b82.js.br} +0 -0
  36. package/dist/server/web-ui/_expo/static/js/web/architecture-TIHT7OUA-cc3220b1ecee09a0e5c0b99fbf886b82.js.gz +0 -0
  37. package/dist/server/web-ui/_expo/static/js/web/{architectureDiagram-ZJ3FMSHR-f3bce96124559dc19faa4d90aca4afd4.js → architectureDiagram-ZJ3FMSHR-551f5e17dd33a890195b5d060cd75ad2.js} +4 -4
  38. package/dist/server/web-ui/_expo/static/js/web/architectureDiagram-ZJ3FMSHR-551f5e17dd33a890195b5d060cd75ad2.js.br +0 -0
  39. package/dist/server/web-ui/_expo/static/js/web/architectureDiagram-ZJ3FMSHR-551f5e17dd33a890195b5d060cd75ad2.js.gz +0 -0
  40. package/dist/server/web-ui/_expo/static/js/web/{blockDiagram-677ZJIJ3-839486928c0f151128a5e2836aa07080.js → blockDiagram-677ZJIJ3-901d7bbed0b0f6ae3439f6bff861b42f.js} +1 -1
  41. package/dist/server/web-ui/_expo/static/js/web/blockDiagram-677ZJIJ3-901d7bbed0b0f6ae3439f6bff861b42f.js.br +0 -0
  42. package/dist/server/web-ui/_expo/static/js/web/{blockDiagram-677ZJIJ3-839486928c0f151128a5e2836aa07080.js.gz → blockDiagram-677ZJIJ3-901d7bbed0b0f6ae3439f6bff861b42f.js.gz} +0 -0
  43. package/dist/server/web-ui/_expo/static/js/web/{c4Diagram-LMCZKHZV-197212c21520a6b659a5649e683619d0.js → c4Diagram-LMCZKHZV-781ca106d0a19454ec9e559bcba3706c.js} +1 -1
  44. package/dist/server/web-ui/_expo/static/js/web/c4Diagram-LMCZKHZV-781ca106d0a19454ec9e559bcba3706c.js.br +0 -0
  45. package/dist/server/web-ui/_expo/static/js/web/{c4Diagram-LMCZKHZV-197212c21520a6b659a5649e683619d0.js.gz → c4Diagram-LMCZKHZV-781ca106d0a19454ec9e559bcba3706c.js.gz} +0 -0
  46. package/dist/server/web-ui/_expo/static/js/web/{classDiagram-OUVF2IWQ-a0a0fbefc96d14b6619c84fc4f92a39a.js → classDiagram-OUVF2IWQ-1d00e0cc9165446f1bac84fed1e9bbed.js} +1 -1
  47. package/dist/server/web-ui/_expo/static/js/web/classDiagram-OUVF2IWQ-1d00e0cc9165446f1bac84fed1e9bbed.js.br +0 -0
  48. package/dist/server/web-ui/_expo/static/js/web/classDiagram-OUVF2IWQ-1d00e0cc9165446f1bac84fed1e9bbed.js.gz +0 -0
  49. package/dist/server/web-ui/_expo/static/js/web/{classDiagram-v2-EOCWNBFH-e979239c6d160123d5b4847253a8a70e.js → classDiagram-v2-EOCWNBFH-52b658fff2b9f58ece5d8528cb381359.js} +1 -1
  50. package/dist/server/web-ui/_expo/static/js/web/classDiagram-v2-EOCWNBFH-52b658fff2b9f58ece5d8528cb381359.js.br +0 -0
  51. package/dist/server/web-ui/_expo/static/js/web/classDiagram-v2-EOCWNBFH-52b658fff2b9f58ece5d8528cb381359.js.gz +0 -0
  52. package/dist/server/web-ui/_expo/static/js/web/{cose-bilkent-JH36ORCC-bbc39a6bb062ba85e433f91becc37a65.js → cose-bilkent-JH36ORCC-9256f0de343b59ecc5775210909c4f8b.js} +4 -4
  53. package/dist/server/web-ui/_expo/static/js/web/cose-bilkent-JH36ORCC-9256f0de343b59ecc5775210909c4f8b.js.br +0 -0
  54. package/dist/server/web-ui/_expo/static/js/web/cose-bilkent-JH36ORCC-9256f0de343b59ecc5775210909c4f8b.js.gz +0 -0
  55. package/dist/server/web-ui/_expo/static/js/web/{cynefin-VYW2F7L2-ea0e514652627740f5a2ed32b027a164.js → cynefin-VYW2F7L2-feb2750e4e4322ac8e6c6049fcfd73cb.js} +1 -1
  56. package/dist/server/web-ui/_expo/static/js/web/cynefin-VYW2F7L2-feb2750e4e4322ac8e6c6049fcfd73cb.js.br +0 -0
  57. package/dist/server/web-ui/_expo/static/js/web/cynefin-VYW2F7L2-feb2750e4e4322ac8e6c6049fcfd73cb.js.gz +0 -0
  58. package/dist/server/web-ui/_expo/static/js/web/{cynefinDiagram-TSTJHNR4-0446f9b57ba778e5883d93e24692ffce.js → cynefinDiagram-TSTJHNR4-b98dc254a5fa6581f997a0809a9e0fc0.js} +1 -1
  59. package/dist/server/web-ui/_expo/static/js/web/cynefinDiagram-TSTJHNR4-b98dc254a5fa6581f997a0809a9e0fc0.js.br +0 -0
  60. package/dist/server/web-ui/_expo/static/js/web/cynefinDiagram-TSTJHNR4-b98dc254a5fa6581f997a0809a9e0fc0.js.gz +0 -0
  61. package/dist/server/web-ui/_expo/static/js/web/{dagre-VKFMJZFB-69f7aa52521b06a95874b1ac67508def.js → dagre-VKFMJZFB-ef67573fa401136e68fc41adf07ef447.js} +1 -1
  62. package/dist/server/web-ui/_expo/static/js/web/dagre-VKFMJZFB-ef67573fa401136e68fc41adf07ef447.js.br +0 -0
  63. package/dist/server/web-ui/_expo/static/js/web/dagre-VKFMJZFB-ef67573fa401136e68fc41adf07ef447.js.gz +0 -0
  64. package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-bridge-0ae8aadd6e53625f59d62eceb1f06ede.js → desktop-attachment-bridge-d6e4f29a78dc1bb5b70d4ef2c440c6c0.js} +1 -1
  65. package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-bridge-0ae8aadd6e53625f59d62eceb1f06ede.js.br → desktop-attachment-bridge-d6e4f29a78dc1bb5b70d4ef2c440c6c0.js.br} +0 -0
  66. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-d6e4f29a78dc1bb5b70d4ef2c440c6c0.js.gz +0 -0
  67. package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-store-ecd775c6aee79778f49274a5bffadc5a.js → desktop-attachment-store-e2e403c64de4bc638e1800c9b226ede3.js} +1 -1
  68. package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-store-ecd775c6aee79778f49274a5bffadc5a.js.br → desktop-attachment-store-e2e403c64de4bc638e1800c9b226ede3.js.br} +0 -0
  69. package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-store-ecd775c6aee79778f49274a5bffadc5a.js.gz → desktop-attachment-store-e2e403c64de4bc638e1800c9b226ede3.js.gz} +0 -0
  70. package/dist/server/web-ui/_expo/static/js/web/{diagram-FQU43EPY-bd0940835ccad031627e285aaba6d5ec.js → diagram-FQU43EPY-c6317fa4c07b63f54be30797f25060c7.js} +1 -1
  71. package/dist/server/web-ui/_expo/static/js/web/diagram-FQU43EPY-c6317fa4c07b63f54be30797f25060c7.js.br +0 -0
  72. package/dist/server/web-ui/_expo/static/js/web/{diagram-FQU43EPY-bd0940835ccad031627e285aaba6d5ec.js.gz → diagram-FQU43EPY-c6317fa4c07b63f54be30797f25060c7.js.gz} +0 -0
  73. package/dist/server/web-ui/_expo/static/js/web/{diagram-G47NLZAW-217e2cd3275924bc08fc6ebe79e95e48.js → diagram-G47NLZAW-70713a059ca65ca1241036cc96679bc5.js} +1 -1
  74. package/dist/server/web-ui/_expo/static/js/web/diagram-G47NLZAW-70713a059ca65ca1241036cc96679bc5.js.br +0 -0
  75. package/dist/server/web-ui/_expo/static/js/web/diagram-G47NLZAW-70713a059ca65ca1241036cc96679bc5.js.gz +0 -0
  76. package/dist/server/web-ui/_expo/static/js/web/{diagram-NH7WQ7WH-fbd3aa35ca68df15ee378fb63241b333.js → diagram-NH7WQ7WH-1bebddae0fd6a49ff82d7ea2b738823d.js} +1 -1
  77. package/dist/server/web-ui/_expo/static/js/web/diagram-NH7WQ7WH-1bebddae0fd6a49ff82d7ea2b738823d.js.br +0 -0
  78. package/dist/server/web-ui/_expo/static/js/web/diagram-NH7WQ7WH-1bebddae0fd6a49ff82d7ea2b738823d.js.gz +0 -0
  79. package/dist/server/web-ui/_expo/static/js/web/{diagram-OA4YK3LP-48ebb0ba6bcb34417649bd55070542ad.js → diagram-OA4YK3LP-bf33c3e1800c9f503dd88e41e97c5974.js} +1 -1
  80. package/dist/server/web-ui/_expo/static/js/web/diagram-OA4YK3LP-bf33c3e1800c9f503dd88e41e97c5974.js.br +0 -0
  81. package/dist/server/web-ui/_expo/static/js/web/diagram-OA4YK3LP-bf33c3e1800c9f503dd88e41e97c5974.js.gz +0 -0
  82. package/dist/server/web-ui/_expo/static/js/web/{diagram-WEI45ONY-2be85db5396495fa970419f77587cf14.js → diagram-WEI45ONY-23d90af03030beb514d3a953920e6c9b.js} +1 -1
  83. package/dist/server/web-ui/_expo/static/js/web/diagram-WEI45ONY-23d90af03030beb514d3a953920e6c9b.js.br +0 -0
  84. package/dist/server/web-ui/_expo/static/js/web/diagram-WEI45ONY-23d90af03030beb514d3a953920e6c9b.js.gz +0 -0
  85. package/dist/server/web-ui/_expo/static/js/web/{ebnfDiagram-CCIWWBDH-3c5c44cf8340b641d13076adab77967b.js → ebnfDiagram-CCIWWBDH-5119b538047d9c00ae05855ae1cf490f.js} +1 -1
  86. package/dist/server/web-ui/_expo/static/js/web/ebnfDiagram-CCIWWBDH-5119b538047d9c00ae05855ae1cf490f.js.br +0 -0
  87. package/dist/server/web-ui/_expo/static/js/web/ebnfDiagram-CCIWWBDH-5119b538047d9c00ae05855ae1cf490f.js.gz +0 -0
  88. package/dist/server/web-ui/_expo/static/js/web/{erDiagram-Q63AITRT-81762a72bd33bf1042e4cad4f688abf2.js → erDiagram-Q63AITRT-6f7e9f420388e6291e5a8ae6da7ab3ad.js} +1 -1
  89. package/dist/server/web-ui/_expo/static/js/web/erDiagram-Q63AITRT-6f7e9f420388e6291e5a8ae6da7ab3ad.js.br +0 -0
  90. package/dist/server/web-ui/_expo/static/js/web/erDiagram-Q63AITRT-6f7e9f420388e6291e5a8ae6da7ab3ad.js.gz +0 -0
  91. package/dist/server/web-ui/_expo/static/js/web/{eventmodeling-45OFAUF4-11d7615d746c5304c28d4931ec9ca5f7.js → eventmodeling-45OFAUF4-510d785624b4496077e120d2c12a6b88.js} +1 -1
  92. package/dist/server/web-ui/_expo/static/js/web/{eventmodeling-45OFAUF4-11d7615d746c5304c28d4931ec9ca5f7.js.br → eventmodeling-45OFAUF4-510d785624b4496077e120d2c12a6b88.js.br} +0 -0
  93. package/dist/server/web-ui/_expo/static/js/web/eventmodeling-45OFAUF4-510d785624b4496077e120d2c12a6b88.js.gz +0 -0
  94. package/dist/server/web-ui/_expo/static/js/web/{flowDiagram-23GEKE2U-5a2af608a9500bb36da0595c3464a562.js → flowDiagram-23GEKE2U-7bf4721b6de004ef55a0787bbbc6b9ac.js} +1 -1
  95. package/dist/server/web-ui/_expo/static/js/web/flowDiagram-23GEKE2U-7bf4721b6de004ef55a0787bbbc6b9ac.js.br +0 -0
  96. package/dist/server/web-ui/_expo/static/js/web/flowDiagram-23GEKE2U-7bf4721b6de004ef55a0787bbbc6b9ac.js.gz +0 -0
  97. package/dist/server/web-ui/_expo/static/js/web/{ganttDiagram-NO4QXBWP-379aae0f5fb2652d90827c7f8b2472d2.js → ganttDiagram-NO4QXBWP-53b4651e7e78eb3212ec05a0d72b8932.js} +5 -5
  98. package/dist/server/web-ui/_expo/static/js/web/ganttDiagram-NO4QXBWP-53b4651e7e78eb3212ec05a0d72b8932.js.br +0 -0
  99. package/dist/server/web-ui/_expo/static/js/web/{ganttDiagram-NO4QXBWP-379aae0f5fb2652d90827c7f8b2472d2.js.gz → ganttDiagram-NO4QXBWP-53b4651e7e78eb3212ec05a0d72b8932.js.gz} +0 -0
  100. package/dist/server/web-ui/_expo/static/js/web/{gitGraph-TEB2WS4Q-d978b8a2d1fd8fcc132b16ef8d57dd7c.js → gitGraph-TEB2WS4Q-03038b65af81bb0d4755a35c737decf0.js} +1 -1
  101. package/dist/server/web-ui/_expo/static/js/web/{gitGraph-TEB2WS4Q-d978b8a2d1fd8fcc132b16ef8d57dd7c.js.br → gitGraph-TEB2WS4Q-03038b65af81bb0d4755a35c737decf0.js.br} +0 -0
  102. package/dist/server/web-ui/_expo/static/js/web/gitGraph-TEB2WS4Q-03038b65af81bb0d4755a35c737decf0.js.gz +0 -0
  103. package/dist/server/web-ui/_expo/static/js/web/{gitGraphDiagram-IHSO6WYX-6cb31a37312da231b8f10f86b0d4de52.js → gitGraphDiagram-IHSO6WYX-49a762c3f7ecc4315bcde2731f090410.js} +1 -1
  104. package/dist/server/web-ui/_expo/static/js/web/{gitGraphDiagram-IHSO6WYX-6cb31a37312da231b8f10f86b0d4de52.js.br → gitGraphDiagram-IHSO6WYX-49a762c3f7ecc4315bcde2731f090410.js.br} +0 -0
  105. package/dist/server/web-ui/_expo/static/js/web/{gitGraphDiagram-IHSO6WYX-6cb31a37312da231b8f10f86b0d4de52.js.gz → gitGraphDiagram-IHSO6WYX-49a762c3f7ecc4315bcde2731f090410.js.gz} +0 -0
  106. package/dist/server/web-ui/_expo/static/js/web/{index-4c86d3c14df18b18b3b9a6329b896faf.js → index-6e99d24bcc09db447a2d8b0c747a5263.js} +74 -73
  107. package/dist/server/web-ui/_expo/static/js/web/index-6e99d24bcc09db447a2d8b0c747a5263.js.br +0 -0
  108. package/dist/server/web-ui/_expo/static/js/web/index-6e99d24bcc09db447a2d8b0c747a5263.js.gz +0 -0
  109. package/dist/server/web-ui/_expo/static/js/web/{indexeddb-attachment-store-5a90994af83f12740a986d9f1cb55cc9.js → indexeddb-attachment-store-ea6e57606ef25b42cf1e6665a3f5313e.js} +1 -1
  110. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-ea6e57606ef25b42cf1e6665a3f5313e.js.br +0 -0
  111. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-ea6e57606ef25b42cf1e6665a3f5313e.js.gz +0 -0
  112. package/dist/server/web-ui/_expo/static/js/web/{info-DKCQHKI2-b59d0dbb9a30d361ddc796a5cfa7fc41.js → info-DKCQHKI2-61f5b3ca4e5cea885d6254ccef0626c4.js} +1 -1
  113. package/dist/server/web-ui/_expo/static/js/web/{info-DKCQHKI2-b59d0dbb9a30d361ddc796a5cfa7fc41.js.br → info-DKCQHKI2-61f5b3ca4e5cea885d6254ccef0626c4.js.br} +0 -0
  114. package/dist/server/web-ui/_expo/static/js/web/info-DKCQHKI2-61f5b3ca4e5cea885d6254ccef0626c4.js.gz +0 -0
  115. package/dist/server/web-ui/_expo/static/js/web/{infoDiagram-FWYZ7A6U-0c4368de61a3bdbfbc73b143423981d9.js → infoDiagram-FWYZ7A6U-f47fe897045bf4e6949ea71abdae89fe.js} +1 -1
  116. package/dist/server/web-ui/_expo/static/js/web/infoDiagram-FWYZ7A6U-f47fe897045bf4e6949ea71abdae89fe.js.br +0 -0
  117. package/dist/server/web-ui/_expo/static/js/web/infoDiagram-FWYZ7A6U-f47fe897045bf4e6949ea71abdae89fe.js.gz +0 -0
  118. package/dist/server/web-ui/_expo/static/js/web/{ishikawaDiagram-FXEZZL3T-1474e73532a16148b7944d3b0f896197.js → ishikawaDiagram-FXEZZL3T-bf6597ebf1b0773e1d39dea7fcf8800f.js} +1 -1
  119. package/dist/server/web-ui/_expo/static/js/web/ishikawaDiagram-FXEZZL3T-bf6597ebf1b0773e1d39dea7fcf8800f.js.br +0 -0
  120. package/dist/server/web-ui/_expo/static/js/web/{ishikawaDiagram-FXEZZL3T-1474e73532a16148b7944d3b0f896197.js.gz → ishikawaDiagram-FXEZZL3T-bf6597ebf1b0773e1d39dea7fcf8800f.js.gz} +0 -0
  121. package/dist/server/web-ui/_expo/static/js/web/{journeyDiagram-5HDEW3XC-13df6cce9cb7f0e6ffbaa9a614feeee4.js → journeyDiagram-5HDEW3XC-7dc3a04c43574b6aac59a4520d111129.js} +1 -1
  122. package/dist/server/web-ui/_expo/static/js/web/journeyDiagram-5HDEW3XC-7dc3a04c43574b6aac59a4520d111129.js.br +0 -0
  123. package/dist/server/web-ui/_expo/static/js/web/{journeyDiagram-5HDEW3XC-13df6cce9cb7f0e6ffbaa9a614feeee4.js.gz → journeyDiagram-5HDEW3XC-7dc3a04c43574b6aac59a4520d111129.js.gz} +0 -0
  124. package/dist/server/web-ui/_expo/static/js/web/{kanban-definition-HUTT4EX6-6b56c0da5302838e7e1c46bf7460ea35.js → kanban-definition-HUTT4EX6-7be647182b1c3291e9330de01d329adf.js} +1 -1
  125. package/dist/server/web-ui/_expo/static/js/web/kanban-definition-HUTT4EX6-7be647182b1c3291e9330de01d329adf.js.br +0 -0
  126. package/dist/server/web-ui/_expo/static/js/web/{kanban-definition-HUTT4EX6-6b56c0da5302838e7e1c46bf7460ea35.js.gz → kanban-definition-HUTT4EX6-7be647182b1c3291e9330de01d329adf.js.gz} +0 -0
  127. package/dist/server/web-ui/_expo/static/js/web/{katex-7f6ac23f118e6e9264fdfa96e335134f.js → katex-c0aeb8f935f239b315771d04dc16b1e7.js} +1 -1
  128. package/dist/server/web-ui/_expo/static/js/web/katex-c0aeb8f935f239b315771d04dc16b1e7.js.br +0 -0
  129. package/dist/server/web-ui/_expo/static/js/web/{katex-7f6ac23f118e6e9264fdfa96e335134f.js.gz → katex-c0aeb8f935f239b315771d04dc16b1e7.js.gz} +0 -0
  130. package/dist/server/web-ui/_expo/static/js/web/{mermaid-75931b049ce3e66af3cd8ddf01e1cd23.js → mermaid-f4cf4ad300756762c2eed3bd65fecb6c.js} +9 -9
  131. package/dist/server/web-ui/_expo/static/js/web/mermaid-f4cf4ad300756762c2eed3bd65fecb6c.js.br +0 -0
  132. package/dist/server/web-ui/_expo/static/js/web/{mermaid-75931b049ce3e66af3cd8ddf01e1cd23.js.gz → mermaid-f4cf4ad300756762c2eed3bd65fecb6c.js.gz} +0 -0
  133. package/dist/server/web-ui/_expo/static/js/web/{mindmap-definition-LN4V7U3C-fafde693a329ca39007debdd961134b4.js → mindmap-definition-LN4V7U3C-5a266041ac99a182f60e7d1ade3053a7.js} +21 -21
  134. package/dist/server/web-ui/_expo/static/js/web/mindmap-definition-LN4V7U3C-5a266041ac99a182f60e7d1ade3053a7.js.br +0 -0
  135. package/dist/server/web-ui/_expo/static/js/web/mindmap-definition-LN4V7U3C-5a266041ac99a182f60e7d1ade3053a7.js.gz +0 -0
  136. package/dist/server/web-ui/_expo/static/js/web/{native-file-attachment-store-645b8ffe39c60c05c0a224e6efcb5a9c.js → native-file-attachment-store-78cca157541c8af3aff9a719f7b951be.js} +3 -3
  137. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-78cca157541c8af3aff9a719f7b951be.js.br +11 -0
  138. package/dist/server/web-ui/_expo/static/js/web/{native-file-attachment-store-645b8ffe39c60c05c0a224e6efcb5a9c.js.gz → native-file-attachment-store-78cca157541c8af3aff9a719f7b951be.js.gz} +0 -0
  139. package/dist/server/web-ui/_expo/static/js/web/{orchestration-graph-panel-2d117a5764d11c411d707e37fba93a1b.js → orchestration-graph-panel-77d13bf34f0ff1ffed397666b8009b21.js} +5 -5
  140. package/dist/server/web-ui/_expo/static/js/web/orchestration-graph-panel-77d13bf34f0ff1ffed397666b8009b21.js.br +0 -0
  141. package/dist/server/web-ui/_expo/static/js/web/{orchestration-graph-panel-2d117a5764d11c411d707e37fba93a1b.js.gz → orchestration-graph-panel-77d13bf34f0ff1ffed397666b8009b21.js.gz} +0 -0
  142. package/dist/server/web-ui/_expo/static/js/web/{packet-7NZHBO7P-61a485e09ee448c823fffbdfc588826d.js → packet-7NZHBO7P-8f2693917ef293414f42718be4e1d738.js} +1 -1
  143. package/dist/server/web-ui/_expo/static/js/web/{packet-7NZHBO7P-61a485e09ee448c823fffbdfc588826d.js.br → packet-7NZHBO7P-8f2693917ef293414f42718be4e1d738.js.br} +1 -1
  144. package/dist/server/web-ui/_expo/static/js/web/packet-7NZHBO7P-8f2693917ef293414f42718be4e1d738.js.gz +0 -0
  145. package/dist/server/web-ui/_expo/static/js/web/{pegDiagram-2B236MQR-035fe1b93f90f4775e99aea533552b42.js → pegDiagram-2B236MQR-58835705d6a13a27b59f4c85aeaf7012.js} +1 -1
  146. package/dist/server/web-ui/_expo/static/js/web/pegDiagram-2B236MQR-58835705d6a13a27b59f4c85aeaf7012.js.br +0 -0
  147. package/dist/server/web-ui/_expo/static/js/web/pegDiagram-2B236MQR-58835705d6a13a27b59f4c85aeaf7012.js.gz +0 -0
  148. package/dist/server/web-ui/_expo/static/js/web/{pie-RZYD4A2V-f6208df18db61d490f4811b192b77dec.js → pie-RZYD4A2V-8b0f157b04de7752354fc779ddbf49a4.js} +1 -1
  149. package/dist/server/web-ui/_expo/static/js/web/pie-RZYD4A2V-8b0f157b04de7752354fc779ddbf49a4.js.br +0 -0
  150. package/dist/server/web-ui/_expo/static/js/web/pie-RZYD4A2V-8b0f157b04de7752354fc779ddbf49a4.js.gz +0 -0
  151. package/dist/server/web-ui/_expo/static/js/web/{pieDiagram-ENE6RG2P-c78c82bf26f51acb7b7c44ae51eba9c6.js → pieDiagram-ENE6RG2P-a0061a200414abc917902506915ccabe.js} +1 -1
  152. package/dist/server/web-ui/_expo/static/js/web/pieDiagram-ENE6RG2P-a0061a200414abc917902506915ccabe.js.br +0 -0
  153. package/dist/server/web-ui/_expo/static/js/web/{pieDiagram-ENE6RG2P-c78c82bf26f51acb7b7c44ae51eba9c6.js.gz → pieDiagram-ENE6RG2P-a0061a200414abc917902506915ccabe.js.gz} +0 -0
  154. package/dist/server/web-ui/_expo/static/js/web/{quadrantDiagram-ABIIQ3AL-efff1486187742fe8683a966651df92f.js → quadrantDiagram-ABIIQ3AL-ccae11df8eb112141ab52dc3b055366d.js} +1 -1
  155. package/dist/server/web-ui/_expo/static/js/web/quadrantDiagram-ABIIQ3AL-ccae11df8eb112141ab52dc3b055366d.js.br +0 -0
  156. package/dist/server/web-ui/_expo/static/js/web/{quadrantDiagram-ABIIQ3AL-efff1486187742fe8683a966651df92f.js.gz → quadrantDiagram-ABIIQ3AL-ccae11df8eb112141ab52dc3b055366d.js.gz} +0 -0
  157. package/dist/server/web-ui/_expo/static/js/web/{radar-I7S5WNFK-0150ed7f0d337fc7ec70638a3656ea06.js → radar-I7S5WNFK-0768be5c16d166cd094d75a4c9fba55a.js} +1 -1
  158. package/dist/server/web-ui/_expo/static/js/web/{radar-I7S5WNFK-0150ed7f0d337fc7ec70638a3656ea06.js.br → radar-I7S5WNFK-0768be5c16d166cd094d75a4c9fba55a.js.br} +0 -0
  159. package/dist/server/web-ui/_expo/static/js/web/radar-I7S5WNFK-0768be5c16d166cd094d75a4c9fba55a.js.gz +0 -0
  160. package/dist/server/web-ui/_expo/static/js/web/{railroad-3IZDKUUU-c6e94ec81a88c02cb339de59f29386f5.js → railroad-3IZDKUUU-55b81b14fbc2908aa06995bd62b57b43.js} +1 -1
  161. package/dist/server/web-ui/_expo/static/js/web/{railroad-3IZDKUUU-c6e94ec81a88c02cb339de59f29386f5.js.br → railroad-3IZDKUUU-55b81b14fbc2908aa06995bd62b57b43.js.br} +1 -1
  162. package/dist/server/web-ui/_expo/static/js/web/railroad-3IZDKUUU-55b81b14fbc2908aa06995bd62b57b43.js.gz +0 -0
  163. package/dist/server/web-ui/_expo/static/js/web/{railroad-abnf-AHOZXSZD-627ed129da90b5e1d371bd2c3b9db457.js → railroad-abnf-AHOZXSZD-47462203d9c422ed3805bd31ed12d922.js} +1 -1
  164. package/dist/server/web-ui/_expo/static/js/web/{railroad-abnf-AHOZXSZD-627ed129da90b5e1d371bd2c3b9db457.js.br → railroad-abnf-AHOZXSZD-47462203d9c422ed3805bd31ed12d922.js.br} +1 -1
  165. package/dist/server/web-ui/_expo/static/js/web/railroad-abnf-AHOZXSZD-47462203d9c422ed3805bd31ed12d922.js.gz +0 -0
  166. package/dist/server/web-ui/_expo/static/js/web/{railroad-ebnf-EBAXGLYW-1b7ec12d3b92be4e181971b21f01f3f8.js → railroad-ebnf-EBAXGLYW-708f5dcce4ca8693b288152f6aa217b1.js} +1 -1
  167. package/dist/server/web-ui/_expo/static/js/web/{railroad-ebnf-EBAXGLYW-1b7ec12d3b92be4e181971b21f01f3f8.js.br → railroad-ebnf-EBAXGLYW-708f5dcce4ca8693b288152f6aa217b1.js.br} +1 -1
  168. package/dist/server/web-ui/_expo/static/js/web/railroad-ebnf-EBAXGLYW-708f5dcce4ca8693b288152f6aa217b1.js.gz +0 -0
  169. package/dist/server/web-ui/_expo/static/js/web/{railroad-peg-LSFZ7HO6-8a8e027f4141d16a12c15223da966d7d.js → railroad-peg-LSFZ7HO6-eb7ff4c6b43a9c593b0feac004d52d4e.js} +1 -1
  170. package/dist/server/web-ui/_expo/static/js/web/railroad-peg-LSFZ7HO6-eb7ff4c6b43a9c593b0feac004d52d4e.js.br +0 -0
  171. package/dist/server/web-ui/_expo/static/js/web/railroad-peg-LSFZ7HO6-eb7ff4c6b43a9c593b0feac004d52d4e.js.gz +0 -0
  172. package/dist/server/web-ui/_expo/static/js/web/{railroadDiagram-RFXS5EU6-499f36fe78b07e5558063f963a47a474.js → railroadDiagram-RFXS5EU6-c1c534a0f6478078bca1fd806a1ee2ae.js} +1 -1
  173. package/dist/server/web-ui/_expo/static/js/web/railroadDiagram-RFXS5EU6-c1c534a0f6478078bca1fd806a1ee2ae.js.br +0 -0
  174. package/dist/server/web-ui/_expo/static/js/web/railroadDiagram-RFXS5EU6-c1c534a0f6478078bca1fd806a1ee2ae.js.gz +0 -0
  175. package/dist/server/web-ui/_expo/static/js/web/{requirementDiagram-TGXJPOKE-9aaddb885fc59873a8f89cd7550c2c43.js → requirementDiagram-TGXJPOKE-5dd7440a5946dde0e06a5afa9e0295a1.js} +1 -1
  176. package/dist/server/web-ui/_expo/static/js/web/requirementDiagram-TGXJPOKE-5dd7440a5946dde0e06a5afa9e0295a1.js.br +0 -0
  177. package/dist/server/web-ui/_expo/static/js/web/{requirementDiagram-TGXJPOKE-9aaddb885fc59873a8f89cd7550c2c43.js.gz → requirementDiagram-TGXJPOKE-5dd7440a5946dde0e06a5afa9e0295a1.js.gz} +0 -0
  178. package/dist/server/web-ui/_expo/static/js/web/{sankeyDiagram-HTMAVEWB-3fa66fe414adce7a50e31551c059f99c.js → sankeyDiagram-HTMAVEWB-76b963967a4f7c862f4f2f18492e7c56.js} +120 -120
  179. package/dist/server/web-ui/_expo/static/js/web/sankeyDiagram-HTMAVEWB-76b963967a4f7c862f4f2f18492e7c56.js.br +0 -0
  180. package/dist/server/web-ui/_expo/static/js/web/sankeyDiagram-HTMAVEWB-76b963967a4f7c862f4f2f18492e7c56.js.gz +0 -0
  181. package/dist/server/web-ui/_expo/static/js/web/{sequenceDiagram-DBY2YBRQ-856a29fb0507a2dcb697a2aa29cd0b7a.js → sequenceDiagram-DBY2YBRQ-d40a3dbcd285c19aa010a697e12f5022.js} +1 -1
  182. package/dist/server/web-ui/_expo/static/js/web/sequenceDiagram-DBY2YBRQ-d40a3dbcd285c19aa010a697e12f5022.js.br +0 -0
  183. package/dist/server/web-ui/_expo/static/js/web/{sequenceDiagram-DBY2YBRQ-856a29fb0507a2dcb697a2aa29cd0b7a.js.gz → sequenceDiagram-DBY2YBRQ-d40a3dbcd285c19aa010a697e12f5022.js.gz} +0 -0
  184. package/dist/server/web-ui/_expo/static/js/web/{sizeCapture-X5ZJPWSS-388b849b33073b8202dd9ca50038b1c7.js → sizeCapture-X5ZJPWSS-03ac818220d4ba98bdd2f4f454758263.js} +1 -1
  185. package/dist/server/web-ui/_expo/static/js/web/sizeCapture-X5ZJPWSS-03ac818220d4ba98bdd2f4f454758263.js.br +0 -0
  186. package/dist/server/web-ui/_expo/static/js/web/sizeCapture-X5ZJPWSS-03ac818220d4ba98bdd2f4f454758263.js.gz +0 -0
  187. package/dist/server/web-ui/_expo/static/js/web/{stateDiagram-2N3HPSRC-9ca22d078d9922ddcb54ba7bb389c734.js → stateDiagram-2N3HPSRC-ba1e123bf8ce69ae781981f264e90564.js} +1 -1
  188. package/dist/server/web-ui/_expo/static/js/web/stateDiagram-2N3HPSRC-ba1e123bf8ce69ae781981f264e90564.js.br +0 -0
  189. package/dist/server/web-ui/_expo/static/js/web/stateDiagram-2N3HPSRC-ba1e123bf8ce69ae781981f264e90564.js.gz +0 -0
  190. package/dist/server/web-ui/_expo/static/js/web/{stateDiagram-v2-6OUMAXLB-4357e7143c73859f6b4858ba72acb5aa.js → stateDiagram-v2-6OUMAXLB-5925b0db81d9a113005bd93c6adbab9d.js} +1 -1
  191. package/dist/server/web-ui/_expo/static/js/web/stateDiagram-v2-6OUMAXLB-5925b0db81d9a113005bd93c6adbab9d.js.br +0 -0
  192. package/dist/server/web-ui/_expo/static/js/web/stateDiagram-v2-6OUMAXLB-5925b0db81d9a113005bd93c6adbab9d.js.gz +0 -0
  193. package/dist/server/web-ui/_expo/static/js/web/{swimlanes-5IMT3BWC-d737ca408a7a2b82f7419141456d28e4.js → swimlanes-5IMT3BWC-93c0bb8b5ee84ca6f11d561497ec0ef0.js} +1 -1
  194. package/dist/server/web-ui/_expo/static/js/web/swimlanes-5IMT3BWC-93c0bb8b5ee84ca6f11d561497ec0ef0.js.br +0 -0
  195. package/dist/server/web-ui/_expo/static/js/web/{swimlanes-5IMT3BWC-d737ca408a7a2b82f7419141456d28e4.js.gz → swimlanes-5IMT3BWC-93c0bb8b5ee84ca6f11d561497ec0ef0.js.gz} +0 -0
  196. package/dist/server/web-ui/_expo/static/js/web/{swimlanesDiagram-G3AALYLV-0bf2ac58b338c2aeb33213ff1a57983a.js → swimlanesDiagram-G3AALYLV-5f3e335e1800b344e786080955bdb2c5.js} +1 -1
  197. package/dist/server/web-ui/_expo/static/js/web/swimlanesDiagram-G3AALYLV-5f3e335e1800b344e786080955bdb2c5.js.br +0 -0
  198. package/dist/server/web-ui/_expo/static/js/web/swimlanesDiagram-G3AALYLV-5f3e335e1800b344e786080955bdb2c5.js.gz +0 -0
  199. package/dist/server/web-ui/_expo/static/js/web/{timeline-definition-FHXFAJF6-1130419ca563266603c98f1b2148a154.js → timeline-definition-FHXFAJF6-ebf6579c1264c7dd88b67d0ecc9313d7.js} +1 -1
  200. package/dist/server/web-ui/_expo/static/js/web/timeline-definition-FHXFAJF6-ebf6579c1264c7dd88b67d0ecc9313d7.js.br +0 -0
  201. package/dist/server/web-ui/_expo/static/js/web/timeline-definition-FHXFAJF6-ebf6579c1264c7dd88b67d0ecc9313d7.js.gz +0 -0
  202. package/dist/server/web-ui/_expo/static/js/web/{treeView-QDETBFTQ-4f6ec9b592731c21dee99264fa638554.js → treeView-QDETBFTQ-682ed2be8efc51bd8196ff3320637705.js} +1 -1
  203. package/dist/server/web-ui/_expo/static/js/web/{treeView-QDETBFTQ-4f6ec9b592731c21dee99264fa638554.js.br → treeView-QDETBFTQ-682ed2be8efc51bd8196ff3320637705.js.br} +0 -0
  204. package/dist/server/web-ui/_expo/static/js/web/treeView-QDETBFTQ-682ed2be8efc51bd8196ff3320637705.js.gz +0 -0
  205. package/dist/server/web-ui/_expo/static/js/web/{treemap-6X3UGDF4-39eb6ec2c19a5de9242fd28aa26dcf5b.js → treemap-6X3UGDF4-4fb89637583518868012429289715b50.js} +1 -1
  206. package/dist/server/web-ui/_expo/static/js/web/{treemap-6X3UGDF4-39eb6ec2c19a5de9242fd28aa26dcf5b.js.br → treemap-6X3UGDF4-4fb89637583518868012429289715b50.js.br} +0 -0
  207. package/dist/server/web-ui/_expo/static/js/web/treemap-6X3UGDF4-4fb89637583518868012429289715b50.js.gz +0 -0
  208. package/dist/server/web-ui/_expo/static/js/web/{vennDiagram-L72KCM5P-4c15b392e9de3fdc472b53cbdf8e7558.js → vennDiagram-L72KCM5P-4a09551e281dc72285c8c56bcd4b04a3.js} +2 -2
  209. package/dist/server/web-ui/_expo/static/js/web/vennDiagram-L72KCM5P-4a09551e281dc72285c8c56bcd4b04a3.js.br +0 -0
  210. package/dist/server/web-ui/_expo/static/js/web/vennDiagram-L72KCM5P-4a09551e281dc72285c8c56bcd4b04a3.js.gz +0 -0
  211. package/dist/server/web-ui/_expo/static/js/web/{visualizer-bundle-b0af8f4f1ab8d4029f3f21236df43f7f.js → visualizer-bundle-fab344f71166d5645590bda1bab1e0a5.js} +1 -1
  212. package/dist/server/web-ui/_expo/static/js/web/visualizer-bundle-fab344f71166d5645590bda1bab1e0a5.js.br +0 -0
  213. package/dist/server/web-ui/_expo/static/js/web/{visualizer-bundle-b0af8f4f1ab8d4029f3f21236df43f7f.js.gz → visualizer-bundle-fab344f71166d5645590bda1bab1e0a5.js.gz} +0 -0
  214. package/dist/server/web-ui/_expo/static/js/web/{visualizer-panel-3fbc1337bb844d7163cbdb418a4dfd53.js → visualizer-panel-bf8e9531071e12cefa8eda4766877aba.js} +1 -1
  215. package/dist/server/web-ui/_expo/static/js/web/visualizer-panel-bf8e9531071e12cefa8eda4766877aba.js.br +6 -0
  216. package/dist/server/web-ui/_expo/static/js/web/{visualizer-panel-3fbc1337bb844d7163cbdb418a4dfd53.js.gz → visualizer-panel-bf8e9531071e12cefa8eda4766877aba.js.gz} +0 -0
  217. package/dist/server/web-ui/_expo/static/js/web/{visualizer-pip-de03996e25ac5d8a11d723ea90b2f9a3.js → visualizer-pip-633730d52ecc119677ce9ecc287c7879.js} +2 -2
  218. package/dist/server/web-ui/_expo/static/js/web/visualizer-pip-633730d52ecc119677ce9ecc287c7879.js.br +0 -0
  219. package/dist/server/web-ui/_expo/static/js/web/{visualizer-pip-de03996e25ac5d8a11d723ea90b2f9a3.js.gz → visualizer-pip-633730d52ecc119677ce9ecc287c7879.js.gz} +0 -0
  220. package/dist/server/web-ui/_expo/static/js/web/{wardley-OPB4EBWU-b075ee9680ce77acf211a0fb1e63cca8.js → wardley-OPB4EBWU-86a2856822d60f742050c338803f8533.js} +1 -1
  221. package/dist/server/web-ui/_expo/static/js/web/wardley-OPB4EBWU-86a2856822d60f742050c338803f8533.js.br +0 -0
  222. package/dist/server/web-ui/_expo/static/js/web/wardley-OPB4EBWU-86a2856822d60f742050c338803f8533.js.gz +0 -0
  223. package/dist/server/web-ui/_expo/static/js/web/{wardleyDiagram-EHGQE667-a93bc6a6a1e80adcb9a740a2ea3d1676.js → wardleyDiagram-EHGQE667-cf65a2e4de30372a177e82834dba571c.js} +1 -1
  224. package/dist/server/web-ui/_expo/static/js/web/wardleyDiagram-EHGQE667-cf65a2e4de30372a177e82834dba571c.js.br +0 -0
  225. package/dist/server/web-ui/_expo/static/js/web/wardleyDiagram-EHGQE667-cf65a2e4de30372a177e82834dba571c.js.gz +0 -0
  226. package/dist/server/web-ui/_expo/static/js/web/{xychartDiagram-FW5EYKEG-ec54fa07a12c5792d0bb7b65deaff05b.js → xychartDiagram-FW5EYKEG-d29f0b24141b00d07e99c98d99ac55d4.js} +1 -1
  227. package/dist/server/web-ui/_expo/static/js/web/xychartDiagram-FW5EYKEG-d29f0b24141b00d07e99c98d99ac55d4.js.br +0 -0
  228. package/dist/server/web-ui/_expo/static/js/web/xychartDiagram-FW5EYKEG-d29f0b24141b00d07e99c98d99ac55d4.js.gz +0 -0
  229. package/dist/server/web-ui/index.html +1 -1
  230. package/dist/server/web-ui/index.html.br +0 -0
  231. package/dist/server/web-ui/index.html.gz +0 -0
  232. package/dist/src/terminal/shell-integration/zsh/.zshenv +17 -17
  233. package/dist/src/terminal/shell-integration/zsh/otto-integration.zsh +32 -32
  234. package/package.json +5 -5
  235. package/dist/server/web-ui/_expo/static/js/web/__common-6d2299ed037bec2393245a7c0bf1c643.js.br +0 -0
  236. package/dist/server/web-ui/_expo/static/js/web/__common-6d2299ed037bec2393245a7c0bf1c643.js.gz +0 -0
  237. package/dist/server/web-ui/_expo/static/js/web/abnfDiagram-VRR7QNED-c3c2ca327b2d7ad9af3caa1cba884908.js.br +0 -0
  238. package/dist/server/web-ui/_expo/static/js/web/abnfDiagram-VRR7QNED-c3c2ca327b2d7ad9af3caa1cba884908.js.gz +0 -0
  239. package/dist/server/web-ui/_expo/static/js/web/architecture-TIHT7OUA-0cf23d3dc9775f216c01daae4aae250a.js.gz +0 -0
  240. package/dist/server/web-ui/_expo/static/js/web/architectureDiagram-ZJ3FMSHR-f3bce96124559dc19faa4d90aca4afd4.js.br +0 -0
  241. package/dist/server/web-ui/_expo/static/js/web/architectureDiagram-ZJ3FMSHR-f3bce96124559dc19faa4d90aca4afd4.js.gz +0 -0
  242. package/dist/server/web-ui/_expo/static/js/web/blockDiagram-677ZJIJ3-839486928c0f151128a5e2836aa07080.js.br +0 -0
  243. package/dist/server/web-ui/_expo/static/js/web/c4Diagram-LMCZKHZV-197212c21520a6b659a5649e683619d0.js.br +0 -0
  244. package/dist/server/web-ui/_expo/static/js/web/classDiagram-OUVF2IWQ-a0a0fbefc96d14b6619c84fc4f92a39a.js.br +0 -0
  245. package/dist/server/web-ui/_expo/static/js/web/classDiagram-OUVF2IWQ-a0a0fbefc96d14b6619c84fc4f92a39a.js.gz +0 -0
  246. package/dist/server/web-ui/_expo/static/js/web/classDiagram-v2-EOCWNBFH-e979239c6d160123d5b4847253a8a70e.js.br +0 -0
  247. package/dist/server/web-ui/_expo/static/js/web/classDiagram-v2-EOCWNBFH-e979239c6d160123d5b4847253a8a70e.js.gz +0 -0
  248. package/dist/server/web-ui/_expo/static/js/web/cose-bilkent-JH36ORCC-bbc39a6bb062ba85e433f91becc37a65.js.br +0 -0
  249. package/dist/server/web-ui/_expo/static/js/web/cose-bilkent-JH36ORCC-bbc39a6bb062ba85e433f91becc37a65.js.gz +0 -0
  250. package/dist/server/web-ui/_expo/static/js/web/cynefin-VYW2F7L2-ea0e514652627740f5a2ed32b027a164.js.br +0 -0
  251. package/dist/server/web-ui/_expo/static/js/web/cynefin-VYW2F7L2-ea0e514652627740f5a2ed32b027a164.js.gz +0 -0
  252. package/dist/server/web-ui/_expo/static/js/web/cynefinDiagram-TSTJHNR4-0446f9b57ba778e5883d93e24692ffce.js.br +0 -0
  253. package/dist/server/web-ui/_expo/static/js/web/cynefinDiagram-TSTJHNR4-0446f9b57ba778e5883d93e24692ffce.js.gz +0 -0
  254. package/dist/server/web-ui/_expo/static/js/web/dagre-VKFMJZFB-69f7aa52521b06a95874b1ac67508def.js.br +0 -0
  255. package/dist/server/web-ui/_expo/static/js/web/dagre-VKFMJZFB-69f7aa52521b06a95874b1ac67508def.js.gz +0 -0
  256. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-0ae8aadd6e53625f59d62eceb1f06ede.js.gz +0 -0
  257. package/dist/server/web-ui/_expo/static/js/web/diagram-FQU43EPY-bd0940835ccad031627e285aaba6d5ec.js.br +0 -0
  258. package/dist/server/web-ui/_expo/static/js/web/diagram-G47NLZAW-217e2cd3275924bc08fc6ebe79e95e48.js.br +0 -0
  259. package/dist/server/web-ui/_expo/static/js/web/diagram-G47NLZAW-217e2cd3275924bc08fc6ebe79e95e48.js.gz +0 -0
  260. package/dist/server/web-ui/_expo/static/js/web/diagram-NH7WQ7WH-fbd3aa35ca68df15ee378fb63241b333.js.br +0 -0
  261. package/dist/server/web-ui/_expo/static/js/web/diagram-NH7WQ7WH-fbd3aa35ca68df15ee378fb63241b333.js.gz +0 -0
  262. package/dist/server/web-ui/_expo/static/js/web/diagram-OA4YK3LP-48ebb0ba6bcb34417649bd55070542ad.js.br +0 -0
  263. package/dist/server/web-ui/_expo/static/js/web/diagram-OA4YK3LP-48ebb0ba6bcb34417649bd55070542ad.js.gz +0 -0
  264. package/dist/server/web-ui/_expo/static/js/web/diagram-WEI45ONY-2be85db5396495fa970419f77587cf14.js.br +0 -0
  265. package/dist/server/web-ui/_expo/static/js/web/diagram-WEI45ONY-2be85db5396495fa970419f77587cf14.js.gz +0 -0
  266. package/dist/server/web-ui/_expo/static/js/web/ebnfDiagram-CCIWWBDH-3c5c44cf8340b641d13076adab77967b.js.br +0 -0
  267. package/dist/server/web-ui/_expo/static/js/web/ebnfDiagram-CCIWWBDH-3c5c44cf8340b641d13076adab77967b.js.gz +0 -0
  268. package/dist/server/web-ui/_expo/static/js/web/erDiagram-Q63AITRT-81762a72bd33bf1042e4cad4f688abf2.js.br +0 -0
  269. package/dist/server/web-ui/_expo/static/js/web/erDiagram-Q63AITRT-81762a72bd33bf1042e4cad4f688abf2.js.gz +0 -0
  270. package/dist/server/web-ui/_expo/static/js/web/eventmodeling-45OFAUF4-11d7615d746c5304c28d4931ec9ca5f7.js.gz +0 -0
  271. package/dist/server/web-ui/_expo/static/js/web/flowDiagram-23GEKE2U-5a2af608a9500bb36da0595c3464a562.js.br +0 -0
  272. package/dist/server/web-ui/_expo/static/js/web/flowDiagram-23GEKE2U-5a2af608a9500bb36da0595c3464a562.js.gz +0 -0
  273. package/dist/server/web-ui/_expo/static/js/web/ganttDiagram-NO4QXBWP-379aae0f5fb2652d90827c7f8b2472d2.js.br +0 -0
  274. package/dist/server/web-ui/_expo/static/js/web/gitGraph-TEB2WS4Q-d978b8a2d1fd8fcc132b16ef8d57dd7c.js.gz +0 -0
  275. package/dist/server/web-ui/_expo/static/js/web/index-4c86d3c14df18b18b3b9a6329b896faf.js.br +0 -0
  276. package/dist/server/web-ui/_expo/static/js/web/index-4c86d3c14df18b18b3b9a6329b896faf.js.gz +0 -0
  277. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-5a90994af83f12740a986d9f1cb55cc9.js.br +0 -0
  278. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-5a90994af83f12740a986d9f1cb55cc9.js.gz +0 -0
  279. package/dist/server/web-ui/_expo/static/js/web/info-DKCQHKI2-b59d0dbb9a30d361ddc796a5cfa7fc41.js.gz +0 -0
  280. package/dist/server/web-ui/_expo/static/js/web/infoDiagram-FWYZ7A6U-0c4368de61a3bdbfbc73b143423981d9.js.br +0 -0
  281. package/dist/server/web-ui/_expo/static/js/web/infoDiagram-FWYZ7A6U-0c4368de61a3bdbfbc73b143423981d9.js.gz +0 -0
  282. package/dist/server/web-ui/_expo/static/js/web/ishikawaDiagram-FXEZZL3T-1474e73532a16148b7944d3b0f896197.js.br +0 -0
  283. package/dist/server/web-ui/_expo/static/js/web/journeyDiagram-5HDEW3XC-13df6cce9cb7f0e6ffbaa9a614feeee4.js.br +0 -0
  284. package/dist/server/web-ui/_expo/static/js/web/kanban-definition-HUTT4EX6-6b56c0da5302838e7e1c46bf7460ea35.js.br +0 -0
  285. package/dist/server/web-ui/_expo/static/js/web/katex-7f6ac23f118e6e9264fdfa96e335134f.js.br +0 -0
  286. package/dist/server/web-ui/_expo/static/js/web/mermaid-75931b049ce3e66af3cd8ddf01e1cd23.js.br +0 -0
  287. package/dist/server/web-ui/_expo/static/js/web/mindmap-definition-LN4V7U3C-fafde693a329ca39007debdd961134b4.js.br +0 -0
  288. package/dist/server/web-ui/_expo/static/js/web/mindmap-definition-LN4V7U3C-fafde693a329ca39007debdd961134b4.js.gz +0 -0
  289. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-645b8ffe39c60c05c0a224e6efcb5a9c.js.br +0 -0
  290. package/dist/server/web-ui/_expo/static/js/web/orchestration-graph-panel-2d117a5764d11c411d707e37fba93a1b.js.br +0 -0
  291. package/dist/server/web-ui/_expo/static/js/web/packet-7NZHBO7P-61a485e09ee448c823fffbdfc588826d.js.gz +0 -0
  292. package/dist/server/web-ui/_expo/static/js/web/pegDiagram-2B236MQR-035fe1b93f90f4775e99aea533552b42.js.br +0 -0
  293. package/dist/server/web-ui/_expo/static/js/web/pegDiagram-2B236MQR-035fe1b93f90f4775e99aea533552b42.js.gz +0 -0
  294. package/dist/server/web-ui/_expo/static/js/web/pie-RZYD4A2V-f6208df18db61d490f4811b192b77dec.js.br +0 -0
  295. package/dist/server/web-ui/_expo/static/js/web/pie-RZYD4A2V-f6208df18db61d490f4811b192b77dec.js.gz +0 -0
  296. package/dist/server/web-ui/_expo/static/js/web/pieDiagram-ENE6RG2P-c78c82bf26f51acb7b7c44ae51eba9c6.js.br +0 -0
  297. package/dist/server/web-ui/_expo/static/js/web/quadrantDiagram-ABIIQ3AL-efff1486187742fe8683a966651df92f.js.br +0 -0
  298. package/dist/server/web-ui/_expo/static/js/web/radar-I7S5WNFK-0150ed7f0d337fc7ec70638a3656ea06.js.gz +0 -0
  299. package/dist/server/web-ui/_expo/static/js/web/railroad-3IZDKUUU-c6e94ec81a88c02cb339de59f29386f5.js.gz +0 -0
  300. package/dist/server/web-ui/_expo/static/js/web/railroad-abnf-AHOZXSZD-627ed129da90b5e1d371bd2c3b9db457.js.gz +0 -0
  301. package/dist/server/web-ui/_expo/static/js/web/railroad-ebnf-EBAXGLYW-1b7ec12d3b92be4e181971b21f01f3f8.js.gz +0 -0
  302. package/dist/server/web-ui/_expo/static/js/web/railroad-peg-LSFZ7HO6-8a8e027f4141d16a12c15223da966d7d.js.br +0 -0
  303. package/dist/server/web-ui/_expo/static/js/web/railroad-peg-LSFZ7HO6-8a8e027f4141d16a12c15223da966d7d.js.gz +0 -0
  304. package/dist/server/web-ui/_expo/static/js/web/railroadDiagram-RFXS5EU6-499f36fe78b07e5558063f963a47a474.js.br +0 -0
  305. package/dist/server/web-ui/_expo/static/js/web/railroadDiagram-RFXS5EU6-499f36fe78b07e5558063f963a47a474.js.gz +0 -0
  306. package/dist/server/web-ui/_expo/static/js/web/requirementDiagram-TGXJPOKE-9aaddb885fc59873a8f89cd7550c2c43.js.br +0 -0
  307. package/dist/server/web-ui/_expo/static/js/web/sankeyDiagram-HTMAVEWB-3fa66fe414adce7a50e31551c059f99c.js.br +0 -0
  308. package/dist/server/web-ui/_expo/static/js/web/sankeyDiagram-HTMAVEWB-3fa66fe414adce7a50e31551c059f99c.js.gz +0 -0
  309. package/dist/server/web-ui/_expo/static/js/web/sequenceDiagram-DBY2YBRQ-856a29fb0507a2dcb697a2aa29cd0b7a.js.br +0 -0
  310. package/dist/server/web-ui/_expo/static/js/web/sizeCapture-X5ZJPWSS-388b849b33073b8202dd9ca50038b1c7.js.br +0 -0
  311. package/dist/server/web-ui/_expo/static/js/web/sizeCapture-X5ZJPWSS-388b849b33073b8202dd9ca50038b1c7.js.gz +0 -0
  312. package/dist/server/web-ui/_expo/static/js/web/stateDiagram-2N3HPSRC-9ca22d078d9922ddcb54ba7bb389c734.js.br +0 -0
  313. package/dist/server/web-ui/_expo/static/js/web/stateDiagram-2N3HPSRC-9ca22d078d9922ddcb54ba7bb389c734.js.gz +0 -0
  314. package/dist/server/web-ui/_expo/static/js/web/stateDiagram-v2-6OUMAXLB-4357e7143c73859f6b4858ba72acb5aa.js.br +0 -0
  315. package/dist/server/web-ui/_expo/static/js/web/stateDiagram-v2-6OUMAXLB-4357e7143c73859f6b4858ba72acb5aa.js.gz +0 -0
  316. package/dist/server/web-ui/_expo/static/js/web/swimlanes-5IMT3BWC-d737ca408a7a2b82f7419141456d28e4.js.br +0 -0
  317. package/dist/server/web-ui/_expo/static/js/web/swimlanesDiagram-G3AALYLV-0bf2ac58b338c2aeb33213ff1a57983a.js.br +0 -0
  318. package/dist/server/web-ui/_expo/static/js/web/swimlanesDiagram-G3AALYLV-0bf2ac58b338c2aeb33213ff1a57983a.js.gz +0 -0
  319. package/dist/server/web-ui/_expo/static/js/web/timeline-definition-FHXFAJF6-1130419ca563266603c98f1b2148a154.js.br +0 -0
  320. package/dist/server/web-ui/_expo/static/js/web/timeline-definition-FHXFAJF6-1130419ca563266603c98f1b2148a154.js.gz +0 -0
  321. package/dist/server/web-ui/_expo/static/js/web/treeView-QDETBFTQ-4f6ec9b592731c21dee99264fa638554.js.gz +0 -0
  322. package/dist/server/web-ui/_expo/static/js/web/treemap-6X3UGDF4-39eb6ec2c19a5de9242fd28aa26dcf5b.js.gz +0 -0
  323. package/dist/server/web-ui/_expo/static/js/web/vennDiagram-L72KCM5P-4c15b392e9de3fdc472b53cbdf8e7558.js.br +0 -0
  324. package/dist/server/web-ui/_expo/static/js/web/vennDiagram-L72KCM5P-4c15b392e9de3fdc472b53cbdf8e7558.js.gz +0 -0
  325. package/dist/server/web-ui/_expo/static/js/web/visualizer-bundle-b0af8f4f1ab8d4029f3f21236df43f7f.js.br +0 -0
  326. package/dist/server/web-ui/_expo/static/js/web/visualizer-panel-3fbc1337bb844d7163cbdb418a4dfd53.js.br +0 -3
  327. package/dist/server/web-ui/_expo/static/js/web/visualizer-pip-de03996e25ac5d8a11d723ea90b2f9a3.js.br +0 -0
  328. package/dist/server/web-ui/_expo/static/js/web/wardley-OPB4EBWU-b075ee9680ce77acf211a0fb1e63cca8.js.br +0 -0
  329. package/dist/server/web-ui/_expo/static/js/web/wardley-OPB4EBWU-b075ee9680ce77acf211a0fb1e63cca8.js.gz +0 -0
  330. package/dist/server/web-ui/_expo/static/js/web/wardleyDiagram-EHGQE667-a93bc6a6a1e80adcb9a740a2ea3d1676.js.br +0 -0
  331. package/dist/server/web-ui/_expo/static/js/web/wardleyDiagram-EHGQE667-a93bc6a6a1e80adcb9a740a2ea3d1676.js.gz +0 -0
  332. package/dist/server/web-ui/_expo/static/js/web/xychartDiagram-FW5EYKEG-ec54fa07a12c5792d0bb7b65deaff05b.js.br +0 -0
  333. package/dist/server/web-ui/_expo/static/js/web/xychartDiagram-FW5EYKEG-ec54fa07a12c5792d0bb7b65deaff05b.js.gz +0 -0
@@ -1517,12 +1517,19 @@ function readLegacyResultUsageTokens(usage) {
1517
1517
  function isClaudeSubagentToolName(name) {
1518
1518
  return name === "Task" || name === "Agent";
1519
1519
  }
1520
- // Claude's Bash tool used with run_in_background: true reports its lifecycle
1520
+ // Claude's shell tool used with run_in_background: true reports its lifecycle
1521
1521
  // through the same task_started/task_progress/task_notification stream as
1522
1522
  // subagents. See projects/observed-subagents/observed-subagents.md's note
1523
1523
  // that Otto today ignores shell/monitor/workflow task events.
1524
+ //
1525
+ // The tool is named "Bash" on POSIX hosts and "PowerShell" on Windows ones, so
1526
+ // both names have to be recognized. Matching only "Bash" left every Windows
1527
+ // background shell task failing this test everywhere it is used: routing
1528
+ // survived on task_type ("local_bash") and the remembered task id, but the
1529
+ // interrupt teardown in flushPendingToolCalls has no such fallback, so an
1530
+ // in-flight background PowerShell row was never closed and stuck "running".
1524
1531
  function isClaudeBackgroundShellToolName(name) {
1525
- return name === "Bash";
1532
+ return name === "Bash" || name === "PowerShell";
1526
1533
  }
1527
1534
  // Claude's Workflow tool (deterministic multi-agent orchestration —
1528
1535
  // agent()/parallel()/pipeline(), progress phases, task-completion notifications)
@@ -3602,7 +3609,7 @@ class ClaudeAgentSession {
3602
3609
  }
3603
3610
  }
3604
3611
  translateMessageToEvents(message, options) {
3605
- const parentToolUseId = readClaudeParentToolUseId(message);
3612
+ const parentToolUseId = this.readObservedSubagentSidechainParent(message);
3606
3613
  if (parentToolUseId) {
3607
3614
  const sidechainEvents = this.sidechainTracker.handleMessage(message, parentToolUseId);
3608
3615
  this.appendObservedSubagentSidechainEvents(message, parentToolUseId, sidechainEvents);
@@ -3676,6 +3683,44 @@ class ClaudeAgentSession {
3676
3683
  }
3677
3684
  return events;
3678
3685
  }
3686
+ /**
3687
+ * True when a message's `parent_tool_use_id` names an observable AI run
3688
+ * (a Task/Agent sub-agent or a Workflow) rather than an ordinary tool.
3689
+ *
3690
+ * A non-null parent_tool_use_id is NOT by itself a sub-agent signal. Roughly
3691
+ * 30s into ANY slow tool the CLI emits a heartbeat `tool_progress` whose
3692
+ * tool_use_id is a synthetic "<id>-heartbeat-N" and whose parent_tool_use_id
3693
+ * is the real tool's id:
3694
+ *
3695
+ * {"type":"tool_progress","tool_use_id":"toolu_01EB…-heartbeat-0",
3696
+ * "parent_tool_use_id":"toolu_01EB…"}
3697
+ *
3698
+ * Treating that as a sidechain announced an observed sub-agent keyed by the
3699
+ * shell tool, titled with its `description`. The row then had no timeline (a
3700
+ * tool_progress is neither an assistant nor a user message) and no way to
3701
+ * settle (every settle path is gated on a Task/Agent/Workflow tool name), so
3702
+ * every Bash/PowerShell call that ran longer than the heartbeat left a
3703
+ * permanently "running" row with an empty pane.
3704
+ *
3705
+ * An unknown parent stays accepted: a backgrounded Agent whose tool_result
3706
+ * ack already evicted its cache entry still has to reach its observed row.
3707
+ */
3708
+ readObservedSubagentSidechainParent(message) {
3709
+ const parentToolUseId = readClaudeParentToolUseId(message);
3710
+ if (!parentToolUseId) {
3711
+ return null;
3712
+ }
3713
+ if (this.announcedObservedSubagents.has(parentToolUseId) ||
3714
+ this.workflowObservedKeys.has(parentToolUseId)) {
3715
+ return parentToolUseId;
3716
+ }
3717
+ const cachedTool = this.toolUseCache.get(parentToolUseId);
3718
+ if (!cachedTool) {
3719
+ return parentToolUseId;
3720
+ }
3721
+ const isObservable = isClaudeSubagentToolName(cachedTool.name) || isClaudeWorkflowToolName(cachedTool.name);
3722
+ return isObservable ? parentToolUseId : null;
3723
+ }
3679
3724
  /**
3680
3725
  * Route a sidechain (subagent) message into the observed subagent's own
3681
3726
  * lifecycle + timeline events, alongside the parent Task row's summary log.
@@ -1,5 +1,5 @@
1
1
  import type { Logger } from "pino";
2
- import type { AgentCapabilityFlags, AgentClient, AgentFeature, AgentLaunchContext, AgentMode, AgentPersistenceHandle, AgentPermissionRequest, AgentPermissionResponse, AgentPermissionResult, AgentPersonalityUpdate, AgentPromptInput, AgentProvider, AgentRunOptions, AgentRunResult, AgentRuntimeInfo, AgentSession, AgentSessionConfig, AgentStreamEvent, FetchCatalogOptions, ImportableProviderSession, ImportProviderSessionContext, ImportProviderSessionInput, ProviderCatalog } from "../agent-sdk-types.js";
2
+ import type { AgentBareCompletionOptions, AgentBareCompletionResult, AgentCapabilityFlags, AgentClient, AgentFeature, AgentLaunchContext, AgentMode, AgentPersistenceHandle, AgentPermissionRequest, AgentPermissionResponse, AgentPermissionResult, AgentPersonalityUpdate, AgentPromptInput, AgentProvider, AgentRunOptions, AgentRunResult, AgentRuntimeInfo, AgentSession, AgentSessionConfig, AgentStreamEvent, FetchCatalogOptions, ImportableProviderSession, ImportProviderSessionContext, ImportProviderSessionInput, ProviderCatalog } from "../agent-sdk-types.js";
3
3
  export declare const MOCK_LOAD_TEST_PROVIDER_ID = "mock";
4
4
  export declare const MOCK_LOAD_TEST_DEFAULT_MODEL_ID = "five-minute-stream";
5
5
  export declare class MockLoadTestAgentClient implements AgentClient {
@@ -12,6 +12,15 @@ export declare class MockLoadTestAgentClient implements AgentClient {
12
12
  fetchCatalog(_options: FetchCatalogOptions): Promise<ProviderCatalog>;
13
13
  listImportableSessions(): Promise<ImportableProviderSession[]>;
14
14
  importSession(input: ImportProviderSessionInput, context: ImportProviderSessionContext): Promise<import("../agent-sdk-types.js").ImportedProviderSession>;
15
+ /**
16
+ * Tool-less metadata generation (chat titles, branch names). The mock already
17
+ * answers these contracts deterministically through a normal turn, but the
18
+ * structured-generation ladder calls generateBareCompletion first and skips
19
+ * any provider that lacks it — so pinning metadataGeneration at the mock
20
+ * provider silently fell through to a real CLI, which is exactly what the
21
+ * pin exists to avoid. Same parsers as the turn path, answered directly.
22
+ */
23
+ generateBareCompletion(options: AgentBareCompletionOptions): Promise<AgentBareCompletionResult>;
15
24
  isAvailable(): Promise<boolean>;
16
25
  getDiagnostic(): Promise<{
17
26
  diagnostic: string;
@@ -1,5 +1,6 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { importSessionFromPersistence } from "../provider-session-import.js";
3
+ import { generateSyntheticConversation } from "../synthetic-conversation.js";
3
4
  import { getAgentProviderDefinition } from "@otto-code/protocol/provider-manifest";
4
5
  export const MOCK_LOAD_TEST_PROVIDER_ID = "mock";
5
6
  export const MOCK_LOAD_TEST_DEFAULT_MODEL_ID = "five-minute-stream";
@@ -60,6 +61,16 @@ const MODELS = [
60
61
  intervalMs: 5,
61
62
  },
62
63
  },
64
+ {
65
+ provider: MOCK_LOAD_TEST_PROVIDER_ID,
66
+ id: "synthetic-history",
67
+ label: "Synthetic history (count-bounded)",
68
+ description: "Emits a deterministic corpus of synthetic conversation items in one turn then finishes. Used to seed performance-test corpora — all content flows through generateSyntheticConversation so blocks are combinatorially unique.",
69
+ metadata: {
70
+ itemCount: 300,
71
+ intervalMs: 0,
72
+ },
73
+ },
63
74
  ];
64
75
  function shouldEmitPlanApprovalPrompt(prompt) {
65
76
  return /emit\s+(?:a\s+)?synthetic\s+plan\s+approval/i.test(promptToText(prompt));
@@ -127,6 +138,7 @@ function resolveModelProfile(modelId) {
127
138
  modelId: model.id,
128
139
  durationMs: typeof metadata.durationMs === "number" ? metadata.durationMs : MOCK_LOAD_TEST_DURATION_MS,
129
140
  intervalMs: typeof metadata.intervalMs === "number" ? metadata.intervalMs : MOCK_LOAD_TEST_INTERVAL_MS,
141
+ itemCount: typeof metadata.itemCount === "number" && metadata.itemCount > 0 ? metadata.itemCount : null,
130
142
  };
131
143
  }
132
144
  function promptToText(prompt) {
@@ -172,6 +184,45 @@ function parseAgentStreamStressPrompt(prompt) {
172
184
  coalesced: Boolean(match[2]),
173
185
  };
174
186
  }
187
+ // Allow the caller to override itemCount per-turn via a prompt directive like
188
+ // "synthetic-history: 30". This lets the seeder drive many small turns rather
189
+ // than one giant one — important because findMountedWindowStart walks back from
190
+ // the tail until it hits a user message, and a single huge turn with no user
191
+ // messages in its timeline mounts the entire history.
192
+ function parseSyntheticHistoryCountPrompt(prompt) {
193
+ const text = promptToText(prompt);
194
+ const match = /synthetic-history\s*:\s*(\d+)/i.exec(text);
195
+ if (!match) {
196
+ return null;
197
+ }
198
+ const count = Number(match[1]);
199
+ if (!Number.isFinite(count) || count <= 0) {
200
+ return null;
201
+ }
202
+ return Math.min(count, 5000);
203
+ }
204
+ // Pin the generator seed for this turn via a directive like "synthetic-seed: 41".
205
+ //
206
+ // Without this the seed is hashString(turnId), and turnId is a fresh randomUUID
207
+ // per turn — so the generator is deterministic but a *corpus* is not. Two seeding
208
+ // runs would produce statistically similar, byte-different conversations, and any
209
+ // before/after measurement taken across them would be comparing two different
210
+ // corpora while reporting the difference as a code change. A seeder that pins the
211
+ // seed gets the same corpus back every time.
212
+ function parseSyntheticSeedPrompt(prompt) {
213
+ const text = promptToText(prompt);
214
+ const match = /synthetic-seed\s*:\s*(\d+)/i.exec(text);
215
+ if (!match) {
216
+ return null;
217
+ }
218
+ const seed = Number(match[1]);
219
+ if (!Number.isFinite(seed)) {
220
+ return null;
221
+ }
222
+ // The generator forces the seed unsigned anyway; keep it in range here so the
223
+ // directive and the PRNG agree on what "seed 4294967297" means.
224
+ return seed >>> 0;
225
+ }
175
226
  function parseStructuredBranchNamePrompt(prompt) {
176
227
  const text = promptToText(prompt);
177
228
  const hasBranchNamePrompt = text.includes("Generate a title and a git branch name for a coding agent") &&
@@ -420,6 +471,60 @@ function buildCycleQueue(turnId, cycle) {
420
471
  queue.push({ kind: "usage" });
421
472
  return queue;
422
473
  }
474
+ // Build a single-shot queue from the deterministic synthetic conversation
475
+ // generator. Unlike buildCycleQueue this is never refilled — the turn finishes
476
+ // when the queue drains, so it exercises rendering paths with combinatorially
477
+ // unique markdown blocks (avoiding the app's height cache).
478
+ function buildSyntheticHistoryQueue(_turnId, seed, itemCount) {
479
+ const conversation = generateSyntheticConversation({ seed, itemCount });
480
+ const queue = [];
481
+ for (const item of conversation) {
482
+ switch (item.type) {
483
+ case "assistant_message":
484
+ // Tokenize so the app sees incremental streaming.
485
+ for (const tok of tokenize(item.text)) {
486
+ queue.push({ kind: "assistant_token", text: tok });
487
+ }
488
+ break;
489
+ case "reasoning":
490
+ for (const tok of tokenize(item.text)) {
491
+ queue.push({ kind: "reasoning_token", text: tok });
492
+ }
493
+ break;
494
+ case "tool_call":
495
+ // Emit running then completed to exercise both timeline states.
496
+ queue.push({
497
+ kind: "tool_running",
498
+ callId: item.callId,
499
+ name: item.name,
500
+ detail: item.detail,
501
+ });
502
+ queue.push({
503
+ kind: "tool_completed",
504
+ callId: item.callId,
505
+ name: item.name,
506
+ detail: item.detail,
507
+ });
508
+ break;
509
+ case "user_message":
510
+ // Skip — the user prompt is the turn itself, not a timeline event.
511
+ break;
512
+ default:
513
+ // We don't emit todo/error/compaction from synthetic history (the corpus generator doesn't produce them).
514
+ break;
515
+ }
516
+ }
517
+ queue.push({ kind: "usage" });
518
+ return queue;
519
+ }
520
+ // Simple string hash for deriving a deterministic seed from a turn UUID.
521
+ function hashString(s) {
522
+ let h = 0;
523
+ for (let i = 0; i < s.length; i++) {
524
+ h = ((h << 5) - h + s.charCodeAt(i)) | 0;
525
+ }
526
+ return h >>> 0; // force unsigned
527
+ }
423
528
  function createToolCall(input) {
424
529
  return {
425
530
  type: "tool_call",
@@ -473,6 +578,21 @@ export class MockLoadTestAgentClient {
473
578
  resumeSession: this.resumeSession.bind(this),
474
579
  });
475
580
  }
581
+ /**
582
+ * Tool-less metadata generation (chat titles, branch names). The mock already
583
+ * answers these contracts deterministically through a normal turn, but the
584
+ * structured-generation ladder calls generateBareCompletion first and skips
585
+ * any provider that lacks it — so pinning metadataGeneration at the mock
586
+ * provider silently fell through to a real CLI, which is exactly what the
587
+ * pin exists to avoid. Same parsers as the turn path, answered directly.
588
+ */
589
+ async generateBareCompletion(options) {
590
+ const structured = parseStructuredBranchNamePrompt(options.prompt) ?? parseStructuredTitlePrompt(options.prompt);
591
+ if (!structured) {
592
+ throw new Error("Mock load-test provider only generates the structured title/branch metadata contracts.");
593
+ }
594
+ return { text: JSON.stringify(structured) };
595
+ }
476
596
  async isAvailable() {
477
597
  return true;
478
598
  }
@@ -519,6 +639,21 @@ export class MockLoadTestAgentSession {
519
639
  const completed = new Promise((promiseResolve) => {
520
640
  resolve = promiseResolve;
521
641
  });
642
+ // For a count-bounded turn, pre-build the whole queue from a seed derived from
643
+ // turnId, so the same turn always replays the same conversation.
644
+ //
645
+ // The prompt directive wins over the model's own metadata, which means it can also
646
+ // make a normally time-bounded model count-bounded for one turn. That is deliberate
647
+ // and opt-in: a seeder asking for `synthetic-history: 30` wants exactly that, and no
648
+ // model behaves differently unless a caller writes the directive.
649
+ let initialQueue = [];
650
+ const resolvedItemCount = parseSyntheticHistoryCountPrompt(prompt) ?? profile.itemCount;
651
+ if (resolvedItemCount != null) {
652
+ // turnId is the default seed so an unpinned turn still varies; a caller
653
+ // building a corpus it wants to rebuild identically pins it instead.
654
+ const seed = parseSyntheticSeedPrompt(prompt) ?? hashString(turnId);
655
+ initialQueue = buildSyntheticHistoryQueue(turnId, seed, resolvedItemCount);
656
+ }
522
657
  const turn = {
523
658
  turnId,
524
659
  assistantMessageId,
@@ -527,10 +662,11 @@ export class MockLoadTestAgentSession {
527
662
  cycle: 0,
528
663
  durationMs: profile.durationMs,
529
664
  intervalMs: profile.intervalMs,
665
+ itemCount: resolvedItemCount,
530
666
  timer: null,
531
667
  resolve,
532
668
  completed,
533
- queue: [],
669
+ queue: initialQueue,
534
670
  emittedTokens: 0,
535
671
  turnStarted: false,
536
672
  };
@@ -1129,12 +1265,22 @@ export class MockLoadTestAgentSession {
1129
1265
  turnId: turn.turnId,
1130
1266
  });
1131
1267
  }
1132
- const elapsedMs = Date.now() - turn.startedAt;
1133
- if (elapsedMs >= turn.durationMs) {
1134
- this.finishTurn(turn);
1135
- return;
1268
+ // Time-bounded turns: stop when the duration expires. Count-bounded turns
1269
+ // (synthetic-history) skip this check entirely — they finish on queue drain.
1270
+ if (turn.itemCount == null) {
1271
+ const elapsedMs = Date.now() - turn.startedAt;
1272
+ if (elapsedMs >= turn.durationMs) {
1273
+ this.finishTurn(turn);
1274
+ return;
1275
+ }
1136
1276
  }
1277
+ // Empty queue: refill for time-bounded turns, finish for count-bounded ones.
1137
1278
  if (turn.queue.length === 0) {
1279
+ if (turn.itemCount != null) {
1280
+ // Count-bounded turn has drained its pre-built queue — wrap up.
1281
+ this.finishTurn(turn);
1282
+ return;
1283
+ }
1138
1284
  turn.cycle += 1;
1139
1285
  turn.queue = buildCycleQueue(turn.turnId, turn.cycle);
1140
1286
  }
@@ -0,0 +1,18 @@
1
+ import type { AgentTimelineItem } from "./agent-sdk-types.js";
2
+ /**
3
+ * Options for deterministic synthetic conversation generation.
4
+ */
5
+ export interface SyntheticConversationOptions {
6
+ /** Seed value controlling all pseudo-random choices. */
7
+ seed: number;
8
+ /** Exact number of timeline items to generate. */
9
+ itemCount: number;
10
+ }
11
+ /**
12
+ * Generate a deterministic array of fake-but-realistic agent timeline items.
13
+ *
14
+ * Same `seed` + `itemCount` always produces byte-identical output. No wall-clock
15
+ * or non-deterministic APIs are used.
16
+ */
17
+ export declare function generateSyntheticConversation(options: SyntheticConversationOptions): AgentTimelineItem[];
18
+ //# sourceMappingURL=synthetic-conversation.d.ts.map