@ggui-ai/mcp-server-handlers 0.2.0-alpha.4 → 0.4.0-rc.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/app-discovery/list-gadgets.d.ts +15 -14
- package/dist/app-discovery/list-gadgets.d.ts.map +1 -1
- package/dist/app-discovery/list-gadgets.js +18 -15
- package/dist/blueprints/describe-data-contract-format.d.ts.map +1 -1
- package/dist/blueprints/describe-data-contract-format.js +35 -8
- package/dist/blueprints/list-featured-blueprints.d.ts.map +1 -1
- package/dist/blueprints/list-featured-blueprints.js +8 -4
- package/dist/blueprints/render-blueprint.d.ts +1 -1
- package/dist/blueprints/render-blueprint.d.ts.map +1 -1
- package/dist/blueprints/render-blueprint.js +4 -6
- package/dist/blueprints/search-blueprints.d.ts +3 -3
- package/dist/blueprints/search-blueprints.d.ts.map +1 -1
- package/dist/blueprints/search-blueprints.js +33 -47
- package/dist/credits/list-credit-transactions.d.ts +2 -2
- package/dist/credits/list-credit-transactions.d.ts.map +1 -1
- package/dist/credits/list-credit-transactions.js +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/ops-apps/create-app.d.ts +7 -0
- package/dist/ops-apps/create-app.d.ts.map +1 -1
- package/dist/ops-apps/create-app.js +6 -2
- package/dist/ops-blueprint/errors.d.ts +8 -0
- package/dist/ops-blueprint/errors.d.ts.map +1 -1
- package/dist/ops-blueprint/errors.js +8 -0
- package/dist/ops-blueprint/generate.d.ts +11 -7
- package/dist/ops-blueprint/generate.d.ts.map +1 -1
- package/dist/ops-blueprint/generate.js +32 -11
- package/dist/ops-blueprint/list.d.ts +4 -2
- package/dist/ops-blueprint/list.d.ts.map +1 -1
- package/dist/ops-blueprint/list.js +9 -4
- package/dist/ops-blueprint/register.d.ts +7 -12
- package/dist/ops-blueprint/register.d.ts.map +1 -1
- package/dist/ops-blueprint/register.js +24 -20
- package/dist/ops-blueprint/update.d.ts +1 -1
- package/dist/ops-blueprint/update.js +2 -2
- package/dist/renders/agentcaps-measurement.d.ts +68 -0
- package/dist/renders/agentcaps-measurement.d.ts.map +1 -0
- package/dist/renders/agentcaps-measurement.js +39 -0
- package/dist/renders/{apply-render-patch.d.ts → apply-ggui-session-patch.d.ts} +9 -9
- package/dist/renders/apply-ggui-session-patch.d.ts.map +1 -0
- package/dist/renders/{apply-render-patch.js → apply-ggui-session-patch.js} +5 -6
- package/dist/renders/assert-action-contract.d.ts +2 -2
- package/dist/renders/assert-action-contract.js +2 -2
- package/dist/renders/assert-contract-no-retired-fields.d.ts +1 -1
- package/dist/renders/assert-contract-no-retired-fields.d.ts.map +1 -1
- package/dist/renders/assert-contract-no-retired-fields.js +8 -7
- package/dist/renders/assert-gadgets.d.ts +12 -12
- package/dist/renders/assert-gadgets.js +15 -15
- package/dist/renders/assert-generator.d.ts +14 -31
- package/dist/renders/assert-generator.d.ts.map +1 -1
- package/dist/renders/assert-generator.js +14 -38
- package/dist/renders/assert-no-duplicate-gadget-hooks.d.ts +3 -2
- package/dist/renders/assert-no-duplicate-gadget-hooks.d.ts.map +1 -1
- package/dist/renders/assert-no-duplicate-gadget-hooks.js +4 -3
- package/dist/renders/assert-props-contract.d.ts +1 -1
- package/dist/renders/assert-props-contract.js +1 -1
- package/dist/renders/assert-public-env.d.ts +5 -5
- package/dist/renders/assert-public-env.js +5 -5
- package/dist/renders/assert-stream-contract.d.ts +3 -3
- package/dist/renders/assert-stream-contract.js +3 -3
- package/dist/renders/blueprint-coverage.d.ts +49 -0
- package/dist/renders/blueprint-coverage.d.ts.map +1 -0
- package/dist/renders/blueprint-coverage.js +65 -0
- package/dist/renders/blueprint-fulfillability.d.ts +53 -0
- package/dist/renders/blueprint-fulfillability.d.ts.map +1 -0
- package/dist/renders/blueprint-fulfillability.js +100 -0
- package/dist/renders/blueprint-matcher.d.ts +16 -4
- package/dist/renders/blueprint-matcher.d.ts.map +1 -1
- package/dist/renders/blueprint-matcher.js +87 -39
- package/dist/renders/blueprint-registry.d.ts +129 -104
- package/dist/renders/blueprint-registry.d.ts.map +1 -1
- package/dist/renders/blueprint-registry.js +278 -75
- package/dist/renders/build-seed-pool.d.ts +27 -0
- package/dist/renders/build-seed-pool.d.ts.map +1 -0
- package/dist/renders/build-seed-pool.js +100 -0
- package/dist/renders/cache-trace-sink.d.ts +39 -16
- package/dist/renders/cache-trace-sink.d.ts.map +1 -1
- package/dist/renders/cache-trace-sink.js +84 -0
- package/dist/renders/canonicalize-tool-identity.d.ts +21 -0
- package/dist/renders/canonicalize-tool-identity.d.ts.map +1 -0
- package/dist/renders/canonicalize-tool-identity.js +19 -0
- package/dist/renders/client-observations.d.ts +1 -1
- package/dist/renders/client-observations.js +1 -1
- package/dist/renders/consume.d.ts +37 -34
- package/dist/renders/consume.d.ts.map +1 -1
- package/dist/renders/consume.js +57 -79
- package/dist/renders/decide-handshake.d.ts +158 -0
- package/dist/renders/decide-handshake.d.ts.map +1 -0
- package/dist/renders/decide-handshake.js +487 -0
- package/dist/renders/declare-tool-catalog.d.ts +81 -0
- package/dist/renders/declare-tool-catalog.d.ts.map +1 -0
- package/dist/renders/declare-tool-catalog.js +84 -0
- package/dist/renders/errors.d.ts +43 -26
- package/dist/renders/errors.d.ts.map +1 -1
- package/dist/renders/errors.js +25 -25
- package/dist/renders/export-registry.d.ts +38 -0
- package/dist/renders/export-registry.d.ts.map +1 -0
- package/dist/renders/export-registry.js +66 -0
- package/dist/renders/fetch-gadget-types.d.ts +3 -3
- package/dist/renders/fetch-gadget-types.js +3 -3
- package/dist/renders/generation-cache.d.ts +61 -50
- package/dist/renders/generation-cache.d.ts.map +1 -1
- package/dist/renders/generation-cache.js +5 -49
- package/dist/renders/{get-render.d.ts → get-session.d.ts} +17 -17
- package/dist/renders/get-session.d.ts.map +1 -0
- package/dist/renders/{get-render.js → get-session.js} +33 -33
- package/dist/renders/handle-stream.d.ts +7 -7
- package/dist/renders/handle-stream.d.ts.map +1 -1
- package/dist/renders/handle-stream.js +2 -2
- package/dist/renders/handshake.d.ts +48 -22
- package/dist/renders/handshake.d.ts.map +1 -1
- package/dist/renders/handshake.js +40 -20
- package/dist/renders/import-gate.d.ts +50 -0
- package/dist/renders/import-gate.d.ts.map +1 -0
- package/dist/renders/import-gate.js +52 -0
- package/dist/renders/index.d.ts +27 -18
- package/dist/renders/index.d.ts.map +1 -1
- package/dist/renders/index.js +23 -15
- package/dist/renders/install-to-cache.d.ts +19 -14
- package/dist/renders/install-to-cache.d.ts.map +1 -1
- package/dist/renders/install-to-cache.js +22 -16
- package/dist/renders/installed-blueprints-provider.d.ts +5 -4
- package/dist/renders/installed-blueprints-provider.d.ts.map +1 -1
- package/dist/renders/installed-blueprints-provider.js +0 -0
- package/dist/renders/lifecycle.d.ts +37 -0
- package/dist/renders/lifecycle.d.ts.map +1 -0
- package/dist/renders/lifecycle.js +21 -0
- package/dist/renders/{list-renders.d.ts → list-sessions.d.ts} +18 -18
- package/dist/renders/list-sessions.d.ts.map +1 -0
- package/dist/renders/{list-renders.js → list-sessions.js} +15 -15
- package/dist/renders/no-credentials-card.d.ts +7 -7
- package/dist/renders/no-credentials-card.d.ts.map +1 -1
- package/dist/renders/no-credentials-card.js +4 -4
- package/dist/renders/payload-trace-sink.d.ts +7 -7
- package/dist/renders/payload-trace-sink.d.ts.map +1 -1
- package/dist/renders/payload-trace-sink.js +5 -5
- package/dist/renders/provisional-preview.d.ts +48 -50
- package/dist/renders/provisional-preview.d.ts.map +1 -1
- package/dist/renders/provisional-preview.js +22 -25
- package/dist/renders/refresh-ws-token.d.ts +15 -9
- package/dist/renders/refresh-ws-token.d.ts.map +1 -1
- package/dist/renders/refresh-ws-token.js +3 -3
- package/dist/renders/render.d.ts +177 -251
- package/dist/renders/render.d.ts.map +1 -1
- package/dist/renders/render.js +651 -410
- package/dist/renders/seed-pool-source.d.ts +17 -0
- package/dist/renders/seed-pool-source.d.ts.map +1 -0
- package/dist/renders/slice-meta-derivation.d.ts +185 -60
- package/dist/renders/slice-meta-derivation.d.ts.map +1 -1
- package/dist/renders/slice-meta-derivation.js +100 -77
- package/dist/renders/stream-replay-ops.d.ts +29 -29
- package/dist/renders/stream-replay-ops.d.ts.map +1 -1
- package/dist/renders/stream-replay-ops.js +35 -35
- package/dist/renders/stream.d.ts +5 -5
- package/dist/renders/stream.d.ts.map +1 -1
- package/dist/renders/stream.js +14 -16
- package/dist/renders/submit-action.d.ts +9 -9
- package/dist/renders/submit-action.d.ts.map +1 -1
- package/dist/renders/submit-action.js +16 -16
- package/dist/renders/sync-context.d.ts +9 -9
- package/dist/renders/sync-context.d.ts.map +1 -1
- package/dist/renders/sync-context.js +29 -22
- package/dist/renders/tenancy.d.ts +22 -0
- package/dist/renders/tenancy.d.ts.map +1 -0
- package/dist/renders/tenancy.js +15 -0
- package/dist/renders/tool-identity-catalog-store.d.ts +35 -0
- package/dist/renders/tool-identity-catalog-store.d.ts.map +1 -0
- package/dist/renders/tool-identity-catalog-store.js +15 -0
- package/dist/renders/update.d.ts +76 -103
- package/dist/renders/update.d.ts.map +1 -1
- package/dist/renders/update.js +112 -109
- package/dist/types.d.ts +83 -28
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +24 -0
- package/package.json +12 -25
- package/dist/contract-tests/index.d.ts +0 -20
- package/dist/contract-tests/index.d.ts.map +0 -1
- package/dist/renders/apply-render-patch.d.ts.map +0 -1
- package/dist/renders/canvas-lifecycle.d.ts +0 -36
- package/dist/renders/canvas-lifecycle.d.ts.map +0 -1
- package/dist/renders/canvas-lifecycle.js +0 -20
- package/dist/renders/get-render.d.ts.map +0 -1
- package/dist/renders/list-renders.d.ts.map +0 -1
- /package/dist/{contract-tests/index.js → renders/seed-pool-source.js} +0 -0
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
* `ggui_list_gadgets` — per-app browser-capability gadget
|
|
3
3
|
* catalog discovery tool.
|
|
4
4
|
*
|
|
5
|
-
* Returns the
|
|
6
|
-
*
|
|
7
|
-
* `@ggui-ai/protocol`)
|
|
8
|
-
*
|
|
5
|
+
* Returns the app's effective `GadgetDescriptor` catalog: the
|
|
6
|
+
* first-party stdlib floor (`STDLIB_GADGETS` from
|
|
7
|
+
* `@ggui-ai/protocol`) with any operator-declared per-app packages
|
|
8
|
+
* (`ggui.json#app.gadgets`, pushed via the CLI's config-push) layered
|
|
9
|
+
* on top — a declared package wins on a `package`-name collision.
|
|
9
10
|
*
|
|
10
11
|
* ## Behavior
|
|
11
12
|
*
|
|
@@ -15,14 +16,16 @@
|
|
|
15
16
|
* 2. When `appId` is supplied explicitly, asserts it matches
|
|
16
17
|
* `ctx.appId`; cross-tenant requests fail with
|
|
17
18
|
* {@link AppAccessDeniedError}.
|
|
18
|
-
* 3. Reads `app.gadgets` from the bound {@link AppMetadataStore}
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* the
|
|
19
|
+
* 3. Reads `app.gadgets` from the bound {@link AppMetadataStore}
|
|
20
|
+
* and resolves the effective catalog via `resolveAppGadgets`
|
|
21
|
+
* (stdlib floor + declared extensions). When the store returns
|
|
22
|
+
* `null` (app not registered — common for OSS sandbox apps that
|
|
23
|
+
* bypass an explicit register call) the resolution yields
|
|
24
|
+
* exactly `STDLIB_GADGETS`, so callers always get a meaningful
|
|
25
|
+
* catalog. This is a permitted-error path, not a tenancy
|
|
26
|
+
* escape — `ctx.appId` was already proved by the auth adapter;
|
|
27
|
+
* the absence of a registry row just means the deployment runs
|
|
28
|
+
* default-seeded.
|
|
26
29
|
*
|
|
27
30
|
* ## Audience
|
|
28
31
|
*
|
|
@@ -53,7 +56,6 @@ declare const outputSchema: {
|
|
|
53
56
|
example: z.ZodOptional<z.ZodType<import("@ggui-ai/protocol").JsonValue, unknown, z.core.$ZodTypeInternals<import("@ggui-ai/protocol").JsonValue, unknown>>>;
|
|
54
57
|
permission: z.ZodOptional<z.ZodString>;
|
|
55
58
|
gotchas: z.ZodOptional<z.ZodString>;
|
|
56
|
-
required: z.ZodOptional<z.ZodBoolean>;
|
|
57
59
|
hook: z.ZodString;
|
|
58
60
|
}, z.core.$strict>, z.ZodObject<{
|
|
59
61
|
description: z.ZodOptional<z.ZodString>;
|
|
@@ -61,7 +63,6 @@ declare const outputSchema: {
|
|
|
61
63
|
example: z.ZodOptional<z.ZodType<import("@ggui-ai/protocol").JsonValue, unknown, z.core.$ZodTypeInternals<import("@ggui-ai/protocol").JsonValue, unknown>>>;
|
|
62
64
|
permission: z.ZodOptional<z.ZodString>;
|
|
63
65
|
gotchas: z.ZodOptional<z.ZodString>;
|
|
64
|
-
required: z.ZodOptional<z.ZodBoolean>;
|
|
65
66
|
component: z.ZodString;
|
|
66
67
|
}, z.core.$strict>]>>;
|
|
67
68
|
version: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-gadgets.d.ts","sourceRoot":"","sources":["../../src/app-discovery/list-gadgets.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"list-gadgets.d.ts","sourceRoot":"","sources":["../../src/app-discovery/list-gadgets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAkB,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjE,QAAA,MAAM,WAAW;;CAQP,CAAC;AAkBX,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAER,CAAC;AAEX,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;CAC7C;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC/C;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,0BAA0B,GAC/B,aAAa,CACd,OAAO,WAAW,EAClB,OAAO,YAAY,EACnB,qBAAqB,CACtB,CA6BA"}
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
* `ggui_list_gadgets` — per-app browser-capability gadget
|
|
3
3
|
* catalog discovery tool.
|
|
4
4
|
*
|
|
5
|
-
* Returns the
|
|
6
|
-
*
|
|
7
|
-
* `@ggui-ai/protocol`)
|
|
8
|
-
*
|
|
5
|
+
* Returns the app's effective `GadgetDescriptor` catalog: the
|
|
6
|
+
* first-party stdlib floor (`STDLIB_GADGETS` from
|
|
7
|
+
* `@ggui-ai/protocol`) with any operator-declared per-app packages
|
|
8
|
+
* (`ggui.json#app.gadgets`, pushed via the CLI's config-push) layered
|
|
9
|
+
* on top — a declared package wins on a `package`-name collision.
|
|
9
10
|
*
|
|
10
11
|
* ## Behavior
|
|
11
12
|
*
|
|
@@ -15,14 +16,16 @@
|
|
|
15
16
|
* 2. When `appId` is supplied explicitly, asserts it matches
|
|
16
17
|
* `ctx.appId`; cross-tenant requests fail with
|
|
17
18
|
* {@link AppAccessDeniedError}.
|
|
18
|
-
* 3. Reads `app.gadgets` from the bound {@link AppMetadataStore}
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* the
|
|
19
|
+
* 3. Reads `app.gadgets` from the bound {@link AppMetadataStore}
|
|
20
|
+
* and resolves the effective catalog via `resolveAppGadgets`
|
|
21
|
+
* (stdlib floor + declared extensions). When the store returns
|
|
22
|
+
* `null` (app not registered — common for OSS sandbox apps that
|
|
23
|
+
* bypass an explicit register call) the resolution yields
|
|
24
|
+
* exactly `STDLIB_GADGETS`, so callers always get a meaningful
|
|
25
|
+
* catalog. This is a permitted-error path, not a tenancy
|
|
26
|
+
* escape — `ctx.appId` was already proved by the auth adapter;
|
|
27
|
+
* the absence of a registry row just means the deployment runs
|
|
28
|
+
* default-seeded.
|
|
26
29
|
*
|
|
27
30
|
* ## Audience
|
|
28
31
|
*
|
|
@@ -39,7 +42,7 @@
|
|
|
39
42
|
* defeats per-app curation.
|
|
40
43
|
*/
|
|
41
44
|
import { z } from 'zod';
|
|
42
|
-
import {
|
|
45
|
+
import { resolveAppGadgets, gadgetDescriptorSchema, } from '@ggui-ai/protocol';
|
|
43
46
|
import { AppAccessDeniedError } from './errors.js';
|
|
44
47
|
const inputSchema = {
|
|
45
48
|
appId: z
|
|
@@ -71,7 +74,7 @@ export function createGguiListGadgetsHandler(deps) {
|
|
|
71
74
|
name: 'ggui_list_gadgets',
|
|
72
75
|
title: 'List gadgets',
|
|
73
76
|
audience: ['agent'],
|
|
74
|
-
description:
|
|
77
|
+
description: "List the per-app catalog of browser-capability gadget hooks the UI may import in `clientCapabilities.gadgets[*]` of a DataContract. Returns the app's effective catalog — the first-party stdlib floor plus any operator-registered per-app packages (`ggui.json#app.gadgets`); a declared package wins on a package-name collision. Pass appId to scope explicitly (must match the caller identity); omit to default to the caller-resolved app.",
|
|
75
78
|
inputSchema,
|
|
76
79
|
outputSchema,
|
|
77
80
|
async handler(rawInput, ctx) {
|
|
@@ -86,7 +89,7 @@ export function createGguiListGadgetsHandler(deps) {
|
|
|
86
89
|
// explicitly created. Return the stdlib seed so callers always
|
|
87
90
|
// get a meaningful catalog. This mirrors the cloud DDB adapter's
|
|
88
91
|
// default-on-read pattern at the row-projection site.
|
|
89
|
-
const gadgets = app?.gadgets
|
|
92
|
+
const gadgets = resolveAppGadgets(app?.gadgets);
|
|
90
93
|
return { gadgets };
|
|
91
94
|
},
|
|
92
95
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe-data-contract-format.d.ts","sourceRoot":"","sources":["../../src/blueprints/describe-data-contract-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,QAAA,MAAM,WAAW,IAAK,CAAC;AAEvB,QAAA,MAAM,YAAY;;;;;;;CASjB,CAAC;AAEF,UAAU,gCAAgC;IACxC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;QAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,CAAC,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"describe-data-contract-format.d.ts","sourceRoot":"","sources":["../../src/blueprints/describe-data-contract-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,QAAA,MAAM,WAAW,IAAK,CAAC;AAEvB,QAAA,MAAM,YAAY;;;;;;;CASjB,CAAC;AAEF,UAAU,gCAAgC;IACxC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;QAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,CAAC,CAAC;CACJ;AA+RD,wBAAgB,uCAAuC,IAAI,aAAa,CACtE,OAAO,WAAW,EAClB,OAAO,YAAY,EACnB,gCAAgC,CACjC,CAiBA"}
|
|
@@ -120,16 +120,25 @@ and read latest as \`stream.latest\` or iterate \`stream.history\`.
|
|
|
120
120
|
|
|
121
121
|
\`\`\`ts
|
|
122
122
|
interface AgentCapabilitiesSpec {
|
|
123
|
+
// Keyed by the bare MCP tool name (the catalog key).
|
|
123
124
|
tools: Record<string, AgentToolEntry>;
|
|
124
125
|
}
|
|
125
126
|
|
|
126
127
|
interface AgentToolEntry {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
128
|
+
// Owning MCP server identity. OPTIONAL — Tier-2: derive name from the
|
|
129
|
+
// mcp__<server>__ prefix (omit when absent, never invent); Tier-1:
|
|
130
|
+
// agent-server fills from 'initialize'. (server, toolName) is the
|
|
131
|
+
// canonical identity; version is metadata, not identity.
|
|
132
|
+
serverInfo?: { name: string; version?: string };
|
|
133
|
+
// MCP tool descriptor, echoed from 'tools/list' (minus name = the key).
|
|
134
|
+
toolInfo: {
|
|
135
|
+
inputSchema: JsonSchema; // REQUIRED — every MCP tool has one.
|
|
136
|
+
description?: string;
|
|
137
|
+
outputSchema?: JsonSchema;
|
|
138
|
+
};
|
|
139
|
+
// ggui authoring layer (not MCP): when/why/by-whom the tool is called.
|
|
130
140
|
usage?: string;
|
|
131
|
-
example?: { input
|
|
132
|
-
required?: boolean;
|
|
141
|
+
example?: { input: JsonValue; output: JsonValue };
|
|
133
142
|
}
|
|
134
143
|
\`\`\`
|
|
135
144
|
|
|
@@ -139,6 +148,24 @@ Pure catalog — declares tools the AGENT may invoke. Referenced from
|
|
|
139
148
|
NEVER calls these. Cross-ref linter rejects dangling \`nextStep\` /
|
|
140
149
|
\`source.tool\` values that don't resolve to a key here.
|
|
141
150
|
|
|
151
|
+
Canonical-identity hints (improve reuse of UIs built by earlier
|
|
152
|
+
conversations or other agents):
|
|
153
|
+
|
|
154
|
+
- The map KEYS are the **bare** MCP tool name — the part AFTER any
|
|
155
|
+
\`mcp__<server>__\` prefix a host prepends on its connection. Key by
|
|
156
|
+
the bare name (e.g. \`todo_add\`), NOT the host's connection label or
|
|
157
|
+
prefix.
|
|
158
|
+
- \`serverInfo.name\` identifies the owning MCP server so a UI built against
|
|
159
|
+
the same \`(server, toolName)\` is reused across conversations and agents.
|
|
160
|
+
Set it to the server handle from your tool's \`mcp__<server>__\` prefix —
|
|
161
|
+
the SAME \`<server>\` you stripped to get the bare key (e.g.
|
|
162
|
+
\`mcp__todo__todo_add\` → \`serverInfo.name: 'todo'\`). If a tool has no
|
|
163
|
+
such prefix, OMIT \`serverInfo\` — never invent a name. \`version\` is
|
|
164
|
+
OPTIONAL metadata (include it only if your host surfaces it); a version
|
|
165
|
+
difference alone never blocks reuse.
|
|
166
|
+
- \`toolInfo.inputSchema\` is echoed verbatim from the tool's \`tools/list\`
|
|
167
|
+
descriptor.
|
|
168
|
+
|
|
142
169
|
## ClientCapabilitiesSpec entry
|
|
143
170
|
|
|
144
171
|
\`\`\`ts
|
|
@@ -169,11 +196,11 @@ interface GadgetExportUse {
|
|
|
169
196
|
|
|
170
197
|
The wire carries IDENTITY ONLY — \`(package, export name)\`. It does
|
|
171
198
|
NOT carry \`version\`: the operator's \`App.gadgets\` catalog owns the
|
|
172
|
-
version pin. Per-export registry metadata (\`permission\`, \`example
|
|
173
|
-
|
|
199
|
+
version pin. Per-export registry metadata (\`permission\`, \`example\`)
|
|
200
|
+
and transport fields (\`bundleUrl\`,
|
|
174
201
|
\`bundleSri\`, …) likewise live on the operator-registered gadget
|
|
175
202
|
package descriptor — NOT on the wire. The renderer resolves them
|
|
176
|
-
server-side from the app's gadget catalog at
|
|
203
|
+
server-side from the app's gadget catalog at render time (e.g. a hook's
|
|
177
204
|
browser \`permission\` flows into the iframe's Permissions-Policy
|
|
178
205
|
directive set from there).
|
|
179
206
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-featured-blueprints.d.ts","sourceRoot":"","sources":["../../src/blueprints/list-featured-blueprints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"list-featured-blueprints.d.ts","sourceRoot":"","sources":["../../src/blueprints/list-featured-blueprints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMjD,QAAA,MAAM,WAAW,IAAmC,CAAC;AAErD,QAAA,MAAM,YAAY;;;CAOjB,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC;CACzC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,mCAAmC,CACjD,IAAI,GAAE,0BAA+B,GACpC,aAAa,CAAC,OAAO,WAAW,EAAE,OAAO,YAAY,EAAE,4BAA4B,CAAC,CAqBtF"}
|
|
@@ -14,7 +14,12 @@
|
|
|
14
14
|
* manifest becomes discoverable through this tool.
|
|
15
15
|
*/
|
|
16
16
|
import { z } from 'zod';
|
|
17
|
-
|
|
17
|
+
import { listFeaturedBlueprintsInputShape } from '@ggui-ai/protocol';
|
|
18
|
+
// Canonical SSoT shape — authored once in `@ggui-ai/protocol`
|
|
19
|
+
// (`schemas/mcp.ts`). Intentionally EMPTY: the pre-launch No-Backcompat
|
|
20
|
+
// scrub deleted the filter vocabulary; filters re-enter when a real
|
|
21
|
+
// consumer passes them.
|
|
22
|
+
const inputSchema = listFeaturedBlueprintsInputShape;
|
|
18
23
|
const outputSchema = {
|
|
19
24
|
// Two-arg `z.record(z.string(), z.unknown())` — zod v4 dropped the
|
|
20
25
|
// single-arg form. Keeping the explicit key/value pair so schema
|
|
@@ -31,13 +36,12 @@ export function createListFeaturedBlueprintsHandler(deps = {}) {
|
|
|
31
36
|
description: "Builder-curated featured blueprints. Returns entries declared via the server's blueprint catalog (typically ggui.json's `blueprints.include` for OSS deployments). Empty when no catalog is wired.",
|
|
32
37
|
inputSchema,
|
|
33
38
|
outputSchema,
|
|
34
|
-
async handler(
|
|
35
|
-
const { category } = z.object(inputSchema).parse(rawInput);
|
|
39
|
+
async handler() {
|
|
36
40
|
const provider = deps.blueprints;
|
|
37
41
|
if (!provider) {
|
|
38
42
|
return { blueprints: [], total: 0 };
|
|
39
43
|
}
|
|
40
|
-
const entries = await provider.list(
|
|
44
|
+
const entries = await provider.list({});
|
|
41
45
|
return {
|
|
42
46
|
blueprints: entries.map((entry) => ({ ...entry })),
|
|
43
47
|
total: entries.length,
|
|
@@ -50,7 +50,7 @@ import type { UiRegistry } from '@ggui-ai/ui-registry';
|
|
|
50
50
|
import type { GguiRenderBlueprintOutput } from '@ggui-ai/protocol';
|
|
51
51
|
import type { SharedHandler } from '../types.js';
|
|
52
52
|
declare const inputSchema: {
|
|
53
|
-
blueprintId: z.ZodString;
|
|
53
|
+
readonly blueprintId: z.ZodString;
|
|
54
54
|
};
|
|
55
55
|
declare const outputSchema: {
|
|
56
56
|
blueprintId: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-blueprint.d.ts","sourceRoot":"","sources":["../../src/blueprints/render-blueprint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"render-blueprint.d.ts","sourceRoot":"","sources":["../../src/blueprints/render-blueprint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,QAAA,MAAM,WAAW;;CAA4B,CAAC;AAE9C,QAAA,MAAM,YAAY;;;;;CAKjB,CAAC;AAEF,qDAAqD;AACrD,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,mBAAmB,GACxB,aAAa,CAAC,OAAO,WAAW,EAAE,OAAO,YAAY,EAAE,yBAAyB,CAAC,CAqCnF"}
|
|
@@ -46,12 +46,10 @@
|
|
|
46
46
|
* surface advertised, zero functionality — and is retired here.
|
|
47
47
|
*/
|
|
48
48
|
import { z } from 'zod';
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
.describe('The stable blueprint id declared via ggui.ui.json#id. Must match an entry in this server\'s UI registry.'),
|
|
54
|
-
};
|
|
49
|
+
import { renderBlueprintInputShape } from '@ggui-ai/protocol';
|
|
50
|
+
// Canonical SSoT shape — authored once in `@ggui-ai/protocol`
|
|
51
|
+
// (`schemas/mcp.ts`).
|
|
52
|
+
const inputSchema = renderBlueprintInputShape;
|
|
55
53
|
const outputSchema = {
|
|
56
54
|
blueprintId: z.string(),
|
|
57
55
|
blueprintName: z.string(),
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
*/
|
|
44
44
|
import { z } from 'zod';
|
|
45
45
|
import type { BlueprintProvider, EmbeddingProvider, VectorStore } from '@ggui-ai/mcp-server-core';
|
|
46
|
-
import type
|
|
46
|
+
import { type GguiSearchBlueprintsOutput } from '@ggui-ai/protocol';
|
|
47
47
|
import type { SharedHandler } from '../types.js';
|
|
48
48
|
/**
|
|
49
49
|
* Matches the hosted `MIN_SIMILARITY_SCORE`. Below this is noise —
|
|
@@ -82,8 +82,8 @@ export interface SearchBlueprintsDeps {
|
|
|
82
82
|
readonly blueprints?: BlueprintProvider;
|
|
83
83
|
}
|
|
84
84
|
declare const inputSchema: {
|
|
85
|
-
query: z.ZodString;
|
|
86
|
-
limit: z.ZodOptional<z.ZodNumber>;
|
|
85
|
+
readonly query: z.ZodString;
|
|
86
|
+
readonly limit: z.ZodOptional<z.ZodNumber>;
|
|
87
87
|
};
|
|
88
88
|
declare const outputSchema: {
|
|
89
89
|
results: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-blueprints.d.ts","sourceRoot":"","sources":["../../src/blueprints/search-blueprints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAEV,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"search-blueprints.d.ts","sourceRoot":"","sources":["../../src/blueprints/search-blueprints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAEV,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAkB,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,IAAM,CAAC;AAE7C;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC;CACzC;AAID,QAAA,MAAM,WAAW;;;CAA6B,CAAC;AAE/C,QAAA,MAAM,YAAY;;;;CAUjB,CAAC;AAKF;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,oBAAoB,GACzB,aAAa,CAAC,OAAO,WAAW,EAAE,OAAO,YAAY,EAAE,0BAA0B,CAAC,CA4CpF"}
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
* when composing.
|
|
43
43
|
*/
|
|
44
44
|
import { z } from 'zod';
|
|
45
|
+
import { flatToBlueprintSource, searchBlueprintsInputShape, } from '@ggui-ai/protocol';
|
|
45
46
|
/**
|
|
46
47
|
* Matches the hosted `MIN_SIMILARITY_SCORE`. Below this is noise —
|
|
47
48
|
* callers that want stricter matching post-filter by `score`.
|
|
@@ -62,13 +63,9 @@ export const MANIFEST_EXACT_NAME_SCORE = 1.0;
|
|
|
62
63
|
* stronger signal.
|
|
63
64
|
*/
|
|
64
65
|
export const MANIFEST_SUBSTRING_SCORE = 0.7;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
.min(1)
|
|
69
|
-
.describe("Natural-language description of the UI you're looking for"),
|
|
70
|
-
limit: z.number().int().min(1).max(100).optional(),
|
|
71
|
-
};
|
|
66
|
+
// Canonical SSoT shape — authored once in `@ggui-ai/protocol`
|
|
67
|
+
// (`schemas/mcp.ts`).
|
|
68
|
+
const inputSchema = searchBlueprintsInputShape;
|
|
72
69
|
const outputSchema = {
|
|
73
70
|
// `z.record(z.string(), z.unknown())` — zod v4 dropped the single-arg
|
|
74
71
|
// form `z.record(z.unknown())` that implicitly defaulted the key type
|
|
@@ -130,38 +127,41 @@ export function createSearchBlueprintsHandler(deps) {
|
|
|
130
127
|
* same score-rounding. A manifest-only OSS boot with an empty vector
|
|
131
128
|
* store returns `[]` here and all visible hits come from the manifest
|
|
132
129
|
* branch.
|
|
130
|
+
*
|
|
131
|
+
* Rows are blueprint-registry rows (`blueprintToMetadata` layout):
|
|
132
|
+
* `description` reads the stored `intent`, and `category` surfaces the
|
|
133
|
+
* provenance discriminant (`llm` / `user` / `curated`). Rows without
|
|
134
|
+
* valid provenance — legacy flat-vocabulary rows, foreign vector
|
|
135
|
+
* families sharing the scope — are dropped at this trust boundary,
|
|
136
|
+
* never surfaced with coerced labels.
|
|
133
137
|
*/
|
|
134
138
|
async function searchSemantic(deps, scope, query, limit) {
|
|
135
139
|
const vector = await deps.embedding.embed(query);
|
|
136
140
|
const raw = await deps.vectors.query(scope, vector, limit);
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
props:
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
required: p.required,
|
|
157
|
-
description: p.description,
|
|
158
|
-
})),
|
|
159
|
-
callbacks,
|
|
160
|
-
featured,
|
|
141
|
+
const hits = [];
|
|
142
|
+
for (const r of raw) {
|
|
143
|
+
if (r.score < MIN_SIMILARITY_SCORE)
|
|
144
|
+
continue;
|
|
145
|
+
const source = flatToBlueprintSource(r.metadata);
|
|
146
|
+
if (source === null)
|
|
147
|
+
continue;
|
|
148
|
+
const key = r.key;
|
|
149
|
+
hits.push({
|
|
150
|
+
id: `c_${key}`,
|
|
151
|
+
name: `Cached_${key.substring(0, 8)}`,
|
|
152
|
+
description: asString(r.metadata.intent),
|
|
153
|
+
category: source.kind,
|
|
154
|
+
// Registry rows don't carry per-prop docs / callback lists /
|
|
155
|
+
// a featured flag — surface honest empties rather than parse
|
|
156
|
+
// keys no writer ever stamps.
|
|
157
|
+
props: [],
|
|
158
|
+
callbacks: [],
|
|
159
|
+
featured: false,
|
|
161
160
|
relevance: 'match',
|
|
162
161
|
score: Math.round(r.score * 1000) / 1000,
|
|
163
|
-
};
|
|
164
|
-
}
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
return hits;
|
|
165
165
|
}
|
|
166
166
|
/**
|
|
167
167
|
* Manifest-source branch: text-match against `BlueprintProvider.list`
|
|
@@ -209,17 +209,3 @@ function toManifestHit(entry, queryLower) {
|
|
|
209
209
|
function asString(value) {
|
|
210
210
|
return typeof value === 'string' ? value : '';
|
|
211
211
|
}
|
|
212
|
-
function asBoolean(value) {
|
|
213
|
-
return Boolean(value);
|
|
214
|
-
}
|
|
215
|
-
function parseJsonArray(value) {
|
|
216
|
-
if (typeof value !== 'string' || value.length === 0)
|
|
217
|
-
return [];
|
|
218
|
-
try {
|
|
219
|
-
const parsed = JSON.parse(value);
|
|
220
|
-
return Array.isArray(parsed) ? parsed : [];
|
|
221
|
-
}
|
|
222
|
-
catch {
|
|
223
|
-
return [];
|
|
224
|
-
}
|
|
225
|
-
}
|
|
@@ -41,7 +41,7 @@ export interface CreditTransactionView {
|
|
|
41
41
|
readonly balanceAfterCents: number;
|
|
42
42
|
readonly reason: string;
|
|
43
43
|
readonly createdAt: string;
|
|
44
|
-
readonly
|
|
44
|
+
readonly relatedSessionId?: string;
|
|
45
45
|
}
|
|
46
46
|
export interface ListCreditTransactionsDeps {
|
|
47
47
|
readonly creditTransactions: CreditTransactionSource;
|
|
@@ -65,7 +65,7 @@ declare const outputSchema: {
|
|
|
65
65
|
balanceAfterCents: z.ZodNumber;
|
|
66
66
|
reason: z.ZodString;
|
|
67
67
|
createdAt: z.ZodString;
|
|
68
|
-
|
|
68
|
+
relatedSessionId: z.ZodOptional<z.ZodString>;
|
|
69
69
|
}, z.core.$strip>>;
|
|
70
70
|
/** Set when more rows exist past `limit`. Pass back as the next call's `cursor`. */
|
|
71
71
|
nextCursor: z.ZodOptional<z.ZodString>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-credit-transactions.d.ts","sourceRoot":"","sources":["../../src/credits/list-credit-transactions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,oCAAoC;QACpC,KAAK,EAAE,MAAM,CAAC;QACd,4EAA4E;QAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QACV,YAAY,EAAE,qBAAqB,EAAE,CAAC;QACtC,6CAA6C;QAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,eAAe,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"list-credit-transactions.d.ts","sourceRoot":"","sources":["../../src/credits/list-credit-transactions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,oCAAoC;QACpC,KAAK,EAAE,MAAM,CAAC;QACd,4EAA4E;QAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QACV,YAAY,EAAE,qBAAqB,EAAE,CAAC;QACtC,6CAA6C;QAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,eAAe,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,kBAAkB,EAAE,uBAAuB,CAAC;CACtD;AAED,QAAA,MAAM,WAAW;IACf,2BAA2B;;IAE3B,kEAAkE;;CAEnE,CAAC;AAEF,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;IAYhB,oFAAoF;;CAErF,CAAC;AAEF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,YAAY,EAAE,qBAAqB,EAAE,CAAC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,0BAA0B,GAC/B,aAAa,CAAC,OAAO,WAAW,EAAE,OAAO,YAAY,EAAE,4BAA4B,CAAC,CAkCtF"}
|
|
@@ -28,7 +28,7 @@ const outputSchema = {
|
|
|
28
28
|
balanceAfterCents: z.number().int(),
|
|
29
29
|
reason: z.string(),
|
|
30
30
|
createdAt: z.string(),
|
|
31
|
-
|
|
31
|
+
relatedSessionId: z.string().optional(),
|
|
32
32
|
})),
|
|
33
33
|
/** Set when more rows exist past `limit`. Pass back as the next call's `cursor`. */
|
|
34
34
|
nextCursor: z.string().optional(),
|
|
@@ -38,7 +38,7 @@ export function createListCreditTransactionsHandler(deps) {
|
|
|
38
38
|
name: 'ggui_ops_list_credit_transactions',
|
|
39
39
|
title: 'List credit transactions',
|
|
40
40
|
audience: ['ops'],
|
|
41
|
-
description: "Returns the calling user's credit transaction ledger, newest-first. Each row carries kind ('free_credit' | 'render_charge' | 'topup' | 'refund'), deltaCents (signed — positive for grants/topups, negative for charges), balanceAfterCents (snapshot at time of write), reason (human-readable), and optional
|
|
41
|
+
description: "Returns the calling user's credit transaction ledger, newest-first. Each row carries kind ('free_credit' | 'render_charge' | 'topup' | 'refund'), deltaCents (signed — positive for grants/topups, negative for charges), balanceAfterCents (snapshot at time of write), reason (human-readable), and optional relatedSessionId for render_charge rows. Default limit 20, cap 100; pass `cursor` from the previous response's `nextCursor` for paging.",
|
|
42
42
|
inputSchema,
|
|
43
43
|
outputSchema,
|
|
44
44
|
// No `allowedFor` — same toolset on every pod kind. Callers
|
package/dist/index.d.ts
CHANGED
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
*/
|
|
16
16
|
export * from "./blueprints/index.js";
|
|
17
17
|
export * from "./renders/index.js";
|
|
18
|
-
export { AuthRequiredError } from "./types.js";
|
|
19
|
-
export type { AudienceTag, HandlerContext, SharedHandler } from "./types.js";
|
|
18
|
+
export { AuthRequiredError, HANDLER_FAILURE_MARKER, handlerFailure, isHandlerFailure, } from "./types.js";
|
|
19
|
+
export type { AudienceTag, HandlerContext, HandlerFailure, SharedHandler, SharedHandlerResult, } from "./types.js";
|
|
20
20
|
export * from "./threads/index.js";
|
|
21
21
|
export * from "./credits/index.js";
|
|
22
22
|
export * from "./app-discovery/index.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,aAAa,EACb,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAIpB,cAAc,oBAAoB,CAAC;AAInC,cAAc,oBAAoB,CAAC;AAInC,cAAc,0BAA0B,CAAC;AAIzC,cAAc,0BAA0B,CAAC;AAMzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
export * from "./blueprints/index.js";
|
|
17
17
|
export * from "./renders/index.js";
|
|
18
|
-
export { AuthRequiredError } from "./types.js";
|
|
18
|
+
export { AuthRequiredError, HANDLER_FAILURE_MARKER, handlerFailure, isHandlerFailure, } from "./types.js";
|
|
19
19
|
// Persistent-chat handler family — thread storage and message
|
|
20
20
|
// history MCP tools. Thin over @ggui-ai/mcp-server-core ThreadStore.
|
|
21
21
|
// Available under `@ggui-ai/mcp-server-handlers/threads` subpath too.
|
|
@@ -24,6 +24,7 @@ declare const outputSchema: {
|
|
|
24
24
|
readonly systemPrompt: z.ZodOptional<z.ZodString>;
|
|
25
25
|
readonly createdAt: z.ZodString;
|
|
26
26
|
readonly updatedAt: z.ZodString;
|
|
27
|
+
readonly connectUrl: z.ZodOptional<z.ZodString>;
|
|
27
28
|
};
|
|
28
29
|
export interface CreateAppOutput {
|
|
29
30
|
readonly appId: string;
|
|
@@ -31,6 +32,12 @@ export interface CreateAppOutput {
|
|
|
31
32
|
readonly systemPrompt?: string;
|
|
32
33
|
readonly createdAt: string;
|
|
33
34
|
readonly updatedAt: string;
|
|
35
|
+
/**
|
|
36
|
+
* Per-app MCP connect URL. Optional: emitted only by deployments
|
|
37
|
+
* that expose per-app ingress (this handler has no ingress
|
|
38
|
+
* knowledge, so the default composition never sets it).
|
|
39
|
+
*/
|
|
40
|
+
readonly connectUrl?: string;
|
|
34
41
|
}
|
|
35
42
|
export interface CreateAppDeps {
|
|
36
43
|
readonly apps: AppsSource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-app.d.ts","sourceRoot":"","sources":["../../src/ops-apps/create-app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAkB,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,YAAY,CAAC;AAExD,QAAA,MAAM,WAAW;;CASP,CAAC;AAEX,QAAA,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"create-app.d.ts","sourceRoot":"","sources":["../../src/ops-apps/create-app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAkB,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,YAAY,CAAC;AAExD,QAAA,MAAM,WAAW;;CASP,CAAC;AAEX,QAAA,MAAM,YAAY;;;;;;;CAYR,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,GAClB,aAAa,CAAC,OAAO,WAAW,EAAE,OAAO,YAAY,EAAE,eAAe,CAAC,CAgCzE"}
|
|
@@ -20,7 +20,7 @@ const inputSchema = {
|
|
|
20
20
|
.min(1)
|
|
21
21
|
.max(120)
|
|
22
22
|
.optional()
|
|
23
|
-
.describe("Human-friendly label for the new app. Defaults to 'My ggui app' when absent —
|
|
23
|
+
.describe("Human-friendly label for the new app. Defaults to 'My ggui app' when absent — the same label the deployment's first-load auto-create uses."),
|
|
24
24
|
};
|
|
25
25
|
const outputSchema = {
|
|
26
26
|
appId: z.string(),
|
|
@@ -28,13 +28,17 @@ const outputSchema = {
|
|
|
28
28
|
systemPrompt: z.string().optional(),
|
|
29
29
|
createdAt: z.string(),
|
|
30
30
|
updatedAt: z.string(),
|
|
31
|
+
connectUrl: z
|
|
32
|
+
.string()
|
|
33
|
+
.optional()
|
|
34
|
+
.describe('Per-app MCP connect URL — present when the deployment exposes per-app ingress. Paste-ready for an MCP client config.'),
|
|
31
35
|
};
|
|
32
36
|
export function createCreateAppHandler(deps) {
|
|
33
37
|
return {
|
|
34
38
|
name: 'ggui_ops_create_app',
|
|
35
39
|
title: 'Create app',
|
|
36
40
|
audience: ['ops'],
|
|
37
|
-
description: "Provision a fresh `GguiApp` owned by the calling user
|
|
41
|
+
description: "Provision a fresh `GguiApp` owned by the calling user: an opaque base62 appId is minted server-side, the row is owned by the caller's identity, displayName defaults to 'My ggui app' when absent (cap 120 chars). Returns the persisted shape — call `ggui_ops_set_default_app({appId})` afterwards to promote the new app to the user's default.",
|
|
38
42
|
inputSchema,
|
|
39
43
|
outputSchema,
|
|
40
44
|
async handler(rawInput, ctx) {
|
|
@@ -21,6 +21,14 @@
|
|
|
21
21
|
* Recovery: omit the `generator` field to use
|
|
22
22
|
* `registry.defaultGenerator()`, or register the missing generator
|
|
23
23
|
* before re-invoking.
|
|
24
|
+
*
|
|
25
|
+
* Not the retired agent-surface `unknown_generator` gate (rc3,
|
|
26
|
+
* retired-surface cleanup 2026-06-11 — see `@ggui-ai/protocol`'s
|
|
27
|
+
* version.ts changelog): the agent surface handles a bad
|
|
28
|
+
* `blueprintDraft.generator` hint forgivingly as the
|
|
29
|
+
* `GENERATOR_UNKNOWN` handshake finding (`renders/assert-generator.ts`);
|
|
30
|
+
* THIS error is the operator registry's strict slug lookup and stays
|
|
31
|
+
* live. Don't re-unify them.
|
|
24
32
|
*/
|
|
25
33
|
export declare class GeneratorNotFoundError extends Error {
|
|
26
34
|
readonly code: "generator_not_found";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/ops-blueprint/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/ops-blueprint/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAG,qBAAqB,CAAU;gBACnC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,MAAM,EAAE;CAM7D;AAED;;;;;;;;;;GAUG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,EAAG,qBAAqB,CAAU;gBACnC,OAAO,CAAC,EAAE,MAAM;CAO7B;AAED;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,EAAG,mBAAmB,CAAU;IAC7C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;gBACZ,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;CAK5C"}
|
|
@@ -21,6 +21,14 @@
|
|
|
21
21
|
* Recovery: omit the `generator` field to use
|
|
22
22
|
* `registry.defaultGenerator()`, or register the missing generator
|
|
23
23
|
* before re-invoking.
|
|
24
|
+
*
|
|
25
|
+
* Not the retired agent-surface `unknown_generator` gate (rc3,
|
|
26
|
+
* retired-surface cleanup 2026-06-11 — see `@ggui-ai/protocol`'s
|
|
27
|
+
* version.ts changelog): the agent surface handles a bad
|
|
28
|
+
* `blueprintDraft.generator` hint forgivingly as the
|
|
29
|
+
* `GENERATOR_UNKNOWN` handshake finding (`renders/assert-generator.ts`);
|
|
30
|
+
* THIS error is the operator registry's strict slug lookup and stays
|
|
31
|
+
* live. Don't re-unify them.
|
|
24
32
|
*/
|
|
25
33
|
export class GeneratorNotFoundError extends Error {
|
|
26
34
|
code = "generator_not_found";
|