@object-ui/plugin-chatbot 17.3.0 → 17.6.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.
@@ -162,6 +162,59 @@ export interface BuilderHandoff {
162
162
  }
163
163
  export declare function detectBuilderHandoff(result: unknown): BuilderHandoff | undefined;
164
164
  export declare function detectProposedChanges(result: unknown): ProposedChanges | undefined;
165
+ /**
166
+ * objectui#5695 — the terminal verdict of a confirm-replay.
167
+ *
168
+ * When the user approves a 确认修改 card, the runtime re-dispatches the
169
+ * proposal deterministically and appends the result under a synthetic
170
+ * `replay_<turn>_<i>` tool-call id (cloud `runApprovedProposalReplay`). The
171
+ * envelope is the ordinary authoring envelope — `status:'published'`,
172
+ * or `status:'drafted'` optionally stamped `publishFailed:true` +
173
+ * `publishOutcome`/`publishError` when the in-turn publish rolled back
174
+ * (cloud#1467). Lifted into a dedicated shape so the confirm card can render
175
+ * a UI-owned terminal state — the layer a model cannot narrate over.
176
+ */
177
+ export interface ReplayOutcome {
178
+ kind: 'published' | 'drafted' | 'failed';
179
+ /** Machine verdict of a failed publish (`rejected` / `rolled_back` / `nothing_published`). */
180
+ outcome?: string;
181
+ /** First line of `publishError`, for the 未生效 headline. */
182
+ error?: string;
183
+ /** Owning package of a drafted outcome, for the inline publish affordance. */
184
+ packageId?: string;
185
+ /**
186
+ * The replay DISPATCH itself errored (bare `{error: …}` envelope) rather
187
+ * than the publish being refused — measured live 2026-08-24: an apply_edit
188
+ * replay carrying a blueprint-local object name errored `object "task" not
189
+ * found`, after which the MODEL self-repaired with different tool calls
190
+ * that succeeded. A dispatch error is therefore only provisionally
191
+ * `failed`: the card walk may supersede it with a later successful
192
+ * authoring verdict from the same turn (see `detectAuthoringVerdict`),
193
+ * so the card never says 未生效 over a change that actually landed.
194
+ */
195
+ dispatchError?: boolean;
196
+ }
197
+ export declare function detectReplayOutcome(toolCallId: string | undefined, result: unknown): ReplayOutcome | undefined;
198
+ /**
199
+ * objectui#5695 — classify ANY tool result as an authoring verdict, for the
200
+ * confirm card's self-repair supersede: after a replay DISPATCH error, the
201
+ * model may land the same change through different tool calls; those results
202
+ * carry the ordinary authoring envelope, and the latest one in the turn is
203
+ * the truthful terminal state for the card.
204
+ */
205
+ export declare function detectAuthoringVerdict(result: unknown): {
206
+ kind: 'published' | 'drafted' | 'failed';
207
+ packageId?: string;
208
+ } | undefined;
209
+ /**
210
+ * objectui#5799 — did this tool result finish a WHOLE-APP build, and for which
211
+ * package? Posture-independent on purpose: an auto-publish environment
212
+ * rewrites the apply_blueprint envelope to `status:'published'` (keeping
213
+ * `drafted[]` + `packageId`), so keying the built-moment transition on
214
+ * `draftReview` (drafted-only) missed every staging/cloud build — measured
215
+ * live: reopening a built conversation stayed on the full page.
216
+ */
217
+ export declare function detectBuiltAppPackage(result: unknown): string | undefined;
165
218
  export declare function detectDraftResult(result: unknown): DraftReview | undefined;
