@jini-ai/chat 0.3.4 → 0.3.7

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 (92) hide show
  1. package/dist/react/components/AttachmentPreviewModal.d.ts +7 -0
  2. package/dist/react/components/AttachmentPreviewModal.d.ts.map +1 -0
  3. package/dist/react/components/AttachmentPreviewModal.hooks.d.ts +70 -0
  4. package/dist/react/components/AttachmentPreviewModal.hooks.d.ts.map +1 -0
  5. package/dist/react/components/AttachmentPreviewModal.hooks.js +200 -0
  6. package/dist/react/components/AttachmentPreviewModal.hooks.js.map +1 -0
  7. package/dist/react/components/AttachmentPreviewModal.js +18 -0
  8. package/dist/react/components/AttachmentPreviewModal.js.map +1 -0
  9. package/dist/react/components/Composer.d.ts.map +1 -1
  10. package/dist/react/components/Composer.js +1 -1
  11. package/dist/react/components/Composer.js.map +1 -1
  12. package/dist/react/components/MessageRow.d.ts.map +1 -1
  13. package/dist/react/components/MessageRow.js +7 -2
  14. package/dist/react/components/MessageRow.js.map +1 -1
  15. package/dist/react/components/composer-discovery.js +1 -1
  16. package/dist/react/features/chat-pane/components/ChatPane.d.ts +1 -1
  17. package/dist/react/features/chat-pane/components/ChatPane.d.ts.map +1 -1
  18. package/dist/react/features/chat-pane/components/ChatPane.js +4 -2
  19. package/dist/react/features/chat-pane/components/ChatPane.js.map +1 -1
  20. package/dist/react/features/chat-pane/hooks/useChatPane.hooks.d.ts.map +1 -1
  21. package/dist/react/features/chat-pane/hooks/useChatPane.hooks.js +20 -3
  22. package/dist/react/features/chat-pane/hooks/useChatPane.hooks.js.map +1 -1
  23. package/dist/react/features/chat-pane/hooks/useChatPaneComposerPlaceholder.hooks.d.ts +10 -0
  24. package/dist/react/features/chat-pane/hooks/useChatPaneComposerPlaceholder.hooks.d.ts.map +1 -0
  25. package/dist/react/features/chat-pane/hooks/useChatPaneComposerPlaceholder.hooks.js +66 -0
  26. package/dist/react/features/chat-pane/hooks/useChatPaneComposerPlaceholder.hooks.js.map +1 -0
  27. package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.d.ts +12 -0
  28. package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.d.ts.map +1 -0
  29. package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.js +102 -0
  30. package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.js.map +1 -0
  31. package/dist/react/features/chat-pane/react/components/ChatPane.d.ts +10 -0
  32. package/dist/react/features/chat-pane/react/components/ChatPane.d.ts.map +1 -0
  33. package/dist/react/features/chat-pane/react/components/ChatPane.js +137 -0
  34. package/dist/react/features/chat-pane/react/components/ChatPane.js.map +1 -0
  35. package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.d.ts +133 -0
  36. package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.d.ts.map +1 -0
  37. package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.js +258 -0
  38. package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.js.map +1 -0
  39. package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.d.ts +66 -0
  40. package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.d.ts.map +1 -0
  41. package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.js +223 -0
  42. package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.js.map +1 -0
  43. package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.d.ts +38 -0
  44. package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.d.ts.map +1 -0
  45. package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.js +252 -0
  46. package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.js.map +1 -0
  47. package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.d.ts +26 -0
  48. package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.d.ts.map +1 -0
  49. package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.js +60 -0
  50. package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.js.map +1 -0
  51. package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.d.ts +25 -0
  52. package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.d.ts.map +1 -0
  53. package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.js +83 -0
  54. package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.js.map +1 -0
  55. package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.d.ts +38 -0
  56. package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.d.ts.map +1 -0
  57. package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.js +184 -0
  58. package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.js.map +1 -0
  59. package/dist/react/features/chat-pane/react/styles.d.ts +2 -0
  60. package/dist/react/features/chat-pane/react/styles.d.ts.map +1 -0
  61. package/dist/react/features/chat-pane/react/styles.js +863 -0
  62. package/dist/react/features/chat-pane/react/styles.js.map +1 -0
  63. package/dist/react/features/chat-pane/styles.d.ts +1 -1
  64. package/dist/react/features/chat-pane/styles.d.ts.map +1 -1
  65. package/dist/react/features/chat-pane/styles.js +139 -3
  66. package/dist/react/features/chat-pane/styles.js.map +1 -1
  67. package/dist/react/features/chat-pane/types.d.ts +8 -0
  68. package/dist/react/features/chat-pane/types.d.ts.map +1 -1
  69. package/dist/react/features/model-picker/react/components/CredentialStatusBadge.d.ts +7 -0
  70. package/dist/react/features/model-picker/react/components/CredentialStatusBadge.d.ts.map +1 -0
  71. package/dist/react/features/model-picker/react/components/CredentialStatusBadge.js +20 -0
  72. package/dist/react/features/model-picker/react/components/CredentialStatusBadge.js.map +1 -0
  73. package/dist/react/features/model-picker/react/components/ModelPicker.d.ts +9 -0
  74. package/dist/react/features/model-picker/react/components/ModelPicker.d.ts.map +1 -0
  75. package/dist/react/features/model-picker/react/components/ModelPicker.js +34 -0
  76. package/dist/react/features/model-picker/react/components/ModelPicker.js.map +1 -0
  77. package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.d.ts +27 -0
  78. package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.d.ts.map +1 -0
  79. package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.js +62 -0
  80. package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.js.map +1 -0
  81. package/dist/react/hooks/attachment-preview-cache.d.ts +47 -0
  82. package/dist/react/hooks/attachment-preview-cache.d.ts.map +1 -0
  83. package/dist/react/hooks/attachment-preview-cache.js +59 -0
  84. package/dist/react/hooks/attachment-preview-cache.js.map +1 -0
  85. package/dist/react/hooks/useComposer.d.ts.map +1 -1
  86. package/dist/react/hooks/useComposer.js +12 -0
  87. package/dist/react/hooks/useComposer.js.map +1 -1
  88. package/dist/react/poc-mcp-ui-official/create-poc-resource.d.ts +1 -1
  89. package/dist/react/poc-mcp-ui-official/create-poc-resource.js +1 -1
  90. package/dist/react/slots.d.ts +8 -0
  91. package/dist/react/slots.d.ts.map +1 -1
  92. package/package.json +5 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelPicker.js","sourceRoot":"","sources":["../../../../../../src/react/features/model-picker/react/components/ModelPicker.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { RefObject } from 'react';
