@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 +1 @@
1
- {"version":3,"sources":["/home/runner/work/aidream/aidream/apps/shared/context-menu/dist/engine.cjs","../src/engine/index.ts","../src/engine/utils/build-application-scope.ts","../src/engine/utils/availability.ts","../src/engine/utils/open-context-menu.ts","../src/engine/utils/resolveMarkdownContext.ts","../src/engine/regroup/engine-rows.ts","../src/engine/regroup/proposed-grouping.ts","../src/engine/proposed/proposed-arrangement.ts"],"names":["icon","registerAlchemyIcon"],"mappings":"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vF,IAAA;AAAwB,MAAA;AAA6D,IAAA;AACtF,IAAA;AACN,MAAA;AACW,MAAA;AACF,QAAA;AACG,QAAA;AACD,QAAA;AACA,QAAA;AACb,MAAA;AACF,IAAA;AACH,EAAA;AACiB,EAAA;AAKX,EAAA;AACW,IAAA;AACI,IAAA;AACT,IAAA;AACQ,IAAA;AACF,IAAA;AACjB,EAAA;AAK4B,EAAA;AAChB,IAAA;AACM,IAAA;AACnB,EAAA;AACqB,EAAA;AACA,EAAA;AACJ,EAAA;AACA,EAAA;AACG,EAAA;AACN,EAAA;AACA,EAAA;AACiB,EAAA;AACP,EAAA;AACR,EAAA;AACI,IAAA;AACJ,IAAA;AACC,IAAA;AACP,MAAA;AACW,MAAA;AACA,MAAA;AACZ,IAAA;AACW,MAAA;AAClB,IAAA;AACF,EAAA;AACkC,EAAA;AACb,EAAA;AAGC,EAAA;AACJ,EAAA;AACU,EAAA;AACH,EAAA;AACT,EAAA;AACC,IAAA;AACG,IAAA;AACC,IAAA;AACD,IAAA;AACA,MAAA;AACD,IAAA;AACF,MAAA;AACG,MAAA;AACC,MAAA;AACH,IAAA;AACA,MAAA;AACT,IAAA;AACY,MAAA;AACnB,IAAA;AACF,EAAA;AAEgB,EAAA;AACK,IAAA;AACD,IAAA;AACpB,EAAA;AACkB,EAAA;AACD,EAAA;AAGX,EAAA;AACU,EAAA;AACD,IAAA;AACI,IAAA;AACnB,EAAA;AACkB,EAAA;AACG,EAAA;AACH,EAAA;AACX,EAAA;AACT;ARmSuB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/aidream/aidream/apps/shared/context-menu/dist/engine.cjs","sourcesContent":[null,"/**\n * @ai-matrx/context-menu/engine — the context menu's logic, no components:\n * the menu types (the chat package's, plus the rich-document augmentation),\n * scope building, availability, grouping and arrangements, the record-menu\n * registry, table-row items, and THE HOST PORT (`configureContextMenuHost`).\n *\n * Components are `@ai-matrx/context-menu/react`. The heavy half (the menu\n * model, the engine hooks, the Alchemy provider, value resolution, editor\n * write-back) is `@ai-matrx/context-menu/model` — it loads with the menu body,\n * so this entry stays cheap for shell-reachable code.\n */\nexport * from \"./types\";\nexport * from \"./host/port\";\nexport * from \"./utils/build-application-scope\";\nexport * from \"./utils/availability\";\nexport * from \"./utils/open-context-menu\";\nexport * from \"./utils/selection-tracking\";\nexport * from \"./utils/menu-deadline\";\nexport * from \"./utils/resolveMarkdownContext\";\nexport * from \"./model/requirement-gate\";\nexport * from \"./table-row-item\";\nexport * from \"./regroup/grouping\";\nexport * from \"./regroup/engine-rows\";\nexport * from \"./regroup/proposed-grouping\";\nexport * from \"./record-menu-registry\";\nexport * from \"./proposed/proposed-arrangement\";\nexport * from \"./utils/already-here\";\nexport * from \"./utils/per-row-entity\";\nexport * from \"./utils/json-menu-actions\";\nexport * from \"./utils/join-extra-sections\";\nexport * from \"./utils/field-menu-header\";\nexport * from \"./utils/key-combo\";\nexport * from \"./utils/widget-handle\";\nexport * from \"./utils/table-at-target\";\nexport * from \"./region-trigger-attrs\";\nexport * from \"./managed-agent-launch\";\nexport * from \"./item/itemMenuToV3\";\nexport * from \"./selection-provider\";\n","export * from \"@ai-matrx/chat/context-menu/utils/build-application-scope\";\n","export * from \"@ai-matrx/chat/context-menu/utils/availability\";\n","/**\n * Opens the canonical context menu from an explicit overflow control.\n *\n * Touch surfaces cannot rely on a discoverable right-click. Dispatching the\n * same bubbling event keeps the overflow button on the exact desktop/mobile\n * ContextMenuV3 path instead of creating a second action menu.\n */\nexport function openContextMenuForElement(element: HTMLElement | null): void {\n if (!element) return;\n\n const rect = element.getBoundingClientRect();\n element.dispatchEvent(\n new MouseEvent(\"contextmenu\", {\n bubbles: true,\n cancelable: true,\n view: element.ownerDocument.defaultView ?? window,\n button: 2,\n buttons: 2,\n clientX: rect.left + rect.width / 2,\n clientY: rect.top + rect.height / 2,\n }),\n );\n}\n","export * from \"@ai-matrx/chat/context-menu/utils/resolveMarkdownContext\";\n","// features/context-menu-v3/regroup/engine-rows.ts\n//\n// The rows the context-menu ENGINE itself can contribute (model/menu-model.ts),\n// as the ids and categories `alchemy-provider.ts` gives them (`cm:<node id>`).\n// Together with the rich-document registry (`getAllActions()`) this is the full\n// inventory of universal menu rows; a surface's own rows (its extraSections)\n// are \"the page's own actions\" and are not listed here.\n//\n// Kept in step with menu-model.ts by hand; the regroup demo flags any `cm:` row\n// a live menu resolves that is missing here (\"not in the inventory\").\n\nimport type { ActionCategory } from \"@ai-matrx/alchemy/actions\";\n\nexport interface InventoryRow {\n id: string;\n label: string;\n category: ActionCategory;\n}\n\nexport const CONTEXT_MENU_ENGINE_ROWS: readonly InventoryRow[] = [\n { id: \"cm:copy\", label: \"Copy\", category: \"clipboard\" },\n { id: \"cm:cut\", label: \"Cut\", category: \"clipboard\" },\n { id: \"cm:paste\", label: \"Paste\", category: \"clipboard\" },\n { id: \"cm:undo\", label: \"Undo\", category: \"clipboard\" },\n { id: \"cm:redo\", label: \"Redo\", category: \"clipboard\" },\n { id: \"cm:find\", label: \"Find & Replace\", category: \"clipboard\" },\n { id: \"cm:speak\", label: \"Speak\", category: \"clipboard\" },\n { id: \"cm:listen\", label: \"Listen\", category: \"clipboard\" },\n { id: \"cm:copy-as\", label: \"Copy as\", category: \"clipboard\" },\n { id: \"cm:json\", label: \"JSON\", category: \"clipboard\" },\n { id: \"cm:select-all\", label: \"Select All\", category: \"edit\" },\n { id: \"cm:insert-reference\", label: \"Insert / Copy reference…\", category: \"edit\" },\n { id: \"cm:chat\", label: \"Chat\", category: \"app\" },\n { id: \"cm:view-history\", label: \"View History\", category: \"history\" },\n { id: \"cm:compare\", label: \"Compare\", category: \"app\" },\n { id: \"cm:export\", label: \"Export\", category: \"save\" },\n { id: \"cm:convert\", label: \"Convert\", category: \"save\" },\n { id: \"cm:attach\", label: \"Attach To\", category: \"share\" },\n { id: \"cm:share\", label: \"Share\", category: \"share\" },\n { id: \"cm:placement:ai-action\", label: \"AI Actions\", category: \"ai\" },\n { id: \"cm:placement:content-block\", label: \"Content blocks\", category: \"ai\" },\n { id: \"cm:placement:organization-tool\", label: \"Org Items\", category: \"ai\" },\n { id: \"cm:placement:user-tool\", label: \"My Items\", category: \"ai\" },\n { id: \"cm:placement:quick-action\", label: \"Quick actions (placement)\", category: \"ai\" },\n { id: \"cm:placement:bound-agent\", label: \"Agents\", category: \"ai\" },\n { id: \"cm:quick-actions\", label: \"Quick Actions\", category: \"feedback\" },\n { id: \"cm:save\", label: \"Save\", category: \"edit\" },\n { id: \"cm:delete\", label: \"Delete\", category: \"edit\" },\n { id: \"cm:admin\", label: \"Admin Tools\", category: \"admin\" },\n { id: \"cm:x:surface\", label: \"This page (location, context, agents)\", category: \"surface-info\" },\n];\n\n/** Engine rows whose ids are generated per library (one per agent category or placement). */\nexport const CONTEXT_MENU_ENGINE_ID_PREFIXES: readonly string[] = [\"cm:placement:\", \"cm:cat:\", \"cm:agents\", \"cm:entry:\"];\n","// features/context-menu-v3/regroup/proposed-grouping.ts\n//\n// THE PROPOSED GROUPING, v2 (2026-09-28, after Arman's review of v1: \"we should\n// distinguish between a few things better: Copy (as various things), Download\n// (becomes some sort of external file), Convert (becomes something different in\n// our system…), Action (Publish HTML, etc.)… we still need more categories…\n// the more of [sub-menus] we do, the better\").\n//\n// Every submenu is named by its OUTCOME — what the person gets — in one plain\n// word. Applied ONLY where a MenuRegroupContext asks for it (the regroup demo);\n// no production menu uses it until Arman approves. Plain data over the\n// registry's own action ids and categories: the rows themselves come from the\n// registry, never from this file.\n\nimport {\n ArrowRightLeft,\n Copy,\n Download,\n GitCompareArrows,\n Globe,\n History,\n Pencil,\n Share2,\n Shield,\n Tags,\n ThumbsUp,\n Volume2,\n} from \"lucide-react\";\nimport { registerAlchemyIcon } from \"@ai-matrx/rich-content/utils/alchemy-icon-keys\";\nimport { AGENT_ICON } from \"@ai-matrx/icons/domain\";\nimport type { MenuGrouping } from \"./grouping\";\n\nconst icon = (c: unknown) => registerAlchemyIcon(c);\n\nexport const PROPOSED_MENU_GROUPING: MenuGrouping = {\n name: \"v2 — grouped by what you get\",\n minMembers: 2,\n // `category` + `order` place each submenu row among the others (the package's\n // group order): Edit, Copy, Download, Convert to, Publish, Share, Organize,\n // History, AI, Read aloud, Compare, Feedback, Admin.\n groups: [\n { key: \"edit\", label: \"Edit\", definition: \"Change this item where it is: edit, rewrite, open in an editor, run, delete.\", icon: icon(Pencil), category: \"edit\", order: 0 },\n { key: \"copy\", label: \"Copy\", definition: \"It lands on your clipboard, in the form you pick: text, Markdown, rich text, HTML, a table, JSON, a reference.\", icon: icon(Copy), category: \"copy\", order: 0 },\n { key: \"download\", label: \"Download\", definition: \"It becomes a file outside the app: Markdown, PDF, Word, HTML — or a printout.\", icon: icon(Download), category: \"export\", order: 0 },\n { key: \"convert\", label: \"Convert to\", definition: \"It becomes a new thing inside the app: a note, document, task, file, flashcards, quiz, template, contact, data table.\", icon: icon(ArrowRightLeft), category: \"save\", order: 0 },\n { key: \"publish\", label: \"Publish\", definition: \"It goes out to the world: a public web page or published HTML anyone with the link can open.\", icon: icon(Globe), category: \"share\", order: 0 },\n { key: \"share\", label: \"Share\", definition: \"It goes to specific people or places: share with someone, send to Google Docs, email it.\", icon: icon(Share2), category: \"share\", order: 1 },\n { key: \"organize\", label: \"Organize\", definition: \"It stays what it is, but gets filed: attached to a project or context, pinned, annotated.\", icon: icon(Tags), category: \"history\", order: 0 },\n { key: \"history\", label: \"History\", definition: \"Earlier versions: view the history, fork from a point in it.\", icon: icon(History), category: \"history\", order: 1 },\n { key: \"ai\", label: \"AI\", definition: \"An AI works on it: ask, chat, run an agent or AI action, regenerate.\", icon: icon(AGENT_ICON), category: \"ai\", order: 0 },\n { key: \"listen\", label: \"Read aloud\", definition: \"You hear it: read it aloud, a spoken summary, the voice settings.\", icon: icon(Volume2), category: \"listen\", order: 0 },\n { key: \"compare\", label: \"Compare\", definition: \"You see it side by side with something else: the clipboard or a saved base.\", icon: icon(GitCompareArrows), category: \"study\", order: 0 },\n { key: \"feedback\", label: \"Feedback\", definition: \"Tell us how it went: thumbs up or down, report a problem.\", icon: icon(ThumbsUp), category: \"feedback\", order: 1 },\n { key: \"admin\", label: \"Admin\", definition: \"Creator and admin tools: inspect, debug, server-side message surgery. Admins only.\", icon: icon(Shield), category: \"admin\", order: 0 },\n ],\n rules: [\n // ── The page's own rows that DUPLICATE a category (Arman, 2026-09-28: \"the\n // more of that we do, the better\"): they move into that category, and merge\n // into the universal row that does the same thing when it is in the menu.\n // Only genuinely unique record actions (Open, Take, Duplicate, Move to Trash…)\n // stay at the top.\n { when: { pageOwnLabels: [\"^copy( to clipboard)?$\"] }, to: { kind: \"group\", key: \"copy\" }, mergeWithIds: [\"cm:copy\", \"copy\"] },\n { when: { pageOwnLabels: [\"^copy\\\\b\"] }, to: { kind: \"group\", key: \"copy\" } },\n {\n when: { pageOwnLabels: [\"^(export|download)( as)? markdown\"] },\n to: { kind: \"group\", key: \"download\" },\n mergeWithIds: [\"save-as-file\"],\n },\n { when: { pageOwnLabels: [\"^(export|download)\\\\b\", \"^print\\\\b\"] }, to: { kind: \"group\", key: \"download\" } },\n { when: { pageOwnLabels: [\"^share( link)?…?$\"] }, to: { kind: \"group\", key: \"share\" }, mergeWithIds: [\"cm:share\"] },\n { when: { pageOwnLabels: [\"^(share|send|email)\\\\b\"] }, to: { kind: \"group\", key: \"share\" } },\n { when: { pageOwnLabels: [\"^publish\\\\b\"] }, to: { kind: \"group\", key: \"publish\" } },\n { when: { pageOwnLabels: [\"^(convert|save to|save as|create (a )?(task|note|document))\\\\b\"] }, to: { kind: \"group\", key: \"convert\" } },\n { when: { pageOwnLabels: [\"^(move to folder|add tags?|tags?|attach)\\\\b\"] }, to: { kind: \"group\", key: \"organize\" } },\n { when: { pageOwnLabels: [\"^(read aloud|listen)\\\\b\"] }, to: { kind: \"group\", key: \"listen\" } },\n { when: { pageOwnLabels: [\"^compare\\\\b\"] }, to: { kind: \"group\", key: \"compare\" } },\n { when: { pageOwnLabels: [\"^save$\"] }, to: { kind: \"top\" }, mergeWithIds: [\"cm:save\"] },\n // A conversation's own rows, by id (their labels are computed at open).\n {\n when: { ids: [\"conversation-copy-plain\", \"conversation-copy-markdown\", \"conversation-copy-formatted\", \"conversation-copy-for-ai\", \"conversation-copy-link\"] },\n to: { kind: \"group\", key: \"copy\" },\n },\n { when: { idPrefixes: [\"conversation-download-\"] }, to: { kind: \"group\", key: \"download\" } },\n {\n when: { ids: [\"conversation-save-to-notes\", \"conversation-create-document\", \"conversation-create-task\"] },\n to: { kind: \"group\", key: \"convert\" },\n },\n { when: { ids: [\"conversation-share\", \"conversation-email-to-me\"] }, to: { kind: \"group\", key: \"share\" } },\n { when: { ids: [\"conversation-open-in-new-chat\"] }, to: { kind: \"group\", key: \"ai\" } },\n { when: { ids: [\"conversation-rename\", \"conversation-duplicate\"] }, to: { kind: \"group\", key: \"edit\" } },\n\n // The clicked thing's remaining own rows (a quiz row's Open / Take / Archive,\n // a note's Duplicate / Move to Trash) come first, as they are.\n { when: { pageOwn: true }, to: { kind: \"page-first\" } },\n // The universal verb strip (icons across the top) stays exactly as it is.\n {\n when: { ids: [\"cm:copy\", \"cm:cut\", \"cm:paste\", \"cm:undo\", \"cm:redo\", \"cm:find\", \"copy\", \"cm:select-all\"] },\n to: { kind: \"top\" },\n },\n // Quick Actions is already one submenu of quick tools; the page submenu is last;\n // an editor's own Save / Delete stay one click away.\n { when: { ids: [\"cm:quick-actions\", \"cm:save\", \"cm:delete\"], categories: [\"surface-info\"] }, to: { kind: \"top\" } },\n\n {\n when: {\n ids: [\"cm:copy-as\", \"cm:json\", \"cm:insert-reference\", \"copy-html-page\", \"conversation-copy-link\"],\n categories: [\"copy\"],\n },\n to: { kind: \"group\", key: \"copy\" },\n },\n {\n when: { ids: [\"cm:export\", \"save-as-file\", \"download-pdf\", \"download-docx\", \"download-html\", \"print\", \"full-print\"] },\n to: { kind: \"group\", key: \"download\" },\n },\n { when: { ids: [\"html-preview\", \"share-webpage\"] }, to: { kind: \"group\", key: \"publish\" } },\n {\n when: { ids: [\"cm:share\", \"send-google-doc\", \"email-to-me\", \"conversation-share\"] },\n to: { kind: \"group\", key: \"share\" },\n },\n {\n when: { ids: [\"cm:attach\", \"attach-artifact-to-chat\", \"set-context-value\", \"pin-message\", \"notes-and-comments\"] },\n to: { kind: \"group\", key: \"organize\" },\n },\n {\n when: { ids: [\"cm:view-history\", \"edit-history\", \"fork-at-message\", \"fork-and-regenerate\"] },\n to: { kind: \"group\", key: \"history\" },\n },\n {\n when: { ids: [\"cm:compare\", \"compare-with-clipboard\", \"set-compare-base\", \"compare-with-base\"] },\n to: { kind: \"group\", key: \"compare\" },\n },\n {\n when: { ids: [\"cm:speak\", \"cm:listen\", \"tts-voice-settings\"], categories: [\"listen\"] },\n to: { kind: \"group\", key: \"listen\" },\n },\n {\n when: {\n ids: [\"cm:chat\", \"regenerate-response\", \"regenerate-latest\", \"continue-in-chat\", \"send-to-agent\", \"code-block-chart\"],\n idPrefixes: [\"cm:placement:\", \"cm:cat:\", \"cm:agents\"],\n categories: [\"ai\", \"ask\"],\n },\n to: { kind: \"group\", key: \"ai\" },\n },\n {\n when: {\n ids: [\n \"edit\",\n \"edit-and-resubmit\",\n \"open-fullscreen-editor\",\n \"delete-message\",\n \"code-block-open-in-editor\",\n \"code-block-apply-to-file\",\n \"code-block-run\",\n \"replace-selection\",\n \"insert-below\",\n \"conversation-rename\",\n \"conversation-duplicate\",\n ],\n },\n to: { kind: \"group\", key: \"edit\" },\n },\n { when: { ids: [\"thumbs-up\", \"thumbs-down\", \"submit-feedback\"], categories: [\"feedback\"] }, to: { kind: \"group\", key: \"feedback\" } },\n { when: { ids: [\"cm:admin\"], categories: [\"creator\", \"admin\"] }, to: { kind: \"group\", key: \"admin\" } },\n // Everything that makes a new thing in the app — checked after the rows\n // above because the registry files several of them under \"save\".\n { when: { ids: [\"cm:convert\", \"add-to-rulebook\"], categories: [\"save\", \"study\", \"export\"] }, to: { kind: \"group\", key: \"convert\" } },\n ],\n // A row no rule names stays at the top level where the package places it —\n // and the demo's Categories section lists it under \"No category yet\".\n fallback: { kind: \"top\" },\n};\n","// features/context-menu-v3/proposed/proposed-arrangement.ts\n//\n// THE PROPOSED RIGHT-CLICK MENU (Arman, 2026-10-02), applied to the rows the REAL registry\n// resolved for a real surface — nothing here invents a row. It merges two designs: the object-first\n// layout (icons, four rows, one Intelligence row, large and header-less) and the regroup demo's\n// \"what you get\" categories (`../regroup/proposed-grouping.ts`, reused here, not copied).\n//\n// [icons: ≤6, one action each, never a submenu — chosen by WHAT was clicked]\n// a thing (row, card) Copy · Share · Duplicate · Favorite · Download · Archive (red)\n// editable text Cut · Copy · Paste · Undo · Redo · Find\n// read-only text Copy · Read aloud · Find · Share\n// [Type to filter…]\n// 4 rows: the clicked thing's own actions (editable text: its edit actions)\n// More <thing> options ▸\n// Intelligence ▸ every AI entry, one row, on every menu\n// Save & share ▸ Copy as · Download · Convert to · Publish · Share — one block each\n// Organize ▸ Attach · Pin · History · Compare\n// Tools ▸ Read aloud · Quick Actions · Feedback · This page · Admin\n//\n// A page's own row that does what a universal row does merges into it (regroup's merge rule):\n// one Share, one Download, one Copy. Copy link folds into Share (its dialog carries the link).\n// A thing that brings its own Download/Export owns that verb outright: the universal page-text\n// file rows (PDF, Word, HTML, Markdown, print — regroup's \"download\" group) are dropped for it,\n// because they would save the menu's text, not the thing (a table exports CSV/XLSX, never a PDF\n// of its row label). `recordActionsOnly` cannot do this: it keeps Export by design. \"Save as PDF\n// Document\" files the same page text as a PDF, so it goes with them.\n// Applied only where a MenuRegroupContext passes `transform` (the demo); production is unchanged\n// until Arman approves.\n\nimport { Archive, Copy, Ellipsis, FolderTree, Share2, Wrench } from \"lucide-react\";\nimport { INTELLIGENCE_ICON } from \"@ai-matrx/icons/domain\";\nimport type { Action, ActionCategory, ActionSection, ClickTarget, ResolvedAction } from \"@ai-matrx/alchemy/actions\";\nimport { registerAlchemyIcon } from \"@ai-matrx/rich-content/utils/alchemy-icon-keys\";\nimport { actionLabel, matchRule } from \"../regroup/grouping\";\nimport { PROPOSED_MENU_GROUPING } from \"../regroup/proposed-grouping\";\n\nconst icon = (c: unknown) => registerAlchemyIcon(c);\n\nexport const STRIP_MAX = 6;\nexport const OWN_ROWS_MAX = 4;\n\nexport type ClickedKind = \"thing\" | \"editable\" | \"text\";\n\n/** One icon slot: the first resolved leaf that matches fills it. */\ninterface StripSlot {\n key: string;\n ids?: readonly string[] | undefined;\n /** Labels of the clicked thing's OWN rows (case-insensitive). */\n ownLabels?: readonly RegExp[] | undefined;\n}\n\nconst SLOT: Record<string, StripSlot> = {\n copy: { key: \"copy\", ids: [\"cm:copy\", \"copy\"], ownLabels: [/^copy( to clipboard)?$/i] },\n cut: { key: \"cut\", ids: [\"cm:cut\"] },\n paste: { key: \"paste\", ids: [\"cm:paste\"] },\n undo: { key: \"undo\", ids: [\"cm:undo\"] },\n redo: { key: \"redo\", ids: [\"cm:redo\"] },\n find: { key: \"find\", ids: [\"cm:find\"] },\n speak: { key: \"speak\", ids: [\"cm:speak\"] },\n share: { key: \"share\", ownLabels: [/^share\\b/i], ids: [\"cm:share\"] },\n duplicate: { key: \"duplicate\", ownLabels: [/^duplicate\\b/i, /^make a copy\\b/i] },\n favorite: { key: \"favorite\", ownLabels: [/favou?rite/i, /^(un)?star\\b/i] },\n download: { key: \"download\", ownLabels: [/^(export|download)\\b/i] },\n archive: { key: \"archive\", ownLabels: [/^archive\\b/i, /^delete\\b/i, /^move to trash\\b/i] },\n};\n\n/** The icons for each kind of click, in drawing order. */\nconst STRIP_FOR: Record<ClickedKind, readonly string[]> = {\n thing: [\"copy\", \"share\", \"duplicate\", \"favorite\", \"download\", \"archive\"],\n editable: [\"cut\", \"copy\", \"paste\", \"undo\", \"redo\", \"find\"],\n text: [\"copy\", \"speak\", \"find\", \"share\"],\n};\n\n/** Universal rows outside regroup's \"download\" group that also turn the page text into a file. */\nconst PAGE_TEXT_FILE_IDS = new Set([\"save-as-pdf\"]);\n\n/** The object's own Open row, and the Link verb that sits right after it. */\nconst OPEN_ROW = /^open( record)?$/i;\nconst LINK_A_RECORD = /^link a record/i;\n// The record's other own verbs (Merge, Split, Extract parent) are top-level beside Open and Link, outside the own-row cap.\nconst RECORD_VERBS = [/^merge with/i, /^split(…|\\.\\.\\.)?$/i, /^extract parent/i];\n\n/** Own rows that fold into a strip verb instead of sitting beside it. */\nconst FOLDS_INTO_SHARE = [/^copy link\\b/i, /^share link\\b/i];\n\n/** Regroup's \"what you get\" groups → the three rows under Intelligence. */\nconst SAVE_SHARE_GROUPS = [\"copy\", \"download\", \"convert\", \"publish\", \"share\"] as const;\nconst ORGANIZE_GROUPS = new Set([\"organize\", \"history\", \"compare\"]);\nconst AI_ORDER: readonly (string | RegExp)[] = [\n \"cm:chat\",\n \"cm:placement:ai-action\",\n \"cm:placement:bound-agent\",\n \"cm:agents\",\n \"cm:placement:user-tool\",\n \"cm:placement:organization-tool\",\n \"cm:placement:content-block\",\n /^send to (another )?agent/i,\n /^custom agent/i,\n];\nconst AI_LABELS = [/^summari[sz]e\\b/i, /^send to (another )?agent/i, /^custom agent/i];\n\n/**\n * The clicked thing's own rows: a surface's `extraSections` (engine ids `cm:x:<…>`, except the\n * engine's own page submenu `cm:x:surface`) or a section the surface lifted / named after itself.\n */\nfunction isOwn(action: Action): boolean {\n if (action.id.startsWith(\"cm:x:\") && !action.id.startsWith(\"cm:x:surface\")) return true;\n const s = action.section as (ActionSection & { kind?: string }) | undefined;\n return Boolean(s && (s.primary || s.kind === \"target\"));\n}\n\nexport function clickedKind(target: ClickTarget, resolved: readonly ResolvedAction[]): ClickedKind {\n if (!target.readOnly && resolved.some((r) => r.action.id === \"cm:paste\")) return \"editable\";\n if (resolved.some((r) => isOwn(r.action))) return \"thing\";\n return \"text\";\n}\n\nfunction submenu(id: string, label: string, category: ActionCategory, iconKey: string, children: readonly Action[], order = 0): ResolvedAction {\n const action: Action = {\n id: `proposed:${id}`,\n label,\n category,\n order,\n icon: iconKey,\n pending: (t) => children.some((c) => Boolean(c.expand && c.pending?.(t))),\n eligible: () => ({ status: \"available\" }),\n expand: async () => children,\n run: () => undefined,\n };\n return { action, eligibility: { status: \"available\" } };\n}\n\n/** A submenu row stripped of its old section (a heading the new home does not draw). */\nfunction plain(action: Action, extra: Partial<Action> = {}): Action {\n const { section: _section, ...rest } = action;\n void _section;\n return { ...rest, ...extra };\n}\n\nexport interface ProposedOptions {\n /** The clicked thing's name for \"More <noun> options\" (\"table\", \"quiz\", \"note\"). */\n noun: string;\n}\n\nexport function proposedArrangement(\n target: ClickTarget,\n resolved: readonly ResolvedAction[],\n { noun }: ProposedOptions,\n): ResolvedAction[] {\n const kind = clickedKind(target, resolved);\n const label = (r: ResolvedAction) => actionLabel(r.action, target);\n const groupOf = (r: ResolvedAction) => {\n const to = matchRule(PROPOSED_MENU_GROUPING, r.action, target)?.to;\n return to?.kind === \"group\" ? to.key : null;\n };\n const used = new Set<string>();\n\n // 0 · the thing's own Download/Export replaces the universal file rows (see header).\n const ownsDownload = resolved.some((r) => isOwn(r.action) && SLOT.download!.ownLabels!.some((re) => re.test(label(r))));\n if (ownsDownload) {\n for (const r of resolved) {\n if (!isOwn(r.action) && (groupOf(r) === \"download\" || PAGE_TEXT_FILE_IDS.has(r.action.id))) used.add(r.action.id);\n }\n }\n\n // 1 · the icon row.\n const strip: ResolvedAction[] = [];\n for (const key of STRIP_FOR[kind]) {\n if (strip.length >= STRIP_MAX) break;\n const slot = SLOT[key]!;\n const pick =\n resolved.find(\n (r) => !used.has(r.action.id) && !r.action.expand && isOwn(r.action) && slot.ownLabels?.some((re) => re.test(label(r))),\n ) ?? resolved.find((r) => !used.has(r.action.id) && !r.action.expand && slot.ids?.includes(r.action.id));\n if (!pick) continue;\n used.add(pick.action.id);\n // One verb, one icon: the page's own Share/Copy wins over the universal twin.\n if (key === \"share\") for (const r of resolved) if (r.action.id === \"cm:share\") used.add(r.action.id);\n if (key === \"copy\") for (const r of resolved) if (r.action.id === \"cm:copy\") used.add(r.action.id);\n strip.push({\n ...pick,\n action: plain(pick.action, {\n category: \"clipboard\",\n order: strip.length,\n ...(key === \"archive\" ? { destructive: true, icon: pick.action.icon ?? icon(Archive) } : {}),\n ...(key === \"copy\" && !pick.action.icon ? { icon: icon(Copy) } : {}),\n }),\n });\n }\n const hasShare = strip.some((r) => /^share\\b/i.test(label(r)));\n\n // 2 · the clicked thing's own rows (editable text: its edit actions and the editor's Save).\n // An own row that does what a universal outcome does (\"Export as Markdown\", \"Share link…\") joins\n // that outcome under Save & share instead (the regroup merge rule) — unless it already became an icon.\n const ownCandidates = resolved.filter((r) => {\n if (used.has(r.action.id)) return false;\n const g = groupOf(r);\n if (g && (SAVE_SHARE_GROUPS as readonly string[]).includes(g) && !(hasShare && FOLDS_INTO_SHARE.some((re) => re.test(label(r))))) return false;\n if (isOwn(r.action)) return true;\n return kind === \"editable\" && (groupOf(r) === \"edit\" || r.action.id === \"cm:save\" || r.action.id === \"cm:delete\");\n });\n // OPEN AND \"LINK A RECORD…\" LEAD THE OWN ROWS (CHAIR-UI-STORE item 3, 2026-10-03): on a store\n // record's cell or row the cell's rows (Paste, Clear cell, …) and the row's (Copy row, Insert, …)\n // filled the four top rows and \"Link a record…\" fell under \"More … options\", while every CRM row\n // shows Open and Link top-level. They are the record's own verbs, so they go first, in that order.\n const lead = (re: RegExp) => {\n const at = ownCandidates.findIndex((r) => re.test(label(r)));\n return at >= 0 ? ownCandidates.splice(at, 1)[0]! : null;\n };\n const openRow = lead(OPEN_ROW);\n const linkRow = lead(LINK_A_RECORD);\n const verbRows = RECORD_VERBS.map(lead).filter((r): r is ResolvedAction => r !== null);\n const leading = [openRow, linkRow, ...verbRows].filter((r): r is ResolvedAction => r !== null);\n const verbIds = new Set(verbRows.map((r) => r.action.id));\n let counted = 0;\n ownCandidates.unshift(...leading);\n const own: ResolvedAction[] = [];\n const more: Action[] = [];\n for (const r of ownCandidates) {\n used.add(r.action.id);\n const folds = hasShare && FOLDS_INTO_SHARE.some((re) => re.test(label(r)));\n if (!folds && (verbIds.has(r.action.id) || counted < OWN_ROWS_MAX) && !r.action.expand) {\n const destructive = SLOT.archive!.ownLabels!.some((re) => re.test(label(r)));\n if (!verbIds.has(r.action.id)) counted += 1;\n own.push({ ...r, action: plain(r.action, { category: \"edit\", order: own.length, ...(destructive ? { destructive: true } : {}) }) });\n } else {\n more.push(plain(r.action));\n }\n }\n const top: ResolvedAction[] = [...strip, ...own];\n if (more.length) top.push(submenu(\"more\", `More ${noun} options`, \"edit\", icon(Ellipsis), more, OWN_ROWS_MAX));\n\n // 3 · everything else, by what you get.\n const ai: Action[] = [];\n const saveShare = new Map<string, Action[]>();\n const organize: Action[] = [];\n const tools: Action[] = [];\n for (const r of resolved) {\n if (used.has(r.action.id)) continue;\n used.add(r.action.id);\n const g = groupOf(r);\n if (g === \"ai\" || r.action.category === \"ai\" || r.action.category === \"ask\" || AI_LABELS.some((re) => re.test(label(r)))) {\n ai.push(plain(r.action));\n } else if (g && (SAVE_SHARE_GROUPS as readonly string[]).includes(g)) {\n const list = saveShare.get(g) ?? [];\n list.push(plain(r.action));\n saveShare.set(g, list);\n } else if (g && ORGANIZE_GROUPS.has(g)) {\n organize.push(plain(r.action));\n } else {\n tools.push(plain(r.action));\n }\n }\n // Chat and the libraries first, then hand-offs, then spoken summaries.\n const aiRank = (a: Action) => {\n const i = AI_ORDER.findIndex((p) => (typeof p === \"string\" ? a.id === p || a.id.startsWith(p) : p.test(String(a.label))));\n return i === -1 ? AI_ORDER.length : i;\n };\n ai.sort((a, b) => aiRank(a) - aiRank(b));\n top.push(submenu(\"intelligence\", \"Intelligence\", \"ai\", icon(INTELLIGENCE_ICON), ai));\n\n // Save & share: one block per outcome, a divider between blocks.\n const saveShareRows: Action[] = [];\n for (const g of SAVE_SHARE_GROUPS) {\n const rows = saveShare.get(g) ?? [];\n rows.forEach((a, i) => saveShareRows.push(i === 0 && saveShareRows.length > 0 ? { ...a, startsGroup: true } : a));\n }\n if (saveShareRows.length) top.push(submenu(\"save-share\", \"Save & share\", \"app\", icon(Share2), saveShareRows));\n if (organize.length) top.push(submenu(\"organize\", \"Organize\", \"app\", icon(FolderTree), organize, 1));\n if (tools.length) top.push(submenu(\"tools\", \"Tools\", \"feedback\", icon(Wrench), tools));\n return top;\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/aidream/aidream/apps/shared/context-menu/dist/engine.cjs","../src/engine/utils/build-application-scope.ts","../src/engine/utils/availability.ts","../src/engine/utils/open-context-menu.ts","../src/engine/utils/resolveMarkdownContext.ts","../src/engine/regroup/engine-rows.ts","../src/engine/regroup/proposed-grouping.ts","../src/engine/proposed/proposed-arrangement.ts"],"names":["icon","registerAlchemyIcon"],"mappings":"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AACT,IAAA;AACY,MAAA;AACnB,IAAA;AACF,EAAA;AAEgB,EAAA;AACK,IAAA;AACD,IAAA;AACpB,EAAA;AACkB,EAAA;AACD,EAAA;AAGX,EAAA;AACU,EAAA;AACD,IAAA;AACI,IAAA;AACnB,EAAA;AACkB,EAAA;AACG,EAAA;AACH,EAAA;AACX,EAAA;AACT;APoOuB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/aidream/aidream/apps/shared/context-menu/dist/engine.cjs","sourcesContent":[null,"// 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 buildApplicationScopeFromMenuContext,\n} from \"@ai-matrx/chat/context-menu/utils/build-application-scope\";\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 applyAvailability,\n needs,\n unavailableHere,\n withAvailability,\n} from \"@ai-matrx/chat/context-menu/utils/availability\";\nexport type {\n AvailabilityMap,\n} from \"@ai-matrx/chat/context-menu/utils/availability\";\n","/**\n * Opens the canonical context menu from an explicit overflow control.\n *\n * Touch surfaces cannot rely on a discoverable right-click. Dispatching the\n * same bubbling event keeps the overflow button on the exact desktop/mobile\n * ContextMenuV3 path instead of creating a second action menu.\n */\nexport function openContextMenuForElement(element: HTMLElement | null): void {\n if (!element) return;\n\n const rect = element.getBoundingClientRect();\n element.dispatchEvent(\n new MouseEvent(\"contextmenu\", {\n bubbles: true,\n cancelable: true,\n view: element.ownerDocument.defaultView ?? window,\n button: 2,\n buttons: 2,\n clientX: rect.left + rect.width / 2,\n clientY: rect.top + rect.height / 2,\n }),\n );\n}\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 resolveMarkdownContext,\n} from \"@ai-matrx/chat/context-menu/utils/resolveMarkdownContext\";\nexport type {\n MarkdownMenuContext,\n} from \"@ai-matrx/chat/context-menu/utils/resolveMarkdownContext\";\n","// features/context-menu-v3/regroup/engine-rows.ts\n//\n// The rows the context-menu ENGINE itself can contribute (model/menu-model.ts),\n// as the ids and categories `alchemy-provider.ts` gives them (`cm:<node id>`).\n// Together with the rich-document registry (`getAllActions()`) this is the full\n// inventory of universal menu rows; a surface's own rows (its extraSections)\n// are \"the page's own actions\" and are not listed here.\n//\n// Kept in step with menu-model.ts by hand; the regroup demo flags any `cm:` row\n// a live menu resolves that is missing here (\"not in the inventory\").\n\nimport type { ActionCategory } from \"@ai-matrx/alchemy/actions\";\n\nexport interface InventoryRow {\n id: string;\n label: string;\n category: ActionCategory;\n}\n\nexport const CONTEXT_MENU_ENGINE_ROWS: readonly InventoryRow[] = [\n { id: \"cm:copy\", label: \"Copy\", category: \"clipboard\" },\n { id: \"cm:cut\", label: \"Cut\", category: \"clipboard\" },\n { id: \"cm:paste\", label: \"Paste\", category: \"clipboard\" },\n { id: \"cm:undo\", label: \"Undo\", category: \"clipboard\" },\n { id: \"cm:redo\", label: \"Redo\", category: \"clipboard\" },\n { id: \"cm:find\", label: \"Find & Replace\", category: \"clipboard\" },\n { id: \"cm:speak\", label: \"Speak\", category: \"clipboard\" },\n { id: \"cm:listen\", label: \"Listen\", category: \"clipboard\" },\n { id: \"cm:copy-as\", label: \"Copy as\", category: \"clipboard\" },\n { id: \"cm:json\", label: \"JSON\", category: \"clipboard\" },\n { id: \"cm:select-all\", label: \"Select All\", category: \"edit\" },\n { id: \"cm:insert-reference\", label: \"Insert / Copy reference…\", category: \"edit\" },\n { id: \"cm:chat\", label: \"Chat\", category: \"app\" },\n { id: \"cm:view-history\", label: \"View History\", category: \"history\" },\n { id: \"cm:compare\", label: \"Compare\", category: \"app\" },\n { id: \"cm:export\", label: \"Export\", category: \"save\" },\n { id: \"cm:convert\", label: \"Convert\", category: \"save\" },\n { id: \"cm:attach\", label: \"Attach To\", category: \"share\" },\n { id: \"cm:share\", label: \"Share\", category: \"share\" },\n { id: \"cm:placement:ai-action\", label: \"AI Actions\", category: \"ai\" },\n { id: \"cm:placement:content-block\", label: \"Content blocks\", category: \"ai\" },\n { id: \"cm:placement:organization-tool\", label: \"Org Items\", category: \"ai\" },\n { id: \"cm:placement:user-tool\", label: \"My Items\", category: \"ai\" },\n { id: \"cm:placement:quick-action\", label: \"Quick actions (placement)\", category: \"ai\" },\n { id: \"cm:placement:bound-agent\", label: \"Agents\", category: \"ai\" },\n { id: \"cm:quick-actions\", label: \"Quick Actions\", category: \"feedback\" },\n { id: \"cm:save\", label: \"Save\", category: \"edit\" },\n { id: \"cm:delete\", label: \"Delete\", category: \"edit\" },\n { id: \"cm:admin\", label: \"Admin Tools\", category: \"admin\" },\n { id: \"cm:x:surface\", label: \"This page (location, context, agents)\", category: \"surface-info\" },\n];\n\n/** Engine rows whose ids are generated per library (one per agent category or placement). */\nexport const CONTEXT_MENU_ENGINE_ID_PREFIXES: readonly string[] = [\"cm:placement:\", \"cm:cat:\", \"cm:agents\", \"cm:entry:\"];\n","// features/context-menu-v3/regroup/proposed-grouping.ts\n//\n// THE PROPOSED GROUPING, v2 (2026-09-28, after Arman's review of v1: \"we should\n// distinguish between a few things better: Copy (as various things), Download\n// (becomes some sort of external file), Convert (becomes something different in\n// our system…), Action (Publish HTML, etc.)… we still need more categories…\n// the more of [sub-menus] we do, the better\").\n//\n// Every submenu is named by its OUTCOME — what the person gets — in one plain\n// word. Applied ONLY where a MenuRegroupContext asks for it (the regroup demo);\n// no production menu uses it until Arman approves. Plain data over the\n// registry's own action ids and categories: the rows themselves come from the\n// registry, never from this file.\n\nimport {\n ArrowRightLeft,\n Copy,\n Download,\n GitCompareArrows,\n Globe,\n History,\n Pencil,\n Share2,\n Shield,\n Tags,\n ThumbsUp,\n Volume2,\n} from \"lucide-react\";\nimport { registerAlchemyIcon } from \"@ai-matrx/rich-content/utils/alchemy-icon-keys\";\nimport { AGENT_ICON } from \"@ai-matrx/icons/domain\";\nimport type { MenuGrouping } from \"./grouping\";\n\nconst icon = (c: unknown) => registerAlchemyIcon(c);\n\nexport const PROPOSED_MENU_GROUPING: MenuGrouping = {\n name: \"v2 — grouped by what you get\",\n minMembers: 2,\n // `category` + `order` place each submenu row among the others (the package's\n // group order): Edit, Copy, Download, Convert to, Publish, Share, Organize,\n // History, AI, Read aloud, Compare, Feedback, Admin.\n groups: [\n { key: \"edit\", label: \"Edit\", definition: \"Change this item where it is: edit, rewrite, open in an editor, run, delete.\", icon: icon(Pencil), category: \"edit\", order: 0 },\n { key: \"copy\", label: \"Copy\", definition: \"It lands on your clipboard, in the form you pick: text, Markdown, rich text, HTML, a table, JSON, a reference.\", icon: icon(Copy), category: \"copy\", order: 0 },\n { key: \"download\", label: \"Download\", definition: \"It becomes a file outside the app: Markdown, PDF, Word, HTML — or a printout.\", icon: icon(Download), category: \"export\", order: 0 },\n { key: \"convert\", label: \"Convert to\", definition: \"It becomes a new thing inside the app: a note, document, task, file, flashcards, quiz, template, contact, data table.\", icon: icon(ArrowRightLeft), category: \"save\", order: 0 },\n { key: \"publish\", label: \"Publish\", definition: \"It goes out to the world: a public web page or published HTML anyone with the link can open.\", icon: icon(Globe), category: \"share\", order: 0 },\n { key: \"share\", label: \"Share\", definition: \"It goes to specific people or places: share with someone, send to Google Docs, email it.\", icon: icon(Share2), category: \"share\", order: 1 },\n { key: \"organize\", label: \"Organize\", definition: \"It stays what it is, but gets filed: attached to a project or context, pinned, annotated.\", icon: icon(Tags), category: \"history\", order: 0 },\n { key: \"history\", label: \"History\", definition: \"Earlier versions: view the history, fork from a point in it.\", icon: icon(History), category: \"history\", order: 1 },\n { key: \"ai\", label: \"AI\", definition: \"An AI works on it: ask, chat, run an agent or AI action, regenerate.\", icon: icon(AGENT_ICON), category: \"ai\", order: 0 },\n { key: \"listen\", label: \"Read aloud\", definition: \"You hear it: read it aloud, a spoken summary, the voice settings.\", icon: icon(Volume2), category: \"listen\", order: 0 },\n { key: \"compare\", label: \"Compare\", definition: \"You see it side by side with something else: the clipboard or a saved base.\", icon: icon(GitCompareArrows), category: \"study\", order: 0 },\n { key: \"feedback\", label: \"Feedback\", definition: \"Tell us how it went: thumbs up or down, report a problem.\", icon: icon(ThumbsUp), category: \"feedback\", order: 1 },\n { key: \"admin\", label: \"Admin\", definition: \"Creator and admin tools: inspect, debug, server-side message surgery. Admins only.\", icon: icon(Shield), category: \"admin\", order: 0 },\n ],\n rules: [\n // ── The page's own rows that DUPLICATE a category (Arman, 2026-09-28: \"the\n // more of that we do, the better\"): they move into that category, and merge\n // into the universal row that does the same thing when it is in the menu.\n // Only genuinely unique record actions (Open, Take, Duplicate, Move to Trash…)\n // stay at the top.\n { when: { pageOwnLabels: [\"^copy( to clipboard)?$\"] }, to: { kind: \"group\", key: \"copy\" }, mergeWithIds: [\"cm:copy\", \"copy\"] },\n { when: { pageOwnLabels: [\"^copy\\\\b\"] }, to: { kind: \"group\", key: \"copy\" } },\n {\n when: { pageOwnLabels: [\"^(export|download)( as)? markdown\"] },\n to: { kind: \"group\", key: \"download\" },\n mergeWithIds: [\"save-as-file\"],\n },\n { when: { pageOwnLabels: [\"^(export|download)\\\\b\", \"^print\\\\b\"] }, to: { kind: \"group\", key: \"download\" } },\n { when: { pageOwnLabels: [\"^share( link)?…?$\"] }, to: { kind: \"group\", key: \"share\" }, mergeWithIds: [\"cm:share\"] },\n { when: { pageOwnLabels: [\"^(share|send|email)\\\\b\"] }, to: { kind: \"group\", key: \"share\" } },\n { when: { pageOwnLabels: [\"^publish\\\\b\"] }, to: { kind: \"group\", key: \"publish\" } },\n { when: { pageOwnLabels: [\"^(convert|save to|save as|create (a )?(task|note|document))\\\\b\"] }, to: { kind: \"group\", key: \"convert\" } },\n { when: { pageOwnLabels: [\"^(move to folder|add tags?|tags?|attach)\\\\b\"] }, to: { kind: \"group\", key: \"organize\" } },\n { when: { pageOwnLabels: [\"^(read aloud|listen)\\\\b\"] }, to: { kind: \"group\", key: \"listen\" } },\n { when: { pageOwnLabels: [\"^compare\\\\b\"] }, to: { kind: \"group\", key: \"compare\" } },\n { when: { pageOwnLabels: [\"^save$\"] }, to: { kind: \"top\" }, mergeWithIds: [\"cm:save\"] },\n // A conversation's own rows, by id (their labels are computed at open).\n {\n when: { ids: [\"conversation-copy-plain\", \"conversation-copy-markdown\", \"conversation-copy-formatted\", \"conversation-copy-for-ai\", \"conversation-copy-link\"] },\n to: { kind: \"group\", key: \"copy\" },\n },\n { when: { idPrefixes: [\"conversation-download-\"] }, to: { kind: \"group\", key: \"download\" } },\n {\n when: { ids: [\"conversation-save-to-notes\", \"conversation-create-document\", \"conversation-create-task\"] },\n to: { kind: \"group\", key: \"convert\" },\n },\n { when: { ids: [\"conversation-share\", \"conversation-email-to-me\"] }, to: { kind: \"group\", key: \"share\" } },\n { when: { ids: [\"conversation-open-in-new-chat\"] }, to: { kind: \"group\", key: \"ai\" } },\n { when: { ids: [\"conversation-rename\", \"conversation-duplicate\"] }, to: { kind: \"group\", key: \"edit\" } },\n\n // The clicked thing's remaining own rows (a quiz row's Open / Take / Archive,\n // a note's Duplicate / Move to Trash) come first, as they are.\n { when: { pageOwn: true }, to: { kind: \"page-first\" } },\n // The universal verb strip (icons across the top) stays exactly as it is.\n {\n when: { ids: [\"cm:copy\", \"cm:cut\", \"cm:paste\", \"cm:undo\", \"cm:redo\", \"cm:find\", \"copy\", \"cm:select-all\"] },\n to: { kind: \"top\" },\n },\n // Quick Actions is already one submenu of quick tools; the page submenu is last;\n // an editor's own Save / Delete stay one click away.\n { when: { ids: [\"cm:quick-actions\", \"cm:save\", \"cm:delete\"], categories: [\"surface-info\"] }, to: { kind: \"top\" } },\n\n {\n when: {\n ids: [\"cm:copy-as\", \"cm:json\", \"cm:insert-reference\", \"copy-html-page\", \"conversation-copy-link\"],\n categories: [\"copy\"],\n },\n to: { kind: \"group\", key: \"copy\" },\n },\n {\n when: { ids: [\"cm:export\", \"save-as-file\", \"download-pdf\", \"download-docx\", \"download-html\", \"print\", \"full-print\"] },\n to: { kind: \"group\", key: \"download\" },\n },\n { when: { ids: [\"html-preview\", \"share-webpage\"] }, to: { kind: \"group\", key: \"publish\" } },\n {\n when: { ids: [\"cm:share\", \"send-google-doc\", \"email-to-me\", \"conversation-share\"] },\n to: { kind: \"group\", key: \"share\" },\n },\n {\n when: { ids: [\"cm:attach\", \"attach-artifact-to-chat\", \"set-context-value\", \"pin-message\", \"notes-and-comments\"] },\n to: { kind: \"group\", key: \"organize\" },\n },\n {\n when: { ids: [\"cm:view-history\", \"edit-history\", \"fork-at-message\", \"fork-and-regenerate\"] },\n to: { kind: \"group\", key: \"history\" },\n },\n {\n when: { ids: [\"cm:compare\", \"compare-with-clipboard\", \"set-compare-base\", \"compare-with-base\"] },\n to: { kind: \"group\", key: \"compare\" },\n },\n {\n when: { ids: [\"cm:speak\", \"cm:listen\", \"tts-voice-settings\"], categories: [\"listen\"] },\n to: { kind: \"group\", key: \"listen\" },\n },\n {\n when: {\n ids: [\"cm:chat\", \"regenerate-response\", \"regenerate-latest\", \"continue-in-chat\", \"send-to-agent\", \"code-block-chart\"],\n idPrefixes: [\"cm:placement:\", \"cm:cat:\", \"cm:agents\"],\n categories: [\"ai\", \"ask\"],\n },\n to: { kind: \"group\", key: \"ai\" },\n },\n {\n when: {\n ids: [\n \"edit\",\n \"edit-and-resubmit\",\n \"open-fullscreen-editor\",\n \"delete-message\",\n \"code-block-open-in-editor\",\n \"code-block-apply-to-file\",\n \"code-block-run\",\n \"replace-selection\",\n \"insert-below\",\n \"conversation-rename\",\n \"conversation-duplicate\",\n ],\n },\n to: { kind: \"group\", key: \"edit\" },\n },\n { when: { ids: [\"thumbs-up\", \"thumbs-down\", \"submit-feedback\"], categories: [\"feedback\"] }, to: { kind: \"group\", key: \"feedback\" } },\n { when: { ids: [\"cm:admin\"], categories: [\"creator\", \"admin\"] }, to: { kind: \"group\", key: \"admin\" } },\n // Everything that makes a new thing in the app — checked after the rows\n // above because the registry files several of them under \"save\".\n { when: { ids: [\"cm:convert\", \"add-to-rulebook\"], categories: [\"save\", \"study\", \"export\"] }, to: { kind: \"group\", key: \"convert\" } },\n ],\n // A row no rule names stays at the top level where the package places it —\n // and the demo's Categories section lists it under \"No category yet\".\n fallback: { kind: \"top\" },\n};\n","// features/context-menu-v3/proposed/proposed-arrangement.ts\n//\n// THE PROPOSED RIGHT-CLICK MENU (Arman, 2026-10-02), applied to the rows the REAL registry\n// resolved for a real surface — nothing here invents a row. It merges two designs: the object-first\n// layout (icons, four rows, one Intelligence row, large and header-less) and the regroup demo's\n// \"what you get\" categories (`../regroup/proposed-grouping.ts`, reused here, not copied).\n//\n// [icons: ≤6, one action each, never a submenu — chosen by WHAT was clicked]\n// a thing (row, card) Copy · Share · Duplicate · Favorite · Download · Archive (red)\n// editable text Cut · Copy · Paste · Undo · Redo · Find\n// read-only text Copy · Read aloud · Find · Share\n// [Type to filter…]\n// 4 rows: the clicked thing's own actions (editable text: its edit actions)\n// More <thing> options ▸\n// Intelligence ▸ every AI entry, one row, on every menu\n// Save & share ▸ Copy as · Download · Convert to · Publish · Share — one block each\n// Organize ▸ Attach · Pin · History · Compare\n// Tools ▸ Read aloud · Quick Actions · Feedback · This page · Admin\n//\n// A page's own row that does what a universal row does merges into it (regroup's merge rule):\n// one Share, one Download, one Copy. Copy link folds into Share (its dialog carries the link).\n// A thing that brings its own Download/Export owns that verb outright: the universal page-text\n// file rows (PDF, Word, HTML, Markdown, print — regroup's \"download\" group) are dropped for it,\n// because they would save the menu's text, not the thing (a table exports CSV/XLSX, never a PDF\n// of its row label). `recordActionsOnly` cannot do this: it keeps Export by design. \"Save as PDF\n// Document\" files the same page text as a PDF, so it goes with them.\n// Applied only where a MenuRegroupContext passes `transform` (the demo); production is unchanged\n// until Arman approves.\n\nimport { Archive, Copy, Ellipsis, FolderTree, Share2, Wrench } from \"lucide-react\";\nimport { INTELLIGENCE_ICON } from \"@ai-matrx/icons/domain\";\nimport type { Action, ActionCategory, ActionSection, ClickTarget, ResolvedAction } from \"@ai-matrx/alchemy/actions\";\nimport { registerAlchemyIcon } from \"@ai-matrx/rich-content/utils/alchemy-icon-keys\";\nimport { actionLabel, matchRule } from \"../regroup/grouping\";\nimport { PROPOSED_MENU_GROUPING } from \"../regroup/proposed-grouping\";\n\nconst icon = (c: unknown) => registerAlchemyIcon(c);\n\nexport const STRIP_MAX = 6;\nexport const OWN_ROWS_MAX = 4;\n\nexport type ClickedKind = \"thing\" | \"editable\" | \"text\";\n\n/** One icon slot: the first resolved leaf that matches fills it. */\ninterface StripSlot {\n key: string;\n ids?: readonly string[] | undefined;\n /** Labels of the clicked thing's OWN rows (case-insensitive). */\n ownLabels?: readonly RegExp[] | undefined;\n}\n\nconst SLOT: Record<string, StripSlot> = {\n copy: { key: \"copy\", ids: [\"cm:copy\", \"copy\"], ownLabels: [/^copy( to clipboard)?$/i] },\n cut: { key: \"cut\", ids: [\"cm:cut\"] },\n paste: { key: \"paste\", ids: [\"cm:paste\"] },\n undo: { key: \"undo\", ids: [\"cm:undo\"] },\n redo: { key: \"redo\", ids: [\"cm:redo\"] },\n find: { key: \"find\", ids: [\"cm:find\"] },\n speak: { key: \"speak\", ids: [\"cm:speak\"] },\n share: { key: \"share\", ownLabels: [/^share\\b/i], ids: [\"cm:share\"] },\n duplicate: { key: \"duplicate\", ownLabels: [/^duplicate\\b/i, /^make a copy\\b/i] },\n favorite: { key: \"favorite\", ownLabels: [/favou?rite/i, /^(un)?star\\b/i] },\n download: { key: \"download\", ownLabels: [/^(export|download)\\b/i] },\n archive: { key: \"archive\", ownLabels: [/^archive\\b/i, /^delete\\b/i, /^move to trash\\b/i] },\n};\n\n/** The icons for each kind of click, in drawing order. */\nconst STRIP_FOR: Record<ClickedKind, readonly string[]> = {\n thing: [\"copy\", \"share\", \"duplicate\", \"favorite\", \"download\", \"archive\"],\n editable: [\"cut\", \"copy\", \"paste\", \"undo\", \"redo\", \"find\"],\n text: [\"copy\", \"speak\", \"find\", \"share\"],\n};\n\n/** Universal rows outside regroup's \"download\" group that also turn the page text into a file. */\nconst PAGE_TEXT_FILE_IDS = new Set([\"save-as-pdf\"]);\n\n/** The object's own Open row, and the Link verb that sits right after it. */\nconst OPEN_ROW = /^open( record)?$/i;\nconst LINK_A_RECORD = /^link a record/i;\n// The record's other own verbs (Merge, Split, Extract parent) are top-level beside Open and Link, outside the own-row cap.\nconst RECORD_VERBS = [/^merge with/i, /^split(…|\\.\\.\\.)?$/i, /^extract parent/i];\n\n/** Own rows that fold into a strip verb instead of sitting beside it. */\nconst FOLDS_INTO_SHARE = [/^copy link\\b/i, /^share link\\b/i];\n\n/** Regroup's \"what you get\" groups → the three rows under Intelligence. */\nconst SAVE_SHARE_GROUPS = [\"copy\", \"download\", \"convert\", \"publish\", \"share\"] as const;\nconst ORGANIZE_GROUPS = new Set([\"organize\", \"history\", \"compare\"]);\nconst AI_ORDER: readonly (string | RegExp)[] = [\n \"cm:chat\",\n \"cm:placement:ai-action\",\n \"cm:placement:bound-agent\",\n \"cm:agents\",\n \"cm:placement:user-tool\",\n \"cm:placement:organization-tool\",\n \"cm:placement:content-block\",\n /^send to (another )?agent/i,\n /^custom agent/i,\n];\nconst AI_LABELS = [/^summari[sz]e\\b/i, /^send to (another )?agent/i, /^custom agent/i];\n\n/**\n * The clicked thing's own rows: a surface's `extraSections` (engine ids `cm:x:<…>`, except the\n * engine's own page submenu `cm:x:surface`) or a section the surface lifted / named after itself.\n */\nfunction isOwn(action: Action): boolean {\n if (action.id.startsWith(\"cm:x:\") && !action.id.startsWith(\"cm:x:surface\")) return true;\n const s = action.section as (ActionSection & { kind?: string }) | undefined;\n return Boolean(s && (s.primary || s.kind === \"target\"));\n}\n\nexport function clickedKind(target: ClickTarget, resolved: readonly ResolvedAction[]): ClickedKind {\n if (!target.readOnly && resolved.some((r) => r.action.id === \"cm:paste\")) return \"editable\";\n if (resolved.some((r) => isOwn(r.action))) return \"thing\";\n return \"text\";\n}\n\nfunction submenu(id: string, label: string, category: ActionCategory, iconKey: string, children: readonly Action[], order = 0): ResolvedAction {\n const action: Action = {\n id: `proposed:${id}`,\n label,\n category,\n order,\n icon: iconKey,\n pending: (t) => children.some((c) => Boolean(c.expand && c.pending?.(t))),\n eligible: () => ({ status: \"available\" }),\n expand: async () => children,\n run: () => undefined,\n };\n return { action, eligibility: { status: \"available\" } };\n}\n\n/** A submenu row stripped of its old section (a heading the new home does not draw). */\nfunction plain(action: Action, extra: Partial<Action> = {}): Action {\n const { section: _section, ...rest } = action;\n void _section;\n return { ...rest, ...extra };\n}\n\nexport interface ProposedOptions {\n /** The clicked thing's name for \"More <noun> options\" (\"table\", \"quiz\", \"note\"). */\n noun: string;\n}\n\nexport function proposedArrangement(\n target: ClickTarget,\n resolved: readonly ResolvedAction[],\n { noun }: ProposedOptions,\n): ResolvedAction[] {\n const kind = clickedKind(target, resolved);\n const label = (r: ResolvedAction) => actionLabel(r.action, target);\n const groupOf = (r: ResolvedAction) => {\n const to = matchRule(PROPOSED_MENU_GROUPING, r.action, target)?.to;\n return to?.kind === \"group\" ? to.key : null;\n };\n const used = new Set<string>();\n\n // 0 · the thing's own Download/Export replaces the universal file rows (see header).\n const ownsDownload = resolved.some((r) => isOwn(r.action) && SLOT.download!.ownLabels!.some((re) => re.test(label(r))));\n if (ownsDownload) {\n for (const r of resolved) {\n if (!isOwn(r.action) && (groupOf(r) === \"download\" || PAGE_TEXT_FILE_IDS.has(r.action.id))) used.add(r.action.id);\n }\n }\n\n // 1 · the icon row.\n const strip: ResolvedAction[] = [];\n for (const key of STRIP_FOR[kind]) {\n if (strip.length >= STRIP_MAX) break;\n const slot = SLOT[key]!;\n const pick =\n resolved.find(\n (r) => !used.has(r.action.id) && !r.action.expand && isOwn(r.action) && slot.ownLabels?.some((re) => re.test(label(r))),\n ) ?? resolved.find((r) => !used.has(r.action.id) && !r.action.expand && slot.ids?.includes(r.action.id));\n if (!pick) continue;\n used.add(pick.action.id);\n // One verb, one icon: the page's own Share/Copy wins over the universal twin.\n if (key === \"share\") for (const r of resolved) if (r.action.id === \"cm:share\") used.add(r.action.id);\n if (key === \"copy\") for (const r of resolved) if (r.action.id === \"cm:copy\") used.add(r.action.id);\n strip.push({\n ...pick,\n action: plain(pick.action, {\n category: \"clipboard\",\n order: strip.length,\n ...(key === \"archive\" ? { destructive: true, icon: pick.action.icon ?? icon(Archive) } : {}),\n ...(key === \"copy\" && !pick.action.icon ? { icon: icon(Copy) } : {}),\n }),\n });\n }\n const hasShare = strip.some((r) => /^share\\b/i.test(label(r)));\n\n // 2 · the clicked thing's own rows (editable text: its edit actions and the editor's Save).\n // An own row that does what a universal outcome does (\"Export as Markdown\", \"Share link…\") joins\n // that outcome under Save & share instead (the regroup merge rule) — unless it already became an icon.\n const ownCandidates = resolved.filter((r) => {\n if (used.has(r.action.id)) return false;\n const g = groupOf(r);\n if (g && (SAVE_SHARE_GROUPS as readonly string[]).includes(g) && !(hasShare && FOLDS_INTO_SHARE.some((re) => re.test(label(r))))) return false;\n if (isOwn(r.action)) return true;\n return kind === \"editable\" && (groupOf(r) === \"edit\" || r.action.id === \"cm:save\" || r.action.id === \"cm:delete\");\n });\n // OPEN AND \"LINK A RECORD…\" LEAD THE OWN ROWS (CHAIR-UI-STORE item 3, 2026-10-03): on a store\n // record's cell or row the cell's rows (Paste, Clear cell, …) and the row's (Copy row, Insert, …)\n // filled the four top rows and \"Link a record…\" fell under \"More … options\", while every CRM row\n // shows Open and Link top-level. They are the record's own verbs, so they go first, in that order.\n const lead = (re: RegExp) => {\n const at = ownCandidates.findIndex((r) => re.test(label(r)));\n return at >= 0 ? ownCandidates.splice(at, 1)[0]! : null;\n };\n const openRow = lead(OPEN_ROW);\n const linkRow = lead(LINK_A_RECORD);\n const verbRows = RECORD_VERBS.map(lead).filter((r): r is ResolvedAction => r !== null);\n const leading = [openRow, linkRow, ...verbRows].filter((r): r is ResolvedAction => r !== null);\n const verbIds = new Set(verbRows.map((r) => r.action.id));\n let counted = 0;\n ownCandidates.unshift(...leading);\n const own: ResolvedAction[] = [];\n const more: Action[] = [];\n for (const r of ownCandidates) {\n used.add(r.action.id);\n const folds = hasShare && FOLDS_INTO_SHARE.some((re) => re.test(label(r)));\n if (!folds && (verbIds.has(r.action.id) || counted < OWN_ROWS_MAX) && !r.action.expand) {\n const destructive = SLOT.archive!.ownLabels!.some((re) => re.test(label(r)));\n if (!verbIds.has(r.action.id)) counted += 1;\n own.push({ ...r, action: plain(r.action, { category: \"edit\", order: own.length, ...(destructive ? { destructive: true } : {}) }) });\n } else {\n more.push(plain(r.action));\n }\n }\n const top: ResolvedAction[] = [...strip, ...own];\n if (more.length) top.push(submenu(\"more\", `More ${noun} options`, \"edit\", icon(Ellipsis), more, OWN_ROWS_MAX));\n\n // 3 · everything else, by what you get.\n const ai: Action[] = [];\n const saveShare = new Map<string, Action[]>();\n const organize: Action[] = [];\n const tools: Action[] = [];\n for (const r of resolved) {\n if (used.has(r.action.id)) continue;\n used.add(r.action.id);\n const g = groupOf(r);\n if (g === \"ai\" || r.action.category === \"ai\" || r.action.category === \"ask\" || AI_LABELS.some((re) => re.test(label(r)))) {\n ai.push(plain(r.action));\n } else if (g && (SAVE_SHARE_GROUPS as readonly string[]).includes(g)) {\n const list = saveShare.get(g) ?? [];\n list.push(plain(r.action));\n saveShare.set(g, list);\n } else if (g && ORGANIZE_GROUPS.has(g)) {\n organize.push(plain(r.action));\n } else {\n tools.push(plain(r.action));\n }\n }\n // Chat and the libraries first, then hand-offs, then spoken summaries.\n const aiRank = (a: Action) => {\n const i = AI_ORDER.findIndex((p) => (typeof p === \"string\" ? a.id === p || a.id.startsWith(p) : p.test(String(a.label))));\n return i === -1 ? AI_ORDER.length : i;\n };\n ai.sort((a, b) => aiRank(a) - aiRank(b));\n top.push(submenu(\"intelligence\", \"Intelligence\", \"ai\", icon(INTELLIGENCE_ICON), ai));\n\n // Save & share: one block per outcome, a divider between blocks.\n const saveShareRows: Action[] = [];\n for (const g of SAVE_SHARE_GROUPS) {\n const rows = saveShare.get(g) ?? [];\n rows.forEach((a, i) => saveShareRows.push(i === 0 && saveShareRows.length > 0 ? { ...a, startsGroup: true } : a));\n }\n if (saveShareRows.length) top.push(submenu(\"save-share\", \"Save & share\", \"app\", icon(Share2), saveShareRows));\n if (organize.length) top.push(submenu(\"organize\", \"Organize\", \"app\", icon(FolderTree), organize, 1));\n if (tools.length) top.push(submenu(\"tools\", \"Tools\", \"feedback\", icon(Wrench), tools));\n return top;\n}\n"]}
package/dist/engine.d.cts CHANGED
@@ -1,13 +1,13 @@
1
1
  import './menu-design-prop-Bl-7EopK.cjs';
