@agent-native/dispatch 0.40.40 → 0.40.41-beta-dispatch-embed-01a15dc9-20261027050558

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 (45) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/actions/create_embed_session.js +1 -0
  3. package/dist/actions/create_embed_session.js.map +1 -1
  4. package/dist/actions/delete-destination.d.ts +12 -12
  5. package/dist/actions/provider-api-register.d.ts +13 -13
  6. package/dist/components/layout/Layout.d.ts.map +1 -1
  7. package/dist/components/layout/Layout.js +8 -11
  8. package/dist/components/layout/Layout.js.map +1 -1
  9. package/dist/components/workspace-app-host.d.ts.map +1 -1
  10. package/dist/components/workspace-app-host.js +23 -10
  11. package/dist/components/workspace-app-host.js.map +1 -1
  12. package/dist/lib/workspace-apps.d.ts +2 -2
  13. package/dist/lib/workspace-apps.d.ts.map +1 -1
  14. package/dist/lib/workspace-apps.js +35 -5
  15. package/dist/lib/workspace-apps.js.map +1 -1
  16. package/dist/server/lib/app-creation-store.d.ts.map +1 -1
  17. package/dist/server/lib/app-creation-store.js +173 -48
  18. package/dist/server/lib/app-creation-store.js.map +1 -1
  19. package/dist/server/lib/community-apps.js +1 -1
  20. package/dist/server/lib/community-apps.js.map +1 -1
  21. package/dist/server/lib/mcp-gateway.d.ts +1 -0
  22. package/dist/server/lib/mcp-gateway.d.ts.map +1 -1
  23. package/dist/server/lib/mcp-gateway.js +170 -38
  24. package/dist/server/lib/mcp-gateway.js.map +1 -1
  25. package/dist/server/lib/provider-api.d.ts +2 -2
  26. package/dist/shared/workspace-app-route.d.ts +2 -0
  27. package/dist/shared/workspace-app-route.d.ts.map +1 -0
  28. package/dist/shared/workspace-app-route.js +4 -0
  29. package/dist/shared/workspace-app-route.js.map +1 -0
  30. package/package.json +4 -4
  31. package/src/actions/create_embed_session.ts +1 -0
  32. package/src/actions/index.spec.ts +3 -0
  33. package/src/components/layout/Layout.spec.tsx +39 -9
  34. package/src/components/layout/Layout.tsx +19 -40
  35. package/src/components/workspace-app-host.spec.tsx +88 -1
  36. package/src/components/workspace-app-host.tsx +30 -9
  37. package/src/lib/workspace-apps.spec.ts +64 -5
  38. package/src/lib/workspace-apps.ts +36 -6
  39. package/src/routes/pages/apps.$appId.spec.tsx +21 -3
  40. package/src/server/lib/app-creation-store.spec.ts +502 -11
  41. package/src/server/lib/app-creation-store.ts +198 -50
  42. package/src/server/lib/community-apps.ts +1 -1
  43. package/src/server/lib/mcp-gateway.spec.ts +396 -9
  44. package/src/server/lib/mcp-gateway.ts +209 -45
  45. package/src/shared/workspace-app-route.ts +3 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,47 @@
1
1
  # @agent-native/dispatch
2
2
 
