@ggui-ai/dev-stack 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/hub-preview/client.js +31 -8
- package/package.json +7 -7
|
@@ -20807,8 +20807,11 @@ function buildWireConfig(opts) {
|
|
|
20807
20807
|
...opts.onDispatchSuppressed !== void 0 ? { onDispatchSuppressed: opts.onDispatchSuppressed } : {},
|
|
20808
20808
|
dispatch: (actionName, data) => {
|
|
20809
20809
|
const actionSpec = opts.getActiveActionSpec();
|
|
20810
|
+
if (actionSpec === void 0)
|
|
20811
|
+
opts.onActionSpecAbsent?.(actionName);
|
|
20810
20812
|
const isOneShot = actionSpec?.[actionName]?.oneShot === true;
|
|
20811
|
-
|
|
20813
|
+
const spent = spentOneShots.has(actionName) || opts.getSpentOneShots?.()?.includes(actionName) === true;
|
|
20814
|
+
if (isOneShot && spent) {
|
|
20812
20815
|
console.warn(`[ggui] dispatch('${actionName}') suppressed: this action is declared oneShot and already fired for this render. A second gesture is NOT sent to the agent \u2014 the submitted control is spent for the render's lifetime. If the action is meant to repeat, remove \`oneShot\` from its contract entry.`);
|
|
20813
20816
|
opts.onDispatchSuppressed?.({
|
|
20814
20817
|
reason: "one-shot-spent",
|
|
@@ -21105,11 +21108,20 @@ function Container({ children, maxWidth: maxWidth2 = "lg", center = true, paddin
|
|
|
21105
21108
|
...style
|
|
21106
21109
|
}, children });
|
|
21107
21110
|
}
|
|
21111
|
+
function frameAttributes(frame) {
|
|
21112
|
+
if (frame === void 0)
|
|
21113
|
+
return {};
|
|
21114
|
+
return {
|
|
21115
|
+
...frame.surface !== void 0 ? { "data-ggui-surface": frame.surface } : {},
|
|
21116
|
+
...frame.bleed === true ? { "data-ggui-bleed": "" } : {}
|
|
21117
|
+
};
|
|
21118
|
+
}
|
|
21108
21119
|
function renderWithTrait(trait, traitProps, root, children) {
|
|
21120
|
+
const marks = frameAttributes(root.frame);
|
|
21109
21121
|
if (trait === void 0) {
|
|
21110
|
-
return (0, import_react9.createElement)("div", { className: root.className, style: root.style }, children);
|
|
21122
|
+
return (0, import_react9.createElement)("div", { className: root.className, style: root.style, ...marks }, children);
|
|
21111
21123
|
}
|
|
21112
|
-
return (0, import_react9.createElement)(trait, { ...traitProps, className: root.className, style: root.style }, children);
|
|
21124
|
+
return (0, import_react9.createElement)(trait, { ...traitProps, className: root.className, style: root.style, ...marks }, children);
|
|
21113
21125
|
}
|
|
21114
21126
|
function resolveToneCss(tone) {
|
|
21115
21127
|
switch (tone) {
|
|
@@ -21233,9 +21245,14 @@ function Card(props) {
|
|
|
21233
21245
|
surface,
|
|
21234
21246
|
style,
|
|
21235
21247
|
className,
|
|
21248
|
+
bleed,
|
|
21236
21249
|
as: Trait,
|
|
21237
21250
|
...traitProps
|
|
21238
21251
|
} = props;
|
|
21252
|
+
const frame = {
|
|
21253
|
+
...surface !== "transparent" ? { surface: surface ?? "default" } : {},
|
|
21254
|
+
...bleed === true ? { bleed: true } : {}
|
|
21255
|
+
};
|
|
21239
21256
|
const resolvedPadding = resolveSpacing(padding);
|
|
21240
21257
|
const resolvedSurface = resolveSurfaceCss(surface ?? "default");
|
|
21241
21258
|
const resolvedOnColor = resolveSurfaceOnColorCss(surface ?? "default");
|
|
@@ -21253,10 +21270,11 @@ function Card(props) {
|
|
|
21253
21270
|
if (scope !== void 0) {
|
|
21254
21271
|
return renderWithTrait(Trait, traitProps, {
|
|
21255
21272
|
className: className ? `${className} ${scope.className}` : scope.className,
|
|
21256
|
-
style: composedStyle
|
|
21273
|
+
style: composedStyle,
|
|
21274
|
+
frame
|
|
21257
21275
|
}, (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [(0, import_jsx_runtime4.jsx)("style", { children: scope.css }), children] }));
|
|
21258
21276
|
}
|
|
21259
|
-
return renderWithTrait(Trait, traitProps, { className, style: composedStyle }, children);
|
|
21277
|
+
return renderWithTrait(Trait, traitProps, { className, style: composedStyle, frame }, children);
|
|
21260
21278
|
}
|
|
21261
21279
|
var justifyMap = {
|
|
21262
21280
|
start: "flex-start",
|
|
@@ -21342,7 +21360,9 @@ function Grid(props) {
|
|
|
21342
21360
|
return renderWithTrait(Trait, traitProps, { className, style: composedStyle }, children);
|
|
21343
21361
|
}
|
|
21344
21362
|
function Box(props) {
|
|
21345
|
-
const { children, padding, paddingX, paddingY, margin, surface, assetColor, assetSemantic, radius: radius2, style, className, as: Trait, ...traitProps } = props;
|
|
21363
|
+
const { children, padding, paddingX, paddingY, margin, surface, assetColor, assetSemantic, radius: radius2, style, className, bleed, as: Trait, ...traitProps } = props;
|
|
21364
|
+
const markedSurface = surface !== void 0 && surface !== "transparent" ? surface : void 0;
|
|
21365
|
+
const frame = markedSurface === void 0 && bleed !== true ? void 0 : { ...markedSurface !== void 0 ? { surface: markedSurface } : {}, ...bleed === true ? { bleed: true } : {} };
|
|
21346
21366
|
let computedPadding;
|
|
21347
21367
|
if (paddingX !== void 0 || paddingY !== void 0) {
|
|
21348
21368
|
const px = resolveSpacing(paddingX) || "0";
|
|
@@ -21367,10 +21387,11 @@ function Box(props) {
|
|
|
21367
21387
|
if (scope !== void 0) {
|
|
21368
21388
|
return renderWithTrait(Trait, traitProps, {
|
|
21369
21389
|
className: className ? `${className} ${scope.className}` : scope.className,
|
|
21370
|
-
style: composedStyle
|
|
21390
|
+
style: composedStyle,
|
|
21391
|
+
...frame !== void 0 ? { frame } : {}
|
|
21371
21392
|
}, (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [(0, import_jsx_runtime6.jsx)("style", { children: scope.css }), children] }));
|
|
21372
21393
|
}
|
|
21373
|
-
return renderWithTrait(Trait, traitProps, { className, style: composedStyle }, children);
|
|
21394
|
+
return renderWithTrait(Trait, traitProps, { className, style: composedStyle, ...frame !== void 0 ? { frame } : {} }, children);
|
|
21374
21395
|
}
|
|
21375
21396
|
function Divider({ orientation = "horizontal", margin = "var(--ggui-spacing-md, 16px)", tone, style, className }) {
|
|
21376
21397
|
const resolvedMargin = typeof margin === "number" ? `${margin}px` : margin;
|
|
@@ -32889,6 +32910,8 @@ function framelessSuppressionRule(scopeClass) {
|
|
|
32889
32910
|
return `
|
|
32890
32911
|
.${scopeClass} > :where(:not(style)) { border: none !important; }`;
|
|
32891
32912
|
}
|
|
32913
|
+
var EXPANDED_FRAME = { outerRadiusVar: "--ggui-shape-radius-xl", insetPx: 16 };
|
|
32914
|
+
var EXPANDED_FRAME_INNER_RADIUS = `max(0px, calc(var(${EXPANDED_FRAME.outerRadiusVar}) - ${EXPANDED_FRAME.insetPx}px))`;
|
|
32892
32915
|
function structuralScaffolding(scopeClass) {
|
|
32893
32916
|
return `.${scopeClass} *, .${scopeClass} *::before, .${scopeClass} *::after { box-sizing: border-box; }
|
|
32894
32917
|
.${scopeClass} h1, .${scopeClass} h2, .${scopeClass} h3, .${scopeClass} h4, .${scopeClass} h5, .${scopeClass} h6, .${scopeClass} button, .${scopeClass} input, .${scopeClass} textarea, .${scopeClass} select { font-family: inherit; }`;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ggui-ai/dev-stack",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.0",
|
|
4
4
|
"description": "Shared local dev engine for the ggui protocol: local UI registry discovery, compile-on-demand, filesystem watcher with SSE, and a read-only HTTP surface for dev tooling. Framework-neutral — agent runtime supervision plugs in via an adapter seam, so no agent SDK is hardcoded.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ggui",
|
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"chokidar": "^4.0.3",
|
|
30
30
|
"esbuild": "^0.28.2",
|
|
31
|
-
"@ggui-ai/agent-runtime": "0.
|
|
32
|
-
"@ggui-ai/project-config": "0.
|
|
33
|
-
"@ggui-ai/ui-registry": "0.
|
|
31
|
+
"@ggui-ai/agent-runtime": "0.23.0",
|
|
32
|
+
"@ggui-ai/project-config": "0.23.0",
|
|
33
|
+
"@ggui-ai/ui-registry": "0.23.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/node": "^24.0.0",
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
"react-dom": "^19.0.0",
|
|
41
41
|
"typescript": "^5.0.0",
|
|
42
42
|
"vitest": "^3.2.6",
|
|
43
|
-
"@ggui-ai/
|
|
44
|
-
"@ggui-ai/
|
|
45
|
-
"@ggui-ai/
|
|
43
|
+
"@ggui-ai/design": "0.23.0",
|
|
44
|
+
"@ggui-ai/mcp-apps-react": "0.23.0",
|
|
45
|
+
"@ggui-ai/wire": "0.23.0"
|
|
46
46
|
},
|
|
47
47
|
"repository": {
|
|
48
48
|
"type": "git",
|