@peers-app/peers-ui 0.13.6 → 0.14.1

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 (86) hide show
  1. package/dist/components/left-bar.js +0 -9
  2. package/dist/components/router.js +0 -44
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.js +1 -1
  5. package/dist/mention-configs.d.ts +0 -2
  6. package/dist/mention-configs.js +1 -38
  7. package/dist/screens/search/global-search.js +2 -4
  8. package/dist/screens/settings/settings-page.js +26 -1
  9. package/dist/screens/workflows/workflow-details.js +5 -56
  10. package/dist/system-apps/index.d.ts +0 -4
  11. package/dist/system-apps/index.js +8 -25
  12. package/dist/ui-defaults/index.d.ts +0 -1
  13. package/dist/ui-defaults/index.js +0 -1
  14. package/dist/ui-defaults/list-screen.js +0 -1
  15. package/docs/tabs-ui.md +6 -21
  16. package/package.json +3 -3
  17. package/src/components/left-bar.tsx +0 -12
  18. package/src/components/router.tsx +0 -48
  19. package/src/index.tsx +2 -2
  20. package/src/mention-configs.ts +1 -40
  21. package/src/screens/search/global-search.tsx +2 -6
  22. package/src/screens/settings/settings-page.tsx +37 -0
  23. package/src/screens/workflows/workflow-details.tsx +3 -28
  24. package/src/system-apps/index.ts +8 -20
  25. package/src/ui-defaults/index.ts +0 -1
  26. package/src/ui-defaults/list-screen.tsx +0 -1
  27. package/dist/screens/events/cron.d.ts +0 -3
  28. package/dist/screens/events/cron.js +0 -77
  29. package/dist/screens/events/event-details.d.ts +0 -6
  30. package/dist/screens/events/event-details.js +0 -112
  31. package/dist/screens/events/event-handlers.d.ts +0 -7
  32. package/dist/screens/events/event-handlers.js +0 -84
  33. package/dist/screens/events/event-info.d.ts +0 -5
  34. package/dist/screens/events/event-info.js +0 -19
  35. package/dist/screens/events/event-list.d.ts +0 -2
  36. package/dist/screens/events/event-list.js +0 -107
  37. package/dist/screens/events/event-schedule.d.ts +0 -5
  38. package/dist/screens/events/event-schedule.js +0 -124
  39. package/dist/screens/knowledge/knowledge-frame-details.bk.d.ts +0 -6
  40. package/dist/screens/knowledge/knowledge-frame-details.bk.js +0 -84
  41. package/dist/screens/knowledge/knowledge-frame-details.d.ts +0 -8
  42. package/dist/screens/knowledge/knowledge-frame-details.js +0 -143
  43. package/dist/screens/knowledge/knowledge-frame-list.d.ts +0 -2
  44. package/dist/screens/knowledge/knowledge-frame-list.js +0 -45
  45. package/dist/screens/knowledge/knowledge-value-details.d.ts +0 -6
  46. package/dist/screens/knowledge/knowledge-value-details.js +0 -150
  47. package/dist/screens/knowledge/knowledge-value-list-item.d.ts +0 -5
  48. package/dist/screens/knowledge/knowledge-value-list-item.js +0 -39
  49. package/dist/screens/knowledge/knowledge-value-list.d.ts +0 -3
  50. package/dist/screens/knowledge/knowledge-value-list.js +0 -123
  51. package/dist/screens/predicates/predicate-details.d.ts +0 -6
  52. package/dist/screens/predicates/predicate-details.js +0 -103
  53. package/dist/screens/predicates/predicate-list.d.ts +0 -2
  54. package/dist/screens/predicates/predicate-list.js +0 -46
  55. package/dist/screens/workflows/workflow-subscriptions.d.ts +0 -6
  56. package/dist/screens/workflows/workflow-subscriptions.js +0 -81
  57. package/dist/system-apps/events.app.d.ts +0 -2
  58. package/dist/system-apps/events.app.js +0 -8
  59. package/dist/system-apps/knowledge-frames.app.d.ts +0 -2
  60. package/dist/system-apps/knowledge-frames.app.js +0 -9
  61. package/dist/system-apps/knowledge-values.app.d.ts +0 -2
  62. package/dist/system-apps/knowledge-values.app.js +0 -9
  63. package/dist/system-apps/predicates.app.d.ts +0 -2
  64. package/dist/system-apps/predicates.app.js +0 -8
  65. package/dist/ui-defaults/notes-editor.d.ts +0 -7
  66. package/dist/ui-defaults/notes-editor.js +0 -41
  67. package/src/screens/events/cron.ts +0 -74
  68. package/src/screens/events/event-details.tsx +0 -117
  69. package/src/screens/events/event-handlers.tsx +0 -61
  70. package/src/screens/events/event-info.tsx +0 -29
  71. package/src/screens/events/event-list.tsx +0 -104
  72. package/src/screens/events/event-schedule.tsx +0 -130
  73. package/src/screens/knowledge/knowledge-frame-details.bk.tsx +0 -160
  74. package/src/screens/knowledge/knowledge-frame-details.tsx +0 -176
  75. package/src/screens/knowledge/knowledge-frame-list.tsx +0 -49
  76. package/src/screens/knowledge/knowledge-value-details.tsx +0 -181
  77. package/src/screens/knowledge/knowledge-value-list-item.tsx +0 -48
  78. package/src/screens/knowledge/knowledge-value-list.tsx +0 -131
  79. package/src/screens/predicates/predicate-details.tsx +0 -125
  80. package/src/screens/predicates/predicate-list.tsx +0 -50
  81. package/src/screens/workflows/workflow-subscriptions.tsx +0 -58
  82. package/src/system-apps/events.app.ts +0 -7
  83. package/src/system-apps/knowledge-frames.app.ts +0 -8
  84. package/src/system-apps/knowledge-values.app.ts +0 -8
  85. package/src/system-apps/predicates.app.ts +0 -7
  86. package/src/ui-defaults/notes-editor.tsx +0 -51
