@tianshu-ai/tianshu 0.3.21 → 0.3.23

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 (34) hide show
  1. package/node_modules/@tianshu-ai/plugin-sdk/dist/client.d.ts +85 -0
  2. package/node_modules/@tianshu-ai/plugin-sdk/dist/client.d.ts.map +1 -1
  3. package/node_modules/@tianshu-ai/plugin-sdk/dist/client.js +24 -0
  4. package/node_modules/@tianshu-ai/plugin-sdk/dist/client.js.map +1 -1
  5. package/node_modules/@tianshu-ai/plugin-sdk/src/client.ts +135 -0
  6. package/package.json +1 -1
  7. package/packages/plugin-sdk/dist/client.d.ts +85 -0
  8. package/packages/plugin-sdk/dist/client.d.ts.map +1 -1
  9. package/packages/plugin-sdk/dist/client.js +24 -0
  10. package/packages/plugin-sdk/dist/client.js.map +1 -1
  11. package/packages/server/dist/chat/host-tools/tool-catalog-refresh.d.ts +19 -0
  12. package/packages/server/dist/chat/host-tools/tool-catalog-refresh.d.ts.map +1 -0
  13. package/packages/server/dist/chat/host-tools/tool-catalog-refresh.js +205 -0
  14. package/packages/server/dist/chat/host-tools/tool-catalog-refresh.js.map +1 -0
  15. package/packages/server/dist/core/plugins/registry.d.ts +32 -0
  16. package/packages/server/dist/core/plugins/registry.d.ts.map +1 -1
  17. package/packages/server/dist/core/plugins/registry.js +19 -0
  18. package/packages/server/dist/core/plugins/registry.js.map +1 -1
  19. package/packages/server/dist/index.js +20 -0
  20. package/packages/server/dist/index.js.map +1 -1
  21. package/packages/web/dist/assets/index-CMpVqJxn.js +60 -0
  22. package/packages/web/dist/assets/index-CknO5ZMD.css +2 -0
  23. package/packages/web/dist/index.html +2 -2
  24. package/plugins/files/dist/client.d.ts.map +1 -1
  25. package/plugins/files/dist/client.js +15 -13
  26. package/plugins/files/dist/client.js.map +1 -1
  27. package/plugins/workboard/dist/client.d.ts.map +1 -1
  28. package/plugins/workboard/dist/client.js +14 -13
  29. package/plugins/workboard/dist/client.js.map +1 -1
  30. package/plugins/workboard/dist/worker/tool-policy.d.ts.map +1 -1
  31. package/plugins/workboard/dist/worker/tool-policy.js +4 -0
  32. package/plugins/workboard/dist/worker/tool-policy.js.map +1 -1
  33. package/packages/web/dist/assets/index-Cs0x5xVe.css +0 -2
  34. package/packages/web/dist/assets/index-DIiIMU7-.js +0 -60
@@ -168,4 +168,89 @@ export declare function __resetPluginConfigFormForTest(): void;
168
168
  * (so the calling component can drop it in unconditionally). */
169
169
  export declare const PluginConfigForm: React.ComponentType<PluginConfigFormProps>;
170
170
  export declare function useOpenFile(): OpenFileApi["open"];
