@ggui-ai/mcp-server-handlers 0.24.0 → 0.26.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.
Files changed (196) hide show
  1. package/README.md +2 -2
  2. package/dist/blueprints/search-blueprints.d.ts +5 -5
  3. package/dist/blueprints/search-blueprints.js +5 -5
  4. package/dist/credits/index.d.ts +2 -2
  5. package/dist/credits/index.d.ts.map +1 -1
  6. package/dist/credits/index.js +1 -1
  7. package/dist/credits/list-credit-transactions.d.ts +21 -7
  8. package/dist/credits/list-credit-transactions.d.ts.map +1 -1
  9. package/dist/credits/list-credit-transactions.js +12 -2
  10. package/dist/index.d.ts +2 -5
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +5 -9
  13. package/dist/ops-apps/create-app.d.ts +10 -11
  14. package/dist/ops-apps/create-app.d.ts.map +1 -1
  15. package/dist/ops-apps/create-app.js +12 -13
  16. package/dist/ops-apps/identity.d.ts +9 -8
  17. package/dist/ops-apps/identity.d.ts.map +1 -1
  18. package/dist/ops-apps/identity.js +2 -1
  19. package/dist/ops-apps/index.d.ts +2 -2
  20. package/dist/ops-apps/index.js +2 -2
  21. package/dist/ops-apps/list-apps.d.ts +5 -6
  22. package/dist/ops-apps/list-apps.d.ts.map +1 -1
  23. package/dist/ops-apps/list-apps.js +6 -7
  24. package/dist/ops-apps/set-app-theme.d.ts +12 -8
  25. package/dist/ops-apps/set-app-theme.d.ts.map +1 -1
  26. package/dist/ops-apps/set-app-theme.js +11 -7
  27. package/dist/ops-apps/set-default-app.d.ts +1 -2
  28. package/dist/ops-apps/set-default-app.d.ts.map +1 -1
  29. package/dist/ops-apps/set-default-app.js +1 -2
  30. package/dist/ops-apps/types.d.ts +20 -23
  31. package/dist/ops-apps/types.d.ts.map +1 -1
  32. package/dist/ops-apps/types.js +4 -6
  33. package/dist/ops-blueprint/cache-mirror.d.ts +41 -0
  34. package/dist/ops-blueprint/cache-mirror.d.ts.map +1 -0
  35. package/dist/ops-blueprint/cache-mirror.js +19 -0
  36. package/dist/ops-blueprint/delete.d.ts +18 -0
  37. package/dist/ops-blueprint/delete.d.ts.map +1 -1
  38. package/dist/ops-blueprint/delete.js +21 -2
  39. package/dist/ops-blueprint/errors.d.ts +23 -0
  40. package/dist/ops-blueprint/errors.d.ts.map +1 -1
  41. package/dist/ops-blueprint/errors.js +29 -0
  42. package/dist/ops-blueprint/generate.d.ts +1 -3
  43. package/dist/ops-blueprint/generate.d.ts.map +1 -1
  44. package/dist/ops-blueprint/generate.js +47 -58
  45. package/dist/ops-blueprint/index.d.ts +1 -1
  46. package/dist/ops-blueprint/index.d.ts.map +1 -1
  47. package/dist/ops-blueprint/index.js +1 -1
  48. package/dist/ops-blueprint/list.d.ts.map +1 -1
  49. package/dist/ops-blueprint/list.js +1 -2
  50. package/dist/ops-blueprint/register.d.ts +83 -6
  51. package/dist/ops-blueprint/register.d.ts.map +1 -1
  52. package/dist/ops-blueprint/register.js +261 -158
  53. package/dist/ops-blueprint/update.d.ts +3 -2
  54. package/dist/ops-blueprint/update.d.ts.map +1 -1
  55. package/dist/ops-blueprint/update.js +4 -3
  56. package/dist/renders/blueprint-coverage.d.ts +23 -4
  57. package/dist/renders/blueprint-coverage.d.ts.map +1 -1
  58. package/dist/renders/blueprint-coverage.js +45 -5
  59. package/dist/renders/blueprint-durability.d.ts.map +1 -1
  60. package/dist/renders/blueprint-durability.js +36 -21
  61. package/dist/renders/blueprint-matcher.d.ts +57 -7
  62. package/dist/renders/blueprint-matcher.d.ts.map +1 -1
  63. package/dist/renders/blueprint-matcher.js +154 -36
  64. package/dist/renders/blueprint-registry.d.ts +154 -1
  65. package/dist/renders/blueprint-registry.d.ts.map +1 -1
  66. package/dist/renders/blueprint-registry.js +337 -10
  67. package/dist/renders/build-seed-pool.d.ts.map +1 -1
  68. package/dist/renders/build-seed-pool.js +6 -0
  69. package/dist/renders/cache-trace-sink.d.ts +12 -0
  70. package/dist/renders/cache-trace-sink.d.ts.map +1 -1
  71. package/dist/renders/cache-trace-sink.js +15 -1
  72. package/dist/renders/consume.d.ts +3 -2
  73. package/dist/renders/consume.d.ts.map +1 -1
  74. package/dist/renders/consume.js +50 -15
  75. package/dist/renders/cross-app-refused.d.ts +17 -0
  76. package/dist/renders/cross-app-refused.d.ts.map +1 -0
  77. package/dist/renders/cross-app-refused.js +23 -0
  78. package/dist/renders/decide-handshake.d.ts +47 -1
  79. package/dist/renders/decide-handshake.d.ts.map +1 -1
  80. package/dist/renders/decide-handshake.js +74 -6
  81. package/dist/renders/declare-tool-catalog.d.ts.map +1 -1
  82. package/dist/renders/declare-tool-catalog.js +20 -17
  83. package/dist/renders/export-registry.d.ts +8 -1
  84. package/dist/renders/export-registry.d.ts.map +1 -1
  85. package/dist/renders/export-registry.js +3 -0
  86. package/dist/renders/fits.d.ts +60 -0
  87. package/dist/renders/fits.d.ts.map +1 -0
  88. package/dist/renders/fits.js +114 -0
  89. package/dist/renders/handshake-generation-inputs.d.ts +89 -0
  90. package/dist/renders/handshake-generation-inputs.d.ts.map +1 -0
  91. package/dist/renders/handshake-generation-inputs.js +65 -0
  92. package/dist/renders/handshake.d.ts +6 -42
  93. package/dist/renders/handshake.d.ts.map +1 -1
  94. package/dist/renders/handshake.js +1 -1
  95. package/dist/renders/index.d.ts +10 -5
  96. package/dist/renders/index.d.ts.map +1 -1
  97. package/dist/renders/index.js +10 -3
  98. package/dist/renders/installed-blueprints-provider.d.ts.map +1 -1
  99. package/dist/renders/installed-blueprints-provider.js +3 -1
  100. package/dist/renders/match-precision/pairs.d.ts +6 -5
  101. package/dist/renders/match-precision/pairs.d.ts.map +1 -1
  102. package/dist/renders/match-precision/run-probe.js +1 -2
  103. package/dist/renders/match-precision/topk-probe.js +13 -8
  104. package/dist/renders/record-committed-one-shot.d.ts +18 -3
  105. package/dist/renders/record-committed-one-shot.d.ts.map +1 -1
  106. package/dist/renders/record-committed-one-shot.js +14 -7
  107. package/dist/renders/refresh-ws-token.d.ts +66 -87
  108. package/dist/renders/refresh-ws-token.d.ts.map +1 -1
  109. package/dist/renders/refresh-ws-token.js +93 -89
  110. package/dist/renders/render-identity.d.ts +16 -5
  111. package/dist/renders/render-identity.d.ts.map +1 -1
  112. package/dist/renders/render-identity.js +26 -10
  113. package/dist/renders/render-read-gate.d.ts +85 -0
  114. package/dist/renders/render-read-gate.d.ts.map +1 -0
  115. package/dist/renders/render-read-gate.js +57 -0
  116. package/dist/renders/render.d.ts +77 -27
  117. package/dist/renders/render.d.ts.map +1 -1
  118. package/dist/renders/render.js +269 -95
  119. package/dist/renders/report-render-failure.d.ts +69 -0
  120. package/dist/renders/report-render-failure.d.ts.map +1 -0
  121. package/dist/renders/report-render-failure.js +83 -0
  122. package/dist/renders/runtime-pull.d.ts.map +1 -1
  123. package/dist/renders/runtime-pull.js +6 -0
  124. package/dist/renders/slice-meta-derivation.d.ts +8 -1
  125. package/dist/renders/slice-meta-derivation.d.ts.map +1 -1
  126. package/dist/renders/slice-meta-derivation.js +1 -0
  127. package/dist/renders/submit-action.d.ts +47 -78
  128. package/dist/renders/submit-action.d.ts.map +1 -1
  129. package/dist/renders/submit-action.js +312 -84
  130. package/dist/renders/sync-context.d.ts +3 -1
  131. package/dist/renders/sync-context.d.ts.map +1 -1
  132. package/dist/renders/sync-context.js +53 -20
  133. package/dist/types.d.ts +71 -1
  134. package/dist/types.d.ts.map +1 -1
  135. package/dist/types.js +32 -0
  136. package/package.json +8 -20
  137. package/dist/ops-connector-keys/in-memory-fake.test-util.d.ts +0 -26
  138. package/dist/ops-connector-keys/in-memory-fake.test-util.d.ts.map +0 -1
  139. package/dist/ops-connector-keys/in-memory-fake.test-util.js +0 -60
  140. package/dist/ops-connector-keys/index.d.ts +0 -19
  141. package/dist/ops-connector-keys/index.d.ts.map +0 -1
  142. package/dist/ops-connector-keys/index.js +0 -14
  143. package/dist/ops-connector-keys/issue-connector-key.d.ts +0 -76
  144. package/dist/ops-connector-keys/issue-connector-key.d.ts.map +0 -1
  145. package/dist/ops-connector-keys/issue-connector-key.js +0 -84
  146. package/dist/ops-connector-keys/list-connector-keys.d.ts +0 -58
  147. package/dist/ops-connector-keys/list-connector-keys.d.ts.map +0 -1
  148. package/dist/ops-connector-keys/list-connector-keys.js +0 -39
  149. package/dist/ops-connector-keys/revoke-connector-key.d.ts +0 -32
  150. package/dist/ops-connector-keys/revoke-connector-key.d.ts.map +0 -1
  151. package/dist/ops-connector-keys/revoke-connector-key.js +0 -49
  152. package/dist/ops-connector-keys/types.d.ts +0 -91
  153. package/dist/ops-connector-keys/types.d.ts.map +0 -1
  154. package/dist/ops-connector-keys/types.js +0 -24
  155. package/dist/ops-coupon/in-memory-fake.test-util.d.ts +0 -28
  156. package/dist/ops-coupon/in-memory-fake.test-util.d.ts.map +0 -1
  157. package/dist/ops-coupon/in-memory-fake.test-util.js +0 -66
  158. package/dist/ops-coupon/index.d.ts +0 -15
  159. package/dist/ops-coupon/index.d.ts.map +0 -1
  160. package/dist/ops-coupon/index.js +0 -12
  161. package/dist/ops-coupon/redeem-coupon.d.ts +0 -51
  162. package/dist/ops-coupon/redeem-coupon.d.ts.map +0 -1
  163. package/dist/ops-coupon/redeem-coupon.js +0 -61
  164. package/dist/ops-coupon/types.d.ts +0 -59
  165. package/dist/ops-coupon/types.d.ts.map +0 -1
  166. package/dist/ops-coupon/types.js +0 -38
  167. package/dist/ops-orgs/create-org.d.ts +0 -45
  168. package/dist/ops-orgs/create-org.d.ts.map +0 -1
  169. package/dist/ops-orgs/create-org.js +0 -55
  170. package/dist/ops-orgs/get-org-balance.d.ts +0 -29
  171. package/dist/ops-orgs/get-org-balance.d.ts.map +0 -1
  172. package/dist/ops-orgs/get-org-balance.js +0 -45
  173. package/dist/ops-orgs/in-memory-fake.test-util.d.ts +0 -84
  174. package/dist/ops-orgs/in-memory-fake.test-util.d.ts.map +0 -1
  175. package/dist/ops-orgs/in-memory-fake.test-util.js +0 -209
  176. package/dist/ops-orgs/index.d.ts +0 -33
  177. package/dist/ops-orgs/index.d.ts.map +0 -1
  178. package/dist/ops-orgs/index.js +0 -24
  179. package/dist/ops-orgs/invite-to-org.d.ts +0 -56
  180. package/dist/ops-orgs/invite-to-org.d.ts.map +0 -1
  181. package/dist/ops-orgs/invite-to-org.js +0 -72
  182. package/dist/ops-orgs/list-orgs.d.ts +0 -53
  183. package/dist/ops-orgs/list-orgs.d.ts.map +0 -1
  184. package/dist/ops-orgs/list-orgs.js +0 -38
  185. package/dist/ops-orgs/remove-org-member.d.ts +0 -42
  186. package/dist/ops-orgs/remove-org-member.d.ts.map +0 -1
  187. package/dist/ops-orgs/remove-org-member.js +0 -67
  188. package/dist/ops-orgs/rename-org.d.ts +0 -33
  189. package/dist/ops-orgs/rename-org.d.ts.map +0 -1
  190. package/dist/ops-orgs/rename-org.js +0 -57
  191. package/dist/ops-orgs/revoke-invite.d.ts +0 -38
  192. package/dist/ops-orgs/revoke-invite.d.ts.map +0 -1
  193. package/dist/ops-orgs/revoke-invite.js +0 -53
  194. package/dist/ops-orgs/types.d.ts +0 -209
  195. package/dist/ops-orgs/types.d.ts.map +0 -1
  196. package/dist/ops-orgs/types.js +0 -60
