@guuey/create-agentic-app 0.11.0 → 0.12.1

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 (22) hide show
  1. package/dist/templates/agentic-app/claude-agent-sdk/package.json +4 -4
  2. package/dist/templates/agentic-app/claude-agent-sdk/web/package.json +2 -2
  3. package/dist/templates/agentic-app/claude-agent-sdk/web/src/components/AgentChat.tsx +5 -0
  4. package/dist/templates/agentic-app/claude-agent-sdk/web/src/components/AppShell.tsx +14 -0
  5. package/dist/templates/agentic-app/google-adk/package.json +3 -3
  6. package/dist/templates/agentic-app/google-adk/web/package.json +2 -2
  7. package/dist/templates/agentic-app/google-adk/web/src/components/AgentChat.tsx +5 -0
  8. package/dist/templates/agentic-app/google-adk/web/src/components/AppShell.tsx +14 -0
  9. package/dist/templates/agentic-app/openai-agents-sdk/package.json +4 -4
  10. package/dist/templates/agentic-app/openai-agents-sdk/web/package.json +2 -2
  11. package/dist/templates/agentic-app/openai-agents-sdk/web/src/components/AgentChat.tsx +5 -0
  12. package/dist/templates/agentic-app/openai-agents-sdk/web/src/components/AppShell.tsx +14 -0
  13. package/dist/templates/base/claude-agent-sdk/package.json +4 -4
  14. package/dist/templates/base/claude-agent-sdk/web/package.json +1 -1
  15. package/dist/templates/base/claude-agent-sdk/web/src/components/AgentChat.tsx +5 -0
  16. package/dist/templates/base/google-adk/package.json +3 -3
  17. package/dist/templates/base/google-adk/web/package.json +1 -1
  18. package/dist/templates/base/google-adk/web/src/components/AgentChat.tsx +5 -0
  19. package/dist/templates/base/openai-agents-sdk/package.json +4 -4
  20. package/dist/templates/base/openai-agents-sdk/web/package.json +1 -1
  21. package/dist/templates/base/openai-agents-sdk/web/src/components/AgentChat.tsx +5 -0
  22. package/package.json +3 -3
@@ -12,12 +12,12 @@
12
12
  },
13
13
  "dependencies": {
14
14
  "@anthropic-ai/claude-agent-sdk": "^0.3.199",
15
- "@guuey/config": "0.11.0",
16
- "@guuey/worker": "0.11.0"
15
+ "@guuey/config": "0.12.1",
16
+ "@guuey/worker": "0.12.1"
17
17
  },
18
18
  "devDependencies": {
19
- "@ggui-ai/cli": "0.6.3",
20
- "@guuey/cli": "0.11.0",
19
+ "@ggui-ai/cli": "0.11.0",
20
+ "@guuey/cli": "0.12.1",
21
21
  "tsup": "^8.5.0",
22
22
  "tsx": "^4.19.0",
23
23
  "typescript": "^5.8.0"
@@ -9,8 +9,8 @@
9
9
  "typecheck": "tsc --noEmit"
10
10
  },
