@ggui-ai/mcp-server-handlers 0.21.0 → 0.23.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 -2
- package/dist/blueprints/search-blueprints.d.ts.map +1 -1
- package/dist/blueprints/search-blueprints.js +10 -2
- package/dist/ops-apps/set-app-theme.d.ts +10 -3
- package/dist/ops-apps/set-app-theme.d.ts.map +1 -1
- package/dist/ops-apps/set-app-theme.js +17 -7
- package/dist/ops-blueprint/generate.d.ts.map +1 -1
- package/dist/ops-blueprint/generate.js +11 -1
- package/dist/ops-blueprint/register.d.ts.map +1 -1
- package/dist/ops-blueprint/register.js +4 -0
- package/dist/renders/blueprint-matcher.d.ts +6 -7
- package/dist/renders/blueprint-matcher.d.ts.map +1 -1
- package/dist/renders/blueprint-matcher.js +50 -15
- package/dist/renders/blueprint-registry.d.ts +34 -0
- package/dist/renders/blueprint-registry.d.ts.map +1 -1
- package/dist/renders/blueprint-registry.js +7 -0
- package/dist/renders/build-seed-pool.d.ts.map +1 -1
- package/dist/renders/build-seed-pool.js +18 -7
- package/dist/renders/index.d.ts +3 -2
- package/dist/renders/index.d.ts.map +1 -1
- package/dist/renders/index.js +2 -1
- package/dist/renders/install-to-cache.d.ts +26 -1
- package/dist/renders/install-to-cache.d.ts.map +1 -1
- package/dist/renders/install-to-cache.js +21 -0
- package/dist/renders/installed-blueprints-provider.d.ts +9 -3
- package/dist/renders/installed-blueprints-provider.d.ts.map +1 -1
- package/dist/renders/installed-blueprints-provider.js +1 -0
- 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.map +1 -1
- package/dist/renders/render.js +8 -3
- package/dist/renders/slice-meta-derivation.d.ts +16 -2
- package/dist/renders/slice-meta-derivation.d.ts.map +1 -1
- package/dist/renders/slice-meta-derivation.js +15 -0
- package/dist/renders/submit-action.d.ts.map +1 -1
- package/dist/renders/submit-action.js +30 -0
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -8
|
@@ -53,8 +53,16 @@
|
|
|
53
53
|
import { z } from 'zod';
|
|
54
54
|
import type { BlueprintProvider, EmbeddingProvider, VectorStore } from '@ggui-ai/mcp-server-core';
|
|
55
55
|
/**
|
|
56
|
-
*
|
|
57
|
-
* callers that want stricter matching post-filter by
|
|
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.
|
|
58
66
|
*/
|
|
59
67
|
export declare const MIN_SIMILARITY_SCORE = 0.3;
|
|
60
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,8 +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
|
-
*
|
|
58
|
-
* callers that want stricter matching post-filter by
|
|
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.
|
|
59
67
|
*/
|
|
60
68
|
export const MIN_SIMILARITY_SCORE = 0.3;
|
|
61
69
|
/**
|
|
@@ -134,6 +134,11 @@ export interface SetAppThemeDeps {
|
|
|
134
134
|
export type AppThemeAdmission = {
|
|
135
135
|
readonly ok: true;
|
|
136
136
|
readonly theme: AppTheme;
|
|
137
|
+
/** ggui#1286 — keys outside the manifest, admitted (never refused, never dropped) and named by the caller. */
|
|
138
|
+
readonly unknown: {
|
|
139
|
+
readonly light: readonly string[];
|
|
140
|
+
readonly dark: readonly string[];
|
|
141
|
+
};
|
|
137
142
|
} | {
|
|
138
143
|
readonly ok: false;
|
|
139
144
|
readonly refusal: AppThemeRefusalBody;
|
|
@@ -143,9 +148,11 @@ export type AppThemeAdmission = {
|
|
|
143
148
|
};
|
|
144
149
|
/**
|
|
145
150
|
* Admit a raw theme body: shape, attestation, coverage — in that order,
|
|
146
|
-
* first failure wins
|
|
147
|
-
*
|
|
148
|
-
*
|
|
151
|
+
* first failure wins. Exported so any other in-process door runs exactly
|
|
152
|
+
* these checks. Keys outside the manifest (`unknown`) are ADMITTED and
|
|
153
|
+
* returned, never refused (ggui#1286): a door on release N cannot tell a
|
|
154
|
+
* name a newer projector emits from a bug, and refusing breaks N−1 (new →
|
|
155
|
+
* old); the caller persists the theme verbatim and names them.
|
|
149
156
|
*/
|
|
150
157
|
export declare function admitAppTheme(raw: unknown, overlayCoverage: OverlayCoverageValidator): Promise<AppThemeAdmission>;
|
|
151
158
|
export declare function createSetAppThemeHandler(deps: SetAppThemeDeps): import("../types.js").SharedHandler<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-app-theme.d.ts","sourceRoot":"","sources":["../../src/ops-apps/set-app-theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,EAIL,KAAK,QAAQ,EACb,KAAK,mBAAmB,EAEzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK;IACpF,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC,CAAC;AAcF,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKhB,mEAAmE;;IAEnE,sGAAsG;;;;;;;;;;;;;;;;;;IAEtG,yFAAyF;;CAEjF,CAAC;AAEX,uEAAuE;AACvE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,8FAA8F;IAC9F,QAAQ,CAAC,eAAe,EAAE,wBAAwB,CAAC;CACpD;AAED,0EAA0E;AAC1E,MAAM,MAAM,iBAAiB,GACzB;
|
|
1
|
+
{"version":3,"file":"set-app-theme.d.ts","sourceRoot":"","sources":["../../src/ops-apps/set-app-theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,EAIL,KAAK,QAAQ,EACb,KAAK,mBAAmB,EAEzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK;IACpF,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC,CAAC;AAcF,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKhB,mEAAmE;;IAEnE,sGAAsG;;;;;;;;;;;;;;;;;;IAEtG,yFAAyF;;CAEjF,CAAC;AAEX,uEAAuE;AACvE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,8FAA8F;IAC9F,QAAQ,CAAC,eAAe,EAAE,wBAAwB,CAAC;CACpD;AAED,0EAA0E;AAC1E,MAAM,MAAM,iBAAiB,GACzB;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,8GAA8G;IAC9G,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;CAC3F,GACD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAY/D;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,OAAO,EACZ,eAAe,EAAE,wBAAwB,GACxC,OAAO,CAAC,iBAAiB,CAAC,CAmB5B;AAqBD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAzF5D,mEAAmE;;IAEnE,sGAAsG;;;;;;;;;;;;;;;;;;IAEtG,yFAAyF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmI1F"}
|
|
@@ -64,9 +64,11 @@ function isV1Shape(raw) {
|
|
|
64
64
|
}
|
|
65
65
|
/**
|
|
66
66
|
* Admit a raw theme body: shape, attestation, coverage — in that order,
|
|
67
|
-
* first failure wins
|
|
68
|
-
*
|
|
69
|
-
*
|
|
67
|
+
* first failure wins. Exported so any other in-process door runs exactly
|
|
68
|
+
* these checks. Keys outside the manifest (`unknown`) are ADMITTED and
|
|
69
|
+
* returned, never refused (ggui#1286): a door on release N cannot tell a
|
|
70
|
+
* name a newer projector emits from a bug, and refusing breaks N−1 (new →
|
|
71
|
+
* old); the caller persists the theme verbatim and names them.
|
|
70
72
|
*/
|
|
71
73
|
export async function admitAppTheme(raw, overlayCoverage) {
|
|
72
74
|
if (isV1Shape(raw))
|
|
@@ -85,13 +87,10 @@ export async function admitAppTheme(raw, overlayCoverage) {
|
|
|
85
87
|
return { ok: false, refusal: { overlayHash: 'mismatch' } };
|
|
86
88
|
const light = overlayCoverage(theme.overlays.light);
|
|
87
89
|
const dark = overlayCoverage(theme.overlays.dark);
|
|
88
|
-
if (light.unknown.length > 0 || dark.unknown.length > 0) {
|
|
89
|
-
return { ok: false, refusal: { unknown: { light: [...light.unknown], dark: [...dark.unknown] } } };
|
|
90
|
-
}
|
|
91
90
|
if (light.uncovered.length > 0 || dark.uncovered.length > 0) {
|
|
92
91
|
return { ok: false, refusal: { uncovered: { light: [...light.uncovered], dark: [...dark.uncovered] } } };
|
|
93
92
|
}
|
|
94
|
-
return { ok: true, theme };
|
|
93
|
+
return { ok: true, theme, unknown: { light: [...light.unknown], dark: [...dark.unknown] } };
|
|
95
94
|
}
|
|
96
95
|
function refusalText(admission) {
|
|
97
96
|
if ('issues' in admission)
|
|
@@ -109,6 +108,8 @@ function refusalText(admission) {
|
|
|
109
108
|
// than a verdict (founder's ruling, 2026-09-16).
|
|
110
109
|
return `invalid_app_config: ${appThemeWouldDropRefusalText(r.wouldDrop)}`;
|
|
111
110
|
}
|
|
111
|
+
// Unreachable from this door since ggui#1286 (unknown keys are admitted); kept while the
|
|
112
|
+
// protocol refusal union carries the arm — doors already serving still emit it (N−1).
|
|
112
113
|
if ('unknown' in r)
|
|
113
114
|
return `invalid_app_config: keys outside the consumed-token manifest — light: [${r.unknown.light.join(', ')}] dark: [${r.unknown.dark.join(', ')}]`;
|
|
114
115
|
return `invalid_app_config: consumed tokens left uncovered — light: [${r.uncovered.light.join(', ')}] dark: [${r.uncovered.dark.join(', ')}]`;
|
|
@@ -138,6 +139,15 @@ export function createSetAppThemeHandler(deps) {
|
|
|
138
139
|
return handlerFailure(data, refusalText(admission));
|
|
139
140
|
}
|
|
140
141
|
const written = await deps.apps.setTheme({ appId, ownerSub, theme: admission.theme });
|
|
142
|
+
if (admission.unknown.light.length > 0 || admission.unknown.dark.length > 0) {
|
|
143
|
+
// ggui#1286 — persisted verbatim, NAMED once (the N−1 watch).
|
|
144
|
+
// eslint-disable-next-line no-console -- operator-visible structured event; handlers carry no logger
|
|
145
|
+
console.info('[ggui] app_theme_unknown_overlay_names', {
|
|
146
|
+
appId,
|
|
147
|
+
light: [...admission.unknown.light],
|
|
148
|
+
dark: [...admission.unknown.dark],
|
|
149
|
+
});
|
|
150
|
+
}
|
|
141
151
|
return {
|
|
142
152
|
ok: true,
|
|
143
153
|
appId: written.appId,
|
|
@@ -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
|
|
@@ -305,6 +309,12 @@ export function createGguiOpsGenerateBlueprintHandler(deps) {
|
|
|
305
309
|
kind: "template",
|
|
306
310
|
contract,
|
|
307
311
|
intent: intentForCache,
|
|
312
|
+
// ggui#1275 — an explicit intent or a seed prompt states the
|
|
313
|
+
// UI's task; a persona or the placeholder is a stand-in the
|
|
314
|
+
// matcher's judge never sees.
|
|
315
|
+
intentSource: parsed.intent !== undefined || parsed.seedPrompt !== undefined
|
|
316
|
+
? "authored"
|
|
317
|
+
: "fallback",
|
|
308
318
|
componentCode,
|
|
309
319
|
// The cache row MUST carry the same variance as the MVB
|
|
310
320
|
// row: `registerBlueprint` keys the exact-lookup on
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/ops-blueprint/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,aAAa,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,YAAY,EAGjB,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAqB,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEpF,OAAO,EAAyB,KAAK,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAiBjD;;;;;GAKG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC;;;OAGG;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;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,qBAAqB,CAAC;IAC/C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;IACnC;;OAEG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;IACxC;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;CACzD;AAED,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,4BAA4B;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/ops-blueprint/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,aAAa,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,YAAY,EAGjB,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAqB,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEpF,OAAO,EAAyB,KAAK,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAiBjD;;;;;GAKG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC;;;OAGG;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;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,qBAAqB,CAAC;IAC/C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;IACnC;;OAEG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;IACxC;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;CACzD;AAED,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,4BAA4B;;;;;;;;;;;;;;;;;;;GAsMnC"}
|
|
@@ -175,6 +175,10 @@ export function createGguiOpsRegisterBlueprintHandler(deps) {
|
|
|
175
175
|
kind: "template",
|
|
176
176
|
contract,
|
|
177
177
|
intent: intentForCache,
|
|
178
|
+
// ggui#1275 — only a seed prompt states the UI's task. A
|
|
179
|
+
// persona describes the agent and the placeholder describes
|
|
180
|
+
// nothing: both are stand-ins the matcher's judge never sees.
|
|
181
|
+
intentSource: parsed.seedPrompt !== undefined ? "authored" : "fallback",
|
|
178
182
|
componentCode,
|
|
179
183
|
// Same user-arm provenance as the MVB row above — one
|
|
180
184
|
// handler call, one provenance claim across both stores.
|
|
@@ -125,13 +125,12 @@ export interface MatchBlueprintOptions {
|
|
|
125
125
|
/** RAG top-K. Default 20 — balance between recall and prompt cost. */
|
|
126
126
|
readonly topK?: number;
|
|
127
127
|
/**
|
|
128
|
-
* Minimum cosine a candidate needs to reach the LLM judge. Default 0.2
|
|
129
|
-
*
|
|
130
|
-
* (ggui#1275): a
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
* per-candidate semantics are this matcher's.)
|
|
128
|
+
* Minimum cosine a candidate needs to reach the LLM judge. Default 0.2
|
|
129
|
+
* (see the DEFAULT_MIN_COSINE note for why it is not
|
|
130
|
+
* `ggui_search_blueprints`' 0.3). Applied PER CANDIDATE (ggui#1275): a
|
|
131
|
+
* candidate under the floor is never offered to the judge, so it can
|
|
132
|
+
* never become a reuse; when even top-1 is under it, the judge is skipped
|
|
133
|
+
* entirely and the rerank cost is saved.
|
|
135
134
|
*/
|
|
136
135
|
readonly minCosineForRerank?: number;
|
|
137
136
|
/** 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;AAErD,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAML,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAaxE,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qFAAqF;IACrF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;CAChC;AAED,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AAE1E,oCAAoC;AACpC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IACzC;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;IACzB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,2BAA2B,CAAC;CAC5D;AAED,MAAM,WAAW,qBAAqB;IACpC,kEAAkE;IAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC;IAC9B,sEAAsE;IACtE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB
|
|
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;AAErD,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAML,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAaxE,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qFAAqF;IACrF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;CAChC;AAED,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AAE1E,oCAAoC;AACpC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IACzC;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;IACzB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,2BAA2B,CAAC;CAC5D;AAED,MAAM,WAAW,qBAAqB;IACpC,kEAAkE;IAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC;IAC9B,sEAAsE;IACtE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,yFAAyF;IACzF,+EAA+E;IAC/E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC;;;;;;;;OAQG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AA8BD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;IACL,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CACvC,EACD,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,oBAAoB,CAAC,CAuW/B"}
|
|
@@ -15,15 +15,31 @@ const EMPTY_GAP = {
|
|
|
15
15
|
gadgets: [],
|
|
16
16
|
};
|
|
17
17
|
const DEFAULT_TOP_K = 20;
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
//
|
|
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).
|
|
26
35
|
const DEFAULT_MIN_COSINE = 0.2;
|
|
36
|
+
// Loosened for Path-A: accept a semantic judge's pick more readily, so a
|
|
37
|
+
// paraphrased / similar contract is reused instead of cold-generating.
|
|
38
|
+
// Over-proposal is bounded by the agent decision step plus the COVERAGE_GAP
|
|
39
|
+
// findings on a non-covering hit (the cache proposes; the agent disposes).
|
|
40
|
+
// Not re-tuned by ggui#1275: separating right from wrong picks by
|
|
41
|
+
// confidence is a measurement for the match-precision probe, not a number
|
|
42
|
+
// to fit to eight samples.
|
|
27
43
|
const DEFAULT_JUDGE_THRESHOLD = 0.5;
|
|
28
44
|
/**
|
|
29
45
|
* Walk the matcher and return the decision.
|
|
@@ -228,15 +244,34 @@ export async function matchBlueprint(deps, scope, query, options = {}) {
|
|
|
228
244
|
});
|
|
229
245
|
return { strategy: 'no-match', reason, candidates };
|
|
230
246
|
}
|
|
231
|
-
// ggui#1275 — the floor is per candidate
|
|
232
|
-
// ALL top-K to the judge, which could pick any of
|
|
233
|
-
// at cosine 0.19 under the 0.2 floor because
|
|
234
|
-
//
|
|
235
|
-
//
|
|
236
|
-
|
|
247
|
+
// ggui#1275 — who the judge may see. (1) The floor is per candidate: top-1
|
|
248
|
+
// clearing it used to hand ALL top-K to the judge, which could pick any of
|
|
249
|
+
// them (observed: a reuse at cosine 0.19 under the then-0.2 floor because
|
|
250
|
+
// top-1 was 0.27). (2) A row whose intent is a stand-in
|
|
251
|
+
// (`intentSource: 'fallback'` — a placeholder, an id, a title, a persona)
|
|
252
|
+
// is never offered: semantic reuse is intent similarity, and with no
|
|
253
|
+
// intent the judge compares contract summaries and guesses (observed: both
|
|
254
|
+
// wrong reuses of the 2026-09 read picked one placeholder-intent row).
|
|
255
|
+
// Such a row stays reachable by exact key above. The trace still carries
|
|
256
|
+
// the full top-K.
|
|
257
|
+
const aboveFloor = candidates.filter((c) => c.cosine >= minCosine);
|
|
258
|
+
const eligible = aboveFloor.filter((c) => c.blueprint.intentSource !== 'fallback');
|
|
237
259
|
const floorNote = eligible.length < candidates.length
|
|
238
|
-
? ` (${eligible.length} of ${candidates.length} candidates at or above minCosine=${minCosine})`
|
|
260
|
+
? ` (${eligible.length} of ${candidates.length} candidates at or above minCosine=${minCosine} with an authored intent)`
|
|
239
261
|
: '';
|
|
262
|
+
if (eligible.length === 0) {
|
|
263
|
+
// Top-1 cleared the floor, but every candidate that did carries a
|
|
264
|
+
// stand-in intent — nothing the judge could honestly compare.
|
|
265
|
+
const reason = 'no-match: no saved interface close enough has a stated intent — a new one will be generated';
|
|
266
|
+
const traceReason = `no-match: ${aboveFloor.length} candidates at or above minCosine=${minCosine}, none with an authored intent; judge skipped`;
|
|
267
|
+
emit({
|
|
268
|
+
decision: 'no-match',
|
|
269
|
+
strategy: 'semantic',
|
|
270
|
+
reason: traceReason,
|
|
271
|
+
candidates,
|
|
272
|
+
});
|
|
273
|
+
return { strategy: 'no-match', reason, candidates };
|
|
274
|
+
}
|
|
240
275
|
// Run the LLM rerank judge.
|
|
241
276
|
const decision = await rerankCandidates({ llm: deps.llm }, {
|
|
242
277
|
intent: trimmedIntent,
|
|
@@ -39,6 +39,15 @@ export interface Blueprint {
|
|
|
39
39
|
readonly contract: DataContract;
|
|
40
40
|
/** Original intent prose that produced the blueprint. Diagnostic + RAG. */
|
|
41
41
|
readonly intent: string;
|
|
42
|
+
/**
|
|
43
|
+
* `'fallback'` when {@link intent} is a stand-in — a placeholder, an
|
|
44
|
+
* id, a title or a persona, written because the writer had no
|
|
45
|
+
* statement of the UI's task. Absent means authored. The semantic
|
|
46
|
+
* judge never sees a fallback row (it would compare contract summaries
|
|
47
|
+
* and guess); exact-key reuse still reaches it. See
|
|
48
|
+
* {@link BlueprintIntentSource}.
|
|
49
|
+
*/
|
|
50
|
+
readonly intentSource?: 'fallback';
|
|
42
51
|
/** Generated component source. Empty string when generation hasn't happened yet. */
|
|
43
52
|
readonly componentCode: string;
|
|
44
53
|
/**
|
|
@@ -145,11 +154,36 @@ export interface BlueprintRegistryDeps {
|
|
|
145
154
|
*/
|
|
146
155
|
readonly durability?: BlueprintDurabilityDeps;
|
|
147
156
|
}
|
|
157
|
+
/**
|
|
158
|
+
* Where a registry row's intent came from (ggui#1275).
|
|
159
|
+
*
|
|
160
|
+
* - `'authored'` — a statement of the UI's TASK: a render request's
|
|
161
|
+
* intent, a generation `seedPrompt`, a manifest's `intent` or
|
|
162
|
+
* `description`.
|
|
163
|
+
* - `'fallback'` — a stand-in, stored because registration refuses an
|
|
164
|
+
* empty intent: an operator placeholder, a bare id, a manifest `name`
|
|
165
|
+
* (a title names a thing; it does not describe a task), or a `persona`
|
|
166
|
+
* (it describes the agent, not the UI).
|
|
167
|
+
*
|
|
168
|
+
* Semantic reuse is intent similarity, so a fallback row never reaches
|
|
169
|
+
* the matcher's judge; it stays reachable by exact key. Only
|
|
170
|
+
* `'fallback'` is stored (`intentSource` in row metadata); an authored
|
|
171
|
+
* row writes nothing, so it is byte-identical to a row written before
|
|
172
|
+
* the field existed, and absence reads as authored.
|
|
173
|
+
*/
|
|
174
|
+
export type BlueprintIntentSource = 'authored' | 'fallback';
|
|
148
175
|
/** Input for {@link registerBlueprint}. */
|
|
149
176
|
export interface RegisterBlueprintInput {
|
|
150
177
|
readonly kind: BlueprintKind;
|
|
151
178
|
readonly contract: DataContract;
|
|
152
179
|
readonly intent: string;
|
|
180
|
+
/**
|
|
181
|
+
* Where {@link intent} came from. Default `'authored'`. A writer that
|
|
182
|
+
* substitutes a stand-in because it has no statement of the UI's task
|
|
183
|
+
* MUST pass `'fallback'` — see {@link BlueprintIntentSource} for which
|
|
184
|
+
* sources are which.
|
|
185
|
+
*/
|
|
186
|
+
readonly intentSource?: BlueprintIntentSource;
|
|
153
187
|
readonly componentCode: string;
|
|
154
188
|
/**
|
|
155
189
|
* Authored (pre-compile) source body, when the generator distinguishes
|
|
@@ -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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"}
|
|
@@ -116,6 +116,7 @@ const METADATA_KEYS = {
|
|
|
116
116
|
lastHitAt: 'lastHitAt',
|
|
117
117
|
installed: 'installed',
|
|
118
118
|
sourceCodeHash: 'sourceCodeHash',
|
|
119
|
+
intentSource: 'intentSource',
|
|
119
120
|
};
|
|
120
121
|
function blueprintToMetadata(bp) {
|
|
121
122
|
return {
|
|
@@ -131,6 +132,9 @@ function blueprintToMetadata(bp) {
|
|
|
131
132
|
// Flat-provenance scalars — key names owned by the protocol codec.
|
|
132
133
|
...blueprintSourceToFlat(bp.source),
|
|
133
134
|
...(bp.installed === true ? { [METADATA_KEYS.installed]: true } : {}),
|
|
135
|
+
...(bp.intentSource === 'fallback'
|
|
136
|
+
? { [METADATA_KEYS.intentSource]: 'fallback' }
|
|
137
|
+
: {}),
|
|
134
138
|
...(bp.lastHitAt !== undefined
|
|
135
139
|
? { [METADATA_KEYS.lastHitAt]: bp.lastHitAt }
|
|
136
140
|
: {}),
|
|
@@ -226,6 +230,7 @@ function rowToBlueprint(key, metadata) {
|
|
|
226
230
|
const hitCount = readScalarNumber(metadata[METADATA_KEYS.hitCount]) ?? 0;
|
|
227
231
|
const lastHitAt = readScalarString(metadata[METADATA_KEYS.lastHitAt]);
|
|
228
232
|
const installed = metadata[METADATA_KEYS.installed] === true;
|
|
233
|
+
const intentIsFallback = metadata[METADATA_KEYS.intentSource] === 'fallback';
|
|
229
234
|
const variance = readVariance(metadata[METADATA_KEYS.variance]);
|
|
230
235
|
// `variantKey` is identity-bearing — `blueprintToMetadata` always
|
|
231
236
|
// writes it, so a blueprint-shaped row without one is a legacy row
|
|
@@ -254,6 +259,7 @@ function rowToBlueprint(key, metadata) {
|
|
|
254
259
|
hitCount,
|
|
255
260
|
source,
|
|
256
261
|
...(installed ? { installed: true } : {}),
|
|
262
|
+
...(intentIsFallback ? { intentSource: 'fallback' } : {}),
|
|
257
263
|
...(lastHitAt !== undefined ? { lastHitAt } : {}),
|
|
258
264
|
...(sourceCodeHash !== undefined ? { sourceCodeHash } : {}),
|
|
259
265
|
};
|
|
@@ -368,6 +374,7 @@ export async function registerBlueprint(deps, scope, input, options = {}) {
|
|
|
368
374
|
hitCount: 0,
|
|
369
375
|
source: input.source,
|
|
370
376
|
...(input.installed === true ? { installed: true } : {}),
|
|
377
|
+
...(input.intentSource === 'fallback' ? { intentSource: 'fallback' } : {}),
|
|
371
378
|
...(warnFindings.length > 0
|
|
372
379
|
? { validationWarnings: warnFindings }
|
|
373
380
|
: {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-seed-pool.d.ts","sourceRoot":"","sources":["../../src/renders/build-seed-pool.ts"],"names":[],"mappings":"AAYA,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAwB5D,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"build-seed-pool.d.ts","sourceRoot":"","sources":["../../src/renders/build-seed-pool.ts"],"names":[],"mappings":"AAYA,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAwB5D,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,aAAa,CAAC,CAuExB"}
|
|
@@ -75,13 +75,8 @@ export async function buildSeedPool(source, options) {
|
|
|
75
75
|
await registerBlueprint(registry, scope, {
|
|
76
76
|
kind: 'template',
|
|
77
77
|
contract: record.contract,
|
|
78
|
-
//
|
|
79
|
-
|
|
80
|
-
// registerBlueprint's "intent cannot be empty" guard, aborting the
|
|
81
|
-
// whole build on one bad record.
|
|
82
|
-
intent: [record.variance.seedPrompt, record.variance.persona]
|
|
83
|
-
.map((s) => s?.trim())
|
|
84
|
-
.find((s) => Boolean(s)) ?? 'shared blueprint',
|
|
78
|
+
// intent + intentSource — see seedPoolIntent below.
|
|
79
|
+
...seedPoolIntent(record.variance),
|
|
85
80
|
componentCode: record.componentCode,
|
|
86
81
|
// Provenance travels WITH the artifact (PortableBlueprint v2
|
|
87
82
|
// requires it) — an llm-minted record stays llm-sourced in
|
|
@@ -98,3 +93,19 @@ export async function buildSeedPool(source, options) {
|
|
|
98
93
|
label: source.label,
|
|
99
94
|
};
|
|
100
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* The intent a seed-pool record registers under, and where it came from
|
|
98
|
+
* (ggui#1275). Coalesces on the first NON-EMPTY hint — `??` is
|
|
99
|
+
* nullish-only, so an empty `seedPrompt`/`persona` would yield an empty
|
|
100
|
+
* intent and trip registerBlueprint's "intent cannot be empty" guard,
|
|
101
|
+
* aborting the whole build on one bad record. Only a seed prompt states
|
|
102
|
+
* the UI's task; a persona (it describes the agent) or the pool's default
|
|
103
|
+
* label is a stand-in, which the matcher's judge never sees.
|
|
104
|
+
*/
|
|
105
|
+
function seedPoolIntent(variance) {
|
|
106
|
+
const seedPrompt = variance.seedPrompt?.trim();
|
|
107
|
+
if (seedPrompt)
|
|
108
|
+
return { intent: seedPrompt, intentSource: 'authored' };
|
|
109
|
+
const persona = variance.persona?.trim();
|
|
110
|
+
return { intent: persona ? persona : 'shared blueprint', intentSource: 'fallback' };
|
|
111
|
+
}
|
package/dist/renders/index.d.ts
CHANGED
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
*/
|
|
34
34
|
export { applyGguiSessionPatch, type ApplyGguiSessionPatchInput, type ApplyGguiSessionPatchResult, type GguiSessionTarget, } from "./apply-ggui-session-patch.js";
|
|
35
35
|
export { assertActionContract } from "./assert-action-contract.js";
|
|
36
|
+
export { recordCommittedOneShot, type CommittedOneShotOutcome, type RecordCommittedOneShotInput, } from "./record-committed-one-shot.js";
|
|
36
37
|
export { assertContractNoRetiredFields, ContractRetiredFieldError, } from "./assert-contract-no-retired-fields.js";
|
|
37
38
|
export { assertGadgetsRegistered, filterDescriptorsToContract, findClosestRegisteredHook, GadgetNotRegisteredError, GadgetPackageMismatchError, type PackageMismatchEntry, type UnregisteredHookEntry, } from "./assert-gadgets.js";
|
|
38
39
|
export { isGeneratorRegistered } from "./assert-generator.js";
|
|
@@ -68,10 +69,10 @@ export { createGguiUpdateHandler, type GguiUpdateHandlerDeps, type PropsUpdateNo
|
|
|
68
69
|
export { createGguiAmendHandler, type GguiAmendHandlerDeps, } from "./amend.js";
|
|
69
70
|
export { mutationInputSchema, runPropsMutation, type PropsMutationResult, } from "./props-mutation-core.js";
|
|
70
71
|
export { matchBlueprint, type BlueprintMatchHit, type BlueprintMatchMiss, type BlueprintMatchResult, type MatchBlueprintDeps, type MatchBlueprintOptions, } from "./blueprint-matcher.js";
|
|
71
|
-
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 RegisterBlueprintOptions, } from "./blueprint-registry.js";
|
|
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";
|
|
72
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
74
|
export { buildCacheReuseResult, buildCreateFallback, decideHandshake, type BlueprintPool, type HandshakeDecideInput, type HandshakeDecisionAdapter, } from "./decide-handshake.js";
|
|
74
|
-
export { installToCache, type InstallToCacheInput } from "./install-to-cache.js";
|
|
75
|
+
export { installToCache, installedBlueprintIntent, type InstallToCacheInput, } from "./install-to-cache.js";
|
|
75
76
|
export { createInstalledBlueprintsProvider, type CreateInstalledBlueprintsProviderOptions, type InstalledBlueprintCacheIssue, type CompileResult as InstalledBlueprintCompileResult, type InstalledBlueprintEntry, type InstalledBlueprintsProvider, } from "./installed-blueprints-provider.js";
|
|
76
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";
|
|
77
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";
|
|
@@ -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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"}
|
package/dist/renders/index.js
CHANGED
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
*/
|
|
34
34
|
export { applyGguiSessionPatch, } from "./apply-ggui-session-patch.js";
|
|
35
35
|
export { assertActionContract } from "./assert-action-contract.js";
|
|
36
|
+
export { recordCommittedOneShot, } from "./record-committed-one-shot.js";
|
|
36
37
|
export { assertContractNoRetiredFields, ContractRetiredFieldError, } from "./assert-contract-no-retired-fields.js";
|
|
37
38
|
export { assertGadgetsRegistered, filterDescriptorsToContract, findClosestRegisteredHook, GadgetNotRegisteredError, GadgetPackageMismatchError, } from "./assert-gadgets.js";
|
|
38
39
|
export { isGeneratorRegistered } from "./assert-generator.js";
|
|
@@ -81,7 +82,7 @@ export { matchBlueprint, } from "./blueprint-matcher.js";
|
|
|
81
82
|
export { BlueprintRejectedError, composeEmbeddingInput, composeExactKey, deleteBlueprint, findBlueprintExact, findBlueprintsByEmbedding, listBlueprints, recordBlueprintHit, registerBlueprint, } from "./blueprint-registry.js";
|
|
82
83
|
export { consumeHandshakeRecord, createGguiHandshakeHandler, DEFAULT_GENERATOR_SLUG, HANDSHAKE_RECORD_TTL_SEC, HandshakeNotFoundError, handshakeRecordKey, peekHandshakeRecord, } from "./handshake.js";
|
|
83
84
|
export { buildCacheReuseResult, buildCreateFallback, decideHandshake, } from "./decide-handshake.js";
|
|
84
|
-
export { installToCache } from "./install-to-cache.js";
|
|
85
|
+
export { installToCache, installedBlueprintIntent, } from "./install-to-cache.js";
|
|
85
86
|
export { createInstalledBlueprintsProvider, } from "./installed-blueprints-provider.js";
|
|
86
87
|
export { createInMemoryProvisionalPreviewRegistry, evaluateProvisionalPreviewGate, finalizeProvisionalPreview, kickoffProvisionalPreview, PreviewAbortError, PROVISIONAL_PREVIEW_CHANNEL, runProvisionalPreview, } from "./provisional-preview.js";
|
|
87
88
|
// Slice-meta projection helpers shared by the
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
* `DiscoveredUi` rows. The bridge consumes the contract +
|
|
49
49
|
* componentCode that the dev-stack wire-up extracts.
|
|
50
50
|
*/
|
|
51
|
-
import { type Blueprint, type BlueprintRegistryDeps, type RegisterBlueprintOptions } from './blueprint-registry.js';
|
|
51
|
+
import { type Blueprint, type BlueprintIntentSource, type BlueprintRegistryDeps, type RegisterBlueprintOptions } from './blueprint-registry.js';
|
|
52
52
|
import type { DataContract } from '@ggui-ai/protocol';
|
|
53
53
|
/**
|
|
54
54
|
* Inputs for {@link installToCache}.
|
|
@@ -87,7 +87,32 @@ export interface InstallToCacheInput {
|
|
|
87
87
|
* `summarizeContract(contract)`.
|
|
88
88
|
*/
|
|
89
89
|
readonly intent: string;
|
|
90
|
+
/**
|
|
91
|
+
* Where {@link intent} came from. Default `'authored'`. Derive both
|
|
92
|
+
* fields with {@link installedBlueprintIntent} so every install bridge
|
|
93
|
+
* reads a manifest the same way (ggui#1275).
|
|
94
|
+
*/
|
|
95
|
+
readonly intentSource?: BlueprintIntentSource;
|
|
90
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* The intent an installed blueprint registers under, derived from its
|
|
99
|
+
* manifest, and whether that intent is authored (ggui#1275).
|
|
100
|
+
*
|
|
101
|
+
* A manifest's `intent` or `description` states the UI's task —
|
|
102
|
+
* authored. Its `name` is a title ("Weather Card") and `id` is an id:
|
|
103
|
+
* either is a stand-in (`'fallback'`), which the matcher's semantic judge
|
|
104
|
+
* never sees, while exact-key reuse still reaches the row. Blank fields
|
|
105
|
+
* are skipped, so a whitespace-only description falls through to the
|
|
106
|
+
* next source instead of registering an empty intent.
|
|
107
|
+
*/
|
|
108
|
+
export declare function installedBlueprintIntent(manifest: {
|
|
109
|
+
readonly intent?: string;
|
|
110
|
+
readonly description?: string;
|
|
111
|
+
readonly name?: string;
|
|
112
|
+
}, id: string): {
|
|
113
|
+
readonly intent: string;
|
|
114
|
+
readonly intentSource: BlueprintIntentSource;
|
|
115
|
+
};
|
|
91
116
|
/**
|
|
92
117
|
* Bridge: install → cache. Writes a `'template'` blueprint into the
|
|
93
118
|
* scope's vector store with `source: {kind: 'user'}` (an installed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-to-cache.d.ts","sourceRoot":"","sources":["../../src/renders/install-to-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"install-to-cache.d.ts","sourceRoot":"","sources":["../../src/renders/install-to-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,qBAAqB,CAAC;CAC/C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE;IACR,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB,EACD,EAAE,EAAE,MAAM,GACT;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAA;CAAE,CAO3E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,mBAAmB,EAC1B,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,SAAS,CAAC,CAsBpB"}
|