166
219
  /**
167
220
  * Synthesize a COMPLETED build-progress summary from a persisted apply_blueprint
@@ -1 +1 @@
1
- {"version":3,"file":"mapMessages.d.ts","sourceRoot":"","sources":["../src/mapMessages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mapMessages.d.ts","sourceRoot":"","sources":["../src/mapMessages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAc,iBAAiB,EAAoC,MAAM,mBAAmB,CAAC;AAE1I,UAAU,OAAO;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,YAAY;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAmBD;;;;;;;GAOG;AACH;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAmCxF;AAcD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/F;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,2DAA2D;IAC3D,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACjF,iFAAiF;IACjF,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC7D,6EAA6E;IAC7E,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS,CAkE5E;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAQhF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,CAqBlF;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;IACzC,8FAA8F;IAC9F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,MAAM,EAAE,OAAO,GACd,aAAa,GAAG,SAAS,CA8B3B;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,OAAO,GACd;IAAE,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAS9E;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAazE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CA4E1E;AAWD;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,WAAW,GAAG,SAAS,GAC7B,iBAAiB,GAAG,SAAS,CAW/B;AAqMD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,YAAY,EACjB,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,WAAW,CAiCb;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,YAAY,EAAE,EACxB,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,WAAW,EAAE,CASf"}
@@ -58,7 +58,36 @@ export interface AiQuotaError {
58
58
  * The ai-sdk chat transport throws a plain Error whose `message` is the response
59
59
  * body text (no HTTP status is preserved), so the only signal is the JSON body:
60
60
  * strip the same retry/format prefixes summarizeChatError handles, locate the
61
- * JSON object, and match its `error` code. Returns null for anything else.
61
+ * JSON object, and find the code in it. Returns null for anything else.
62
+ *
63
+ * ## Three dialects, one code set
64
+ *
65
+ * The two cloud 429 producers fill the same `error` key in OPPOSITE ways, and
66
+ * ADR-0112 declares a third shape they are converging on (objectui#3491,
67
+ * cloud#944). All three are read here so the consumer is ready BEFORE the
68
+ * producers move (cloud#1168) — the alternative is a silent misfit at the
69
+ * moment they converge:
70
+ *
71
+ * | dialect | shape |
72
+ * |------------------------------|------------------------------------------------|
73
+ * | declared envelope (ADR-0112) | `{ success: false, error: { code, message } }` |
74
+ * | flat guardrail | `{ error: CODE, message, upgrade, topUp }` |
75
+ * | service-ai sibling key | `{ error: PROSE, code: CODE }` |
76
+ *
77
+ * Only the code's LOCATION widens; the recognized code set is unchanged, so an
78
+ * unknown shape still degrades to today's behavior (null). Note that a
79
+ * spec-conformant `error.code` must be an `ErrorCode` ledger member
80
+ * (SCREAMING_SNAKE) and none of these three codes is registered today, so the
81
+ * nested branch matches the legacy vocabulary only — aligning the vocabulary is
82
+ * cloud#1168's call and needs a follow-up here, not a guess now.
83
+ *
84
+ * ## Parse priority (a total order, deliberately)
85
+ *
86
+ * `declared envelope > flat guardrail > sibling code key`. A payload that
87
+ * satisfies two dialects at once — a transitional producer double-emitting the
88
+ * new envelope alongside the legacy top-level keys is the realistic case — must
89
+ * have ONE defined outcome, so the most-declared position wins, and the legacy
90
+ * limbs remain reachable when the nested code is absent or unrecognized.
62
91
  */
63
92
  export declare function parseAiQuotaError(err: unknown): AiQuotaError | null;