@@ -3,8 +3,9 @@
3
3
  *
4
4
  * Patches the two mutable surfaces of a blueprint:
5
5
  *
6
- * 1. `isOperatorDefault` — pin as the operator default for the
7
- * blueprint's `(appId, contractHash)` group. The store
6
+ * 1. `isOperatorDefault` — mark as the operator default for the
7
+ * blueprint's `(appId, contractHash)` group (orders listings; no
8
+ * render path reads it to choose what serves). The store
8
9
  * automatically clears any prior default in the same group
9
10
  * (see `BlueprintStore.setOperatorDefault`).
10
11
  * 2. `variance` — partial merge into the persisted variance. Keys
@@ -91,7 +92,7 @@ export function createGguiOpsUpdateBlueprintHandler(deps) {
91
92
  name: 'ggui_ops_update_blueprint',
92
93
  title: 'Update blueprint',
93
94
  audience: ['ops'],
94
- description: 'Patch the mutable surface of an existing blueprint: pin/unpin operator-default + merge variance tags. Immutable fields (contractHash, appId, codeS3Url, codeHash, source, createdAt, createdBy) are absent from the schema — to "replace" a row, delete + re-generate. Partial-merge semantics: supplied variance keys overwrite, omitted keys preserve. Empty-string persona is removal. App-scoped variant curation for an app you operate — distinct from the personal saved-blueprint library (the _my_ tools).',
95
+ description: 'Patch the mutable surface of an existing blueprint: set the operator-default mark (it orders blueprint listings and is shown to operators; it does not decide which blueprint serves a render) + merge variance tags. Immutable fields (contractHash, appId, codeS3Url, codeHash, source, createdAt, createdBy) are absent from the schema — to "replace" a row, delete + re-generate. Partial-merge semantics: supplied variance keys overwrite, omitted keys preserve. Empty-string persona is removal. App-scoped variant curation for an app you operate — distinct from the personal saved-blueprint library (the _my_ tools).',
95
96
  inputSchema: opsInputSchema,
96
97
  outputSchema: opsOutputSchema,
97
98
  async handler(rawInput, ctx) {
@@ -23,10 +23,13 @@
23
23
  * proposed contract is the safety valve when a flagged surface is one
24
24
  * the user must directly see or act on.
25
25
  *
26
- * Pure — no store, no LLM. Compares only declared key-SETS; differences
27
- * WITHIN a shared surface (a relabeled action, an `id` vs `id+done`
28
- * payload schema) are tolerated, because atomic reuse hands the agent
29
- * the cached contract and it drives that contract, not its own draft.
26
+ * Pure — no store, no LLM. Compares declared key-SETS, plus ONE thing
27
+ * inside a shared action: the members that change what the runtime does
28
+ * with a gesture ({@link LOAD_BEARING_ACTION_MEMBERS}). Every other
29
+ * difference WITHIN a shared surface (a relabeled action, an `id` vs
30
+ * `id+done` payload schema) is tolerated, because atomic reuse hands the
31
+ * agent the cached contract and it drives that contract, not its own
32
+ * draft.
30
33
  */
31
34
  import type { DataContract } from '@ggui-ai/protocol';
32
35
  /** The request-declared surfaces a candidate fails to cover. Empty
@@ -37,7 +40,23 @@ export interface CoverageGap {
37
40
  readonly context: readonly string[];
38
41
  readonly streams: readonly string[];
39
42
  readonly gadgets: readonly string[];
43
+ /**
44
+ * `<action>.<member>` for every load-bearing member the request declares
45
+ * on an action BOTH contracts carry, where the candidate's entry does not
46
+ * say the same (ggui#1428). An action the candidate lacks altogether is in
47
+ * {@link actions}, never here.
48
+ */
49
+ readonly actionMembers: readonly string[];
40
50
  }
51
+ /**
52
+ * The action-entry members that change what the runtime DOES with a gesture,
53
+ * as opposed to how the action reads: `oneShot` arms the single-dispatch
54
+ * guard, `confirm` asks before firing, `nextStep` names the tool the agent is
55
+ * routed to. A stored card that lacks one the draft declares serves a card
56
+ * without that behaviour, so the agent is told. `label`, `description`,
57
+ * `icon`, `example` and `schema` stay tolerated differences.
58
+ */
59
+ export declare const LOAD_BEARING_ACTION_MEMBERS: readonly ["oneShot", "confirm", "nextStep"];
41
60
  /**
42
61
  * Compute the surfaces the request declares that the candidate does NOT.
43
62
  * A wholly-empty gap means the candidate covers the request.
@@ -1 +1 @@
1
- {"version":3,"file":"blueprint-coverage.d.ts","sourceRoot":"","sources":["../../src/renders/blueprint-coverage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD;4DAC4D;AAC5D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAmBD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,YAAY,GACpB,WAAW,CAWb;AAED;2DAC2D;AAC3D,wBAAgB,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAS9E"}
1
+ {"version":3,"file":"blueprint-coverage.d.ts","sourceRoot":"","sources":["../../src/renders/blueprint-coverage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD;4DAC4D;AAC5D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,6CAA8C,CAAC;AA6CvF;;;GAGG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,YAAY,GACpB,WAAW,CAYb;AAED;2DAC2D;AAC3D,wBAAgB,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAU9E"}
@@ -23,12 +23,50 @@
23
23
  * proposed contract is the safety valve when a flagged surface is one
24
24
  * the user must directly see or act on.
25
25
  *
26
- * Pure — no store, no LLM. Compares only declared key-SETS; differences
27
- * WITHIN a shared surface (a relabeled action, an `id` vs `id+done`
28
- * payload schema) are tolerated, because atomic reuse hands the agent
29
- * the cached contract and it drives that contract, not its own draft.
26
+ * Pure — no store, no LLM. Compares declared key-SETS, plus ONE thing
27
+ * inside a shared action: the members that change what the runtime does
28
+ * with a gesture ({@link LOAD_BEARING_ACTION_MEMBERS}). Every other
29
+ * difference WITHIN a shared surface (a relabeled action, an `id` vs
30
+ * `id+done` payload schema) is tolerated, because atomic reuse hands the
31
+ * agent the cached contract and it drives that contract, not its own
32
+ * draft.
30
33
  */
31
34
  import { listContractGadgets } from '@ggui-ai/protocol';
35
+ /**
36
+ * The action-entry members that change what the runtime DOES with a gesture,
37
+ * as opposed to how the action reads: `oneShot` arms the single-dispatch
38
+ * guard, `confirm` asks before firing, `nextStep` names the tool the agent is
39
+ * routed to. A stored card that lacks one the draft declares serves a card
40
+ * without that behaviour, so the agent is told. `label`, `description`,
41
+ * `icon`, `example` and `schema` stay tolerated differences.
42
+ */
43
+ export const LOAD_BEARING_ACTION_MEMBERS = ['oneShot', 'confirm', 'nextStep'];
44
+ /**
45
+ * Members the request DECLARES on `name` that the candidate's entry does not
46
+ * match. One direction, like the rest of coverage: a boolean member counts as
47
+ * declared only when `true` (`false` and absent both mean "off"), `nextStep`
48
+ * when present. A candidate that is stricter than the request (it carries a
49
+ * member the request does not) is not a gap. That holds for `nextStep` too,
50
+ * because the case that would matter there is already refused elsewhere: a
51
+ * stored `nextStep` naming a tool the requesting agent does not declare makes
52
+ * the candidate unfulfillable, and `isFulfillable` declines it before it is
53
+ * ever proposed (`blueprint-fulfillability.ts`).
54
+ */
55
+ function mismatchedActionMembers(request, candidate) {
56
+ const out = [];
57
+ for (const [name, wanted] of Object.entries(request.actionSpec ?? {})) {
58
+ const stored = candidate.actionSpec?.[name];
59
+ if (stored === undefined)
60
+ continue;
61
+ if (wanted.oneShot === true && stored.oneShot !== true)
62
+ out.push(`${name}.oneShot`);
63
+ if (wanted.confirm === true && stored.confirm !== true)
64
+ out.push(`${name}.confirm`);
65
+ if (wanted.nextStep !== undefined && stored.nextStep !== wanted.nextStep)
66
+ out.push(`${name}.nextStep`);
67
+ }
68
+ return out.sort();
69
+ }
32
70
  function keySet(map) {
33
71
  return new Set(Object.keys(map ?? {}));
34
72
  }
@@ -51,6 +89,7 @@ export function coverageGap(candidate, request) {
51
89
  context: missing(keySet(request.contextSpec), keySet(candidate.contextSpec)),
52
90
  streams: missing(keySet(request.streamSpec), keySet(candidate.streamSpec)),
53
91
  gadgets: missing(gadgetIdSet(request), gadgetIdSet(candidate)),
92
+ actionMembers: mismatchedActionMembers(request, candidate),
54
93
  };
55
94
  }
