feat(session): add explicit provider registry and target binding

Introduce deterministic deep-provider discovery and immutable per-target routing while retaining disjoint artifact and native capability families.

Expose provider selection consistently through MCP, CLI, environment configuration, session status, prompt completion, typed diagnostics, and generated documentation. Preserve exact provider/profile provenance without request racing or transparent fallback.

Cover overlapping providers, ambiguity, rejection details, cancellation, restoration, package installation, and real Hopper target switching.
This commit is contained in:
N0zoM1z0
2026-07-15 22:13:48 +09:00
committed by N0zoM1z0
parent bd3cf964d6
commit 941d7101dd
174 changed files with 5370 additions and 648 deletions
@@ -14,14 +14,14 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Hopper's JSON-RPC endpoint returned an expected remote error response.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="4698">
<section class="tsd-panel tsd-hierarchy" data-refl="4715">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.HopperRemoteError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.HopperError.html" class="tsd-signature-type tsd-kind-class">HopperError</a>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><span class="tsd-hierarchy-target">HopperRemoteError</span></li></ul></li></ul></section><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/errors.ts#L318">src/domain/errors.ts:318</a></li></ul></aside>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/errors.ts#L399">src/domain/errors.ts:399</a></li></ul></aside>
<section class="tsd-panel-group tsd-index-group">
<section class="tsd-panel tsd-index-panel">
<details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
@@ -60,7 +60,7 @@
<h4 class="tsd-returns-title">Returns <a href="" class="tsd-signature-type tsd-kind-class">HopperRemoteError</a></h4><aside class="tsd-sources">
<p>Overrides <a href="domain_errors.HopperError.html">HopperError</a>.<a href="domain_errors.HopperError.html#constructor">constructor</a></p>
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/errors.ts#L321">src/domain/errors.ts:321</a></li></ul></aside></div></li></ul></section></section></details>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/errors.ts#L402">src/domain/errors.ts:402</a></li></ul></aside></div></li></ul></section></section></details>
<details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h2 class="tsd-anchor-link" id="properties-1">Properties<a href="#properties-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary>
<section>
@@ -69,7 +69,7 @@
<div class="tsd-signature"><span class="tsd-kind-property">_tag</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">&quot;HopperRemoteError&quot;</span></div><aside class="tsd-sources">
<p>Overrides <a href="domain_errors.HopperError.html">HopperError</a>.<a href="domain_errors.HopperError.html#_tag">_tag</a></p>
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/errors.ts#L319">src/domain/errors.ts:319</a></li></ul></aside></section>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/errors.ts#L400">src/domain/errors.ts:400</a></li></ul></aside></section>
<section class="tsd-panel tsd-member tsd-is-inherited">
<h3 class="tsd-anchor-link" id="cleanupincomplete"><code class="tsd-tag">Readonly</code><span>cleanup<wbr/>Incomplete</span><a href="#cleanupincomplete" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
<div class="tsd-signature"><span class="tsd-kind-property">cleanupIncomplete</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol"> = false</span></div><aside class="tsd-sources">
@@ -86,17 +86,17 @@
<h3 class="tsd-anchor-link" id="code"><code class="tsd-tag">Readonly</code><span>code</span><a href="#code" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
<div class="tsd-signature"><span class="tsd-kind-property">code</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/errors.ts#L322">src/domain/errors.ts:322</a></li></ul></aside></section>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/errors.ts#L403">src/domain/errors.ts:403</a></li></ul></aside></section>
<section class="tsd-panel tsd-member">
<h3 class="tsd-anchor-link" id="diagnostictype"><code class="tsd-tag">Readonly</code><span>diagnostic<wbr/>Type</span><a href="#diagnostictype" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
<div class="tsd-signature"><span class="tsd-kind-property">diagnosticType</span><span class="tsd-signature-symbol">:</span> <a href="../types/domain_errors.HopperDiagnosticType.html" class="tsd-signature-type tsd-kind-type-alias">HopperDiagnosticType</a><span class="tsd-signature-symbol"> = &quot;remote&quot;</span></div><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/errors.ts#L324">src/domain/errors.ts:324</a></li></ul></aside></section>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/errors.ts#L405">src/domain/errors.ts:405</a></li></ul></aside></section>
<section class="tsd-panel tsd-member">
<h3 class="tsd-anchor-link" id="safemessage"><code class="tsd-tag">Readonly</code><span>safe<wbr/>Message</span><a href="#safemessage" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
<div class="tsd-signature"><span class="tsd-kind-property">safeMessage</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/errors.ts#L323">src/domain/errors.ts:323</a></li></ul></aside></section>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/errors.ts#L404">src/domain/errors.ts:404</a></li></ul></aside></section>
<section class="tsd-panel tsd-member tsd-is-inherited">
<h3 class="tsd-anchor-link" id="usercategory"><code class="tsd-tag">Readonly</code><span>user<wbr/>Category</span><a href="#usercategory" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
<div class="tsd-signature"><span class="tsd-kind-property">userCategory</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">&quot;permission_required&quot;</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;cancelled&quot;</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol"> = undefined</span></div><aside class="tsd-sources">