@ai-matrx/chat 0.2.4 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/dist/agents/components/inputs/input-components/PicklistVariableInput.js +2 -2
- package/dist/agents/components/working-document/workingDocumentSurface.d.ts +1 -1
- package/dist/agents/redux/execution-system/thunks/run-headless-agent-json.d.ts +8 -3
- package/dist/agents/redux/execution-system/thunks/run-headless-agent-json.js +36 -3
- package/dist/agents/surface-catalog-profile.d.ts +1 -1
- package/dist/host/db-types.d.ts +154 -6
- package/dist/host/ui-slots.d.ts +2 -2
- package/dist/host/ui-slots.js +3 -3
- package/dist/host/window-openers.d.ts +3 -3
- package/dist/host/window-openers.js +4 -4
- package/dist/surfaces/utils/route-to-surface.js +1 -1
- package/dist/tool-call-visualization/effects/toolStateEffects.d.ts +1 -1
- package/dist/tool-call-visualization/registry/registry.js +3 -7
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# @ai-matrx/chat
|
|
2
2
|
|
|
3
|
+
## 0.2.5 — 2026-10-06
|
|
4
|
+
### Re-sync before matrx-frontend consumes the published package (P27)
|
|
5
|
+
|
|
6
|
+
- Carries every matrx-frontend `packages/chat` edit made after base `1b1bc31165`: run-headless-agent-json
|
|
7
|
+
(shortcutId/applicationScope + result keeping), picklist input, surface-catalog profile, host ui-slots and
|
|
8
|
+
window-openers, route-to-surface, tool-call-visualization registry/effects, regenerated `host/db-types.ts`
|
|
9
|
+
(pick-list renames). Alchemy imports stay on `@ai-matrx/alchemy/operate` (ALC-16).
|
|
10
|
+
- `store/hooks.ts` seam hooks (`useAppSelector`/`useAppDispatch`/`useAppStore`) are annotated so their
|
|
11
|
+
.d.ts keep the registered host types instead of the expanded bare shape (P27).
|
|
12
|
+
- Consumer action: none.
|
|
13
|
+
|
|
3
14
|
## 0.2.4 — 2026-10-06
|
|
4
15
|
|
|
5
16
|
- The Alchemy menu imports come from `@ai-matrx/alchemy/react/workspace` and transfer types from
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
buildPicklistItemFence,
|
|
11
11
|
readPicklistSelection
|
|
12
12
|
} from "@ai-matrx/agents/envelope";
|
|
13
|
-
import {
|
|
13
|
+
import { usePickListForSelection } from "../../../../host/ui-slots.js";
|
|
14
14
|
import { ReadFailure } from "../../../../host/ui-slots.js";
|
|
15
15
|
const OTHER_PREFIX = "Other: ";
|
|
16
16
|
function PicklistVariableInput({
|
|
@@ -23,7 +23,7 @@ function PicklistVariableInput({
|
|
|
23
23
|
containerWidth = 0
|
|
24
24
|
}) {
|
|
25
25
|
const binding = readStructuredList(customComponent);
|
|
26
|
-
const { items, loading, unavailable, error, retry } =
|
|
26
|
+
const { items, loading, unavailable, error, retry } = usePickListForSelection(
|
|
27
27
|
binding?.listId ?? null,
|
|
28
28
|
binding?.groupName
|
|
29
29
|
);
|
|
@@ -20,7 +20,7 @@ export declare function surfaceNameForKind(kind: WorkingDocumentKind): string;
|
|
|
20
20
|
export declare function sourceFeatureForKind(kind: WorkingDocumentKind): SourceFeature;
|
|
21
21
|
/** `UnifiedAgentContextMenu` prop bundle for a document kind. */
|
|
22
22
|
export declare function workingDocumentContextMenuProps(kind: WorkingDocumentKind): {
|
|
23
|
-
sourceFeature: "action_request_continuation" | "action_request_credential" | "action_request_one_time_code" | "action_request_park" | "action_request_resolve" | "admin" | "agent" | "agent-app" | "agent-builder" | "agent-comparison" | "agent-factory" | "agent-generator" | "agent-runner" | "agent-service" | "agent-studio" | "agent_blocks" | "agent_call" | "agent_flow_v1" | "agent_foundry_v1" | "agent_run" | "agent_structure_builder" | "agent_tool" | "agent_usage_sync" | "agents-other" | "ai-results" | "ai_judge" | "analysis-studio" | "auto_ingest" | "auto_ingest_ner" | "background_agent" | "billing" | "browser_handoff_delegate" | "browser_handoff_resolve" | "browser_session_health" | "builtin_agent" | "builtin_categorize" | "canvas" | "chat" | "claude-code" | "clean_pdf_extracted_content" | "client-unmapped" | "cloud_browser.local_login_learning" | "cms" | "code-editor" | "codex" | "coding_session_bridge.backfill" | "coding_session_native" | "coding_session_reply" | "communications.sms" | "conductor" | "content-extractor" | "content_plan_acceptance" | "content_plan_cms_fill" | "content_plan_cms_fill_preview" | "content_plan_deepen" | "content_plan_generate" | "content_processing" | "content_processing.research_landing" | "content_processing.transcript_landing" | "content_processing_upload_hook" | "context-parity" | "context_compare_answer" | "context_follow_listener" | "context_summary" | "conversation" | "conversation_context" | "conversation_crash_recovery" | "conversation_fork" | "conversation_resume" | "coverage" | "crawl_run" | "crm" | "crm.media_list_refresh" | "crm.media_list_research" | "crm.party_kind" | "crm.personalization" | "cursor" | "deep_research_v1" | "deferred_claim_recovery" | "dictionary" | "distillation_coherence" | "doc_verify" | "documents" | "education-analytics" | "education-assessment" | "education-fastfire" | "education-flashcards" | "education-ingest" | "education-media-reconcile" | "education-mindmap" | "education-planner" | "education-tutor" | "education_card_image_generator" | "education_card_image_prompt_writer" | "education_card_image_qc_judge" | "education_card_image_rot" | "education_card_image_web_source" | "education_card_images" | "education_study_pack" | "education_study_pack_v2" | "endpoint_family_sweep" | "external_url_change" | "files" | "fork_and_run" | "google_workspace.approval_replay" | "group_chat_cadence" | "hindsight" | "hindsight/crystallization" | "hindsight/wire_replay" | "hindsight_replay" | "hindsight_replay_worker" | "hindsight_shadow_recompilation" | "hr" | "human_decisions" | "image-studio" | "incident-assurance" | "internal" | "judge" | "kg_clustering_namer" | "legal" | "local_proxy" | "mandate_candidate_review" | "mandates.batch_lane" | "manual" | "marketing" | "masterwork" | "masterwork_audition_elicitation_vanilla" | "masterwork_audition_outcome_vanilla" | "masterwork_audition_unfolding_vanilla" | "masterwork_audition_vanilla" | "masterwork_bench_a2" | "masterwork_bench_extract" | "masterwork_bench_judge" | "masterwork_bench_panel" | "masterwork_build" | "masterwork_recovery" | "media_catalog" | "media_heal" | "meet:after_meeting_workflow" | "mermaid-workbench" | "messages" | "ner" | "news_monitor" | "notes" | "notify_listener" | "outcome_attribution" | "outreach" | "page_extraction" | "page_extraction_retry" | "pdf-cleaner" | "pdf-extractor" | "pdf-widgets" | "personal-staff" | "personal_staff_workspace_listener" | "platform_checks" | "platform_checks_drain" | "podcasts" | "print" | "product_capture_intake" | "product_capture_research" | "projects" | "prompt" | "proof_run:content_plan_family_grounding" | "proof_run:news_self_validating" | "provenance" | "provider_outage" | "rag" | "rag-search" | "rag.page_clean" | "rag_chunk_contextualizer" | "rag_hyde_generator" | "rag_pdf_page_cleaner" | "rag_query_expander" | "reachability" | "realtime" | "realtime_tool" | "registry_ingestion.pass" | "reroute" | "research" | "research_condenser_1" | "research_condenser_2" | "research_refresh_dispatch" | "row_history" | "scanner" | "scheduled" | "schema_coerce" | "scraper" | "scratchpad" | "screen_tool_run" | "seo" | "seo.engine_schedule_dispatcher" | "seo.keyword_place_backfill" | "seo.page_analysis" | "seo.rank_schedule" | "seo_analysis_sweep" | "seo_keyword_research" | "server-door" | "server-run" | "sharing" | "sms-assistant" | "sms-outbound" | "socket_compat" | "source_intelligence" | "staff-inbox-driver" | "suggestion_sweep" | "summarize_content" | "sweep_listener" | "system" | "tasks" | "tool-call-visualization" | "tool-testing" | "transcription" | "udt" | "vision_interview" | "vision_interview_tracker" | "voice-agent" | "vscode" | "web-capture" | "web_crawl_crash_resume" | "web_crawl_schedule_dispatch" | "web_research" | "web_url_announce" | "whole_value_follower" | "workflow_decision_fallback" | "workflow_extract_sweep" | "workflow_node_test" | "workflow_plan_assist" | "workflow_recovery_advisor" | "workflow_recovery_push" | "workflow_recovery_resolve" | "workflow_run" | "workflow_run_assists" | "workflow_worker" | "working-document" | "youtube_research_processing" | "youtube_transcription";
|
|
23
|
+
sourceFeature: "action_request_continuation" | "action_request_credential" | "action_request_one_time_code" | "action_request_park" | "action_request_resolve" | "admin" | "agent" | "agent-app" | "agent-builder" | "agent-comparison" | "agent-factory" | "agent-generator" | "agent-runner" | "agent-service" | "agent-studio" | "agent_blocks" | "agent_call" | "agent_factory.copy_probe" | "agent_factory.tool_probe" | "agent_flow_v1" | "agent_foundry_v1" | "agent_run" | "agent_structure_builder" | "agent_tool" | "agent_usage_sync" | "agents-other" | "ai-results" | "ai_judge" | "analysis-studio" | "auto_ingest" | "auto_ingest_ner" | "background_agent" | "billing" | "browser_handoff_delegate" | "browser_handoff_resolve" | "browser_session_health" | "builtin_agent" | "builtin_categorize" | "canvas" | "chat" | "claude-code" | "clean_pdf_extracted_content" | "client-unmapped" | "cloud_browser.local_login_learning" | "cms" | "code-editor" | "codex" | "coding_session_bridge.backfill" | "coding_session_native" | "coding_session_reply" | "communications.sms" | "conductor" | "content-extractor" | "content_plan_acceptance" | "content_plan_cms_fill" | "content_plan_cms_fill_preview" | "content_plan_deepen" | "content_plan_generate" | "content_processing" | "content_processing.research_landing" | "content_processing.transcript_landing" | "content_processing_upload_hook" | "context-parity" | "context_compare_answer" | "context_follow_listener" | "context_summary" | "conversation" | "conversation_context" | "conversation_crash_recovery" | "conversation_fork" | "conversation_resume" | "coverage" | "crawl_run" | "crm" | "crm.media_list_refresh" | "crm.media_list_research" | "crm.party_kind" | "crm.personalization" | "cursor" | "deep_research_v1" | "deferred_claim_recovery" | "dictionary" | "distillation_coherence" | "doc_verify" | "documents" | "education-analytics" | "education-assessment" | "education-fastfire" | "education-flashcards" | "education-ingest" | "education-media-reconcile" | "education-mindmap" | "education-planner" | "education-tutor" | "education_card_image_generator" | "education_card_image_prompt_writer" | "education_card_image_qc_judge" | "education_card_image_rot" | "education_card_image_web_source" | "education_card_images" | "education_study_pack" | "education_study_pack_v2" | "endpoint_family_sweep" | "external_url_change" | "files" | "fork_and_run" | "google_workspace.approval_replay" | "group_chat_cadence" | "hindsight" | "hindsight/crystallization" | "hindsight/wire_replay" | "hindsight_replay" | "hindsight_replay_worker" | "hindsight_shadow_recompilation" | "hr" | "human_decisions" | "image-studio" | "incident-assurance" | "internal" | "judge" | "kg_clustering_namer" | "legal" | "local_proxy" | "mandate_candidate_review" | "mandates.batch_lane" | "manual" | "marketing" | "masterwork" | "masterwork_audition_elicitation_vanilla" | "masterwork_audition_outcome_vanilla" | "masterwork_audition_unfolding_vanilla" | "masterwork_audition_vanilla" | "masterwork_bench_a2" | "masterwork_bench_extract" | "masterwork_bench_judge" | "masterwork_bench_panel" | "masterwork_build" | "masterwork_recovery" | "media_catalog" | "media_heal" | "meet:after_meeting_workflow" | "mermaid-workbench" | "messages" | "ner" | "news_monitor" | "notes" | "notify_listener" | "outcome_attribution" | "outreach" | "page_extraction" | "page_extraction_retry" | "pdf-cleaner" | "pdf-extractor" | "pdf-widgets" | "personal-staff" | "personal_staff_workspace_listener" | "platform_checks" | "platform_checks_drain" | "podcasts" | "print" | "product_capture_intake" | "product_capture_research" | "projects" | "prompt" | "proof_run:content_plan_family_grounding" | "proof_run:news_self_validating" | "provenance" | "provider_outage" | "rag" | "rag-search" | "rag.page_clean" | "rag_chunk_contextualizer" | "rag_hyde_generator" | "rag_pdf_page_cleaner" | "rag_query_expander" | "reachability" | "realtime" | "realtime_tool" | "registry_ingestion.pass" | "request_snapshot_blob" | "reroute" | "research" | "research_condenser_1" | "research_condenser_2" | "research_refresh_dispatch" | "row_history" | "scanner" | "scheduled" | "schema_coerce" | "scraper" | "scratchpad" | "screen_tool_run" | "seo" | "seo.engine_schedule_dispatcher" | "seo.keyword_place_backfill" | "seo.page_analysis" | "seo.rank_schedule" | "seo_analysis_sweep" | "seo_keyword_research" | "server-door" | "server-run" | "sharing" | "sms-assistant" | "sms-outbound" | "socket_compat" | "source_intelligence" | "staff-inbox-driver" | "suggestion_sweep" | "summarize_content" | "sweep_listener" | "system" | "tasks" | "test.agent_factory.intake" | "tool-call-visualization" | "tool-testing" | "transcription" | "udt" | "vision_interview" | "vision_interview_tracker" | "voice-agent" | "vscode" | "web-capture" | "web_crawl_crash_resume" | "web_crawl_schedule_dispatch" | "web_research" | "web_url_announce" | "whole_value_follower" | "workflow_decision_fallback" | "workflow_extract_sweep" | "workflow_holder_proof" | "workflow_node_test" | "workflow_plan_assist" | "workflow_recovery_advisor" | "workflow_recovery_push" | "workflow_recovery_resolve" | "workflow_run" | "workflow_run_assists" | "workflow_worker" | "working-document" | "youtube_research_processing" | "youtube_transcription";
|
|
24
24
|
surfaceName: string;
|
|
25
25
|
isEditable: true;
|
|
26
26
|
enabledPlacements: ("ai-action" | "content-block" | "quick-action")[];
|
|
@@ -104,9 +104,12 @@ export interface HeadlessAgentJsonOptions {
|
|
|
104
104
|
*
|
|
105
105
|
* A markdown agent asked for "json" fails with "produced no structured
|
|
106
106
|
* JSON" even though it answered perfectly — which is the whole reason this
|
|
107
|
-
* option exists rather than a second primitive.
|
|
107
|
+
* option exists rather than a second primitive. `"media"` — the run's
|
|
108
|
+
* finished media blocks are the product (an image/audio/video model answers
|
|
109
|
+
* with a media block, never text); `data` is the array of unified media
|
|
110
|
+
* blocks (`fileId`, `mimeType`, `width`, `height`, …).
|
|
108
111
|
*/
|
|
109
|
-
expect?: "json" | "text";
|
|
112
|
+
expect?: "json" | "text" | "media";
|
|
110
113
|
/** Let the extractor fuzzy-parse at finalize. Default true. */
|
|
111
114
|
fuzzyOnFinalize?: boolean;
|
|
112
115
|
/**
|
|
@@ -190,6 +193,8 @@ export interface HeadlessAgentJsonOptions {
|
|
|
190
193
|
noJson?: string;
|
|
191
194
|
/** `expect: "text"` run finished but produced no answer text. */
|
|
192
195
|
noText?: string;
|
|
196
|
+
/** `expect: "media"` run finished but produced no media. */
|
|
197
|
+
noMedia?: string;
|
|
193
198
|
/** Ceiling elapsed. */
|
|
194
199
|
timeout?: string;
|
|
195
200
|
};
|
|
@@ -302,7 +307,7 @@ export interface AdoptedAgentJsonOptions {
|
|
|
302
307
|
/** Bounded settle window after a terminal stream state. Default 6s. */
|
|
303
308
|
settleMs?: number;
|
|
304
309
|
/** See `expect` on `HeadlessAgentJsonOptions`. Default "json". */
|
|
305
|
-
expect?: "json" | "text";
|
|
310
|
+
expect?: "json" | "text" | "media";
|
|
306
311
|
/**
|
|
307
312
|
* Keep the conversation/instance alive after the run. Default false — the
|
|
308
313
|
* instance is destroyed on settle, matching the launched path. A caller
|
|
@@ -9,7 +9,8 @@ import {
|
|
|
9
9
|
selectFirstExtractedObject,
|
|
10
10
|
selectJsonExtractionComplete,
|
|
11
11
|
selectRequestError,
|
|
12
|
-
selectRequestStatus
|
|
12
|
+
selectRequestStatus,
|
|
13
|
+
selectRenderBlocksByType
|
|
13
14
|
} from "../active-requests/active-requests.selectors.js";
|
|
14
15
|
import {
|
|
15
16
|
selectLatestAnswerText,
|
|
@@ -47,10 +48,22 @@ const DEFAULT_MESSAGES = {
|
|
|
47
48
|
streamError: "The agent failed before returning a result.",
|
|
48
49
|
noJson: "The agent finished but produced no structured JSON.",
|
|
49
50
|
noText: "The agent finished but produced no text.",
|
|
51
|
+
noMedia: "The agent finished but produced no image, audio or video.",
|
|
50
52
|
timeout: "The AI response timed out. If you switched browser tabs during this process, the connection may have been suspended \u2014 keep this tab active and try again."
|
|
51
53
|
};
|
|
52
54
|
const TERMINAL_STATUSES = /* @__PURE__ */ new Set(["complete", "error", "timeout", "cancelled"]);
|
|
53
55
|
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
56
|
+
const MEDIA_BLOCK_TYPES = ["image_output", "audio_output", "video_output"];
|
|
57
|
+
function completedMediaOf(getState, requestId) {
|
|
58
|
+
const state = getState();
|
|
59
|
+
const out = [];
|
|
60
|
+
for (const type of MEDIA_BLOCK_TYPES) {
|
|
61
|
+
for (const block of selectRenderBlocksByType(requestId, type)(state) ?? []) {
|
|
62
|
+
if (block.status === "complete" && block.data) out.push(block.data);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
54
67
|
function screamFlattening(verdict, ctx) {
|
|
55
68
|
console.error(verdict.message);
|
|
56
69
|
captureError({
|
|
@@ -99,7 +112,7 @@ async function deliverResult(seam, result) {
|
|
|
99
112
|
}
|
|
100
113
|
}
|
|
101
114
|
async function failWarnedOutputMissingKeys(getState, opts, result) {
|
|
102
|
-
if (!opts.mandateKey || (opts.expect ?? "json")
|
|
115
|
+
if (!opts.mandateKey || (opts.expect ?? "json") !== "json") return result;
|
|
103
116
|
const mandateKey = opts.mandateKey;
|
|
104
117
|
const data = result.data;
|
|
105
118
|
const isRecord = typeof data === "object" && data !== null && !Array.isArray(data);
|
|
@@ -414,7 +427,7 @@ function reportNoResult(getState, args) {
|
|
|
414
427
|
}
|
|
415
428
|
async function waitForExtraction(dispatch, getState, args) {
|
|
416
429
|
const { conversationId, requestId, msgs } = args;
|
|
417
|
-
const noResultMsg = args.expect === "text" ? msgs.noText : msgs.noJson;
|
|
430
|
+
const noResultMsg = args.expect === "text" ? msgs.noText : args.expect === "media" ? msgs.noMedia : msgs.noJson;
|
|
418
431
|
const start = Date.now();
|
|
419
432
|
let terminalAt = null;
|
|
420
433
|
const viewerId = `runHeadlessAgentJson:${args.surfaceKey}:${requestId}`;
|
|
@@ -425,6 +438,23 @@ async function waitForExtraction(dispatch, getState, args) {
|
|
|
425
438
|
fullResponse: selectLatestAnswerText(conversationId)(getState())
|
|
426
439
|
});
|
|
427
440
|
const settle = (reason, message) => {
|
|
441
|
+
if (args.expect === "media") {
|
|
442
|
+
const b = base();
|
|
443
|
+
const media = completedMediaOf(getState, requestId);
|
|
444
|
+
if (media.length > 0) return { success: true, data: media, ...b };
|
|
445
|
+
if (reason === "aborted") return { success: false, data: null, error: message, ...b };
|
|
446
|
+
if (!args.deferNoJsonCapture || reason === "timeout") {
|
|
447
|
+
reportNoResult(getState, {
|
|
448
|
+
requestId,
|
|
449
|
+
conversationId,
|
|
450
|
+
surfaceKey: args.surfaceKey,
|
|
451
|
+
agentRef: args.agentRef,
|
|
452
|
+
reason,
|
|
453
|
+
message
|
|
454
|
+
});
|
|
455
|
+
}
|
|
456
|
+
return { success: false, data: null, error: message, ...b };
|
|
457
|
+
}
|
|
428
458
|
if (args.expect === "text") {
|
|
429
459
|
const b = base();
|
|
430
460
|
if (b.fullResponse.trim()) {
|
|
@@ -511,6 +541,9 @@ async function waitForExtraction(dispatch, getState, args) {
|
|
|
511
541
|
return settle("extraction-complete", noResultMsg);
|
|
512
542
|
}
|
|
513
543
|
if (status !== void 0 && TERMINAL_STATUSES.has(status)) {
|
|
544
|
+
if (args.expect === "media" && completedMediaOf(getState, requestId).length > 0) {
|
|
545
|
+
return settle("stream-ended", noResultMsg);
|
|
546
|
+
}
|
|
514
547
|
terminalAt ??= Date.now();
|
|
515
548
|
if (Date.now() - terminalAt > args.settleMs) {
|
|
516
549
|
return settle("stream-ended", noResultMsg);
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
*
|
|
18
18
|
* Two target definitions over the same fields is a defect, not a coincidence:
|
|
19
19
|
* the campaign's own precedent is `matrx-user/lists` / `matrx-user/list-manager`,
|
|
20
|
-
* whose shared targets were lifted into `features/
|
|
20
|
+
* whose shared targets were lifted into `features/data-tables/pick-lists/`. So the CONTRACT
|
|
21
21
|
* — the accepted keys, the per-field bounds, the replace-vs-patch semantics,
|
|
22
22
|
* and the model-facing prose that states them — is defined exactly once, here.
|
|
23
23
|
*
|
package/dist/host/db-types.d.ts
CHANGED
|
@@ -26155,6 +26155,88 @@ export type ChatDatabase = {
|
|
|
26155
26155
|
};
|
|
26156
26156
|
Returns: boolean;
|
|
26157
26157
|
};
|
|
26158
|
+
_entity_cursor_decode: {
|
|
26159
|
+
Args: {
|
|
26160
|
+
p: string;
|
|
26161
|
+
};
|
|
26162
|
+
Returns: Json;
|
|
26163
|
+
};
|
|
26164
|
+
_entity_cursor_encode: {
|
|
26165
|
+
Args: {
|
|
26166
|
+
p: Json;
|
|
26167
|
+
};
|
|
26168
|
+
Returns: string;
|
|
26169
|
+
};
|
|
26170
|
+
_entity_identifier: {
|
|
26171
|
+
Args: {
|
|
26172
|
+
p_cols: Json;
|
|
26173
|
+
p_name: string;
|
|
26174
|
+
};
|
|
26175
|
+
Returns: string;
|
|
26176
|
+
};
|
|
26177
|
+
_entity_org_notice: {
|
|
26178
|
+
Args: {
|
|
26179
|
+
p_ids: Json;
|
|
26180
|
+
p_op: string;
|
|
26181
|
+
p_organization_id: string;
|
|
26182
|
+
p_token: string;
|
|
26183
|
+
};
|
|
26184
|
+
Returns: undefined;
|
|
26185
|
+
};
|
|
26186
|
+
_entity_refuse: {
|
|
26187
|
+
Args: {
|
|
26188
|
+
p_code: string;
|
|
26189
|
+
p_detail?: Json;
|
|
26190
|
+
p_message: string;
|
|
26191
|
+
};
|
|
26192
|
+
Returns: undefined;
|
|
26193
|
+
};
|
|
26194
|
+
_entity_reraise: {
|
|
26195
|
+
Args: {
|
|
26196
|
+
p_detail: string;
|
|
26197
|
+
p_hint: string;
|
|
26198
|
+
p_message: string;
|
|
26199
|
+
p_state: string;
|
|
26200
|
+
};
|
|
26201
|
+
Returns: undefined;
|
|
26202
|
+
};
|
|
26203
|
+
_entity_trash_or_restore: {
|
|
26204
|
+
Args: {
|
|
26205
|
+
p_entity_type: string;
|
|
26206
|
+
p_ids: string[];
|
|
26207
|
+
p_trash: boolean;
|
|
26208
|
+
};
|
|
26209
|
+
Returns: Json;
|
|
26210
|
+
};
|
|
26211
|
+
_entity_wire_rows: {
|
|
26212
|
+
Args: {
|
|
26213
|
+
p_columns: Json;
|
|
26214
|
+
p_rows: Json;
|
|
26215
|
+
p_token: string;
|
|
26216
|
+
};
|
|
26217
|
+
Returns: Json;
|
|
26218
|
+
};
|
|
26219
|
+
_entity_write_refusal: {
|
|
26220
|
+
Args: {
|
|
26221
|
+
p_column?: string;
|
|
26222
|
+
p_constraint?: string;
|
|
26223
|
+
p_detail: string;
|
|
26224
|
+
p_extra?: Json;
|
|
26225
|
+
p_hint: string;
|
|
26226
|
+
p_message: string;
|
|
26227
|
+
p_state: string;
|
|
26228
|
+
};
|
|
26229
|
+
Returns: undefined;
|
|
26230
|
+
};
|
|
26231
|
+
_entity_write_values: {
|
|
26232
|
+
Args: {
|
|
26233
|
+
p_insert: boolean;
|
|
26234
|
+
p_org: string;
|
|
26235
|
+
p_token: string;
|
|
26236
|
+
p_values: Json;
|
|
26237
|
+
};
|
|
26238
|
+
Returns: Json;
|
|
26239
|
+
};
|
|
26158
26240
|
_final_switch_is_on: {
|
|
26159
26241
|
Args: never;
|
|
26160
26242
|
Returns: boolean;
|
|
@@ -28042,6 +28124,13 @@ export type ChatDatabase = {
|
|
|
28042
28124
|
};
|
|
28043
28125
|
Returns: string;
|
|
28044
28126
|
};
|
|
28127
|
+
entity_archive: {
|
|
28128
|
+
Args: {
|
|
28129
|
+
p_entity_type: string;
|
|
28130
|
+
p_ids: string[];
|
|
28131
|
+
};
|
|
28132
|
+
Returns: Json;
|
|
28133
|
+
};
|
|
28045
28134
|
entity_columns: {
|
|
28046
28135
|
Args: {
|
|
28047
28136
|
p_organization_id: string;
|
|
@@ -28061,6 +28150,22 @@ export type ChatDatabase = {
|
|
|
28061
28150
|
};
|
|
28062
28151
|
Returns: Database["platform"]["Enums"]["visibility"];
|
|
28063
28152
|
};
|
|
28153
|
+
entity_get: {
|
|
28154
|
+
Args: {
|
|
28155
|
+
p_entity_type: string;
|
|
28156
|
+
p_ids: string[];
|
|
28157
|
+
p_include?: Json;
|
|
28158
|
+
};
|
|
28159
|
+
Returns: Json;
|
|
28160
|
+
};
|
|
28161
|
+
entity_insert: {
|
|
28162
|
+
Args: {
|
|
28163
|
+
p_entity_type: string;
|
|
28164
|
+
p_organization_id: string;
|
|
28165
|
+
p_rows: Json;
|
|
28166
|
+
};
|
|
28167
|
+
Returns: Json;
|
|
28168
|
+
};
|
|
28064
28169
|
entity_is_org_scoped: {
|
|
28065
28170
|
Args: {
|
|
28066
28171
|
p_token: string;
|
|
@@ -28073,6 +28178,33 @@ export type ChatDatabase = {
|
|
|
28073
28178
|
};
|
|
28074
28179
|
Returns: boolean;
|
|
28075
28180
|
};
|
|
28181
|
+
entity_list_scoped: {
|
|
28182
|
+
Args: {
|
|
28183
|
+
p_after?: string;
|
|
28184
|
+
p_archived?: string;
|
|
28185
|
+
p_deep?: boolean;
|
|
28186
|
+
p_entity_type: string;
|
|
28187
|
+
p_favorites_first?: boolean;
|
|
28188
|
+
p_filter?: Json;
|
|
28189
|
+
p_include?: Json;
|
|
28190
|
+
p_page?: number;
|
|
28191
|
+
p_page_size?: number;
|
|
28192
|
+
p_scope?: Json;
|
|
28193
|
+
p_search?: string;
|
|
28194
|
+
p_search_columns?: string[];
|
|
28195
|
+
p_search_match?: string;
|
|
28196
|
+
p_sort?: Json;
|
|
28197
|
+
p_trash?: boolean;
|
|
28198
|
+
p_with_total?: boolean;
|
|
28199
|
+
};
|
|
28200
|
+
Returns: Json;
|
|
28201
|
+
};
|
|
28202
|
+
entity_org_topic_admits: {
|
|
28203
|
+
Args: {
|
|
28204
|
+
p_topic: string;
|
|
28205
|
+
};
|
|
28206
|
+
Returns: boolean;
|
|
28207
|
+
};
|
|
28076
28208
|
entity_organization_id: {
|
|
28077
28209
|
Args: {
|
|
28078
28210
|
p_id: string;
|
|
@@ -28110,6 +28242,22 @@ export type ChatDatabase = {
|
|
|
28110
28242
|
};
|
|
28111
28243
|
Returns: boolean;
|
|
28112
28244
|
};
|
|
28245
|
+
entity_unarchive: {
|
|
28246
|
+
Args: {
|
|
28247
|
+
p_entity_type: string;
|
|
28248
|
+
p_ids: string[];
|
|
28249
|
+
};
|
|
28250
|
+
Returns: Json;
|
|
28251
|
+
};
|
|
28252
|
+
entity_update: {
|
|
28253
|
+
Args: {
|
|
28254
|
+
p_base_version?: number;
|
|
28255
|
+
p_entity_type: string;
|
|
28256
|
+
p_id: string;
|
|
28257
|
+
p_patch?: Json;
|
|
28258
|
+
};
|
|
28259
|
+
Returns: Json;
|
|
28260
|
+
};
|
|
28113
28261
|
extensibility_knob: {
|
|
28114
28262
|
Args: {
|
|
28115
28263
|
p_definition_id?: string;
|
|
@@ -31988,7 +32136,7 @@ export type ChatDatabase = {
|
|
|
31988
32136
|
isSetofReturn: true;
|
|
31989
32137
|
};
|
|
31990
32138
|
};
|
|
31991
|
-
|
|
32139
|
+
_d31_impl_get_pick_list_with_items: {
|
|
31992
32140
|
Args: {
|
|
31993
32141
|
p_list_id: string;
|
|
31994
32142
|
};
|
|
@@ -32032,7 +32180,7 @@ export type ChatDatabase = {
|
|
|
32032
32180
|
};
|
|
32033
32181
|
Returns: Json;
|
|
32034
32182
|
};
|
|
32035
|
-
|
|
32183
|
+
_d31_impl_update_pick_list: {
|
|
32036
32184
|
Args: {
|
|
32037
32185
|
p_authenticated_read?: boolean;
|
|
32038
32186
|
p_description?: string;
|
|
@@ -38384,7 +38532,7 @@ export type ChatDatabase = {
|
|
|
38384
38532
|
};
|
|
38385
38533
|
Returns: Json;
|
|
38386
38534
|
};
|
|
38387
|
-
|
|
38535
|
+
get_pick_list_for_selection: {
|
|
38388
38536
|
Args: {
|
|
38389
38537
|
p_list_id: string;
|
|
38390
38538
|
};
|
|
@@ -38541,13 +38689,13 @@ export type ChatDatabase = {
|
|
|
38541
38689
|
};
|
|
38542
38690
|
Returns: Json;
|
|
38543
38691
|
};
|
|
38544
|
-
|
|
38692
|
+
get_pick_list_with_items: {
|
|
38545
38693
|
Args: {
|
|
38546
38694
|
p_list_id: string;
|
|
38547
38695
|
};
|
|
38548
38696
|
Returns: Json;
|
|
38549
38697
|
};
|
|
38550
|
-
|
|
38698
|
+
get_pick_lists_summary: {
|
|
38551
38699
|
Args: {
|
|
38552
38700
|
p_user_id: string;
|
|
38553
38701
|
};
|
|
@@ -43772,7 +43920,7 @@ export type ChatDatabase = {
|
|
|
43772
43920
|
};
|
|
43773
43921
|
Returns: Json;
|
|
43774
43922
|
};
|
|
43775
|
-
|
|
43923
|
+
update_pick_list: {
|
|
43776
43924
|
Args: {
|
|
43777
43925
|
p_authenticated_read?: boolean;
|
|
43778
43926
|
p_description?: string;
|
package/dist/host/ui-slots.d.ts
CHANGED
|
@@ -285,7 +285,7 @@ export interface ChatUiSlots {
|
|
|
285
285
|
};
|
|
286
286
|
useAutoLabel: AnyFn;
|
|
287
287
|
generateLabelFromContent: AnyFn;
|
|
288
|
-
|
|
288
|
+
usePickListForSelection: (listId: string | null | undefined, groupName?: string) => {
|
|
289
289
|
items: PicklistItem[];
|
|
290
290
|
groups: unknown[];
|
|
291
291
|
loading: boolean;
|
|
@@ -688,7 +688,7 @@ export declare const useSkills: () => {
|
|
|
688
688
|
};
|
|
689
689
|
export declare const useAutoLabel: AnyFn;
|
|
690
690
|
export declare const generateLabelFromContent: AnyFn;
|
|
691
|
-
export declare const
|
|
691
|
+
export declare const usePickListForSelection: (listId: string | null | undefined, groupName?: string) => {
|
|
692
692
|
items: PicklistItem[];
|
|
693
693
|
groups: unknown[];
|
|
694
694
|
loading: boolean;
|
package/dist/host/ui-slots.js
CHANGED
|
@@ -167,7 +167,7 @@ const STAND_INS = {
|
|
|
167
167
|
beginPlaybackSession: () => ({ id: "", update: () => void 0, end: () => void 0 }),
|
|
168
168
|
useCanvasOpenGuard: () => ({ ensureCanvasReachable: async () => true }),
|
|
169
169
|
useSkills: () => ({ skills: NONE, grouped: {}, count: 0, loading: false, error: null, reload: async () => void 0 }),
|
|
170
|
-
|
|
170
|
+
usePickListForSelection: () => ({ items: NONE, groups: NONE, loading: false, unavailable: true, error: null, retry: () => void 0 }),
|
|
171
171
|
useOutputFeedback: () => ({ verdict: null, isLoaded: true })
|
|
172
172
|
};
|
|
173
173
|
function slotFn(name, declared) {
|
|
@@ -408,7 +408,7 @@ const useRegisterChatAttachTarget = slotFn("useRegisterChatAttachTarget", () =>
|
|
|
408
408
|
const useSkills = slotFn("useSkills");
|
|
409
409
|
const useAutoLabel = slotFn("useAutoLabel", () => void 0);
|
|
410
410
|
const generateLabelFromContent = slotFn("generateLabelFromContent");
|
|
411
|
-
const
|
|
411
|
+
const usePickListForSelection = slotFn("usePickListForSelection");
|
|
412
412
|
const useGitHubConnection = slotFn("useGitHubConnection");
|
|
413
413
|
const useOutputFeedback = slotFn("useOutputFeedback");
|
|
414
414
|
const saveOutputFeedback = slotFn("saveOutputFeedback");
|
|
@@ -789,12 +789,12 @@ export {
|
|
|
789
789
|
useOverlaySurfaceRenderAck,
|
|
790
790
|
usePageCapture,
|
|
791
791
|
usePageCaptureContribution,
|
|
792
|
+
usePickListForSelection,
|
|
792
793
|
usePopoutContainer,
|
|
793
794
|
useRecordAndTranscribe,
|
|
794
795
|
useRegisterChatAttachTarget,
|
|
795
796
|
useRunControlCounts,
|
|
796
797
|
useSkills,
|
|
797
|
-
useStructuredListForSelection,
|
|
798
798
|
useTablesEverywhere,
|
|
799
799
|
useTextareaFormatting,
|
|
800
800
|
useUrlSync,
|
|
@@ -145,7 +145,7 @@ export interface OpenScraperWindowOptions {
|
|
|
145
145
|
url?: string;
|
|
146
146
|
mode?: ScraperWindowMode;
|
|
147
147
|
}
|
|
148
|
-
export interface
|
|
148
|
+
export interface OpenPickListManagerWindowOptions {
|
|
149
149
|
title?: string;
|
|
150
150
|
forcedListId?: string | null;
|
|
151
151
|
}
|
|
@@ -297,7 +297,7 @@ export interface ChatWindowOpeners {
|
|
|
297
297
|
openSaveTemplateDialog: (opts?: OpenSaveTemplateDialogOptions) => void;
|
|
298
298
|
openScraperWindow: (opts?: OpenScraperWindowOptions) => ChatWindowHandle;
|
|
299
299
|
openScratchpadPanel: (opts?: OpenScratchpadPanelOptions) => ChatWindowHandle;
|
|
300
|
-
|
|
300
|
+
openPickListManagerWindow: (opts?: OpenPickListManagerWindowOptions) => ChatWindowHandle;
|
|
301
301
|
openSurfaceContextInspector: (opts: OpenSurfaceContextInspectorOptions) => ChatWindowHandle;
|
|
302
302
|
openSurfaceContextWindow: (opts: OpenSurfaceContextWindowOptions) => void;
|
|
303
303
|
openSystemInstructionWindow: (opts: OpenSystemInstructionWindowOptions) => ChatWindowHandle;
|
|
@@ -352,7 +352,7 @@ export declare function useOpenQuickChatSheet(): (opts?: OpenQuickChatSheetOptio
|
|
|
352
352
|
export declare function useOpenRunControlsWindow(): (opts: OpenRunControlsWindowOptions) => ChatWindowHandle;
|
|
353
353
|
export declare function useOpenSaveTemplateDialog(): (opts?: OpenSaveTemplateDialogOptions) => void;
|
|
354
354
|
export declare function useOpenScraperWindow(): (opts?: OpenScraperWindowOptions) => ChatWindowHandle;
|
|
355
|
-
export declare function
|
|
355
|
+
export declare function useOpenPickListManagerWindow(): (opts?: OpenPickListManagerWindowOptions) => ChatWindowHandle;
|
|
356
356
|
export declare function useOpenSurfaceContextInspector(): (opts: OpenSurfaceContextInspectorOptions) => ChatWindowHandle;
|
|
357
357
|
export declare function useOpenSurfaceContextWindow(): (opts: OpenSurfaceContextWindowOptions) => void;
|
|
358
358
|
export declare function useOpenSystemInstructionWindow(): (opts: OpenSystemInstructionWindowOptions) => ChatWindowHandle;
|
|
@@ -52,7 +52,7 @@ const UNHOSTED_WINDOW_OPENERS = {
|
|
|
52
52
|
openSaveTemplateDialog: unhosted("openSaveTemplateDialog"),
|
|
53
53
|
openScraperWindow: unhosted("openScraperWindow"),
|
|
54
54
|
openScratchpadPanel: unhosted("openScratchpadPanel"),
|
|
55
|
-
|
|
55
|
+
openPickListManagerWindow: unhosted("openPickListManagerWindow"),
|
|
56
56
|
openSurfaceContextInspector: unhosted("openSurfaceContextInspector"),
|
|
57
57
|
openSurfaceContextWindow: unhosted("openSurfaceContextWindow"),
|
|
58
58
|
openSystemInstructionWindow: unhosted("openSystemInstructionWindow"),
|
|
@@ -206,8 +206,8 @@ function useOpenSaveTemplateDialog() {
|
|
|
206
206
|
function useOpenScraperWindow() {
|
|
207
207
|
return useOpener("openScraperWindow");
|
|
208
208
|
}
|
|
209
|
-
function
|
|
210
|
-
return useOpener("
|
|
209
|
+
function useOpenPickListManagerWindow() {
|
|
210
|
+
return useOpener("openPickListManagerWindow");
|
|
211
211
|
}
|
|
212
212
|
function useOpenSurfaceContextInspector() {
|
|
213
213
|
return useOpener("openSurfaceContextInspector");
|
|
@@ -261,6 +261,7 @@ export {
|
|
|
261
261
|
useOpenLiveRunWindow,
|
|
262
262
|
useOpenMandateWindow,
|
|
263
263
|
useOpenNotesWindow,
|
|
264
|
+
useOpenPickListManagerWindow,
|
|
264
265
|
useOpenPromptPreviewWindow,
|
|
265
266
|
useOpenQuickChatSheet,
|
|
266
267
|
useOpenRunControlsWindow,
|
|
@@ -268,7 +269,6 @@ export {
|
|
|
268
269
|
useOpenScraperWindow,
|
|
269
270
|
useOpenScratchpadPanel,
|
|
270
271
|
useOpenShortcutEditorWindow,
|
|
271
|
-
useOpenStructuredListManagerV2Window,
|
|
272
272
|
useOpenSurfaceContextInspector,
|
|
273
273
|
useOpenSurfaceContextWindow,
|
|
274
274
|
useOpenSystemInstructionWindow,
|
|
@@ -95,7 +95,7 @@ const SURFACE_ROUTE_MAPPINGS = [
|
|
|
95
95
|
{ prefix: "/work", surface: "matrx-user/ai-work" },
|
|
96
96
|
{ prefix: "/files", surface: "matrx-user/files" },
|
|
97
97
|
{ prefix: "/projects", surface: "matrx-user/projects" },
|
|
98
|
-
{ prefix: "/lists", surface: "matrx-user/lists" },
|
|
98
|
+
{ prefix: "/pick-lists", surface: "matrx-user/lists" },
|
|
99
99
|
{ prefix: "/tools/pdf-extractor", surface: "matrx-user/pdf-extractor" },
|
|
100
100
|
{ prefix: "/tools/scanner", surface: "matrx-user/scanner" },
|
|
101
101
|
{ prefix: "/documents", surface: "matrx-user/documents" },
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* ADDING AN ENTITY: one entry in `TOOL_STATE_EFFECTS` — tool names + a `run`
|
|
27
27
|
* that dispatches the feature's refetch thunk(s). Known not-yet-covered
|
|
28
28
|
* writers (no canonical Redux refetch today, or their state is hook-local):
|
|
29
|
-
* picklist (session-cached `
|
|
29
|
+
* picklist (session-cached `usePickListDetail`), dictionary, workbook,
|
|
30
30
|
* dataset/usertable, document. The working document is already reconciled by
|
|
31
31
|
* its own `context_changed` re-read; the scratchpad is agent-readonly.
|
|
32
32
|
*/
|
|
@@ -4,7 +4,6 @@ import {
|
|
|
4
4
|
CheckCircle,
|
|
5
5
|
FileSearch,
|
|
6
6
|
ListChecks,
|
|
7
|
-
List,
|
|
8
7
|
SquareCheckBig,
|
|
9
8
|
ListTodo,
|
|
10
9
|
FileText,
|
|
@@ -1061,14 +1060,13 @@ const APP_FEATURE_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
|
1061
1060
|
"seo_check_meta_descriptions",
|
|
1062
1061
|
"seo_get_keyword_data",
|
|
1063
1062
|
"topical_map",
|
|
1064
|
-
"
|
|
1063
|
+
"pick_list",
|
|
1065
1064
|
"task",
|
|
1066
1065
|
"tasks",
|
|
1067
1066
|
"user_todos",
|
|
1068
1067
|
"document",
|
|
1069
1068
|
"dataset",
|
|
1070
1069
|
"usertable_create",
|
|
1071
|
-
"get_user_lists",
|
|
1072
1070
|
"knowledge_search",
|
|
1073
1071
|
"document_search",
|
|
1074
1072
|
"knowledge_browse",
|
|
@@ -1165,14 +1163,13 @@ const RESULT_IS_PURPOSE_TOOLS = /* @__PURE__ */ new Set([
|
|
|
1165
1163
|
// the inventory / passage / store / entity map IS the answer
|
|
1166
1164
|
"document_content",
|
|
1167
1165
|
// the fetched pages/text ARE the answer
|
|
1168
|
-
"get_user_lists",
|
|
1169
1166
|
"seo",
|
|
1170
1167
|
// the analyzed SERP previews / keyword table ARE the deliverable
|
|
1171
1168
|
"seo_check_meta_tags_batch",
|
|
1172
1169
|
"seo_check_meta_titles",
|
|
1173
1170
|
"seo_check_meta_descriptions",
|
|
1174
1171
|
"seo_get_keyword_data",
|
|
1175
|
-
"
|
|
1172
|
+
"pick_list",
|
|
1176
1173
|
// the created/loaded list is the deliverable
|
|
1177
1174
|
"document",
|
|
1178
1175
|
"dataset",
|
|
@@ -1198,8 +1195,7 @@ function getToolDisplayMode(toolName, entry) {
|
|
|
1198
1195
|
}
|
|
1199
1196
|
const TOOL_GLYPHS = {
|
|
1200
1197
|
// entity tools
|
|
1201
|
-
|
|
1202
|
-
get_user_lists: { icon: List, accent: "violet" },
|
|
1198
|
+
pick_list: { icon: ListChecks, accent: "violet" },
|
|
1203
1199
|
task: { icon: SquareCheckBig, accent: "blue" },
|
|
1204
1200
|
tasks: { icon: ListTodo, accent: "blue" },
|
|
1205
1201
|
user_todos: { icon: ListTodo, accent: "blue" },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-matrx/chat",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"description": "THE one AI Matrx person-to-agent chat system: the full chat (running agents, conversations, tool calls, streaming, context, surfaces, voice) as per-module subpaths @ai-matrx/chat/<domain>/<module> over a host contract (/host, /host/react) whose only required value is a db; plus the kernel compatibility entries (., /external-store, /matrx, /react, /tools, styles.css, tokens.css) until P28.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -201,23 +201,23 @@
|
|
|
201
201
|
"server-only": "^0.0.1",
|
|
202
202
|
"uuid": "^14.0.2",
|
|
203
203
|
"zod": "^4.6.5",
|
|
204
|
-
"@ai-matrx/agents": "latest",
|
|
205
204
|
"@ai-matrx/alchemy": "latest",
|
|
206
205
|
"@ai-matrx/associations": "latest",
|
|
207
206
|
"@ai-matrx/browser-audio": "latest",
|
|
208
207
|
"@ai-matrx/canvas": "latest",
|
|
209
208
|
"@ai-matrx/content-ir": "latest",
|
|
209
|
+
"@ai-matrx/agents": "latest",
|
|
210
210
|
"@ai-matrx/content-ir-react": "latest",
|
|
211
211
|
"@ai-matrx/data": "latest",
|
|
212
|
-
"@ai-matrx/
|
|
212
|
+
"@ai-matrx/diff": "latest",
|
|
213
213
|
"@ai-matrx/icons": "latest",
|
|
214
|
+
"@ai-matrx/design-system": "latest",
|
|
214
215
|
"@ai-matrx/kit": "latest",
|
|
215
216
|
"@ai-matrx/media": "latest",
|
|
216
217
|
"@ai-matrx/print": "latest",
|
|
217
218
|
"@ai-matrx/realtime": "latest",
|
|
218
|
-
"@ai-matrx/diff": "latest",
|
|
219
|
-
"@ai-matrx/records-ui": "latest",
|
|
220
219
|
"@ai-matrx/records": "latest",
|
|
220
|
+
"@ai-matrx/records-ui": "latest",
|
|
221
221
|
"@ai-matrx/tap-target": "latest"
|
|
222
222
|
},
|
|
223
223
|
"devDependencies": {
|