2
2
  import { ResolvedContextMenuContext, ContextMenuExtraSection, ContextMenuEntityRef } from '@ai-matrx/chat/context-menu/types';
3
- export * from '@ai-matrx/chat/context-menu/types';
3
+ export { CANONICAL_MENU_VERSION_V3, CONTEXT_MENU_ENTITY_KEY, CONTEXT_MENU_HEADING_KEY, ContentSource, ContextMenuContextData, ContextMenuDensity, ContextMenuEntityRef, ContextMenuExtraItem, ContextMenuExtraSection, ContextMenuHeading, ContextMenuHostTypes, ContextMenuIcon, ContextMenuLayout, ContextMenuV3CoreProps, ContextMenuV3Props, DEFAULT_MENU_DENSITY, DEFAULT_MENU_LAYOUT, EditableContextMenuExtras, EditableContextMenuProps, ExtraSectionAnchor, MenuContentProps, MenuVariant, NonEditableContextMenuProps, PlacementKey, PlacementMode, PlacementVisibility, ResolvedContextMenuContext, ResourceType, RichDocumentAction, RichDocumentActionContext } from '@ai-matrx/chat/context-menu/types';
4
4
  export { B as BuildJsonMenuActionsParams, C as CompareBaseInput, a as ContextAssignmentOptions, b as ContextMenuHost, c as ContextMenuHostBindings, d as ContextMenuQuickActions, D as DEFAULT_CONTEXT_MENU_HOST, e as DiffWindowOptions, f as DocumentAgentReviewProps, F as FindReplaceOptions, J as JsonMenuAction, g as JsonMenuSection, L as LinkRecordSheetOptions, h as ListenSummaryWindowOptions, M as ManualCopyOptions, R as ReferencePick, i as ReferencePickerOptions, S as ShareModalOptions, j as SurfaceAgentBindOptions, k as SurfaceContextWindowOptions, l as SurfaceInspectorOptions, m as buildJsonMenuSection, n as configureContextMenuHost, o as getContextMenuHost, p as jsonSectionLabel, q as loadContextMenuHost, r as resetContextMenuHost, u as useContextMenuHostBindings } from './json-menu-actions-CUifYNYd.cjs';
