@ggui-ai/mcp-server-handlers 0.22.0 → 0.24.0
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/blueprints/search-blueprints.d.ts +10 -6
- package/dist/blueprints/search-blueprints.d.ts.map +1 -1
- package/dist/blueprints/search-blueprints.js +10 -6
- package/dist/ops-blueprint/generate.d.ts.map +1 -1
- package/dist/ops-blueprint/generate.js +5 -1
- package/dist/renders/blueprint-matcher.d.ts +29 -12
- package/dist/renders/blueprint-matcher.d.ts.map +1 -1
- package/dist/renders/blueprint-matcher.js +93 -82
- package/dist/renders/blueprint-registry.d.ts.map +1 -1
- package/dist/renders/blueprint-registry.js +20 -3
- package/dist/renders/consume.d.ts +32 -0
- package/dist/renders/consume.d.ts.map +1 -1
- package/dist/renders/decide-handshake.d.ts +13 -5
- package/dist/renders/decide-handshake.d.ts.map +1 -1
- package/dist/renders/decide-handshake.js +31 -11
- package/dist/renders/handshake-fallbacks.d.ts +3 -1
- package/dist/renders/handshake-fallbacks.d.ts.map +1 -1
- package/dist/renders/handshake-fallbacks.js +1 -0
- package/dist/renders/handshake.d.ts +37 -3
- package/dist/renders/handshake.d.ts.map +1 -1
- package/dist/renders/handshake.js +7 -2
- package/dist/renders/index.d.ts +3 -2
- package/dist/renders/index.d.ts.map +1 -1
- package/dist/renders/index.js +1 -0
- package/dist/renders/installed-blueprints-provider.d.ts +23 -1
- package/dist/renders/installed-blueprints-provider.d.ts.map +1 -1
- package/dist/renders/installed-blueprints-provider.js +45 -8
- package/dist/renders/match-precision/run-probe.js +197 -18
- package/dist/renders/probe-anthropic-judge.d.ts +1 -0
- package/dist/renders/probe-anthropic-judge.d.ts.map +1 -1
- package/dist/renders/probe-anthropic-judge.js +1 -1
- package/dist/renders/record-committed-one-shot.d.ts +54 -0
- package/dist/renders/record-committed-one-shot.d.ts.map +1 -0
- package/dist/renders/record-committed-one-shot.js +41 -0
- package/dist/renders/render.d.ts +24 -0
- package/dist/renders/render.d.ts.map +1 -1
- package/dist/renders/render.js +18 -3
- package/dist/renders/runtime-telemetry.d.ts +9 -0
- package/dist/renders/runtime-telemetry.d.ts.map +1 -1
- package/dist/renders/runtime-telemetry.js +9 -0
- package/dist/renders/slice-meta-derivation.d.ts +8 -1
- package/dist/renders/slice-meta-derivation.d.ts.map +1 -1
- package/dist/renders/slice-meta-derivation.js +11 -0
- package/dist/renders/submit-action.d.ts +15 -1
- package/dist/renders/submit-action.d.ts.map +1 -1
- package/dist/renders/submit-action.js +42 -1
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -8
|
@@ -53,12 +53,16 @@
|
|
|
53
53
|
import { z } from 'zod';
|
|
54
54
|
import type { BlueprintProvider, EmbeddingProvider, VectorStore } from '@ggui-ai/mcp-server-core';
|
|
55
55
|
/**
|
|
56
|
-
* The similarity floor for
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
56
|
+
* The similarity floor for this tool: a hit under it is dropped. Below
|
|
57
|
+
* this is noise; callers that want stricter matching post-filter by
|
|
58
|
+
* `score`.
|
|
59
|
+
*
|
|
60
|
+
* The handshake matcher (`matchBlueprint`) gates its judge with its own
|
|
61
|
+
* number (0.2), not this one, because the two are not on one scale: the
|
|
62
|
+
* matcher's retrieval query embeds a request's intent without its
|
|
63
|
+
* contract while stored vectors embed both, which depresses its cosines
|
|
64
|
+
* (ggui#606, ggui#1275). One shared number returns when the matcher's
|
|
65
|
+
* query is composed like the stored side.
|
|
62
66
|
*/
|
|
63
67
|
export declare const MIN_SIMILARITY_SCORE = 0.3;
|
|
64
68
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-blueprints.d.ts","sourceRoot":"","sources":["../../src/blueprints/search-blueprints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAEV,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAUlC
|
|
1
|
+
{"version":3,"file":"search-blueprints.d.ts","sourceRoot":"","sources":["../../src/blueprints/search-blueprints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAEV,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAUlC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,IAAM,CAAC;AAE7C;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,OAAO,CAAC;AAEvD;;;;GAIG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,gEAAgE;IAChE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,8BAA8B,CAAC;CACpD;AAcD;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDvE"}
|
|
@@ -54,12 +54,16 @@ import { z } from 'zod';
|
|
|
54
54
|
import { bundleHostScheme, DEFAULT_BUNDLE_HOST, flatToBlueprintSource, gguiSearchBlueprintsOutputSchema, searchBlueprintsInputShape, } from '@ggui-ai/protocol';
|
|
55
55
|
import { defineHandler } from '../types.js';
|
|
56
56
|
/**
|
|
57
|
-
* The similarity floor for
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
57
|
+
* The similarity floor for this tool: a hit under it is dropped. Below
|
|
58
|
+
* this is noise; callers that want stricter matching post-filter by
|
|
59
|
+
* `score`.
|
|
60
|
+
*
|
|
61
|
+
* The handshake matcher (`matchBlueprint`) gates its judge with its own
|
|
62
|
+
* number (0.2), not this one, because the two are not on one scale: the
|
|
63
|
+
* matcher's retrieval query embeds a request's intent without its
|
|
64
|
+
* contract while stored vectors embed both, which depresses its cosines
|
|
65
|
+
* (ggui#606, ggui#1275). One shared number returns when the matcher's
|
|
66
|
+
* query is composed like the stored side.
|
|
63
67
|
*/
|
|
64
68
|
export const MIN_SIMILARITY_SCORE = 0.3;
|
|
65
69
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/ops-blueprint/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,aAAa,EAGd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,YAAY,EAIlB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAyB,KAAK,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAsBxF;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;IAC1E;;;;;;;OAOG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAC7C;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,CACnB,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,qBAAqB,GAAG,IAAI,CAAC;IAC1E;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,qBAAqB,CAAC;IAC/C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;IACxC;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;CACzD;AA2CD,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/ops-blueprint/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,aAAa,EAGd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,YAAY,EAIlB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAyB,KAAK,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAsBxF;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;IAC1E;;;;;;;OAOG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAC7C;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,CACnB,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,qBAAqB,GAAG,IAAI,CAAC;IAC1E;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,qBAAqB,CAAC;IAC/C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;IACxC;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;CACzD;AA2CD,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;GA0SnC"}
|
|
@@ -250,7 +250,11 @@ export function createGguiOpsGenerateBlueprintHandler(deps) {
|
|
|
250
250
|
}
|
|
251
251
|
// 6. Persist the blueprint + code body.
|
|
252
252
|
const componentCode = result.response.componentCode;
|
|
253
|
-
|
|
253
|
+
// The full sha256, the `CodeStore` key domain (`CODE_HASH_REGEX`) and
|
|
254
|
+
// the same key `ggui_ops_register_blueprint` computes for the same
|
|
255
|
+
// bytes. A 32-hex prefix here (ggui#1287) was refused by every
|
|
256
|
+
// conforming code store.
|
|
257
|
+
const codeHash = createHash("sha256").update(componentCode).digest("hex");
|
|
254
258
|
// The advanced generator tunnels `validatorScore` through
|
|
255
259
|
// `metadata` until the UiGenerator interface widens to carry
|
|
256
260
|
// it explicitly. Read it via the typed helper so the default
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
* matcher returns `match-skip-no-llm`.
|
|
46
46
|
*/
|
|
47
47
|
import type { LLMCaller } from '@ggui-ai/negotiator';
|
|
48
|
+
import { type RerankJudge } from '@ggui-ai/negotiator';
|
|
48
49
|
import { type DataContract, type BlueprintVariance } from '@ggui-ai/protocol';
|
|
49
50
|
import { type CacheTraceStrategy } from './cache-trace-sink.js';
|
|
50
51
|
import { type Blueprint, type BlueprintCandidate, type BlueprintKind, type BlueprintRegistryDeps } from './blueprint-registry.js';
|
|
@@ -105,11 +106,28 @@ export interface MatchBlueprintDeps {
|
|
|
105
106
|
*/
|
|
106
107
|
readonly llm?: LLMCaller;
|
|
107
108
|
/**
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
109
|
+
* The rerank judge as a PAIR with the confidence threshold it was
|
|
110
|
+
* measured on (ggui#1235). Absent → today's default, `llm` bound
|
|
111
|
+
* through `llmRerankJudge` at `options.judgeThreshold` (0.5). Present
|
|
112
|
+
* → this judge decides, its `threshold` is the cut, and
|
|
113
|
+
* `options.judgeThreshold` does not apply to it: a threshold never
|
|
114
|
+
* travels apart from the judge it was calibrated on. A judge that
|
|
115
|
+
* resolves its own cut internally (a decision provider with a fallback
|
|
116
|
+
* chain) passes `threshold: 0` and declines only with `matchId: null`.
|
|
117
|
+
* Wins over a bare `llm` when both are given.
|
|
118
|
+
*/
|
|
119
|
+
readonly rerank?: {
|
|
120
|
+
readonly judge: RerankJudge;
|
|
121
|
+
readonly threshold: number;
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Optional marketplace-install bridge. When set, the matcher STARTS
|
|
125
|
+
* `ensureCached(scope)` and reads the exact key while it runs: a hit
|
|
126
|
+
* the walk can never evict (not bridge-owned) is served at once; a
|
|
127
|
+
* bridge-owned hit, a miss and the semantic tier all wait for it
|
|
128
|
+
* (ggui#1370). Installed blueprints lazily compile + populate the same
|
|
129
|
+
* vector store the matcher reads, so the next lookup sees them.
|
|
130
|
+
* Idempotent per scope; subsequent calls are cheap no-ops.
|
|
113
131
|
*
|
|
114
132
|
* Best-effort: ensureCached failures are swallowed so a broken
|
|
115
133
|
* installed-blueprint compile can't sink an otherwise-healthy
|
|
@@ -125,13 +143,12 @@ export interface MatchBlueprintOptions {
|
|
|
125
143
|
/** RAG top-K. Default 20 — balance between recall and prompt cost. */
|
|
126
144
|
readonly topK?: number;
|
|
127
145
|
/**
|
|
128
|
-
* Minimum cosine a candidate needs to reach the LLM judge. Default
|
|
129
|
-
*
|
|
130
|
-
* `ggui_search_blueprints`
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
* it, the judge is skipped entirely and the rerank cost is saved.
|
|
146
|
+
* Minimum cosine a candidate needs to reach the LLM judge. Default 0.2
|
|
147
|
+
* (see the DEFAULT_MIN_COSINE note for why it is not
|
|
148
|
+
* `ggui_search_blueprints`' 0.3). Applied PER CANDIDATE (ggui#1275): a
|
|
149
|
+
* candidate under the floor is never offered to the judge, so it can
|
|
150
|
+
* never become a reuse; when even top-1 is under it, the judge is skipped
|
|
151
|
+
* entirely and the rerank cost is saved.
|
|
135
152
|
*/
|
|
136
153
|
readonly minCosineForRerank?: number;
|
|
137
154
|
/** LLM judge confidence threshold for treating a semantic-strategy decision as a hit. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blueprint-matcher.d.ts","sourceRoot":"","sources":["../../src/renders/blueprint-matcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"blueprint-matcher.d.ts","sourceRoot":"","sources":["../../src/renders/blueprint-matcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { llmRerankJudge } from '@ggui-ai/negotiator';
|
|
2
2
|
import { summarizeContract, } from '@ggui-ai/protocol';
|
|
3
3
|
import { blueprintKey, variantKey } from '@ggui-ai/protocol/blueprint-key';
|
|
4
4
|
import { emitCacheTraceEvent, newCacheTraceId, truncateCacheTraceIntent, } from './cache-trace-sink.js';
|
|
5
5
|
import { findBlueprintExact, findBlueprintsByEmbedding, recordBlueprintHit, } from './blueprint-registry.js';
|
|
6
6
|
import { coverageGap } from './blueprint-coverage.js';
|
|
7
|
-
import { MIN_SIMILARITY_SCORE } from '../blueprints/search-blueprints.js';
|
|
8
7
|
/** An all-empty coverage gap — used for exact-key hits (canonical-key
|
|
9
8
|
* equality already implies full coverage) and for contract-less requests
|
|
10
9
|
* (nothing to cover against). */
|
|
@@ -16,16 +15,24 @@ const EMPTY_GAP = {
|
|
|
16
15
|
gadgets: [],
|
|
17
16
|
};
|
|
18
17
|
const DEFAULT_TOP_K = 20;
|
|
19
|
-
// The cosine
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
|
|
18
|
+
// The cosine gate before the judge. It is 0.2 and deliberately NOT
|
|
19
|
+
// `ggui_search_blueprints`' 0.3, because the two numbers are not on one
|
|
20
|
+
// scale: the retrieval query below embeds the request's intent ALONE
|
|
21
|
+
// (`ragArg = { intent }`), while every stored vector embeds its contract
|
|
22
|
+
// summary AND its intent (`composeEmbeddingInput(contract, intent)`). That
|
|
23
|
+
// asymmetry (ggui#606) depresses every cosine this matcher sees. Measured
|
|
24
|
+
// on a development deployment with the production embedder (ggui#1275): a
|
|
25
|
+
// request with the same contract and a near-identical intent scored 0.29
|
|
26
|
+
// here and 0.87 when the query carries the contract too. So a 0.3 gate on
|
|
27
|
+
// this scale turns true matches away before the judge sees them.
|
|
28
|
+
// 0.2 is the gate ggui#606's ranking probe ran under, with the judge
|
|
29
|
+
// picking correctly; what the 0.2–0.3 band admits past the judge was
|
|
30
|
+
// sampled once on dev and not calibrated: 8 reuses, 6 right (short
|
|
31
|
+
// intents at 0.27–0.30) and 2 wrong, both on a blueprint with no cached
|
|
32
|
+
// intent, which ggui#1275 (3) now keeps out of the judge entirely. The
|
|
33
|
+
// gate is recalibrated when the query is composed like the stored side
|
|
34
|
+
// (ggui#606, rnd's design and gate).
|
|
35
|
+
const DEFAULT_MIN_COSINE = 0.2;
|
|
29
36
|
// Loosened for Path-A: accept a semantic judge's pick more readily, so a
|
|
30
37
|
// paraphrased / similar contract is reused instead of cold-generating.
|
|
31
38
|
// Over-proposal is bounded by the agent decision step plus the COVERAGE_GAP
|
|
@@ -46,7 +53,13 @@ export async function matchBlueprint(deps, scope, query, options = {}) {
|
|
|
46
53
|
const kind = options.kind ?? 'template';
|
|
47
54
|
const topK = options.topK ?? DEFAULT_TOP_K;
|
|
48
55
|
const minCosine = options.minCosineForRerank ?? DEFAULT_MIN_COSINE;
|
|
49
|
-
|
|
56
|
+
// ggui#1235 — the pair: a supplied judge carries its own cut; the default
|
|
57
|
+
// is today's LLM judge at `options.judgeThreshold` (0.5).
|
|
58
|
+
const rerank = deps.rerank ??
|
|
59
|
+
(deps.llm !== undefined
|
|
60
|
+
? { judge: llmRerankJudge(deps.llm), threshold: options.judgeThreshold ?? DEFAULT_JUDGE_THRESHOLD }
|
|
61
|
+
: undefined);
|
|
62
|
+
const judgeThreshold = rerank?.threshold ?? options.judgeThreshold ?? DEFAULT_JUDGE_THRESHOLD;
|
|
50
63
|
const trimmedIntent = query.intent.trim();
|
|
51
64
|
const startedAt = Date.now();
|
|
52
65
|
const expectedKey = query.contract !== undefined ? blueprintKey(query.contract) : '';
|
|
@@ -96,82 +109,80 @@ export async function matchBlueprint(deps, scope, query, options = {}) {
|
|
|
96
109
|
emit({ decision: 'no-match-empty-intent', reason, candidates: [] });
|
|
97
110
|
return { strategy: 'no-match', reason, candidates: [] };
|
|
98
111
|
}
|
|
99
|
-
//
|
|
100
|
-
//
|
|
101
|
-
//
|
|
102
|
-
//
|
|
103
|
-
//
|
|
104
|
-
//
|
|
105
|
-
//
|
|
106
|
-
//
|
|
107
|
-
//
|
|
108
|
-
//
|
|
112
|
+
// ggui#1370 — start the installed-blueprints walk, but do NOT wait for it
|
|
113
|
+
// before the exact-key read. On a scope's first call per process the walk
|
|
114
|
+
// enumerates the scope (a whole-index walk on a store that cannot list
|
|
115
|
+
// by scope) before it can settle; an exact-key hit that the walk can never evict — a row
|
|
116
|
+
// that is not bridge-owned — is served at once while the walk finishes in
|
|
117
|
+
// the background (memoised per scope, errors swallowed). Everything else
|
|
118
|
+
// waits: a bridge-owned hit is re-read AFTER the walk because its orphan
|
|
119
|
+
// sweep may have evicted it (the G4 stale-cache guarantee); a miss is
|
|
120
|
+
// re-read because the walk may have compiled + registered an install; and
|
|
121
|
+
// the semantic tier never runs before the walk, since an uninstalled
|
|
122
|
+
// vector is servable there. No hit-count write is issued before the walk
|
|
123
|
+
// settles either — a bump racing the sweep's delete would re-create the
|
|
124
|
+
// uninstalled vector.
|
|
125
|
+
let ensured = Promise.resolve();
|
|
109
126
|
if (deps.installedBlueprints) {
|
|
127
|
+
const ensureArg = query.contract !== undefined ? { contractKey: expectedKey } : undefined;
|
|
128
|
+
let started;
|
|
110
129
|
try {
|
|
111
|
-
|
|
112
|
-
? { contractKey: expectedKey }
|
|
113
|
-
: undefined;
|
|
114
|
-
await deps.installedBlueprints.ensureCached(scope, ensureArg);
|
|
130
|
+
started = Promise.resolve(deps.installedBlueprints.ensureCached(scope, ensureArg));
|
|
115
131
|
}
|
|
116
132
|
catch (err) {
|
|
117
|
-
|
|
118
|
-
console.warn(`[blueprint-matcher] installedBlueprints.ensureCached threw — ignoring: ${err instanceof Error ? err.message : String(err)}`);
|
|
133
|
+
started = Promise.reject(err);
|
|
119
134
|
}
|
|
135
|
+
ensured = started.catch((err) => {
|
|
136
|
+
console.warn(`[blueprint-matcher] installedBlueprints.ensureCached threw — ignoring: ${err instanceof Error ? err.message : String(err)}`);
|
|
137
|
+
});
|
|
120
138
|
}
|
|
121
|
-
// ─── Strategy: exact-key fast-path (agent supplied a contract) ─────
|
|
122
|
-
//
|
|
123
|
-
// Canonical-key equality lookup — free, deterministic. Hit ⇒
|
|
124
|
-
// guaranteed reuse, return immediately (no LLM). Miss ⇒ FALL THROUGH
|
|
125
|
-
// to the semantic strategy below.
|
|
126
|
-
//
|
|
127
|
-
// A fuzzy match to a contract-bearing request is served PROACTIVELY —
|
|
128
|
-
// proposing a similar cached UI is the whole point of the cache. Two
|
|
129
|
-
// safety properties keep that safe + honest:
|
|
130
|
-
// 1. ATOMIC reuse — the caller commits the cached blueprint's OWN
|
|
131
|
-
// contract + componentCode together, never the request's contract
|
|
132
|
-
// under cached code, so wiring is always internally coherent.
|
|
133
|
-
// 2. INFORMATIONAL coverage — `coverageGap(candidate, request)` is
|
|
134
|
-
// attached to every semantic hit (below). A non-empty gap (the
|
|
135
|
-
// cached UI lacks a surface the request declares — e.g. the
|
|
136
|
-
// 2026-05-09 missing-minus case) is NOT dropped; it is reported on
|
|
137
|
-
// `hit.coverage` so the decision layer surfaces `COVERAGE_GAP` warn
|
|
138
|
-
// findings and the agent can OVERRIDE. Agent override is the safety
|
|
139
|
-
// valve, not a hard drop: the cache proposes; the agent disposes.
|
|
140
139
|
if (query.contract !== undefined) {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
reason,
|
|
153
|
-
candidates: [],
|
|
154
|
-
winningBlueprintId: exact.id,
|
|
155
|
-
});
|
|
156
|
-
return {
|
|
157
|
-
strategy: 'exact-key',
|
|
158
|
-
blueprint: exact,
|
|
159
|
-
cosine: 1,
|
|
160
|
-
reason,
|
|
161
|
-
coverage: EMPTY_GAP,
|
|
162
|
-
};
|
|
140
|
+
const lookupExact = async () => {
|
|
141
|
+
try {
|
|
142
|
+
return await findBlueprintExact({
|
|
143
|
+
vectorStore: deps.registry.vectorStore,
|
|
144
|
+
index: deps.registry.index,
|
|
145
|
+
}, scope, kind, expectedKey, variantKey(query.variance));
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
149
|
+
console.warn(`[blueprint-matcher] exact-key lookup failed: ${msg}`);
|
|
150
|
+
return null;
|
|
163
151
|
}
|
|
152
|
+
};
|
|
153
|
+
const serveExact = (exact) => {
|
|
154
|
+
const reason = 'match-exact: this contract already has a saved interface — reusing it';
|
|
155
|
+
emit({
|
|
156
|
+
decision: 'match-exact',
|
|
157
|
+
strategy: 'exact-key',
|
|
158
|
+
reason,
|
|
159
|
+
candidates: [],
|
|
160
|
+
winningBlueprintId: exact.id,
|
|
161
|
+
});
|
|
162
|
+
return {
|
|
163
|
+
strategy: 'exact-key',
|
|
164
|
+
blueprint: exact,
|
|
165
|
+
cosine: 1,
|
|
166
|
+
reason,
|
|
167
|
+
coverage: EMPTY_GAP,
|
|
168
|
+
};
|
|
169
|
+
};
|
|
170
|
+
// ─── Strategy: exact-key fast-path (agent supplied a contract) ─────
|
|
171
|
+
const early = await lookupExact();
|
|
172
|
+
if (early !== null && early.installed !== true) {
|
|
173
|
+
const id = early.id;
|
|
174
|
+
void ensured.then(() => bumpHitBestEffort(deps.registry, scope, id));
|
|
175
|
+
return serveExact(early);
|
|
164
176
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
console.warn(`[blueprint-matcher] exact-key lookup failed: ${msg}`);
|
|
177
|
+
await ensured;
|
|
178
|
+
const settled = await lookupExact();
|
|
179
|
+
if (settled !== null) {
|
|
180
|
+
bumpHitBestEffort(deps.registry, scope, settled.id);
|
|
181
|
+
return serveExact(settled);
|
|
171
182
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
await ensured;
|
|
175
186
|
}
|
|
176
187
|
if (options.disableSemantic === true) {
|
|
177
188
|
// Exact-only reuse policy (ggui#607): the semantic tier is
|
|
@@ -226,9 +237,9 @@ export async function matchBlueprint(deps, scope, query, options = {}) {
|
|
|
226
237
|
});
|
|
227
238
|
return { strategy: 'no-match', reason, candidates };
|
|
228
239
|
}
|
|
229
|
-
if (
|
|
240
|
+
if (rerank === undefined) {
|
|
230
241
|
const reason = 'match-skip-no-llm: semantic matching unavailable — a new interface will be generated';
|
|
231
|
-
const traceReason = `match-skip-no-llm: ${candidates.length} candidates available but no
|
|
242
|
+
const traceReason = `match-skip-no-llm: ${candidates.length} candidates available but no judge wired (neither a rerank pair nor an LLMCaller) — falling through to cold generation`;
|
|
232
243
|
emit({
|
|
233
244
|
decision: 'match-skip-no-llm',
|
|
234
245
|
strategy: 'semantic',
|
|
@@ -266,7 +277,7 @@ export async function matchBlueprint(deps, scope, query, options = {}) {
|
|
|
266
277
|
return { strategy: 'no-match', reason, candidates };
|
|
267
278
|
}
|
|
268
279
|
// Run the LLM rerank judge.
|
|
269
|
-
const decision = await
|
|
280
|
+
const decision = await rerank.judge({
|
|
270
281
|
intent: trimmedIntent,
|
|
271
282
|
contractSummary: summarizeContract(query.contract),
|
|
272
283
|
}, eligible.map((c) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blueprint-registry.d.ts","sourceRoot":"","sources":["../../src/renders/blueprint-registry.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"blueprint-registry.d.ts","sourceRoot":"","sources":["../../src/renders/blueprint-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -159,6 +159,20 @@ function warnDroppedRow(id, reason) {
|
|
|
159
159
|
console.warn(`[ggui] blueprint registry: dropped row ${id} — ${reason} ` +
|
|
160
160
|
'(legacy rows are invalidated, not migrated; the cache regenerates on next use)');
|
|
161
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* Eviction fallbacks already warned this process, by reason. A fallback is
|
|
164
|
+
* not an error (the cap is a soft ceiling), but a silent one hid that every
|
|
165
|
+
* registration was paying a whole-scope walk (ggui#1371). One line per
|
|
166
|
+
* process per reason makes it visible without flooding the log.
|
|
167
|
+
*/
|
|
168
|
+
const warnedEvictionFallbacks = new Set();
|
|
169
|
+
function warnEvictionFallback(event, consequence, err) {
|
|
170
|
+
if (warnedEvictionFallbacks.has(event))
|
|
171
|
+
return;
|
|
172
|
+
warnedEvictionFallbacks.add(event);
|
|
173
|
+
// eslint-disable-next-line no-console -- operator-visible degradation notice
|
|
174
|
+
console.warn(`[ggui] blueprint registry: ${event} — ${consequence}: ${err instanceof Error ? err.message : String(err)} (logged once per process)`);
|
|
175
|
+
}
|
|
162
176
|
function readScalarString(value) {
|
|
163
177
|
return typeof value === 'string' ? value : undefined;
|
|
164
178
|
}
|
|
@@ -444,8 +458,10 @@ async function maybeEvictLowestHitBlueprint(deps, scope, kind, cap) {
|
|
|
444
458
|
if (count < cap)
|
|
445
459
|
return;
|
|
446
460
|
}
|
|
447
|
-
catch {
|
|
448
|
-
// Fall through to the enumeration below
|
|
461
|
+
catch (err) {
|
|
462
|
+
// Fall through to the enumeration below: counting is an optimization,
|
|
463
|
+
// so the walk still runs; the warn makes its cost visible.
|
|
464
|
+
warnEvictionFallback('blueprint_evict_count_gate_failed', 'the cap count failed, so this registration walks the whole scope instead', err);
|
|
449
465
|
}
|
|
450
466
|
}
|
|
451
467
|
let bucket;
|
|
@@ -458,7 +474,8 @@ async function maybeEvictLowestHitBlueprint(deps, scope, kind, cap) {
|
|
|
458
474
|
return k === kind;
|
|
459
475
|
});
|
|
460
476
|
}
|
|
461
|
-
catch {
|
|
477
|
+
catch (err) {
|
|
478
|
+
warnEvictionFallback('blueprint_evict_enumeration_failed', 'the scope enumeration failed, so eviction is skipped and the bucket may exceed its cap', err);
|
|
462
479
|
return;
|
|
463
480
|
}
|
|
464
481
|
if (bucket.length < cap)
|
|
@@ -79,6 +79,14 @@ declare const outputSchema: {
|
|
|
79
79
|
timeZone: z.ZodOptional<z.ZodString>;
|
|
80
80
|
}, z.core.$strip>>;
|
|
81
81
|
}, z.core.$strip>>;
|
|
82
|
+
nextStep: z.ZodOptional<z.ZodObject<{
|
|
83
|
+
tool: z.ZodLiteral<"ggui_amend">;
|
|
84
|
+
description: z.ZodString;
|
|
85
|
+
example: z.ZodString;
|
|
86
|
+
args: z.ZodObject<{
|
|
87
|
+
sessionId: z.ZodString;
|
|
88
|
+
}, z.core.$strip>;
|
|
89
|
+
}, z.core.$strip>>;
|
|
82
90
|
};
|
|
83
91
|
/** The wire shape — derived from the registered fields (#817). */
|
|
84
92
|
export type ConsumeOutput = ShapeOutput<typeof outputSchema>;
|
|
@@ -229,6 +237,14 @@ export declare function createGguiConsumeHandler(deps: GguiConsumeHandlerDeps):
|
|
|
229
237
|
timeZone: z.ZodOptional<z.ZodString>;
|
|
230
238
|
}, z.core.$strip>>;
|
|
231
239
|
}, z.core.$strip>>;
|
|
240
|
+
nextStep: z.ZodOptional<z.ZodObject<{
|
|
241
|
+
tool: z.ZodLiteral<"ggui_amend">;
|
|
242
|
+
description: z.ZodString;
|
|
243
|
+
example: z.ZodString;
|
|
244
|
+
args: z.ZodObject<{
|
|
245
|
+
sessionId: z.ZodString;
|
|
246
|
+
}, z.core.$strip>;
|
|
247
|
+
}, z.core.$strip>>;
|
|
232
248
|
}, {
|
|
233
249
|
events: {
|
|
234
250
|
type: "action";
|
|
@@ -259,6 +275,14 @@ export declare function createGguiConsumeHandler(deps: GguiConsumeHandlerDeps):
|
|
|
259
275
|
timeZone?: string | undefined;
|
|
260
276
|
} | undefined;
|
|
261
277
|
} | undefined;
|
|
278
|
+
nextStep?: {
|
|
279
|
+
tool: "ggui_amend";
|
|
280
|
+
description: string;
|
|
281
|
+
example: string;
|
|
282
|
+
args: {
|
|
283
|
+
sessionId: string;
|
|
284
|
+
};
|
|
285
|
+
} | undefined;
|
|
262
286
|
} | HandlerFailure<{
|
|
263
287
|
events: {
|
|
264
288
|
type: "action";
|
|
@@ -289,6 +313,14 @@ export declare function createGguiConsumeHandler(deps: GguiConsumeHandlerDeps):
|
|
|
289
313
|
timeZone?: string | undefined;
|
|
290
314
|
} | undefined;
|
|
291
315
|
} | undefined;
|
|
316
|
+
nextStep?: {
|
|
317
|
+
tool: "ggui_amend";
|
|
318
|
+
description: string;
|
|
319
|
+
example: string;
|
|
320
|
+
args: {
|
|
321
|
+
sessionId: string;
|
|
322
|
+
};
|
|
323
|
+
} | undefined;
|
|
292
324
|
}>>;
|
|
293
325
|
export {};
|
|
294
326
|
//# sourceMappingURL=consume.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consume.d.ts","sourceRoot":"","sources":["../../src/renders/consume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,OAAO,EACL,KAAK,sBAAsB,EAE3B,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EAEtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAuBrB,QAAA,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"consume.d.ts","sourceRoot":"","sources":["../../src/renders/consume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,OAAO,EACL,KAAK,sBAAsB,EAE3B,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EAEtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAuBrB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAgC,CAAC;AACnD,kEAAkE;AAClE,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,YAAY,CAAC,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,IAAI,EAAE;QACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvC,QAAQ,CAAC,MAAM,EAAE;YACf,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;YAC5B,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;YAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;SACzB,CAAC;KACH,GAAG,IAAI,CAAC;CACV;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,IAAI,EAAE;QACjB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,GAAG,IAAI,CAAC;CACV;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC5D;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IACpD,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACvC;;sDAEkD;IAClD,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAC1C,wDAAwD;IACxD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAC7C;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAChC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IACzD;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,EAAE,oBAAoB,CAAC;CAC3E;AAYD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyNpE"}
|
|
@@ -32,6 +32,9 @@
|
|
|
32
32
|
* LLM loop, guaranteeing a contract the handshake backstop accepts.
|
|
33
33
|
* No LLM available ⇒ a deterministic no-repair create fallback.
|
|
34
34
|
*
|
|
35
|
+
* `forceCreate` on the input skips steps 1 and 2 outright: a caller that
|
|
36
|
+
* asked for a fresh build is never handed a cache suggestion.
|
|
37
|
+
*
|
|
35
38
|
* ## Failure posture
|
|
36
39
|
*
|
|
37
40
|
* Operational errors (registry hiccup, provider 5xx, pre-match backend
|
|
@@ -71,9 +74,10 @@ export interface BlueprintPool {
|
|
|
71
74
|
readonly scope?: string;
|
|
72
75
|
/**
|
|
73
76
|
* Optional marketplace-install bridge wired into THIS pool's store.
|
|
74
|
-
* The matcher
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
+
* The matcher starts `ensureCached(scope)` and reads the exact key while
|
|
78
|
+
* it runs; only a hit the walk can never evict is served before it settles
|
|
79
|
+
* (ggui#1370). Installed blueprints lazily compile + populate the same
|
|
80
|
+
* store the matcher reads. Naturally per-pool — it populates one scope.
|
|
77
81
|
*/
|
|
78
82
|
readonly installedBlueprints?: InstalledBlueprintsProvider;
|
|
79
83
|
/** Optional human label for warn/trace lines. */
|
|
@@ -189,7 +193,9 @@ export declare function buildCacheReuseResult(blueprint: {
|
|
|
189
193
|
* `matchedBlueprint.cosine` so the paired render reports it on the
|
|
190
194
|
* wire's `cacheHit.similarity` (ggui#564).
|
|
191
195
|
*/
|
|
192
|
-
matchCosine: number
|
|
196
|
+
matchCosine: number,
|
|
197
|
+
/** The find-similar tier that hit (ggui#1343). */
|
|
198
|
+
kind: 'match-exact' | 'match-semantic'): HandshakeNegotiatorResult;
|
|
193
199
|
/**
|
|
194
200
|
* Deterministic no-LLM create fallback (no LLM resolved, or an
|
|
195
201
|
* operational error during synth). The handshake backstop
|
|
@@ -200,7 +206,9 @@ matchCosine: number): HandshakeNegotiatorResult;
|
|
|
200
206
|
* return a raw malformed draft into the throwing backstop. A clean
|
|
201
207
|
* draft is kept verbatim (`origin: 'agent'`).
|
|
202
208
|
*/
|
|
203
|
-
export declare function buildCreateFallback(draftContract: unknown, reason: string,
|
|
209
|
+
export declare function buildCreateFallback(draftContract: unknown, reason: string,
|
|
210
|
+
/** WHY no repair ran (ggui#1343): the bounded kind beside `reason`. */
|
|
211
|
+
kind: 'no-creds' | 'negotiator-degraded', requestVariance?: BlueprintVariance): HandshakeNegotiatorResult;
|
|
204
212
|
/**
|
|
205
213
|
* Decide a handshake — the shared core. See the module docstring for the
|
|
206
214
|
* decision spine. Pure orchestration over the injected adapter; never
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decide-handshake.d.ts","sourceRoot":"","sources":["../../src/renders/decide-handshake.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"decide-handshake.d.ts","sourceRoot":"","sources":["../../src/renders/decide-handshake.ts"],"names":[],"mappings":"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"}
|