@yancyyu/openhermit 1.5.8 → 1.5.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -1
- package/bin/alias-loader.mjs +51 -0
- package/bin/hermit.mjs +14 -5
- package/dist-renderer/assets/{ProjectEditorOverlay-BNoDw9T1.js → ProjectEditorOverlay-C5D83Zxv.js} +1 -1
- package/dist-renderer/assets/{TeamGraphOverlay-CfGRKQIu.js → TeamGraphOverlay-ajzuM1-u.js} +1 -1
- package/dist-renderer/assets/{_basePickBy-Ct8Hm5_h.js → _basePickBy-C9H2zmVj.js} +1 -1
- package/dist-renderer/assets/{_baseUniq-BofrAFBx.js → _baseUniq-CpGZGemc.js} +1 -1
- package/dist-renderer/assets/{arc-AbJgatzR.js → arc-CbGBDw-m.js} +1 -1
- package/dist-renderer/assets/{architectureDiagram-VXUJARFQ-gpniCJVk.js → architectureDiagram-VXUJARFQ-nuKXUIpb.js} +1 -1
- package/dist-renderer/assets/{blockDiagram-VD42YOAC-aBbbmONC.js → blockDiagram-VD42YOAC-DHUUE7Jc.js} +1 -1
- package/dist-renderer/assets/{c4Diagram-YG6GDRKO-DJio1IsU.js → c4Diagram-YG6GDRKO-OILHhqLM.js} +1 -1
- package/dist-renderer/assets/channel-DpUKLLrj.js +1 -0
- package/dist-renderer/assets/{chunk-4BX2VUAB-D1_HKao2.js → chunk-4BX2VUAB-dqNpZaQ8.js} +1 -1
- package/dist-renderer/assets/{chunk-55IACEB6-NAmVxF4k.js → chunk-55IACEB6-BCoSJQM-.js} +1 -1
- package/dist-renderer/assets/{chunk-B4BG7PRW-Ce829laz.js → chunk-B4BG7PRW-BLbg8yVR.js} +1 -1
- package/dist-renderer/assets/{chunk-DI55MBZ5-Ct2Le12y.js → chunk-DI55MBZ5-CUUWOs1Q.js} +1 -1
- package/dist-renderer/assets/{chunk-FMBD7UC4-Cie3DzKk.js → chunk-FMBD7UC4-D9geTN5P.js} +1 -1
- package/dist-renderer/assets/{chunk-QN33PNHL-4f5Yb50e.js → chunk-QN33PNHL-BGT8-BRX.js} +1 -1
- package/dist-renderer/assets/{chunk-QZHKN3VN-D9ranl9c.js → chunk-QZHKN3VN-CC8ebGaM.js} +1 -1
- package/dist-renderer/assets/{chunk-TZMSLE5B-bdGZWlEy.js → chunk-TZMSLE5B-CajekcT6.js} +1 -1
- package/dist-renderer/assets/classDiagram-2ON5EDUG-LL85aSlz.js +1 -0
- package/dist-renderer/assets/classDiagram-v2-WZHVMYZB-LL85aSlz.js +1 -0
- package/dist-renderer/assets/clone-BHWsFzFA.js +1 -0
- package/dist-renderer/assets/{cose-bilkent-S5V4N54A-C6tvfcVi.js → cose-bilkent-S5V4N54A-C_x7hSy3.js} +1 -1
- package/dist-renderer/assets/{dagre-6UL2VRFP-B-4qcZam.js → dagre-6UL2VRFP-C4Y1k4DZ.js} +1 -1
- package/dist-renderer/assets/{diagram-PSM6KHXK-CwT3TLjx.js → diagram-PSM6KHXK-oRIeULoh.js} +1 -1
- package/dist-renderer/assets/{diagram-QEK2KX5R-BWH6-ZFd.js → diagram-QEK2KX5R-DwSqw5HF.js} +1 -1
- package/dist-renderer/assets/{diagram-S2PKOQOG-DfpPnfi1.js → diagram-S2PKOQOG-DqjGYje2.js} +1 -1
- package/dist-renderer/assets/{erDiagram-Q2GNP2WA-BFbEFR4x.js → erDiagram-Q2GNP2WA-CEV5bBgg.js} +1 -1
- package/dist-renderer/assets/{flowDiagram-NV44I4VS-Dg3cf5hW.js → flowDiagram-NV44I4VS-BQQkrRyu.js} +1 -1
- package/dist-renderer/assets/{ganttDiagram-JELNMOA3-B21y55W5.js → ganttDiagram-JELNMOA3-CLy4WR1G.js} +1 -1
- package/dist-renderer/assets/{gitGraphDiagram-V2S2FVAM-BDV3BJzn.js → gitGraphDiagram-V2S2FVAM-6W3ioQu_.js} +1 -1
- package/dist-renderer/assets/{graph-BfaZ4hZt.js → graph-BnLKQvhH.js} +1 -1
- package/dist-renderer/assets/{index-CCqtDawH.js → index-B4aiRxoU.js} +1 -1
- package/dist-renderer/assets/{index-pMg_LlsS.js → index-B8lKqPVq.js} +1 -1
- package/dist-renderer/assets/{index-CZltVMDP.js → index-BRuhNKyU.js} +12 -12
- package/dist-renderer/assets/{index-BMXHMpkG.js → index-BufvLVIl.js} +1 -1
- package/dist-renderer/assets/{index-Ct0-y9TF.js → index-C1xShqKH.js} +1 -1
- package/dist-renderer/assets/{index-CVMSpK8C.js → index-zIOLLI7O.js} +1 -1
- package/dist-renderer/assets/{infoDiagram-HS3SLOUP-DvMlS0CL.js → infoDiagram-HS3SLOUP-BoBweEEY.js} +1 -1
- package/dist-renderer/assets/{journeyDiagram-XKPGCS4Q-DIyMluRv.js → journeyDiagram-XKPGCS4Q-DLL0V5oP.js} +1 -1
- package/dist-renderer/assets/{kanban-definition-3W4ZIXB7-CVOx8f-7.js → kanban-definition-3W4ZIXB7-HsFtEDG3.js} +1 -1
- package/dist-renderer/assets/{layout-BPKIXUf4.js → layout-ClIooAAq.js} +1 -1
- package/dist-renderer/assets/{linear-CScZGLr2.js → linear-r3RJcj8y.js} +1 -1
- package/dist-renderer/assets/{mindmap-definition-VGOIOE7T-CmDQ7Wo6.js → mindmap-definition-VGOIOE7T-BA_P1U4V.js} +1 -1
- package/dist-renderer/assets/{pieDiagram-ADFJNKIX-DbVClin-.js → pieDiagram-ADFJNKIX-CzPAfkTB.js} +1 -1
- package/dist-renderer/assets/{quadrantDiagram-AYHSOK5B-CAB0MYcW.js → quadrantDiagram-AYHSOK5B-PvdPWzFJ.js} +1 -1
- package/dist-renderer/assets/{requirementDiagram-UZGBJVZJ-w2Lfpg3T.js → requirementDiagram-UZGBJVZJ-CHqIL_Od.js} +1 -1
- package/dist-renderer/assets/{sankeyDiagram-TZEHDZUN-kvG1QoKY.js → sankeyDiagram-TZEHDZUN-ConzpACM.js} +1 -1
- package/dist-renderer/assets/{sequenceDiagram-WL72ISMW-DCVBQ23J.js → sequenceDiagram-WL72ISMW-Zryq4oxP.js} +1 -1
- package/dist-renderer/assets/{stateDiagram-FKZM4ZOC-ItZ0JBvq.js → stateDiagram-FKZM4ZOC-BA9V7NHF.js} +1 -1
- package/dist-renderer/assets/{stateDiagram-v2-4FDKWEC3-Hpmw4dMm.js → stateDiagram-v2-4FDKWEC3-CGnaujD-.js} +1 -1
- package/dist-renderer/assets/{timeline-definition-IT6M3QCI-BzSFaAjV.js → timeline-definition-IT6M3QCI-DPs2ZjMm.js} +1 -1
- package/dist-renderer/assets/{treemap-GDKQZRPO-fSz4hQn0.js → treemap-GDKQZRPO-B0lzrLxb.js} +1 -1
- package/dist-renderer/assets/{xychartDiagram-PRI3JC2R-CT1kaGlv.js → xychartDiagram-PRI3JC2R-CINGmMxX.js} +1 -1
- package/dist-renderer/index.html +1 -1
- package/package.json +2 -1
- package/src/main/server.ts +993 -764
- package/src/main/services/UpdateService.ts +4 -1
- package/src/main/services/ccConnect/CcConnectBridge.ts +1 -8
- package/src/main/services/ccConnect/CcConnectClient.ts +7 -2
- package/src/main/services/teams-mvp/TeamProvisioningService.ts +14 -4
- package/src/main/services/teams-mvp/TeamWorkspaceService.ts +11 -6
- package/src/renderer/App.tsx +18 -7
- package/src/renderer/api/httpClient.ts +136 -42
- package/src/renderer/components/chat/ChatHistory.tsx +11 -8
- package/src/renderer/components/dashboard/DashboardView.tsx +4 -2
- package/src/renderer/components/extensions/ExtensionStoreView.tsx +2 -7
- package/src/renderer/components/layout/Sidebar.tsx +3 -1
- package/src/renderer/components/schedules/SchedulesView.tsx +15 -13
- package/src/renderer/components/settings/SettingsTabs.tsx +2 -1
- package/src/renderer/components/settings/hooks/useSettingsHandlers.ts +4 -5
- package/src/renderer/components/settings/sections/AdvancedSection.tsx +19 -4
- package/src/renderer/components/settings/sections/CliStatusSection.tsx +63 -59
- package/src/renderer/components/settings/sections/GeneralSection.tsx +5 -11
- package/src/renderer/components/settings/sections/HarnessSection.tsx +30 -15
- package/src/renderer/components/settings/sections/PlatformsSection.tsx +110 -51
- package/src/renderer/components/sidebar/SidebarSessions.tsx +100 -67
- package/src/renderer/components/sidebar/WorkspaceBrowser.tsx +26 -43
- package/src/renderer/components/team/CcSessionsSection.tsx +34 -14
- package/src/renderer/components/team/TeamDetailView.tsx +150 -148
- package/src/renderer/components/team/TeamEmptyState.tsx +27 -16
- package/src/renderer/components/team/TeamListView.tsx +4 -2
- package/src/renderer/components/team/activity/ActivityItem.tsx +6 -1
- package/src/renderer/components/team/dialogs/CreateTeamDialog.tsx +282 -75
- package/src/renderer/components/team/dialogs/EditTeamDialog.tsx +2 -1
- package/src/renderer/components/team/dialogs/PlatformManualForm.tsx +64 -21
- package/src/renderer/components/team/dialogs/PlatformSetupQR.tsx +68 -19
- package/src/renderer/components/team/dialogs/ProjectPathSelector.tsx +20 -16
- package/src/renderer/components/team/dialogs/platformMeta.ts +66 -11
- package/src/renderer/components/team/editor/EditorFileTree.tsx +9 -7
- package/src/renderer/components/team/kanban/KanbanBoard.tsx +7 -10
- package/src/renderer/components/team/kanban/KanbanTaskCard.tsx +1 -3
- package/src/renderer/components/team/members/MemberDetailDialog.tsx +1 -5
- package/src/renderer/components/team/messages/MessageComposer.tsx +3 -1
- package/src/renderer/components/team/messages/MessagesPanel.tsx +34 -26
- package/src/renderer/components/team/schedule/CcCronScheduleDialog.tsx +1 -3
- package/src/renderer/components/team/schedule/ScheduleSection.tsx +9 -10
- package/src/renderer/store/slices/scheduleSlice.ts +4 -1
- package/src/renderer/store/slices/teamSlice.ts +3 -1
- package/src/shared/types/api.ts +70 -21
- package/src/shared/utils/leadDetection.ts +5 -1
- package/tsconfig.json +26 -0
- package/dist-renderer/assets/channel-CZ8sd5Xf.js +0 -1
- package/dist-renderer/assets/classDiagram-2ON5EDUG-CMcfSKj5.js +0 -1
- package/dist-renderer/assets/classDiagram-v2-WZHVMYZB-CMcfSKj5.js +0 -1
- package/dist-renderer/assets/clone-CMuwA8RV.js +0 -1
|
@@ -363,7 +363,8 @@ export const MessagesPanel = memo(function MessagesPanel({
|
|
|
363
363
|
);
|
|
364
364
|
setTeamSessions(sortedSessions);
|
|
365
365
|
setSelectedSessionKey((current) => {
|
|
366
|
-
if (current && sortedSessions.some((session) => session.sessionKey === current))
|
|
366
|
+
if (current && sortedSessions.some((session) => session.sessionKey === current))
|
|
367
|
+
return current;
|
|
367
368
|
return sortedSessions[0]?.sessionKey ?? null;
|
|
368
369
|
});
|
|
369
370
|
})
|
|
@@ -538,31 +539,35 @@ export const MessagesPanel = memo(function MessagesPanel({
|
|
|
538
539
|
if (!selectedSessionDetail) {
|
|
539
540
|
return [];
|
|
540
541
|
}
|
|
541
|
-
return [...selectedSessionDetail.history].reverse().map(
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
542
|
+
return [...selectedSessionDetail.history].reverse().map(
|
|
543
|
+
(entry, index): InboxMessage => ({
|
|
544
|
+
messageId: `${selectedSessionDetail.id}:${index}:${entry.timestamp}`,
|
|
545
|
+
from: entry.role === 'user' ? 'user' : selectedSessionDetail.name || teamName,
|
|
546
|
+
to: entry.role === 'user' ? selectedSessionDetail.name || teamName : 'user',
|
|
547
|
+
text: entry.content,
|
|
548
|
+
timestamp: entry.timestamp,
|
|
549
|
+
read: true,
|
|
550
|
+
source: entry.role === 'user' ? 'user_sent' : 'inbox',
|
|
551
|
+
session: {
|
|
552
|
+
id: selectedSessionDetail.id,
|
|
553
|
+
key: selectedSessionDetail.sessionKey,
|
|
554
|
+
platform: selectedSessionDetail.platform,
|
|
555
|
+
title:
|
|
556
|
+
selectedSession.title ||
|
|
557
|
+
selectedSession.chatName ||
|
|
558
|
+
selectedSession.userName ||
|
|
559
|
+
selectedSession.sessionKey,
|
|
560
|
+
chatName: selectedSession.chatName,
|
|
561
|
+
userName: selectedSession.userName,
|
|
562
|
+
},
|
|
563
|
+
})
|
|
564
|
+
);
|
|
562
565
|
}
|
|
563
|
-
return newestFirst(
|
|
564
|
-
|
|
565
|
-
|
|
566
|
+
return newestFirst(
|
|
567
|
+
effectiveMessages.filter((message) => {
|
|
568
|
+
return message.session?.key === selectedSessionKey;
|
|
569
|
+
})
|
|
570
|
+
);
|
|
566
571
|
}, [
|
|
567
572
|
effectiveMessages,
|
|
568
573
|
selectedIsHermitLocalSession,
|
|
@@ -683,7 +688,10 @@ export const MessagesPanel = memo(function MessagesPanel({
|
|
|
683
688
|
attachments,
|
|
684
689
|
actionMode,
|
|
685
690
|
taskRefs,
|
|
686
|
-
sessionKey:
|
|
691
|
+
sessionKey:
|
|
692
|
+
selectedSessionKey && selectedSessionKey !== '__unassigned__'
|
|
693
|
+
? selectedSessionKey
|
|
694
|
+
: undefined,
|
|
687
695
|
})
|
|
688
696
|
.then((result) => {
|
|
689
697
|
if (
|
|
@@ -171,9 +171,7 @@ export const CcCronScheduleDialog = ({
|
|
|
171
171
|
placeholder="0 9 * * 1-5"
|
|
172
172
|
className="font-mono"
|
|
173
173
|
/>
|
|
174
|
-
<p className="text-xs text-[var(--color-text-muted)]">
|
|
175
|
-
例如工作日 9 点:0 9 * * 1-5
|
|
176
|
-
</p>
|
|
174
|
+
<p className="text-xs text-[var(--color-text-muted)]">例如工作日 9 点:0 9 * * 1-5</p>
|
|
177
175
|
</div>
|
|
178
176
|
|
|
179
177
|
<div className="space-y-1.5">
|
|
@@ -189,16 +189,15 @@ const ScheduleRow = ({
|
|
|
189
189
|
// =============================================================================
|
|
190
190
|
|
|
191
191
|
export const ScheduleSection = ({ teamName }: ScheduleSectionProps): React.JSX.Element => {
|
|
192
|
-
const { schedules, pauseSchedule, resumeSchedule, deleteSchedule, fetchSchedules } =
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
);
|
|
192
|
+
const { schedules, pauseSchedule, resumeSchedule, deleteSchedule, fetchSchedules } = useStore(
|
|
193
|
+
useShallow((s) => ({
|
|
194
|
+
schedules: s.schedules.filter((sch) => sch.teamName === teamName),
|
|
195
|
+
pauseSchedule: s.pauseSchedule,
|
|
196
|
+
resumeSchedule: s.resumeSchedule,
|
|
197
|
+
deleteSchedule: s.deleteSchedule,
|
|
198
|
+
fetchSchedules: s.fetchSchedules,
|
|
199
|
+
}))
|
|
200
|
+
);
|
|
202
201
|
|
|
203
202
|
const [dialogOpen, setDialogOpen] = useState(false);
|
|
204
203
|
const [editingSchedule, setEditingSchedule] = useState<Schedule | null>(null);
|
|
@@ -168,7 +168,10 @@ export const createScheduleSlice: StateCreator<AppState, [], [], ScheduleSlice>
|
|
|
168
168
|
set((state) => ({
|
|
169
169
|
scheduleRuns: {
|
|
170
170
|
...state.scheduleRuns,
|
|
171
|
-
[id]: [
|
|
171
|
+
[id]: [
|
|
172
|
+
run,
|
|
173
|
+
...(state.scheduleRuns[id] ?? []).filter((entry) => !entry.id.startsWith('pending-')),
|
|
174
|
+
],
|
|
172
175
|
},
|
|
173
176
|
}));
|
|
174
177
|
return run;
|
|
@@ -3667,7 +3667,9 @@ export const createTeamSlice: StateCreator<AppState, [], [], TeamSlice> = (set,
|
|
|
3667
3667
|
page.messages
|
|
3668
3668
|
);
|
|
3669
3669
|
const preserveLoadedOlderTail =
|
|
3670
|
-
current.olderHydrated &&
|
|
3670
|
+
current.olderHydrated &&
|
|
3671
|
+
Array.isArray(retainedOlderTail) &&
|
|
3672
|
+
retainedOlderTail.length > 0;
|
|
3671
3673
|
const nextCanonical = headChanged
|
|
3672
3674
|
? preserveLoadedOlderTail
|
|
3673
3675
|
? mergeTeamMessages(retainedOlderTail, page.messages)
|
package/src/shared/types/api.ts
CHANGED
|
@@ -203,7 +203,9 @@ export interface ConfigAPI {
|
|
|
203
203
|
/** Opens native folder selection dialog and returns selected paths */
|
|
204
204
|
selectFolders: () => Promise<string[]>;
|
|
205
205
|
/** Browse subdirectories at a given path (server-side, no native dialog) */
|
|
206
|
-
browseFolders: (
|
|
206
|
+
browseFolders: (
|
|
207
|
+
dirPath?: string
|
|
208
|
+
) => Promise<{ path: string; dirs: string[]; hasParent: boolean }>;
|
|
207
209
|
/** Open native dialog to select local Claude root folder */
|
|
208
210
|
selectClaudeRootFolder: () => Promise<ClaudeRootFolderSelection | null>;
|
|
209
211
|
/** Get resolved Claude root path info for local mode */
|
|
@@ -693,7 +695,11 @@ export interface TeamsAPI {
|
|
|
693
695
|
updateToolApprovalSettings: (teamName: string, settings: ToolApprovalSettings) => Promise<void>;
|
|
694
696
|
readFileForToolApproval: (filePath: string) => Promise<ToolApprovalFileContent>;
|
|
695
697
|
getTeamSessions: (teamName: string) => Promise<CcSession[]>;
|
|
696
|
-
getSessionDetail: (
|
|
698
|
+
getSessionDetail: (
|
|
699
|
+
teamName: string,
|
|
700
|
+
sessionId: string,
|
|
701
|
+
historyLimit?: number
|
|
702
|
+
) => Promise<CcSessionDetail>;
|
|
697
703
|
cancelSession: (teamName: string, sessionId: string) => Promise<void>;
|
|
698
704
|
}
|
|
699
705
|
|
|
@@ -959,8 +965,17 @@ export interface ElectronAPI extends RecentProjectsElectronApi {
|
|
|
959
965
|
|
|
960
966
|
// cc-connect connection config (baseUrl, token, bridgeUrl)
|
|
961
967
|
hermitConfig: {
|
|
962
|
-
get: () => Promise<{
|
|
963
|
-
|
|
968
|
+
get: () => Promise<{
|
|
969
|
+
ccBaseUrl: string;
|
|
970
|
+
ccBridgeUrl: string;
|
|
971
|
+
ccToken: string;
|
|
972
|
+
ccTokenSet: boolean;
|
|
973
|
+
}>;
|
|
974
|
+
update: (patch: {
|
|
975
|
+
ccBaseUrl?: string;
|
|
976
|
+
ccToken?: string;
|
|
977
|
+
ccBridgeUrl?: string;
|
|
978
|
+
}) => Promise<void>;
|
|
964
979
|
getRaw: () => Promise<{ path: string; content: string }>;
|
|
965
980
|
updateRaw: (content: string) => Promise<void>;
|
|
966
981
|
};
|
|
@@ -983,30 +998,64 @@ export interface ElectronAPI extends RecentProjectsElectronApi {
|
|
|
983
998
|
|
|
984
999
|
// cc-connect setup flows (QR code + manual platform binding)
|
|
985
1000
|
ccSetup: {
|
|
986
|
-
feishuBegin: () => Promise<{
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
1001
|
+
feishuBegin: () => Promise<{
|
|
1002
|
+
device_code: string;
|
|
1003
|
+
qr_url: string;
|
|
1004
|
+
base_url?: string;
|
|
1005
|
+
interval: number;
|
|
1006
|
+
expires_in: number;
|
|
1007
|
+
}>;
|
|
1008
|
+
feishuPoll: (
|
|
1009
|
+
deviceCode: string,
|
|
1010
|
+
baseUrl?: string
|
|
1011
|
+
) => Promise<{
|
|
1012
|
+
status: string;
|
|
1013
|
+
base_url?: string;
|
|
1014
|
+
app_id?: string;
|
|
1015
|
+
app_secret?: string;
|
|
1016
|
+
platform?: string;
|
|
1017
|
+
owner_open_id?: string;
|
|
1018
|
+
slow_down?: boolean;
|
|
1019
|
+
error?: string;
|
|
990
1020
|
}>;
|
|
991
1021
|
feishuSave: (params: {
|
|
992
|
-
project: string;
|
|
993
|
-
|
|
994
|
-
|
|
1022
|
+
project: string;
|
|
1023
|
+
app_id: string;
|
|
1024
|
+
app_secret: string;
|
|
1025
|
+
platform_type?: string;
|
|
1026
|
+
owner_open_id?: string;
|
|
1027
|
+
work_dir?: string;
|
|
1028
|
+
agent_type?: string;
|
|
995
1029
|
}) => Promise<{ message: string; restart_required: boolean }>;
|
|
996
1030
|
weixinBegin: (apiUrl?: string) => Promise<{ qr_key: string; qr_url: string }>;
|
|
997
|
-
weixinPoll: (
|
|
998
|
-
|
|
999
|
-
|
|
1031
|
+
weixinPoll: (
|
|
1032
|
+
qrKey: string,
|
|
1033
|
+
apiUrl?: string
|
|
1034
|
+
) => Promise<{
|
|
1035
|
+
status: string;
|
|
1036
|
+
bot_token?: string;
|
|
1037
|
+
ilink_bot_id?: string;
|
|
1038
|
+
base_url?: string;
|
|
1039
|
+
ilink_user_id?: string;
|
|
1000
1040
|
}>;
|
|
1001
1041
|
weixinSave: (params: {
|
|
1002
|
-
project: string;
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1042
|
+
project: string;
|
|
1043
|
+
token: string;
|
|
1044
|
+
base_url?: string;
|
|
1045
|
+
ilink_bot_id?: string;
|
|
1046
|
+
ilink_user_id?: string;
|
|
1047
|
+
work_dir?: string;
|
|
1048
|
+
agent_type?: string;
|
|
1009
1049
|
}) => Promise<{ message: string; restart_required: boolean }>;
|
|
1050
|
+
addPlatform: (
|
|
1051
|
+
projectName: string,
|
|
1052
|
+
body: {
|
|
1053
|
+
type: string;
|
|
1054
|
+
options?: Record<string, unknown>;
|
|
1055
|
+
work_dir?: string;
|
|
1056
|
+
agent_type?: string;
|
|
1057
|
+
}
|
|
1058
|
+
) => Promise<{ message: string; restart_required: boolean }>;
|
|
1010
1059
|
};
|
|
1011
1060
|
|
|
1012
1061
|
// Cross-Team Communication API
|
|
@@ -53,7 +53,11 @@ export function isLeadMemberRole(role: string | undefined | null): boolean {
|
|
|
53
53
|
* Returns true if the member is a team lead, checking both agentType
|
|
54
54
|
* and the canonical internal lead name as a fallback.
|
|
55
55
|
*/
|
|
56
|
-
export function isLeadMember(member: {
|
|
56
|
+
export function isLeadMember(member: {
|
|
57
|
+
agentType?: unknown;
|
|
58
|
+
name?: unknown;
|
|
59
|
+
role?: unknown;
|
|
60
|
+
}): boolean {
|
|
57
61
|
const role = typeof member.role === 'string' ? member.role : null;
|
|
58
62
|
if (isLeadMemberRole(role)) return true;
|
|
59
63
|
const agentType = typeof member.agentType === 'string' ? member.agentType : null;
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2023",
|
|
4
|
+
"module": "ESNext",
|
|
5
|
+
"lib": ["ES2023", "DOM", "DOM.Iterable"],
|
|
6
|
+
"jsx": "react-jsx",
|
|
7
|
+
"strict": true,
|
|
8
|
+
"esModuleInterop": true,
|
|
9
|
+
"skipLibCheck": true,
|
|
10
|
+
"moduleResolution": "bundler",
|
|
11
|
+
"resolveJsonModule": true,
|
|
12
|
+
"isolatedModules": true,
|
|
13
|
+
"noEmit": true,
|
|
14
|
+
"baseUrl": ".",
|
|
15
|
+
"paths": {
|
|
16
|
+
"@claude-teams/agent-graph": ["./packages/agent-graph/src/index.ts"],
|
|
17
|
+
"@features/*": ["./src/features/*"],
|
|
18
|
+
"@main/*": ["./src/main/*"],
|
|
19
|
+
"@renderer/*": ["./src/renderer/*"],
|
|
20
|
+
"@shared/*": ["./src/shared/*"]
|
|
21
|
+
},
|
|
22
|
+
"types": ["node", "vitest/globals"]
|
|
23
|
+
},
|
|
24
|
+
"include": ["src/**/*", "test/**/*"],
|
|
25
|
+
"exclude": ["node_modules", "dist", "dist-standalone"]
|
|
26
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a6 as o,a7 as n}from"./index-CZltVMDP.js";const t=(a,r)=>o.lang.round(n.parse(a)[r]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-B4BG7PRW-Ce829laz.js";import{_ as i}from"./index-CZltVMDP.js";import"./chunk-FMBD7UC4-Cie3DzKk.js";import"./chunk-55IACEB6-NAmVxF4k.js";import"./chunk-QN33PNHL-4f5Yb50e.js";import"./splashScene-C8lWNnm4.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-B4BG7PRW-Ce829laz.js";import{_ as i}from"./index-CZltVMDP.js";import"./chunk-FMBD7UC4-Cie3DzKk.js";import"./chunk-55IACEB6-NAmVxF4k.js";import"./chunk-QN33PNHL-4f5Yb50e.js";import"./splashScene-C8lWNnm4.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as r}from"./_baseUniq-BofrAFBx.js";var e=4;function a(o){return r(o,e)}export{a as c};
|