171
+ export interface ModalProps {
172
+ /** Whether the modal is rendered. Caller controls visibility;
173
+ * the modal does not animate or remember anything when this
174
+ * flips. */
175
+ isOpen: boolean;
176
+ /** Fired when the user dismisses the modal (ESC, backdrop
177
+ * click, or the X button). The host does NOT auto-close on
178
+ * this — the caller must flip `isOpen` to false themselves. */
179
+ onClose: () => void;
180
+ /** Optional title rendered in the header. When omitted the
181
+ * modal still renders a close button in the top-right. */
182
+ title?: string;
183
+ /** Size preset. Defaults to "md".
184
+ * sm : narrow, content-driven (e.g. confirmations)
185
+ * md : comfortable reading width (default)
186
+ * lg : wide content (file previews, code)
187
+ * xl : near full-screen (transcripts, long history) */
188
+ size?: "sm" | "md" | "lg" | "xl";
189
+ /** Modal body. Caller fully controls layout inside. */
190
+ children: React.ReactNode;
191
+ /** Optional className merged onto the inner content panel
192
+ * (NOT the backdrop). Lets callers tune background, padding,
193
+ * or override the default min-height. */
194
+ className?: string;
195
+ /** Hide the default header (title + X). Use when the caller
196
+ * renders its own header / chrome inside `children` and doesn't
197
+ * want a doubled-up close affordance. The Modal still closes
198
+ * on ESC and backdrop click. */
199
+ hideHeader?: boolean;
200
+ }
201
+ export interface DocumentViewerProps {
202
+ /** The file content. String for text/markdown/code; null while
203
+ * loading or for binary files the host already determined are
204
+ * unviewable. */
205
+ content: string | null;
206
+ /** Optional MIME type hint. When absent the viewer falls back
207
+ * to extension sniffing via `filename`. */
208
+ mimeType?: string;
209
+ /** Optional filename hint, used for extension sniffing when
210
+ * `mimeType` is absent and for the markdown vs. plain-text
211
+ * dispatch (only `.md` / `.markdown` get rendered as
212
+ * Markdown; everything else falls through to plain text). */
213
+ filename?: string;
214
+ /** Set to true when the host already knows the content is
215
+ * binary and unrenderable (e.g. images served through a
216
+ * different surface). The viewer shows a placeholder. */
217
+ binary?: boolean;
218
+ /** Set to true while the host is fetching content. Viewer
219
+ * shows a spinner. */
220
+ loading?: boolean;
221
+ /** Error message from the loader, if any. Viewer renders it
222
+ * in place of the content. */
223
+ error?: string | null;
224
+ /** Optional total bytes; surfaced in the binary placeholder
225
+ * and the "too large" error path. */
226
+ sizeBytes?: number;
227
+ /** Optional className merged onto the viewer root. */
228
+ className?: string;
229
+ }
230
+ export interface MarkdownBlockProps {
231
+ /** Markdown source. */
232
+ children: string;
233
+ /** Optional className merged onto the prose container. */
234
+ className?: string;
235
+ /** Skip the default prose typography classes. Useful when the
236
+ * caller wraps MarkdownBlock in its own prose container
237
+ * (chat-bubble style) and a double-wrap would compound the
238
+ * styles. Default false — standalone use gets prose for free. */
239
+ noProse?: boolean;
240
+ }
241
+ export interface UiPrimitives {
242
+ Modal: React.ComponentType<ModalProps>;
243
+ DocumentViewer: React.ComponentType<DocumentViewerProps>;
244
+ MarkdownBlock: React.ComponentType<MarkdownBlockProps>;
245
+ }
246
+ /** Host-only: install the canonical UiPrimitives. Called by the
247
+ * web bundle at boot. Last writer wins. */
248
+ export declare function __installUiPrimitives(api: UiPrimitives): void;
249
+ /** Test helper. */
250
+ export declare function __resetUiPrimitivesForTest(): void;
251
+ /** Hook returning the live primitives. Throws if the host has
252
+ * not installed any — in production this is impossible because
253
+ * the web bundle installs them at bootstrap; in tests, callers
254
+ * install a stub via `__installUiPrimitives`. */
255
+ export declare function useUiPrimitives(): UiPrimitives;
171
256
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -93,4 +93,28 @@ export function useOpenFile() {
93
93
  api.open(path);
94
94
  };
95
95
  }