5
- export * from '@ai-matrx/chat/context-menu/utils/build-application-scope';
6
- export * from '@ai-matrx/chat/context-menu/utils/availability';
7
- export * from '@ai-matrx/chat/context-menu/utils/selection-tracking';
8
- export * from '@ai-matrx/chat/context-menu/utils/menu-deadline';
9
- export * from '@ai-matrx/chat/context-menu/utils/resolveMarkdownContext';
10
- export * from '@ai-matrx/chat/context-menu/model/requirement-gate';
5
+ export { buildApplicationScopeFromMenuContext } from '@ai-matrx/chat/context-menu/utils/build-application-scope';
6
+ export { AvailabilityMap, applyAvailability, needs, unavailableHere, withAvailability } from '@ai-matrx/chat/context-menu/utils/availability';
7
+ export { CapturedSelection, EditableSelectionRange, NonEditableSelectionRange, SelectionRange, captureDomSelection, captureTextareaSelection, extractElementText, getEditableSelectionOffsets, getSelectionRect, mouseFallbackRect, restoreDomSelection, restoreTextareaSelection, spliceInputValue } from '@ai-matrx/chat/context-menu/utils/selection-tracking';
8
+ export { MENU_LIBRARY_DEADLINE_MS, MenuLibraryTimeoutError, withMenuDeadline } from '@ai-matrx/chat/context-menu/utils/menu-deadline';
9
+ export { MarkdownMenuContext, resolveMarkdownContext } from '@ai-matrx/chat/context-menu/utils/resolveMarkdownContext';
10
+ export { AvailableKeysArgs, GLOBAL_SCOPE, GateableItem, MenuScope, MenuScopeLevel, OfferContext, OfferDecision, OfferRefusal, buildAvailableKeys, decideOffer, domainOfSurfaceName, readMenuScope, requirementsOf, scopeReaches, writeMenuScope } from '@ai-matrx/chat/context-menu/model/requirement-gate';
11
11
  import { ResolvedItem } from '@ai-matrx/alchemy/declare';