@@ -112,19 +112,12 @@ const LeftBar = () => {
112
112
  };
113
113
  exports.LeftBar = LeftBar;
114
114
  const LeftBarContent = ({ width } = {}) => {
115
- const [contentPath] = (0, hooks_1.useObservable)(globals_1.mainContentPath);
116
115
  const [_isDesktop] = (0, hooks_1.useObservable)(globals_1.isDesktop);
117
116
  const barWidth = width ?? DEFAULT_LEFT_BAR_WIDTH;
118
117
  const packagesWithNavItems = (0, hooks_1.usePromise)(async () => {
119
118
  const packages = await (0, peers_sdk_1.Packages)().list();
120
119
  return packages.filter(pkg => pkg.appNavs?.length);
121
120
  }, []);
122
- const knowledgeSublinks = [
123
- { text: "Frames", icon: "bi bi-window-dock", path: "knowledge-frames", left: 15 },
124
- { text: "Predicates", icon: "bi bi-node-plus-fill", left: 15 },
125
- { text: "Graph", icon: "bi bi-diagram-3-fill", left: 15 },
126
- ];
127
- const knowledgeSublinkActive = contentPath.startsWith('knowledge-') || knowledgeSublinks.find(ks => contentPath.startsWith(ks.path || ks.text.toLowerCase()));
128
121
  const containerClassName = `d-flex flex-column flex-shrink-0 p-2 text-white ` + (_isDesktop ? 'bg-dark-subtle' : 'bg-dark');
129
122
  const content = (react_1.default.createElement("div", { className: containerClassName, style: { width: barWidth, height: "calc(100vh - 25px)" } },
130
123
  react_1.default.createElement("div", { className: "clearfix" },
@@ -157,8 +150,6 @@ const LeftBarContent = ({ width } = {}) => {
157
150
  react_1.default.createElement("hr", null),
158
151
  react_1.default.createElement(MenuSection, { menuItems: [
159
152
  { text: "Threads", icon: "bi bi-cpu", path: "shell" },
160
- { text: `Knowledge ${knowledgeSublinkActive ? '' : '+'}`, icon: "bi bi-journal-bookmark-fill", path: "knowledge-values" },
161
- ...(knowledgeSublinkActive && knowledgeSublinks || []),
162
153
  ] }),
163
154
  (packagesWithNavItems?.length ?? 0) > 0 && packagesWithNavItems?.map(p => react_1.default.createElement(PackageNavItems, { key: p.packageId, pkg: p }))));
164
155
  return content;
@@ -49,22 +49,14 @@ const tool_test_details_1 = require("../screens/tools/tool-test-details");
49
49
  const workflow_details_1 = require("../screens/workflows/workflow-details");
50
50
  const workflow_list_1 = require("../screens/workflows/workflow-list");
51
51
  const channel_view_1 = require("./messages/channel-view");
52
- const event_list_1 = require("../screens/events/event-list");
53
- const event_details_1 = require("../screens/events/event-details");
54
52
  const settings_page_1 = require("../screens/settings/settings-page");
55
53
  const package_details_1 = require("../screens/packages/package-details");
56
54
  const package_list_1 = require("../screens/packages/package-list");
57
55
  const package_new_local_1 = require("../screens/packages/package-new-local");
58
56
  const variable_list_1 = require("../screens/variables/variable-list");
59
57
  const variable_details_1 = require("../screens/variables/variable-details");
60
- const knowledge_frame_list_1 = require("../screens/knowledge/knowledge-frame-list");
61
- const knowledge_frame_details_1 = require("../screens/knowledge/knowledge-frame-details");
62
58
  const peer_type_list_1 = require("../screens/peer-types/peer-type-list");
63
59
  const peer_type_details_1 = require("../screens/peer-types/peer-type-details");
64
- const predicate_list_1 = require("../screens/predicates/predicate-list");
65
- const predicate_details_1 = require("../screens/predicates/predicate-details");
66
- const knowledge_value_list_1 = require("../screens/knowledge/knowledge-value-list");
67
- const knowledge_value_details_1 = require("../screens/knowledge/knowledge-value-details");
68
60
  const ui_loader_1 = require("../ui-router/ui-loader");
69
61
  const hooks_1 = require("../hooks");
70
62
  const thread_message_list_1 = require("./messages/thread-message-list");
@@ -154,15 +146,6 @@ function Router({ path: providedPath } = {}) {
154
146
  const toolId = parts[0];
155
147
  return react_1.default.createElement(tool_details_1.ToolDetails, { toolId: toolId });
156
148
  }
157
- if (path === 'events') {
158
- return react_1.default.createElement(event_list_1.PeerEventList, null);
159
- }
160
- if (path.match(/^events\//)) {
161
- const parts = path.split('/');
162
- parts.shift();
163
- const id = parts[0];
164
- return react_1.default.createElement(event_details_1.PeerEventDetails, { peerEventTypeId: id });
165
- }
166
149
  if (path === 'packages') {
167
150
  return react_1.default.createElement(package_list_1.PackageList, null);
168
151
  }
@@ -184,24 +167,6 @@ function Router({ path: providedPath } = {}) {
184
167
  const id = parts[0];
185
168
  return react_1.default.createElement(variable_details_1.VariableDetails, { persistentVarId: id });
186
169
  }
187
- if (path === 'knowledge-values') {
188
- return react_1.default.createElement(knowledge_value_list_1.KnowledgeValueList, null);
189
- }
190
- if (path.match(/^knowledge-values\/([a-zA-Z0-9]{25})/)) {
191
- const parts = path.split('/');
192
- parts.shift();
193
- const id = parts[0];
194
- return react_1.default.createElement(knowledge_value_details_1.KnowledgeValueDetails, { knowledgeValueId: id });
195
- }
196
- if (path === 'knowledge-frames') {
197
- return react_1.default.createElement(knowledge_frame_list_1.KnowledgeFrameList, null);
198
- }
199
- if (path.match(/^knowledge-frames\//)) {
200
- const parts = path.split('/');
201
- parts.shift();
202
- const id = parts[0];
203
- return react_1.default.createElement(knowledge_frame_details_1.KnowledgeFrameDetails, { knowledgeFrameId: id });
204
- }
205
170
  if (path === 'peer-types') {
206
171
  return react_1.default.createElement(peer_type_list_1.PeerTypeLists, null);
207
172
  }
@@ -211,15 +176,6 @@ function Router({ path: providedPath } = {}) {
211
176
  const id = parts[0];
212
177
  return react_1.default.createElement(peer_type_details_1.PeerTypeDetails, { peerTypeId: id });
213
178
  }
214
- if (path === 'predicates') {
215
- return react_1.default.createElement(predicate_list_1.PredicateList, null);
216
- }
217
- if (path.match(/^predicates\//)) {
218
- const parts = path.split('/');
219
- parts.shift();
220
- const id = parts[0];
221
- return react_1.default.createElement(predicate_details_1.PredicateDetails, { predicateId: id });
222
- }
223
179
  if (path.match(/^threads\//)) {
224
180
  const parts = path.split('/');
225
181
  parts.shift();
package/dist/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  export * from "./hooks";
2
- export * from "./screens/events/cron";
3
2
  export * from "./tabs-layout/tabs-layout";
4
3
  export { activeTabId, activeTabs, TabState, updateActiveTabTitle, closeCurrentTab, goToTabPath } from "./tabs-layout/tabs-state";
5
4
  export { mainContentPath } from "./globals";
@@ -10,3 +9,4 @@ export * from "./components/tabs";
10
9
  export * from "./components/inverse-lazy-list";
11
10
  export * from "./components/markdown-editor/editor-inline";
12
11
  export * from "./components/markdown-editor/editor";
12
+ export * from "./components/markdown-with-mentions";
package/dist/index.js CHANGED
@@ -16,7 +16,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.mainContentPath = exports.goToTabPath = exports.closeCurrentTab = exports.updateActiveTabTitle = exports.activeTabs = exports.activeTabId = void 0;
18
18
  __exportStar(require("./hooks"), exports);
19
- __exportStar(require("./screens/events/cron"), exports);
20
19
  __exportStar(require("./tabs-layout/tabs-layout"), exports);
21
20
  var tabs_state_1 = require("./tabs-layout/tabs-state");
22
21
  Object.defineProperty(exports, "activeTabId", { enumerable: true, get: function () { return tabs_state_1.activeTabId; } });
@@ -33,3 +32,4 @@ __exportStar(require("./components/tabs"), exports);
33
32
  __exportStar(require("./components/inverse-lazy-list"), exports);
34
33
  __exportStar(require("./components/markdown-editor/editor-inline"), exports);
35
34
  __exportStar(require("./components/markdown-editor/editor"), exports);
35
+ __exportStar(require("./components/markdown-with-mentions"), exports);
@@ -12,7 +12,5 @@ export declare const toolMentionConfig: IMentionConfig;
12
12
  export declare const userMentionConfig: IMentionConfig;
13
13
  export declare const assistantMentionConfig: IMentionConfig;
14
14
  export declare const workflowMentionConfig: IMentionConfig;
15
- export declare const peerEventTypeMentionConfig: IMentionConfig;
16
- export declare const predicateMentionConfig: IMentionConfig;
17
15
  export declare const valueTypeMentionConfig: IMentionConfig;
18
16
  export declare const mentionConfigs: IMentionConfig[];
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mentionConfigs = exports.valueTypeMentionConfig = exports.predicateMentionConfig = exports.peerEventTypeMentionConfig = exports.workflowMentionConfig = exports.assistantMentionConfig = exports.userMentionConfig = exports.toolMentionConfig = void 0;
3
+ exports.mentionConfigs = exports.valueTypeMentionConfig = exports.workflowMentionConfig = exports.assistantMentionConfig = exports.userMentionConfig = exports.toolMentionConfig = void 0;
4
4
  const peers_sdk_1 = require("@peers-app/peers-sdk");
5
5
  // import { MENTIONS_MAX_RESULTS } from "../client/components/markdown-editor/mentions-plugin";
6
6
  const MENTIONS_MAX_RESULTS = 10;
@@ -76,41 +76,6 @@ exports.workflowMentionConfig = {
76
76
  name: item.name
77
77
  }),
78
78
  };
79
- exports.peerEventTypeMentionConfig = {
80
- kind: 'event',
81
- iconClass: 'bi bi-lightning-charge-fill',
82
- styleClass: 'mention-event',
83
- query: async (search) => {
84
- return (0, peers_sdk_1.PeerEventTypes)().list({ name: { $matchWords: search } }, { pageSize: MENTIONS_MAX_RESULTS })
85
- .then((events) => events.map((event) => ({
86
- kind: 'event',
87
- id: event.peerEventTypeId,
88
- name: event.name,
89
- })));
90
- },
91
- getById: id => (0, peers_sdk_1.PeerEventTypes)().get(id).then(item => item && {
92
- kind: 'event',
93
- id: item.peerEventTypeId,
94
- name: item.name
95
- }),
96
- };
97
- exports.predicateMentionConfig = {
98
- kind: 'predicate',
99
- iconClass: 'bi bi-node-plus-fill',
100
- query: async (search) => {
101
- const results = await (0, peers_sdk_1.Predicates)().list({ name: { $matchWords: search } }, { pageSize: MENTIONS_MAX_RESULTS });
102
- return results.map(p => ({
103
- kind: 'predicate',
104
- id: p.predicateId,
105
- name: p.name
106
- }));
107
- },
108
- getById: id => (0, peers_sdk_1.Predicates)().get(id).then(item => item && {
109
- kind: 'predicate',
110
- id: item.predicateId,
111
- name: item.name
112
- }),
113
- };
114
79
  exports.valueTypeMentionConfig = {
115
80
  kind: 'type',
116
81
  iconClass: 'bi bi-code-square',
@@ -143,7 +108,5 @@ exports.mentionConfigs = [
143
108
  exports.userMentionConfig,
144
109
  exports.assistantMentionConfig,
145
110
  exports.workflowMentionConfig,
146
- exports.peerEventTypeMentionConfig,
147
- exports.predicateMentionConfig,
148
111
  exports.valueTypeMentionConfig,
149
112
  ];
@@ -61,8 +61,6 @@ function GlobalSearch() {
61
61
  { config: mention_configs_1.toolMentionConfig, category: 'Tools', navigationPath: 'tools' },
62
62
  { config: mention_configs_1.assistantMentionConfig, category: 'Assistants', navigationPath: 'assistants' },
63
63
  { config: mention_configs_1.workflowMentionConfig, category: 'Workflows', navigationPath: 'workflows' },
64
- { config: mention_configs_1.peerEventTypeMentionConfig, category: 'Events', navigationPath: 'events' },
65
- { config: mention_configs_1.predicateMentionConfig, category: 'Predicates', navigationPath: 'predicates' },
66
64
  { config: mention_configs_1.valueTypeMentionConfig, category: 'Types', navigationPath: 'peer-types' },
67
65
  { config: mention_configs_1.userMentionConfig, category: 'Users', navigationPath: 'profile' },
68
66
  ];
@@ -172,7 +170,7 @@ function GlobalSearch() {
172
170
  zIndex: 1,
173
171
  fontSize: '18px'
174
172
  } }),
175
- react_1.default.createElement("input", { ref: inputRef, type: "text", className: `form-control form-control-lg ${isDark ? 'bg-dark text-light border-secondary' : ''}`, placeholder: "Search across apps, tools, assistants, workflows, events, and more...", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), style: {
173
+ react_1.default.createElement("input", { ref: inputRef, type: "text", className: `form-control form-control-lg ${isDark ? 'bg-dark text-light border-secondary' : ''}`, placeholder: "Search across apps, tools, assistants, workflows, and more...", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), style: {
176
174
  paddingLeft: '50px',
177
175
  fontSize: '18px',
178
176
  borderRadius: '12px',
@@ -253,7 +251,7 @@ function GlobalSearch() {
253
251
  !searchQuery && (react_1.default.createElement("div", { className: "text-center py-5" },
254
252
  react_1.default.createElement("i", { className: "bi-search mb-3 d-block text-muted", style: { fontSize: '64px' } }),
255
253
  react_1.default.createElement("h3", { className: "text-muted mb-3" }, "Search across everything"),
256
- react_1.default.createElement("p", { className: "text-muted mb-4", style: { maxWidth: '400px', margin: '0 auto' } }, "Find apps, tools, assistants, workflows, events, predicates, types, and users all in one place."),
254
+ react_1.default.createElement("p", { className: "text-muted mb-4", style: { maxWidth: '400px', margin: '0 auto' } }, "Find apps, tools, assistants, workflows, types, and users all in one place."),
257
255
  react_1.default.createElement("div", { className: "d-flex flex-wrap justify-content-center gap-2" }, searchConfigs.map(({ config, category }) => (react_1.default.createElement("span", { key: category, className: `badge ${isDark ? 'bg-secondary' : 'bg-light text-dark'} px-3 py-2 d-flex align-items-center`, style: { fontSize: '12px' } },
258
256
  react_1.default.createElement("i", { className: `${config.iconClass} me-2` }),
259
257
  category))))))));
@@ -84,7 +84,8 @@ const AdvancedSettingsTab = () => {
84
84
  react_1.default.createElement(AutoUpdatePeersCore, null),
85
85
  react_1.default.createElement(ResetDeviceSyncInfos, null),
86
86
  react_1.default.createElement(DeleteLocalDatabase, null),
87
- react_1.default.createElement(ImportOldPeersData, null)));
87
+ react_1.default.createElement(ImportOldPeersData, null),
88
+ react_1.default.createElement(ResetChangeTracking, null)));
88
89
  };
89
90
  const ProfileSection = () => {
90
91
  const [deviceId] = (0, hooks_1.useObservable)(peers_sdk_1.thisDeviceId);
@@ -237,6 +238,30 @@ const DeleteLocalDatabase = () => {
237
238
  }
238
239
  } }, "Delete Local Database")));