56
95
  /** True iff `candidate` declares every surface `request` declares —
@@ -61,5 +100,6 @@ export function covers(candidate, request) {
61
100
  gap.props.length === 0 &&
62
101
  gap.context.length === 0 &&
63
102
  gap.streams.length === 0 &&
64
- gap.gadgets.length === 0);
103
+ gap.gadgets.length === 0 &&
104
+ gap.actionMembers.length === 0);
65
105
  }
@@ -1 +1 @@
1
- {"version":3,"file":"blueprint-durability.d.ts","sourceRoot":"","sources":["../../src/renders/blueprint-durability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE9E;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAChC,gCAAgC,GAChC,6BAA6B,GAC7B,+BAA+B,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,2BAA2B;IACtC,sEAAsE;;IAEtE,gEAAgE;;IAEhE;;;;;;;OAOG;;CAEwD,CAAC;AAW9D;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,GAAE,gBAAgB,CAAC,WAAW,CAAW,GACjD,gBAAgB,CA4BlB;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,uBAAuB,GAAG,SAAS,EACzC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,iBAAiB,EAC5B,SAAS,GAAE,gBAAgB,CAAC,WAAW,CAAW,GACjD,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
1
+ {"version":3,"file":"blueprint-durability.d.ts","sourceRoot":"","sources":["../../src/renders/blueprint-durability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE9E;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAChC,gCAAgC,GAChC,6BAA6B,GAC7B,+BAA+B,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,2BAA2B;IACtC,sEAAsE;;IAEtE,gEAAgE;;IAEhE;;;;;;;OAOG;;CAEwD,CAAC;AAW9D;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,GAAE,gBAAgB,CAAC,WAAW,CAAW,GACjD,gBAAgB,CAiClB;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,uBAAuB,GAAG,SAAS,EACzC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,iBAAiB,EAC5B,SAAS,GAAE,gBAAgB,CAAC,WAAW,CAAW,GACjD,OAAO,CAAC,IAAI,CAAC,CA0Df"}
@@ -56,6 +56,11 @@ export function projectDurableBlueprint(blueprint, appId, codeHash, createdBy =
56
56
  ...(blueprint.sourceCodeHash !== undefined
57
57
  ? { sourceCodeHash: blueprint.sourceCodeHash }
58
58
  : {}),
59
+ // ggui#1280 — the minting engine's build, admitted at registration.
60
+ // Written once here at mint (a dedup never reaches this projection) and
61
+ // never rewritten. The registry's vector-store row carries the same
62
+ // value (ggui#1476).
63
+ ...(blueprint.build !== undefined ? { build: blueprint.build } : {}),
59
64
  };
60
65
  }
61
66
  /**
@@ -68,12 +73,42 @@ export function projectDurableBlueprint(blueprint, appId, codeHash, createdBy =
68
73
  */