12
12
  import { MatrxDataTableRecordControls } from '@ai-matrx/design-system/data-table/types';
13
13
  import { MatrxTableMenuPayload, MatrxTableMenuTarget } from '@ai-matrx/design-system/data-table/menu-targets';
package/dist/engine.d.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  import './menu-design-prop-Bl-7EopK.js';
2
2
  import { ResolvedContextMenuContext, ContextMenuExtraSection, ContextMenuEntityRef } from '@ai-matrx/chat/context-menu/types';
3
- export * from '@ai-matrx/chat/context-menu/types';
3
+ export { CANONICAL_MENU_VERSION_V3, CONTEXT_MENU_ENTITY_KEY, CONTEXT_MENU_HEADING_KEY, ContentSource, ContextMenuContextData, ContextMenuDensity, ContextMenuEntityRef, ContextMenuExtraItem, ContextMenuExtraSection, ContextMenuHeading, ContextMenuHostTypes, ContextMenuIcon, ContextMenuLayout, ContextMenuV3CoreProps, ContextMenuV3Props, DEFAULT_MENU_DENSITY, DEFAULT_MENU_LAYOUT, EditableContextMenuExtras, EditableContextMenuProps, ExtraSectionAnchor, MenuContentProps, MenuVariant, NonEditableContextMenuProps, PlacementKey, PlacementMode, PlacementVisibility, ResolvedContextMenuContext, ResourceType, RichDocumentAction, RichDocumentActionContext } from '@ai-matrx/chat/context-menu/types';
4
4
  export { B as BuildJsonMenuActionsParams, C as CompareBaseInput, a as ContextAssignmentOptions, b as ContextMenuHost, c as ContextMenuHostBindings, d as ContextMenuQuickActions, D as DEFAULT_CONTEXT_MENU_HOST, e as DiffWindowOptions, f as DocumentAgentReviewProps, F as FindReplaceOptions, J as JsonMenuAction, g as JsonMenuSection, L as LinkRecordSheetOptions, h as ListenSummaryWindowOptions, M as ManualCopyOptions, R as ReferencePick, i as ReferencePickerOptions, S as ShareModalOptions, j as SurfaceAgentBindOptions, k as SurfaceContextWindowOptions, l as SurfaceInspectorOptions, m as buildJsonMenuSection, n as configureContextMenuHost, o as getContextMenuHost, p as jsonSectionLabel, q as loadContextMenuHost, r as resetContextMenuHost, u as useContextMenuHostBindings } from './json-menu-actions-CUifYNYd.js';