239
240
  };
241
+ const ResetChangeTracking = () => {
242
+ const [busy, setBusy] = (0, react_1.useState)(false);
243
+ return (react_1.default.createElement("div", { className: "mt-4 pt-3 border-top" },
244
+ react_1.default.createElement("h6", { className: "mb-2" }, "Change tracking"),
245
+ react_1.default.createElement("small", { className: "text-muted d-block mb-2" }, "Clears all change history for the current group and rebuilds it from your current database rows. Device sync cursors are cleared; a full resync with peers may follow. Use when debugging sync issues."),
246
+ react_1.default.createElement("button", { className: "btn btn-warning btn-sm", disabled: busy, onClick: async () => {
247
+ const confirmed = window.confirm('Reset Change Tracking will clear all change history and rebuild it from scratch. This may take a while. Continue?');
248
+ if (!confirmed)
249
+ return;
250
+ setBusy(true);
251
+ try {
252
+ await peers_sdk_1.rpcServerCalls.resetChangeTracking();
253
+ await peers_sdk_1.rpcServerCalls.flushDatabases();
254
+ alert('Change tracking reset successfully.');
255
+ }
256
+ catch (err) {
257
+ console.error('Error while resetting change tracking', err);
258
+ alert('Failed to reset change tracking: ' + (err.message || String(err)));
259
+ }
260
+ finally {
261
+ setBusy(false);
262
+ }
263
+ } }, busy ? 'Resetting…' : 'Reset Change Tracking')));
264
+ };
240
265
  const IMPORT_TOOL_ID = '00mh0wlipkdbeaw8imptsk001';