96
+ function uiPrimitivesSlot() {
97
+ return globalThis;
98
+ }
99
+ /** Host-only: install the canonical UiPrimitives. Called by the
100
+ * web bundle at boot. Last writer wins. */
101
+ export function __installUiPrimitives(api) {
102
+ uiPrimitivesSlot().__tianshuPluginSdkUiPrimitives__ = api;
103
+ }
104
+ /** Test helper. */
105
+ export function __resetUiPrimitivesForTest() {
106
+ delete uiPrimitivesSlot().__tianshuPluginSdkUiPrimitives__;
107
+ }
108
+ /** Hook returning the live primitives. Throws if the host has
109
+ * not installed any — in production this is impossible because
110
+ * the web bundle installs them at bootstrap; in tests, callers
111
+ * install a stub via `__installUiPrimitives`. */
112
+ export function useUiPrimitives() {
113
+ const api = uiPrimitivesSlot().__tianshuPluginSdkUiPrimitives__;
114
+ if (!api) {
115
+ throw new Error("useUiPrimitives() called without a host: plugin SDK has no live UiPrimitives. " +
116
+ "If you are seeing this in a test, install a stub with __installUiPrimitives({ Modal, DocumentViewer, MarkdownBlock }).");
117
+ }
118
+ return api;
119
+ }
96
120
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,mCAAmC;AACnC,EAAE;AACF,sEAAsE;AACtE,wEAAwE;AACxE,yEAAyE;AA4KzE,SAAS,UAAU;IACjB,kEAAkE;IAClE,OAAO,UAA2C,CAAC;AACrD,CAAC;AAED;;qBAEqB;AACrB,MAAM,UAAU,oBAAoB,CAAC,EAAqB;IACxD,UAAU,EAAE,CAAC,4BAA4B,GAAG,EAAE,CAAC;AACjD,CAAC;AAED;;iBAEiB;AACjB,MAAM,UAAU,yBAAyB;IACvC,OAAO,UAAU,EAAE,CAAC,4BAA4B,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC,4BAA4B,CAAC;IACrD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CACb,2EAA2E;YACzE,4EAA4E,CAC/E,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,CAAC;AACd,CAAC;AA2BD,SAAS,YAAY;IACnB,OAAO,UAA2C,CAAC;AACrD,CAAC;AAED;;;YAGY;AACZ,MAAM,UAAU,oBAAoB,CAAC,GAAgB;IACnD,YAAY,EAAE,CAAC,4BAA4B,GAAG,GAAG,CAAC;AACpD,CAAC;AAED,mBAAmB;AACnB,MAAM,UAAU,yBAAyB;IACvC,OAAO,YAAY,EAAE,CAAC,4BAA4B,CAAC;AACrD,CAAC;AAED;;;;;gBAKgB;AAChB,gEAAgE;AAChE,gEAAgE;AAChE,+DAA+D;AAC/D,kEAAkE;AAClE,EAAE;AACF,0DAA0D;AAC1D,gEAAgE;AAChE,gEAAgE;AAChE,4DAA4D;AAC5D,yDAAyD;AAEzD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAe/B,SAAS,oBAAoB;IAC3B,OAAO,UAAmD,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,CAA6C;IAE7C,oBAAoB,EAAE,CAAC,oCAAoC,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,8BAA8B;IAC5C,OAAO,oBAAoB,EAAE,CAAC,oCAAoC,CAAC;AACrE,CAAC;AAED;;iEAEiE;AACjE,MAAM,CAAC,MAAM,gBAAgB,GAC3B,CAAC,KAAK,EAAE,EAAE;IACR,MAAM,CAAC,GAAG,oBAAoB,EAAE,CAAC,oCAAoC,CAAC;IACtE,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC,CAAC;AAEJ,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,IAAY,EAAQ,EAAE;QAC5B,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC,4BAA4B,CAAC;QACxD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,2DAA2D;YAC3D,4DAA4D;YAC5D,4DAA4D;YAC5D,6CAA6C;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;YACtD,MAAM,GAAG,GAAG,yBAAyB,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YACnE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -319,3 +319,138 @@ export function useOpenFile(): OpenFileApi["open"] {
319
319
  api.open(path);
320
320
  };
321
321
  }