2
+ import type { CredentialStatus, ModelOption, ModelPickerGroup, ModelPickerSelection, ModelProvider } from '../../types.js';
3
+ export interface UseModelPickerOptions {
4
+ models: readonly ModelOption[];
5
+ providers: readonly ModelProvider[];
6
+ statusByProviderId: Readonly<Record<string, CredentialStatus>>;
7
+ value: string;
8
+ onChange: (modelId: string) => void;
9
+ /** When true, auto-selects the first available model whenever `value` doesn't match any model. Defaults to false. */
10
+ autoSelectFirst?: boolean;
11
+ minSearchableOptions?: number;
12
+ }
13
+ export interface ModelPickerController {
14
+ open: boolean;
15
+ query: string;
16
+ groups: ModelPickerGroup[];
17
+ filteredGroups: ModelPickerGroup[];
18
+ selection: ModelPickerSelection | null;
19
+ shouldShowSearch: boolean;
20
+ containerRef: RefObject<HTMLDivElement | null>;
21
+ setQuery: (query: string) => void;
22
+ toggle: () => void;
23
+ close: () => void;
24
+ select: (modelId: string) => void;
25
+ }
26
+ export declare function useModelPicker({ models, providers, statusByProviderId, value, onChange, autoSelectFirst, minSearchableOptions, }: UseModelPickerOptions): ModelPickerController;
27
+ //# sourceMappingURL=useModelPicker.hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useModelPicker.hooks.d.ts","sourceRoot":"","sources":["../../../../../../src/react/features/model-picker/react/hooks/useModelPicker.hooks.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE3H,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/B,SAAS,EAAE,SAAS,aAAa,EAAE,CAAC;IACpC,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,qHAAqH;IACrH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,cAAc,EAAE,gBAAgB,EAAE,CAAC;IACnC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACvC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC/C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,SAAS,EACT,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,eAAuB,EACvB,oBAAqD,GACtD,EAAE,qBAAqB,GAAG,qBAAqB,CAuD/C"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @module useModelPicker
3
+ *
4
+ * Headless controller for the model-picker feature: open/query state,
5
+ * derived provider groups + current selection, and the outside-click/
6
+ * Escape dismissal that `InlineModelSwitcher.tsx`'s popover and
7
+ * `modelOptions.tsx`'s `SearchableModelSelect` both hand-roll. All grouping/
8
+ * filtering/selection logic is delegated to the pure `rules.ts` — this hook
9
+ * only owns React state and the DOM-subscription effect.
10
+ */
11
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
12
+ import { DEFAULT_MIN_SEARCHABLE_OPTIONS } from '../../constants.js';
13
+ import { filterModelGroups, findSelectedModel, firstAvailableModelId, groupModelsByProvider } from '../../rules.js';
14
+ export function useModelPicker({ models, providers, statusByProviderId, value, onChange, autoSelectFirst = false, minSearchableOptions = DEFAULT_MIN_SEARCHABLE_OPTIONS, }) {
15
+ const [open, setOpen] = useState(false);
16
+ const [query, setQuery] = useState('');
17
+ const containerRef = useRef(null);
18
+ const groups = useMemo(() => groupModelsByProvider(models, providers, statusByProviderId), [models, providers, statusByProviderId]);
19
+ const filteredGroups = useMemo(() => filterModelGroups(groups, query), [groups, query]);
20
+ const selection = useMemo(() => findSelectedModel(groups, value), [groups, value]);
21
+ const totalOptionCount = useMemo(() => groups.reduce((count, group) => count + group.models.length, 0), [groups]);
22
+ const shouldShowSearch = totalOptionCount >= minSearchableOptions;
23
+ useEffect(() => {
24
+ if (!autoSelectFirst || selection)
25
+ return;
26
+ const fallbackId = firstAvailableModelId(groups);
27
+ if (fallbackId)
28
+ onChange(fallbackId);
29
+ }, [autoSelectFirst, groups, onChange, selection]);
30
+ const close = useCallback(() => {
31
+ setOpen(false);
32
+ setQuery('');
33
+ }, []);
34
+ const toggle = useCallback(() => {
35
+ setOpen((prev) => !prev);
36
+ }, []);
37
+ const select = useCallback((modelId) => {
38
+ onChange(modelId);
39
+ close();
40
+ }, [close, onChange]);
41
+ useEffect(() => {
42
+ if (!open)
43
+ return;
44
+ const onPointerDown = (event) => {
45
+ if (containerRef.current?.contains(event.target))
46
+ return;
47
+ close();
48
+ };
49
+ const onKeyDown = (event) => {
50
+ if (event.key === 'Escape')
51
+ close();
52
+ };
53
+ document.addEventListener('mousedown', onPointerDown);
54
+ document.addEventListener('keydown', onKeyDown);
55
+ return () => {
56
+ document.removeEventListener('mousedown', onPointerDown);
57
+ document.removeEventListener('keydown', onKeyDown);
58
+ };
59
+ }, [open, close]);
60
+ return { open, query, groups, filteredGroups, selection, shouldShowSearch, containerRef, setQuery, toggle, close, select };
61
+ }
62
+ //# sourceMappingURL=useModelPicker.hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useModelPicker.hooks.js","sourceRoot":"","sources":["../../../../../../src/react/features/model-picker/react/hooks/useModelPicker.hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @module attachment-preview-cache
3
+ *
4
+ * Module-level cache from a `ChatAttachment.path` (the opaque `attachment:<uuid>` capability id
5
+ * `useComposer.ts`'s `addAttachments` receives back from `project.uploadFiles`) to the original
6
+ * browser `File` the operator picked. Exists so `AttachmentPreviewModal` can show a sent attachment
7
+ * again — image or text — without a round trip to the server.
8
+ *
9
+ * **Why this has to exist at all.** `@jini-ai/http-kit`'s attachment store
10
+ * (`packages/http-kit/src/attachments.ts`) has no read route: `register()`'s only output is an
11
+ * opaque capability id meant for `claim()`/`resolveForRun` (server-side, run-scoped reads), and
12
+ * `claim()` is one-shot. There is no `GET /api/attachments/:id` anywhere in this codebase, and
13
+ * `cleanupRun` deletes a run's claimed files once it ends — so once a browser has sent an
14
+ * attachment, the daemon can no longer hand its bytes back to that same browser even if asked.
15
+ * The browser already had the bytes for free, at the moment the operator picked the file, so this
16
+ * cache captures that one copy instead of trying to add a new authenticated download route to a
17
+ * shared HTTP package as a side effect of a chat-transcript UI fix.
18
+ *
19
+ * **Scope of what this fixes.** Only the CURRENT page session: a reload starts this Map empty
20
+ * again, same as `composer-draft-cache.ts`'s own module doc describes for drafts. That matches the
21
+ * reported gap ("this is in the chat but we can never see it again") - within one open
22
+ * conversation, not across a reload - and does not claim to solve the (separate, larger) problem of
23
+ * persisting attachment bytes for a conversation loaded from storage.
24
+ *
25
+ * Same module-level-singleton shape and tradeoffs as `composer-draft-cache.ts`: partitioned by
26
+ * `path`, which `http-kit` mints as a fresh `randomUUID()` per upload, so two unrelated attachments
27
+ * can never collide on the key. Bounded by `MAX_CACHED_ATTACHMENT_PREVIEWS`, oldest-inserted evicted
28
+ * first, so a long session attaching many files does not grow this map without limit.
29
+ */
30
+ /** Cap on distinct attachments tracked at once; see the module doc. */
31
+ export declare const MAX_CACHED_ATTACHMENT_PREVIEWS = 50;
32
+ /**
33
+ * Records `file` as the original bytes behind `path`, evicting the oldest tracked attachment first
34
+ * if this would introduce a new entry past {@link MAX_CACHED_ATTACHMENT_PREVIEWS}.
35
+ * @complexity Time/space: O(1) amortized.
36
+ */
37
+ export declare function cacheAttachmentPreviewSource(path: string, file: File): void;
38
+ /**
39
+ * Reads back the `File` cached for `path`, or `undefined` when this browser never staged it (a
40
+ * different session, a reload, or eviction past the cap) - the only signal a preview needs to fall
41
+ * back to an honest metadata view instead of pretending to render content it does not have.
42
+ * @complexity Time/space: O(1).
43
+ */
44
+ export declare function getAttachmentPreviewSource(path: string): File | undefined;
45
+ /** Test-only: empties the module-level cache so test cases cannot leak attachments into each other. */
46
+ export declare function __resetAttachmentPreviewCacheForTests(): void;
47
+ //# sourceMappingURL=attachment-preview-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-preview-cache.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/attachment-preview-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,uEAAuE;AACvE,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAIjD;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAM3E;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAEzE;AAED,uGAAuG;AACvG,wBAAgB,qCAAqC,IAAI,IAAI,CAE5D"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @module attachment-preview-cache
3
+ *
4
+ * Module-level cache from a `ChatAttachment.path` (the opaque `attachment:<uuid>` capability id
5
+ * `useComposer.ts`'s `addAttachments` receives back from `project.uploadFiles`) to the original
6
+ * browser `File` the operator picked. Exists so `AttachmentPreviewModal` can show a sent attachment
7
+ * again — image or text — without a round trip to the server.
8
+ *
9
+ * **Why this has to exist at all.** `@jini-ai/http-kit`'s attachment store
10
+ * (`packages/http-kit/src/attachments.ts`) has no read route: `register()`'s only output is an
11
+ * opaque capability id meant for `claim()`/`resolveForRun` (server-side, run-scoped reads), and
12
+ * `claim()` is one-shot. There is no `GET /api/attachments/:id` anywhere in this codebase, and
13
+ * `cleanupRun` deletes a run's claimed files once it ends — so once a browser has sent an
14
+ * attachment, the daemon can no longer hand its bytes back to that same browser even if asked.
15
+ * The browser already had the bytes for free, at the moment the operator picked the file, so this
16
+ * cache captures that one copy instead of trying to add a new authenticated download route to a
17
+ * shared HTTP package as a side effect of a chat-transcript UI fix.
18
+ *
19
+ * **Scope of what this fixes.** Only the CURRENT page session: a reload starts this Map empty
20
+ * again, same as `composer-draft-cache.ts`'s own module doc describes for drafts. That matches the
21
+ * reported gap ("this is in the chat but we can never see it again") - within one open
22
+ * conversation, not across a reload - and does not claim to solve the (separate, larger) problem of
23
+ * persisting attachment bytes for a conversation loaded from storage.
24
+ *
25
+ * Same module-level-singleton shape and tradeoffs as `composer-draft-cache.ts`: partitioned by
26
+ * `path`, which `http-kit` mints as a fresh `randomUUID()` per upload, so two unrelated attachments
27
+ * can never collide on the key. Bounded by `MAX_CACHED_ATTACHMENT_PREVIEWS`, oldest-inserted evicted
28
+ * first, so a long session attaching many files does not grow this map without limit.
29
+ */
30
+ /** Cap on distinct attachments tracked at once; see the module doc. */
31
+ export const MAX_CACHED_ATTACHMENT_PREVIEWS = 50;
32
+ const sources = new Map();
33
+ /**
34
+ * Records `file` as the original bytes behind `path`, evicting the oldest tracked attachment first
35
+ * if this would introduce a new entry past {@link MAX_CACHED_ATTACHMENT_PREVIEWS}.
36
+ * @complexity Time/space: O(1) amortized.
37
+ */
38
+ export function cacheAttachmentPreviewSource(path, file) {
39
+ if (!sources.has(path) && sources.size >= MAX_CACHED_ATTACHMENT_PREVIEWS) {
40
+ const oldest = sources.keys().next().value;
41
+ if (oldest !== undefined)
42
+ sources.delete(oldest);
43
+ }
44
+ sources.set(path, file);
45
+ }
46
+ /**
47
+ * Reads back the `File` cached for `path`, or `undefined` when this browser never staged it (a
48
+ * different session, a reload, or eviction past the cap) - the only signal a preview needs to fall
49
+ * back to an honest metadata view instead of pretending to render content it does not have.
50
+ * @complexity Time/space: O(1).
51
+ */
52
+ export function getAttachmentPreviewSource(path) {
53
+ return sources.get(path);
54
+ }
55
+ /** Test-only: empties the module-level cache so test cases cannot leak attachments into each other. */
56
+ export function __resetAttachmentPreviewCacheForTests() {
57
+ sources.clear();
58
+ }
59
+ //# sourceMappingURL=attachment-preview-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-preview-cache.js","sourceRoot":"","sources":["../../../src/react/hooks/attachment-preview-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,uEAAuE;AACvE,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,CAAC;AAEjD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgB,CAAC;AAExC;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAAY,EAAE,IAAU;IACnE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,IAAI,8BAA8B,EAAE,CAAC;QACzE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAC3C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACrD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,qCAAqC;IACnD,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useComposer.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useComposer.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAErG,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,+IAA+I;IAC/I,cAAc,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,aAAa,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAC;IACpD,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,KAAK,EAAE,cAAc,GAAG,SAAS,CAAC;IAClC,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,gHAAgH;IAChH,aAAa,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,yGAAyG;IACzG,SAAS,EAAE,OAAO,CAAC;IACnB,gFAAgF;IAChF,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAID,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,iBAAiB,CAmH/E"}
1
+ {"version":3,"file":"useComposer.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useComposer.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAErG,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,+IAA+I;IAC/I,cAAc,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,aAAa,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAC;IACpD,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,KAAK,EAAE,cAAc,GAAG,SAAS,CAAC;IAClC,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,gHAAgH;IAChH,aAAa,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,yGAAyG;IACzG,SAAS,EAAE,OAAO,CAAC;IACnB,gFAAgF;IAChF,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAID,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,iBAAiB,CA6H/E"}
@@ -29,6 +29,7 @@
29
29
  */
30
30
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
31
31
  import { readCachedDraft, writeCachedDraft } from './composer-draft-cache.js';
32
+ import { cacheAttachmentPreviewSource } from './attachment-preview-cache.js';
32
33
  const EMPTY_MENTION = { open: false, query: '', results: [] };
33
34
  export function useComposer(options = {}) {
34
35
  const { project, composerSlots, persistence, conversationId } = options;
@@ -66,6 +67,17 @@ export function useComposer(options = {}) {
66
67
  }
67
68
  const uploaded = await project.uploadFiles(files);
68
69
  setAttachments((prev) => [...prev, ...uploaded]);
70
+ // `uploadFiles` resolves 1:1 with `files`, in order, on success (see
71
+ // `create-daemon-attachment-uploader.ts`'s "preserved order" doc) - any failure rejects the
72
+ // whole call instead of returning a short array, so this zip never pairs the wrong bytes with
73
+ // the wrong attachment. Caching the original `File` here, at the one moment this hook already
74
+ // holds it, is what lets `AttachmentPreviewModal` show it again later - see
75
+ // `attachment-preview-cache.ts`'s module doc for why the server cannot hand it back.
76
+ uploaded.forEach((a, i) => {
77
+ const file = files[i];
78
+ if (file)
79
+ cacheAttachmentPreviewSource(a.path, file);
80
+ });
69
81
  for (const a of uploaded)
70
82
  composerSlots?.onAttach?.(a);
71
83
  }, [composerSlots, project]);
@@ -1 +1 @@
1
- {"version":3,"file":"useComposer.js","sourceRoot":"","sources":["../../../src/react/hooks/useComposer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useComposer.js","sourceRoot":"","sources":["../../../src/react/hooks/useComposer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAmD7E,MAAM,aAAa,GAAwB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAEnF,MAAM,UAAU,WAAW,CAAC,UAA8B,EAAE;IAC1D,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IACxE,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,QAAQ,CACrC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,IAAI,WAAW,EAAE,IAAI,EAAE,IAAI,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,CAC3F,CAAC;IACF,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAmB,EAAE,CAAC,CAAC;IACrE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAA6B,OAAO,CAAC,YAAY,CAAC,CAAC;IACrF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAsB,aAAa,CAAC,CAAC;IAE3E,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,IAAY,EAAE,EAAE;QACf,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC,EACD,CAAC,WAAW,EAAE,cAAc,CAAC,CAC9B,CAAC;IAEF,6FAA6F;IAC7F,6FAA6F;IAC7F,4FAA4F;IAC5F,8FAA8F;IAC9F,qEAAqE;IACrE,MAAM,yBAAyB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;IACzD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,cAAc,KAAK,yBAAyB,CAAC,OAAO;YAAE,OAAO;QACjE,yBAAyB,CAAC,OAAO,GAAG,cAAc,CAAC;QACnD,aAAa,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,cAAc,CAAC,EAAE,CAAC,CAAC;QACnB,UAAU,CAAC,aAAa,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,UAA0B,EAAE,EAAE;QAC/D,cAAc,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAClD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,cAAc,GAAG,WAAW,CAChC,KAAK,EAAE,KAAa,EAAE,EAAE;QACtB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC/B,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACrG,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClD,cAAc,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;QACjD,qEAAqE;QACrE,4FAA4F;QAC5F,8FAA8F;QAC9F,8FAA8F;QAC9F,4EAA4E;QAC5E,qFAAqF;QACrF,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,IAAI;gBAAE,4BAA4B,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,EACD,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;IAEF,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,EAAU,EAAE,EAAE;QAClD,cAAc,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEnE,MAAM,WAAW,GAAG,WAAW,CAC7B,KAAK,EAAE,KAAa,EAAE,EAAE;QACtB,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,aAAa,EAAE,cAAc,IAAI,EAAE,CAAC;QACpD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACjC,MAAM,OAAO,GAAG,CACd,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC3B,IAAI,CAAC;gBACH,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CACH,CACF,CAAC,IAAI,EAAE,CAAC;QACT,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1F,CAAC,EACD,CAAC,aAAa,CAAC,CAChB,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;IAEtE,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,MAAqB,EAAE,EAAE;QACxB,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC;QAC3D,QAAQ,CAAC,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC,CAAC;QACjC,UAAU,CAAC,aAAa,CAAC,CAAC;IAC5B,CAAC,EACD,CAAC,KAAK,EAAE,QAAQ,CAAC,CAClB,CAAC;IAEF,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,QAAQ,CAAC,EAAE,CAAC,CAAC;QACb,gBAAgB,EAAE,CAAC;QACnB,YAAY,EAAE,CAAC;IACjB,CAAC,EAAE,CAAC,gBAAgB,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE/C,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAEpE,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,KAAK;QACL,QAAQ;QACR,WAAW;QACX,cAAc;QACd,aAAa;QACb,gBAAgB;QAChB,gBAAgB;QAChB,KAAK;QACL,QAAQ;QACR,OAAO;QACP,WAAW;QACX,YAAY;QACZ,aAAa;QACb,SAAS;QACT,KAAK;KACN,CAAC,EACF,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,CAC9K,CAAC;AACJ,CAAC"}
@@ -10,7 +10,7 @@
10
10
  * of the MCP-UI resource shape) can build a `UIResource` end to end, per the owner's decision to
11
11
  * evaluate replacing the hand-rolled client with the upstream package. See
12
12
  * `poc-mcp-ui-official/__tests__/poc-mcp-ui-official.test.tsx` for the assertions this module
13
- * exists to feed, and `ADS-memory/` (Tovu side) / this session's final report for the CJS/ESM
13
+ * exists to feed, and `ADS-memory/` (the consuming product's own copy) / this session's final report for the CJS/ESM
14
14
  * interop finding that shaped how this is imported (ESM only — `@mcp-ui/client`'s CJS build is
15
15
  * broken in 7.1.1; `require('@mcp-ui/client')` throws / returns an empty object depending on Node
16
16
  * version. `@mcp-ui/server`'s CJS build works fine in this same version, but this module still
@@ -10,7 +10,7 @@
10
10
  * of the MCP-UI resource shape) can build a `UIResource` end to end, per the owner's decision to
11
11
  * evaluate replacing the hand-rolled client with the upstream package. See
12
12
  * `poc-mcp-ui-official/__tests__/poc-mcp-ui-official.test.tsx` for the assertions this module
13
- * exists to feed, and `ADS-memory/` (Tovu side) / this session's final report for the CJS/ESM
13
+ * exists to feed, and `ADS-memory/` (the consuming product's own copy) / this session's final report for the CJS/ESM
14
14
  * interop finding that shaped how this is imported (ESM only — `@mcp-ui/client`'s CJS build is
15
15
  * broken in 7.1.1; `require('@mcp-ui/client')` throws / returns an empty object depending on Node
16
16
  * version. `@mcp-ui/server`'s CJS build works fine in this same version, but this module still
@@ -175,6 +175,14 @@ export interface ComposerSlots {
175
175
  leadingAccessories?: ReactNode;
176
176
  /** Host controls rendered before the send action, such as an agent/model picker. */
177
177
  footerAccessories?: ReactNode;
178
+ /**
179
+ * Host controls rendered at the START of the footer row, immediately after the attach/discovery
180
+ * "+" trigger — for a control that belongs with the composer's other action-row buttons (e.g. a
181
+ * push-to-talk mic button) rather than in {@link leadingAccessories}'s pinned-context zone above
182
+ * the input, or in {@link footerAccessories}'s trailing slot (reserved for an agent/model picker
183
+ * and pushed to the row's far end via `margin-left: auto`).
184
+ */
185
+ footerLeadingAccessory?: ReactNode;
178
186
  onAttach?: (a: ChatAttachment) => void;
179
187
  annotationAdapter?: AnnotationAdapter;
180
188
  }
@@ -1 +1 @@
1
- {"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../src/react/slots.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../src/react/slots.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jini-ai/chat",
3
- "version": "0.3.4",
3
+ "version": "0.3.7",
4
4
  "description": "Jini's chat/artifact frontend, consolidated into one package with two subpaths: framework-free chat vocabulary and pure parsers in `/core`, headless hooks + presentational components + slots in `/react`. Import only the layer you need.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -62,10 +62,10 @@
62
62
  "dependencies": {
63
63
  "@mcp-ui/client": "7.1.1",
64
64
  "@mcp-ui/server": "6.1.0",
65
- "@jini-ai/agentic": "0.3.0",
66
- "@jini-ai/platform": "0.3.0",
67
- "@jini-ai/protocol": "0.3.1",
68
- "@jini-ai/ui": "0.3.4"
65
+ "@jini-ai/agentic": "0.3.6",
66
+ "@jini-ai/ui": "0.3.7",
67
+ "@jini-ai/protocol": "0.3.0",
68
+ "@jini-ai/platform": "0.3.0"
69
69
  },
70
70
  "peerDependencies": {
71
71
  "react": "^18.3.0 || ^19.0.0",