@ai-matrx/context-menu 0.1.9 → 0.1.11

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 (70) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/builder.cjs +17 -18
  3. package/dist/builder.cjs.map +1 -1
  4. package/dist/builder.js +2 -3
  5. package/dist/builder.js.map +1 -1
  6. package/dist/{chunk-ECKA474B.js → chunk-2B37SXQW.js} +21 -12
  7. package/dist/chunk-2B37SXQW.js.map +1 -0
  8. package/dist/{chunk-TSOUI723.cjs → chunk-7TIZAANU.cjs} +26 -11
  9. package/dist/chunk-7TIZAANU.cjs.map +1 -0
  10. package/dist/{chunk-A24SBKSA.js → chunk-EG23Y2KW.js} +14 -13
  11. package/dist/{chunk-A24SBKSA.js.map → chunk-EG23Y2KW.js.map} +1 -1
  12. package/dist/{chunk-7VDSMZWI.cjs → chunk-ERFH2RZC.cjs} +18 -17
  13. package/dist/chunk-ERFH2RZC.cjs.map +1 -0
  14. package/dist/{chunk-EIP5YS4Y.js → chunk-HJU3RU2B.js} +27 -12
  15. package/dist/chunk-HJU3RU2B.js.map +1 -0
  16. package/dist/{chunk-SWEWOUHK.cjs → chunk-IH5WN5JP.cjs} +31 -26
  17. package/dist/chunk-IH5WN5JP.cjs.map +1 -0
  18. package/dist/{chunk-QXHLM7SS.cjs → chunk-LDMYNYFC.cjs} +42 -33
  19. package/dist/chunk-LDMYNYFC.cjs.map +1 -0
  20. package/dist/{chunk-ANJYKQAA.cjs → chunk-MBU4Y22O.cjs} +3 -3
  21. package/dist/{chunk-ANJYKQAA.cjs.map → chunk-MBU4Y22O.cjs.map} +1 -1
  22. package/dist/{chunk-L6DPISFT.js → chunk-NBEXJ25Z.js} +24 -19
  23. package/dist/{chunk-L6DPISFT.js.map → chunk-NBEXJ25Z.js.map} +1 -1
  24. package/dist/{chunk-LE6ZUVCO.js → chunk-PB3PMDKV.js} +2 -2
  25. package/dist/{chunk-NOYMFNSU.js → chunk-SJWKMZEJ.js} +33 -12
  26. package/dist/chunk-SJWKMZEJ.js.map +1 -0
  27. package/dist/{chunk-XERD2YCJ.cjs → chunk-WROBL3DR.cjs} +32 -11
  28. package/dist/chunk-WROBL3DR.cjs.map +1 -0
  29. package/dist/design-store.cjs +0 -1
  30. package/dist/design-store.cjs.map +1 -1
  31. package/dist/design-store.js +0 -1
  32. package/dist/design-store.js.map +1 -1
  33. package/dist/engine.cjs +64 -96
  34. package/dist/engine.cjs.map +1 -1
  35. package/dist/engine.d.cts +7 -7
  36. package/dist/engine.d.ts +7 -7
  37. package/dist/engine.js +72 -104
  38. package/dist/engine.js.map +1 -1
  39. package/dist/index.cjs +3 -4
  40. package/dist/index.cjs.map +1 -1
  41. package/dist/index.js +2 -3
  42. package/dist/menu-content.cjs +18 -19
  43. package/dist/menu-content.cjs.map +1 -1
  44. package/dist/menu-content.js +4 -5
  45. package/dist/menu-content.js.map +1 -1
  46. package/dist/menu-inspect.cjs +0 -1
  47. package/dist/menu-inspect.cjs.map +1 -1
  48. package/dist/menu-inspect.js +0 -1
  49. package/dist/menu-inspect.js.map +1 -1
  50. package/dist/model.cjs +4 -5
  51. package/dist/model.cjs.map +1 -1
  52. package/dist/model.js +3 -4
  53. package/dist/react.cjs +52 -44
  54. package/dist/react.cjs.map +1 -1
  55. package/dist/react.js +30 -22
  56. package/dist/react.js.map +1 -1
  57. package/package.json +6 -6
  58. package/dist/chunk-7VDSMZWI.cjs.map +0 -1
  59. package/dist/chunk-CUODNUAD.cjs +0 -24
  60. package/dist/chunk-CUODNUAD.cjs.map +0 -1
  61. package/dist/chunk-ECKA474B.js.map +0 -1
  62. package/dist/chunk-EIP5YS4Y.js.map +0 -1
  63. package/dist/chunk-NOYMFNSU.js.map +0 -1
  64. package/dist/chunk-PE3ZHHM5.js +0 -24
  65. package/dist/chunk-PE3ZHHM5.js.map +0 -1
  66. package/dist/chunk-QXHLM7SS.cjs.map +0 -1
  67. package/dist/chunk-SWEWOUHK.cjs.map +0 -1
  68. package/dist/chunk-TSOUI723.cjs.map +0 -1
  69. package/dist/chunk-XERD2YCJ.cjs.map +0 -1
  70. /package/dist/{chunk-LE6ZUVCO.js.map → chunk-PB3PMDKV.js.map} +0 -0
