@ggui-ai/mcp-server-handlers 0.23.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/renders/blueprint-matcher.d.ts +23 -5
- package/dist/renders/blueprint-matcher.d.ts.map +1 -1
- package/dist/renders/blueprint-matcher.js +75 -71
- 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 +2 -2
- package/dist/renders/index.d.ts.map +1 -1
- 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/render.d.ts +24 -0
- package/dist/renders/render.d.ts.map +1 -1
- package/dist/renders/render.js +10 -0
- 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/submit-action.d.ts +15 -1
- package/dist/renders/submit-action.d.ts.map +1 -1
- package/dist/renders/submit-action.js +12 -1
- package/package.json +8 -8
|
@@ -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
|
|
@@ -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,4 +1,4 @@
|
|
|
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';
|
|
@@ -53,7 +53,13 @@ export async function matchBlueprint(deps, scope, query, options = {}) {
|
|
|
53
53
|
const kind = options.kind ?? 'template';
|
|
54
54
|
const topK = options.topK ?? DEFAULT_TOP_K;
|
|
55
55
|
const minCosine = options.minCosineForRerank ?? DEFAULT_MIN_COSINE;
|
|
56
|
-
|
|
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;
|
|
57
63
|
const trimmedIntent = query.intent.trim();
|
|
58
64
|
const startedAt = Date.now();
|
|
59
65
|
const expectedKey = query.contract !== undefined ? blueprintKey(query.contract) : '';
|
|
@@ -103,82 +109,80 @@ export async function matchBlueprint(deps, scope, query, options = {}) {
|
|
|
103
109
|
emit({ decision: 'no-match-empty-intent', reason, candidates: [] });
|
|
104
110
|
return { strategy: 'no-match', reason, candidates: [] };
|
|
105
111
|
}
|
|
106
|
-
//
|
|
107
|
-
//
|
|
108
|
-
//
|
|
109
|
-
//
|
|
110
|
-
//
|
|
111
|
-
//
|
|
112
|
-
//
|
|
113
|
-
//
|
|
114
|
-
//
|
|
115
|
-
//
|
|
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();
|
|
116
126
|
if (deps.installedBlueprints) {
|
|
127
|
+
const ensureArg = query.contract !== undefined ? { contractKey: expectedKey } : undefined;
|
|
128
|
+
let started;
|
|
117
129
|
try {
|
|
118
|
-
|
|
119
|
-
? { contractKey: expectedKey }
|
|
120
|
-
: undefined;
|
|
121
|
-
await deps.installedBlueprints.ensureCached(scope, ensureArg);
|
|
130
|
+
started = Promise.resolve(deps.installedBlueprints.ensureCached(scope, ensureArg));
|
|
122
131
|
}
|
|
123
132
|
catch (err) {
|
|
124
|
-
|
|
125
|
-
console.warn(`[blueprint-matcher] installedBlueprints.ensureCached threw — ignoring: ${err instanceof Error ? err.message : String(err)}`);
|
|
133
|
+
started = Promise.reject(err);
|
|
126
134
|
}
|
|
135
|
+
ensured = started.catch((err) => {
|
|
136
|
+
console.warn(`[blueprint-matcher] installedBlueprints.ensureCached threw — ignoring: ${err instanceof Error ? err.message : String(err)}`);
|
|
137
|
+
});
|
|
127
138
|
}
|
|
128
|
-
// ─── Strategy: exact-key fast-path (agent supplied a contract) ─────
|
|
129
|
-
//
|
|
130
|
-
// Canonical-key equality lookup — free, deterministic. Hit ⇒
|
|
131
|
-
// guaranteed reuse, return immediately (no LLM). Miss ⇒ FALL THROUGH
|
|
132
|
-
// to the semantic strategy below.
|
|
133
|
-
//
|
|
134
|
-
// A fuzzy match to a contract-bearing request is served PROACTIVELY —
|
|
135
|
-
// proposing a similar cached UI is the whole point of the cache. Two
|
|
136
|
-
// safety properties keep that safe + honest:
|
|
137
|
-
// 1. ATOMIC reuse — the caller commits the cached blueprint's OWN
|
|
138
|
-
// contract + componentCode together, never the request's contract
|
|
139
|
-
// under cached code, so wiring is always internally coherent.
|
|
140
|
-
// 2. INFORMATIONAL coverage — `coverageGap(candidate, request)` is
|
|
141
|
-
// attached to every semantic hit (below). A non-empty gap (the
|
|
142
|
-
// cached UI lacks a surface the request declares — e.g. the
|
|
143
|
-
// 2026-05-09 missing-minus case) is NOT dropped; it is reported on
|
|
144
|
-
// `hit.coverage` so the decision layer surfaces `COVERAGE_GAP` warn
|
|
145
|
-
// findings and the agent can OVERRIDE. Agent override is the safety
|
|
146
|
-
// valve, not a hard drop: the cache proposes; the agent disposes.
|
|
147
139
|
if (query.contract !== undefined) {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
reason,
|
|
160
|
-
candidates: [],
|
|
161
|
-
winningBlueprintId: exact.id,
|
|
162
|
-
});
|
|
163
|
-
return {
|
|
164
|
-
strategy: 'exact-key',
|
|
165
|
-
blueprint: exact,
|
|
166
|
-
cosine: 1,
|
|
167
|
-
reason,
|
|
168
|
-
coverage: EMPTY_GAP,
|
|
169
|
-
};
|
|
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;
|
|
170
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);
|
|
171
176
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
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);
|
|
178
182
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
await ensured;
|
|
182
186
|
}
|
|
183
187
|
if (options.disableSemantic === true) {
|
|
184
188
|
// Exact-only reuse policy (ggui#607): the semantic tier is
|
|
@@ -233,9 +237,9 @@ export async function matchBlueprint(deps, scope, query, options = {}) {
|
|
|
233
237
|
});
|
|
234
238
|
return { strategy: 'no-match', reason, candidates };
|
|
235
239
|
}
|
|
236
|
-
if (
|
|
240
|
+
if (rerank === undefined) {
|
|
237
241
|
const reason = 'match-skip-no-llm: semantic matching unavailable — a new interface will be generated';
|
|
238
|
-
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`;
|
|
239
243
|
emit({
|
|
240
244
|
decision: 'match-skip-no-llm',
|
|
241
245
|
strategy: 'semantic',
|
|
@@ -273,7 +277,7 @@ export async function matchBlueprint(deps, scope, query, options = {}) {
|
|
|
273
277
|
return { strategy: 'no-match', reason, candidates };
|
|
274
278
|
}
|
|
275
279
|
// Run the LLM rerank judge.
|
|
276
|
-
const decision = await
|
|
280
|
+
const decision = await rerank.judge({
|
|
277
281
|
intent: trimmedIntent,
|
|
278
282
|
contractSummary: summarizeContract(query.contract),
|
|
279
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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAGH,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAGlB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAGL,KAAK,oBAAoB,EAE1B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErE,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEtF,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAC;AAEzC;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IACzC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,2BAA2B,CAAC;IAC3D,iDAAiD;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,gHAAgH;AAChH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACvC;;;;;;;OAOG;IACH,UAAU,CACR,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1D;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAE1C;;;;;;;;;OASG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CACnB,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,MAAM,GAAG,YAAY,CAAC;IAC5D;;;;;OAKG;IACH,QAAQ,CAAC,CAAC,KAAK,EAAE;QACf,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;QAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;KAC9B,GACG,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC,GAC9C,yBAAyB,GACzB,SAAS,CAAC;IACd;;;;;OAKG;IACH,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;;;;;OAQG;IACH,gBAAgB,CAAC,CAAC,KAAK,EAAE;QACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;QACtC;;;;;;;WAOG;QACH,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;KACtC,GAAG,IAAI,CAAC;IACT;;iDAE6C;IAC7C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAC7B,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,GAAG,mBAAmB,GAAG,SAAS,CAAC;CACjF;AAED,0FAA0F;AAC1F,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AA8HhF;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE;IACT,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC,EACD,MAAM,EAAE,MAAM;AACd;;;;;GAKG;AACH,WAAW,EAAE,MAAM;AACnB,kDAAkD;AAClD,IAAI,EAAE,aAAa,GAAG,gBAAgB,GACrC,yBAAyB,CA0C3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM;AACd,uEAAuE;AACvE,IAAI,EAAE,UAAU,GAAG,qBAAqB,EACxC,eAAe,CAAC,EAAE,iBAAiB,GAClC,yBAAyB,CAoC3B;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,yBAAyB,CAAC,CA6TpC"}
|
|
@@ -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
|
|
@@ -177,7 +180,9 @@ export function buildCacheReuseResult(blueprint, reason,
|
|
|
177
180
|
* `matchedBlueprint.cosine` so the paired render reports it on the
|
|
178
181
|
* wire's `cacheHit.similarity` (ggui#564).
|
|
179
182
|
*/
|
|
180
|
-
matchCosine
|
|
183
|
+
matchCosine,
|
|
184
|
+
/** The find-similar tier that hit (ggui#1343). */
|
|
185
|
+
kind) {
|
|
181
186
|
const codeHash = createHash('sha256')
|
|
182
187
|
.update(blueprint.componentCode)
|
|
183
188
|
.digest('hex');
|
|
@@ -208,6 +213,7 @@ matchCosine) {
|
|
|
208
213
|
return {
|
|
209
214
|
action: 'reuse',
|
|
210
215
|
reason,
|
|
216
|
+
reasonKind: kind,
|
|
211
217
|
suggestion,
|
|
212
218
|
effectiveContract: blueprint.contract,
|
|
213
219
|
// Matched-ref for the paired render's §6 point-read.
|
|
@@ -229,7 +235,9 @@ matchCosine) {
|
|
|
229
235
|
* return a raw malformed draft into the throwing backstop. A clean
|
|
230
236
|
* draft is kept verbatim (`origin: 'agent'`).
|
|
231
237
|
*/
|
|
232
|
-
export function buildCreateFallback(draftContract, reason,
|
|
238
|
+
export function buildCreateFallback(draftContract, reason,
|
|
239
|
+
/** WHY no repair ran (ggui#1343): the bounded kind beside `reason`. */
|
|
240
|
+
kind, requestVariance) {
|
|
233
241
|
const lint = lintContract(draftContract);
|
|
234
242
|
if (lint.errors.length === 0) {
|
|
235
243
|
// Clean draft: kept verbatim (origin agent), exactly as before.
|
|
@@ -252,6 +260,7 @@ export function buildCreateFallback(draftContract, reason, requestVariance) {
|
|
|
252
260
|
return {
|
|
253
261
|
action: 'create',
|
|
254
262
|
reason,
|
|
263
|
+
reasonKind: kind,
|
|
255
264
|
suggestion,
|
|
256
265
|
effectiveContract: contract,
|
|
257
266
|
};
|
|
@@ -261,6 +270,7 @@ export function buildCreateFallback(draftContract, reason, requestVariance) {
|
|
|
261
270
|
return buildSalvagedOrDeclined({
|
|
262
271
|
draftContract,
|
|
263
272
|
reason,
|
|
273
|
+
kind,
|
|
264
274
|
...(requestVariance !== undefined ? { variance: requestVariance } : {}),
|
|
265
275
|
});
|
|
266
276
|
}
|
|
@@ -271,6 +281,11 @@ export function buildCreateFallback(draftContract, reason, requestVariance) {
|
|
|
271
281
|
*/
|
|
272
282
|
export async function decideHandshake(adapter, input) {
|
|
273
283
|
const { intent, blueprintDraft, gadgets, ctx } = input;
|
|
284
|
+
// The agent asked for a fresh build (typically after an unwanted cache
|
|
285
|
+
// suggestion): no tier that can propose the cache runs — neither the
|
|
286
|
+
// deployment pre-match nor find-similar — and the decision goes straight
|
|
287
|
+
// to validate/repair + create, matching the render path's force-create.
|
|
288
|
+
const forceCreate = input.forceCreate === true;
|
|
274
289
|
// The agent's draft contract (untrusted). Reassigned in place to the
|
|
275
290
|
// canonicalized contract by the Slice-2 step below so the create / repair
|
|
276
291
|
// path (ensureConformingContract + buildCreateFallback) hashes the same
|
|
@@ -345,7 +360,7 @@ export async function decideHandshake(adapter, input) {
|
|
|
345
360
|
}
|
|
346
361
|
// Tier 0 — deployment-specific pre-match (e.g. a curated catalog).
|
|
347
362
|
// Runs first so a curated / byte-exact hit wins over find-similar.
|
|
348
|
-
if (adapter.preMatch) {
|
|
363
|
+
if (!forceCreate && adapter.preMatch) {
|
|
349
364
|
const declaredAgentTools = parsedDraft.success
|
|
350
365
|
? Object.keys(parsedDraft.data.agentCapabilities?.tools ?? {})
|
|
351
366
|
: [];
|
|
@@ -364,13 +379,16 @@ export async function decideHandshake(adapter, input) {
|
|
|
364
379
|
// judge needs it at handshake time (parity with the render path), and
|
|
365
380
|
// the synth/repair create path reuses it.
|
|
366
381
|
const llm = await adapter.resolveLlm(ctx);
|
|
367
|
-
// ggui#607 — resolve the reuse policy once; 'exact-only' threads
|
|
368
|
-
// disableSemantic into every pool probe below.
|
|
369
|
-
const reuseMode = adapter.reuseMode ? await adapter.reuseMode(ctx) : 'full';
|
|
370
382
|
// Tier 1 — find-similar across pools (exact-key free + semantic
|
|
371
383
|
// find+judge). Reuse the cached blueprint ATOMICALLY; a coverage gap is
|
|
372
384
|
// informational (surfaced as COVERAGE_GAP warn findings, not a drop).
|
|
373
|
-
if (
|
|
385
|
+
if (!forceCreate &&
|
|
386
|
+
adapter.pools &&
|
|
387
|
+
adapter.pools.length > 0 &&
|
|
388
|
+
parsedDraft.success) {
|
|
389
|
+
// ggui#607 — resolve the reuse policy once; 'exact-only' threads
|
|
390
|
+
// disableSemantic into every pool probe below.
|
|
391
|
+
const reuseMode = adapter.reuseMode ? await adapter.reuseMode(ctx) : 'full';
|
|
374
392
|
// The requesting agent's declared MCP tools (a set keyed by bare
|
|
375
393
|
// toolName) — the basis for the reuse fulfillability gate. A cached
|
|
376
394
|
// blueprint is only proposed for reuse when these SUPERSET the
|
|
@@ -437,7 +455,7 @@ export async function decideHandshake(adapter, input) {
|
|
|
437
455
|
return buildCacheReuseResult(matchResult.blueprint, matchResult.reason,
|
|
438
456
|
// Exact-key = canonical-contract identity — cosine 1 by
|
|
439
457
|
// definition (the matcher hard-sets it; no retrieval ran).
|
|
440
|
-
1);
|
|
458
|
+
1, 'match-exact');
|
|
441
459
|
}
|
|
442
460
|
if (matchResult.strategy === 'semantic' &&
|
|
443
461
|
isFulfillable(matchResult.blueprint.contract, agentCaps).ok) {
|
|
@@ -464,7 +482,7 @@ export async function decideHandshake(adapter, input) {
|
|
|
464
482
|
return aGap ? b : a; // empty-gap wins
|
|
465
483
|
return (b.judgeConfidence ?? 0) > (a.judgeConfidence ?? 0) ? b : a;
|
|
466
484
|
});
|
|
467
|
-
const reuse = buildCacheReuseResult(best.blueprint, best.reason, best.cosine);
|
|
485
|
+
const reuse = buildCacheReuseResult(best.blueprint, best.reason, best.cosine, 'match-semantic');
|
|
468
486
|
// A gapped reuse carries COVERAGE_GAP warn findings so the agent sees
|
|
469
487
|
// what the cached UI lacks before accepting; a variance-divergent
|
|
470
488
|
// reuse additionally carries a VARIANCE_GAP warn finding so the agent
|
|
@@ -491,7 +509,7 @@ export async function decideHandshake(adapter, input) {
|
|
|
491
509
|
}
|
|
492
510
|
// No LLM → deterministic no-repair create fallback.
|
|
493
511
|
if (!llm) {
|
|
494
|
-
return buildCreateFallback(draftContract, 'no-creds: no LLM available for the configured provider; ggui_render will surface the same error and the handshake stays a no-op create.', variance);
|
|
512
|
+
return buildCreateFallback(draftContract, 'no-creds: no LLM available for the configured provider; ggui_render will surface the same error and the handshake stays a no-op create.', 'no-creds', variance);
|
|
495
513
|
}
|
|
496
514
|
// Tier 2 — create. The agent's DRAFT is the basis:
|
|
497
515
|
// ensureConformingContract validates + repairs it in place (bounded LLM
|
|
@@ -534,6 +552,8 @@ export async function decideHandshake(adapter, input) {
|
|
|
534
552
|
return {
|
|
535
553
|
action: 'create',
|
|
536
554
|
reason: conforming.reasoning,
|
|
555
|
+
// The conforming METHOD is the create's bounded kind (ggui#1343).
|
|
556
|
+
reasonKind: conforming.method,
|
|
537
557
|
suggestion,
|
|
538
558
|
effectiveContract: conforming.contract,
|
|
539
559
|
};
|
|
@@ -542,6 +562,6 @@ export async function decideHandshake(adapter, input) {
|
|
|
542
562
|
if (!isOperationalError(err))
|
|
543
563
|
throw err;
|
|
544
564
|
const errorClass = err instanceof Error ? err.name : 'unknown';
|
|
545
|
-
return buildCreateFallback(draftContract, `negotiator-degraded: ${errorClass} during decision LLM call — ${errMessage(err)}. Falling back to bare-create; the paired ggui_render will still generate the UI.`, variance);
|
|
565
|
+
return buildCreateFallback(draftContract, `negotiator-degraded: ${errorClass} during decision LLM call — ${errMessage(err)}. Falling back to bare-create; the paired ggui_render will still generate the UI.`, 'negotiator-degraded', variance);
|
|
546
566
|
}
|
|
547
567
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type BlueprintVariance, type SuggestionFinding } from '@ggui-ai/protocol';
|
|
2
|
-
import type { HandshakeNegotiatorDeclined, HandshakeNegotiatorResult } from './handshake.js';
|
|
2
|
+
import type { HandshakeNegotiatorDeclined, HandshakeNegotiatorResult, HandshakeReasonKind } from './handshake.js';
|
|
3
3
|
/** ERROR findings from the deterministic gate, in the wire shape. */
|
|
4
4
|
export declare function errorFindingsOf(draftContract: unknown): SuggestionFinding[];
|
|
5
5
|
/**
|
|
@@ -22,6 +22,8 @@ export declare function buildDeclined(args: {
|
|
|
22
22
|
export declare function buildSalvagedOrDeclined(args: {
|
|
23
23
|
readonly draftContract: unknown;
|
|
24
24
|
readonly reason: string;
|
|
25
|
+
/** The bounded kind of `reason` — why no repair ran (ggui#1343). */
|
|
26
|
+
readonly kind: HandshakeReasonKind;
|
|
25
27
|
readonly variance?: BlueprintVariance;
|
|
26
28
|
}): HandshakeNegotiatorResult;
|
|
27
29
|
//# sourceMappingURL=handshake-fallbacks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handshake-fallbacks.d.ts","sourceRoot":"","sources":["../../src/renders/handshake-fallbacks.ts"],"names":[],"mappings":"AA0BA,OAAO,EAIL,KAAK,iBAAiB,EAGtB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EACV,2BAA2B,EAE3B,yBAAyB,
|
|
1
|
+
{"version":3,"file":"handshake-fallbacks.d.ts","sourceRoot":"","sources":["../../src/renders/handshake-fallbacks.ts"],"names":[],"mappings":"AA0BA,OAAO,EAIL,KAAK,iBAAiB,EAGtB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EACV,2BAA2B,EAE3B,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAExB,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,aAAa,EAAE,OAAO,GAAG,iBAAiB,EAAE,CAO3E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAChD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CACvC,GAAG,2BAA2B,CAwB9B;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CACvC,GAAG,yBAAyB,CAuC5B"}
|
|
@@ -229,6 +229,13 @@ export interface HandshakeNegotiatorDeclined {
|
|
|
229
229
|
export interface HandshakeNegotiatorDecision {
|
|
230
230
|
readonly action: 'create' | 'reuse' | 'update' | 'replace';
|
|
231
231
|
readonly reason: string;
|
|
232
|
+
/**
|
|
233
|
+
* The bounded kind of `reason` (see {@link HandshakeReasonKind}).
|
|
234
|
+
* Optional on the type because {@link HandshakeNegotiator} is a published
|
|
235
|
+
* interface a host may implement; every negotiator this package ships
|
|
236
|
+
* sets it, and telemetry reads an absent kind as `'unclassified'`.
|
|
237
|
+
*/
|
|
238
|
+
readonly reasonKind?: HandshakeReasonKind;
|
|
232
239
|
readonly suggestion: HandshakeSuggestion;
|
|
233
240
|
/**
|
|
234
241
|
* Effective contract the accept-path gen / cache-delivery runs
|
|
@@ -262,6 +269,23 @@ export interface HandshakeNegotiatorDecision {
|
|
|
262
269
|
}
|
|
263
270
|
/** What a negotiator answers: a decision to render against, or a decline. */
|
|
264
271
|
export type HandshakeNegotiatorResult = HandshakeNegotiatorDecision | HandshakeNegotiatorDeclined;
|
|
272
|
+
/**
|
|
273
|
+
* The bounded KIND of a decision's reason — derived where the reason is
|
|
274
|
+
* built, never parsed out of its text (ggui#1343). The `handshake.decided`
|
|
275
|
+
* telemetry line carries this kind plus a hash of the reason text, so the
|
|
276
|
+
* free text (which on a repair is the repair model's own sentence about the
|
|
277
|
+
* agent's draft, and on a reuse can name the contract's fields) never
|
|
278
|
+
* reaches a log.
|
|
279
|
+
*
|
|
280
|
+
* - `curated-prematch` — a deployment's pre-match tier hit;
|
|
281
|
+
* - `match-exact` / `match-semantic` — the find-similar tiers;
|
|
282
|
+
* - `verbatim` / `normalized` / `llm-repair` / `salvaged-subset` — a
|
|
283
|
+
* create, by how the draft was made to conform;
|
|
284
|
+
* - `no-creds` — a create with no LLM to repair with;
|
|
285
|
+
* - `negotiator-degraded` — a create after an operational failure;
|
|
286
|
+
* - `no-negotiator` — the default path when none is bound.
|
|
287
|
+
*/
|
|
288
|
+
export type HandshakeReasonKind = 'curated-prematch' | 'match-exact' | 'match-semantic' | 'verbatim' | 'normalized' | 'llm-repair' | 'salvaged-subset' | 'no-creds' | 'negotiator-degraded' | 'no-negotiator';
|
|
265
289
|
export interface GguiHandshakeHandlerDeps {
|
|
266
290
|
/**
|
|
267
291
|
* Persistence plane for handshake records. The OSS default wires
|
|
@@ -339,8 +363,11 @@ export interface GguiHandshakeHandlerDeps {
|
|
|
339
363
|
* - `origin` — `cache | agent | synth` from the suggestion
|
|
340
364
|
* - `action` — `'create' | 'reuse' | …` from the negotiator
|
|
341
365
|
* - `selectedBlueprintId` — the provisional id on the suggestion
|
|
342
|
-
* - `
|
|
343
|
-
*
|
|
366
|
+
* - `selectionReasonKind` — the decision's bounded reason kind
|
|
367
|
+
* (`'unclassified'` when unset)
|
|
368
|
+
* - `selectionReasonHash` — sha256 prefix of `blueprintMeta.selectedReason`
|
|
369
|
+
* / `suggestion.rationale`; the text itself
|
|
370
|
+
* never rides (ggui#1343)
|
|
344
371
|
* - `selectionConfidence` — surfaced when the negotiator's
|
|
345
372
|
* `selectVariant` ran AND the
|
|
346
373
|
* orchestration carried confidence
|
|
@@ -463,7 +490,14 @@ export interface HandshakeDecidedAttributes {
|
|
|
463
490
|
readonly action: 'create' | 'reuse' | 'update' | 'replace' | 'declined';
|
|
464
491
|
readonly origin: 'cache' | 'agent' | 'synth';
|
|
465
492
|
readonly selectedBlueprintId: string;
|
|
466
|
-
|
|
493
|
+
/**
|
|
494
|
+
* The bounded kind of the selection reason (ggui#1343), `'unclassified'`
|
|
495
|
+
* when the negotiator set none. The reason's TEXT is never on the line:
|
|
496
|
+
* `selectionReasonHash` is the first 16 hex chars of its sha256, enough
|
|
497
|
+
* to correlate rows that share a reason without carrying it.
|
|
498
|
+
*/
|
|
499
|
+
readonly selectionReasonKind: HandshakeReasonKind | 'unclassified';
|
|
500
|
+
readonly selectionReasonHash: string;
|
|
467
501
|
readonly selectionConfidence?: number;
|
|
468
502
|
/**
|
|
469
503
|
* The armed props-schema hash the record persists — same attribute
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handshake.d.ts","sourceRoot":"","sources":["../../src/renders/handshake.ts"],"names":[],"mappings":"AAsCA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAgBL,KAAK,SAAS,EACd,KAAK,cAAc,EAEnB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EAEf,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EAExB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D;;;;;;GAMG;AACH;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IACxE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,oBAAoB;IACpB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,wEAAwE;IACxE,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACzC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,iBAAiB,EAAE,YAAY,CAAC;IACzC;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B;;;;;;;;;;WAUG;QACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAClC;;8DAE0D;IAC1D,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC;oEACgE;IAChE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,KAAK,EAAE;QACZ,gEAAgE;QAChE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,mEAAmE;QACnE,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC;QACpC,uEAAuE;QACvE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAC/B,+DAA+D;QAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;QAC/C,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;KAC9B,GAAG,OAAO,CAAC,yBAAyB,CAAC,GAAG,yBAAyB,CAAC;IAEnE;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,aAAa,CAAC,CAAC,KAAK,EAAE;QACpB,gFAAgF;QAChF,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;QAC1C,6DAA6D;QAC7D,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;QAC1C,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;KAC9B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACvC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,+FAA+F;IAC/F,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACzC,iFAAiF;IACjF,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACzC;;;;;;;OAOG;IACH,QAAQ,CAAC,iBAAiB,EAAE,YAAY,CAAC;IACzC,oBAAoB;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IACxC,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC7C;;;;;;;;OAQG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,kFAAkF;QAClF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED,6EAA6E;AAC7E,MAAM,MAAM,yBAAyB,GAAG,2BAA2B,GAAG,2BAA2B,CAAC;AAElG,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC;;;;;;;OAOG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5C;;;OAGG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,kBAAkB,GAAG,SAAS,CAAC;IACnE;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACjD
|
|
1
|
+
{"version":3,"file":"handshake.d.ts","sourceRoot":"","sources":["../../src/renders/handshake.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
* The handler returns a single `suggestion` carrying `origin`
|
|
36
36
|
* (cache | agent | synth) plus an ALWAYS-PRESENT `blueprintMeta`.
|
|
37
37
|
*/
|
|
38
|
-
import { randomUUID } from 'node:crypto';
|
|
38
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
39
39
|
import { DomainError } from '@ggui-ai/protocol';
|
|
40
40
|
import { z } from 'zod';
|
|
41
41
|
import { isGeneratorRegistered } from './assert-generator.js';
|
|
@@ -359,6 +359,7 @@ export function createGguiHandshakeHandler(deps) {
|
|
|
359
359
|
appId: ctx.appId,
|
|
360
360
|
handshakeId,
|
|
361
361
|
record,
|
|
362
|
+
...(negotiated.reasonKind !== undefined ? { reasonKind: negotiated.reasonKind } : {}),
|
|
362
363
|
});
|
|
363
364
|
// Emit handshake_completed.
|
|
364
365
|
const lifecycleOutcome = negotiated.suggestion.origin === 'cache'
|
|
@@ -432,6 +433,7 @@ function buildDefaultAgentSuggestion(blueprintDraft) {
|
|
|
432
433
|
return buildSalvagedOrDeclined({
|
|
433
434
|
draftContract: blueprintDraft.contract,
|
|
434
435
|
reason: 'no-negotiator-bound: draft failed validation and no negotiator (LLM) is bound to repair it. Bind a HandshakeNegotiator to enable repair.',
|
|
436
|
+
kind: 'no-negotiator',
|
|
435
437
|
variance,
|
|
436
438
|
});
|
|
437
439
|
}
|
|
@@ -453,6 +455,7 @@ function buildDefaultAgentSuggestion(blueprintDraft) {
|
|
|
453
455
|
return {
|
|
454
456
|
action: 'create',
|
|
455
457
|
reason: suggestion.rationale,
|
|
458
|
+
reasonKind: 'no-negotiator',
|
|
456
459
|
suggestion,
|
|
457
460
|
effectiveContract: contract,
|
|
458
461
|
};
|
|
@@ -662,7 +665,9 @@ function emitHandshakeDecided(sink, args) {
|
|
|
662
665
|
handshakeId: args.handshakeId,
|
|
663
666
|
action: record.action,
|
|
664
667
|
origin: record.suggestion.origin,
|
|
665
|
-
|
|
668
|
+
// ggui#1343: the kind and a hash of the text — never the text.
|
|
669
|
+
selectionReasonKind: args.reasonKind ?? 'unclassified',
|
|
670
|
+
selectionReasonHash: createHash('sha256').update(reason).digest('hex').slice(0, 16),
|
|
666
671
|
// Provenance (cache origin only) — flattened through the shared
|
|
667
672
|
// codec so telemetry rows use the same key vocabulary as stores.
|
|
668
673
|
...(meta.source ? blueprintSourceToFlat(meta.source) : {}),
|
package/dist/renders/index.d.ts
CHANGED
|
@@ -70,10 +70,10 @@ export { createGguiAmendHandler, type GguiAmendHandlerDeps, } from "./amend.js";
|
|
|
70
70
|
export { mutationInputSchema, runPropsMutation, type PropsMutationResult, } from "./props-mutation-core.js";
|
|
71
71
|
export { matchBlueprint, type BlueprintMatchHit, type BlueprintMatchMiss, type BlueprintMatchResult, type MatchBlueprintDeps, type MatchBlueprintOptions, } from "./blueprint-matcher.js";
|
|
72
72
|
export { BlueprintRejectedError, composeEmbeddingInput, composeExactKey, deleteBlueprint, findBlueprintExact, findBlueprintsByEmbedding, listBlueprints, recordBlueprintHit, registerBlueprint, type Blueprint, type BlueprintCandidate, type BlueprintIndex, type BlueprintKind, type BlueprintRegistryDeps, type ContractValidator, type RegisterBlueprintInput, type BlueprintIntentSource, type RegisterBlueprintOptions, } from "./blueprint-registry.js";
|
|
73
|
-
export { consumeHandshakeRecord, createGguiHandshakeHandler, DEFAULT_GENERATOR_SLUG, HANDSHAKE_RECORD_TTL_SEC, HandshakeNotFoundError, handshakeRecordKey, peekHandshakeRecord, type GguiHandshakeHandlerDeps, type HandshakeNegotiator, type HandshakeNegotiatorResult, type HandshakeRecord, type HandshakeStoredInput, type HandshakeStoredTarget, } from "./handshake.js";
|
|
73
|
+
export { consumeHandshakeRecord, createGguiHandshakeHandler, DEFAULT_GENERATOR_SLUG, HANDSHAKE_RECORD_TTL_SEC, HandshakeNotFoundError, handshakeRecordKey, peekHandshakeRecord, type GguiHandshakeHandlerDeps, type HandshakeNegotiator, type HandshakeNegotiatorResult, type HandshakeReasonKind, type HandshakeRecord, type HandshakeStoredInput, type HandshakeStoredTarget, } from "./handshake.js";
|
|
74
74
|
export { buildCacheReuseResult, buildCreateFallback, decideHandshake, type BlueprintPool, type HandshakeDecideInput, type HandshakeDecisionAdapter, } from "./decide-handshake.js";
|
|
75
75
|
export { installToCache, installedBlueprintIntent, type InstallToCacheInput, } from "./install-to-cache.js";
|
|
76
|
-
export { createInstalledBlueprintsProvider, type CreateInstalledBlueprintsProviderOptions, type InstalledBlueprintCacheIssue, type CompileResult as InstalledBlueprintCompileResult, type InstalledBlueprintEntry, type InstalledBlueprintsProvider, } from "./installed-blueprints-provider.js";
|
|
76
|
+
export { createInstalledBlueprintsProvider, type CreateInstalledBlueprintsProviderOptions, type InstalledBlueprintCacheIssue, type CompileResult as InstalledBlueprintCompileResult, type InstalledBlueprintEntry, type InstalledBlueprintsProvider, type InstalledBlueprintsWalk, } from "./installed-blueprints-provider.js";
|
|
77
77
|
export { createInMemoryProvisionalPreviewRegistry, evaluateProvisionalPreviewGate, finalizeProvisionalPreview, kickoffProvisionalPreview, PreviewAbortError, PROVISIONAL_PREVIEW_CHANNEL, runProvisionalPreview, type ProvisionalPreviewConfig, type ProvisionalPreviewContext, type ProvisionalPreviewDeps, type ProvisionalPreviewEmit, type ProvisionalPreviewEmitter, type ProvisionalPreviewGate, type ProvisionalPreviewGateInput, type ProvisionalPreviewHandle, type ProvisionalPreviewOutcome, type ProvisionalPreviewRegistry, type ProvisionalPreviewRunContext, type ProvisionalPreviewSkipReason, } from "./provisional-preview.js";
|
|
78
78
|
export { assembleRenderSliceBase, deriveBundleOrigins, deriveContextSlots, deriveContractBundle, derivePropsJson, derivePublicEnvProjection, deriveRenderMeta, spreadRenderMetaViewOntoSlice, rewritePrivateBundleUrls, wsOriginToHttpOrigin, PRIVATE_BUNDLE_PREFIX, resolveGadgetUrls, resolveSliceTheme, type RenderMetaView, type RenderSliceBase, type RenderSliceMetaDeps, type SliceTheme, type SliceThemeDeps, } from "./slice-meta-derivation.js";
|
|
79
79
|
export type { SeedPoolSource } from "./seed-pool-source.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renders/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renders/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,7 +45,7 @@ export interface InstalledBlueprintEntry {
|
|
|
45
45
|
export interface InstalledBlueprintCacheIssue {
|
|
46
46
|
readonly id: string;
|
|
47
47
|
readonly manifestPath: string;
|
|
48
|
-
readonly kind: 'compile-failed' | 'register-failed' | 'compile-threw' | 'stale-row-evicted';
|
|
48
|
+
readonly kind: 'compile-failed' | 'register-failed' | 'compile-threw' | 'stale-row-evicted' | 'walk-report-threw';
|
|
49
49
|
readonly message: string;
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
@@ -64,6 +64,20 @@ export type CompileResult = {
|
|
|
64
64
|
kind: 'failure';
|
|
65
65
|
errors: readonly string[];
|
|
66
66
|
};
|
|
67
|
+
/**
|
|
68
|
+
* What one completed walk did (ggui#1370). `listedRows` is how many rows
|
|
69
|
+
* the enumeration returned for the scope — NOT a completeness receipt: an
|
|
70
|
+
* adapter that returns a partial listing on a failed page reports the
|
|
71
|
+
* partial count. `evicted` counts the local unbinds and the orphan
|
|
72
|
+
* evictions the two sweeps performed.
|
|
73
|
+
*/
|
|
74
|
+
export interface InstalledBlueprintsWalk {
|
|
75
|
+
readonly scope: string;
|
|
76
|
+
readonly entries: number;
|
|
77
|
+
readonly evicted: number;
|
|
78
|
+
readonly listedRows: number;
|
|
79
|
+
readonly sweepMs: number;
|
|
80
|
+
}
|
|
67
81
|
export interface CreateInstalledBlueprintsProviderOptions {
|
|
68
82
|
/**
|
|
69
83
|
* Yields the currently-discovered installed blueprints for the
|
|
@@ -93,6 +107,14 @@ export interface CreateInstalledBlueprintsProviderOptions {
|
|
|
93
107
|
* only signal that an entry didn't land.
|
|
94
108
|
*/
|
|
95
109
|
readonly onIssue?: (issue: InstalledBlueprintCacheIssue) => void;
|
|
110
|
+
/**
|
|
111
|
+
* Called once per walk (ggui#1370), including a walk that threw part
|
|
112
|
+
* way, whose counts are then partial — so the walk's cost is visible
|
|
113
|
+
* wherever this provider runs; a server typically logs it.
|
|
114
|
+
* Runs inside its own try/catch: a throwing reporter is surfaced through
|
|
115
|
+
* `onIssue` (`walk-report-threw`) and never poisons the scope's state.
|
|
116
|
+
*/
|
|
117
|
+
readonly onWalk?: (walk: InstalledBlueprintsWalk) => void;
|
|
96
118
|
/**
|
|
97
119
|
* Per-entry compile timeout in milliseconds. esbuild is generally
|
|
98
120
|
* bounded but a pathological source (or a hung native binary)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installed-blueprints-provider.d.ts","sourceRoot":"","sources":["../../src/renders/installed-blueprints-provider.ts"],"names":[],"mappings":"AAiEA,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAKL,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AAkCjC;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACnD;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC;CAC7D;AAED;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EACT,gBAAgB,GAChB,iBAAiB,GACjB,eAAe,GACf,mBAAmB,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAEnD,MAAM,WAAW,wCAAwC;IACvD;;;;;;;;OAQG;IACH,QAAQ,CAAC,mBAAmB,EAAE,CAC5B,KAAK,EAAE,MAAM,KACV,OAAO,CAAC,SAAS,uBAAuB,EAAE,CAAC,GAAG,SAAS,uBAAuB,EAAE,CAAC;IACtF;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7E;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,IAAI,CAAC;IACjE;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E;;;;;;;;;;OAUG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;CACtC;AA6BD;;;;GAIG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,wCAAwC,GAChD,2BAA2B,
|
|
1
|
+
{"version":3,"file":"installed-blueprints-provider.d.ts","sourceRoot":"","sources":["../../src/renders/installed-blueprints-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -135,6 +135,32 @@ export function createInstalledBlueprintsProvider(options) {
|
|
|
135
135
|
// design: each instance cleans the index it writes to.
|
|
136
136
|
const registeredBindings = new Map();
|
|
137
137
|
async function walkScope(scope, entries) {
|
|
138
|
+
const startedAt = Date.now();
|
|
139
|
+
const tally = { evicted: 0, listedRows: 0 };
|
|
140
|
+
try {
|
|
141
|
+
await walkScopeInner(scope, entries, tally);
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
try {
|
|
145
|
+
options.onWalk?.({
|
|
146
|
+
scope,
|
|
147
|
+
entries: entries.length,
|
|
148
|
+
evicted: tally.evicted,
|
|
149
|
+
listedRows: tally.listedRows,
|
|
150
|
+
sweepMs: Date.now() - startedAt,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
options.onIssue?.({
|
|
155
|
+
id: '<walk-report>',
|
|
156
|
+
manifestPath: scope,
|
|
157
|
+
kind: 'walk-report-threw',
|
|
158
|
+
message: `onWalk threw: ${err instanceof Error ? err.message : String(err)}`,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
async function walkScopeInner(scope, entries, tally) {
|
|
138
164
|
const compileTimeoutMs = options.compileTimeoutMs ?? DEFAULT_COMPILE_TIMEOUT_MS;
|
|
139
165
|
for (const entry of entries) {
|
|
140
166
|
let compileResult;
|
|
@@ -178,15 +204,23 @@ export function createInstalledBlueprintsProvider(options) {
|
|
|
178
204
|
intent: entry.intent,
|
|
179
205
|
...(entry.intentSource !== undefined ? { intentSource: entry.intentSource } : {}),
|
|
180
206
|
});
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
207
|
+
// Record a local binding only for a row this bridge OWNS
|
|
208
|
+
// (`installed: true`). A dedup onto a non-bridge row at the same
|
|
209
|
+
// key — a cold-gen mint that got there first — must not be bound:
|
|
210
|
+
// the local sweep above unbinds by remembered key on uninstall and
|
|
211
|
+
// would otherwise delete a row the orphan sweep's own contract
|
|
212
|
+
// leaves alone (ggui#1370).
|
|
213
|
+
if (registered.installed === true) {
|
|
214
|
+
let bucket = registeredBindings.get(scope);
|
|
215
|
+
if (!bucket) {
|
|
216
|
+
bucket = new Map();
|
|
217
|
+
registeredBindings.set(scope, bucket);
|
|
218
|
+
}
|
|
219
|
+
bucket.set(registered.contractKey, {
|
|
220
|
+
exactKey: composeExactKey(registered.kind, registered.contractKey, registered.variantKey),
|
|
221
|
+
id: registered.id,
|
|
222
|
+
});
|
|
185
223
|
}
|
|
186
|
-
bucket.set(registered.contractKey, {
|
|
187
|
-
exactKey: composeExactKey(registered.kind, registered.contractKey, registered.variantKey),
|
|
188
|
-
id: registered.id,
|
|
189
|
-
});
|
|
190
224
|
}
|
|
191
225
|
catch (err) {
|
|
192
226
|
options.onIssue?.({
|
|
@@ -241,6 +275,7 @@ export function createInstalledBlueprintsProvider(options) {
|
|
|
241
275
|
}
|
|
242
276
|
try {
|
|
243
277
|
await options.deps.vectorStore.deleteVector(scope, binding.id);
|
|
278
|
+
tally.evicted += 1;
|
|
244
279
|
}
|
|
245
280
|
catch {
|
|
246
281
|
// Best-effort — the enumeration-based scan retries when
|
|
@@ -280,6 +315,7 @@ export function createInstalledBlueprintsProvider(options) {
|
|
|
280
315
|
});
|
|
281
316
|
return;
|
|
282
317
|
}
|
|
318
|
+
tally.listedRows = cached.length;
|
|
283
319
|
for (const row of cached) {
|
|
284
320
|
if (row.installed !== true)
|
|
285
321
|
continue;
|
|
@@ -290,6 +326,7 @@ export function createInstalledBlueprintsProvider(options) {
|
|
|
290
326
|
// not in the live set — either way it shouldn't be served.
|
|
291
327
|
try {
|
|
292
328
|
await deleteBlueprint({ vectorStore: store, index: options.deps.index }, scope, row.id);
|
|
329
|
+
tally.evicted += 1;
|
|
293
330
|
options.onIssue?.({
|
|
294
331
|
id: row.id,
|
|
295
332
|
manifestPath: scope,
|
package/dist/renders/render.d.ts
CHANGED
|
@@ -350,6 +350,30 @@ export interface BlueprintResolutionEvent {
|
|
|
350
350
|
readonly blueprintId?: string;
|
|
351
351
|
/** `existing` = an already-bound row's id; `minted` = this render's registration created the row; `unregistered` = the best-effort registration failed and no id was minted. */
|
|
352
352
|
readonly identity: 'existing' | 'minted' | 'unregistered';
|
|
353
|
+
/**
|
|
354
|
+
* The app this render belongs to. Request context on the event;
|
|
355
|
+
* neutral observability field, same posture as
|
|
356
|
+
* {@link GguiSessionPostSuccessArgs.cacheHit}.
|
|
357
|
+
*/
|
|
358
|
+
readonly appId?: string;
|
|
359
|
+
/**
|
|
360
|
+
* The handshake this render consumed. Request context on the event;
|
|
361
|
+
* neutral observability field, same posture as
|
|
362
|
+
* {@link GguiSessionPostSuccessArgs.cacheHit}.
|
|
363
|
+
*/
|
|
364
|
+
readonly handshakeId?: string;
|
|
365
|
+
/**
|
|
366
|
+
* The render session this resolution served. Request context on the
|
|
367
|
+
* event; neutral observability field, same posture as
|
|
368
|
+
* {@link GguiSessionPostSuccessArgs.cacheHit}.
|
|
369
|
+
*/
|
|
370
|
+
readonly sessionId?: string;
|
|
371
|
+
/**
|
|
372
|
+
* The blueprint the consumed handshake proposed — present only when it
|
|
373
|
+
* proposed one. Request context on the event; neutral observability
|
|
374
|
+
* field, same posture as {@link GguiSessionPostSuccessArgs.cacheHit}.
|
|
375
|
+
*/
|
|
376
|
+
readonly proposedBlueprintId?: string;
|
|
353
377
|
}
|
|
354
378
|
export interface GguiRenderHandlerDeps extends RenderSliceMetaDeps {
|
|
355
379
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/renders/render.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/renders/render.ts"],"names":[],"mappings":"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"}
|
package/dist/renders/render.js
CHANGED
|
@@ -900,6 +900,14 @@ export function createGguiRenderHandler(deps) {
|
|
|
900
900
|
// ggui#1131 (d) — what the resolution observer will be told, decided as the path runs.
|
|
901
901
|
let indexReadAttempted = false;
|
|
902
902
|
let registrationIdentity = 'unregistered';
|
|
903
|
+
// The request context both resolution emits carry (#1328).
|
|
904
|
+
const proposedBlueprintId = handshakeRecord.suggestion.blueprintMeta.blueprintId;
|
|
905
|
+
const resolutionContext = {
|
|
906
|
+
appId: ctx.appId,
|
|
907
|
+
handshakeId: parsed.handshakeId,
|
|
908
|
+
sessionId,
|
|
909
|
+
...(proposedBlueprintId !== undefined ? { proposedBlueprintId } : {}),
|
|
910
|
+
};
|
|
903
911
|
const resolutionStrategy = forceCreate
|
|
904
912
|
? 'force-create'
|
|
905
913
|
: override !== undefined
|
|
@@ -1050,6 +1058,7 @@ export function createGguiRenderHandler(deps) {
|
|
|
1050
1058
|
served: 'stored',
|
|
1051
1059
|
blueprintId: blueprintHit.id,
|
|
1052
1060
|
identity: 'existing',
|
|
1061
|
+
...resolutionContext,
|
|
1053
1062
|
});
|
|
1054
1063
|
// Authored source — resolve the body
|
|
1055
1064
|
// from CodeStore by the row's stored hash, if any. Best-
|
|
@@ -1266,6 +1275,7 @@ export function createGguiRenderHandler(deps) {
|
|
|
1266
1275
|
served: 'fresh',
|
|
1267
1276
|
...(outcome.blueprintId !== undefined ? { blueprintId: outcome.blueprintId } : {}),
|
|
1268
1277
|
identity: registrationIdentity,
|
|
1278
|
+
...resolutionContext,
|
|
1269
1279
|
});
|
|
1270
1280
|
}
|
|
1271
1281
|
}
|
|
@@ -22,6 +22,15 @@
|
|
|
22
22
|
* chars, detail ≤ 512) against log flooding; `ctx.appId` (the
|
|
23
23
|
* PROVED identity on this carrier) tags every line so abuse is
|
|
24
24
|
* attributable.
|
|
25
|
+
*
|
|
26
|
+
* "Stores nothing" is relied on OUTSIDE this tree (ggui#1382). A host
|
|
27
|
+
* that relays this tool through its own privacy door admits it on that
|
|
28
|
+
* clause — guuey#1819's line is "event names and ggui's own ids only;
|
|
29
|
+
* no free text, no user identity; ggui logs them and stores nothing" —
|
|
30
|
+
* so adding any persistence here is a behaviour change for every
|
|
31
|
+
* relaying host, never a local choice. `runtime-telemetry.test.ts`
|
|
32
|
+
* pins the deps shape (a logger and nothing else) so a store
|
|
33
|
+
* dependency cannot arrive silently: it fails typecheck naming the row.
|
|
25
34
|
*/
|
|
26
35
|
import { z } from 'zod';
|
|
27
36
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-telemetry.d.ts","sourceRoot":"","sources":["../../src/renders/runtime-telemetry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"runtime-telemetry.d.ts","sourceRoot":"","sources":["../../src/renders/runtime-telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC5D;AAED,MAAM,WAAW,+BAA+B;IAC9C,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,sBAAsB,CAAC;CAC1C;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,GAAE,+BAAoC;;;;;;;;;;;GA0C3C"}
|
|
@@ -22,6 +22,15 @@
|
|
|
22
22
|
* chars, detail ≤ 512) against log flooding; `ctx.appId` (the
|
|
23
23
|
* PROVED identity on this carrier) tags every line so abuse is
|
|
24
24
|
* attributable.
|
|
25
|
+
*
|
|
26
|
+
* "Stores nothing" is relied on OUTSIDE this tree (ggui#1382). A host
|
|
27
|
+
* that relays this tool through its own privacy door admits it on that
|
|
28
|
+
* clause — guuey#1819's line is "event names and ggui's own ids only;
|
|
29
|
+
* no free text, no user identity; ggui logs them and stores nothing" —
|
|
30
|
+
* so adding any persistence here is a behaviour change for every
|
|
31
|
+
* relaying host, never a local choice. `runtime-telemetry.test.ts`
|
|
32
|
+
* pins the deps shape (a logger and nothing else) so a store
|
|
33
|
+
* dependency cannot arrive silently: it fails typecheck naming the row.
|
|
25
34
|
*/
|
|
26
35
|
import { z } from 'zod';
|
|
27
36
|
import { runtimeTelemetryInputShape, } from '@ggui-ai/protocol';
|
|
@@ -62,6 +62,7 @@
|
|
|
62
62
|
* ...}` input. Every render IS the addressable scope.
|
|
63
63
|
*/
|
|
64
64
|
import { z } from 'zod';
|
|
65
|
+
import { type ContractViolation } from '@ggui-ai/protocol';
|
|
65
66
|
import { type ActiveConsumerRegistry } from '@ggui-ai/mcp-server-core';
|
|
66
67
|
type UserActionAccepted = {
|
|
67
68
|
readonly ok: true;
|
|
@@ -75,8 +76,10 @@ type UserActionAccepted = {
|
|
|
75
76
|
};
|
|
76
77
|
type UserActionRejected = {
|
|
77
78
|
readonly ok: false;
|
|
78
|
-
readonly code: 'INVALID_ACTION_KIND' | 'PIPE_NOT_FOUND';
|
|
79
|
+
readonly code: 'INVALID_ACTION_KIND' | 'PIPE_NOT_FOUND' | 'CONTRACT_VIOLATION';
|
|
79
80
|
readonly message: string;
|
|
81
|
+
/** Present only with `code: 'CONTRACT_VIOLATION'` (ggui#1358; not yet emitted). */
|
|
82
|
+
readonly violations?: ContractViolation[];
|
|
80
83
|
};
|
|
81
84
|
type UserActionOutput = UserActionAccepted | UserActionRejected;
|
|
82
85
|
/**
|
|
@@ -164,7 +167,18 @@ export declare function createGguiSubmitActionHandler(deps?: GguiSubmitActionHan
|
|
|
164
167
|
readonly code: z.ZodOptional<z.ZodEnum<{
|
|
165
168
|
INVALID_ACTION_KIND: "INVALID_ACTION_KIND";
|
|
166
169
|
PIPE_NOT_FOUND: "PIPE_NOT_FOUND";
|
|
170
|
+
CONTRACT_VIOLATION: "CONTRACT_VIOLATION";
|
|
167
171
|
}>>;
|
|
172
|
+
/**
|
|
173
|
+
* The contract findings behind a `CONTRACT_VIOLATION` answer — the same
|
|
174
|
+
* facts the live channel's error frame carries (ggui#1358). DECLARED in
|
|
175
|
+
* this release and not yet emitted: the relay does not run the
|
|
176
|
+
* `actionSpec` gate yet, and this tool's output reaches `tools/list`
|
|
177
|
+
* closed, so a host that cached the previous release's schema would
|
|
178
|
+
* refuse a code or member it did not name (ggui#1333). The gate lands
|
|
179
|
+
* one release after this declaration serves.
|
|
180
|
+
*/
|
|
181
|
+
readonly violations: z.ZodOptional<z.ZodArray<z.ZodType<ContractViolation, unknown, z.core.$ZodTypeInternals<ContractViolation, unknown>>>>;
|
|
168
182
|
/** Human-readable diagnostic on `ok:false`. */
|
|
169
183
|
readonly message: z.ZodOptional<z.ZodString>;
|
|
170
184
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit-action.d.ts","sourceRoot":"","sources":["../../src/renders/submit-action.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"submit-action.d.ts","sourceRoot":"","sources":["../../src/renders/submit-action.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAmD,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAO5G,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,0BAA0B,CAAC;AA2FlC,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,qBAAqB,GAAG,gBAAgB,GAAG,oBAAoB,CAAC;IAC/E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mFAAmF;IACnF,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC3C,CAAC;AAEF,KAAK,gBAAgB,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;AAGhE;;;;;;;;;GASG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,0BAA0B,EAAE,oBAAoB,CAAC;IACxF;;;;;;;OAOG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IACzD;;;;;;;OAOG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,0BAA0B,EAAE,gBAAgB,CAAC;IAC3E;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;KACvE,CAAC;CACH;AA6BD,wBAAgB,6BAA6B,CAC3C,IAAI,GAAE,2BAAgC;;;;;;;;IA9JtC,yGAAyG;;IAEzG;;;;;;;OAOG;;;;;;IAEH;;;;;;;;OAQG;;IAEH,+CAA+C;;IAE/C;;;;;;;;;;;;;;;;OAgBG;;qBAqWJ"}
|
|
@@ -62,6 +62,7 @@
|
|
|
62
62
|
* ...}` input. Every render IS the addressable scope.
|
|
63
63
|
*/
|
|
64
64
|
import { z } from 'zod';
|
|
65
|
+
import { contractViolationSchema } from '@ggui-ai/protocol';
|
|
65
66
|
import { SUBMIT_ACTION_KINDS, isGguiSubmitActionInput, isGguiSubmitDispatchInput, } from '@ggui-ai/protocol/integrations/mcp-apps';
|
|
66
67
|
import { PendingPipeNotFoundError, } from '@ggui-ai/mcp-server-core';
|
|
67
68
|
import { defineHandler } from '../types.js';
|
|
@@ -107,7 +108,17 @@ const outputSchema = {
|
|
|
107
108
|
* sessionId whose pipe is closed/missing. iframe-runtime
|
|
108
109
|
* branches on this to fall through to `ui/message`.
|
|
109
110
|
*/
|
|
110
|
-
code: z.enum(['INVALID_ACTION_KIND', 'PIPE_NOT_FOUND']).optional(),
|
|
111
|
+
code: z.enum(['INVALID_ACTION_KIND', 'PIPE_NOT_FOUND', 'CONTRACT_VIOLATION']).optional(),
|
|
112
|
+
/**
|
|
113
|
+
* The contract findings behind a `CONTRACT_VIOLATION` answer — the same
|
|
114
|
+
* facts the live channel's error frame carries (ggui#1358). DECLARED in
|
|
115
|
+
* this release and not yet emitted: the relay does not run the
|
|
116
|
+
* `actionSpec` gate yet, and this tool's output reaches `tools/list`
|
|
117
|
+
* closed, so a host that cached the previous release's schema would
|
|
118
|
+
* refuse a code or member it did not name (ggui#1333). The gate lands
|
|
119
|
+
* one release after this declaration serves.
|
|
120
|
+
*/
|
|
121
|
+
violations: z.array(contractViolationSchema).optional(),
|
|
111
122
|
/** Human-readable diagnostic on `ok:false`. */
|
|
112
123
|
message: z.string().optional(),
|
|
113
124
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ggui-ai/mcp-server-handlers",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.0",
|
|
4
4
|
"description": "MCP tool handler logic for the ggui protocol. Pure over @ggui-ai/mcp-server-core seams and consumed by @ggui-ai/mcp-server. Never imports AWS, HTTP transports, or CLI concerns.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ggui",
|
|
@@ -70,18 +70,18 @@
|
|
|
70
70
|
"dependencies": {
|
|
71
71
|
"canonicalize": "^2.0.0",
|
|
72
72
|
"zod": "^4.3.6",
|
|
73
|
-
"@ggui-ai/mcp-server-core": "0.
|
|
74
|
-
"@ggui-ai/
|
|
75
|
-
"@ggui-ai/protocol": "0.
|
|
76
|
-
"@ggui-ai/ui-
|
|
77
|
-
"@ggui-ai/
|
|
73
|
+
"@ggui-ai/mcp-server-core": "0.24.0",
|
|
74
|
+
"@ggui-ai/ui-gen": "0.24.0",
|
|
75
|
+
"@ggui-ai/protocol": "0.24.0",
|
|
76
|
+
"@ggui-ai/ui-registry": "0.24.0",
|
|
77
|
+
"@ggui-ai/negotiator": "0.24.0"
|
|
78
78
|
},
|
|
79
79
|
"devDependencies": {
|
|
80
80
|
"@types/node": "^22.0.0",
|
|
81
81
|
"typescript": "^5.0.0",
|
|
82
82
|
"vitest": "^3.2.6",
|
|
83
|
-
"@ggui-ai/embedding-local": "0.
|
|
84
|
-
"@ggui-ai/protocol-conformance": "0.
|
|
83
|
+
"@ggui-ai/embedding-local": "0.24.0",
|
|
84
|
+
"@ggui-ai/protocol-conformance": "0.24.0"
|
|
85
85
|
},
|
|
86
86
|
"repository": {
|
|
87
87
|
"type": "git",
|