241
266
  const ImportOldPeersData = () => {
242
267
  const fileInputRef = (0, react_1.useRef)(null);
@@ -1,41 +1,11 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
35
5
  Object.defineProperty(exports, "__esModule", { value: true });
36
6
  exports.WorkflowDetails = void 0;
37
7
  const peers_sdk_1 = require("@peers-app/peers-sdk");
38
- const react_1 = __importStar(require("react"));
8
+ const react_1 = __importDefault(require("react"));
39
9
  const input_1 = require("../../components/input");
40
10
  const loading_indicator_1 = require("../../components/loading-indicator");
41
11
  const save_button_1 = require("../../components/save-button");
@@ -45,7 +15,6 @@ const hooks_1 = require("../../hooks");
45
15
  const tabs_state_1 = require("../../tabs-layout/tabs-state");
46
16
  const workflow_info_1 = require("./workflow-info");
47
17
  const workflow_instructions_1 = require("./workflow-instructions");
48
- const workflow_subscriptions_1 = require("./workflow-subscriptions");
49
18
  const WorkflowDetails = (props) => {
50
19
  const workflow = (0, hooks_1.usePromise)(async () => {
51
20
  const workflow = await (0, peers_sdk_1.Workflows)().get(props.workflowId);
@@ -55,16 +24,7 @@ const WorkflowDetails = (props) => {
55
24
  (0, tabs_state_1.updateActiveTabTitle)(workflow.name || "Workflow");
56
25
  return (0, peers_sdk_1.Workflows)().initDoc(workflow);
57
26
  }, undefined, [props.workflowId]);
58
- const [handlers] = (0, react_1.useState)(() => (0, peers_sdk_1.observable)([]));
59
- const handlersLoaded = (0, hooks_1.usePromise)(async () => {
60
- if (!workflow)
61
- return false;
62
- const _handlers = await (0, peers_sdk_1.PeerEventHandlers)().list({ handlerWorkflowId: workflow.workflowId });
63
- handlers(_handlers);
64
- return true;
65
- }, false, [workflow]);
66
- const allLoaded = !!(workflow && handlersLoaded);
67
- if (!allLoaded) {
27
+ if (!workflow) {
68
28
  return react_1.default.createElement(loading_indicator_1.LoadingIndicator, null);
69
29
  }
70
30
  async function saveChanges() {
@@ -74,13 +34,6 @@ const WorkflowDetails = (props) => {
74
34
  const assistantsMentioned = await (0, peers_sdk_1.getAllAssistantIdsMentioned)(workflow.instructions[0].markdown ?? '');
75
35
  workflow.defaultAssistantId = assistantsMentioned[0] || peers_sdk_1.defaultAssistantId;
76
36
  workflow.save();
77
- const oldHandlers = await (0, peers_sdk_1.PeerEventHandlers)().list({ handlerWorkflowId: workflow.workflowId });
78
- for (const oldHandler of oldHandlers) {
79
- await (0, peers_sdk_1.PeerEventHandlers)().delete(oldHandler.peerEventHandlerId);
80
- }
81
- for (const handler of handlers()) {
82
- (0, peers_sdk_1.PeerEventHandlers)().save(handler, { restoreIfDeleted: true });
83
- }
84
37
  }
85
38
  return (react_1.default.createElement("div", { className: "container-fluid p-3" },
86
39
  react_1.default.createElement("div", { className: "d-flex" },
@@ -105,10 +58,6 @@ const WorkflowDetails = (props) => {
105
58
  name: 'Instructions', content: react_1.default.createElement(tabs_1.ScreenTabBody, null,
106
59
  react_1.default.createElement(workflow_instructions_1.WorkflowInstructions, { workflow: workflow }))
107
60
  },
108
- {
109
- name: 'Subscriptions', content: react_1.default.createElement(tabs_1.ScreenTabBody, null,
110
- react_1.default.createElement(workflow_subscriptions_1.WorkflowEventSubscriptions, { workflow: workflow, eventSubscriptions: handlers }))
111
- },
112
61
  ] })));
113
62
  };
114
63
  exports.WorkflowDetails = WorkflowDetails;
@@ -3,14 +3,10 @@ export { searchApp } from './search.app';
3
3
  export { assistantsApp } from './assistants.app';
4
4
  export { toolsApp } from './tools.app';
5
5
  export { workflowsApp } from './workflows.app';
6
- export { eventsApp } from './events.app';
7
6
  export { variablesApp } from './variables.app';
8
7
  export { typesApp } from './types.app';
9
8
  export { packagesApp } from './packages.app';
10
9
  export { threadsApp } from './threads.app';
11
- export { knowledgeValuesApp } from './knowledge-values.app';
12
- export { knowledgeFramesApp } from './knowledge-frames.app';
13
- export { predicatesApp } from './predicates.app';
14
10
  export { settingsApp } from './settings.app';
15
11
  export { groupsApp } from './groups.app';
16
12
  export { joinGroupApp } from './join-group.app';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.systemPackage = exports.systemApps = exports.mobileSettingsApp = exports.dataExplorerApp = exports.networkViewerApp = exports.consoleLogsApp = exports.contactsApp = exports.joinGroupApp = exports.groupsApp = exports.settingsApp = exports.predicatesApp = exports.knowledgeFramesApp = exports.knowledgeValuesApp = exports.threadsApp = exports.packagesApp = exports.typesApp = exports.variablesApp = exports.eventsApp = exports.workflowsApp = exports.toolsApp = exports.assistantsApp = exports.searchApp = void 0;
3
+ exports.systemPackage = exports.systemApps = exports.mobileSettingsApp = exports.dataExplorerApp = exports.networkViewerApp = exports.consoleLogsApp = exports.contactsApp = exports.joinGroupApp = exports.groupsApp = exports.settingsApp = exports.threadsApp = exports.packagesApp = exports.typesApp = exports.variablesApp = exports.workflowsApp = exports.toolsApp = exports.assistantsApp = exports.searchApp = void 0;
4
4
  // Import all system apps
5
5
  var search_app_1 = require("./search.app");
6
6
  Object.defineProperty(exports, "searchApp", { enumerable: true, get: function () { return search_app_1.searchApp; } });
@@ -10,8 +10,6 @@ var tools_app_1 = require("./tools.app");
10
10
  Object.defineProperty(exports, "toolsApp", { enumerable: true, get: function () { return tools_app_1.toolsApp; } });
11
11
  var workflows_app_1 = require("./workflows.app");
12
12
  Object.defineProperty(exports, "workflowsApp", { enumerable: true, get: function () { return workflows_app_1.workflowsApp; } });
13
- var events_app_1 = require("./events.app");
14
- Object.defineProperty(exports, "eventsApp", { enumerable: true, get: function () { return events_app_1.eventsApp; } });
15
13
  var variables_app_1 = require("./variables.app");
16
14
  Object.defineProperty(exports, "variablesApp", { enumerable: true, get: function () { return variables_app_1.variablesApp; } });
17
15
  var types_app_1 = require("./types.app");
@@ -20,12 +18,6 @@ var packages_app_1 = require("./packages.app");
20
18
  Object.defineProperty(exports, "packagesApp", { enumerable: true, get: function () { return packages_app_1.packagesApp; } });
21
19
  var threads_app_1 = require("./threads.app");
22
20
  Object.defineProperty(exports, "threadsApp", { enumerable: true, get: function () { return threads_app_1.threadsApp; } });
23
- var knowledge_values_app_1 = require("./knowledge-values.app");
24
- Object.defineProperty(exports, "knowledgeValuesApp", { enumerable: true, get: function () { return knowledge_values_app_1.knowledgeValuesApp; } });
25
- var knowledge_frames_app_1 = require("./knowledge-frames.app");
26
- Object.defineProperty(exports, "knowledgeFramesApp", { enumerable: true, get: function () { return knowledge_frames_app_1.knowledgeFramesApp; } });
27
- var predicates_app_1 = require("./predicates.app");
28
- Object.defineProperty(exports, "predicatesApp", { enumerable: true, get: function () { return predicates_app_1.predicatesApp; } });
29
21
  var settings_app_1 = require("./settings.app");
30
22
  Object.defineProperty(exports, "settingsApp", { enumerable: true, get: function () { return settings_app_1.settingsApp; } });
31
23
  var groups_app_1 = require("./groups.app");
@@ -47,14 +39,10 @@ const search_app_2 = require("./search.app");
47
39
  const assistants_app_2 = require("./assistants.app");
48
40
  const tools_app_2 = require("./tools.app");
49
41
  const workflows_app_2 = require("./workflows.app");
50
- const events_app_2 = require("./events.app");
51
42
  const variables_app_2 = require("./variables.app");
52
43
  const types_app_2 = require("./types.app");
53
44
  const packages_app_2 = require("./packages.app");
54
45
  const threads_app_2 = require("./threads.app");
55
- const knowledge_values_app_2 = require("./knowledge-values.app");
56
- const knowledge_frames_app_2 = require("./knowledge-frames.app");
57
- const predicates_app_2 = require("./predicates.app");
58
46
  const settings_app_2 = require("./settings.app");
59
47
  const groups_app_2 = require("./groups.app");
60
48
  const join_group_app_2 = require("./join-group.app");
@@ -72,29 +60,24 @@ exports.systemApps = [
72
60
  // Core Navigation & Search
73
61
  search_app_2.searchApp,
74
62
  threads_app_2.threadsApp,
75
- // Knowledge & Data
76
- knowledge_values_app_2.knowledgeValuesApp,
77
- knowledge_frames_app_2.knowledgeFramesApp,
78
- predicates_app_2.predicatesApp,
63
+ // System Tools & Debugging
64
+ network_viewer_app_2.networkViewerApp,
65
+ console_logs_app_2.consoleLogsApp,
66
+ data_explorer_app_2.dataExplorerApp,
79
67
  // Core Management Apps
80
- variables_app_2.variablesApp,
81
68
  types_app_2.typesApp,
82
- assistants_app_2.assistantsApp,
69
+ variables_app_2.variablesApp,
83
70
  tools_app_2.toolsApp,
84
71
  workflows_app_2.workflowsApp,
85
- events_app_2.eventsApp,
72
+ assistants_app_2.assistantsApp,
86
73
  packages_app_2.packagesApp,
74
+ contacts_app_2.contactsApp,
87
75
  groups_app_2.groupsApp,
88
76
  join_group_app_2.joinGroupApp,
89
- contacts_app_2.contactsApp,
90
77
  // User & Settings Apps
91
78
  settings_app_2.settingsApp,
92
79
  // Mobile Settings (only in React Native)
93
80
  ...(isReactNative() ? [mobile_settings_app_2.mobileSettingsApp] : []),
94
- // System Tools & Debugging
95
- console_logs_app_2.consoleLogsApp,
96
- network_viewer_app_2.networkViewerApp,
97
- data_explorer_app_2.dataExplorerApp,
98
81
  ];
99
82
  // Virtual system package for tabs integration
100
83
  exports.systemPackage = {
@@ -1,3 +1,2 @@
1
- import './notes-editor';
2
1
  import './list-screen';
3
2
  import './markdown-field';
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- require("./notes-editor");
4
3
  require("./list-screen");
5
4
  require("./markdown-field");
@@ -17,7 +17,6 @@ const DefaultListScreen = (props) => {
17
17
  const path = (0, globals_1.mainContentPath)().toLowerCase().trim().split('?')[0].split('#').pop()?.split('/')[0] || '';
18
18
  const fuzzyTableName = ({
19
19
  variables: 'persistent_vars',
20
- "events": 'peer_event_types',
21
20
  }[path] || path).replace(/[_-]/g, '').trim();
22
21
  const allTables = (0, peers_sdk_1.getAllTables)();
23
22
  const tableName = Object.keys(allTables).find(t => t.toLowerCase().replace(/[_-]/g, '').trim() === fuzzyTableName);
package/docs/tabs-ui.md CHANGED
@@ -456,14 +456,10 @@ const systemApps = [
456
456
  { name: 'Assistants', icon: 'bi-person-fill-gear', path: 'assistants' },
457
457
  { name: 'Tools', icon: 'bi-tools', path: 'tools' },
458
458
  { name: 'Workflows', icon: 'bi-database-fill-gear', path: 'workflows' },
459
- { name: 'Events', icon: 'bi-lightning-charge-fill', path: 'events' },
460
459
  { name: 'Packages', icon: 'bi-box-fill', path: 'packages' },
461
460
 
462
- // Knowledge & Communication
461
+ // Communication
463
462
  { name: 'Threads', icon: 'bi-cpu', path: 'shell' },
464
- { name: 'Knowledge Values', icon: 'bi-journal-bookmark-fill', path: 'knowledge-values' },
465
- { name: 'Knowledge Frames', icon: 'bi-window-dock', path: 'knowledge-frames' },
466
- { name: 'Predicates', icon: 'bi-node-plus-fill', path: 'predicates' },
467
463
 
468
464
  // User & Settings Apps
469
465
  { name: 'Profile', icon: 'bi-person-circle', path: 'profile' },
@@ -472,7 +468,7 @@ const systemApps = [
472
468
  ```
473
469
 
474
470
  ### App Categorization Logic
475
- - **System Apps**: Built-in core functionality (13 apps from former left sidebar + profile/settings)
471
+ - **System Apps**: Built-in core functionality (search, threads, variables, types, assistants, tools, workflows, packages, groups, settings, and debugging tools)
476
472
  - **User Apps**: All other packages with nav items
477
473
  - **Recently Used**: Cross-category recent apps section
478
474
  - **Dynamic Updates**: Automatically reflects package changes
@@ -487,30 +483,23 @@ src/system-apps/
487
483
  ├── assistants.app.ts # AI Assistant management
488
484
  ├── tools.app.ts # Tool management
489
485
  ├── workflows.app.ts # Workflow builder
490
- ├── events.app.ts # Event monitoring
491
486
  ├── variables.app.ts # Variable management
492
487
  ├── types.app.ts # Peer type definitions
493
488
  ├── packages.app.ts # Package management
494
489
  ├── threads.app.ts # Shell/communication
495
- ├── knowledge-values.app.ts # Knowledge data
496
- ├── knowledge-frames.app.ts # Knowledge structure
497
- ├── predicates.app.ts # Predicate logic
498
490
  ├── profile.app.ts # User profile
499
491
  └── settings.app.ts # Application settings
500
492
  ```
501
493
 
502
494
  ### Migration from Left Sidebar
503
- - **Complete Parity**: All left sidebar functionality preserved
504
- - **Enhanced Experience**: System functions now benefit from tabs (multiple instances, persistence)
495
+ - **Enhanced Experience**: System functions benefit from tabs (multiple instances, persistence)
505
496
  - **Modular Design**: Each app independently maintainable
506
- - **Consistent Interface**: Same icons and paths as original left bar
507
- - **No Functionality Loss**: All existing routing and features intact
497
+ - **Consistent Interface**: Icons and paths align with the main navigation where applicable
508
498
 
509
499
  ### Recent Improvements (Latest)
510
500
 
511
501
  #### Display Name Enhancement
512
502
  - **Name Truncation Solution**: Added `displayName` field to `IAppNav` interface
513
- - **Shorter Labels**: Knowledge apps now use "K-Values" and "K-Frames" instead of truncated full names
514
503
  - **Tooltip Support**: Full app names still visible on hover for context
515
504
  - **Visual Polish**: Increased spacing between app launcher sections for better visual separation
516
505
 
@@ -520,7 +509,7 @@ src/system-apps/
520
509
 
521
510
  #### System Apps Expansion
522
511
  - **Profile & Settings**: Added Profile and Settings as system apps to restore old left bar functionality
523
- - **Complete Coverage**: All original left bar items now available as individual apps (13 total)
512
+ - **Complete Coverage**: Core left bar items are available as individual apps
524
513
  - **Familiar Icons**: Used `bi-person-circle` for Profile and `bi-gear-fill` for Settings
525
514
 
526
515
  #### Smart Tab Management
@@ -616,12 +605,8 @@ const parseSystemAppTitle = (path: string, originalTitle: string): string => {
616
605
  'assistants': 'Assistant Details',
617
606
  'tools': segments[2] === 'tests' ? 'Tool Test Details' : 'Tool Details',
618
607
  'workflows': 'Workflow Details',
619
- 'events': 'Event Details',
620
608
  'variables': 'Variable Details',
621
- 'packages': 'Package Details',
622
- 'knowledge-values': 'Knowledge Value Details',
623
- 'knowledge-frames': 'Knowledge Frame Details',
624
- 'predicates': 'Predicate Details'
609
+ 'packages': 'Package Details'
625
610
  };
626
611
 
627
612
  return patterns[segments[0]] || `${originalTitle} - Details`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peers-app/peers-ui",
3
- "version": "0.13.6",
3
+ "version": "0.14.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/peers-app/peers-ui.git"
@@ -26,7 +26,7 @@
26
26
  "test:coverage": "jest --coverage"
27
27
  },
28
28
  "peerDependencies": {
29
- "@peers-app/peers-sdk": "^0.13.6",
29
+ "@peers-app/peers-sdk": "^0.14.1",
30
30
  "bootstrap": "^5.3.3",
31
31
  "react": "^18.0.0",
32
32
  "react-dom": "^18.0.0"
@@ -36,7 +36,7 @@
36
36
  "@babel/preset-env": "^7.24.5",
37
37
  "@babel/preset-react": "^7.24.1",
38
38
  "@babel/preset-typescript": "^7.27.1",
39
- "@peers-app/peers-sdk": "0.13.6",
39
+ "@peers-app/peers-sdk": "0.14.1",
40
40
  "@testing-library/dom": "^10.4.0",
41
41
  "@testing-library/jest-dom": "^6.6.3",
42
42
  "@testing-library/react": "^16.3.0",
@@ -101,7 +101,6 @@ export const LeftBar = () => {
101
101
  }
102
102
 
103
103
  export const LeftBarContent = ({ width }: { width?: number } = {}) => {
104
- const [contentPath] = useObservable(mainContentPath);
105
104
  const [_isDesktop] = useObservable(isDesktop);
106
105
  const barWidth = width ?? DEFAULT_LEFT_BAR_WIDTH;
107
106
 
@@ -110,14 +109,6 @@ export const LeftBarContent = ({ width }: { width?: number } = {}) => {
110
109
  return packages.filter(pkg => pkg.appNavs?.length);
111
110
  }, []);
112
111
 
113
- const knowledgeSublinks = [
114
- { text: "Frames", icon: "bi bi-window-dock", path: "knowledge-frames", left: 15 },
115
- { text: "Predicates", icon: "bi bi-node-plus-fill", left: 15 },
116
- { text: "Graph", icon: "bi bi-diagram-3-fill", left: 15 },
117
- ]
118
-
119
- const knowledgeSublinkActive = contentPath.startsWith('knowledge-') || knowledgeSublinks.find(ks => contentPath.startsWith(ks.path || ks.text.toLowerCase()));
120
-
121
112
  const containerClassName = `d-flex flex-column flex-shrink-0 p-2 text-white ` + (_isDesktop ? 'bg-dark-subtle' : 'bg-dark');
122
113
 
123
114
  const content = (
@@ -177,9 +168,6 @@ export const LeftBarContent = ({ width }: { width?: number } = {}) => {
177
168
  <MenuSection
178
169
  menuItems={[
179
170
  { text: "Threads", icon: "bi bi-cpu", path: "shell" },
180
-
181
- { text: `Knowledge ${knowledgeSublinkActive ? '' : '+'}`, icon: "bi bi-journal-bookmark-fill", path: "knowledge-values" },
182
- ...(knowledgeSublinkActive && knowledgeSublinks || []),
183
171
  ]}
184
172
  />
185
173