This creates a new "Add Data Breakpoint at Address" action in the
breakpoints view when a debugger that supports the capability is
available. It prompts the user to enter their address in a quickpick,
and then allows them to choose appropriate data access settings.
The editor side of https://github.com/microsoft/debug-adapter-protocol/issues/455
This supports breakpoint modes on exception, instruction, and source
breakpoints. It doesn't yet do data breakpoints since I was having
trouble figuring out a good user flow for that. You can test this on the
`connor4312/breakpoint-modes` branch of mock-debug, which I'll merge in
after the next DAP release.

* Remove extra not null assertions
With https://github.com/microsoft/TypeScript/pull/56908, TS should better preserve type refinements. To help test this out, I made a quick pass through our code to remove type assertions that are no longer needed
Most of these are not impacted by https://github.com/microsoft/TypeScript/pull/56908 but removing them helps TS test changes like this
Not adding an eslint rule for now as it requires whole program intellisense, which is too slow for commit hooks
* Fix merge
Fixes#196950
Emit more information from the debug service about the type of
termination happening, and whether a restart is expected. Keep the
session listeners for sessions around if a restart is expected. Additionally:
- inline chat decorations did not track restarted sessions
- there was a leak where we retained listeners for every launched debug session on the DebugService
* feat: Initial pass at Debug Focus, listener for thread or stack frame
selection (#63943)
Add debug.onDidChangeDebugFocus. May provide ids for session, thread,
and stackFrame, as appropriate.
Fixes: #63943 api should provide thread/stack frame id (paraphrasing)
* chore: small comment tweaks in proposal
* fix: bad copy/paste in proposed. moved types out of 'debug' namespace
* fix: separate 'debugFocus' into thread and stackFrame specific
listeners, and create separate contexts for each
* fix: Revert prev change, switch to single api with union type
This reverts commit c308bc3a90.
* fix: rename accessor from 'focus' to 'stackFrameFocus'
* fix: review comments; remove unused type, imrpove comments
* fixL review comments, type change: sessionID property cannot be undefined
* Remove comments
---------
Co-authored-by: Rob Lourens <roblourens@gmail.com>
Previously, if a DAP output event contained a variablesReference, we
would entirely ignore the `output` text in favor of shows its variables.
However, output can be richer than variable data: namely, it can show
ANSI sequences which would be inappropriate to format in
a variable `value`.
In this PR, if an output event has a single variable in its
`variablesReference` and output text, we show the output text instead
of the variable value. (Maybe we should also log output as plain text,
though this could be a confusing experience. I don't know of any DA's
that actually emit >1 variable in their output.)
For #172868
For #171732
(will need adoption in js-debug to actually fix those)
Switches simple patterns like:
```ts
if (some.thing) {
some.thing.method();
}
```
to:
```ts
some.thing?.method()
```
This is more concise and avoids having to repeat the `some.thing` part
* Implement simple debug UI mode
* Don't show debug viewlet on step
* Move flag to proposed
* Pass around full debugUI options object
* Implement isSimpleUI in mock