3
+ ## 0.40.41-beta-dispatch-embed-01a15dc9-20261027050558
4
+
5
+ ### Patch Changes
6
+
7
+ - 64b6332: Route Workspace app links through Dispatch's nested app route so child pages resolve on mounted deployments.
8
+ - 1fe5d77: Support member-scoped MCP identity delegation and preserve Workspace app deep links through flat route shells.
9
+ - e086032: Apps that Dispatch creates keep first-run onboarding off in development, like the first-party templates, so a local run opens straight into the app.
10
+ - e548712: Embed a workspace app by its own path when its registry `url` is this Dispatch's page for it. The embed request was rejected and the fallback framed Dispatch inside Dispatch, so apps with a home page of `/` rendered blank and apps with another home page returned 404.
11
+ - 0ab7e59: Chat history row menus in the Dispatch sidebar now use text-only menu items that join arrow-key navigation and typeahead, so Copy session ID and Watch session are reachable from the keyboard. Archiving a chat from that menu is no longer styled as a destructive action, since archived chats can be restored.
12
+ - f635856: Allow Dispatch to pair with the next Core prerelease series.
13
+ - f635856: Preserve app-only visibility when Dispatch overrides the built-in embed helper so Workspace app sessions reach their iframe without exposing the one-time ticket to the model.
14
+ - 2e8f454: Compile with `noImplicitOverride` and `noFallthroughCasesInSwitch`, and, where the code already passes them, `noUncheckedIndexedAccess` and `exactOptionalPropertyTypes`. Optional fields that legitimately hold `undefined` are now typed `T | undefined`. No runtime behavior changes.
15
+ - 62b1459: Fix embedded workspace app chats on path-mounted deployments.
16
+ - Updated dependencies [0ab7e59]
17
+ - Updated dependencies [f717042]
18
+ - Updated dependencies [0ab7e59]
19
+ - Updated dependencies [0ab7e59]
20
+ - Updated dependencies [0ab7e59]
21
+ - Updated dependencies [0ab7e59]
22
+ - Updated dependencies [0ab7e59]
23
+ - Updated dependencies [0ab7e59]
24
+ - Updated dependencies [0ab7e59]
25
+ - Updated dependencies [0ab7e59]
26
+ - Updated dependencies [c2a6e7e]
27
+ - Updated dependencies [c2a6e7e]
28
+ - Updated dependencies [369ceab]
29
+ - Updated dependencies [d569c61]
30
+ - Updated dependencies [e086032]
31
+ - Updated dependencies [ee67a21]
32
+ - Updated dependencies [ef8111a]
33
+ - Updated dependencies [0ab7e59]
34
+ - Updated dependencies [7199312]
35
+ - Updated dependencies [0ab7e59]
36
+ - Updated dependencies [f20824d]
37
+ - Updated dependencies [0ab7e59]
38
+ - Updated dependencies [a9c0fa9]
39
+ - Updated dependencies [eaa780a]
40
+ - Updated dependencies [82efd47]
41
+ - Updated dependencies [0ab7e59]
42
+ - Updated dependencies [2e8f454]
43
+ - @agent-native/toolkit@0.221.0-beta-dispatch-embed-01a15dc9-20261027050558
44
+
3
45
  ## 0.40.40
4
46
 
5
47
  ### Patch Changes
@@ -23,6 +23,7 @@ export default defineAction({
23
23
  }),
24
24
  readOnly: false,
25
25
  parallelSafe: true,
26
+ mcpApp: { visibility: ["app"] },
26
27
  run: async (args) => createGrantedDispatchMcpEmbedSession(args),
27
28
  });
28
29
  //# sourceMappingURL=create_embed_session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create_embed_session.js","sourceRoot":"","sources":["../../src/actions/create_embed_session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oCAAoC,EAAE,MAAM,8BAA8B,CAAC;AAEpF,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,iJAAiJ;IACnJ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,GAAG,EAAE,CAAC;aACH,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,oDAAoD,CAAC;QACjE,GAAG,EAAE,CAAC;aACH,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,0DAA0D,CAAC;QACvE,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,2DAA2D,CAAC;QACxE,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;aACzB,QAAQ,EAAE;aACV,QAAQ,CAAC,4CAA4C,CAAC;KAC1D,CAAC;IACF,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,IAAI;IAClB,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,oCAAoC,CAAC,IAAI,CAAC;CAChE,CAAC,CAAC","sourcesContent":["import { defineAction } from \"@agent-native/core/action\";\nimport { z } from \"zod\";\n\nimport { createGrantedDispatchMcpEmbedSession } from \"../server/lib/mcp-gateway.js\";\n\nexport default defineAction({\n description:\n \"MCP Apps helper: create a browser embed session for a Dispatch-granted app URL. Usually called by an MCP App iframe, not directly by the model.\",\n schema: z.object({\n app: z\n .string()\n .optional()\n .describe(\"Optional granted app id when path is app-relative.\"),\n url: z\n .string()\n .optional()\n .describe(\"Absolute URL returned by open_app, or app-relative path.\"),\n path: z\n .string()\n .optional()\n .describe(\"App-relative path. Requires app when url is not provided.\"),\n chrome: z\n .enum([\"full\", \"minimal\"])\n .optional()\n .describe(\"Embed chrome preference. Defaults to full.\"),\n }),\n readOnly: false,\n parallelSafe: true,\n run: async (args) => createGrantedDispatchMcpEmbedSession(args),\n});\n"]}