@@ -1,17 +1,23 @@
1
1
  "use client";
2
- import {
3
- __reExport
4
- } from "./chunk-PE3ZHHM5.js";
5
2
 
6
3
  // src/engine/utils/menu-deadline.ts
7
- var menu_deadline_exports = {};
8
- __reExport(menu_deadline_exports, menu_deadline_star);
9
- import * as menu_deadline_star from "@ai-matrx/chat/context-menu/utils/menu-deadline";
4
+ import {
5
+ MENU_LIBRARY_DEADLINE_MS,
6
+ MenuLibraryTimeoutError,
7
+ withMenuDeadline
8
+ } from "@ai-matrx/chat/context-menu/utils/menu-deadline";
10
9
 
11
10
  // src/engine/model/requirement-gate.ts
12
- var requirement_gate_exports = {};
13
- __reExport(requirement_gate_exports, requirement_gate_star);
14
- import * as requirement_gate_star from "@ai-matrx/chat/context-menu/model/requirement-gate";
11
+ import {
12
+ GLOBAL_SCOPE,
13
+ buildAvailableKeys,
14
+ decideOffer,
15
+ domainOfSurfaceName,
16
+ readMenuScope,
17
+ requirementsOf,
18
+ scopeReaches,
19
+ writeMenuScope
20
+ } from "@ai-matrx/chat/context-menu/model/requirement-gate";
15
21
 
16
22
  // src/engine/utils/already-here.ts