322
+
323
+ // ─── UiPrimitives — host-provided React components plugins reuse
324
+ //
325
+ // Every plugin that needs a modal / a document viewer / a markdown
326
+ // rendering surface used to roll its own copy. The result was
327
+ // five subtly-different `fixed inset-0 z-50 bg-black/...` modals,
328
+ // two different markdown renderers, and zero consistency between
329
+ // what the user sees in chat vs. the files preview vs. the
330
+ // workboard task history.
331
+ //
332
+ // This module exposes a single hook — `useUiPrimitives()` — that
333
+ // returns the host's canonical React components. The host
334
+ // installs them once at bootstrap via __installUiPrimitives. The
335
+ // hook is safe to call from any plugin's React tree and stable
336
+ // across re-renders.
337
+ //
338
+ // Why a hook rather than a direct import:
339
+ // plugins are loaded as separate ESM modules at runtime. They
340
+ // share the *types* in @tianshu-ai/plugin-sdk but not the
341
+ // compiled React component bundle — the host's bundle owns
342
+ // that. Same install-once + globalSlot pattern as useComposer
343
+ // and PluginConfigForm.
344
+
345
+ export interface ModalProps {
346
+ /** Whether the modal is rendered. Caller controls visibility;
347
+ * the modal does not animate or remember anything when this
348
+ * flips. */
349
+ isOpen: boolean;
350
+ /** Fired when the user dismisses the modal (ESC, backdrop
351
+ * click, or the X button). The host does NOT auto-close on
352
+ * this — the caller must flip `isOpen` to false themselves. */
353
+ onClose: () => void;
354
+ /** Optional title rendered in the header. When omitted the
355
+ * modal still renders a close button in the top-right. */
356
+ title?: string;
357
+ /** Size preset. Defaults to "md".
358
+ * sm : narrow, content-driven (e.g. confirmations)
359
+ * md : comfortable reading width (default)
360
+ * lg : wide content (file previews, code)
361
+ * xl : near full-screen (transcripts, long history) */
362
+ size?: "sm" | "md" | "lg" | "xl";
363
+ /** Modal body. Caller fully controls layout inside. */
364
+ children: React.ReactNode;
365
+ /** Optional className merged onto the inner content panel
366
+ * (NOT the backdrop). Lets callers tune background, padding,
367
+ * or override the default min-height. */
368
+ className?: string;
369
+ /** Hide the default header (title + X). Use when the caller
370
+ * renders its own header / chrome inside `children` and doesn't
371
+ * want a doubled-up close affordance. The Modal still closes
372
+ * on ESC and backdrop click. */
373
+ hideHeader?: boolean;
374
+ }
375
+
376
+ export interface DocumentViewerProps {
377
+ /** The file content. String for text/markdown/code; null while
378
+ * loading or for binary files the host already determined are
379
+ * unviewable. */
380
+ content: string | null;
381
+ /** Optional MIME type hint. When absent the viewer falls back
382
+ * to extension sniffing via `filename`. */
383
+ mimeType?: string;
384
+ /** Optional filename hint, used for extension sniffing when
385
+ * `mimeType` is absent and for the markdown vs. plain-text
386
+ * dispatch (only `.md` / `.markdown` get rendered as
387
+ * Markdown; everything else falls through to plain text). */
388
+ filename?: string;
389
+ /** Set to true when the host already knows the content is
390
+ * binary and unrenderable (e.g. images served through a
391
+ * different surface). The viewer shows a placeholder. */
392
+ binary?: boolean;
393
+ /** Set to true while the host is fetching content. Viewer
394
+ * shows a spinner. */
395
+ loading?: boolean;
396
+ /** Error message from the loader, if any. Viewer renders it
397
+ * in place of the content. */
398
+ error?: string | null;
399
+ /** Optional total bytes; surfaced in the binary placeholder
400
+ * and the "too large" error path. */
401
+ sizeBytes?: number;
402
+ /** Optional className merged onto the viewer root. */
403
+ className?: string;
404
+ }
405
+
406
+ export interface MarkdownBlockProps {
407
+ /** Markdown source. */
408
+ children: string;
409
+ /** Optional className merged onto the prose container. */
410
+ className?: string;
411
+ /** Skip the default prose typography classes. Useful when the
412
+ * caller wraps MarkdownBlock in its own prose container
413
+ * (chat-bubble style) and a double-wrap would compound the
414
+ * styles. Default false — standalone use gets prose for free. */
415
+ noProse?: boolean;
416
+ }
417
+
418
+ export interface UiPrimitives {
419
+ Modal: React.ComponentType<ModalProps>;
420
+ DocumentViewer: React.ComponentType<DocumentViewerProps>;
421
+ MarkdownBlock: React.ComponentType<MarkdownBlockProps>;
422
+ }
423
+
424
+ interface UiPrimitivesGlobalSlot {
425
+ __tianshuPluginSdkUiPrimitives__?: UiPrimitives;
426
+ }
427
+
428
+ function uiPrimitivesSlot(): UiPrimitivesGlobalSlot {
429
+ return globalThis as unknown as UiPrimitivesGlobalSlot;
430
+ }
431
+
432
+ /** Host-only: install the canonical UiPrimitives. Called by the
433
+ * web bundle at boot. Last writer wins. */
434
+ export function __installUiPrimitives(api: UiPrimitives): void {
435
+ uiPrimitivesSlot().__tianshuPluginSdkUiPrimitives__ = api;
436
+ }
437
+
438
+ /** Test helper. */
439
+ export function __resetUiPrimitivesForTest(): void {
440
+ delete uiPrimitivesSlot().__tianshuPluginSdkUiPrimitives__;
441
+ }
442
+
443
+ /** Hook returning the live primitives. Throws if the host has
444
+ * not installed any — in production this is impossible because
445
+ * the web bundle installs them at bootstrap; in tests, callers
446
+ * install a stub via `__installUiPrimitives`. */
447
+ export function useUiPrimitives(): UiPrimitives {
448
+ const api = uiPrimitivesSlot().__tianshuPluginSdkUiPrimitives__;
449
+ if (!api) {
450
+ throw new Error(
451
+ "useUiPrimitives() called without a host: plugin SDK has no live UiPrimitives. " +
452
+ "If you are seeing this in a test, install a stub with __installUiPrimitives({ Modal, DocumentViewer, MarkdownBlock }).",
453
+ );
454
+ }
455
+ return api;
456
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tianshu-ai/tianshu",
3
- "version": "0.3.21",
3
+ "version": "0.3.23",
4
4
  "description": "An open AI agent platform with a sidecar browser. Built in public.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/tianshu-ai/tianshu",
@@ -168,4 +168,89 @@ export declare function __resetPluginConfigFormForTest(): void;
168
168
  * (so the calling component can drop it in unconditionally). */
169
169
  export declare const PluginConfigForm: React.ComponentType<PluginConfigFormProps>;
170
170
  export declare function useOpenFile(): OpenFileApi["open"];
171
+ export interface ModalProps {
172
+ /** Whether the modal is rendered. Caller controls visibility;
173
+ * the modal does not animate or remember anything when this
174
+ * flips. */
175
+ isOpen: boolean;
176
+ /** Fired when the user dismisses the modal (ESC, backdrop
177
+ * click, or the X button). The host does NOT auto-close on
178
+ * this — the caller must flip `isOpen` to false themselves. */
179
+ onClose: () => void;
180
+ /** Optional title rendered in the header. When omitted the
181
+ * modal still renders a close button in the top-right. */
182
+ title?: string;
183
+ /** Size preset. Defaults to "md".
184
+ * sm : narrow, content-driven (e.g. confirmations)
185
+ * md : comfortable reading width (default)
186
+ * lg : wide content (file previews, code)
187
+ * xl : near full-screen (transcripts, long history) */
188
+ size?: "sm" | "md" | "lg" | "xl";
189
+ /** Modal body. Caller fully controls layout inside. */
190
+ children: React.ReactNode;
191
+ /** Optional className merged onto the inner content panel
192
+ * (NOT the backdrop). Lets callers tune background, padding,
193
+ * or override the default min-height. */
194
+ className?: string;
195
+ /** Hide the default header (title + X). Use when the caller
196
+ * renders its own header / chrome inside `children` and doesn't
197
+ * want a doubled-up close affordance. The Modal still closes
198
+ * on ESC and backdrop click. */
199
+ hideHeader?: boolean;
200
+ }
201
+ export interface DocumentViewerProps {
202
+ /** The file content. String for text/markdown/code; null while
203
+ * loading or for binary files the host already determined are
204
+ * unviewable. */
205
+ content: string | null;
206
+ /** Optional MIME type hint. When absent the viewer falls back
207
+ * to extension sniffing via `filename`. */
208
+ mimeType?: string;
209
+ /** Optional filename hint, used for extension sniffing when
210
+ * `mimeType` is absent and for the markdown vs. plain-text
211
+ * dispatch (only `.md` / `.markdown` get rendered as
212
+ * Markdown; everything else falls through to plain text). */
213
+ filename?: string;
214
+ /** Set to true when the host already knows the content is
215
+ * binary and unrenderable (e.g. images served through a
216
+ * different surface). The viewer shows a placeholder. */
217
+ binary?: boolean;
218
+ /** Set to true while the host is fetching content. Viewer
219
+ * shows a spinner. */
220
+ loading?: boolean;
221
+ /** Error message from the loader, if any. Viewer renders it
222
+ * in place of the content. */
223
+ error?: string | null;
224
+ /** Optional total bytes; surfaced in the binary placeholder
225
+ * and the "too large" error path. */
226
+ sizeBytes?: number;
227
+ /** Optional className merged onto the viewer root. */
228
+ className?: string;
229
+ }
230
+ export interface MarkdownBlockProps {
231
+ /** Markdown source. */
232
+ children: string;
233
+ /** Optional className merged onto the prose container. */
234
+ className?: string;
235
+ /** Skip the default prose typography classes. Useful when the
236
+ * caller wraps MarkdownBlock in its own prose container
237
+ * (chat-bubble style) and a double-wrap would compound the
238
+ * styles. Default false — standalone use gets prose for free. */
239
+ noProse?: boolean;
240
+ }
241
+ export interface UiPrimitives {
242
+ Modal: React.ComponentType<ModalProps>;
243
+ DocumentViewer: React.ComponentType<DocumentViewerProps>;
244
+ MarkdownBlock: React.ComponentType<MarkdownBlockProps>;
245
+ }
246
+ /** Host-only: install the canonical UiPrimitives. Called by the
247
+ * web bundle at boot. Last writer wins. */
248
+ export declare function __installUiPrimitives(api: UiPrimitives): void;
249
+ /** Test helper. */
250
+ export declare function __resetUiPrimitivesForTest(): void;
251
+ /** Hook returning the live primitives. Throws if the host has
252
+ * not installed any — in production this is impossible because
253
+ * the web bundle installs them at bootstrap; in tests, callers
254
+ * install a stub via `__installUiPrimitives`. */
255
+ export declare function useUiPrimitives(): UiPrimitives;
171
256
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -93,4 +93,28 @@ export function useOpenFile() {
93
93
  api.open(path);
94
94
  };
95
95
  }