1
+ {"version":3,"file":"create_embed_session.js","sourceRoot":"","sources":["../../src/actions/create_embed_session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oCAAoC,EAAE,MAAM,8BAA8B,CAAC;AAEpF,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,iJAAiJ;IACnJ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,GAAG,EAAE,CAAC;aACH,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,oDAAoD,CAAC;QACjE,GAAG,EAAE,CAAC;aACH,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,0DAA0D,CAAC;QACvE,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,2DAA2D,CAAC;QACxE,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;aACzB,QAAQ,EAAE;aACV,QAAQ,CAAC,4CAA4C,CAAC;KAC1D,CAAC;IACF,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE;IAC/B,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,oCAAoC,CAAC,IAAI,CAAC;CAChE,CAAC,CAAC","sourcesContent":["import { defineAction } from \"@agent-native/core/action\";\nimport { z } from \"zod\";\n\nimport { createGrantedDispatchMcpEmbedSession } from \"../server/lib/mcp-gateway.js\";\n\nexport default defineAction({\n description:\n \"MCP Apps helper: create a browser embed session for a Dispatch-granted app URL. Usually called by an MCP App iframe, not directly by the model.\",\n schema: z.object({\n app: z\n .string()\n .optional()\n .describe(\"Optional granted app id when path is app-relative.\"),\n url: z\n .string()\n .optional()\n .describe(\"Absolute URL returned by open_app, or app-relative path.\"),\n path: z\n .string()\n .optional()\n .describe(\"App-relative path. Requires app when url is not provided.\"),\n chrome: z\n .enum([\"full\", \"minimal\"])\n .optional()\n .describe(\"Embed chrome preference. Defaults to full.\"),\n }),\n readOnly: false,\n parallelSafe: true,\n mcpApp: { visibility: [\"app\"] },\n run: async (args) => createGrantedDispatchMcpEmbedSession(args),\n});\n"]}
@@ -1,6 +1,18 @@
1
1
  declare const _default: import("@agent-native/core/action").ActionDefinition<{
2
2
  id: string;
3
3
  }, {
4
+ id: string;
5
+ ownerEmail: string;
6
+ orgId: string | null;
7
+ name: string;
8
+ platform: string;
9
+ destination: string;
10
+ threadRef: string | null;
11
+ notes: string | null;
12
+ createdBy: string;
13
+ createdAt: number;
14
+ updatedAt: number;
15
+ } | {
4
16
  id: string;
5
17
  ownerEmail: string;
6
18
  orgId: string | null;
@@ -17,18 +29,6 @@ declare const _default: import("@agent-native/core/action").ActionDefinition<{
17
29
  reviewedAt: number | null;
18
30
  createdAt: number;
19
31
  updatedAt: number;
20
- } | {
21
- id: string;
22
- ownerEmail: string;
23
- orgId: string | null;
24
- name: string;
25
- platform: string;
26
- destination: string;
27
- threadRef: string | null;
28
- notes: string | null;
29
- createdBy: string;
30
- createdAt: number;
31
- updatedAt: number;
32
32
  }>;
33
33
  export default _default;
34
34
  //# sourceMappingURL=delete-destination.d.ts.map
@@ -47,10 +47,8 @@ declare const _default: import("node_modules/@agent-native/core/dist").ActionDef
47
47
  notes?: string | undefined;
48
48
  scope?: "org" | "user" | undefined;
49
49
  }, {
50
- message?: undefined;
51
- id?: undefined;
52
- deleted?: undefined;
53
50
  provider?: undefined;
51
+ id?: undefined;
54
52
  providers: {
55
53
  id: string;
56
54
  label: string;
@@ -62,44 +60,46 @@ declare const _default: import("node_modules/@agent-native/core/dist").ActionDef
62
60
  }[];
63
61
  count: number;
64
62
  found?: undefined;
63
+ deleted?: undefined;
65
64
  registered?: undefined;
66
65
  label?: undefined;
67
- } | {
68
66
  message?: undefined;
67
+ } | {
69
68
  id?: undefined;
70
- deleted?: undefined;
71
- count?: undefined;
72
69
  providers?: undefined;
70
+ count?: undefined;
73
71
  found: boolean;
74
72
  provider: import("node_modules/@agent-native/core/dist/provider-api").CustomProviderConfig;
73
+ deleted?: undefined;
75
74
  registered?: undefined;
76
75
  label?: undefined;
77
- } | {
78
76
  message?: undefined;
79
- deleted?: undefined;
77
+ } | {
80
78
  provider?: undefined;
81
- count?: undefined;
82
79
  providers?: undefined;
80
+ count?: undefined;
83
81
  found: boolean;
84
82
  id: string;
83
+ deleted?: undefined;
85
84
  registered?: undefined;
86
85
  label?: undefined;
87
- } | {
88
86
  message?: undefined;
87
+ } | {
89
88
  provider?: undefined;
90
- count?: undefined;
91
89
  providers?: undefined;
90
+ count?: undefined;
92
91
  found?: undefined;
93
92
  deleted: boolean;
94
93
  id: string;
95
94
  registered?: undefined;
96
95
  label?: undefined;
96
+ message?: undefined;
97
97
  } | {
98
- deleted?: undefined;
99
98
  provider?: undefined;
100
- count?: undefined;
101
99
  providers?: undefined;
100
+ count?: undefined;
102
101
  found?: undefined;
102
+ deleted?: undefined;
103
103
  registered: boolean;
104
104
  id: string;
105
105
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Layout.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Layout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAiBL,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EAWlC,MAAM,sCAAsC,CAAC;AAM9C,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,yCAAyC,CAAC;AAWjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAC;AACjG,OAAO,KAAK,EAEV,gBAAgB,EAChB,aAAa,EAEd,MAAM,iDAAiD,CAAC;AAkCzD,OAAO,EAQL,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAYf,OAAO,EAaL,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAC;AAsClC,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAExE,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,YAAY,CAAC;AAE1D,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC;IAC1C,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAEH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACtC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B;AAmDD,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,uBAAwB,SAAQ,yBAAyB;IACxE,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,kBAAkB,CAAC,EAAE,4BAA4B,CAAC;IAClD,0BAA0B,CAAC,EAAE,CAAC,MAAM,EAAE,4BAA4B,KAAK,IAAI,CAAC;IAC5E,aAAa,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC5C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,yBAAyB,CAAC,EAAE,mBAAmB,CAAC;IAChD,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACrD,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,mBAAoB,SAAQ,yBAAyB;IACpE,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAKD,eAAO,MAAM,0CAA0C,gCACxB,CAAC;AAwBhC,UAAU,4BAA4B;IACpC,aAAa,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,qBAAqB,GAAG,uBAAuB,CAAC;IACjE,OAAO,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAKD,wBAAgB,qBAAqB,IAAI,uBAAuB,GAAG,SAAS,CAE3E;AAED,wBAAgB,+BAA+B,wCAE9C;AA0CD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE3E;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,OAAO,EACpB,aAAa,EAAE,OAAO,GACrB,OAAO,CAET;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAKT;AAyBD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ1D;AAshBD,wBAAgB,UAAU,CAAC,EACzB,UAAU,EACV,UAAU,EACV,SAAkC,EAClC,SAAS,EACT,aAAqB,EACrB,iBAAyB,EACzB,SAAiB,EACjB,WAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,EAC1B,aAAkB,EAClB,oBAA4B,EAC5B,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,EAAE,uBAAuB,mDAsRzB;AAED,wBAAgB,4BAA4B,CAAC,EAC3C,YAAY,EACZ,SAAS,EACT,OAAO,EACP,eAAe,EACf,IAAI,GACL,EAAE;IACD,YAAY,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;IACzB,IAAI,EAAE,aAAa,CAAC;CACrB,GAAG,SAAS,CAuCZ;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,mBAAmB,mDAMhD"}
1
+ {"version":3,"file":"Layout.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Layout.tsx"],"names":[],"mappings":"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"}
@@ -14,8 +14,9 @@ import { InvitationBanner, OrgSwitcher } from "@agent-native/toolkit/app/org";
14
14
  import { RunsTray } from "@agent-native/toolkit/app/progress";
15
15
  import { isSettingsPathname } from "@agent-native/toolkit/app/settings";
16
16
  import { AppSidebarFooter, AppSidebarHeader, openCommandMenu, } from "@agent-native/toolkit/app/shared";
17
+ import { ChatHistoryMenuItem } from "@agent-native/toolkit/chat-history";
17
18
  import { writeClipboardText } from "@agent-native/toolkit/clipboard";
18
- import { IconApps, IconBrandSlack, IconBrandTelegram, IconCopy, IconEye, IconHierarchy2, IconMessageQuestion, IconBroadcast, IconLayoutSidebar, IconLayoutSidebarLeftCollapse, IconLayoutSidebarLeftExpand, IconSettings, IconShield, IconWorld, IconDeviceDesktop, IconPlus, } from "@tabler/icons-react";
19
+ import { IconApps, IconBrandSlack, IconBrandTelegram, IconHierarchy2, IconMessageQuestion, IconBroadcast, IconLayoutSidebar, IconLayoutSidebarLeftCollapse, IconLayoutSidebarLeftExpand, IconSettings, IconShield, IconWorld, IconDeviceDesktop, IconPlus, } from "@tabler/icons-react";
19
20
  import { createContext, useEffect, useMemo, useRef, useState, useContext, useCallback, } from "react";
20
21
  import { Link, useLocation, useNavigate } from "react-router";
21
22
  import { toast } from "sonner";
@@ -452,22 +453,20 @@ function DispatchChatsSection({ onNavigate, showNewChat = false, prelude, chatFi
452
453
  pin: t("agentChat.contextXray.pin"),
453
454
  unpin: t("agentChat.contextXray.unpin"),
454
455
  delete: t("extensions.delete"),
455
- }, renderAdditionalRowActions: (item, closeMenu) => (_jsxs(_Fragment, { children: [_jsxs("button", { type: "button", role: "menuitem", className: "an-chat-history-row__menu-item", onClick: () => {
456
- closeMenu();
456
+ }, renderAdditionalRowActions: (item) => (_jsxs(_Fragment, { children: [_jsx(ChatHistoryMenuItem, { onSelect: () => {
457
457
  void writeClipboardText(item.id).then((copied) => {
458
458
  toast[copied ? "success" : "error"](copied
459
459
  ? chatFirstCopy("sessionIdCopied")
460
460
  : t("agentChat.recovery.copyFailed"));
461
461
  });
462
- }, children: [_jsx(IconCopy, { size: 13, strokeWidth: 1.8 }), _jsx("span", { children: chatFirstCopy("copySessionId") })] }), !chatFirstEmbedded ? (_jsxs("button", { type: "button", role: "menuitem", className: "an-chat-history-row__menu-item", onClick: () => {
463
- closeMenu();
462
+ }, children: chatFirstCopy("copySessionId") }), !chatFirstEmbedded ? (_jsx(ChatHistoryMenuItem, { onSelect: () => {
464
463
  emitChatFirstSessionWatch({
465
464
  sessionId: item.id,
466
465
  title: item.titleText,
467
466
  kind: "agent-chat",
468
467
  sourceSessionId: displayedActiveThreadId ?? undefined,
469
468
  });
470
- }, children: [_jsx(IconEye, { size: 13, strokeWidth: 1.8 }), _jsx("span", { children: chatFirstCopy("watchSession") })] })) : null] })), className: "min-w-0 px-2" })) : !collapsedChatFirst && !chatFirstMode ? (_jsx(OwnershipChatHistoryRail, { sections: history.sections, listProps: listProps, activeId: displayedActiveThreadId, onSelect: (threadId) => openThread(threadId), onNewChat: () => void handleNewChat(), railLabels: {
469
+ }, children: chatFirstCopy("watchSession") })) : null] })), className: "min-w-0 px-2" })) : !collapsedChatFirst && !chatFirstMode ? (_jsx(OwnershipChatHistoryRail, { sections: history.sections, listProps: listProps, activeId: displayedActiveThreadId, onSelect: (threadId) => openThread(threadId), onNewChat: () => void handleNewChat(), railLabels: {
471
470
  newChat: t("dispatch.sidebar.newChat"),
472
471
  }, renameMaxLength: 160, labels: {
473
472
  options: (item) => t("dispatch.sidebar.chatOptions", {
@@ -480,22 +479,20 @@ function DispatchChatsSection({ onNavigate, showNewChat = false, prelude, chatFi
480
479
  pin: t("agentChat.contextXray.pin"),
481
480
  unpin: t("agentChat.contextXray.unpin"),
482
481
  delete: t("extensions.delete"),
483
- }, renderAdditionalRowActions: (item, closeMenu) => (_jsxs(_Fragment, { children: [_jsxs("button", { type: "button", role: "menuitem", className: "an-chat-history-row__menu-item", onClick: () => {
484
- closeMenu();
482
+ }, renderAdditionalRowActions: (item) => (_jsxs(_Fragment, { children: [_jsx(ChatHistoryMenuItem, { onSelect: () => {
485
483
  void writeClipboardText(item.id).then((copied) => {
486
484
  toast[copied ? "success" : "error"](copied
487
485
  ? chatFirstCopy("sessionIdCopied")
488
486
  : t("agentChat.recovery.copyFailed"));
489
487
  });
490
- }, children: [_jsx(IconCopy, { size: 13, strokeWidth: 1.8 }), _jsx("span", { children: chatFirstCopy("copySessionId") })] }), chatFirstMode && !chatFirstEmbedded ? (_jsxs("button", { type: "button", role: "menuitem", className: "an-chat-history-row__menu-item", onClick: () => {
491
- closeMenu();
488
+ }, children: chatFirstCopy("copySessionId") }), chatFirstMode && !chatFirstEmbedded ? (_jsx(ChatHistoryMenuItem, { onSelect: () => {
492
489
  emitChatFirstSessionWatch({
493
490
  sessionId: item.id,
494
491
  title: item.titleText,
495
492
  kind: "agent-chat",
496
493
  sourceSessionId: displayedActiveThreadId ?? undefined,
497
494
  });
498
- }, children: [_jsx(IconEye, { size: 13, strokeWidth: 1.8 }), _jsx("span", { children: chatFirstCopy("watchSession") })] })) : null] })), className: "min-w-0 px-2" })) : null] }));
495
+ }, children: chatFirstCopy("watchSession") })) : null] })), className: "min-w-0 px-2" })) : null] }));
499
496
  }
500
497
  export function NavContent({ onNavigate, extensions, brandName = DISPATCH_SIDEBAR_LABEL, brandIcon, chatFirstMode = false, chatFirstEmbedded = false, collapsed = false, collapsible = false, onCollapsedChange, chatFirstAppLayout, onChatFirstAppLayoutChange, chatFirstApps = [], chatFirstAppsLoading = false, chatFirstAppsError, chatFirstActiveAppId, chatFirstActivePrimaryTab, onChatFirstNewChat, onChatFirstAppOpen, onChatFirstAppsRetry, }) {
501
498
  const t = useT();