17
23
  var SAVE_INTO_WHERE_YOU_ARE = [
@@ -186,8 +192,17 @@ var MANAGED_CONTEXT_MENU_AGENT_CONFIG = {
186
192
  };
187
193
 
188
194
  export {
189
- menu_deadline_exports,
190
- requirement_gate_exports,
195
+ MENU_LIBRARY_DEADLINE_MS,
196
+ MenuLibraryTimeoutError,
197
+ withMenuDeadline,
198
+ GLOBAL_SCOPE,
199
+ buildAvailableKeys,
200
+ decideOffer,
201
+ domainOfSurfaceName,
202
+ readMenuScope,
203
+ requirementsOf,
204
+ scopeReaches,
205
+ writeMenuScope,
191
206
  actionsAlreadyHere,
192
207
  buildJsonMenuSection,
193
208
  jsonSectionLabel,
@@ -197,4 +212,4 @@ export {
197
212
  fieldPreview,
198
213
  MANAGED_CONTEXT_MENU_AGENT_CONFIG
199
214
  };
200
- //# sourceMappingURL=chunk-EIP5YS4Y.js.map
215
+ //# sourceMappingURL=chunk-HJU3RU2B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/engine/utils/menu-deadline.ts","../src/engine/model/requirement-gate.ts","../src/engine/utils/already-here.ts","../src/engine/utils/json-menu-actions.ts","../src/engine/utils/field-menu-header.ts","../src/engine/managed-agent-launch.ts"],"sourcesContent":["// Named, never `export *`: the bundler (esbuild) cannot see through a nested\n// `export * from \"<external>\"`, so the names went missing from the ESM entry and\n// every internal reader went through a runtime namespace copy (a TDZ under ts-jest).\nexport {\n MENU_LIBRARY_DEADLINE_MS,\n MenuLibraryTimeoutError,\n withMenuDeadline,\n} from \"@ai-matrx/chat/context-menu/utils/menu-deadline\";\n","// Named, never `export *`: the bundler (esbuild) cannot see through a nested\n// `export * from \"<external>\"`, so the names went missing from the ESM entry and\n// every internal reader went through a runtime namespace copy (a TDZ under ts-jest).\nexport {\n GLOBAL_SCOPE,\n buildAvailableKeys,\n decideOffer,\n domainOfSurfaceName,\n readMenuScope,\n requirementsOf,\n scopeReaches,\n writeMenuScope,\n} from \"@ai-matrx/chat/context-menu/model/requirement-gate\";\nexport type {\n AvailableKeysArgs,\n GateableItem,\n MenuScope,\n MenuScopeLevel,\n OfferContext,\n OfferDecision,\n OfferRefusal,\n} from \"@ai-matrx/chat/context-menu/model/requirement-gate\";\n","// features/context-menu-v3/utils/already-here.ts\n//\n// ACTIONS THAT TARGET THE THING YOU ARE ALREADY IN ARE ABSENT (page-pass\n// 2026-09-27, /notes/<id>): the menu inside a note offered \"Save to Notes\", and\n// the menu inside the editor offered \"Edit content\" and \"Open in full-screen\n// editor\". Each rich-document action id listed here is excluded for the menu\n// instance that is already that place.\n\nexport interface WhereTheMenuIs {\n /** The rich-document source type (`note`, `task`, `chat-message`, `raw`, …). */\n sourceType: string;\n /** The registry surface the menu belongs to. */\n surfaceName?: string | null | undefined;\n /** The menu wraps an editor (EditableContextMenu). */\n isEditable: boolean;\n}\n\n/** \"Save to X\" where the menu already IS an X. */\nconst SAVE_INTO_WHERE_YOU_ARE: ReadonlyArray<{ sourceType: string; surface: string; actionId: string }> = [\n { sourceType: \"note\", surface: \"matrx-user/notes\", actionId: \"save-to-notes\" },\n { sourceType: \"task\", surface: \"matrx-user/tasks\", actionId: \"save-to-task\" },\n];\n\n/** Opening a window from inside that same window (surface-only rules). */\nconst OPEN_WHERE_YOU_ARE: ReadonlyArray<{ surface: string; actionId: string }> = [\n // The Feedback window's menus offered \"Submit feedback\" — reopening itself.\n { surface: \"matrx-user/feedback\", actionId: \"submit-feedback\" },\n];\n\n/** Opening an editor from inside the editor. */\nconst EDITOR_DOORS = [\"edit\", \"open-fullscreen-editor\"] as const;\n\nexport function actionsAlreadyHere(where: WhereTheMenuIs): string[] {\n const out: string[] = [];\n for (const rule of SAVE_INTO_WHERE_YOU_ARE) {\n if (where.sourceType === rule.sourceType || where.surfaceName === rule.surface) out.push(rule.actionId);\n }\n for (const rule of OPEN_WHERE_YOU_ARE) {\n if (where.surfaceName === rule.surface) out.push(rule.actionId);\n }\n // On a record's OWN page (a note's source on the notes surface) the page is\n // its editor — its Write / Read toggle is the door — so the preview offers no\n // second one (live 2026-09-27, /notes/<id> in Read mode). Editor and preview\n // menus now carry the same set.\n // Matched by the SOURCE as well as the surface: live, the Read-mode menu on\n // /notes/<id> carried the note source under a surface name other than the\n // notes one, so a surface-only match missed it.\n const ownPage = SAVE_INTO_WHERE_YOU_ARE.some(\n (rule) => where.sourceType === rule.sourceType || where.surfaceName === rule.surface,\n );\n if (where.isEditable || ownPage) out.push(...EDITOR_DOORS);\n return [...new Set(out)];\n}\n","// features/context-menu-v3/utils/json-menu-actions.ts\n//\n// The JSON section of the universal context menu. Highlight something that\n// looks like JSON — fenced or bare — and the menu offers the things you\n// actually want for JSON: condense it, squeeze it onto one line, open it back\n// up, sort its keys, add or strip the code fence.\n//\n// Design rules:\n// - The menu ASKS the engine, it does not sniff. Detection and formatting\n// both come from `lib/json-format` (the shared primitive), so the notes\n// cleanup pass and this menu can never disagree about what \"condensed\"\n// means.\n// - Every action carries a REAL before/after hint (\"13 lines -> 3 lines\"),\n// computed from the actual formatted output. No action promises a change\n// it will not make: one that would be a no-op is dropped.\n// - On an EDITABLE surface the action rewrites the text in place (the exact\n// selection when there is one, the whole field otherwise). On a read-only\n// surface it copies the formatted text instead — the same intent, the only\n// verb available.\n// - Unparseable-but-JSON-shaped text still produces a section: one disabled\n// row carrying the parse error. Silently showing nothing on a selection\n// the user clearly believes is JSON is the \"fake menu\" failure this\n// codebase kills on sight.\n//\n// Pure except for the two side-effect callbacks handed in by the hook.\n\nimport { detectJson } from \"@ai-matrx/kit/json-format\";\nimport { formatJsonText } from \"@ai-matrx/kit/json-format\";\nimport type {\n JsonDetection,\n JsonFenceMode,\n JsonFormatStyle,\n} from \"@ai-matrx/kit/json-format\";\n\nexport interface JsonMenuAction {\n id: string;\n label: string;\n /** Real before -> after size, e.g. \"13 lines -> 3 lines\". */\n hint?: string | undefined;\n disabled?: boolean | undefined;\n run: () => void | Promise<void>;\n}\n\nexport interface JsonMenuSection {\n /** The detection that produced this section (null when the text isn't JSON-ish). */\n detection: JsonDetection;\n /** True when the surface will rewrite text; false when actions copy instead. */\n writes: boolean;\n actions: JsonMenuAction[];\n}\n\nexport interface BuildJsonMenuActionsParams {\n /** The text the menu is acting on (selection, else resolved content). */\n text: string;\n /** True when the action should REWRITE the text rather than copy it. */\n canWrite: boolean;\n /** Rewrite the acted-on text with `next`. Only called when `canWrite`. */\n onReplace: (next: string) => void;\n /** Copy `next` to the clipboard. Used on read-only surfaces. */\n onCopy: (next: string) => void | Promise<void>;\n}\n\nfunction lineCount(text: string): number {\n let n = text === \"\" ? 0 : 1;\n for (let i = 0; i < text.length; i++) if (text[i] === \"\\n\") n++;\n return n;\n}\n\nfunction sizeHint(before: string, after: string): string {\n const b = lineCount(before);\n const a = lineCount(after);\n if (b !== a) {\n return `${b} line${b !== 1 ? \"s\" : \"\"} -> ${a} line${a !== 1 ? \"s\" : \"\"}`;\n }\n return `${before.length} -> ${after.length} chars`;\n}\n\n/**\n * The style that preserves the user's rough layout — used by actions whose\n * point is NOT re-layout (sort keys, fence toggling). Re-printing a hand-\n * formatted blob as something else because the user asked to sort its keys is\n * a change they did not request.\n */\nfunction shapePreservingStyle(detection: JsonDetection): JsonFormatStyle {\n return detection.payload.includes(\"\\n\") ? \"pretty\" : \"minify\";\n}\n\n/**\n * Build the JSON section for the given text, or `null` when the text is not\n * JSON-shaped at all (the overwhelmingly common case — the section simply\n * does not render).\n */\nexport function buildJsonMenuSection(\n params: BuildJsonMenuActionsParams,\n): JsonMenuSection | null {\n const { text, canWrite, onReplace, onCopy } = params;\n if (!text.trim()) return null;\n\n const detection = detectJson(text);\n if (!detection.looksLikeJson) return null;\n\n // JSON-shaped but broken: one honest, disabled row.\n if (!detection.ok) {\n return {\n detection,\n writes: false,\n actions: [\n {\n id: \"json-invalid\",\n label: \"Invalid JSON\",\n hint: detection.error,\n disabled: true,\n run: () => {},\n },\n ],\n };\n }\n\n const apply = (next: string) => {\n if (canWrite) onReplace(next);\n else void onCopy(next);\n };\n\n const verb = canWrite ? \"\" : \"Copy \";\n const actions: JsonMenuAction[] = [];\n\n const addFormat = (\n id: string,\n label: string,\n style: JsonFormatStyle,\n fence: JsonFenceMode = \"preserve\",\n sortKeys = false,\n ) => {\n const result = formatJsonText(text, { style, fence, sortKeys });\n if (!result.ok) return;\n // Copying an identical string is still useful; rewriting it is not.\n if (canWrite && !result.changed) return;\n actions.push({\n id,\n label,\n hint: result.changed ? sizeHint(text, result.text) : undefined,\n run: () => apply(result.text),\n });\n };\n\n addFormat(\"json-condense\", `${verb}Condense`, \"compact\");\n addFormat(\"json-minify\", `${verb}Minify (one line)`, \"minify\");\n addFormat(\"json-expand\", `${verb}Expand`, \"pretty\");\n addFormat(\n \"json-sort-keys\",\n `${verb}Sort keys A-Z`,\n shapePreservingStyle(detection),\n \"preserve\",\n true,\n );\n\n // Fence toggle — only the direction that applies.\n if (detection.fence) {\n addFormat(\n \"json-strip-fence\",\n `${verb}Remove code fence`,\n shapePreservingStyle(detection),\n \"strip\",\n );\n } else {\n addFormat(\n \"json-add-fence\",\n `${verb}Wrap in json code fence`,\n shapePreservingStyle(detection),\n \"add\",\n );\n }\n\n // An editable surface still benefits from a plain \"give me the one-liner on\n // the clipboard\" that does NOT touch the document.\n if (canWrite) {\n const minified = formatJsonText(text, { style: \"minify\", fence: \"strip\" });\n if (minified.ok) {\n actions.push({\n id: \"json-copy-minified\",\n label: \"Copy minified\",\n hint: sizeHint(text, minified.text),\n run: () => void onCopy(minified.text),\n });\n }\n }\n\n if (actions.length === 0) return null;\n return { detection, writes: canWrite, actions };\n}\n\n/** Short label for the submenu trigger, e.g. \"JSON · 13 lines\". */\nexport function jsonSectionLabel(section: JsonMenuSection): string {\n const { detection } = section;\n if (!detection.ok) return \"JSON (invalid)\";\n const n = detection.lineCount;\n const kind = detection.root === \"array\" ? \"array\" : \"object\";\n return `JSON ${kind} · ${n} line${n !== 1 ? \"s\" : \"\"}`;\n}\n","/**\n * THE MENU OPENED IN A FIELD NAMES THE FIELD (page-pass 2026-09-27,\n * /chat/message-templates/<id>). Right-clicking the Body box headed the menu\n * \"Content: {{reply.body}}\" — the field's raw text. The header is now the\n * field's own name (\"Body\"), with a short plain preview only when it helps:\n * merge fields read as their names (\"Reply body\"), and text that is ONLY merge\n * fields gets no preview (the name already says it). Pure, so it is tested\n * without a DOM menu.\n */\n\n/** A field's name, the way a person reads it on screen. `null` when it has none. */\nexport function fieldLabelOf(element: Element | null | undefined): string | null {\n if (!element) return null;\n const clean = (s: string | null | undefined) => (s ?? \"\").replace(/\\s+/g, \" \").replace(/\\s*\\*$/, \"\").trim() || null;\n const aria = clean(element.getAttribute(\"aria-label\"));\n if (aria) return aria;\n const labelledBy = element.getAttribute(\"aria-labelledby\");\n if (labelledBy) {\n const text = labelledBy\n .split(/\\s+/)\n .map((id) => element.ownerDocument?.getElementById(id)?.textContent ?? \"\")\n .join(\" \");\n if (clean(text)) return clean(text);\n }\n const labels = (element as HTMLInputElement).labels;\n if (labels && labels.length > 0) {\n const text = clean(labels[0]?.textContent);\n if (text) return text;\n }\n const id = element.getAttribute(\"id\");\n if (id && element.ownerDocument) {\n const label = element.ownerDocument.querySelector(`label[for=\"${CSS.escape(id)}\"]`);\n if (clean(label?.textContent)) return clean(label?.textContent);\n }\n return null;\n}\n\nconst MERGE_FIELD = /\\{\\{\\s*([^{}]+?)\\s*\\}\\}/g;\n\n/** \"reply.body\" / \"reply_body\" → \"Reply body\". */\nexport function mergeFieldName(token: string): string {\n const words = token.replace(/[._-]+/g, \" \").replace(/([a-z])([A-Z])/g, \"$1 $2\").trim().toLowerCase();\n return words ? words[0]!.toUpperCase() + words.slice(1) : token;\n}\n\nexport const FIELD_PREVIEW_MAX = 60;\n\n/**\n * The preview beside the field's name: plain words with merge fields named,\n * clipped; `\"\"` when the text holds nothing but merge fields (or nothing).\n */\nexport function fieldPreview(text: string): string {\n const withoutFields = text.replace(MERGE_FIELD, \"\").replace(/[\\s\\p{P}]+/gu, \"\");\n if (!withoutFields) return \"\";\n const readable = text.replace(MERGE_FIELD, (_, name: string) => mergeFieldName(name)).replace(/\\s+/g, \" \").trim();\n return readable.length > FIELD_PREVIEW_MAX ? `${readable.slice(0, FIELD_PREVIEW_MAX - 1).trimEnd()}…` : readable;\n}\n","import type { AgentExecutionConfig } from \"@ai-matrx/chat/agents/types/agent-execution-config.types\";\n\n/**\n * Framework-owned launch defaults for agents listed in the managed \"Agents\"\n * context-menu section. Shortcuts do not use this config: their persisted\n * execution definitions remain authoritative.\n */\nexport const MANAGED_CONTEXT_MENU_AGENT_CONFIG = {\n displayMode: \"flexible-panel\",\n allowChat: true,\n showVariablePanel: true,\n} as const satisfies Pick<\n AgentExecutionConfig,\n \"displayMode\" | \"allowChat\" | \"showVariablePanel\"\n>;\n"],"mappings":"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","names":["id"]}
@@ -8,13 +8,18 @@
8
8
 
9
9
 
10
10
 
11
- var _chunkTSOUI723cjs = require('./chunk-TSOUI723.cjs');
12
11
 
13
12
 
14
13
 
14
+ var _chunk7TIZAANUcjs = require('./chunk-7TIZAANU.cjs');
15
15
 
16
16
 
17
- var _chunkXERD2YCJcjs = require('./chunk-XERD2YCJ.cjs');
17
+
18
+
19
+
20
+
21
+
22
+ var _chunkWROBL3DRcjs = require('./chunk-WROBL3DR.cjs');
18
23
 
19
24
 
20
25
 
@@ -166,7 +171,7 @@ var SPECIFICITY = {
166
171
  global: 1
167
172
  };
168
173
  function specificityOf(item) {
169
- return SPECIFICITY[(0, _chunkTSOUI723cjs.requirement_gate_exports.readMenuScope)({ id: "", surfaceName: _nullishCoalesce(item.surfaceName, () => ( null)) }).level];
174
+ return SPECIFICITY[_chunk7TIZAANUcjs.readMenuScope.call(void 0, { id: "", surfaceName: _nullishCoalesce(item.surfaceName, () => ( null)) }).level];
170
175
  }
171
176
  function beats(a, b) {
172
177
  const byOwner = SCOPE_PRIORITY[a.scopeLevel] - SCOPE_PRIORITY[b.scopeLevel];
@@ -215,15 +220,15 @@ function buildCategoryGroups(args) {
215
220
  entryType: "content_block",
216
221
  scopeLevel: _scope.resolveRowScope.call(void 0, b)
217
222
  }));
218
- const offerCtx = _chunkXERD2YCJcjs.compact.call(void 0, {
223
+ const offerCtx = _chunkWROBL3DRcjs.compact.call(void 0, {
219
224
  surfaceName,
220
225
  availableKeys,
221
226
  excludedItemIds
222
227
  });
223
228
  const filteredShortcuts = scopedShortcuts.filter((s) => {
224
- if (!(0, _chunkTSOUI723cjs.requirement_gate_exports.decideOffer)(s, offerCtx).offered) return false;
229
+ if (!_chunk7TIZAANUcjs.decideOffer.call(void 0, s, offerCtx).offered) return false;
225
230
  if (hasSelection) return true;
226
- return !(0, _chunkTSOUI723cjs.requirement_gate_exports.requirementsOf)(s).some((key) => SELECTION_DEPENDENT_KEYS.has(key));
231
+ return !_chunk7TIZAANUcjs.requirementsOf.call(void 0, s).some((key) => SELECTION_DEPENDENT_KEYS.has(key));
227
232
  });
228
233
  const filteredBlocks = scopedBlocks.filter(
229
234
  (b) => !_optionalChain([excludedItemIds, 'optionalAccess', _5 => _5.has, 'call', _6 => _6(b.id)])
@@ -300,7 +305,7 @@ function useUnifiedAgentContextMenu(args) {
300
305
  if (!enabled || placementTypes.length === 0) return;
301
306
  try {
302
307
  setError(null);
303
- await (0, _chunkTSOUI723cjs.menu_deadline_exports.withMenuDeadline)(
308
+ await _chunk7TIZAANUcjs.withMenuDeadline.call(void 0,
304
309
  dispatch(_thunks.fetchUnifiedMenu.call(void 0, { scope, scopeId })).unwrap(),
305
310
  "Loading the menu's AI actions"
306
311
  );
@@ -351,7 +356,7 @@ var __baselinemanifest = require('@ai-matrx/chat/surfaces/manifests/_baseline.ma
351
356
 
352
357
 
353
358
  var _SurfaceRuntimeContext = require('@ai-matrx/chat/surfaces/runtime/SurfaceRuntimeContext');
354
- var SKIP_MERGE_KEYS = /* @__PURE__ */ new Set([_chunkXERD2YCJcjs.types_exports.CONTEXT_MENU_ENTITY_KEY, _chunkXERD2YCJcjs.types_exports.CONTEXT_MENU_HEADING_KEY]);
359
+ var SKIP_MERGE_KEYS = /* @__PURE__ */ new Set([_chunkWROBL3DRcjs.CONTEXT_MENU_ENTITY_KEY, _chunkWROBL3DRcjs.CONTEXT_MENU_HEADING_KEY]);
355
360
  var isDev = process.env.NODE_ENV !== "production";
356
361
  function strOf(value) {
357
362
  return typeof value === "string" ? value : "";
@@ -556,7 +561,7 @@ function buildSelectionWriteBack(args) {
556
561
  const value = fieldEl.value;
557
562
  const next = value.slice(0, start) + insert + value.slice(end);
558
563
  if (onTextReplace) onTextReplace(next);
559
- else (0, _chunkXERD2YCJcjs.selection_tracking_exports.spliceInputValue)(fieldEl, start, end, insert);
564
+ else _chunkWROBL3DRcjs.spliceInputValue.call(void 0, fieldEl, start, end, insert);
560
565
  };
561
566
  return {
562
567
  originalText,
@@ -777,7 +782,7 @@ function useContextMenuActions(props) {
777
782
  });
778
783
  const scopeKeySignature = Object.keys(scope).sort().join("|");
779
784
  const availableKeys = _react.useMemo.call(void 0,
780
- () => (0, _chunkTSOUI723cjs.requirement_gate_exports.buildAvailableKeys)(_chunkXERD2YCJcjs.compact.call(void 0, {
785
+ () => _chunk7TIZAANUcjs.buildAvailableKeys.call(void 0, _chunkWROBL3DRcjs.compact.call(void 0, {
781
786
  baselineValueNames: __baselinemanifest.BASELINE_VALUE_NAMES,
782
787
  declaredValueNames: surfaceName ? _optionalChain([_chunkPUSFH5CVcjs.getContextMenuHost.call(void 0, ), 'access', _17 => _17.getSurfaceManifest, 'call', _18 => _18(surfaceName), 'optionalAccess', _19 => _19.values, 'access', _20 => _20.map, 'call', _21 => _21((v) => v.name)]) : void 0,
783
788
  // `scope` is rebuilt every render but its KEY SET is stable for an
@@ -871,13 +876,13 @@ function useContextMenuActions(props) {
871
876
  if (textAgentCallbacks) richDocCtx.callbacks = textAgentCallbacks;
872
877
  const excludedRichActionIds = [
873
878
  ..._nullishCoalesce(props.excludedRichActions, () => ( [])),
874
- ..._chunkTSOUI723cjs.actionsAlreadyHere.call(void 0, {
879
+ ..._chunk7TIZAANUcjs.actionsAlreadyHere.call(void 0, {
875
880
  sourceType: richDocSource.type,
876
881
  surfaceName,
877
882
  isEditable: Boolean(isEditable)
878
883
  })
879
884
  ];
880
- const richActions = actionText.source !== "none" ? _provider.resolveActions.call(void 0, richDocCtx, _chunkXERD2YCJcjs.compact.call(void 0, {
885
+ const richActions = actionText.source !== "none" ? _provider.resolveActions.call(void 0, richDocCtx, _chunkWROBL3DRcjs.compact.call(void 0, {
881
886
  exclude: excludedRichActionIds,
882
887
  extra: props.extraRichActions
883
888
  })) : [];
@@ -940,7 +945,7 @@ function useContextMenuActions(props) {
940
945
  element.value.substring(0, start) + element.value.substring(end)
941
946
  );
942
947
  } else {
943
- (0, _chunkXERD2YCJcjs.selection_tracking_exports.spliceInputValue)(element, start, end, "");
948
+ _chunkWROBL3DRcjs.spliceInputValue.call(void 0, element, start, end, "");
944
949
  }
945
950
  };
946
951
  const handlePaste = async () => {
@@ -960,12 +965,12 @@ function useContextMenuActions(props) {
960
965
  element.value.substring(0, start) + text + element.value.substring(end)
961
966
  );
962
967
  } else {
963
- (0, _chunkXERD2YCJcjs.selection_tracking_exports.spliceInputValue)(element, start, end, text);
968
+ _chunkWROBL3DRcjs.spliceInputValue.call(void 0, element, start, end, text);
964
969
  }
965
970
  };
966
971
  const editableTarget = isEditable && _optionalChain([selectionRange, 'optionalAccess', _28 => _28.type]) === "editable" ? selectionRange.element : null;
967
972
  const canWriteJson = editableTarget instanceof HTMLTextAreaElement || editableTarget instanceof HTMLInputElement;
968
- const jsonSection = _chunkTSOUI723cjs.buildJsonMenuSection.call(void 0, {
973
+ const jsonSection = _chunk7TIZAANUcjs.buildJsonMenuSection.call(void 0, {
969
974
  text: actionText.text,
970
975
  canWrite: canWriteJson,
971
976
  onReplace: (next) => {
@@ -980,7 +985,7 @@ function useContextMenuActions(props) {
980
985
  element.value.substring(0, start) + next + element.value.substring(end)
981
986
  );
982
987
  } else {
983
- (0, _chunkXERD2YCJcjs.selection_tracking_exports.spliceInputValue)(element, start, end, next);
988
+ _chunkWROBL3DRcjs.spliceInputValue.call(void 0, element, start, end, next);
984
989
  }
985
990
  },
986
991
  onCopy: async (next) => {
@@ -1109,7 +1114,7 @@ function useContextMenuActions(props) {
1109
1114
  surfaceKey: `${sourceFeature}:${entry.id}`,
1110
1115
  sourceFeature,
1111
1116
  config: { displayMode: resultDisplay },
1112
- runtime: _chunkXERD2YCJcjs.compact.call(void 0, {
1117
+ runtime: _chunkWROBL3DRcjs.compact.call(void 0, {
1113
1118
  originalText: actionText.text,
1114
1119
  surfaceName,
1115
1120
  // Editable surfaces: let the agent stream widget_text_* edits
@@ -1134,8 +1139,8 @@ function useContextMenuActions(props) {
1134
1139
  sourceFeature,
1135
1140
  // Managed entries share the WindowPanel default. autoRun is deliberately
1136
1141
  // absent so the safe open-and-wait default remains authoritative.
1137
- config: _chunkTSOUI723cjs.MANAGED_CONTEXT_MENU_AGENT_CONFIG,
1138
- runtime: _chunkXERD2YCJcjs.compact.call(void 0, {
1142
+ config: _chunk7TIZAANUcjs.MANAGED_CONTEXT_MENU_AGENT_CONFIG,
1143
+ runtime: _chunkWROBL3DRcjs.compact.call(void 0, {
1139
1144
  applicationScope: scope,
1140
1145
  originalText: actionText.text,
1141
1146
  surfaceName,
@@ -1382,11 +1387,11 @@ ${pick.fence}
1382
1387
  {
1383
1388
  kind: "item",
1384
1389
  id: "surface:version",
1385
- label: `Menu v3.${_chunkXERD2YCJcjs.types_exports.CANONICAL_MENU_VERSION_V3} \xB7 V${menuVersion}`,
1390
+ label: `Menu v3.${_chunkWROBL3DRcjs.CANONICAL_MENU_VERSION_V3} \xB7 V${menuVersion}`,
1386
1391
  description: "Menu revision \xB7 surface wiring version",
1387
1392
  icon: _lucidereact.Info,
1388
1393
  onSelect: () => copyText(
1389
- `${_nullishCoalesce(resolvedSurfaceName, () => ( "(no surface)"))} \xB7 v3.${_chunkXERD2YCJcjs.types_exports.CANONICAL_MENU_VERSION_V3} \xB7 V${menuVersion}`
1394
+ `${_nullishCoalesce(resolvedSurfaceName, () => ( "(no surface)"))} \xB7 v3.${_chunkWROBL3DRcjs.CANONICAL_MENU_VERSION_V3} \xB7 V${menuVersion}`
1390
1395
  )
1391
1396
  }
1392
1397
  ] : []
@@ -1424,7 +1429,7 @@ ${pick.fence}
1424
1429
  actionText,
1425
1430
  // A textarea/input, or a contenteditable field (chip / rich editor), names
1426
1431
  // itself in the header — never "Content: {{reply.body}}".
1427
- fieldLabel: isEditable && selectionRange ? _chunkTSOUI723cjs.fieldLabelOf.call(void 0, selectionRange.element) : null,
1432
+ fieldLabel: isEditable && selectionRange ? _chunk7TIZAANUcjs.fieldLabelOf.call(void 0, selectionRange.element) : null,
1428
1433
  jsonSection,
1429
1434
  resolvedPlacementMode,
1430
1435
  categoryGroups,
@@ -1666,7 +1671,7 @@ function categoryGroupNode(group, m) {
1666
1671
  const isDisabled = entry.entryType === "agent_shortcut" && !entry.agentId;
1667
1672
  const hint = (
1668
1673
  // Advertised only when the shell's key listener can run it (key-combo.ts).
1669
- entry.entryType === "agent_shortcut" && entry.keyboardShortcut && _chunkXERD2YCJcjs.parseKeyCombo.call(void 0, entry.keyboardShortcut) ? entry.keyboardShortcut : isDisabled ? "Not configured" : void 0
1674
+ entry.entryType === "agent_shortcut" && entry.keyboardShortcut && _chunkWROBL3DRcjs.parseKeyCombo.call(void 0, entry.keyboardShortcut) ? entry.keyboardShortcut : isDisabled ? "Not configured" : void 0
1670
1675
  );
1671
1676
  return {
1672
1677
  kind: "item",
@@ -1862,7 +1867,7 @@ function buildMenuModel(m, props) {
1862
1867
  const json = m.jsonSection ? {
1863
1868
  kind: "submenu",
1864
1869
  id: "json",
1865
- label: _chunkTSOUI723cjs.jsonSectionLabel.call(void 0, m.jsonSection),
1870
+ label: _chunk7TIZAANUcjs.jsonSectionLabel.call(void 0, m.jsonSection),
1866
1871
  icon: _lucidereact.Braces,
1867
1872
  iconClassName: "text-amber-500",
1868
1873
  width: "w-72",
@@ -2513,7 +2518,7 @@ function menuHeader(actionText, fieldLabel, message) {
2513
2518
  return { content: "", contentLabel: `${who}${when}` };
2514
2519
  }
2515
2520
  if (fieldLabel && actionText.source !== "selection") {
2516
- return { content: _chunkTSOUI723cjs.fieldPreview.call(void 0, headerPreview(_turntruststrip.stripTurnTrust.call(void 0, actionText.text))), contentLabel: fieldLabel };
2521
+ return { content: _chunk7TIZAANUcjs.fieldPreview.call(void 0, headerPreview(_turntruststrip.stripTurnTrust.call(void 0, actionText.text))), contentLabel: fieldLabel };
2517
2522
  }
2518
2523
  return { content: menuHeaderContent(actionText), contentLabel: null };
2519
2524
  }
@@ -2570,4 +2575,4 @@ function menuEngineRevision(drawn, header) {
2570
2575
 
2571
2576
 
2572
2577
  exports.editorTextAgentCallbacks = editorTextAgentCallbacks; exports.toast = toast; exports.hasEditorInsertTarget = hasEditorInsertTarget; exports.insertIntoEditor = insertIntoEditor; exports.ownParagraph = ownParagraph; exports.buildCategoryGroups = buildCategoryGroups; exports.useUnifiedAgentContextMenu = useUnifiedAgentContextMenu; exports.resolveApplicationScope = resolveApplicationScope; exports.resolveActionText = resolveActionText; exports.hasActionableContent = hasActionableContent; exports.detectInertMenu = detectInertMenu; exports.auditSurfaceScope = auditSurfaceScope; exports.reportMenuDiagnostics = reportMenuDiagnostics; exports.buildSelectionWriteBack = buildSelectionWriteBack; exports.DEFAULT_PLACEMENT_MODE = DEFAULT_PLACEMENT_MODE; exports.ALL_DB_PLACEMENTS = ALL_DB_PLACEMENTS; exports.PLACEMENT_LABEL_OVERRIDE = PLACEMENT_LABEL_OVERRIDE; exports.PLACEMENT_COLOR = PLACEMENT_COLOR; exports.getPlacementIcon = getPlacementIcon; exports.getPlacementLabel = getPlacementLabel; exports.resolveIcon = resolveIcon; exports.groupsByPlacement = groupsByPlacement; exports.hasItemsRecursive = hasItemsRecursive; exports.resolveRichActionView = resolveRichActionView; exports.useContextMenuActions = useContextMenuActions; exports.hasActionable = hasActionable; exports.liftPrimarySections = liftPrimarySections; exports.registryTreeNodes = registryTreeNodes; exports.buildMenuModel = buildMenuModel; exports.contextMenuHostOf = contextMenuHostOf; exports.contextMenuActionsFromModel = contextMenuActionsFromModel; exports.contextMenuProvider = contextMenuProvider; exports.modelRevision = modelRevision; exports.menuHeaderContent = menuHeaderContent; exports.chatMessageSubject = chatMessageSubject; exports.menuHeader = menuHeader; exports.headerPreview = headerPreview; exports.namedHeader = namedHeader; exports.menuEngineRevision = menuEngineRevision;
2573
- //# sourceMappingURL=chunk-SWEWOUHK.cjs.map
2578
+ //# sourceMappingURL=chunk-IH5WN5JP.cjs.map