5
- export * from '@ai-matrx/chat/context-menu/utils/build-application-scope';
6
- export * from '@ai-matrx/chat/context-menu/utils/availability';
7
- export * from '@ai-matrx/chat/context-menu/utils/selection-tracking';
8
- export * from '@ai-matrx/chat/context-menu/utils/menu-deadline';
9
- export * from '@ai-matrx/chat/context-menu/utils/resolveMarkdownContext';
10
- export * from '@ai-matrx/chat/context-menu/model/requirement-gate';
5
+ export { buildApplicationScopeFromMenuContext } from '@ai-matrx/chat/context-menu/utils/build-application-scope';
6
+ export { AvailabilityMap, applyAvailability, needs, unavailableHere, withAvailability } from '@ai-matrx/chat/context-menu/utils/availability';
7
+ export { CapturedSelection, EditableSelectionRange, NonEditableSelectionRange, SelectionRange, captureDomSelection, captureTextareaSelection, extractElementText, getEditableSelectionOffsets, getSelectionRect, mouseFallbackRect, restoreDomSelection, restoreTextareaSelection, spliceInputValue } from '@ai-matrx/chat/context-menu/utils/selection-tracking';
8
+ export { MENU_LIBRARY_DEADLINE_MS, MenuLibraryTimeoutError, withMenuDeadline } from '@ai-matrx/chat/context-menu/utils/menu-deadline';
9
+ export { MarkdownMenuContext, resolveMarkdownContext } from '@ai-matrx/chat/context-menu/utils/resolveMarkdownContext';
10
+ export { AvailableKeysArgs, GLOBAL_SCOPE, GateableItem, MenuScope, MenuScopeLevel, OfferContext, OfferDecision, OfferRefusal, buildAvailableKeys, decideOffer, domainOfSurfaceName, readMenuScope, requirementsOf, scopeReaches, writeMenuScope } from '@ai-matrx/chat/context-menu/model/requirement-gate';
11
11
  import { ResolvedItem } from '@ai-matrx/alchemy/declare';