96
+ function uiPrimitivesSlot() {
97
+ return globalThis;
98
+ }
99
+ /** Host-only: install the canonical UiPrimitives. Called by the
100
+ * web bundle at boot. Last writer wins. */
101
+ export function __installUiPrimitives(api) {
102
+ uiPrimitivesSlot().__tianshuPluginSdkUiPrimitives__ = api;
103
+ }
104
+ /** Test helper. */
105
+ export function __resetUiPrimitivesForTest() {
106
+ delete uiPrimitivesSlot().__tianshuPluginSdkUiPrimitives__;
107
+ }
108
+ /** Hook returning the live primitives. Throws if the host has
109
+ * not installed any — in production this is impossible because
110
+ * the web bundle installs them at bootstrap; in tests, callers
111
+ * install a stub via `__installUiPrimitives`. */
112
+ export function useUiPrimitives() {
113
+ const api = uiPrimitivesSlot().__tianshuPluginSdkUiPrimitives__;
114
+ if (!api) {
115
+ throw new Error("useUiPrimitives() called without a host: plugin SDK has no live UiPrimitives. " +
116
+ "If you are seeing this in a test, install a stub with __installUiPrimitives({ Modal, DocumentViewer, MarkdownBlock }).");
117
+ }
118
+ return api;
119
+ }
96
120
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,mCAAmC;AACnC,EAAE;AACF,sEAAsE;AACtE,wEAAwE;AACxE,yEAAyE;AA4KzE,SAAS,UAAU;IACjB,kEAAkE;IAClE,OAAO,UAA2C,CAAC;AACrD,CAAC;AAED;;qBAEqB;AACrB,MAAM,UAAU,oBAAoB,CAAC,EAAqB;IACxD,UAAU,EAAE,CAAC,4BAA4B,GAAG,EAAE,CAAC;AACjD,CAAC;AAED;;iBAEiB;AACjB,MAAM,UAAU,yBAAyB;IACvC,OAAO,UAAU,EAAE,CAAC,4BAA4B,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC,4BAA4B,CAAC;IACrD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CACb,2EAA2E;YACzE,4EAA4E,CAC/E,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,CAAC;AACd,CAAC;AA2BD,SAAS,YAAY;IACnB,OAAO,UAA2C,CAAC;AACrD,CAAC;AAED;;;YAGY;AACZ,MAAM,UAAU,oBAAoB,CAAC,GAAgB;IACnD,YAAY,EAAE,CAAC,4BAA4B,GAAG,GAAG,CAAC;AACpD,CAAC;AAED,mBAAmB;AACnB,MAAM,UAAU,yBAAyB;IACvC,OAAO,YAAY,EAAE,CAAC,4BAA4B,CAAC;AACrD,CAAC;AAED;;;;;gBAKgB;AAChB,gEAAgE;AAChE,gEAAgE;AAChE,+DAA+D;AAC/D,kEAAkE;AAClE,EAAE;AACF,0DAA0D;AAC1D,gEAAgE;AAChE,gEAAgE;AAChE,4DAA4D;AAC5D,yDAAyD;AAEzD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAe/B,SAAS,oBAAoB;IAC3B,OAAO,UAAmD,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,CAA6C;IAE7C,oBAAoB,EAAE,CAAC,oCAAoC,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,8BAA8B;IAC5C,OAAO,oBAAoB,EAAE,CAAC,oCAAoC,CAAC;AACrE,CAAC;AAED;;iEAEiE;AACjE,MAAM,CAAC,MAAM,gBAAgB,GAC3B,CAAC,KAAK,EAAE,EAAE;IACR,MAAM,CAAC,GAAG,oBAAoB,EAAE,CAAC,oCAAoC,CAAC;IACtE,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC,CAAC;AAEJ,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,IAAY,EAAQ,EAAE;QAC5B,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC,4BAA4B,CAAC;QACxD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,2DAA2D;YAC3D,4DAA4D;YAC5D,4DAA4D;YAC5D,6CAA6C;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;YACtD,MAAM,GAAG,GAAG,yBAAyB,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YACnE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { AgentTool } from "@tianshu-ai/plugin-sdk";
2
+ import type { PluginRegistry } from "../../core/plugins/registry.js";
3
+ export interface ToolCatalogRefreshDeps {
4
+ /** Resolves a TenantContext from a tenantId. The registry can't
5
+ * do this on its own (it doesn't hold the tenant pool), so the
6
+ * host wires a `globalOps.open` shim through. */
7
+ openTenant: (tenantId: string) => {
8
+ db: import("better-sqlite3").Database;
9
+ tenantId: string;
10
+ };
11
+ /** Lazy registry accessor so the tool can be constructed BEFORE
12
+ * the registry exists (circular-init: the registry's hostTools
13
+ * list needs the tool, the tool needs the registry). Resolved
14
+ * at execute() time, by which point the registry is wired. */
15
+ registry: () => PluginRegistry;
16
+ }
17
+ export declare const TOOL_CATALOG_REFRESH_NAME = "tool_catalog_refresh";
18
+ export declare function buildToolCatalogRefreshTool(deps: ToolCatalogRefreshDeps): AgentTool;
19
+ //# sourceMappingURL=tool-catalog-refresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-catalog-refresh.d.ts","sourceRoot":"","sources":["../../../src/chat/host-tools/tool-catalog-refresh.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EACV,SAAS,EAEV,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AASrE,MAAM,WAAW,sBAAsB;IACrC;;sDAEkD;IAClD,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK;QAChC,EAAE,EAAE,OAAO,gBAAgB,EAAE,QAAQ,CAAC;QACtC,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;;mEAG+D;IAC/D,QAAQ,EAAE,MAAM,cAAc,CAAC;CAChC;AAQD,eAAO,MAAM,yBAAyB,yBAAyB,CAAC;AAEhE,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,sBAAsB,GAC3B,SAAS,CAmMX"}