@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.
- package/dist/server/server/agent/providers/claude/agent.js +48 -3
- package/dist/server/server/agent/providers/mock-load-test-agent.d.ts +10 -1
- package/dist/server/server/agent/providers/mock-load-test-agent.js +151 -5
- package/dist/server/server/agent/synthetic-conversation.d.ts +18 -0
- package/dist/server/server/agent/synthetic-conversation.js +567 -0
- package/dist/server/server/dotnet-process-registry.d.ts +111 -0
- package/dist/server/server/dotnet-process-registry.js +160 -0
- package/dist/server/server/lsp/connection.d.ts +4 -0
- package/dist/server/server/lsp/connection.js +39 -4
- package/dist/server/server/lsp/pool.js +1 -0
- package/dist/server/server/lsp/registry.d.ts +14 -1
- package/dist/server/server/lsp/registry.js +14 -2
- package/dist/server/server/lsp/service.d.ts +18 -2
- package/dist/server/server/lsp/service.js +14 -2
- package/dist/server/server/process-tree.d.ts +29 -0
- package/dist/server/server/process-tree.js +59 -0
- package/dist/server/server/session/files/workspace-files-session.js +11 -5
- package/dist/server/server/session.d.ts +11 -0
- package/dist/server/server/session.js +23 -0
- package/dist/server/server/solution-model/dotnet/probe.d.ts +2 -0
- package/dist/server/server/solution-model/dotnet/probe.js +33 -14
- package/dist/server/server/websocket-server.js +10 -0
- package/dist/server/server/workspace-git-service.d.ts +36 -0
- package/dist/server/server/workspace-git-service.js +110 -6
- package/dist/server/terminal/shell-integration/zsh/.zshenv +17 -17
- package/dist/server/terminal/shell-integration/zsh/otto-integration.zsh +32 -32
- package/dist/server/terminal/terminal.js +12 -2
- package/dist/server/web-ui/_expo/static/js/web/{__common-6d2299ed037bec2393245a7c0bf1c643.js → __common-8ab6f044d26f0be8899aaf3a990c8b65.js} +1855 -1855
- package/dist/server/web-ui/_expo/static/js/web/__common-8ab6f044d26f0be8899aaf3a990c8b65.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/__common-8ab6f044d26f0be8899aaf3a990c8b65.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{abnfDiagram-VRR7QNED-c3c2ca327b2d7ad9af3caa1cba884908.js → abnfDiagram-VRR7QNED-e33c74fb52c02570f5105b2e70194df6.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/abnfDiagram-VRR7QNED-e33c74fb52c02570f5105b2e70194df6.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/abnfDiagram-VRR7QNED-e33c74fb52c02570f5105b2e70194df6.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{architecture-TIHT7OUA-0cf23d3dc9775f216c01daae4aae250a.js → architecture-TIHT7OUA-cc3220b1ecee09a0e5c0b99fbf886b82.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{architecture-TIHT7OUA-0cf23d3dc9775f216c01daae4aae250a.js.br → architecture-TIHT7OUA-cc3220b1ecee09a0e5c0b99fbf886b82.js.br} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/architecture-TIHT7OUA-cc3220b1ecee09a0e5c0b99fbf886b82.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{architectureDiagram-ZJ3FMSHR-f3bce96124559dc19faa4d90aca4afd4.js → architectureDiagram-ZJ3FMSHR-551f5e17dd33a890195b5d060cd75ad2.js} +4 -4
- package/dist/server/web-ui/_expo/static/js/web/architectureDiagram-ZJ3FMSHR-551f5e17dd33a890195b5d060cd75ad2.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/architectureDiagram-ZJ3FMSHR-551f5e17dd33a890195b5d060cd75ad2.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{blockDiagram-677ZJIJ3-839486928c0f151128a5e2836aa07080.js → blockDiagram-677ZJIJ3-901d7bbed0b0f6ae3439f6bff861b42f.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/blockDiagram-677ZJIJ3-901d7bbed0b0f6ae3439f6bff861b42f.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{blockDiagram-677ZJIJ3-839486928c0f151128a5e2836aa07080.js.gz → blockDiagram-677ZJIJ3-901d7bbed0b0f6ae3439f6bff861b42f.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{c4Diagram-LMCZKHZV-197212c21520a6b659a5649e683619d0.js → c4Diagram-LMCZKHZV-781ca106d0a19454ec9e559bcba3706c.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/c4Diagram-LMCZKHZV-781ca106d0a19454ec9e559bcba3706c.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{c4Diagram-LMCZKHZV-197212c21520a6b659a5649e683619d0.js.gz → c4Diagram-LMCZKHZV-781ca106d0a19454ec9e559bcba3706c.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{classDiagram-OUVF2IWQ-a0a0fbefc96d14b6619c84fc4f92a39a.js → classDiagram-OUVF2IWQ-1d00e0cc9165446f1bac84fed1e9bbed.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/classDiagram-OUVF2IWQ-1d00e0cc9165446f1bac84fed1e9bbed.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/classDiagram-OUVF2IWQ-1d00e0cc9165446f1bac84fed1e9bbed.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{classDiagram-v2-EOCWNBFH-e979239c6d160123d5b4847253a8a70e.js → classDiagram-v2-EOCWNBFH-52b658fff2b9f58ece5d8528cb381359.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/classDiagram-v2-EOCWNBFH-52b658fff2b9f58ece5d8528cb381359.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/classDiagram-v2-EOCWNBFH-52b658fff2b9f58ece5d8528cb381359.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{cose-bilkent-JH36ORCC-bbc39a6bb062ba85e433f91becc37a65.js → cose-bilkent-JH36ORCC-9256f0de343b59ecc5775210909c4f8b.js} +4 -4
- package/dist/server/web-ui/_expo/static/js/web/cose-bilkent-JH36ORCC-9256f0de343b59ecc5775210909c4f8b.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/cose-bilkent-JH36ORCC-9256f0de343b59ecc5775210909c4f8b.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{cynefin-VYW2F7L2-ea0e514652627740f5a2ed32b027a164.js → cynefin-VYW2F7L2-feb2750e4e4322ac8e6c6049fcfd73cb.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/cynefin-VYW2F7L2-feb2750e4e4322ac8e6c6049fcfd73cb.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/cynefin-VYW2F7L2-feb2750e4e4322ac8e6c6049fcfd73cb.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{cynefinDiagram-TSTJHNR4-0446f9b57ba778e5883d93e24692ffce.js → cynefinDiagram-TSTJHNR4-b98dc254a5fa6581f997a0809a9e0fc0.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/cynefinDiagram-TSTJHNR4-b98dc254a5fa6581f997a0809a9e0fc0.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/cynefinDiagram-TSTJHNR4-b98dc254a5fa6581f997a0809a9e0fc0.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{dagre-VKFMJZFB-69f7aa52521b06a95874b1ac67508def.js → dagre-VKFMJZFB-ef67573fa401136e68fc41adf07ef447.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/dagre-VKFMJZFB-ef67573fa401136e68fc41adf07ef447.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/dagre-VKFMJZFB-ef67573fa401136e68fc41adf07ef447.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-bridge-0ae8aadd6e53625f59d62eceb1f06ede.js → desktop-attachment-bridge-d6e4f29a78dc1bb5b70d4ef2c440c6c0.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-bridge-0ae8aadd6e53625f59d62eceb1f06ede.js.br → desktop-attachment-bridge-d6e4f29a78dc1bb5b70d4ef2c440c6c0.js.br} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-d6e4f29a78dc1bb5b70d4ef2c440c6c0.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-store-ecd775c6aee79778f49274a5bffadc5a.js → desktop-attachment-store-e2e403c64de4bc638e1800c9b226ede3.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-store-ecd775c6aee79778f49274a5bffadc5a.js.br → desktop-attachment-store-e2e403c64de4bc638e1800c9b226ede3.js.br} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{desktop-attachment-store-ecd775c6aee79778f49274a5bffadc5a.js.gz → desktop-attachment-store-e2e403c64de4bc638e1800c9b226ede3.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{diagram-FQU43EPY-bd0940835ccad031627e285aaba6d5ec.js → diagram-FQU43EPY-c6317fa4c07b63f54be30797f25060c7.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/diagram-FQU43EPY-c6317fa4c07b63f54be30797f25060c7.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{diagram-FQU43EPY-bd0940835ccad031627e285aaba6d5ec.js.gz → diagram-FQU43EPY-c6317fa4c07b63f54be30797f25060c7.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{diagram-G47NLZAW-217e2cd3275924bc08fc6ebe79e95e48.js → diagram-G47NLZAW-70713a059ca65ca1241036cc96679bc5.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/diagram-G47NLZAW-70713a059ca65ca1241036cc96679bc5.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/diagram-G47NLZAW-70713a059ca65ca1241036cc96679bc5.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{diagram-NH7WQ7WH-fbd3aa35ca68df15ee378fb63241b333.js → diagram-NH7WQ7WH-1bebddae0fd6a49ff82d7ea2b738823d.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/diagram-NH7WQ7WH-1bebddae0fd6a49ff82d7ea2b738823d.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/diagram-NH7WQ7WH-1bebddae0fd6a49ff82d7ea2b738823d.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{diagram-OA4YK3LP-48ebb0ba6bcb34417649bd55070542ad.js → diagram-OA4YK3LP-bf33c3e1800c9f503dd88e41e97c5974.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/diagram-OA4YK3LP-bf33c3e1800c9f503dd88e41e97c5974.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/diagram-OA4YK3LP-bf33c3e1800c9f503dd88e41e97c5974.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{diagram-WEI45ONY-2be85db5396495fa970419f77587cf14.js → diagram-WEI45ONY-23d90af03030beb514d3a953920e6c9b.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/diagram-WEI45ONY-23d90af03030beb514d3a953920e6c9b.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/diagram-WEI45ONY-23d90af03030beb514d3a953920e6c9b.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{ebnfDiagram-CCIWWBDH-3c5c44cf8340b641d13076adab77967b.js → ebnfDiagram-CCIWWBDH-5119b538047d9c00ae05855ae1cf490f.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/ebnfDiagram-CCIWWBDH-5119b538047d9c00ae05855ae1cf490f.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/ebnfDiagram-CCIWWBDH-5119b538047d9c00ae05855ae1cf490f.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{erDiagram-Q63AITRT-81762a72bd33bf1042e4cad4f688abf2.js → erDiagram-Q63AITRT-6f7e9f420388e6291e5a8ae6da7ab3ad.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/erDiagram-Q63AITRT-6f7e9f420388e6291e5a8ae6da7ab3ad.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/erDiagram-Q63AITRT-6f7e9f420388e6291e5a8ae6da7ab3ad.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{eventmodeling-45OFAUF4-11d7615d746c5304c28d4931ec9ca5f7.js → eventmodeling-45OFAUF4-510d785624b4496077e120d2c12a6b88.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{eventmodeling-45OFAUF4-11d7615d746c5304c28d4931ec9ca5f7.js.br → eventmodeling-45OFAUF4-510d785624b4496077e120d2c12a6b88.js.br} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/eventmodeling-45OFAUF4-510d785624b4496077e120d2c12a6b88.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{flowDiagram-23GEKE2U-5a2af608a9500bb36da0595c3464a562.js → flowDiagram-23GEKE2U-7bf4721b6de004ef55a0787bbbc6b9ac.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/flowDiagram-23GEKE2U-7bf4721b6de004ef55a0787bbbc6b9ac.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/flowDiagram-23GEKE2U-7bf4721b6de004ef55a0787bbbc6b9ac.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{ganttDiagram-NO4QXBWP-379aae0f5fb2652d90827c7f8b2472d2.js → ganttDiagram-NO4QXBWP-53b4651e7e78eb3212ec05a0d72b8932.js} +5 -5
- package/dist/server/web-ui/_expo/static/js/web/ganttDiagram-NO4QXBWP-53b4651e7e78eb3212ec05a0d72b8932.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{ganttDiagram-NO4QXBWP-379aae0f5fb2652d90827c7f8b2472d2.js.gz → ganttDiagram-NO4QXBWP-53b4651e7e78eb3212ec05a0d72b8932.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{gitGraph-TEB2WS4Q-d978b8a2d1fd8fcc132b16ef8d57dd7c.js → gitGraph-TEB2WS4Q-03038b65af81bb0d4755a35c737decf0.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{gitGraph-TEB2WS4Q-d978b8a2d1fd8fcc132b16ef8d57dd7c.js.br → gitGraph-TEB2WS4Q-03038b65af81bb0d4755a35c737decf0.js.br} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/gitGraph-TEB2WS4Q-03038b65af81bb0d4755a35c737decf0.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{gitGraphDiagram-IHSO6WYX-6cb31a37312da231b8f10f86b0d4de52.js → gitGraphDiagram-IHSO6WYX-49a762c3f7ecc4315bcde2731f090410.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{gitGraphDiagram-IHSO6WYX-6cb31a37312da231b8f10f86b0d4de52.js.br → gitGraphDiagram-IHSO6WYX-49a762c3f7ecc4315bcde2731f090410.js.br} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{gitGraphDiagram-IHSO6WYX-6cb31a37312da231b8f10f86b0d4de52.js.gz → gitGraphDiagram-IHSO6WYX-49a762c3f7ecc4315bcde2731f090410.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{index-4c86d3c14df18b18b3b9a6329b896faf.js → index-6e99d24bcc09db447a2d8b0c747a5263.js} +74 -73
- package/dist/server/web-ui/_expo/static/js/web/index-6e99d24bcc09db447a2d8b0c747a5263.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/index-6e99d24bcc09db447a2d8b0c747a5263.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{indexeddb-attachment-store-5a90994af83f12740a986d9f1cb55cc9.js → indexeddb-attachment-store-ea6e57606ef25b42cf1e6665a3f5313e.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-ea6e57606ef25b42cf1e6665a3f5313e.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-ea6e57606ef25b42cf1e6665a3f5313e.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{info-DKCQHKI2-b59d0dbb9a30d361ddc796a5cfa7fc41.js → info-DKCQHKI2-61f5b3ca4e5cea885d6254ccef0626c4.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{info-DKCQHKI2-b59d0dbb9a30d361ddc796a5cfa7fc41.js.br → info-DKCQHKI2-61f5b3ca4e5cea885d6254ccef0626c4.js.br} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/info-DKCQHKI2-61f5b3ca4e5cea885d6254ccef0626c4.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{infoDiagram-FWYZ7A6U-0c4368de61a3bdbfbc73b143423981d9.js → infoDiagram-FWYZ7A6U-f47fe897045bf4e6949ea71abdae89fe.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/infoDiagram-FWYZ7A6U-f47fe897045bf4e6949ea71abdae89fe.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/infoDiagram-FWYZ7A6U-f47fe897045bf4e6949ea71abdae89fe.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{ishikawaDiagram-FXEZZL3T-1474e73532a16148b7944d3b0f896197.js → ishikawaDiagram-FXEZZL3T-bf6597ebf1b0773e1d39dea7fcf8800f.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/ishikawaDiagram-FXEZZL3T-bf6597ebf1b0773e1d39dea7fcf8800f.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{ishikawaDiagram-FXEZZL3T-1474e73532a16148b7944d3b0f896197.js.gz → ishikawaDiagram-FXEZZL3T-bf6597ebf1b0773e1d39dea7fcf8800f.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{journeyDiagram-5HDEW3XC-13df6cce9cb7f0e6ffbaa9a614feeee4.js → journeyDiagram-5HDEW3XC-7dc3a04c43574b6aac59a4520d111129.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/journeyDiagram-5HDEW3XC-7dc3a04c43574b6aac59a4520d111129.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{journeyDiagram-5HDEW3XC-13df6cce9cb7f0e6ffbaa9a614feeee4.js.gz → journeyDiagram-5HDEW3XC-7dc3a04c43574b6aac59a4520d111129.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{kanban-definition-HUTT4EX6-6b56c0da5302838e7e1c46bf7460ea35.js → kanban-definition-HUTT4EX6-7be647182b1c3291e9330de01d329adf.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/kanban-definition-HUTT4EX6-7be647182b1c3291e9330de01d329adf.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{kanban-definition-HUTT4EX6-6b56c0da5302838e7e1c46bf7460ea35.js.gz → kanban-definition-HUTT4EX6-7be647182b1c3291e9330de01d329adf.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{katex-7f6ac23f118e6e9264fdfa96e335134f.js → katex-c0aeb8f935f239b315771d04dc16b1e7.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/katex-c0aeb8f935f239b315771d04dc16b1e7.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{katex-7f6ac23f118e6e9264fdfa96e335134f.js.gz → katex-c0aeb8f935f239b315771d04dc16b1e7.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{mermaid-75931b049ce3e66af3cd8ddf01e1cd23.js → mermaid-f4cf4ad300756762c2eed3bd65fecb6c.js} +9 -9
- package/dist/server/web-ui/_expo/static/js/web/mermaid-f4cf4ad300756762c2eed3bd65fecb6c.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{mermaid-75931b049ce3e66af3cd8ddf01e1cd23.js.gz → mermaid-f4cf4ad300756762c2eed3bd65fecb6c.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{mindmap-definition-LN4V7U3C-fafde693a329ca39007debdd961134b4.js → mindmap-definition-LN4V7U3C-5a266041ac99a182f60e7d1ade3053a7.js} +21 -21
- package/dist/server/web-ui/_expo/static/js/web/mindmap-definition-LN4V7U3C-5a266041ac99a182f60e7d1ade3053a7.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/mindmap-definition-LN4V7U3C-5a266041ac99a182f60e7d1ade3053a7.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{native-file-attachment-store-645b8ffe39c60c05c0a224e6efcb5a9c.js → native-file-attachment-store-78cca157541c8af3aff9a719f7b951be.js} +3 -3
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-78cca157541c8af3aff9a719f7b951be.js.br +11 -0
- 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
- package/dist/server/web-ui/_expo/static/js/web/{orchestration-graph-panel-2d117a5764d11c411d707e37fba93a1b.js → orchestration-graph-panel-77d13bf34f0ff1ffed397666b8009b21.js} +5 -5
- package/dist/server/web-ui/_expo/static/js/web/orchestration-graph-panel-77d13bf34f0ff1ffed397666b8009b21.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{orchestration-graph-panel-2d117a5764d11c411d707e37fba93a1b.js.gz → orchestration-graph-panel-77d13bf34f0ff1ffed397666b8009b21.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{packet-7NZHBO7P-61a485e09ee448c823fffbdfc588826d.js → packet-7NZHBO7P-8f2693917ef293414f42718be4e1d738.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{packet-7NZHBO7P-61a485e09ee448c823fffbdfc588826d.js.br → packet-7NZHBO7P-8f2693917ef293414f42718be4e1d738.js.br} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/packet-7NZHBO7P-8f2693917ef293414f42718be4e1d738.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{pegDiagram-2B236MQR-035fe1b93f90f4775e99aea533552b42.js → pegDiagram-2B236MQR-58835705d6a13a27b59f4c85aeaf7012.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/pegDiagram-2B236MQR-58835705d6a13a27b59f4c85aeaf7012.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/pegDiagram-2B236MQR-58835705d6a13a27b59f4c85aeaf7012.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{pie-RZYD4A2V-f6208df18db61d490f4811b192b77dec.js → pie-RZYD4A2V-8b0f157b04de7752354fc779ddbf49a4.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/pie-RZYD4A2V-8b0f157b04de7752354fc779ddbf49a4.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/pie-RZYD4A2V-8b0f157b04de7752354fc779ddbf49a4.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{pieDiagram-ENE6RG2P-c78c82bf26f51acb7b7c44ae51eba9c6.js → pieDiagram-ENE6RG2P-a0061a200414abc917902506915ccabe.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/pieDiagram-ENE6RG2P-a0061a200414abc917902506915ccabe.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{pieDiagram-ENE6RG2P-c78c82bf26f51acb7b7c44ae51eba9c6.js.gz → pieDiagram-ENE6RG2P-a0061a200414abc917902506915ccabe.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{quadrantDiagram-ABIIQ3AL-efff1486187742fe8683a966651df92f.js → quadrantDiagram-ABIIQ3AL-ccae11df8eb112141ab52dc3b055366d.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/quadrantDiagram-ABIIQ3AL-ccae11df8eb112141ab52dc3b055366d.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{quadrantDiagram-ABIIQ3AL-efff1486187742fe8683a966651df92f.js.gz → quadrantDiagram-ABIIQ3AL-ccae11df8eb112141ab52dc3b055366d.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{radar-I7S5WNFK-0150ed7f0d337fc7ec70638a3656ea06.js → radar-I7S5WNFK-0768be5c16d166cd094d75a4c9fba55a.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{radar-I7S5WNFK-0150ed7f0d337fc7ec70638a3656ea06.js.br → radar-I7S5WNFK-0768be5c16d166cd094d75a4c9fba55a.js.br} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/radar-I7S5WNFK-0768be5c16d166cd094d75a4c9fba55a.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{railroad-3IZDKUUU-c6e94ec81a88c02cb339de59f29386f5.js → railroad-3IZDKUUU-55b81b14fbc2908aa06995bd62b57b43.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{railroad-3IZDKUUU-c6e94ec81a88c02cb339de59f29386f5.js.br → railroad-3IZDKUUU-55b81b14fbc2908aa06995bd62b57b43.js.br} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/railroad-3IZDKUUU-55b81b14fbc2908aa06995bd62b57b43.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{railroad-abnf-AHOZXSZD-627ed129da90b5e1d371bd2c3b9db457.js → railroad-abnf-AHOZXSZD-47462203d9c422ed3805bd31ed12d922.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{railroad-abnf-AHOZXSZD-627ed129da90b5e1d371bd2c3b9db457.js.br → railroad-abnf-AHOZXSZD-47462203d9c422ed3805bd31ed12d922.js.br} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/railroad-abnf-AHOZXSZD-47462203d9c422ed3805bd31ed12d922.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{railroad-ebnf-EBAXGLYW-1b7ec12d3b92be4e181971b21f01f3f8.js → railroad-ebnf-EBAXGLYW-708f5dcce4ca8693b288152f6aa217b1.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{railroad-ebnf-EBAXGLYW-1b7ec12d3b92be4e181971b21f01f3f8.js.br → railroad-ebnf-EBAXGLYW-708f5dcce4ca8693b288152f6aa217b1.js.br} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/railroad-ebnf-EBAXGLYW-708f5dcce4ca8693b288152f6aa217b1.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{railroad-peg-LSFZ7HO6-8a8e027f4141d16a12c15223da966d7d.js → railroad-peg-LSFZ7HO6-eb7ff4c6b43a9c593b0feac004d52d4e.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/railroad-peg-LSFZ7HO6-eb7ff4c6b43a9c593b0feac004d52d4e.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/railroad-peg-LSFZ7HO6-eb7ff4c6b43a9c593b0feac004d52d4e.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{railroadDiagram-RFXS5EU6-499f36fe78b07e5558063f963a47a474.js → railroadDiagram-RFXS5EU6-c1c534a0f6478078bca1fd806a1ee2ae.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/railroadDiagram-RFXS5EU6-c1c534a0f6478078bca1fd806a1ee2ae.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/railroadDiagram-RFXS5EU6-c1c534a0f6478078bca1fd806a1ee2ae.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{requirementDiagram-TGXJPOKE-9aaddb885fc59873a8f89cd7550c2c43.js → requirementDiagram-TGXJPOKE-5dd7440a5946dde0e06a5afa9e0295a1.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/requirementDiagram-TGXJPOKE-5dd7440a5946dde0e06a5afa9e0295a1.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{requirementDiagram-TGXJPOKE-9aaddb885fc59873a8f89cd7550c2c43.js.gz → requirementDiagram-TGXJPOKE-5dd7440a5946dde0e06a5afa9e0295a1.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{sankeyDiagram-HTMAVEWB-3fa66fe414adce7a50e31551c059f99c.js → sankeyDiagram-HTMAVEWB-76b963967a4f7c862f4f2f18492e7c56.js} +120 -120
- package/dist/server/web-ui/_expo/static/js/web/sankeyDiagram-HTMAVEWB-76b963967a4f7c862f4f2f18492e7c56.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/sankeyDiagram-HTMAVEWB-76b963967a4f7c862f4f2f18492e7c56.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{sequenceDiagram-DBY2YBRQ-856a29fb0507a2dcb697a2aa29cd0b7a.js → sequenceDiagram-DBY2YBRQ-d40a3dbcd285c19aa010a697e12f5022.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/sequenceDiagram-DBY2YBRQ-d40a3dbcd285c19aa010a697e12f5022.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{sequenceDiagram-DBY2YBRQ-856a29fb0507a2dcb697a2aa29cd0b7a.js.gz → sequenceDiagram-DBY2YBRQ-d40a3dbcd285c19aa010a697e12f5022.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{sizeCapture-X5ZJPWSS-388b849b33073b8202dd9ca50038b1c7.js → sizeCapture-X5ZJPWSS-03ac818220d4ba98bdd2f4f454758263.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/sizeCapture-X5ZJPWSS-03ac818220d4ba98bdd2f4f454758263.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/sizeCapture-X5ZJPWSS-03ac818220d4ba98bdd2f4f454758263.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{stateDiagram-2N3HPSRC-9ca22d078d9922ddcb54ba7bb389c734.js → stateDiagram-2N3HPSRC-ba1e123bf8ce69ae781981f264e90564.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/stateDiagram-2N3HPSRC-ba1e123bf8ce69ae781981f264e90564.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/stateDiagram-2N3HPSRC-ba1e123bf8ce69ae781981f264e90564.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{stateDiagram-v2-6OUMAXLB-4357e7143c73859f6b4858ba72acb5aa.js → stateDiagram-v2-6OUMAXLB-5925b0db81d9a113005bd93c6adbab9d.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/stateDiagram-v2-6OUMAXLB-5925b0db81d9a113005bd93c6adbab9d.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/stateDiagram-v2-6OUMAXLB-5925b0db81d9a113005bd93c6adbab9d.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{swimlanes-5IMT3BWC-d737ca408a7a2b82f7419141456d28e4.js → swimlanes-5IMT3BWC-93c0bb8b5ee84ca6f11d561497ec0ef0.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/swimlanes-5IMT3BWC-93c0bb8b5ee84ca6f11d561497ec0ef0.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{swimlanes-5IMT3BWC-d737ca408a7a2b82f7419141456d28e4.js.gz → swimlanes-5IMT3BWC-93c0bb8b5ee84ca6f11d561497ec0ef0.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{swimlanesDiagram-G3AALYLV-0bf2ac58b338c2aeb33213ff1a57983a.js → swimlanesDiagram-G3AALYLV-5f3e335e1800b344e786080955bdb2c5.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/swimlanesDiagram-G3AALYLV-5f3e335e1800b344e786080955bdb2c5.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/swimlanesDiagram-G3AALYLV-5f3e335e1800b344e786080955bdb2c5.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{timeline-definition-FHXFAJF6-1130419ca563266603c98f1b2148a154.js → timeline-definition-FHXFAJF6-ebf6579c1264c7dd88b67d0ecc9313d7.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/timeline-definition-FHXFAJF6-ebf6579c1264c7dd88b67d0ecc9313d7.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/timeline-definition-FHXFAJF6-ebf6579c1264c7dd88b67d0ecc9313d7.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{treeView-QDETBFTQ-4f6ec9b592731c21dee99264fa638554.js → treeView-QDETBFTQ-682ed2be8efc51bd8196ff3320637705.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{treeView-QDETBFTQ-4f6ec9b592731c21dee99264fa638554.js.br → treeView-QDETBFTQ-682ed2be8efc51bd8196ff3320637705.js.br} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/treeView-QDETBFTQ-682ed2be8efc51bd8196ff3320637705.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{treemap-6X3UGDF4-39eb6ec2c19a5de9242fd28aa26dcf5b.js → treemap-6X3UGDF4-4fb89637583518868012429289715b50.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/{treemap-6X3UGDF4-39eb6ec2c19a5de9242fd28aa26dcf5b.js.br → treemap-6X3UGDF4-4fb89637583518868012429289715b50.js.br} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/treemap-6X3UGDF4-4fb89637583518868012429289715b50.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{vennDiagram-L72KCM5P-4c15b392e9de3fdc472b53cbdf8e7558.js → vennDiagram-L72KCM5P-4a09551e281dc72285c8c56bcd4b04a3.js} +2 -2
- package/dist/server/web-ui/_expo/static/js/web/vennDiagram-L72KCM5P-4a09551e281dc72285c8c56bcd4b04a3.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/vennDiagram-L72KCM5P-4a09551e281dc72285c8c56bcd4b04a3.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{visualizer-bundle-b0af8f4f1ab8d4029f3f21236df43f7f.js → visualizer-bundle-fab344f71166d5645590bda1bab1e0a5.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/visualizer-bundle-fab344f71166d5645590bda1bab1e0a5.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{visualizer-bundle-b0af8f4f1ab8d4029f3f21236df43f7f.js.gz → visualizer-bundle-fab344f71166d5645590bda1bab1e0a5.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{visualizer-panel-3fbc1337bb844d7163cbdb418a4dfd53.js → visualizer-panel-bf8e9531071e12cefa8eda4766877aba.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/visualizer-panel-bf8e9531071e12cefa8eda4766877aba.js.br +6 -0
- package/dist/server/web-ui/_expo/static/js/web/{visualizer-panel-3fbc1337bb844d7163cbdb418a4dfd53.js.gz → visualizer-panel-bf8e9531071e12cefa8eda4766877aba.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{visualizer-pip-de03996e25ac5d8a11d723ea90b2f9a3.js → visualizer-pip-633730d52ecc119677ce9ecc287c7879.js} +2 -2
- package/dist/server/web-ui/_expo/static/js/web/visualizer-pip-633730d52ecc119677ce9ecc287c7879.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{visualizer-pip-de03996e25ac5d8a11d723ea90b2f9a3.js.gz → visualizer-pip-633730d52ecc119677ce9ecc287c7879.js.gz} +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{wardley-OPB4EBWU-b075ee9680ce77acf211a0fb1e63cca8.js → wardley-OPB4EBWU-86a2856822d60f742050c338803f8533.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/wardley-OPB4EBWU-86a2856822d60f742050c338803f8533.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/wardley-OPB4EBWU-86a2856822d60f742050c338803f8533.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{wardleyDiagram-EHGQE667-a93bc6a6a1e80adcb9a740a2ea3d1676.js → wardleyDiagram-EHGQE667-cf65a2e4de30372a177e82834dba571c.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/wardleyDiagram-EHGQE667-cf65a2e4de30372a177e82834dba571c.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/wardleyDiagram-EHGQE667-cf65a2e4de30372a177e82834dba571c.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/{xychartDiagram-FW5EYKEG-ec54fa07a12c5792d0bb7b65deaff05b.js → xychartDiagram-FW5EYKEG-d29f0b24141b00d07e99c98d99ac55d4.js} +1 -1
- package/dist/server/web-ui/_expo/static/js/web/xychartDiagram-FW5EYKEG-d29f0b24141b00d07e99c98d99ac55d4.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/xychartDiagram-FW5EYKEG-d29f0b24141b00d07e99c98d99ac55d4.js.gz +0 -0
- package/dist/server/web-ui/index.html +1 -1
- package/dist/server/web-ui/index.html.br +0 -0
- package/dist/server/web-ui/index.html.gz +0 -0
- package/dist/src/terminal/shell-integration/zsh/.zshenv +17 -17
- package/dist/src/terminal/shell-integration/zsh/otto-integration.zsh +32 -32
- package/package.json +5 -5
- package/dist/server/web-ui/_expo/static/js/web/__common-6d2299ed037bec2393245a7c0bf1c643.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/__common-6d2299ed037bec2393245a7c0bf1c643.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/abnfDiagram-VRR7QNED-c3c2ca327b2d7ad9af3caa1cba884908.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/abnfDiagram-VRR7QNED-c3c2ca327b2d7ad9af3caa1cba884908.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/architecture-TIHT7OUA-0cf23d3dc9775f216c01daae4aae250a.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/architectureDiagram-ZJ3FMSHR-f3bce96124559dc19faa4d90aca4afd4.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/architectureDiagram-ZJ3FMSHR-f3bce96124559dc19faa4d90aca4afd4.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/blockDiagram-677ZJIJ3-839486928c0f151128a5e2836aa07080.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/c4Diagram-LMCZKHZV-197212c21520a6b659a5649e683619d0.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/classDiagram-OUVF2IWQ-a0a0fbefc96d14b6619c84fc4f92a39a.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/classDiagram-OUVF2IWQ-a0a0fbefc96d14b6619c84fc4f92a39a.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/classDiagram-v2-EOCWNBFH-e979239c6d160123d5b4847253a8a70e.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/classDiagram-v2-EOCWNBFH-e979239c6d160123d5b4847253a8a70e.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/cose-bilkent-JH36ORCC-bbc39a6bb062ba85e433f91becc37a65.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/cose-bilkent-JH36ORCC-bbc39a6bb062ba85e433f91becc37a65.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/cynefin-VYW2F7L2-ea0e514652627740f5a2ed32b027a164.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/cynefin-VYW2F7L2-ea0e514652627740f5a2ed32b027a164.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/cynefinDiagram-TSTJHNR4-0446f9b57ba778e5883d93e24692ffce.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/cynefinDiagram-TSTJHNR4-0446f9b57ba778e5883d93e24692ffce.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/dagre-VKFMJZFB-69f7aa52521b06a95874b1ac67508def.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/dagre-VKFMJZFB-69f7aa52521b06a95874b1ac67508def.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-0ae8aadd6e53625f59d62eceb1f06ede.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/diagram-FQU43EPY-bd0940835ccad031627e285aaba6d5ec.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/diagram-G47NLZAW-217e2cd3275924bc08fc6ebe79e95e48.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/diagram-G47NLZAW-217e2cd3275924bc08fc6ebe79e95e48.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/diagram-NH7WQ7WH-fbd3aa35ca68df15ee378fb63241b333.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/diagram-NH7WQ7WH-fbd3aa35ca68df15ee378fb63241b333.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/diagram-OA4YK3LP-48ebb0ba6bcb34417649bd55070542ad.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/diagram-OA4YK3LP-48ebb0ba6bcb34417649bd55070542ad.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/diagram-WEI45ONY-2be85db5396495fa970419f77587cf14.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/diagram-WEI45ONY-2be85db5396495fa970419f77587cf14.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/ebnfDiagram-CCIWWBDH-3c5c44cf8340b641d13076adab77967b.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/ebnfDiagram-CCIWWBDH-3c5c44cf8340b641d13076adab77967b.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/erDiagram-Q63AITRT-81762a72bd33bf1042e4cad4f688abf2.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/erDiagram-Q63AITRT-81762a72bd33bf1042e4cad4f688abf2.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/eventmodeling-45OFAUF4-11d7615d746c5304c28d4931ec9ca5f7.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/flowDiagram-23GEKE2U-5a2af608a9500bb36da0595c3464a562.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/flowDiagram-23GEKE2U-5a2af608a9500bb36da0595c3464a562.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/ganttDiagram-NO4QXBWP-379aae0f5fb2652d90827c7f8b2472d2.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/gitGraph-TEB2WS4Q-d978b8a2d1fd8fcc132b16ef8d57dd7c.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/index-4c86d3c14df18b18b3b9a6329b896faf.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/index-4c86d3c14df18b18b3b9a6329b896faf.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-5a90994af83f12740a986d9f1cb55cc9.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-5a90994af83f12740a986d9f1cb55cc9.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/info-DKCQHKI2-b59d0dbb9a30d361ddc796a5cfa7fc41.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/infoDiagram-FWYZ7A6U-0c4368de61a3bdbfbc73b143423981d9.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/infoDiagram-FWYZ7A6U-0c4368de61a3bdbfbc73b143423981d9.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/ishikawaDiagram-FXEZZL3T-1474e73532a16148b7944d3b0f896197.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/journeyDiagram-5HDEW3XC-13df6cce9cb7f0e6ffbaa9a614feeee4.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/kanban-definition-HUTT4EX6-6b56c0da5302838e7e1c46bf7460ea35.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/katex-7f6ac23f118e6e9264fdfa96e335134f.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/mermaid-75931b049ce3e66af3cd8ddf01e1cd23.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/mindmap-definition-LN4V7U3C-fafde693a329ca39007debdd961134b4.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/mindmap-definition-LN4V7U3C-fafde693a329ca39007debdd961134b4.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-645b8ffe39c60c05c0a224e6efcb5a9c.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/orchestration-graph-panel-2d117a5764d11c411d707e37fba93a1b.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/packet-7NZHBO7P-61a485e09ee448c823fffbdfc588826d.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/pegDiagram-2B236MQR-035fe1b93f90f4775e99aea533552b42.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/pegDiagram-2B236MQR-035fe1b93f90f4775e99aea533552b42.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/pie-RZYD4A2V-f6208df18db61d490f4811b192b77dec.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/pie-RZYD4A2V-f6208df18db61d490f4811b192b77dec.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/pieDiagram-ENE6RG2P-c78c82bf26f51acb7b7c44ae51eba9c6.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/quadrantDiagram-ABIIQ3AL-efff1486187742fe8683a966651df92f.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/radar-I7S5WNFK-0150ed7f0d337fc7ec70638a3656ea06.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/railroad-3IZDKUUU-c6e94ec81a88c02cb339de59f29386f5.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/railroad-abnf-AHOZXSZD-627ed129da90b5e1d371bd2c3b9db457.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/railroad-ebnf-EBAXGLYW-1b7ec12d3b92be4e181971b21f01f3f8.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/railroad-peg-LSFZ7HO6-8a8e027f4141d16a12c15223da966d7d.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/railroad-peg-LSFZ7HO6-8a8e027f4141d16a12c15223da966d7d.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/railroadDiagram-RFXS5EU6-499f36fe78b07e5558063f963a47a474.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/railroadDiagram-RFXS5EU6-499f36fe78b07e5558063f963a47a474.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/requirementDiagram-TGXJPOKE-9aaddb885fc59873a8f89cd7550c2c43.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/sankeyDiagram-HTMAVEWB-3fa66fe414adce7a50e31551c059f99c.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/sankeyDiagram-HTMAVEWB-3fa66fe414adce7a50e31551c059f99c.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/sequenceDiagram-DBY2YBRQ-856a29fb0507a2dcb697a2aa29cd0b7a.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/sizeCapture-X5ZJPWSS-388b849b33073b8202dd9ca50038b1c7.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/sizeCapture-X5ZJPWSS-388b849b33073b8202dd9ca50038b1c7.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/stateDiagram-2N3HPSRC-9ca22d078d9922ddcb54ba7bb389c734.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/stateDiagram-2N3HPSRC-9ca22d078d9922ddcb54ba7bb389c734.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/stateDiagram-v2-6OUMAXLB-4357e7143c73859f6b4858ba72acb5aa.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/stateDiagram-v2-6OUMAXLB-4357e7143c73859f6b4858ba72acb5aa.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/swimlanes-5IMT3BWC-d737ca408a7a2b82f7419141456d28e4.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/swimlanesDiagram-G3AALYLV-0bf2ac58b338c2aeb33213ff1a57983a.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/swimlanesDiagram-G3AALYLV-0bf2ac58b338c2aeb33213ff1a57983a.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/timeline-definition-FHXFAJF6-1130419ca563266603c98f1b2148a154.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/timeline-definition-FHXFAJF6-1130419ca563266603c98f1b2148a154.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/treeView-QDETBFTQ-4f6ec9b592731c21dee99264fa638554.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/treemap-6X3UGDF4-39eb6ec2c19a5de9242fd28aa26dcf5b.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/vennDiagram-L72KCM5P-4c15b392e9de3fdc472b53cbdf8e7558.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/vennDiagram-L72KCM5P-4c15b392e9de3fdc472b53cbdf8e7558.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/visualizer-bundle-b0af8f4f1ab8d4029f3f21236df43f7f.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/visualizer-panel-3fbc1337bb844d7163cbdb418a4dfd53.js.br +0 -3
- package/dist/server/web-ui/_expo/static/js/web/visualizer-pip-de03996e25ac5d8a11d723ea90b2f9a3.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/wardley-OPB4EBWU-b075ee9680ce77acf211a0fb1e63cca8.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/wardley-OPB4EBWU-b075ee9680ce77acf211a0fb1e63cca8.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/wardleyDiagram-EHGQE667-a93bc6a6a1e80adcb9a740a2ea3d1676.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/wardleyDiagram-EHGQE667-a93bc6a6a1e80adcb9a740a2ea3d1676.js.gz +0 -0
- package/dist/server/web-ui/_expo/static/js/web/xychartDiagram-FW5EYKEG-ec54fa07a12c5792d0bb7b65deaff05b.js.br +0 -0
- package/dist/server/web-ui/_expo/static/js/web/xychartDiagram-FW5EYKEG-ec54fa07a12c5792d0bb7b65deaff05b.js.gz +0 -0
|
@@ -0,0 +1,567 @@
|
|
|
1
|
+
// ── Seeded PRNG ──────────────────────────────────────────────────────────────
|
|
2
|
+
// Mulberry32: cheap 32-bit generator with acceptable avalanche. Deterministic
|
|
3
|
+
// for a given seed so the whole conversation is reproducible byte-for-byte.
|
|
4
|
+
function mulberry32(seed) {
|
|
5
|
+
let state = seed >>> 0; // force unsigned
|
|
6
|
+
return function () {
|
|
7
|
+
state = (state + 0x6d2b79f5) | 0;
|
|
8
|
+
let t = Math.imul(state ^ (state >>> 15), 1 | state);
|
|
9
|
+
t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
|
|
10
|
+
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
// Pick an element from `arr` using the PRNG.
|
|
14
|
+
function pick(rng, arr) {
|
|
15
|
+
return arr[Math.floor(rng() * arr.length)];
|
|
16
|
+
}
|
|
17
|
+
// Return a random integer in [min, max] inclusive.
|
|
18
|
+
function randInt(rng, min, max) {
|
|
19
|
+
return min + Math.floor(rng() * (max - min + 1));
|
|
20
|
+
}
|
|
21
|
+
// Generate a short pseudo-identifier like "auth", "cache_v2", etc.
|
|
22
|
+
function makeId(rng) {
|
|
23
|
+
const prefixes = [
|
|
24
|
+
"user",
|
|
25
|
+
"data",
|
|
26
|
+
"cache",
|
|
27
|
+
"auth",
|
|
28
|
+
"api",
|
|
29
|
+
"db",
|
|
30
|
+
"config",
|
|
31
|
+
"route",
|
|
32
|
+
"model",
|
|
33
|
+
"view",
|
|
34
|
+
];
|
|
35
|
+
const suffixes = ["_v1", "_new", "_util", "", "_core", "_handler", "_parser", "_store"];
|
|
36
|
+
return pick(rng, prefixes) + pick(rng, suffixes);
|
|
37
|
+
}
|
|
38
|
+
// ── Content pools (fragments for composition) ────────────────────────────────
|
|
39
|
+
// Each assistant message is assembled from these parts so every output string
|
|
40
|
+
// is effectively unique. This avoids the app's markdown-block-height cache,
|
|
41
|
+
// which would make a repetitive corpus look artificially fast.
|
|
42
|
+
const PARAGRAPH_STARTERS = [
|
|
43
|
+
"Looking at this more closely,",
|
|
44
|
+
"After reviewing the codebase,",
|
|
45
|
+
"The issue here is that",
|
|
46
|
+
"Based on what you've described,",
|
|
47
|
+
"I can see a few problems with the current approach:",
|
|
48
|
+
"There are several ways to handle this.",
|
|
49
|
+
"Let me break down what's happening:",
|
|
50
|
+
"The key insight is that",
|
|
51
|
+
"This pattern comes up often in codebases like yours.",
|
|
52
|
+
"From my analysis,",
|
|
53
|
+
];
|
|
54
|
+
const PARAGRAPH_MIDDLES = [
|
|
55
|
+
"the function `{id}` doesn't properly handle the case when `{otherId}` returns null.",
|
|
56
|
+
"`{id}` needs to be refactored so that it can be tested in isolation from `{otherId}`.",
|
|
57
|
+
"we're doing an O(n²) lookup inside `{id}` which becomes visible at scale.",
|
|
58
|
+
"the state managed by `{id}` should instead flow through the context provided by `{otherId}`.",
|
|
59
|
+
"`{id}` is catching all errors and silently swallowing them — we need to surface those from `{otherId}`.",
|
|
60
|
+
"there's a race condition between `{id}` and `{otherId}` that only shows up under load.",
|
|
61
|
+
"`{id}` allocates a new buffer each time, but it could reuse the one from `{otherId}`.",
|
|
62
|
+
];
|
|
63
|
+
const PARAGRAPH_ENDINGS = [
|
|
64
|
+
"I'd recommend starting with the simplest fix first.",
|
|
65
|
+
"Let me write out a concrete example below.",
|
|
66
|
+
"Here's what I think we should do about it.",
|
|
67
|
+
"The fix is straightforward but requires changes in a few places.",
|
|
68
|
+
"We can address this in two steps, which I'll detail next.",
|
|
69
|
+
];
|
|
70
|
+
const LIST_ITEM_TEMPLATES = [
|
|
71
|
+
"Update `{id}` to use strict typing",
|
|
72
|
+
"Add validation for the `{otherId}` input",
|
|
73
|
+
"Refactor `{id}` into smaller functions",
|
|
74
|
+
"Cache results from `{otherId}` with a TTL of `{num}s",
|
|
75
|
+
"Add unit tests covering edge cases in `{id}`",
|
|
76
|
+
"Handle the error path when `{otherId}` throws",
|
|
77
|
+
"Extract `{id}` into its own module for testability",
|
|
78
|
+
"Replace the synchronous call to `{otherId}` with an async version",
|
|
79
|
+
"Log metrics from `{id}` every `{num}ms",
|
|
80
|
+
"Add a retry wrapper around `{otherId}` with exponential backoff",
|
|
81
|
+
"Migrate `{id}` to use the new SDK",
|
|
82
|
+
"Remove dead code path in `{otherId}`",
|
|
83
|
+
"Increase the timeout for `{id}` to `{num}s",
|
|
84
|
+
"Add input sanitization before passing data to `{otherId}`",
|
|
85
|
+
];
|
|
86
|
+
const HEADING_TEMPLATES = [
|
|
87
|
+
"## Analysis of `{id}`",
|
|
88
|
+
"## Proposed Changes for `{otherId}`",
|
|
89
|
+
"## Implementation Plan",
|
|
90
|
+
"## Performance Bottleneck in `{id}`",
|
|
91
|
+
"## Migration Steps",
|
|
92
|
+
"## Root Cause: `{id}`",
|
|
93
|
+
"## Next Steps",
|
|
94
|
+
];
|
|
95
|
+
const CODE_LANGUAGES = [
|
|
96
|
+
"typescript",
|
|
97
|
+
"javascript",
|
|
98
|
+
"python",
|
|
99
|
+
"sql",
|
|
100
|
+
"rust",
|
|
101
|
+
"bash",
|
|
102
|
+
"css",
|
|
103
|
+
];
|
|
104
|
+
// ── User prompts ─────────────────────────────────────────────────────────────
|
|
105
|
+
const USER_PROMPTS = [
|
|
106
|
+
"Can you help me fix this bug in my authentication module?",
|
|
107
|
+
"I need to add rate limiting to these API endpoints.",
|
|
108
|
+
"How do I refactor this component to use React hooks?",
|
|
109
|
+
"Please write a test for the user registration flow.",
|
|
110
|
+
"Can you explain why this TypeScript type is failing?",
|
|
111
|
+
"I want to migrate from class components to function components.",
|
|
112
|
+
"Help me optimize this database query — it's running slow in production.",
|
|
113
|
+
"What's the best way to handle file uploads in Express?",
|
|
114
|
+
"Can you add error handling to these API routes?",
|
|
115
|
+
"Please implement a caching layer for the product catalog.",
|
|
116
|
+
"I need to add logging throughout this service.",
|
|
117
|
+
"How can I make this code more testable?",
|
|
118
|
+
"Can you help me set up CI/CD for this project?",
|
|
119
|
+
"Let's add input validation to all these endpoints.",
|
|
120
|
+
"I'm getting a memory leak somewhere — can you help find it?",
|
|
121
|
+
"Please write documentation for the public API.",
|
|
122
|
+
"Can you implement OAuth2 login with Google as the provider?",
|
|
123
|
+
"How do I properly type this GraphQL resolver?",
|
|
124
|
+
"Let's add dark mode support to the dashboard.",
|
|
125
|
+
"I need a pagination component that works with infinite scroll.",
|
|
126
|
+
];
|
|
127
|
+
// ── Compositional message builders ───────────────────────────────────────────
|
|
128
|
+
function fillTemplate(rng, template) {
|
|
129
|
+
// Replace {id}, {otherId}, and {num} placeholders with rng-derived values.
|
|
130
|
+
return template
|
|
131
|
+
.replace(/{id}/g, makeId(rng))
|
|
132
|
+
.replace(/{otherId}/g, makeId(rng))
|
|
133
|
+
.replace(/{num}/g, String(randInt(rng, 1, 999)));
|
|
134
|
+
}
|
|
135
|
+
function buildParagraph(rng) {
|
|
136
|
+
// Each paragraph = starter + (optional middle) + ending.
|
|
137
|
+
let text = pick(rng, PARAGRAPH_STARTERS);
|
|
138
|
+
if (rng() > 0.3) {
|
|
139
|
+
text += " " + pick(rng, PARAGRAPH_MIDDLES);
|
|
140
|
+
}
|
|
141
|
+
text += " " + pick(rng, PARAGRAPH_ENDINGS);
|
|
142
|
+
return fillTemplate(rng, text);
|
|
143
|
+
}
|
|
144
|
+
function buildBulletList(rng) {
|
|
145
|
+
const count = randInt(rng, 2, 9);
|
|
146
|
+
// Deduplicate items within this list.
|
|
147
|
+
const used = new Set();
|
|
148
|
+
const lines = [];
|
|
149
|
+
let attempts = 0;
|
|
150
|
+
while (lines.length < count && attempts < 50) {
|
|
151
|
+
attempts++;
|
|
152
|
+
const item = fillTemplate(rng, pick(rng, LIST_ITEM_TEMPLATES));
|
|
153
|
+
if (!used.has(item)) {
|
|
154
|
+
used.add(item);
|
|
155
|
+
lines.push("- " + item);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return lines.join("\n");
|
|
159
|
+
}
|
|
160
|
+
function buildNumberedList(rng) {
|
|
161
|
+
const count = randInt(rng, 2, 6);
|
|
162
|
+
const items = [
|
|
163
|
+
"Profile the current implementation with `perf` to identify hot paths",
|
|
164
|
+
"Add integration tests covering the critical user flows",
|
|
165
|
+
"Set up monitoring and alerting for the new deployment",
|
|
166
|
+
"Write a migration script that can be rolled back safely",
|
|
167
|
+
"Update the API documentation to reflect the changes",
|
|
168
|
+
"Run load testing with at least `{num}` concurrent users",
|
|
169
|
+
];
|
|
170
|
+
const lines = [];
|
|
171
|
+
let idx = 1;
|
|
172
|
+
for (let i = 0; i < count && i < items.length; i++) {
|
|
173
|
+
lines.push(`${idx}. ${fillTemplate(rng, items[i])}`);
|
|
174
|
+
idx++;
|
|
175
|
+
}
|
|
176
|
+
return lines.join("\n");
|
|
177
|
+
}
|
|
178
|
+
function buildCodeBlock(rng) {
|
|
179
|
+
const lang = pick(rng, CODE_LANGUAGES);
|
|
180
|
+
const code = generateSnippet(rng, lang);
|
|
181
|
+
return `\`\`\`${lang}\n${code}\n\`\`\``;
|
|
182
|
+
}
|
|
183
|
+
// Generate a varied-length code snippet with unique identifiers.
|
|
184
|
+
function generateSnippet(rng, lang) {
|
|
185
|
+
const id1 = makeId(rng);
|
|
186
|
+
const id2 = makeId(rng);
|
|
187
|
+
const id3 = makeId(rng);
|
|
188
|
+
const n = randInt(rng, 50, 999);
|
|
189
|
+
const m = randInt(rng, 3, 40); // target line count range
|
|
190
|
+
switch (lang) {
|
|
191
|
+
case "typescript":
|
|
192
|
+
return buildTsSnippet(rng, id1, id2, id3, n, m);
|
|
193
|
+
case "javascript":
|
|
194
|
+
return buildJsSnippet(rng, id1, id2, id3, n, m);
|
|
195
|
+
case "python":
|
|
196
|
+
return buildPySnippet(rng, id1, id2, id3, n, m);
|
|
197
|
+
case "sql":
|
|
198
|
+
return buildSqlSnippet(rng, id1, id2, id3, n, m);
|
|
199
|
+
case "rust":
|
|
200
|
+
return buildRustSnippet(rng, id1, id2, id3, n, m);
|
|
201
|
+
case "bash":
|
|
202
|
+
return buildBashSnippet(rng, id1, id2, id3, n, m);
|
|
203
|
+
case "css":
|
|
204
|
+
return buildCssSnippet(rng, id1, id2, id3, n, m);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
function buildTsSnippet(_rng, id1, id2, id3, n, targetLines) {
|
|
208
|
+
const lines = [];
|
|
209
|
+
lines.push(`interface ${capitalize(id1)}Config {`);
|
|
210
|
+
lines.push(` enabled: boolean;`);
|
|
211
|
+
lines.push(` maxRetries: number;`);
|
|
212
|
+
lines.push(` timeoutMs: number;`);
|
|
213
|
+
lines.push(`}`);
|
|
214
|
+
lines.push(``);
|
|
215
|
+
lines.push(`class ${capitalize(id1)}Service {`);
|
|
216
|
+
lines.push(` private config: ${capitalize(id1)}Config;`);
|
|
217
|
+
lines.push(` private readonly cache = new Map<string, ReturnType<typeof ${id2}>>();`);
|
|
218
|
+
lines.push(``);
|
|
219
|
+
lines.push(` constructor(config: Partial<${capitalize(id1)}Config> = {}) {`);
|
|
220
|
+
lines.push(` this.config = { maxRetries: 3, timeoutMs: ${n}, ...config };`);
|
|
221
|
+
lines.push(` }`);
|
|
222
|
+
lines.push(``);
|
|
223
|
+
lines.push(` async process(input: string): Promise<${capitalize(id2)}Result> {`);
|
|
224
|
+
lines.push(` const cached = this.cache.get(input);`);
|
|
225
|
+
lines.push(` if (cached) return cached;`);
|
|
226
|
+
lines.push(``);
|
|
227
|
+
lines.push(` const result = await ${id3}(input, { timeout: this.config.timeoutMs });`);
|
|
228
|
+
lines.push(` this.cache.set(input, result);`);
|
|
229
|
+
lines.push(` return result;`);
|
|
230
|
+
lines.push(` }`);
|
|
231
|
+
lines.push(`}`);
|
|
232
|
+
// Pad or trim to target length.
|
|
233
|
+
while (lines.length < targetLines) {
|
|
234
|
+
const extra = ` private ${makeId(_rng)}_${_rng() > 0.5 ? "internal" : "private"}(): void { /* step ${lines.length} */ }`;
|
|
235
|
+
lines.splice(12, 0, extra); // insert inside class body
|
|
236
|
+
}
|
|
237
|
+
return lines.slice(0, Math.max(targetLines, 8)).join("\n");
|
|
238
|
+
}
|
|
239
|
+
function buildJsSnippet(_rng, id1, id2, _id3, n, targetLines) {
|
|
240
|
+
const lines = [];
|
|
241
|
+
lines.push(`// ${id1}: utility for managing ${id2} state`);
|
|
242
|
+
lines.push(`function create${capitalize(id1)}Manager(options) {`);
|
|
243
|
+
lines.push(` const state = { items: [], buffer: new Uint8Array(${n}) };`);
|
|
244
|
+
lines.push(``);
|
|
245
|
+
lines.push(` function add(item) {`);
|
|
246
|
+
lines.push(` if (!item || typeof item !== 'object') throw new Error('Invalid');`);
|
|
247
|
+
lines.push(` state.items.push({ ...item, addedAt: Date.now() });`);
|
|
248
|
+
lines.push(` }`);
|
|
249
|
+
lines.push(``);
|
|
250
|
+
lines.push(` function remove(predicate) {`);
|
|
251
|
+
lines.push(` const before = state.items.length;`);
|
|
252
|
+
lines.push(` state.items = state.items.filter(item => !predicate(item));`);
|
|
253
|
+
lines.push(` return before - state.items.length;`);
|
|
254
|
+
lines.push(` }`);
|
|
255
|
+
while (lines.length < targetLines) {
|
|
256
|
+
const fnName = makeId(_rng);
|
|
257
|
+
lines.push(``);
|
|
258
|
+
lines.push(` function ${fnName}() {`);
|
|
259
|
+
lines.push(` // computed property for ${id2}`);
|
|
260
|
+
lines.push(` return state.items.reduce((acc, item) => acc + (item.weight || 0), 0);`);
|
|
261
|
+
lines.push(` }`);
|
|
262
|
+
}
|
|
263
|
+
lines.push(``);
|
|
264
|
+
lines.push(` return { add, remove, state };`);
|
|
265
|
+
lines.push(`}`);
|
|
266
|
+
return lines.slice(0, Math.max(targetLines, 6)).join("\n");
|
|
267
|
+
}
|
|
268
|
+
function buildPySnippet(_rng, id1, id2, _id3, n, targetLines) {
|
|
269
|
+
const lines = [];
|
|
270
|
+
lines.push(`"""${capitalize(id1)} module — handles ${id2} processing."""`);
|
|
271
|
+
lines.push(`from typing import Iterator`);
|
|
272
|
+
lines.push(`import time`);
|
|
273
|
+
lines.push(``);
|
|
274
|
+
lines.push(`class ${capitalize(id1)}Processor:`);
|
|
275
|
+
lines.push(` """Processes batches of data with configurable retry logic."""`);
|
|
276
|
+
lines.push(``);
|
|
277
|
+
lines.push(` def __init__(self, batch_size: int = ${n}):`);
|
|
278
|
+
lines.push(` self.batch_size = batch_size`);
|
|
279
|
+
lines.push(` self._metrics: dict[str, list[float]] = {}`);
|
|
280
|
+
lines.push(``);
|
|
281
|
+
lines.push(` def process_batch(self, items: list[dict]) -> Iterator[dict]:`);
|
|
282
|
+
lines.push(` start = time.monotonic()`);
|
|
283
|
+
lines.push(` for chunk in _chunks(items, self.batch_size):`);
|
|
284
|
+
lines.push(` yield from map(self._transform, chunk)`);
|
|
285
|
+
while (lines.length < targetLines) {
|
|
286
|
+
const fnName = makeId(_rng);
|
|
287
|
+
lines.push(``);
|
|
288
|
+
lines.push(` def ${fnName}(self, data: dict) -> float:`);
|
|
289
|
+
lines.push(` """Derived metric computation."""`);
|
|
290
|
+
lines.push(` return sum(data.values()) / max(len(data), 1)`);
|
|
291
|
+
}
|
|
292
|
+
lines.push(``);
|
|
293
|
+
lines.push(`def _chunks(seq, size):`);
|
|
294
|
+
lines.push(` for i in range(0, len(seq), size):`);
|
|
295
|
+
lines.push(` yield seq[i:i + size]`);
|
|
296
|
+
return lines.slice(0, Math.max(targetLines, 8)).join("\n");
|
|
297
|
+
}
|
|
298
|
+
function buildSqlSnippet(_rng, id1, id2, _id3, n, targetLines) {
|
|
299
|
+
const tables = [id1.replace(/_/g, "_"), id2.replace(/_/g, "_")];
|
|
300
|
+
const lines = [];
|
|
301
|
+
lines.push(`-- Query: aggregate ${tables[0]} metrics grouped by status`);
|
|
302
|
+
lines.push(`SELECT`);
|
|
303
|
+
lines.push(` t1.id,`);
|
|
304
|
+
lines.push(` t1.status,`);
|
|
305
|
+
lines.push(` COUNT(t2.id) AS related_count,`);
|
|
306
|
+
lines.push(` SUM(t2.amount) AS total_amount`);
|
|
307
|
+
lines.push(`FROM ${tables[0]} t1`);
|
|
308
|
+
lines.push(`LEFT JOIN ${tables[1]} t2 ON t1.id = t2.${tables[0]}_id`);
|
|
309
|
+
lines.push(`WHERE t1.created_at >= NOW() - INTERVAL '${n} days'`);
|
|
310
|
+
lines.push(`GROUP BY t1.id, t1.status`);
|
|
311
|
+
lines.push(`HAVING COUNT(t2.id) > ${Math.max(1, Math.floor(n / 10))}`);
|
|
312
|
+
lines.push(`ORDER BY total_amount DESC`);
|
|
313
|
+
while (lines.length < targetLines) {
|
|
314
|
+
const alias = makeId(_rng).substring(0, 4);
|
|
315
|
+
lines.splice(3, 0, ` t1.${alias} AS ${alias},`);
|
|
316
|
+
}
|
|
317
|
+
return lines.slice(0, Math.max(targetLines, 6)).join("\n");
|
|
318
|
+
}
|
|
319
|
+
function buildRustSnippet(_rng, id1, _id2, _id3, n, targetLines) {
|
|
320
|
+
const lines = [];
|
|
321
|
+
lines.push(`/// Configuration for ${id1}.`);
|
|
322
|
+
lines.push(`struct ${capitalize(id1)}Config {`);
|
|
323
|
+
lines.push(` max_retries: u32,`);
|
|
324
|
+
lines.push(` timeout_ms: u64,`);
|
|
325
|
+
lines.push(`}`);
|
|
326
|
+
lines.push(``);
|
|
327
|
+
lines.push(`impl ${capitalize(id1)}Config {`);
|
|
328
|
+
lines.push(` fn new() -> Self {`);
|
|
329
|
+
lines.push(` Self { max_retries: ${n}, timeout_ms: ${n * 10} }`);
|
|
330
|
+
lines.push(` }`);
|
|
331
|
+
lines.push(`}`);
|
|
332
|
+
while (lines.length < targetLines) {
|
|
333
|
+
const field = makeId(_rng);
|
|
334
|
+
lines.splice(2, 0, ` ${field}: String,`);
|
|
335
|
+
}
|
|
336
|
+
return lines.slice(0, Math.max(targetLines, 5)).join("\n");
|
|
337
|
+
}
|
|
338
|
+
function buildBashSnippet(_rng, id1, _id2, _id3, n, targetLines) {
|
|
339
|
+
const lines = [];
|
|
340
|
+
lines.push(`#!/bin/bash`);
|
|
341
|
+
lines.push(`set -euo pipefail`);
|
|
342
|
+
lines.push(``);
|
|
343
|
+
lines.push(`echo "Starting ${id1} pipeline..."`);
|
|
344
|
+
lines.push(`TEMP_DIR=$(mktemp -d)`);
|
|
345
|
+
lines.push(`trap 'rm -rf "$TEMP_DIR"' EXIT`);
|
|
346
|
+
let step = 1;
|
|
347
|
+
while (lines.length < targetLines) {
|
|
348
|
+
const action = makeId(_rng);
|
|
349
|
+
lines.push(`echo "Step ${step}: processing ${action}"`);
|
|
350
|
+
lines.push(`sleep ${(n % 5) + 1}`);
|
|
351
|
+
step++;
|
|
352
|
+
}
|
|
353
|
+
lines.push(`echo "Done — generated ${n} artifacts."`);
|
|
354
|
+
return lines.slice(0, Math.max(targetLines, 6)).join("\n");
|
|
355
|
+
}
|
|
356
|
+
function buildCssSnippet(_rng, id1, _id2, _id3, n, targetLines) {
|
|
357
|
+
const lines = [];
|
|
358
|
+
lines.push(`.${id1} {`);
|
|
359
|
+
lines.push(` display: grid;`);
|
|
360
|
+
lines.push(` gap: ${(n % 20) + 4}px;`);
|
|
361
|
+
let propIdx = 0;
|
|
362
|
+
const props = [
|
|
363
|
+
"padding",
|
|
364
|
+
"margin",
|
|
365
|
+
"border-radius",
|
|
366
|
+
"font-size",
|
|
367
|
+
"line-height",
|
|
368
|
+
"background",
|
|
369
|
+
"color",
|
|
370
|
+
"opacity",
|
|
371
|
+
"z-index",
|
|
372
|
+
"min-width",
|
|
373
|
+
"max-height",
|
|
374
|
+
"transition",
|
|
375
|
+
"transform",
|
|
376
|
+
"box-shadow",
|
|
377
|
+
"overflow",
|
|
378
|
+
];
|
|
379
|
+
while (lines.length < targetLines) {
|
|
380
|
+
const prop = props[propIdx % props.length];
|
|
381
|
+
lines.push(` ${prop}: var(--${id1}-${prop}, auto);`);
|
|
382
|
+
propIdx++;
|
|
383
|
+
}
|
|
384
|
+
lines.push(`}`);
|
|
385
|
+
return lines.slice(0, Math.max(targetLines, 4)).join("\n");
|
|
386
|
+
}
|
|
387
|
+
function capitalize(s) {
|
|
388
|
+
return s.charAt(0).toUpperCase() + s.slice(1);
|
|
389
|
+
}
|
|
390
|
+
// ── Tool call helpers ────────────────────────────────────────────────────────
|
|
391
|
+
const TOOL_CALL_NAMES = [
|
|
392
|
+
"ReadFile",
|
|
393
|
+
"WriteFile",
|
|
394
|
+
"EditFile",
|
|
395
|
+
"SearchFiles",
|
|
396
|
+
"GrepSearch",
|
|
397
|
+
"RunCommand",
|
|
398
|
+
"ListDirectory",
|
|
399
|
+
];
|
|
400
|
+
function makeToolCallDetail(rng) {
|
|
401
|
+
// Weighted toward read/edit/search — those are the common ones.
|
|
402
|
+
const r = rng();
|
|
403
|
+
if (r < 0.3) {
|
|
404
|
+
return {
|
|
405
|
+
type: "read",
|
|
406
|
+
filePath: pick(rng, [
|
|
407
|
+
`src/${makeId(rng)}/index.tsx`,
|
|
408
|
+
`src/utils/${makeId(rng)}.ts`,
|
|
409
|
+
`tests/${makeId(rng)}.test.ts`,
|
|
410
|
+
`package.json`,
|
|
411
|
+
`config/${makeId(rng)}.json`,
|
|
412
|
+
]),
|
|
413
|
+
content: `// File for ${makeId(rng)}\nexport const ${makeId(rng)} = "${pick(rng, ["hello", "world", "test"])}";`,
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
if (r < 0.5) {
|
|
417
|
+
return {
|
|
418
|
+
type: "edit",
|
|
419
|
+
filePath: `src/${makeId(rng)}/${makeId(rng)}.ts`,
|
|
420
|
+
oldString: `const ${makeId(rng)} = null;`,
|
|
421
|
+
newString: `const ${makeId(rng)}: string | null = process.env.${makeId(rng).toUpperCase()} ?? null;`,
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
if (r < 0.7) {
|
|
425
|
+
return {
|
|
426
|
+
type: "shell",
|
|
427
|
+
command: pick(rng, ["npm run build", "npx tsc --noEmit", "git status", "npm test"]),
|
|
428
|
+
exitCode: rng() > 0.2 ? 0 : null,
|
|
429
|
+
output: `Done in ${randInt(rng, 1, 30)}.${String(randInt(rng, 0, 9)).padStart(2, "0")}s.`,
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
if (r < 0.85) {
|
|
433
|
+
return {
|
|
434
|
+
type: "search",
|
|
435
|
+
query: pick(rng, ["useEffect", "RateLimiter", "interface User", "export const"]),
|
|
436
|
+
numFiles: randInt(rng, 3, 25),
|
|
437
|
+
durationMs: randInt(rng, 10, 200),
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
return {
|
|
441
|
+
type: "write",
|
|
442
|
+
filePath: `src/${makeId(rng)}/${makeId(rng)}.ts`,
|
|
443
|
+
content: "// Generated file\nexport function init() {}\n",
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
// ── Assistant message builder (combinatorial) ────────────────────────────────
|
|
447
|
+
function buildAssistantMessage(rng) {
|
|
448
|
+
// Build a realistic assistant reply from composed parts.
|
|
449
|
+
// Structure: optional heading → paragraphs → optional list → optional code block → closing paragraph.
|
|
450
|
+
const parts = [];
|
|
451
|
+
// Optional heading (40% chance).
|
|
452
|
+
if (rng() < 0.4) {
|
|
453
|
+
parts.push(fillTemplate(rng, pick(rng, HEADING_TEMPLATES)));
|
|
454
|
+
}
|
|
455
|
+
// Opening paragraphs (1–3).
|
|
456
|
+
const paraCount = randInt(rng, 1, 3);
|
|
457
|
+
for (let i = 0; i < paraCount; i++) {
|
|
458
|
+
parts.push(buildParagraph(rng));
|
|
459
|
+
}
|
|
460
|
+
// Optional list — bullet or numbered (50% chance).
|
|
461
|
+
if (rng() < 0.5) {
|
|
462
|
+
parts.push(rng() > 0.4 ? buildBulletList(rng) : buildNumberedList(rng));
|
|
463
|
+
}
|
|
464
|
+
// Code block (60% of messages get one).
|
|
465
|
+
if (rng() < 0.6) {
|
|
466
|
+
parts.push(buildCodeBlock(rng));
|
|
467
|
+
}
|
|
468
|
+
// Closing paragraph (30% chance).
|
|
469
|
+
if (rng() < 0.3) {
|
|
470
|
+
parts.push("Let me know if you need any further changes or have questions about this approach.");
|
|
471
|
+
}
|
|
472
|
+
return parts.join("\n\n");
|
|
473
|
+
}
|
|
474
|
+
// ── Reasoning block builder ──────────────────────────────────────────────────
|
|
475
|
+
function buildReasoning(rng) {
|
|
476
|
+
const edgeCases = [
|
|
477
|
+
"null inputs",
|
|
478
|
+
"empty arrays",
|
|
479
|
+
"race conditions",
|
|
480
|
+
"type mismatches",
|
|
481
|
+
"memory leaks",
|
|
482
|
+
];
|
|
483
|
+
return `Thinking... I need to analyze this problem step by step.\n\nFirst, let me understand the core issue with ${makeId(rng)}. Then I'll look at the codebase to find the relevant files and determine the best approach. This involves checking for edge cases like ${pick(rng, edgeCases)} and considering performance implications of each option.`;
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* Generate a deterministic array of fake-but-realistic agent timeline items.
|
|
487
|
+
*
|
|
488
|
+
* Same `seed` + `itemCount` always produces byte-identical output. No wall-clock
|
|
489
|
+
* or non-deterministic APIs are used.
|
|
490
|
+
*/
|
|
491
|
+
export function generateSyntheticConversation(options) {
|
|
492
|
+
const rng = mulberry32(options.seed);
|
|
493
|
+
const items = [];
|
|
494
|
+
// We always start with a user message and end up with exactly itemCount items.
|
|
495
|
+
// The planner decides the sequence structure: user messages kick off turns,
|
|
496
|
+
// then we fill with assistant/tool/thinking content until we hit the budget.
|
|
497
|
+
let nextCallId = 0;
|
|
498
|
+
function addToolCalls(count) {
|
|
499
|
+
for (let i = 0; i < count; i++) {
|
|
500
|
+
if (items.length >= options.itemCount)
|
|
501
|
+
return;
|
|
502
|
+
const callId = `call_${nextCallId++}`;
|
|
503
|
+
// Use literal types so each branch matches the discriminated union exactly.
|
|
504
|
+
if (rng() > 0.15) {
|
|
505
|
+
items.push({
|
|
506
|
+
type: "tool_call",
|
|
507
|
+
callId,
|
|
508
|
+
name: pick(rng, TOOL_CALL_NAMES),
|
|
509
|
+
detail: makeToolCallDetail(rng),
|
|
510
|
+
status: "completed",
|
|
511
|
+
error: null,
|
|
512
|
+
});
|
|
513
|
+
}
|
|
514
|
+
else {
|
|
515
|
+
items.push({
|
|
516
|
+
type: "tool_call",
|
|
517
|
+
callId,
|
|
518
|
+
name: pick(rng, TOOL_CALL_NAMES),
|
|
519
|
+
detail: makeToolCallDetail(rng),
|
|
520
|
+
status: "failed",
|
|
521
|
+
error: pick(rng, ["ECONNREFUSED", "ENOENT", "ETIMEDOUT"]),
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
// Build the conversation turn by turn.
|
|
527
|
+
while (items.length < options.itemCount) {
|
|
528
|
+
// User message to kick off a turn — or whenever there's room for another prompt.
|
|
529
|
+
if (items.length === 0 || rng() < 0.15) {
|
|
530
|
+
items.push({
|
|
531
|
+
type: "user_message",
|
|
532
|
+
text: pick(rng, USER_PROMPTS),
|
|
533
|
+
});
|
|
534
|
+
continue;
|
|
535
|
+
}
|
|
536
|
+
// Occasionally insert reasoning before the assistant speaks.
|
|
537
|
+
if (rng() < 0.12) {
|
|
538
|
+
items.push({
|
|
539
|
+
type: "reasoning",
|
|
540
|
+
text: buildReasoning(rng),
|
|
541
|
+
});
|
|
542
|
+
if (items.length >= options.itemCount)
|
|
543
|
+
break;
|
|
544
|
+
}
|
|
545
|
+
// Assistant message — always present in a turn after the user prompt.
|
|
546
|
+
items.push({
|
|
547
|
+
type: "assistant_message",
|
|
548
|
+
text: buildAssistantMessage(rng),
|
|
549
|
+
});
|
|
550
|
+
if (items.length >= options.itemCount)
|
|
551
|
+
break;
|
|
552
|
+
// Tool calls happen in bursts of 3–8, but only when there's room.
|
|
553
|
+
if (rng() < 0.5) {
|
|
554
|
+
const remaining = options.itemCount - items.length;
|
|
555
|
+
const burstSize = Math.min(randInt(rng, 3, 8), remaining);
|
|
556
|
+
addToolCalls(burstSize);
|
|
557
|
+
}
|
|
558
|
+
else if (rng() < 0.4) {
|
|
559
|
+
// Smaller tool call cluster — 1 or 2.
|
|
560
|
+
const remaining = options.itemCount - items.length;
|
|
561
|
+
const burstSize = Math.min(randInt(rng, 1, 2), remaining);
|
|
562
|
+
addToolCalls(burstSize);
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
return items.slice(0, options.itemCount);
|
|
566
|
+
}
|
|
567
|
+
//# sourceMappingURL=synthetic-conversation.js.map
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { spawn as nodeSpawn, type ChildProcess, type SpawnOptions } from "node:child_process";
|
|
2
|
+
import type { Logger } from "pino";
|
|
3
|
+
import { killProcessTree } from "./process-tree.js";
|
|
4
|
+
/**
|
|
5
|
+
* The one door every .NET child process goes through.
|
|
6
|
+
*
|
|
7
|
+
* Nothing in Otto may call `spawn` for a `dotnet`-backed process directly. Two subsystems
|
|
8
|
+
* start them — the C# language server and the solution sidecar — and each used to own its
|
|
9
|
+
* own pool with its own cap, which meant the machine's actual .NET process count was the
|
|
10
|
+
* sum of two numbers neither pool could see. Add MSBuild worker nodes, which are children
|
|
11
|
+
* of those processes rather than of ours, and the honest answer to "how many dotnet
|
|
12
|
+
* processes has Otto started" was: nobody knew.
|
|
13
|
+
*
|
|
14
|
+
* This registry makes that answerable and boundable:
|
|
15
|
+
*
|
|
16
|
+
* - **A hard cap, checked before the spawn.** Over the cap is a refusal, not a queue and
|
|
17
|
+
* not a best-effort eviction. A caller that cannot get a slot reports the feature
|
|
18
|
+
* unavailable, exactly as it does on a host with no SDK.
|
|
19
|
+
* - **Every process is tracked from birth.** Registration cannot be forgotten, because
|
|
20
|
+
* spawning and registering are the same call.
|
|
21
|
+
* - **Release kills the tree.** `dotnet` processes have children of their own; signalling
|
|
22
|
+
* only the process we hold is what left orphans behind.
|
|
23
|
+
* - **`killAll` is a real sweep.** On shutdown anything still alive is killed by tree,
|
|
24
|
+
* including processes whose owner leaked its handle.
|
|
25
|
+
*
|
|
26
|
+
* No timers live here, and every decision reads injected collaborators, so the whole
|
|
27
|
+
* lifecycle is testable without spawning a real runtime.
|
|
28
|
+
*/
|
|
29
|
+
export type DotnetProcessKind = "language-server" | "solution-sidecar";
|
|
30
|
+
export declare class DotnetProcessLimitError extends Error {
|
|
31
|
+
readonly limit: number;
|
|
32
|
+
readonly running: number;
|
|
33
|
+
constructor(limit: number, running: number);
|
|
34
|
+
}
|
|
35
|
+
export interface DotnetProcessRecord {
|
|
36
|
+
pid: number | undefined;
|
|
37
|
+
kind: DotnetProcessKind;
|
|
38
|
+
/** Human-readable owner, e.g. the workspace root or solution path. For diagnostics only. */
|
|
39
|
+
label: string;
|
|
40
|
+
startedAt: number;
|
|
41
|
+
}
|
|
42
|
+
export interface TrackedDotnetProcess {
|
|
43
|
+
child: ChildProcess;
|
|
44
|
+
/** Kill the tree and give the slot back. Idempotent. */
|
|
45
|
+
release(): void;
|
|
46
|
+
}
|
|
47
|
+
export interface DotnetProcessRegistryOptions {
|
|
48
|
+
logger: Logger;
|
|
49
|
+
/**
|
|
50
|
+
* Ceiling across every kind. Two solution sidecars plus a C# language server for each of
|
|
51
|
+
* a couple of workspaces is already four resident MSBuild-sized processes; past that a
|
|
52
|
+
* developer machine notices, which is the complaint this exists to answer.
|
|
53
|
+
*/
|
|
54
|
+
maxProcesses?: number;
|
|
55
|
+
/** Test seams. Nothing in production passes these. */
|
|
56
|
+
spawn?: typeof nodeSpawn;
|
|
57
|
+
killTree?: typeof killProcessTree;
|
|
58
|
+
now?: () => number;
|
|
59
|
+
}
|
|
60
|
+
export declare const DEFAULT_MAX_DOTNET_PROCESSES = 4;
|
|
61
|
+
export declare class DotnetProcessRegistry {
|
|
62
|
+
private readonly logger;
|
|
63
|
+
private readonly spawn;
|
|
64
|
+
private readonly killTree;
|
|
65
|
+
private readonly now;
|
|
66
|
+
private maxProcesses;
|
|
67
|
+
private readonly entries;
|
|
68
|
+
constructor(options: DotnetProcessRegistryOptions);
|
|
69
|
+
get limit(): number;
|
|
70
|
+
get size(): number;
|
|
71
|
+
/**
|
|
72
|
+
* Lowering the limit does not kill anything already running: a process holding a warm
|
|
73
|
+
* project model is expensive to rebuild, and the caller that would be killed has done
|
|
74
|
+
* nothing wrong. The new limit binds the next spawn, and the count drains naturally as
|
|
75
|
+
* pools reap their idle members.
|
|
76
|
+
*/
|
|
77
|
+
setLimit(maxProcesses: number): void;
|
|
78
|
+
/** A copy per row, so a caller inspecting the registry cannot mutate what it tracks. */
|
|
79
|
+
running(): DotnetProcessRecord[];
|
|
80
|
+
hasCapacity(): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Spawn a .NET process under the cap. Throws {@link DotnetProcessLimitError} rather than
|
|
83
|
+
* queueing: a caller waiting on a slot would hold a request open behind work that may
|
|
84
|
+
* take minutes to finish, and "not right now" is an answer both callers can render.
|
|
85
|
+
*
|
|
86
|
+
* `MSBUILD_ENV` is applied here rather than at each call site so no future caller can
|
|
87
|
+
* forget it and reintroduce resident MSBuild worker nodes.
|
|
88
|
+
*/
|
|
89
|
+
spawnTracked(input: {
|
|
90
|
+
command: string;
|
|
91
|
+
args: readonly string[];
|
|
92
|
+
options: SpawnOptions;
|
|
93
|
+
kind: DotnetProcessKind;
|
|
94
|
+
label: string;
|
|
95
|
+
}): TrackedDotnetProcess;
|
|
96
|
+
/**
|
|
97
|
+
* Kill everything still tracked. The shutdown sweep, and the backstop for an owner that
|
|
98
|
+
* dropped its handle without releasing.
|
|
99
|
+
*/
|
|
100
|
+
killAll(): void;
|
|
101
|
+
}
|
|
102
|
+
export declare function sharedDotnetProcessRegistry(logger: Logger): DotnetProcessRegistry;
|
|
103
|
+
/** Applies the host's configured ceiling. Safe to call before anything has spawned. */
|
|
104
|
+
export declare function configureSharedDotnetProcessRegistry(input: {
|
|
105
|
+
logger: Logger;
|
|
106
|
+
maxProcesses: number;
|
|
107
|
+
}): void;
|
|
108
|
+
/** Shutdown sweep: nothing Otto started outlives Otto. */
|
|
109
|
+
export declare function killAllSharedDotnetProcesses(): void;
|
|
110
|
+
export declare function resetSharedDotnetProcessRegistryForTests(): void;
|
|
111
|
+
//# sourceMappingURL=dotnet-process-registry.d.ts.map
|