12
12
  import { MatrxDataTableRecordControls } from '@ai-matrx/design-system/data-table/types';
13
13
  import { MatrxTableMenuPayload, MatrxTableMenuTarget } from '@ai-matrx/design-system/data-table/menu-targets';
package/dist/engine.js CHANGED
@@ -29,7 +29,7 @@ import {
29
29
  tableRowEditCommands,
30
30
  tableTextAtTarget,
31
31
  toastPromise
32
- } from "./chunk-A24SBKSA.js";
32
+ } from "./chunk-EG23Y2KW.js";
33
33
  import {
34
34
  REGROUP_ID_PREFIX,
35
35
  actionLabel,
@@ -43,23 +43,44 @@ import {
43
43
  } from "./chunk-FFIJ4TF4.js";
44
44
  import {
45
45
  FIELD_PREVIEW_MAX,
46
+ GLOBAL_SCOPE,
46
47
  MANAGED_CONTEXT_MENU_AGENT_CONFIG,
48
+ MENU_LIBRARY_DEADLINE_MS,
49
+ MenuLibraryTimeoutError,
47
50
  actionsAlreadyHere,
51
+ buildAvailableKeys,
48
52
  buildJsonMenuSection,
53
+ decideOffer,
54
+ domainOfSurfaceName,
49
55
  fieldLabelOf,
50
56
  fieldPreview,
51
57
  jsonSectionLabel,
52
- menu_deadline_exports,
53
58
  mergeFieldName,
54
- requirement_gate_exports
55
- } from "./chunk-EIP5YS4Y.js";
59
+ readMenuScope,
60
+ requirementsOf,
61
+ scopeReaches,
62
+ withMenuDeadline,
63
+ writeMenuScope
64
+ } from "./chunk-HJU3RU2B.js";
56
65
  import {
66
+ CANONICAL_MENU_VERSION_V3,
67
+ CONTEXT_MENU_ENTITY_KEY,
68
+ CONTEXT_MENU_HEADING_KEY,
69
+ DEFAULT_MENU_DENSITY,
70
+ DEFAULT_MENU_LAYOUT,
71
+ captureDomSelection,
72
+ captureTextareaSelection,
57
73
  eventMatchesCombo,
74
+ extractElementText,
58
75
  findComboMatch,
76
+ getEditableSelectionOffsets,
77
+ getSelectionRect,
78
+ mouseFallbackRect,
59
79
  parseKeyCombo,
60
- selection_tracking_exports,
61
- types_exports
62
- } from "./chunk-NOYMFNSU.js";
80
+ restoreDomSelection,
81
+ restoreTextareaSelection,
82
+ spliceInputValue
83
+ } from "./chunk-SJWKMZEJ.js";
63
84
  import {
64
85
  DEFAULT_CONTEXT_MENU_HOST,
65
86
  configureContextMenuHost,
@@ -68,95 +89,19 @@ import {
68
89
  resetContextMenuHost,
69
90
  useContextMenuHostBindings
70
91
  } from "./chunk-5CSJ4Y3X.js";
71
- import {
72
- __export,
73
- __reExport
74
- } from "./chunk-PE3ZHHM5.js";
75
-
76
- // src/engine/index.ts
77
- var engine_exports = {};
78
- __export(engine_exports, {
79
- CONTEXT_MENU_ENGINE_ID_PREFIXES: () => CONTEXT_MENU_ENGINE_ID_PREFIXES,
80
- CONTEXT_MENU_ENGINE_ROWS: () => CONTEXT_MENU_ENGINE_ROWS,
81
- CONTEXT_MENU_SELECTION_HOST_KEY: () => CONTEXT_MENU_SELECTION_HOST_KEY,
82
- CONTEXT_REGION_TRIGGER_ATTRS: () => CONTEXT_REGION_TRIGGER_ATTRS,
83
- DEFAULT_CONTEXT_MENU_HOST: () => DEFAULT_CONTEXT_MENU_HOST,
84
- FIELD_PREVIEW_MAX: () => FIELD_PREVIEW_MAX,
85
- MANAGED_CONTEXT_MENU_AGENT_CONFIG: () => MANAGED_CONTEXT_MENU_AGENT_CONFIG,
86
- OWN_ROWS_MAX: () => OWN_ROWS_MAX,
87
- PROPOSED_MENU_GROUPING: () => PROPOSED_MENU_GROUPING,
88
- RECORD_MENU_ATTR: () => RECORD_MENU_ATTR,
89
- REGROUP_ID_PREFIX: () => REGROUP_ID_PREFIX,
90
- STRIP_MAX: () => STRIP_MAX,
91
- actionLabel: () => actionLabel,
92
- actionsAlreadyHere: () => actionsAlreadyHere,
93
- auditRegroup: () => auditRegroup,
94
- buildDefaultTableRowMenuDescriptor: () => buildDefaultTableRowMenuDescriptor,
95
- buildEditableWidgetHandle: () => buildEditableWidgetHandle,
96
- buildJsonMenuSection: () => buildJsonMenuSection,
97
- clickedKind: () => clickedKind,
98
- configureContextMenuHost: () => configureContextMenuHost,
99
- contextMenuSelectionProvider: () => contextMenuSelectionProvider,
100
- createDefaultTableRowMenuDescriptor: () => createDefaultTableRowMenuDescriptor,
101
- createTableRowMenuDescriptor: () => createTableRowMenuDescriptor,
102
- currentModel: () => currentModel,
103
- destinationFor: () => destinationFor,
104
- drawnPlaces: () => drawnPlaces,
105
- eventMatchesCombo: () => eventMatchesCombo,
106
- fieldLabelOf: () => fieldLabelOf,
107
- fieldPreview: () => fieldPreview,
108
- findComboMatch: () => findComboMatch,
109
- getContextMenuHost: () => getContextMenuHost,
110
- itemMenuConfigToExtraSections: () => itemMenuConfigToExtraSections,
111
- itemToastPromise: () => toastPromise,
112
- joinExtraSections: () => joinExtraSections,
113
- joinRowAndSurfaceContext: () => joinRowAndSurfaceContext,
114
- jsonSectionLabel: () => jsonSectionLabel,
115
- loadContextMenuHost: () => loadContextMenuHost,
116
- matchRule: () => matchRule,
117
- mergeFieldName: () => mergeFieldName,
118
- mergeResolvedContextData: () => mergeResolvedContextData,
119
- openContextMenuForElement: () => openContextMenuForElement,
120
- openRecordMenu: () => openRecordMenu,
121
- parseKeyCombo: () => parseKeyCombo,
122
- preloadTableShape: () => preloadTableShape,
123
- proposedArrangement: () => proposedArrangement,
124
- recordMenuChanged: () => recordMenuChanged,
125
- recordMenusRevision: () => recordMenusRevision,
126
- registerRecordMenu: () => registerRecordMenu,
127
- registerTableRowContextResolver: () => registerTableRowContextResolver,
128
- regroupResolved: () => regroupResolved,
129
- resetContextMenuHost: () => resetContextMenuHost,
130
- resolveEffectiveEntity: () => resolveEffectiveEntity,
131
- resolveEffectiveEntityWithDom: () => resolveEffectiveEntityWithDom,
132
- resolveRecordMenu: () => resolveRecordMenu,
133
- resolveTableRowItem: () => resolveTableRowItem,
134
- resolveTableRowMenuDescriptor: () => resolveTableRowMenuDescriptor,
135
- rowRecordName: () => rowRecordName,
136
- sniffEntityFromDom: () => sniffEntityFromDom,
137
- subscribeRecordMenus: () => subscribeRecordMenus,
138
- tableRowEditCommands: () => tableRowEditCommands,
139
- tableTextAtTarget: () => tableTextAtTarget,
140
- topLevelRowCount: () => topLevelRowCount,
141
- useContextMenuHostBindings: () => useContextMenuHostBindings
142
- });
143
- __reExport(engine_exports, types_exports);
144
92
 
145
93
  // src/engine/utils/build-application-scope.ts
146
- var build_application_scope_exports = {};
147
- __reExport(build_application_scope_exports, build_application_scope_star);
148
- import * as build_application_scope_star from "@ai-matrx/chat/context-menu/utils/build-application-scope";
149
-
150
- // src/engine/index.ts
151
- __reExport(engine_exports, build_application_scope_exports);
94
+ import {
95
+ buildApplicationScopeFromMenuContext
96
+ } from "@ai-matrx/chat/context-menu/utils/build-application-scope";
152
97
 
153
98
  // src/engine/utils/availability.ts
154
- var availability_exports = {};
155
- __reExport(availability_exports, availability_star);
156
- import * as availability_star from "@ai-matrx/chat/context-menu/utils/availability";
157
-
158
- // src/engine/index.ts
159
- __reExport(engine_exports, availability_exports);
99
+ import {
100
+ applyAvailability,
101
+ needs,
102
+ unavailableHere,
103
+ withAvailability
104
+ } from "@ai-matrx/chat/context-menu/utils/availability";
160
105
 
161
106
  // src/engine/utils/open-context-menu.ts
162
107
  function openContextMenuForElement(element) {
@@ -175,18 +120,10 @@ function openContextMenuForElement(element) {
175
120
  );
176
121
  }
177
122
 
178
- // src/engine/index.ts
179
- __reExport(engine_exports, selection_tracking_exports);
180
- __reExport(engine_exports, menu_deadline_exports);
181
-
182
123
  // src/engine/utils/resolveMarkdownContext.ts
183
- var resolveMarkdownContext_exports = {};
184
- __reExport(resolveMarkdownContext_exports, resolveMarkdownContext_star);
185
- import * as resolveMarkdownContext_star from "@ai-matrx/chat/context-menu/utils/resolveMarkdownContext";
186
-
187
- // src/engine/index.ts
188
- __reExport(engine_exports, resolveMarkdownContext_exports);
189
- __reExport(engine_exports, requirement_gate_exports);
124
+ import {
125
+ resolveMarkdownContext
126
+ } from "@ai-matrx/chat/context-menu/utils/resolveMarkdownContext";
190
127
 
191
128
  // src/engine/regroup/engine-rows.ts
192
129
  var CONTEXT_MENU_ENGINE_ROWS = [
@@ -561,13 +498,21 @@ function proposedArrangement(target, resolved, { noun }) {
561
498
  return top;
562
499
  }
563
500
  export {
501
+ CANONICAL_MENU_VERSION_V3,
564
502
  CONTEXT_MENU_ENGINE_ID_PREFIXES,
565
503
  CONTEXT_MENU_ENGINE_ROWS,
504
+ CONTEXT_MENU_ENTITY_KEY,
505
+ CONTEXT_MENU_HEADING_KEY,
566
506
  CONTEXT_MENU_SELECTION_HOST_KEY,
567
507
  CONTEXT_REGION_TRIGGER_ATTRS,
568
508
  DEFAULT_CONTEXT_MENU_HOST,
509
+ DEFAULT_MENU_DENSITY,
510
+ DEFAULT_MENU_LAYOUT,
569
511
  FIELD_PREVIEW_MAX,
512
+ GLOBAL_SCOPE,
570
513
  MANAGED_CONTEXT_MENU_AGENT_CONFIG,
514
+ MENU_LIBRARY_DEADLINE_MS,
515
+ MenuLibraryTimeoutError,
571
516
  OWN_ROWS_MAX,
572
517
  PROPOSED_MENU_GROUPING,
573
518
  RECORD_MENU_ATTR,
@@ -575,23 +520,33 @@ export {
575
520
  STRIP_MAX,
576
521
  actionLabel,
577
522
  actionsAlreadyHere,
523
+ applyAvailability,
578
524
  auditRegroup,
525
+ buildApplicationScopeFromMenuContext,
526
+ buildAvailableKeys,
579
527
  buildDefaultTableRowMenuDescriptor,
580
528
  buildEditableWidgetHandle,
581
529
  buildJsonMenuSection,
530
+ captureDomSelection,
531
+ captureTextareaSelection,
582
532
  clickedKind,
583
533
  configureContextMenuHost,
584
534
  contextMenuSelectionProvider,
585
535
  createDefaultTableRowMenuDescriptor,
586
536
  createTableRowMenuDescriptor,
587
537
  currentModel,
538
+ decideOffer,
588
539
  destinationFor,
540
+ domainOfSurfaceName,
589
541
  drawnPlaces,
590
542
  eventMatchesCombo,
543
+ extractElementText,
591
544
  fieldLabelOf,
592
545
  fieldPreview,
593
546
  findComboMatch,
594
547
  getContextMenuHost,
548
+ getEditableSelectionOffsets,
549
+ getSelectionRect,
595
550
  itemMenuConfigToExtraSections,
596
551
  toastPromise as itemToastPromise,
597
552
  joinExtraSections,
@@ -601,28 +556,41 @@ export {
601
556
  matchRule,
602
557
  mergeFieldName,
603
558
  mergeResolvedContextData,
559
+ mouseFallbackRect,
560
+ needs,
604
561
  openContextMenuForElement,
605
562
  openRecordMenu,
606
563
  parseKeyCombo,
607
564
  preloadTableShape,
608
565
  proposedArrangement,
566
+ readMenuScope,
609
567
  recordMenuChanged,
610
568
  recordMenusRevision,
611
569
  registerRecordMenu,
612
570
  registerTableRowContextResolver,
613
571
  regroupResolved,
572
+ requirementsOf,
614
573
  resetContextMenuHost,
615
574
  resolveEffectiveEntity,
616
575
  resolveEffectiveEntityWithDom,
576
+ resolveMarkdownContext,
617
577
  resolveRecordMenu,
618
578
  resolveTableRowItem,
619
579
  resolveTableRowMenuDescriptor,
580
+ restoreDomSelection,
581
+ restoreTextareaSelection,
620
582
  rowRecordName,
583
+ scopeReaches,
621
584
  sniffEntityFromDom,
585
+ spliceInputValue,
622
586
  subscribeRecordMenus,
623
587
  tableRowEditCommands,
624
588
  tableTextAtTarget,
625
589
  topLevelRowCount,
626
- useContextMenuHostBindings
590
+ unavailableHere,
591
+ useContextMenuHostBindings,
592
+ withAvailability,
593
+ withMenuDeadline,
594
+ writeMenuScope
627
595
  };
628
596
  //# sourceMappingURL=engine.js.map