64
93
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tool-display.d.ts","sourceRoot":"","sources":["../src/tool-display.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAeH;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAoBxE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAqCxD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAiCA;AAED,8EAA8E;AAC9E,MAAM,MAAM,WAAW,GACnB,2BAA2B,GAC3B,8BAA8B,GAC9B,wBAAwB,CAAC;AAE7B,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,KAAK,EAAE,OAAO,CAAC;CAChB;AAQD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CA0BnE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAIvD;AAED,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIhE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAItD"}
1
+ {"version":3,"file":"tool-display.d.ts","sourceRoot":"","sources":["../src/tool-display.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAeH;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAoBxE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAqCxD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAiCA;AAED,8EAA8E;AAC9E,MAAM,MAAM,WAAW,GACnB,2BAA2B,GAC3B,8BAA8B,GAC9B,wBAAwB,CAAC;AAE7B,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,KAAK,EAAE,OAAO,CAAC;CAChB;AAwBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CA8CnE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAIvD;AAED,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIhE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAItD"}
@@ -19,6 +19,19 @@ export interface UseHitlInChatOptions {
19
19
  * Optional callback fired after a decision completes (regardless of
20
20
  * success/failure). Useful for refreshing the inbox view if it is also
21
21
  * mounted on the same page.
22
+ *
23
+ * `outcome` is the spec decision response as the endpoint returned it, so
24
+ * read it by side: `result` / `error` on approve, `id` on reject
25
+ * (objectui#3783 — the previous local types promised `id` on BOTH, and the
26
+ * approve response has never carried one). `pendingActionId` is available
27
+ * from `ContinueContext` and from the row you decided on; do not fish it out
28
+ * of an approve outcome.
29
+ *
30
+ * One honest caveat: on a transport error or non-2xx there IS no decision
31
+ * response, and this callback is still invoked — with an envelope the hook
32
+ * synthesizes locally (`{ status: 'failed', error }`). That case is not
33
+ * modelled by this parameter's type; narrowing it is a public-contract
34
+ * decision tracked in objectui#3790.
22
35
  */
23
36
  onDecided?: (toolCallId: string, outcome: ApproveOutcome | RejectOutcome) => void;
24
37
  /**
@@ -39,7 +52,12 @@ export interface ContinueContext {
39
52
  toolCallId: string;
40
53
  pendingActionId: string;
41
54
  decision: 'approved' | 'rejected';
42
- /** Raw REST payload — `{ status, result?, error?, … }`. */
55
+ /**
56
+ * Raw REST payload — the spec decision response: `{ status: 'executed' |
57
+ * 'failed', result?, error? }` on approve, `{ status: 'rejected', id }` on
58
+ * reject (objectui#3783). Note `id` is on the REJECT side only; use
59
+ * `pendingActionId` above, which is populated for both decisions.
60
+ */
43
61
  outcome: ApproveOutcome | RejectOutcome;
44
62
  /** Tool name as it appeared in the message part (e.g. `action_delete_task`). */
45
63
  toolName?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"useHitlInChat.d.ts","sourceRoot":"","sources":["../src/useHitlInChat.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzE,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,aAAa,KAAK,IAAI,CAAC;IAClF;;;;;;;;;;OAUG;IACH,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;CAC3E;AAED,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,UAAU,GAAG,UAAU,CAAC;IAClC,2DAA2D;IAC3D,OAAO,EAAE,cAAc,GAAG,aAAa,CAAC;IACxC,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC7C;;;;OAIG;IACH,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClF;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AA0BD,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,mBAAmB,CAiJhF"}
1
+ {"version":3,"file":"useHitlInChat.d.ts","sourceRoot":"","sources":["../src/useHitlInChat.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzE,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,aAAa,KAAK,IAAI,CAAC;IAClF;;;;;;;;;;OAUG;IACH,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;CAC3E;AAED,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,UAAU,GAAG,UAAU,CAAC;IAClC;;;;;OAKG;IACH,OAAO,EAAE,cAAc,GAAG,aAAa,CAAC;IACxC,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC7C;;;;OAIG;IACH,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClF;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AA0BD,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,mBAAmB,CAyJhF"}
@@ -1,4 +1,46 @@
1
1
  import { ChatMessage as OuiChatMessage } from '@object-ui/types';
2
+ import { SeamChatMessage } from './chatMessageAdapter';
3
+ /**
4
+ * What `useObjectChat` actually emits — from `messages` and from the
5
+ * `onSend(content, messages)` callback fed from it (objectui#4424).
6
+ *
7
+ * The hook used to declare both as the `@object-ui/types` AUTHORING contract.
8
+ * In local mode that was true; in API mode it was a cast over values produced
9
+ * by the RUNTIME mapper, so the declared type was narrower than the values in
10
+ * exactly the direction that hides capability: anyone rebuilding a message
11
+ * field-by-field from its declared type deleted the HITL approval card, the
12
+ * "Review N changes" affordance, the proposed-plan card, the build panel and
13
+ * the inline charts, with the compiler agreeing.
14
+ *
15
+ * This type is what the survey found to be true of BOTH modes — neither the
16
+ * authoring type nor the runtime type, but the shape that admits both:
17
+ *
18
+ * - **wide where local mode is wide.** An authored `'tool'` role and the
19
+ * legacy `'partial-call'`/`'call'`/`'result'` tool states reach this
20
+ * surface unchanged and are folded only at the render seam, which is the
21
+ * decision `chatMessageAdapter.ts` records. So the runtime type would have
22
+ * been a lie about local mode.
23
+ * - **narrow where BOTH modes are narrow.** `timestamp` is `string`, never
24
+ * `Date`: API mode never produces one and local mode absorbs it in
25
+ * `normalizeMessages` before it is ever handed out. Declaring `Date` here
26
+ * asks every consumer to handle a value that cannot arrive.
27
+ * - **plus the render-only keys API mode really carries** —
28
+ * `buildProgress`, `blueprintProgress`, `charts`, and the HITL /
29
+ * draft-review / proposed-plan / builder-handoff extensions on each tool
30
+ * invocation.
31
+ *
32
+ * It is a SUBTYPE of `@object-ui/types`' `ChatMessage`, which is what makes the
33
+ * change invisible to correct consumers: anything that accepted the authoring
34
+ * type still accepts these values, including a host `onSend` callback that
35
+ * declares its parameter as `ChatMessage[]`.
36
+ */
37
+ export type ObjectChatMessage = Omit<SeamChatMessage, 'timestamp'> & {
38
+ /**
39
+ * Always a string here (or absent). Both modes absorb an authored `Date`
40
+ * via `toRuntimeTimestamp` before emitting — see `chatMessageAdapter.ts`.
41
+ */
42
+ timestamp?: string;
43
+ };
2
44
  /**
3
45
  * Window event the AI usage indicator (ADR-0057 #8) listens for to refetch its
4
46
  * quota headroom. A completed turn consumes tokens and a rejected send (429) means
@@ -67,6 +109,8 @@ export declare function withTurnId(req: {
67
109
  * first turn to seed the ask thread as context. Exported for unit testing.
68
110
  */
69
111
  export declare function withHandoffContext(body: Record<string, unknown>, parentConversationId: string): Record<string, unknown>;
112
+ /** Test seam: forget that the inert-`maxToolRoundtrips` notice has been given. */
113
+ export declare function resetMaxToolRoundtripsWarning(): void;
70
114
  type InitialMessage = OuiChatMessage & {
71
115
  parts?: Array<Record<string, unknown>>;
72
116
  reasoning?: string;
@@ -120,7 +164,14 @@ export interface UseObjectChatOptions {
120
164
  body?: Record<string, unknown>;
121
165
  /**
122
166
  * Maximum tool-calling round-trips per message.
123
- * @default 5
167
+ *
168
+ * @deprecated objectui#5605 — INERT. Nothing reads this value: the installed
169
+ * chat runtime exposes no client-side round-trip cap, and ObjectUI does not
170
+ * own the server loop. Setting it has never had an effect, and it does not
171
+ * acquire one by being set. Cap tool-calling loops on the agent instead
172
+ * (`planning.maxIterations`). Still accepted so existing documents keep
173
+ * parsing; authoring it now logs a one-time notice, and it is slated for
174
+ * removal in a future major. See {@link warnMaxToolRoundtripsInert}.
124
175
  */
125
176
  maxToolRoundtrips?: number;
126
177
  /**
@@ -146,15 +197,24 @@ export interface UseObjectChatOptions {
146
197
  autoResponseDelay?: number;
147
198
  /**
148
199
  * External send callback (fires for both modes).
149
- */
150
- onSend?: (content: string, messages: OuiChatMessage[]) => void;
200
+ *
201
+ * `messages` is the thread as it will be after this send, in the same shape
202
+ * the hook's own `messages` uses — see {@link ObjectChatMessage}. A callback
203
+ * that declares the parameter as `@object-ui/types`' `ChatMessage[]` still
204
+ * type-checks (the emitted shape is a subtype); declaring it as
205
+ * `ObjectChatMessage[]` is what lets you READ the render-only keys.
206
+ */
207
+ onSend?: (content: string, messages: ObjectChatMessage[]) => void;
151
208
  }
152
209
  /**
153
210
  * Return type of useObjectChat.
154
211
  */
155
212
  export interface UseObjectChatReturn {
156
- /** Current chat messages */
157
- messages: OuiChatMessage[];
213
+ /**
214
+ * Current chat messages — see {@link ObjectChatMessage} for why this is
215
+ * neither the authoring nor the runtime `ChatMessage` (objectui#4424).
216
+ */
217
+ messages: ObjectChatMessage[];
158
218
  /** Whether the assistant is currently generating a response */
159
219
  isLoading: boolean;
160
220
  /** Current error, if any */
@@ -1 +1 @@
1
- {"version":3,"file":"useObjectChat.d.ts","sourceRoot":"","sources":["../src/useObjectChat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useObjectChat.d.ts","sourceRoot":"","sources":["../src/useObjectChat.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { ApproveAiPendingActionResponse, RejectAiPendingActionResponse } from '@objectstack/spec/api';
1
2
  import { PendingActionRow, PendingActionStatus } from '@objectstack/spec/contracts';
2
3
  /**
3
4
  * Lifecycle of a pending action proposal, and the row `GET
@@ -27,25 +28,46 @@ import { PendingActionRow, PendingActionStatus } from '@objectstack/spec/contrac
27
28
  */
28
29
  export type { PendingActionRow, PendingActionStatus };
29
30
  /**
30
- * Successful approval outcome returned by
31
- * `POST /api/v1/ai/pending-actions/:id/approve`.
31
+ * The two decision responses —
32
+ * `POST /api/v1/ai/pending-actions/:id/approve` and `…/reject` — THE spec
33
+ * types, re-exported under this package's published names (objectui#3783).
32
34
  *
33
- * The HTTP status is 200 when `status === 'executed'` and 500 when the
34
- * downstream dispatcher failed (`status === 'failed'`). The hook surfaces
35
- * both as a normal resolved value so the UI can show the error inline
36
- * without throwing.
35
+ * `@objectstack/spec/api` declares both (`ApproveAiPendingActionResponseSchema`
36
+ * / `RejectAiPendingActionResponseSchema` in `api/protocol.zod.ts`), and those
37
+ * are the same schemas `@objectstack/client`'s `ai.pendingActions.approve()` /
38
+ * `.reject()` type their return values with — so what is re-exported here IS
39
+ * the wire, not a second reading of it. The local names stay `ApproveOutcome` /
40
+ * `RejectOutcome` because they are this package's public API surface
41
+ * (`src/index.tsx`); only the shapes change.
42
+ *
43
+ * `status: 'failed'` is an HTTP **200** carrying a reason, not a 5xx: the
44
+ * approval succeeded, the execution did not (see the doc comment on
45
+ * `ApproveAiPendingActionResponseSchema`). The comment that used to sit here
46
+ * claimed 500, which contradicted both the spec and this hook's own design —
47
+ * `call()` throws on `!res.ok`, so a 500 could never reach the resolved-value
48
+ * path `AiPendingActionsInbox` reads `out.error` from.
49
+ *
50
+ * The copies this replaces were hand transcriptions and had drifted three ways.
51
+ * Because the local names are NOT the spec's names,
52
+ * `scripts/check-spec-symbol-derivation.mjs` — which fires when a local
53
+ * declaration OCCUPIES a spec export name — had no handle on them at all;
54
+ * renaming a hand copy is invisible to a name-based guard:
55
+ *
56
+ * - `ApproveOutcome.id: string`, REQUIRED here and absent from the approve
57
+ * response — `id` is on the REJECT side. This drift was not dormant: the
58
+ * public `onDecided` callback (`useHitlInChat`) promised consumers a
59
+ * `string` and handed them `undefined` at runtime, with no compiler
60
+ * complaint anywhere;
61
+ * - `status: 'executed' | 'failed' | string` — a union with `string` ABSORBS
62
+ * the literals, so the annotation carried no information at all. The same
63
+ * drift #3220 removed from the row above;
64
+ * - `[k: string]: unknown` — the objectstack#4075 mechanism: an index
65
+ * signature makes any structural comparison against the spec answer
66
+ * "identical" however far the copy has drifted, so a parity test bolted onto
67
+ * the copy would have been green from its first day.
37
68
  */
38
- export interface ApproveOutcome {
39
- id: string;
40
- status: 'executed' | 'failed' | string;
41
- result?: unknown;
42
- error?: string;
43
- [k: string]: unknown;
44
- }
45
- export interface RejectOutcome {
46
- id: string;
47
- status: 'rejected' | string;
48
- }
69
+ export type ApproveOutcome = ApproveAiPendingActionResponse;
70
+ export type RejectOutcome = RejectAiPendingActionResponse;
49
71
  export interface UsePendingActionsOptions {
50
72
  /**
51
73
  * Base URL of the AI service, e.g. `http://localhost:3000/api/v1/ai`.
@@ -1 +1 @@
1
- {"version":3,"file":"usePendingActions.d.ts","sourceRoot":"","sources":["../src/usePendingActions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoBH,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,6BAA6B,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,CAAC;AAEtD;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,mBAAmB,GAAG,KAAK,CAAC;IACrC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,oCAAoC;IACpC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B;;;;OAIG;IACH,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACjD;;;OAGG;IACH,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;CACjE;AAgDD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,CAiFzB"}
1
+ {"version":3,"file":"usePendingActions.d.ts","sourceRoot":"","sources":["../src/usePendingActions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoBH,OAAO,KAAK,EACV,8BAA8B,EAC9B,6BAA6B,EAC9B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,6BAA6B,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,MAAM,cAAc,GAAG,8BAA8B,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,6BAA6B,CAAC;AAE1D,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,mBAAmB,GAAG,KAAK,CAAC;IACrC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,oCAAoC;IACpC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B;;;;OAIG;IACH,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACjD;;;OAGG;IACH,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;CACjE;AAgDD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,CAiFzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@object-ui/plugin-chatbot",
3
- "version": "17.3.0",
3
+ "version": "17.6.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Chatbot interface plugin for Object UI",
@@ -24,26 +24,26 @@
24
24
  }
25
25
  },
26
26
  "dependencies": {
27
- "@ai-sdk/react": "^4.0.47",
27
+ "@ai-sdk/react": "^4.0.68",
28
28
  "@radix-ui/react-slot": "^1.3.3",
29
- "@objectstack/spec": "^17.0.0-rc.2",
29
+ "@objectstack/spec": "^17.0.0",
30
30
  "@radix-ui/react-use-controllable-state": "^1.2.6",
31
- "ai": "^7.0.44",
31
+ "ai": "^7.0.65",
32
32
  "class-variance-authority": "^0.7.1",
33
- "lucide-react": "^1.28.0",
33
+ "lucide-react": "^1.31.0",
34
34
  "motion": "^12.43.0",
35
- "nanoid": "^6.0.0",
35
+ "nanoid": "^6.0.1",
36
36
  "react-markdown": "^10.1.0",
37
37
  "react-syntax-highlighter": "^16.1.1",
38
38
  "remark-gfm": "^4.0.1",
39
- "shiki": "^4.3.1",
39
+ "shiki": "^4.4.2",
40
40
  "streamdown": "^2.5.0",
41
41
  "use-stick-to-bottom": "^1.1.6",
42
- "@object-ui/components": "17.3.0",
43
- "@object-ui/core": "17.3.0",
44
- "@object-ui/i18n": "17.3.0",
45
- "@object-ui/react": "17.3.0",
46
- "@object-ui/types": "17.3.0"
42
+ "@object-ui/components": "17.6.0",
43
+ "@object-ui/core": "17.6.0",
44
+ "@object-ui/i18n": "17.6.0",
45
+ "@object-ui/react": "17.6.0",
46
+ "@object-ui/types": "17.6.0"
47
47
  },
48
48
  "peerDependencies": {
49
49
  "react": "^18.0.0 || ^19.0.0",
@@ -55,7 +55,7 @@
55
55
  "@types/react-syntax-highlighter": "^15.5.13",
56
56
  "@vitejs/plugin-react": "^6.0.5",
57
57
  "typescript": "^6.0.3",
58
- "vite": "^8.2.0",
58
+ "vite": "^8.2.1",
59
59
  "vite-plugin-dts": "^5.0.3"
60
60
  },
61
61
  "keywords": [
@@ -86,7 +86,7 @@
86
86
  "build": "vite build",
87
87
  "test": "vitest run",
88
88
  "test:watch": "vitest",
89
- "type-check": "tsc --noEmit && tsc -p tsconfig.typetests.json",
89
+ "type-check": "tsc --noEmit && tsc -p tsconfig.test.json",
90
90
  "lint": "eslint ."
91
91
  }
92
92
  }