11
11
  "dependencies": {
12
- "@guuey/chat": "0.11.0",
13
- "@guuey/mcp-apps-host": "0.11.0",
12
+ "@guuey/chat": "0.12.1",
13
+ "@guuey/mcp-apps-host": "0.12.1",
14
14
  "oidc-client-ts": "^3.1.0",
15
15
  "qrcode": "^1.5.4",
16
16
  "react": "^19.0.0",
@@ -10,6 +10,7 @@
10
10
  */
11
11
  import { useEffect, useState, type CSSProperties } from "react";
12
12
  import { GuueyChat } from "@guuey/chat/react";
13
+ import type { GuueyChatHandle } from "@guuey/chat/react";
13
14
  import type { PlanViewSummary, ViewRefItem } from "@guuey/chat";
14
15
  import { agentEndpointUrl, appConfig, historyBaseUrl } from "../config";
15
16
  import { currentIdentityMode, ensureGuestSecret } from "../lib/identity";
@@ -38,10 +39,13 @@ export function AgentChat({
38
39
  className,
39
40
  style,
40
41
  viewsBridge,
42
+ onReady,
41
43
  }: {
42
44
  className?: string;
43
45
  style?: CSSProperties;
44
46
  viewsBridge?: ViewsBridge;
47
+ /** Receives the chat handle — the AppShell mounts canvas views with `handle.viewSlotProps()`. */
48
+ onReady?: (handle: GuueyChatHandle) => void;
45
49
  }) {
46
50
  // The user's CHOSEN mode wins: an explicit "Continue as guest" must never
47
51
  // be shadowed by a cached OIDC session. Only when no choice is recorded
@@ -71,6 +75,7 @@ export function AgentChat({
71
75
  mode: appConfig.theme.mode,
72
76
  className,
73
77
  style,
78
+ ...(onReady !== undefined ? { onReady } : {}),
74
79
  ...(viewsBridge !== undefined
75
80
  ? {
76
81
  policy: RAIL_POLICY,
@@ -20,6 +20,7 @@
20
20
  * menu swaps the canvas back to your pages.
21
21
  */
22
22
  import { useCallback, useRef, useState } from "react";
23
+ import type { GuueyChatHandle } from "@guuey/chat/react";
23
24
  import { NavLink, Outlet, useNavigate } from "react-router-dom";
24
25
  import type { PlanViewSummary, ViewRefItem } from "@guuey/chat";
25
26
  import { GuueyView } from "@guuey/mcp-apps-host/react";
@@ -36,6 +37,10 @@ export function AppShell() {
36
37
  // here, the rail shows only chips), the selected key, and whether the
37
38
  // canvas currently shows a view or the routed pages.
38
39
  const [views, setViews] = useState<PlanViewSummary[]>([]);
40
+ // The chat handle carries the kit's view-host wiring (action relay,
41
+ // model-context sink, theme announce) — the canvas mounts with it so a
42
+ // rendered card's Confirm works OUTSIDE the transcript too (guuey#335).
43
+ const [chat, setChat] = useState<GuueyChatHandle | null>(null);
39
44
  const [selectedKey, setSelectedKey] = useState<string | undefined>(undefined);
40
45
  const [canvasShowsView, setCanvasShowsView] = useState(false);
41
46
  const newestKeyRef = useRef<string | undefined>(undefined);
@@ -103,6 +108,7 @@ export function AppShell() {
103
108
  <AgentChat
104
109
  className="rail-chat"
105
110
  viewsBridge={{ promotedViewKey: selectedKey, onViewRef, onViewsChange }}
111
+ onReady={setChat}
106
112
  />
107
113
  </div>
108
114
  </aside>
@@ -121,6 +127,14 @@ export function AppShell() {
121
127
  mount={selected.mount}
122
128
  title={selected.title}
123
129
  className="canvas-view-mount"
130
+ // The kit's slot wiring (guuey#335): action relay +
131
+ // model-context sink + the #302 theme announce, identical
132
+ // to the transcript's own mounts — Confirm inside a
133
+ // canvas-mounted card is a tools/call and needs the relay.
134
+ {...(chat !== null ? chat.viewSlotProps() : {})}
135
+ // Explicit announce kept (same value the kit defaults):
136
+ // the canvas mounts correctly even pre-handle.
137
+ hostContext={{ theme: appConfig.theme.mode }}
124
138
  />
125
139
  ) : (
126
140
  // A locator still resolving — the kit reads it and the next
@@ -15,9 +15,9 @@
15
15
  "zod": "^4.2.1"
16
16
  },
17
17
  "devDependencies": {
18
- "@ggui-ai/cli": "0.6.3",
19
- "@guuey/cli": "0.11.0",
20
- "@guuey/config": "0.11.0",
18
+ "@ggui-ai/cli": "0.11.0",
19
+ "@guuey/cli": "0.12.1",
20
+ "@guuey/config": "0.12.1",
21
21
  "tsup": "^8.5.0",
22
22
  "tsx": "^4.19.0",
23
23
  "typescript": "^5.8.0"
@@ -9,8 +9,8 @@
9
9
  "typecheck": "tsc --noEmit"
10
10
  },
11
11
  "dependencies": {
12
- "@guuey/chat": "0.11.0",
13
- "@guuey/mcp-apps-host": "0.11.0",
12
+ "@guuey/chat": "0.12.1",
13
+ "@guuey/mcp-apps-host": "0.12.1",
14
14
  "oidc-client-ts": "^3.1.0",
15
15
  "qrcode": "^1.5.4",
16
16
  "react": "^19.0.0",
@@ -10,6 +10,7 @@
10
10
  */
11
11
  import { useEffect, useState, type CSSProperties } from "react";
12
12
  import { GuueyChat } from "@guuey/chat/react";
13
+ import type { GuueyChatHandle } from "@guuey/chat/react";
13
14
  import type { PlanViewSummary, ViewRefItem } from "@guuey/chat";
14
15
  import { agentEndpointUrl, appConfig, historyBaseUrl } from "../config";
15
16
  import { currentIdentityMode, ensureGuestSecret } from "../lib/identity";
@@ -38,10 +39,13 @@ export function AgentChat({
38
39
  className,
39
40
  style,
40
41
  viewsBridge,
42
+ onReady,
41
43
  }: {
42
44
  className?: string;
43
45
  style?: CSSProperties;
44
46
  viewsBridge?: ViewsBridge;
47
+ /** Receives the chat handle — the AppShell mounts canvas views with `handle.viewSlotProps()`. */
48
+ onReady?: (handle: GuueyChatHandle) => void;
45
49
  }) {
46
50
  // The user's CHOSEN mode wins: an explicit "Continue as guest" must never
47
51
  // be shadowed by a cached OIDC session. Only when no choice is recorded
@@ -71,6 +75,7 @@ export function AgentChat({
71
75
  mode: appConfig.theme.mode,
72
76
  className,
73
77
  style,
78
+ ...(onReady !== undefined ? { onReady } : {}),
74
79
  ...(viewsBridge !== undefined
75
80
  ? {
76
81
  policy: RAIL_POLICY,
@@ -20,6 +20,7 @@
20
20
  * menu swaps the canvas back to your pages.
21
21
  */
22
22
  import { useCallback, useRef, useState } from "react";
23
+ import type { GuueyChatHandle } from "@guuey/chat/react";
23
24
  import { NavLink, Outlet, useNavigate } from "react-router-dom";
24
25
  import type { PlanViewSummary, ViewRefItem } from "@guuey/chat";
25
26
  import { GuueyView } from "@guuey/mcp-apps-host/react";
@@ -36,6 +37,10 @@ export function AppShell() {
36
37
  // here, the rail shows only chips), the selected key, and whether the
37
38
  // canvas currently shows a view or the routed pages.
38
39
  const [views, setViews] = useState<PlanViewSummary[]>([]);
40
+ // The chat handle carries the kit's view-host wiring (action relay,
41
+ // model-context sink, theme announce) — the canvas mounts with it so a
42
+ // rendered card's Confirm works OUTSIDE the transcript too (guuey#335).
43
+ const [chat, setChat] = useState<GuueyChatHandle | null>(null);
39
44
  const [selectedKey, setSelectedKey] = useState<string | undefined>(undefined);
40
45
  const [canvasShowsView, setCanvasShowsView] = useState(false);
41
46
  const newestKeyRef = useRef<string | undefined>(undefined);
@@ -103,6 +108,7 @@ export function AppShell() {
103
108
  <AgentChat
104
109
  className="rail-chat"
105
110
  viewsBridge={{ promotedViewKey: selectedKey, onViewRef, onViewsChange }}
111
+ onReady={setChat}
106
112
  />
107
113
  </div>
108
114
  </aside>
@@ -121,6 +127,14 @@ export function AppShell() {
121
127
  mount={selected.mount}
122
128
  title={selected.title}
123
129
  className="canvas-view-mount"
130
+ // The kit's slot wiring (guuey#335): action relay +
131
+ // model-context sink + the #302 theme announce, identical
132
+ // to the transcript's own mounts — Confirm inside a
133
+ // canvas-mounted card is a tools/call and needs the relay.
134
+ {...(chat !== null ? chat.viewSlotProps() : {})}
135
+ // Explicit announce kept (same value the kit defaults):
136
+ // the canvas mounts correctly even pre-handle.
137
+ hostContext={{ theme: appConfig.theme.mode }}
124
138
  />
125
139
  ) : (
126
140
  // A locator still resolving — the kit reads it and the next
@@ -12,12 +12,12 @@
12
12
  },
13
13
  "dependencies": {
14
14
  "@openai/agents": "^0.12.0",
15
- "@guuey/config": "0.11.0",
16
- "@guuey/worker": "0.11.0"
15
+ "@guuey/config": "0.12.1",
16
+ "@guuey/worker": "0.12.1"
17
17
  },
18
18
  "devDependencies": {
19
- "@ggui-ai/cli": "0.6.3",
20
- "@guuey/cli": "0.11.0",
19
+ "@ggui-ai/cli": "0.11.0",
20
+ "@guuey/cli": "0.12.1",
21
21
  "tsup": "^8.5.0",
22
22
  "tsx": "^4.19.0",
23
23
  "typescript": "^5.8.0"
@@ -9,8 +9,8 @@
9
9
  "typecheck": "tsc --noEmit"
10
10
  },
11
11
  "dependencies": {
12
- "@guuey/chat": "0.11.0",
13
- "@guuey/mcp-apps-host": "0.11.0",
12
+ "@guuey/chat": "0.12.1",
13
+ "@guuey/mcp-apps-host": "0.12.1",
14
14
  "oidc-client-ts": "^3.1.0",
15
15
  "qrcode": "^1.5.4",
16
16
  "react": "^19.0.0",
@@ -10,6 +10,7 @@
10
10
  */
11
11
  import { useEffect, useState, type CSSProperties } from "react";
12
12
  import { GuueyChat } from "@guuey/chat/react";
13
+ import type { GuueyChatHandle } from "@guuey/chat/react";
13
14
  import type { PlanViewSummary, ViewRefItem } from "@guuey/chat";
14
15
  import { agentEndpointUrl, appConfig, historyBaseUrl } from "../config";
15
16
  import { currentIdentityMode, ensureGuestSecret } from "../lib/identity";
@@ -38,10 +39,13 @@ export function AgentChat({
38
39
  className,
39
40
  style,
40
41
  viewsBridge,
42
+ onReady,
41
43
  }: {
42
44
  className?: string;
43
45
  style?: CSSProperties;
44
46
  viewsBridge?: ViewsBridge;
47
+ /** Receives the chat handle — the AppShell mounts canvas views with `handle.viewSlotProps()`. */
48
+ onReady?: (handle: GuueyChatHandle) => void;
45
49
  }) {
46
50
  // The user's CHOSEN mode wins: an explicit "Continue as guest" must never
47
51
  // be shadowed by a cached OIDC session. Only when no choice is recorded
@@ -71,6 +75,7 @@ export function AgentChat({
71
75
  mode: appConfig.theme.mode,
72
76
  className,
73
77
  style,
78
+ ...(onReady !== undefined ? { onReady } : {}),
74
79
  ...(viewsBridge !== undefined
75
80
  ? {
76
81
  policy: RAIL_POLICY,
@@ -20,6 +20,7 @@
20
20
  * menu swaps the canvas back to your pages.
21
21
  */
22
22
  import { useCallback, useRef, useState } from "react";
23
+ import type { GuueyChatHandle } from "@guuey/chat/react";
23
24
  import { NavLink, Outlet, useNavigate } from "react-router-dom";
24
25
  import type { PlanViewSummary, ViewRefItem } from "@guuey/chat";
25
26
  import { GuueyView } from "@guuey/mcp-apps-host/react";
@@ -36,6 +37,10 @@ export function AppShell() {
36
37
  // here, the rail shows only chips), the selected key, and whether the
37
38
  // canvas currently shows a view or the routed pages.
38
39
  const [views, setViews] = useState<PlanViewSummary[]>([]);
40
+ // The chat handle carries the kit's view-host wiring (action relay,
41
+ // model-context sink, theme announce) — the canvas mounts with it so a
42
+ // rendered card's Confirm works OUTSIDE the transcript too (guuey#335).
43
+ const [chat, setChat] = useState<GuueyChatHandle | null>(null);
39
44
  const [selectedKey, setSelectedKey] = useState<string | undefined>(undefined);
40
45
  const [canvasShowsView, setCanvasShowsView] = useState(false);
41
46
  const newestKeyRef = useRef<string | undefined>(undefined);
@@ -103,6 +108,7 @@ export function AppShell() {
103
108
  <AgentChat
104
109
  className="rail-chat"
105
110
  viewsBridge={{ promotedViewKey: selectedKey, onViewRef, onViewsChange }}
111
+ onReady={setChat}
106
112
  />
107
113
  </div>
108
114
  </aside>
@@ -121,6 +127,14 @@ export function AppShell() {
121
127
  mount={selected.mount}
122
128
  title={selected.title}
123
129
  className="canvas-view-mount"
130
+ // The kit's slot wiring (guuey#335): action relay +
131
+ // model-context sink + the #302 theme announce, identical
132
+ // to the transcript's own mounts — Confirm inside a
133
+ // canvas-mounted card is a tools/call and needs the relay.
134
+ {...(chat !== null ? chat.viewSlotProps() : {})}
135
+ // Explicit announce kept (same value the kit defaults):
136
+ // the canvas mounts correctly even pre-handle.
137
+ hostContext={{ theme: appConfig.theme.mode }}
124
138
  />
125
139
  ) : (
126
140
  // A locator still resolving — the kit reads it and the next
@@ -12,12 +12,12 @@
12
12
  },
13
13
  "dependencies": {
14
14
  "@anthropic-ai/claude-agent-sdk": "^0.3.199",
15
- "@guuey/config": "0.11.0",
16
- "@guuey/worker": "0.11.0"
15
+ "@guuey/config": "0.12.1",
16
+ "@guuey/worker": "0.12.1"
17
17
  },
18
18
  "devDependencies": {
19
- "@ggui-ai/cli": "0.6.3",
20
- "@guuey/cli": "0.11.0",
19
+ "@ggui-ai/cli": "0.11.0",
20
+ "@guuey/cli": "0.12.1",
21
21
  "tsup": "^8.5.0",
22
22
  "tsx": "^4.19.0",
23
23
  "typescript": "^5.8.0"
@@ -9,7 +9,7 @@
9
9
  "typecheck": "tsc --noEmit"
10
10
  },
11
11
  "dependencies": {
12
- "@guuey/chat": "0.11.0",
12
+ "@guuey/chat": "0.12.1",
13
13
  "oidc-client-ts": "^3.1.0",
14
14
  "qrcode": "^1.5.4",
15
15
  "react": "^19.0.0",
@@ -10,6 +10,7 @@
10
10
  */
11
11
  import { useEffect, useState, type CSSProperties } from "react";
12
12
  import { GuueyChat } from "@guuey/chat/react";
13
+ import type { GuueyChatHandle } from "@guuey/chat/react";
13
14
  import type { PlanViewSummary, ViewRefItem } from "@guuey/chat";
14
15
  import { agentEndpointUrl, appConfig, historyBaseUrl } from "../config";
15
16
  import { currentIdentityMode, ensureGuestSecret } from "../lib/identity";
@@ -38,10 +39,13 @@ export function AgentChat({
38
39
  className,
39
40
  style,
40
41
  viewsBridge,
42
+ onReady,
41
43
  }: {
42
44
  className?: string;
43
45
  style?: CSSProperties;
44
46
  viewsBridge?: ViewsBridge;
47
+ /** Receives the chat handle — the AppShell mounts canvas views with `handle.viewSlotProps()`. */
48
+ onReady?: (handle: GuueyChatHandle) => void;
45
49
  }) {
46
50
  // The user's CHOSEN mode wins: an explicit "Continue as guest" must never
47
51
  // be shadowed by a cached OIDC session. Only when no choice is recorded
@@ -71,6 +75,7 @@ export function AgentChat({
71
75
  mode: appConfig.theme.mode,
72
76
  className,
73
77
  style,
78
+ ...(onReady !== undefined ? { onReady } : {}),
74
79
  ...(viewsBridge !== undefined
75
80
  ? {
76
81
  policy: RAIL_POLICY,
@@ -15,9 +15,9 @@
15
15
  "zod": "^4.2.1"
16
16
  },
17
17
  "devDependencies": {
18
- "@ggui-ai/cli": "0.6.3",
19
- "@guuey/cli": "0.11.0",
20
- "@guuey/config": "0.11.0",
18
+ "@ggui-ai/cli": "0.11.0",
19
+ "@guuey/cli": "0.12.1",
20
+ "@guuey/config": "0.12.1",
21
21
  "tsup": "^8.5.0",
22
22
  "tsx": "^4.19.0",
23
23
  "typescript": "^5.8.0"
@@ -9,7 +9,7 @@
9
9
  "typecheck": "tsc --noEmit"
10
10
  },
11
11
  "dependencies": {
12
- "@guuey/chat": "0.11.0",
12
+ "@guuey/chat": "0.12.1",
13
13
  "oidc-client-ts": "^3.1.0",
14
14
  "qrcode": "^1.5.4",
15
15
  "react": "^19.0.0",
@@ -10,6 +10,7 @@
10
10
  */
11
11
  import { useEffect, useState, type CSSProperties } from "react";
12
12
  import { GuueyChat } from "@guuey/chat/react";
13
+ import type { GuueyChatHandle } from "@guuey/chat/react";
13
14
  import type { PlanViewSummary, ViewRefItem } from "@guuey/chat";
14
15
  import { agentEndpointUrl, appConfig, historyBaseUrl } from "../config";
15
16
  import { currentIdentityMode, ensureGuestSecret } from "../lib/identity";
@@ -38,10 +39,13 @@ export function AgentChat({
38
39
  className,
39
40
  style,
40
41
  viewsBridge,
42
+ onReady,
41
43
  }: {
42
44
  className?: string;
43
45
  style?: CSSProperties;
44
46
  viewsBridge?: ViewsBridge;
47
+ /** Receives the chat handle — the AppShell mounts canvas views with `handle.viewSlotProps()`. */
48
+ onReady?: (handle: GuueyChatHandle) => void;
45
49
  }) {
46
50
  // The user's CHOSEN mode wins: an explicit "Continue as guest" must never
47
51
  // be shadowed by a cached OIDC session. Only when no choice is recorded
@@ -71,6 +75,7 @@ export function AgentChat({
71
75
  mode: appConfig.theme.mode,
72
76
  className,
73
77
  style,
78
+ ...(onReady !== undefined ? { onReady } : {}),
74
79
  ...(viewsBridge !== undefined
75
80
  ? {
76
81
  policy: RAIL_POLICY,
@@ -12,12 +12,12 @@
12
12
  },
13
13
  "dependencies": {
14
14
  "@openai/agents": "^0.12.0",
15
- "@guuey/config": "0.11.0",
16
- "@guuey/worker": "0.11.0"
15
+ "@guuey/config": "0.12.1",
16
+ "@guuey/worker": "0.12.1"
17
17
  },
18
18
  "devDependencies": {
19
- "@ggui-ai/cli": "0.6.3",
20
- "@guuey/cli": "0.11.0",
19
+ "@ggui-ai/cli": "0.11.0",
20
+ "@guuey/cli": "0.12.1",
21
21
  "tsup": "^8.5.0",
22
22
  "tsx": "^4.19.0",
23
23
  "typescript": "^5.8.0"
@@ -9,7 +9,7 @@
9
9
  "typecheck": "tsc --noEmit"
10
10
  },
11
11
  "dependencies": {
12
- "@guuey/chat": "0.11.0",
12
+ "@guuey/chat": "0.12.1",
13
13
  "oidc-client-ts": "^3.1.0",
14
14
  "qrcode": "^1.5.4",
15
15
  "react": "^19.0.0",
@@ -10,6 +10,7 @@
10
10
  */
11
11
  import { useEffect, useState, type CSSProperties } from "react";
12
12
  import { GuueyChat } from "@guuey/chat/react";
13
+ import type { GuueyChatHandle } from "@guuey/chat/react";
13
14
  import type { PlanViewSummary, ViewRefItem } from "@guuey/chat";
14
15
  import { agentEndpointUrl, appConfig, historyBaseUrl } from "../config";
15
16
  import { currentIdentityMode, ensureGuestSecret } from "../lib/identity";
@@ -38,10 +39,13 @@ export function AgentChat({
38
39
  className,
39
40
  style,
40
41
  viewsBridge,
42
+ onReady,
41
43
  }: {
42
44
  className?: string;
43
45
  style?: CSSProperties;
44
46
  viewsBridge?: ViewsBridge;
47
+ /** Receives the chat handle — the AppShell mounts canvas views with `handle.viewSlotProps()`. */
48
+ onReady?: (handle: GuueyChatHandle) => void;
45
49
  }) {
46
50
  // The user's CHOSEN mode wins: an explicit "Continue as guest" must never
47
51
  // be shadowed by a cached OIDC session. Only when no choice is recorded
@@ -71,6 +75,7 @@ export function AgentChat({
71
75
  mode: appConfig.theme.mode,
72
76
  className,
73
77
  style,
78
+ ...(onReady !== undefined ? { onReady } : {}),
74
79
  ...(viewsBridge !== undefined
75
80
  ? {
76
81
  policy: RAIL_POLICY,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guuey/create-agentic-app",
3
- "version": "0.11.0",
3
+ "version": "0.12.1",
4
4
  "description": "Scaffold a guuey agentic app: code-mode agent + custom MCP + ggui + web, local pnpm dev, one-command guuey deploy.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -25,8 +25,8 @@
25
25
  "tsup": "^8.5.0",
26
26
  "typescript": "^5.8.0",
27
27
  "vitest": "^3.2.4",
28
- "@guuey/config": "0.11.0",
29
- "@guuey/worker": "0.11.0"
28
+ "@guuey/config": "0.12.1",
29
+ "@guuey/worker": "0.12.1"
30
30
  },
31
31
  "publishConfig": {
32
32
  "access": "public"