@guuey/chat 0.7.2 → 0.8.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/hitl.d.ts +5 -0
- package/dist/hitl.d.ts.map +1 -1
- package/dist/hitl.js +5 -0
- package/dist/native/components.d.ts.map +1 -1
- package/dist/native/components.js +1 -3
- package/dist/plan.d.ts.map +1 -1
- package/dist/plan.js +2 -1
- package/dist/react/components.d.ts.map +1 -1
- package/dist/react/components.js +1 -3
- package/dist/react/use-transcript.d.ts +3 -3
- package/dist/react/use-transcript.d.ts.map +1 -1
- package/dist/react/use-transcript.js +4 -27
- package/dist/types.d.ts +14 -11
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/corpus/__snapshots__/corpus.test.ts.snap +42 -7
- package/src/corpus/drive.ts +43 -12
- package/src/corpus/fixtures.ts +18 -4
- package/src/hitl.ts +5 -0
- package/src/native/components.tsx +1 -3
- package/src/plan.ts +2 -1
- package/src/react/components.tsx +1 -5
- package/src/react/use-transcript.ts +7 -32
- package/src/types.ts +14 -11
package/dist/hitl.d.ts
CHANGED
|
@@ -19,6 +19,11 @@
|
|
|
19
19
|
* Answer states encode guuey's ratified dismissal ruling (#16): dismissal
|
|
20
20
|
* maps to `cancelled` (still-pending, re-askable — the card stays
|
|
21
21
|
* answerable), `declined` is the durable explicit deny.
|
|
22
|
+
*
|
|
23
|
+
* The first producer is the guuey runtime's cross-app profile consent
|
|
24
|
+
* (guuey#207): the pod appends a paused turn whose ask declares
|
|
25
|
+
* `grantModes: [always, once?]`; the host delivers the built answer through
|
|
26
|
+
* `@guuey/agent-client`'s `createHitlAnswerRelay` (`POST <pod>/agent/hitl-answer`).
|
|
22
27
|
*/
|
|
23
28
|
import { type AgGrantMode, type AgHitlAnswer, type AgPausedAsk, type AgReduceResult } from "@silverprotocol/core";
|
|
24
29
|
import type { HitlPromptInput } from "./types.js";
|
package/dist/hitl.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hitl.d.ts","sourceRoot":"","sources":["../src/hitl.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hitl.d.ts","sourceRoot":"","sources":["../src/hitl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,oFAAoF;AACpF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IAC9C,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAE1F;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,GAAG,IAAI,EAC7B,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAM,GACvD,eAAe,EAAE,CAiBnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,GAAG,YAAY,CAexF"}
|
package/dist/hitl.js
CHANGED
|
@@ -19,6 +19,11 @@
|
|
|
19
19
|
* Answer states encode guuey's ratified dismissal ruling (#16): dismissal
|
|
20
20
|
* maps to `cancelled` (still-pending, re-askable — the card stays
|
|
21
21
|
* answerable), `declined` is the durable explicit deny.
|
|
22
|
+
*
|
|
23
|
+
* The first producer is the guuey runtime's cross-app profile consent
|
|
24
|
+
* (guuey#207): the pod appends a paused turn whose ask declares
|
|
25
|
+
* `grantModes: [always, once?]`; the host delivers the built answer through
|
|
26
|
+
* `@guuey/agent-client`'s `createHitlAnswerRelay` (`POST <pod>/agent/hitl-answer`).
|
|
22
27
|
*/
|
|
23
28
|
import { validateHitlAnswer, } from "@silverprotocol/core";
|
|
24
29
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/native/components.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/native/components.tsx"],"names":[],"mappings":"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"}
|
|
@@ -209,9 +209,7 @@ export function NativePrompt({ item, ctx }) {
|
|
|
209
209
|
, {
|
|
210
210
|
// RN has no document focus to move; the live region announces the ask
|
|
211
211
|
// (the web kit's focus contract, restated over the platform).
|
|
212
|
-
accessibilityLiveRegion: "polite", accessible: true, style: { backgroundColor: tokens.palette.surface, borderRadius: tokens.radius, padding: tokens.pad, gap: 8 }, children: [_jsx(Text, { style: { color: tokens.palette.ink, fontSize: tokens.fontSize, fontFamily: tokens.fontFamily }, children: item.
|
|
213
|
-
? `${item.appId} requests ${item.requested} access`
|
|
214
|
-
: `Link your account to ${item.appId}` }), _jsxs(View, { style: { flexDirection: "row", gap: 12 }, children: [_jsx(Pressable, { accessibilityRole: "button", onPress: () => ctx.onPromptAction?.(item, "accept"), children: _jsx(Text, { style: { color: tokens.palette.accent, fontWeight: "700", fontSize: tokens.fontSize }, children: "Allow" }) }), _jsx(Pressable, { accessibilityRole: "button", onPress: () => ctx.onPromptAction?.(item, "decline"), children: _jsx(Text, { style: { color: tokens.palette.inkMuted, fontSize: tokens.fontSize }, children: "Decline" }) })] })] }));
|
|
212
|
+
accessibilityLiveRegion: "polite", accessible: true, style: { backgroundColor: tokens.palette.surface, borderRadius: tokens.radius, padding: tokens.pad, gap: 8 }, children: [_jsx(Text, { style: { color: tokens.palette.ink, fontSize: tokens.fontSize, fontFamily: tokens.fontFamily }, children: `Link your account to ${item.appId}` }), _jsxs(View, { style: { flexDirection: "row", gap: 12 }, children: [_jsx(Pressable, { accessibilityRole: "button", onPress: () => ctx.onPromptAction?.(item, "accept"), children: _jsx(Text, { style: { color: tokens.palette.accent, fontWeight: "700", fontSize: tokens.fontSize }, children: "Allow" }) }), _jsx(Pressable, { accessibilityRole: "button", onPress: () => ctx.onPromptAction?.(item, "decline"), children: _jsx(Text, { style: { color: tokens.palette.inkMuted, fontSize: tokens.fontSize }, children: "Decline" }) })] })] }));
|
|
215
213
|
}
|
|
216
214
|
// ─── R16 ──────────────────────────────────────────────────────────────────
|
|
217
215
|
/** The notice row (spec draft.2) — labeled, non-conversational, never agent-voiced. */
|
package/dist/plan.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAkCA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,KAAK,EASV,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EAIf,MAAM,YAAY,CAAC;AA0mBpB,uCAAuC;AACvC,wBAAgB,cAAc,CAC5B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,gBAAgB,EACxB,SAAS,GAAE,mBAAwB,GAClC,cAAc,
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAkCA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,KAAK,EASV,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EAIf,MAAM,YAAY,CAAC;AA0mBpB,uCAAuC;AACvC,wBAAgB,cAAc,CAC5B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,gBAAgB,EACxB,SAAS,GAAE,mBAAwB,GAClC,cAAc,CA4QhB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,cAAc,CAAC,GACxD;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;CAAE,GAAG,SAAS,CAiB5D"}
|
package/dist/plan.js
CHANGED
|
@@ -714,7 +714,8 @@ export function planTranscript(inputs, policy, overrides = {}) {
|
|
|
714
714
|
items.push(view);
|
|
715
715
|
}
|
|
716
716
|
// R10 — prompts, in input order (narrow on `kind`: the guuey-wire
|
|
717
|
-
//
|
|
717
|
+
// link-invite arm vs the AgJSON hitl arm — spec draft.2; consent rides
|
|
718
|
+
// hitl since guuey#207).
|
|
718
719
|
for (const prompt of inputs.prompts) {
|
|
719
720
|
const key = `p.${prompt.id}`;
|
|
720
721
|
if (prompt.kind === "hitl") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/react/components.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/react/components.tsx"],"names":[],"mappings":"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"}
|
package/dist/react/components.js
CHANGED
|
@@ -194,9 +194,7 @@ export function DefaultPrompt({ item, ctx }) {
|
|
|
194
194
|
if (item.state !== "pending") {
|
|
195
195
|
return (_jsxs("p", { className: `guuey-chat-prompt-record guuey-chat-prompt-${item.state}`, children: [item.promptKind, ": ", item.state] }));
|
|
196
196
|
}
|
|
197
|
-
return (_jsxs("div", { className: "guuey-chat-prompt", role: "group", children: [_jsx("p", { className: "guuey-chat-prompt-ask", children: item.
|
|
198
|
-
? `${item.appId} requests ${item.requested} access`
|
|
199
|
-
: `Link your account to ${item.appId}` }), _jsxs("div", { className: "guuey-chat-prompt-actions", children: [_jsx("button", { ref: firstAction, type: "button", className: "guuey-chat-prompt-accept", onClick: () => ctx.onPromptAction?.(item, "accept"), children: "Allow" }), _jsx("button", { type: "button", onClick: () => ctx.onPromptAction?.(item, "decline"), children: "Decline" })] }), item.raw !== null ? (_jsx("pre", { className: "guuey-chat-prompt-raw", children: JSON.stringify(item.raw, null, 2) })) : null] }));
|
|
197
|
+
return (_jsxs("div", { className: "guuey-chat-prompt", role: "group", children: [_jsx("p", { className: "guuey-chat-prompt-ask", children: `Link your account to ${item.appId}` }), _jsxs("div", { className: "guuey-chat-prompt-actions", children: [_jsx("button", { ref: firstAction, type: "button", className: "guuey-chat-prompt-accept", onClick: () => ctx.onPromptAction?.(item, "accept"), children: "Allow" }), _jsx("button", { type: "button", onClick: () => ctx.onPromptAction?.(item, "decline"), children: "Decline" })] }), item.raw !== null ? (_jsx("pre", { className: "guuey-chat-prompt-raw", children: JSON.stringify(item.raw, null, 2) })) : null] }));
|
|
200
198
|
}
|
|
201
199
|
// ─── R16 ──────────────────────────────────────────────────────────────────
|
|
202
200
|
/**
|
|
@@ -54,9 +54,9 @@ export interface UseTranscriptInputsResult {
|
|
|
54
54
|
* VALIDATES it against the ask's persisted record (`validateHitlAnswer`
|
|
55
55
|
* — required-iff-declared, echo-must-be-declared, requestState byte-echo)
|
|
56
56
|
* BEFORE anything dispatches, records it in the ledger, and returns it
|
|
57
|
-
* for the HOST to deliver — the kit renders and validates; the
|
|
58
|
-
*
|
|
59
|
-
*
|
|
57
|
+
* for the HOST to deliver — the kit renders and validates; the transport
|
|
58
|
+
* is the host's (`@guuey/agent-client`'s `createHitlAnswerRelay` posts it
|
|
59
|
+
* to `<pod>/agent/hitl-answer`, guuey#207).
|
|
60
60
|
*/
|
|
61
61
|
answerHitlPrompt: (ask: AgPausedAsk, action: HitlPromptAction) => AgHitlAnswer;
|
|
62
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-transcript.d.ts","sourceRoot":"","sources":["../../src/react/use-transcript.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAA+D,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEhH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EACV,cAAc,EACd,OAAO,EAEP,gBAAgB,EAEhB,mBAAmB,EACnB,cAAc,EACf,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,gBAAgB,CAAC;IACzB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,cAAc,CAAC;IACrB,wEAAwE;IACxE,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/B,mEAAmE;IACnE,SAAS,EAAE,mBAAmB,CAAC;IAC/B,0EAA0E;IAC1E,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1D;;;;OAIG;IACH,eAAe,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACrE,sEAAsE;IACtE,cAAc,EAAE,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAAC;CACrE;AAED,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,MAAM,EACN,MAAM,EACN,YAAY,GACb,EAAE,iBAAiB,GAAG,mBAAmB,CAmIzC;AAID,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,gBAAgB,CAAC;IACzB;;;;;OAKG;IACH,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW,KAAK,IAAI,CAAC;IAClF;;;;;;;;OAQG;IACH,gBAAgB,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,KAAK,YAAY,CAAC;CAChF;AAKD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,GAAG,yBAAyB,
|
|
1
|
+
{"version":3,"file":"use-transcript.d.ts","sourceRoot":"","sources":["../../src/react/use-transcript.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAA+D,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEhH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EACV,cAAc,EACd,OAAO,EAEP,gBAAgB,EAEhB,mBAAmB,EACnB,cAAc,EACf,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,gBAAgB,CAAC;IACzB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,cAAc,CAAC;IACrB,wEAAwE;IACxE,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/B,mEAAmE;IACnE,SAAS,EAAE,mBAAmB,CAAC;IAC/B,0EAA0E;IAC1E,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1D;;;;OAIG;IACH,eAAe,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACrE,sEAAsE;IACtE,cAAc,EAAE,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAAC;CACrE;AAED,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,MAAM,EACN,MAAM,EACN,YAAY,GACb,EAAE,iBAAiB,GAAG,mBAAmB,CAmIzC;AAID,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,gBAAgB,CAAC;IACzB;;;;;OAKG;IACH,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW,KAAK,IAAI,CAAC;IAClF;;;;;;;;OAQG;IACH,gBAAgB,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,KAAK,YAAY,CAAC;CAChF;AAKD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,GAAG,yBAAyB,CAsH3F"}
|
|
@@ -159,33 +159,12 @@ export function useTranscriptInputs(invoke) {
|
|
|
159
159
|
const timer = setInterval(() => setElapsedMs(Date.now() - startedAt), ELAPSED_TICK_MS);
|
|
160
160
|
return () => clearInterval(timer);
|
|
161
161
|
}, [invoke.status]);
|
|
162
|
-
// R10 ledger: the hook exposes only the LATEST pending
|
|
163
|
-
// transcript keeps the record of every ask and its resolution.
|
|
162
|
+
// R10 ledger (the LINK invite): the hook exposes only the LATEST pending
|
|
163
|
+
// invite; the transcript keeps the record of every ask and its resolution.
|
|
164
|
+
// Consent is NOT ledgered here — it is an AgJSON paused turn in the fold
|
|
165
|
+
// (`hitlPromptsFromFold` below, guuey#207).
|
|
164
166
|
const [prompts, setPrompts] = useState([]);
|
|
165
167
|
const promptSeq = useRef(0);
|
|
166
|
-
useEffect(() => {
|
|
167
|
-
const request = invoke.profileConsentRequest;
|
|
168
|
-
if (request === null) {
|
|
169
|
-
setPrompts((prev) => prev.some((p) => p.kind === "consent" && p.state === "pending")
|
|
170
|
-
? prev.map((p) => p.kind === "consent" && p.state === "pending" ? { ...p, state: "dismissed" } : p)
|
|
171
|
-
: prev);
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
setPrompts((prev) => {
|
|
175
|
-
if (prev.some((p) => p.kind === "consent" && p.state === "pending"))
|
|
176
|
-
return prev;
|
|
177
|
-
return [
|
|
178
|
-
...prev,
|
|
179
|
-
{
|
|
180
|
-
id: `consent.${promptSeq.current++}`,
|
|
181
|
-
kind: "consent",
|
|
182
|
-
appId: request.appId,
|
|
183
|
-
requested: request.requested,
|
|
184
|
-
state: "pending",
|
|
185
|
-
},
|
|
186
|
-
];
|
|
187
|
-
});
|
|
188
|
-
}, [invoke.profileConsentRequest]);
|
|
189
168
|
useEffect(() => {
|
|
190
169
|
const request = invoke.profileLinkRequest;
|
|
191
170
|
if (request === null) {
|
|
@@ -214,8 +193,6 @@ export function useTranscriptInputs(invoke) {
|
|
|
214
193
|
// Clearing the hook's pending request AFTER the ledger moved keeps the
|
|
215
194
|
// dismissal effect above from double-transitioning it.
|
|
216
195
|
const pending = prompts.find((p) => p.id === id);
|
|
217
|
-
if (pending?.kind === "consent")
|
|
218
|
-
invoke.clearProfileConsentRequest();
|
|
219
196
|
if (pending?.kind === "link")
|
|
220
197
|
invoke.clearProfileLinkRequest();
|
|
221
198
|
}, [invoke, prompts]);
|
package/dist/types.d.ts
CHANGED
|
@@ -33,14 +33,17 @@ export interface TranscriptMessage {
|
|
|
33
33
|
noticeSource?: AgNoticeSource;
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
|
-
* A pending/resolved
|
|
37
|
-
* `profile-
|
|
38
|
-
*
|
|
39
|
-
*
|
|
36
|
+
* A pending/resolved account-LINK invite (R10) — the turn-level
|
|
37
|
+
* `profile-link` event lifted into renderable state. The assembler (3b)
|
|
38
|
+
* accumulates these from `invokeTurn` events; `id` is assembler-chosen and
|
|
39
|
+
* stable for the ask's lifetime. (Consent is NOT a profile arm any more:
|
|
40
|
+
* since guuey#207 the pod asks over AgJSON `hitl.ask` + `turn.done
|
|
41
|
+
* outcome:"paused"` with declared `grantModes`, and it renders through
|
|
42
|
+
* {@link HitlPromptInput}.)
|
|
40
43
|
*/
|
|
41
44
|
export interface ProfilePromptInput {
|
|
42
45
|
id: string;
|
|
43
|
-
kind: "
|
|
46
|
+
kind: "link";
|
|
44
47
|
appId: string;
|
|
45
48
|
requested: "read" | "read-write";
|
|
46
49
|
state: "pending" | "answered" | "declined" | "dismissed";
|
|
@@ -67,9 +70,9 @@ export interface HitlPromptInput {
|
|
|
67
70
|
}
|
|
68
71
|
/**
|
|
69
72
|
* R10 prompt inputs — a discriminated union (narrow on `kind`). The
|
|
70
|
-
* profile arm is the
|
|
71
|
-
*
|
|
72
|
-
* the one shape this union retired — narrow first.)
|
|
73
|
+
* profile arm is the guuey-wire LINK invite; `hitl` (spec draft.2) carries
|
|
74
|
+
* every AgJSON ask, consent included. (Direct un-narrowed reads of
|
|
75
|
+
* profile-only fields are the one shape this union retired — narrow first.)
|
|
73
76
|
*/
|
|
74
77
|
export type PromptItemInput = ProfilePromptInput | HitlPromptInput;
|
|
75
78
|
/** Everything the plan derives from. All fields are data — no clocks, no DOM. */
|
|
@@ -103,7 +106,7 @@ export interface TranscriptInputs {
|
|
|
103
106
|
message: string;
|
|
104
107
|
code: string | null;
|
|
105
108
|
} | null;
|
|
106
|
-
/** Pending/answered
|
|
109
|
+
/** Pending/answered asks (R10): the link invite + AgJSON hitl asks (consent). */
|
|
107
110
|
prompts: PromptItemInput[];
|
|
108
111
|
/**
|
|
109
112
|
* The settled conversation, both roles, in order. Assistant entries are
|
|
@@ -294,12 +297,12 @@ export interface CitationsItem extends BaseItem {
|
|
|
294
297
|
}[];
|
|
295
298
|
style: "chips" | "list";
|
|
296
299
|
}
|
|
297
|
-
/** R10 — the guuey-wire
|
|
300
|
+
/** R10 — the guuey-wire account-LINK prompt card (the original arm). */
|
|
298
301
|
export interface ProfilePromptItem extends BaseItem {
|
|
299
302
|
kind: "prompt";
|
|
300
303
|
/** The `PromptItemInput.id` this row records — the host's resolution key. */
|
|
301
304
|
promptId: string;
|
|
302
|
-
promptKind: "
|
|
305
|
+
promptKind: "link";
|
|
303
306
|
appId: string;
|
|
304
307
|
requested: "read" | "read-write";
|
|
305
308
|
state: "pending" | "answered" | "declined" | "dismissed";
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,cAAc,EACd,QAAQ,EACR,SAAS,EACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,YAAY,CAAC,EAAE,cAAc,CAAC;CAC/B;AAED
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,cAAc,EACd,QAAQ,EACR,SAAS,EACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,YAAY,CAAC,EAAE,cAAc,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC;IACjC,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;CAC1D;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,GAAG,EAAE,WAAW,CAAC;IACjB,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IACzD,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG,eAAe,CAAC;AAEnE,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,iFAAiF;IACjF,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACvD,iFAAiF;IACjF,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,kDAAkD;IAClD,YAAY,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC7C,iFAAiF;IACjF,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC;IAC5D,yEAAyE;IACzE,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IACrD;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC3D;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,uEAAuE;AACvE,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B,+EAA+E;AAC/E,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CAAC;AAIpF,UAAU,QAAQ;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,2EAA2E;IAC3E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,kCAAkC;AAClC,MAAM,WAAW,eAAgB,SAAQ,QAAQ;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;IACrC,6EAA6E;IAC7E,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,2BAA2B;AAC3B,MAAM,WAAW,QAAS,SAAQ,QAAQ;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,sBAAsB;AACtB,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,kEAAkE;AAClE,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,IAAI,EAAE,aAAa,CAAC;IACpB;;;OAGG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC9C,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,yCAAyC;AACzC,MAAM,WAAW,QAAS,SAAQ,QAAQ;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;IAClD,sEAAsE;IACtE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,uEAAuE;IACvE,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,6DAA6D;AAC7D,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjC,sDAAsD;IACtD,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,iFAAiF;IACjF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;;OAIG;IACH,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,mEAAmE;IACnE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,kFAAkF;IAClF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAY,SAAQ,QAAQ;IAC3C,IAAI,EAAE,SAAS,CAAC;IAChB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,yBAAyB;AACzB,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;IAC/C,MAAM,EAAE,QAAQ,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,QAAQ,GAAG,MAAM,CAAC;CACjC;AAED,wBAAwB;AACxB,MAAM,WAAW,QAAS,SAAQ,QAAQ;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;CACf;AAED,mDAAmD;AACnD,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;IACxD,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;CACzB;AAED,wEAAwE;AACxE,MAAM,WAAW,iBAAkB,SAAQ,QAAQ;IACjD,IAAI,EAAE,QAAQ,CAAC;IACf,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC;IACjC,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IACzD,8DAA8D;IAC9D,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,GAAG,EAAE,WAAW,CAAC;IACjB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,oEAAoE;IACpE,UAAU,EAAE,SAAS,WAAW,EAAE,CAAC;IACnC,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IACzD,yEAAyE;IACzE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,sFAAsF;IACtF,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,8DAA8D;IAC9D,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;CACvB;AAED,0CAA0C;AAC1C,MAAM,MAAM,UAAU,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAE5D;;;GAGG;AACH,MAAM,WAAW,UAAW,SAAQ,QAAQ;IAC1C,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,+EAA+E;IAC/E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,gDAAgD;AAChD,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC,IAAI,EAAE,OAAO,CAAC;IACd;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IACnD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,iDAAiD;AACjD,MAAM,WAAW,mBAAoB,SAAQ,QAAQ;IACnD,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oCAAoC;AACpC,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,6EAA6E;AAC7E,MAAM,WAAW,WAAY,SAAQ,QAAQ;IAC3C,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,MAAM,WAAW,GACnB,eAAe,GACf,QAAQ,GACR,aAAa,GACb,QAAQ,GACR,aAAa,GACb,cAAc,GACd,aAAa,GACb,WAAW,GACX,SAAS,GACT,QAAQ,GACR,aAAa,GACb,UAAU,GACV,UAAU,GACV,SAAS,GACT,mBAAmB,GACnB,cAAc,GACd,WAAW,CAAC;AAEhB,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,QAAQ,CAAC;IACd,KAAK,EACD,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,SAAS,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B,GACD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,6DAA6D;IAC7D,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,kEAAkE;IAClE,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@guuey/chat",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "The default end-user transcript UI for guuey agents — the headless view-model (planTranscript), calm/debug presets, the GuueyChatTheme token schema, the ChatStrings i18n seam, and (at ./react) the component kit that renders it: per-category components, <Transcript>, the live + history input assemblers, and stick-to-bottom/windowed/accessible transcript behavior; at ./native, the React Native renderer over the same view-model.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"@silverprotocol/core": "0.5.0",
|
|
40
40
|
"@silverprotocol/richtext": "0.5.0",
|
|
41
41
|
"zod": "^4.3.6",
|
|
42
|
-
"@guuey/agent-client": "0.
|
|
43
|
-
"@guuey/mcp-apps-host": "0.
|
|
42
|
+
"@guuey/agent-client": "0.8.0",
|
|
43
|
+
"@guuey/mcp-apps-host": "0.8.0"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"react": ">=18",
|
|
@@ -995,7 +995,7 @@ exports[`corpus > 3. cold-start — R12 escalation at 0 / 2.5 s / 15 s 1`] = `
|
|
|
995
995
|
}
|
|
996
996
|
`;
|
|
997
997
|
|
|
998
|
-
exports[`corpus > 4. consent-gate — pending card → answered one-line collapse 1`] = `
|
|
998
|
+
exports[`corpus > 4. consent-gate — pending grant-mode card → answered one-line collapse (guuey#207 hitl arm) 1`] = `
|
|
999
999
|
{
|
|
1000
1000
|
"items": [
|
|
1001
1001
|
{
|
|
@@ -1013,17 +1013,52 @@ exports[`corpus > 4. consent-gate — pending card → answered one-line collaps
|
|
|
1013
1013
|
"markdown": true,
|
|
1014
1014
|
"stopped": false,
|
|
1015
1015
|
"streaming": false,
|
|
1016
|
-
"text": "
|
|
1016
|
+
"text": "Booked your usual — I couldn't see your profile yet.",
|
|
1017
1017
|
},
|
|
1018
1018
|
{
|
|
1019
|
-
"
|
|
1019
|
+
"ask": {
|
|
1020
|
+
"askId": "profile-consent:app-1:thread-corpus",
|
|
1021
|
+
"grantModes": [
|
|
1022
|
+
{
|
|
1023
|
+
"description": "Every conversation with this agent",
|
|
1024
|
+
"id": "always",
|
|
1025
|
+
"label": "Always allow",
|
|
1026
|
+
},
|
|
1027
|
+
{
|
|
1028
|
+
"description": "Only this conversation",
|
|
1029
|
+
"id": "once",
|
|
1030
|
+
"label": "Allow this chat",
|
|
1031
|
+
},
|
|
1032
|
+
],
|
|
1033
|
+
"kind": "approval",
|
|
1034
|
+
"message": "Trip Planner wants to read your guuey profile — the notes agents keep about you across apps.",
|
|
1035
|
+
"metadata": {
|
|
1036
|
+
"appId": "app-1",
|
|
1037
|
+
"requested": "read",
|
|
1038
|
+
},
|
|
1039
|
+
},
|
|
1040
|
+
"askKind": "approval",
|
|
1041
|
+
"chosenModeId": null,
|
|
1042
|
+
"chosenModeLabel": null,
|
|
1020
1043
|
"expanded": true,
|
|
1021
|
-
"
|
|
1044
|
+
"grantModes": [
|
|
1045
|
+
{
|
|
1046
|
+
"description": "Every conversation with this agent",
|
|
1047
|
+
"id": "always",
|
|
1048
|
+
"label": "Always allow",
|
|
1049
|
+
},
|
|
1050
|
+
{
|
|
1051
|
+
"description": "Only this conversation",
|
|
1052
|
+
"id": "once",
|
|
1053
|
+
"label": "Allow this chat",
|
|
1054
|
+
},
|
|
1055
|
+
],
|
|
1056
|
+
"key": "p.profile-consent:app-1:thread-corpus",
|
|
1022
1057
|
"kind": "prompt",
|
|
1023
|
-
"
|
|
1024
|
-
"
|
|
1058
|
+
"message": "Trip Planner wants to read your guuey profile — the notes agents keep about you across apps.",
|
|
1059
|
+
"promptId": "profile-consent:app-1:thread-corpus",
|
|
1060
|
+
"promptKind": "hitl",
|
|
1025
1061
|
"raw": null,
|
|
1026
|
-
"requested": "read",
|
|
1027
1062
|
"state": "pending",
|
|
1028
1063
|
},
|
|
1029
1064
|
],
|
package/src/corpus/drive.ts
CHANGED
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
* `@silverprotocol/core` Reducer). Test-only plumbing — excluded from the
|
|
6
6
|
* build; the 3b live/history assemblers are the production twins.
|
|
7
7
|
*/
|
|
8
|
-
import { Reducer, type AgEvent } from "@silverprotocol/core";
|
|
8
|
+
import { Reducer, type AgEvent, type AgPausedAsk } from "@silverprotocol/core";
|
|
9
9
|
import type { InvokeTurnEvent } from "@guuey/agent-client";
|
|
10
|
+
import { hitlPromptsFromFold, type HitlAnswerRecord } from "../hitl.js";
|
|
10
11
|
import type { ProfilePromptInput, TranscriptInputs, TranscriptMessage } from "../types.js";
|
|
11
12
|
|
|
12
13
|
export interface DriveOptions {
|
|
@@ -21,8 +22,10 @@ export interface DriveOptions {
|
|
|
21
22
|
viewPhases?: TranscriptInputs["viewPhases"];
|
|
22
23
|
historyCards?: TranscriptInputs["historyCards"];
|
|
23
24
|
historyState?: TranscriptInputs["historyState"];
|
|
24
|
-
/** Resolve accumulated prompts to this state
|
|
25
|
+
/** Resolve accumulated link prompts to this state. */
|
|
25
26
|
promptState?: ProfilePromptInput["state"];
|
|
27
|
+
/** The host-side answer ledger for AgJSON hitl asks (fixture 4's answered leg). */
|
|
28
|
+
hitlAnswers?: Readonly<Record<string, HitlAnswerRecord>>;
|
|
26
29
|
}
|
|
27
30
|
|
|
28
31
|
export function driveTurn(events: InvokeTurnEvent[], opts: DriveOptions = {}): TranscriptInputs {
|
|
@@ -53,15 +56,6 @@ export function driveTurn(events: InvokeTurnEvent[], opts: DriveOptions = {}): T
|
|
|
53
56
|
error = { message: ev.message, code: ev.code };
|
|
54
57
|
status = "ready";
|
|
55
58
|
break;
|
|
56
|
-
case "profile-consent":
|
|
57
|
-
prompts.push({
|
|
58
|
-
id: `consent-${prompts.length}`,
|
|
59
|
-
kind: "consent",
|
|
60
|
-
appId: ev.request.appId,
|
|
61
|
-
requested: ev.request.requested,
|
|
62
|
-
state: opts.promptState ?? "pending",
|
|
63
|
-
});
|
|
64
|
-
break;
|
|
65
59
|
case "profile-link":
|
|
66
60
|
prompts.push({
|
|
67
61
|
id: `link-${prompts.length}`,
|
|
@@ -101,7 +95,9 @@ export function driveTurn(events: InvokeTurnEvent[], opts: DriveOptions = {}): T
|
|
|
101
95
|
statusElapsedMs: opts.statusElapsedMs ?? 0,
|
|
102
96
|
activeTool,
|
|
103
97
|
error,
|
|
104
|
-
|
|
98
|
+
// The link ledger + the AgJSON hitl asks lifted from the fold — the
|
|
99
|
+
// live assembler's exact composition (use-transcript.ts).
|
|
100
|
+
prompts: [...prompts, ...hitlPromptsFromFold(sawAgEvents ? reducer.result() : null, opts.hitlAnswers ?? {})],
|
|
105
101
|
messages,
|
|
106
102
|
...(opts.sendStates !== undefined ? { sendStates: opts.sendStates } : {}),
|
|
107
103
|
...(opts.viewPhases !== undefined ? { viewPhases: opts.viewPhases } : {}),
|
|
@@ -180,5 +176,40 @@ export function frame(
|
|
|
180
176
|
};
|
|
181
177
|
}
|
|
182
178
|
|
|
179
|
+
/**
|
|
180
|
+
* The runtime's cross-app profile consent ask (guuey#207) — the paused turn
|
|
181
|
+
* the pod appends AFTER the agent's own turn: `turn.start` → `hitl.ask` →
|
|
182
|
+
* `turn.done outcome:"paused"` carrying the same `AgPausedAsk`. Mirrors
|
|
183
|
+
* `nocode-runtime/src/profile-consent.ts` byte-for-byte in shape.
|
|
184
|
+
*/
|
|
185
|
+
export const CONSENT_ASK: AgPausedAsk = {
|
|
186
|
+
askId: "profile-consent:app-1:thread-corpus",
|
|
187
|
+
kind: "approval",
|
|
188
|
+
message: "Trip Planner wants to read your guuey profile — the notes agents keep about you across apps.",
|
|
189
|
+
grantModes: [
|
|
190
|
+
{ id: "always", label: "Always allow", description: "Every conversation with this agent" },
|
|
191
|
+
{ id: "once", label: "Allow this chat", description: "Only this conversation" },
|
|
192
|
+
],
|
|
193
|
+
metadata: { appId: "app-1", requested: "read" },
|
|
194
|
+
};
|
|
195
|
+
export function consentTurn(next: () => number, ask: AgPausedAsk = CONSENT_ASK): AgEvent[] {
|
|
196
|
+
const turnId = `${ask.askId}#turn`;
|
|
197
|
+
return [
|
|
198
|
+
{ type: "turn.start", threadId: THREAD, turnId, seq: next() },
|
|
199
|
+
{
|
|
200
|
+
type: "hitl.ask",
|
|
201
|
+
turnId,
|
|
202
|
+
askId: ask.askId,
|
|
203
|
+
kind: ask.kind,
|
|
204
|
+
...(ask.message !== undefined ? { message: ask.message } : {}),
|
|
205
|
+
...(ask.grantModes !== undefined ? { grantModes: ask.grantModes } : {}),
|
|
206
|
+
...(ask.metadata !== undefined ? { metadata: ask.metadata } : {}),
|
|
207
|
+
continuation: "turn",
|
|
208
|
+
seq: next(),
|
|
209
|
+
},
|
|
210
|
+
{ type: "turn.done", turnId, finishReason: "paused", outcome: { type: "paused", asks: [ask] }, seq: next() },
|
|
211
|
+
];
|
|
212
|
+
}
|
|
213
|
+
|
|
183
214
|
export const session: InvokeTurnEvent = { kind: "session", threadId: THREAD };
|
|
184
215
|
export const doneEvent: InvokeTurnEvent = { kind: "done", stopReason: "end_turn" };
|
package/src/corpus/fixtures.ts
CHANGED
|
@@ -13,6 +13,8 @@ import type { InvokeTurnEvent } from "@guuey/agent-client";
|
|
|
13
13
|
import type { TranscriptInputs } from "../types.js";
|
|
14
14
|
import {
|
|
15
15
|
boot,
|
|
16
|
+
CONSENT_ASK,
|
|
17
|
+
consentTurn,
|
|
16
18
|
doneEvent,
|
|
17
19
|
driveTurn,
|
|
18
20
|
frame,
|
|
@@ -81,17 +83,29 @@ export function coldStart(elapsedMs: number): TranscriptInputs {
|
|
|
81
83
|
return driveTurn([], { userText: "hi", finalStatus: "connecting", statusElapsedMs: elapsedMs });
|
|
82
84
|
}
|
|
83
85
|
|
|
84
|
-
/**
|
|
86
|
+
/**
|
|
87
|
+
* 4. consent-gate — R10 pending grant-mode card → answered one-line collapse.
|
|
88
|
+
* The pod's real shape (guuey#207): the agent turn runs WITHOUT the profile
|
|
89
|
+
* and closes, then the paused consent turn rides after it; the answered leg
|
|
90
|
+
* is the host ledger recording the picked mode (`resolved` + `always`).
|
|
91
|
+
*/
|
|
85
92
|
export function consentGate(state: "pending" | "answered"): TranscriptInputs {
|
|
86
93
|
const s = seqSource();
|
|
87
94
|
const events: InvokeTurnEvent[] = [
|
|
88
95
|
session,
|
|
89
96
|
frame(boot(s), { status: "thinking" }),
|
|
90
|
-
|
|
91
|
-
|
|
97
|
+
frame(textPart(s, "x", "Booked your usual — I couldn't see your profile yet."), {
|
|
98
|
+
status: "responding",
|
|
99
|
+
text: "Booked your usual — I couldn't see your profile yet.",
|
|
100
|
+
}),
|
|
101
|
+
frame([{ type: "message.end", id: "msg-corpus", seq: s() }, { type: "turn.done", turnId: "turn-corpus", finishReason: "stop", outcome: { type: "success" }, seq: s() }]),
|
|
102
|
+
frame(consentTurn(s)),
|
|
92
103
|
doneEvent,
|
|
93
104
|
];
|
|
94
|
-
return driveTurn(events, {
|
|
105
|
+
return driveTurn(events, {
|
|
106
|
+
userText: "book my usual",
|
|
107
|
+
...(state === "answered" ? { hitlAnswers: { [CONSENT_ASK.askId]: { status: "resolved", grantModeId: "always" } } } : {}),
|
|
108
|
+
});
|
|
95
109
|
}
|
|
96
110
|
|
|
97
111
|
/** 5. bypass-text-only — plan identical to a silver stream carrying only text. */
|
package/src/hitl.ts
CHANGED
|
@@ -19,6 +19,11 @@
|
|
|
19
19
|
* Answer states encode guuey's ratified dismissal ruling (#16): dismissal
|
|
20
20
|
* maps to `cancelled` (still-pending, re-askable — the card stays
|
|
21
21
|
* answerable), `declined` is the durable explicit deny.
|
|
22
|
+
*
|
|
23
|
+
* The first producer is the guuey runtime's cross-app profile consent
|
|
24
|
+
* (guuey#207): the pod appends a paused turn whose ask declares
|
|
25
|
+
* `grantModes: [always, once?]`; the host delivers the built answer through
|
|
26
|
+
* `@guuey/agent-client`'s `createHitlAnswerRelay` (`POST <pod>/agent/hitl-answer`).
|
|
22
27
|
*/
|
|
23
28
|
import {
|
|
24
29
|
validateHitlAnswer,
|
|
@@ -565,9 +565,7 @@ export function NativePrompt({ item, ctx }: ItemProps<PromptItem>): ReactNode {
|
|
|
565
565
|
style={{ backgroundColor: tokens.palette.surface, borderRadius: tokens.radius, padding: tokens.pad, gap: 8 }}
|
|
566
566
|
>
|
|
567
567
|
<Text style={{ color: tokens.palette.ink, fontSize: tokens.fontSize, fontFamily: tokens.fontFamily }}>
|
|
568
|
-
{item.
|
|
569
|
-
? `${item.appId} requests ${item.requested} access`
|
|
570
|
-
: `Link your account to ${item.appId}`}
|
|
568
|
+
{`Link your account to ${item.appId}`}
|
|
571
569
|
</Text>
|
|
572
570
|
<View style={{ flexDirection: "row", gap: 12 }}>
|
|
573
571
|
<Pressable accessibilityRole="button" onPress={() => ctx.onPromptAction?.(item, "accept")}>
|
package/src/plan.ts
CHANGED
|
@@ -838,7 +838,8 @@ export function planTranscript(
|
|
|
838
838
|
}
|
|
839
839
|
|
|
840
840
|
// R10 — prompts, in input order (narrow on `kind`: the guuey-wire
|
|
841
|
-
//
|
|
841
|
+
// link-invite arm vs the AgJSON hitl arm — spec draft.2; consent rides
|
|
842
|
+
// hitl since guuey#207).
|
|
842
843
|
for (const prompt of inputs.prompts) {
|
|
843
844
|
const key = `p.${prompt.id}`;
|
|
844
845
|
if (prompt.kind === "hitl") {
|
package/src/react/components.tsx
CHANGED
|
@@ -588,11 +588,7 @@ export function DefaultPrompt({ item, ctx }: ItemProps<PromptItem>): ReactNode {
|
|
|
588
588
|
}
|
|
589
589
|
return (
|
|
590
590
|
<div className="guuey-chat-prompt" role="group">
|
|
591
|
-
<p className="guuey-chat-prompt-ask">
|
|
592
|
-
{item.promptKind === "consent"
|
|
593
|
-
? `${item.appId} requests ${item.requested} access`
|
|
594
|
-
: `Link your account to ${item.appId}`}
|
|
595
|
-
</p>
|
|
591
|
+
<p className="guuey-chat-prompt-ask">{`Link your account to ${item.appId}`}</p>
|
|
596
592
|
<div className="guuey-chat-prompt-actions">
|
|
597
593
|
<button
|
|
598
594
|
ref={firstAction}
|
|
@@ -227,9 +227,9 @@ export interface UseTranscriptInputsResult {
|
|
|
227
227
|
* VALIDATES it against the ask's persisted record (`validateHitlAnswer`
|
|
228
228
|
* — required-iff-declared, echo-must-be-declared, requestState byte-echo)
|
|
229
229
|
* BEFORE anything dispatches, records it in the ledger, and returns it
|
|
230
|
-
* for the HOST to deliver — the kit renders and validates; the
|
|
231
|
-
*
|
|
232
|
-
*
|
|
230
|
+
* for the HOST to deliver — the kit renders and validates; the transport
|
|
231
|
+
* is the host's (`@guuey/agent-client`'s `createHitlAnswerRelay` posts it
|
|
232
|
+
* to `<pod>/agent/hitl-answer`, guuey#207).
|
|
233
233
|
*/
|
|
234
234
|
answerHitlPrompt: (ask: AgPausedAsk, action: HitlPromptAction) => AgHitlAnswer;
|
|
235
235
|
}
|
|
@@ -250,36 +250,12 @@ export function useTranscriptInputs(invoke: UseAgentInvokeReturn): UseTranscript
|
|
|
250
250
|
return () => clearInterval(timer);
|
|
251
251
|
}, [invoke.status]);
|
|
252
252
|
|
|
253
|
-
// R10 ledger: the hook exposes only the LATEST pending
|
|
254
|
-
// transcript keeps the record of every ask and its resolution.
|
|
253
|
+
// R10 ledger (the LINK invite): the hook exposes only the LATEST pending
|
|
254
|
+
// invite; the transcript keeps the record of every ask and its resolution.
|
|
255
|
+
// Consent is NOT ledgered here — it is an AgJSON paused turn in the fold
|
|
256
|
+
// (`hitlPromptsFromFold` below, guuey#207).
|
|
255
257
|
const [prompts, setPrompts] = useState<ProfilePromptInput[]>([]);
|
|
256
258
|
const promptSeq = useRef(0);
|
|
257
|
-
useEffect(() => {
|
|
258
|
-
const request = invoke.profileConsentRequest;
|
|
259
|
-
if (request === null) {
|
|
260
|
-
setPrompts((prev) =>
|
|
261
|
-
prev.some((p) => p.kind === "consent" && p.state === "pending")
|
|
262
|
-
? prev.map((p) =>
|
|
263
|
-
p.kind === "consent" && p.state === "pending" ? { ...p, state: "dismissed" } : p,
|
|
264
|
-
)
|
|
265
|
-
: prev,
|
|
266
|
-
);
|
|
267
|
-
return;
|
|
268
|
-
}
|
|
269
|
-
setPrompts((prev) => {
|
|
270
|
-
if (prev.some((p) => p.kind === "consent" && p.state === "pending")) return prev;
|
|
271
|
-
return [
|
|
272
|
-
...prev,
|
|
273
|
-
{
|
|
274
|
-
id: `consent.${promptSeq.current++}`,
|
|
275
|
-
kind: "consent",
|
|
276
|
-
appId: request.appId,
|
|
277
|
-
requested: request.requested,
|
|
278
|
-
state: "pending",
|
|
279
|
-
},
|
|
280
|
-
];
|
|
281
|
-
});
|
|
282
|
-
}, [invoke.profileConsentRequest]);
|
|
283
259
|
useEffect(() => {
|
|
284
260
|
const request = invoke.profileLinkRequest;
|
|
285
261
|
if (request === null) {
|
|
@@ -313,7 +289,6 @@ export function useTranscriptInputs(invoke: UseAgentInvokeReturn): UseTranscript
|
|
|
313
289
|
// Clearing the hook's pending request AFTER the ledger moved keeps the
|
|
314
290
|
// dismissal effect above from double-transitioning it.
|
|
315
291
|
const pending = prompts.find((p) => p.id === id);
|
|
316
|
-
if (pending?.kind === "consent") invoke.clearProfileConsentRequest();
|
|
317
292
|
if (pending?.kind === "link") invoke.clearProfileLinkRequest();
|
|
318
293
|
},
|
|
319
294
|
[invoke, prompts],
|
package/src/types.ts
CHANGED
|
@@ -47,14 +47,17 @@ export interface TranscriptMessage {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
/**
|
|
50
|
-
* A pending/resolved
|
|
51
|
-
* `profile-
|
|
52
|
-
*
|
|
53
|
-
*
|
|
50
|
+
* A pending/resolved account-LINK invite (R10) — the turn-level
|
|
51
|
+
* `profile-link` event lifted into renderable state. The assembler (3b)
|
|
52
|
+
* accumulates these from `invokeTurn` events; `id` is assembler-chosen and
|
|
53
|
+
* stable for the ask's lifetime. (Consent is NOT a profile arm any more:
|
|
54
|
+
* since guuey#207 the pod asks over AgJSON `hitl.ask` + `turn.done
|
|
55
|
+
* outcome:"paused"` with declared `grantModes`, and it renders through
|
|
56
|
+
* {@link HitlPromptInput}.)
|
|
54
57
|
*/
|
|
55
58
|
export interface ProfilePromptInput {
|
|
56
59
|
id: string;
|
|
57
|
-
kind: "
|
|
60
|
+
kind: "link";
|
|
58
61
|
appId: string;
|
|
59
62
|
requested: "read" | "read-write";
|
|
60
63
|
state: "pending" | "answered" | "declined" | "dismissed";
|
|
@@ -83,9 +86,9 @@ export interface HitlPromptInput {
|
|
|
83
86
|
|
|
84
87
|
/**
|
|
85
88
|
* R10 prompt inputs — a discriminated union (narrow on `kind`). The
|
|
86
|
-
* profile arm is the
|
|
87
|
-
*
|
|
88
|
-
* the one shape this union retired — narrow first.)
|
|
89
|
+
* profile arm is the guuey-wire LINK invite; `hitl` (spec draft.2) carries
|
|
90
|
+
* every AgJSON ask, consent included. (Direct un-narrowed reads of
|
|
91
|
+
* profile-only fields are the one shape this union retired — narrow first.)
|
|
89
92
|
*/
|
|
90
93
|
export type PromptItemInput = ProfilePromptInput | HitlPromptInput;
|
|
91
94
|
|
|
@@ -117,7 +120,7 @@ export interface TranscriptInputs {
|
|
|
117
120
|
statusElapsedMs: number;
|
|
118
121
|
activeTool: string | null;
|
|
119
122
|
error: { message: string; code: string | null } | null;
|
|
120
|
-
/** Pending/answered
|
|
123
|
+
/** Pending/answered asks (R10): the link invite + AgJSON hitl asks (consent). */
|
|
121
124
|
prompts: PromptItemInput[];
|
|
122
125
|
/**
|
|
123
126
|
* The settled conversation, both roles, in order. Assistant entries are
|
|
@@ -320,12 +323,12 @@ export interface CitationsItem extends BaseItem {
|
|
|
320
323
|
style: "chips" | "list";
|
|
321
324
|
}
|
|
322
325
|
|
|
323
|
-
/** R10 — the guuey-wire
|
|
326
|
+
/** R10 — the guuey-wire account-LINK prompt card (the original arm). */
|
|
324
327
|
export interface ProfilePromptItem extends BaseItem {
|
|
325
328
|
kind: "prompt";
|
|
326
329
|
/** The `PromptItemInput.id` this row records — the host's resolution key. */
|
|
327
330
|
promptId: string;
|
|
328
|
-
promptKind: "
|
|
331
|
+
promptKind: "link";
|
|
329
332
|
appId: string;
|
|
330
333
|
requested: "read" | "read-write";
|
|
331
334
|
state: "pending" | "answered" | "declined" | "dismissed";
|