69
74
  export async function writeBlueprintDurably(deps, appId, blueprint, createdBy = 'agent') {
70
75
  const blueprintStore = deps?.blueprintStore;
76
+ const codeStore = deps?.codeStore;
77
+ // Authored source body, own try/catch — a distinct
78
+ // failure mode from the compiled-code write below. `sourceCodeHash`
79
+ // is already decided (computed at registration, already on the
80
+ // vector-store row); this write just persists the body it points at.
81
+ // ggui#1493 — it is written whenever that hash was stamped, WITH OR
82
+ // WITHOUT a durable blueprint store: the cache row's `sourceCodeHash`
83
+ // references it when it is written, so it is not written as an orphan (a
84
+ // later eviction of that capped cache row can still leave it
85
+ // unreferenced in a code-store-only deployment), and gating it on
86
+ // the durable store left a cache row pointing at nothing wherever a
87
+ // code store was bound alone. A failure here does NOT withhold
88
+ // `sourceCodeHash` from the durable row below (contrast `codeHash`,
89
+ // which IS withheld on failure) — see `projectDurableBlueprint`'s
90
+ // comment. The degradation is honest and non-fatal: a reuse read that
91
+ // resolves the hash but finds `codeStore.get(hash) === null`
92
+ // gracefully skips, surfacing as the typed `render_source_unavailable`
93
+ // at the tool layer, never an error.
94
+ if (codeStore &&
95
+ blueprint.sourceCode !== undefined &&
96
+ blueprint.sourceCodeHash !== undefined) {
97
+ try {
98
+ await codeStore.put(blueprint.sourceCodeHash, blueprint.sourceCode);
99
+ }
100
+ catch (err) {
101
+ logDurabilityFailure(SOURCE_WRITE_FAILED, blueprint, appId, err);
102
+ }
103
+ }
104
+ // The compiled body and the durable row need a durable store: without
105
+ // one, nothing references the compiled body (the cache row carries the
106
+ // code inline), so writing it would be pure orphan.
71
107
  if (!blueprintStore)
72
108
  return;
73
109
  // Body first — see the module docstring on why an orphan body beats a
74
110
  // row that points at nothing.
75
111
  let codeHash;
76
- const codeStore = deps?.codeStore;
77
112
  if (codeStore && blueprint.componentCode.length > 0) {
78
113
  try {
79
114
  const hash = codeStore.hashOf(blueprint.componentCode);
@@ -84,26 +119,6 @@ export async function writeBlueprintDurably(deps, appId, blueprint, createdBy =
84
119
  logDurabilityFailure(CODE_WRITE_FAILED, blueprint, appId, err);
85
120
  }
86
121
  }
87
- // Authored source body, own try/catch — a distinct
88
- // failure mode from the compiled-code write above. `sourceCodeHash`
89
- // is already decided (computed at registration, already on the
90
- // vector-store row); this write just persists the body it points at.
91
- // A failure here does NOT withhold `sourceCodeHash` from the durable
92
- // row below (contrast `codeHash`, which IS withheld on failure) — see
93
- // `projectDurableBlueprint`'s comment. The degradation is honest and
94
- // non-fatal: a reuse read that resolves the hash but finds
95
- // `codeStore.get(hash) === null` gracefully skips, surfacing as the
96
- // typed `render_source_unavailable` at the tool layer, never an error.
97
- if (codeStore &&
98
- blueprint.sourceCode !== undefined &&
99
- blueprint.sourceCodeHash !== undefined) {
100
- try {
101
- await codeStore.put(blueprint.sourceCodeHash, blueprint.sourceCode);
102
- }
103
- catch (err) {
104
- logDurabilityFailure(SOURCE_WRITE_FAILED, blueprint, appId, err);
105
- }
106
- }
107
122
  try {
108
123
  await blueprintStore.put(projectDurableBlueprint(blueprint, appId, codeHash, createdBy));
109
124
  }
@@ -46,6 +46,7 @@
46
46
  */
47
47
  import type { LLMCaller } from '@ggui-ai/negotiator';
48
48
  import { type RerankJudge } from '@ggui-ai/negotiator';
49
+ import { type FitDeclined, type FitVerdict, type RequestFitFacts } from './fits.js';
49
50
  import { type DataContract, type BlueprintVariance } from '@ggui-ai/protocol';
50
51
  import { type CacheTraceStrategy } from './cache-trace-sink.js';
51
52
  import { type Blueprint, type BlueprintCandidate, type BlueprintKind, type BlueprintRegistryDeps } from './blueprint-registry.js';
@@ -63,6 +64,15 @@ export interface BlueprintMatchHit {
63
64
  readonly cosine: number;
64
65
  /** Free-text reason for trace logs / handshake reason field. */
65
66
  readonly reason: string;
67
+ /**
68
+ * ggui#1427 — the served candidate's fit verdict. A semantic hit fits by
69
+ * construction (the judge ranked only fitting candidates). An exact-key
70
+ * hit is OBSERVED, never declined: `fits: false` here is a would-miss,
71
+ * named by kind, for the deployment to count.
72
+ */
73
+ readonly fit?: FitVerdict;
74
+ /** ggui#1427 — candidates the pre-filter dropped before the judge (semantic path only). */
75
+ readonly fitDeclined?: readonly FitDeclined[];
66
76
  /** When strategy='semantic', the LLM judge's confidence; undefined for exact-key. */
67
77
  readonly judgeConfidence?: number;
68
78
  /**
@@ -92,9 +102,16 @@ export interface BlueprintMatchMiss {
92
102
  * when LLM was unavailable or rerank short-circuited.
93
103
  */
94
104
  readonly judgeReason?: string;
105
+ /** ggui#1427 — candidates the pre-filter dropped before the judge, named by miss kind (semantic path only). */
106
+ readonly fitDeclined?: readonly FitDeclined[];
95
107
  }
96
108
  export type BlueprintMatchResult = BlueprintMatchHit | BlueprintMatchMiss;
97
109
  /** Compose deps for the matcher. */
110
+ /** A judge with the confidence threshold it was measured on (ggui#1235). */
111
+ export interface RerankPair {
112
+ readonly judge: RerankJudge;
113
+ readonly threshold: number;
114
+ }
98
115
  export interface MatchBlueprintDeps {
99
116
  readonly registry: BlueprintRegistryDeps;
100
117
  /**
@@ -116,10 +133,7 @@ export interface MatchBlueprintDeps {
116
133
  * chain) passes `threshold: 0` and declines only with `matchId: null`.
117
134
  * Wins over a bare `llm` when both are given.
118
135
  */
119
- readonly rerank?: {
120
- readonly judge: RerankJudge;
121
- readonly threshold: number;
122
- };
136
+ readonly rerank?: RerankPair;
123
137
  /**
124
138
  * Optional marketplace-install bridge. When set, the matcher STARTS
125
139
  * `ensureCached(scope)` and reads the exact key while it runs: a hit
@@ -143,9 +157,11 @@ export interface MatchBlueprintOptions {
143
157
  /** RAG top-K. Default 20 — balance between recall and prompt cost. */
144
158
  readonly topK?: number;
145
159
  /**
146
- * Minimum cosine a candidate needs to reach the LLM judge. Default 0.2
147
- * (see the DEFAULT_MIN_COSINE note for why it is not
148
- * `ggui_search_blueprints`' 0.3). Applied PER CANDIDATE (ggui#1275): a
160
+ * Minimum cosine a candidate needs to reach the LLM judge. Default: one
161
+ * floor per query kind — 0.50 when the request carries a contract (its
162
+ * query is composed like the stored vectors), 0.2 when it does not (its
163
+ * query embeds the intent alone, on a lower scale); see the
164
+ * DEFAULT_MIN_COSINE_* note. A value here overrides both. Applied PER CANDIDATE (ggui#1275): a
149
165
  * candidate under the floor is never offered to the judge, so it can
150
166
  * never become a reuse; when even top-1 is under it, the judge is skipped
151
167
  * entirely and the rerank cost is saved.
@@ -164,7 +180,35 @@ export interface MatchBlueprintOptions {
164
180
  * stability-sensitive caller cannot afford (ggui#607).
165
181
  */
166
182
  readonly disableSemantic?: boolean;
183
+ /**
184
+ * ggui#1568 — WHY `disableSemantic` is set, so the trace never names a
185
+ * cause that did not hold. `'exact-only-policy'` (the default) is the
186
+ * ggui#607 reuse policy. `'exclusion-unavailable'` means the deployment
187
+ * could not say which rows are reserved from the semantic tier
188
+ * ({@link excludeFromSemantic}), so it turned the tier off rather than
189
+ * risk offering one. Read only when `disableSemantic` is true.
190
+ */
191
+ readonly disableSemanticCause?: 'exact-only-policy' | 'exclusion-unavailable';
192
+ /**
193
+ * ggui#1568 — rows the deployment reserves from the semantic tier, each
194
+ * named by {@link semanticExclusionKey}. A named row is dropped straight
195
+ * after retrieval, so it is never offered to the judge, never returned as
196
+ * a candidate and never reused by similarity. It stays reachable by its
197
+ * exact key: exclusion governs how a row is FOUND, never whether it can be
198
+ * served to a request that names it. Retrieval over-fetches by the set's
199
+ * size, so the pool the judge ranks is still `topK` deep. A vector store
200
+ * that clamps its `topK` returns fewer rows than asked, and the pool is
201
+ * then shallower: fewer reuses, never a reserved row.
202
+ */
203
+ readonly excludeFromSemantic?: ReadonlySet<string>;
167
204
  }
205
+ /**
206
+ * ggui#1568 — the key {@link MatchBlueprintOptions.excludeFromSemantic}
207
+ * names a row by: its `(contractKey, variantKey)` pair, the same pair the
208
+ * exact tier resolves. Unambiguous by construction (JSON array), so no two
209
+ * different pairs share a key.
210
+ */
211
+ export declare function semanticExclusionKey(contractKey: string, variantKey: string): string;
168
212
  /**
169
213
  * Walk the matcher and return the decision.
170
214
  *
@@ -177,5 +221,11 @@ export declare function matchBlueprint(deps: MatchBlueprintDeps, scope: string,
177
221
  readonly intent: string;
178
222
  readonly contract?: DataContract;
179
223
  readonly variance?: BlueprintVariance;
224
+ /**
225
+ * ggui#1427 — the request's declared fit facts (canvas, aesthetic
226
+ * preset, direction digest). Absent facts evaluate nothing; data-shape
227
+ * runs from `contract` alone.
228
+ */
229
+ readonly fit?: RequestFitFacts;
180
230
  }, options?: MatchBlueprintOptions): Promise<BlueprintMatchResult>;
181
231
  //# sourceMappingURL=blueprint-matcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blueprint-matcher.d.ts","sourceRoot":"","sources":["../../src/renders/blueprint-matcher.ts"],"names":[],"mappings":"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"}
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;AACrD,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAQ,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAC1F,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;AAcxE,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;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;IAC1B,2FAA2F;IAC3F,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9C,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;IAC9B,+GAA+G;IAC/G,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;CAC/C;AAED,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AAE1E,oCAAoC;AACpC,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IACzC;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;IACzB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7B;;;;;;;;;;;;;;OAcG;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;;;;;;;;;OASG;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;IACnC;;;;;;;OAOG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,mBAAmB,GAAG,uBAAuB,CAAC;IAC9E;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACpD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpF;AAqCD;;;;;;;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;IACtC;;;;OAIG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC;CAChC,EACD,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,oBAAoB,CAAC,CA+d/B"}