clay-server 3.8.1 → 4.0.0-beta.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/lib/ask-user-mcp-server.js +5 -119
- package/lib/background-task-timing.js +105 -0
- package/lib/builtin-mates.js +6 -6
- package/lib/claude-hook-installer.js +15 -0
- package/lib/clay-history-mcp-server.js +62 -297
- package/lib/daemon.js +23 -1
- package/lib/debate-model-selection.js +119 -0
- package/lib/home-debate-tool-policy.js +164 -0
- package/lib/home-response-notifications.js +26 -0
- package/lib/knowledge-import.js +436 -0
- package/lib/knowledge-record-store.js +188 -0
- package/lib/knowledge-search.js +224 -0
- package/lib/mate-creation-mcp-server.js +55 -0
- package/lib/mate-knowledge-mcp-server.js +151 -0
- package/lib/mate-knowledge-migration.js +283 -0
- package/lib/mate-knowledge-service.js +488 -0
- package/lib/mate-knowledge-sync.js +482 -0
- package/lib/mate-ready-creation.js +95 -0
- package/lib/mates.js +2 -0
- package/lib/notes.js +2 -1
- package/lib/project-ask-user.js +64 -0
- package/lib/project-capsule-catalog.js +101 -0
- package/lib/project-connection.js +17 -0
- package/lib/project-debate-proposal.js +133 -17
- package/lib/project-debate.js +214 -110
- package/lib/project-delegated-follow-up.js +84 -0
- package/lib/project-delegated-session.js +53 -0
- package/lib/project-filesystem.js +7 -9
- package/lib/project-knowledge.js +23 -0
- package/lib/project-logs-comments.js +137 -0
- package/lib/project-logs-mcp-server.js +290 -0
- package/lib/project-logs-query.js +167 -0
- package/lib/project-logs-root.js +67 -0
- package/lib/project-logs-schema.js +259 -0
- package/lib/project-logs-service.js +357 -0
- package/lib/project-logs-snapshot.js +202 -0
- package/lib/project-logs-store.js +498 -0
- package/lib/project-logs-versioning.js +128 -0
- package/lib/project-logs.js +347 -0
- package/lib/project-mate-creation-proposal.js +120 -0
- package/lib/project-mate-interaction.js +14 -0
- package/lib/project-mate-knowledge.js +110 -0
- package/lib/project-memory.js +36 -7
- package/lib/project-models.js +157 -32
- package/lib/project-session-notes.js +2 -2
- package/lib/project-session-pair.js +8 -8
- package/lib/project-sessions.js +66 -51
- package/lib/project-vendor-login.js +414 -0
- package/lib/project-worker-proposal.js +25 -25
- package/lib/project-workspace-query.js +144 -0
- package/lib/project.js +433 -102
- package/lib/public/app.js +109 -48
- package/lib/public/css/avatar-imprints.css +0 -1
- package/lib/public/css/base.css +4 -0
- package/lib/public/css/capsule-ui.css +389 -0
- package/lib/public/css/command-palette.css +306 -6
- package/lib/public/css/home-capsule-library.css +243 -0
- package/lib/public/css/home-capsule-source.css +192 -0
- package/lib/public/css/home-debate-live.css +146 -0
- package/lib/public/css/home-debate-planning.css +125 -0
- package/lib/public/css/home-debates-archive.css +281 -0
- package/lib/public/css/home-hub.css +896 -405
- package/lib/public/css/home-mate-creation.css +34 -0
- package/lib/public/css/home-mate-model-picker.css +131 -0
- package/lib/public/css/home-mate-settings.css +344 -0
- package/lib/public/css/home-session-actions.css +265 -0
- package/lib/public/css/home-sidebar.css +667 -0
- package/lib/public/css/icon-strip.css +1 -2
- package/lib/public/css/input.css +79 -25
- package/lib/public/css/mates.css +7 -34
- package/lib/public/css/pane.css +1 -1
- package/lib/public/css/playbook.css +0 -80
- package/lib/public/css/project-logs.css +234 -0
- package/lib/public/css/scheduler.css +1 -1
- package/lib/public/css/sticky-notes.css +53 -117
- package/lib/public/css/tui-attention.css +0 -44
- package/lib/public/css/workspace-assignment.css +45 -0
- package/lib/public/fonts/source-serif-4/LICENSE.md +93 -0
- package/lib/public/fonts/source-serif-4/SourceSerif4Caption-Semibold.ttf.woff2 +0 -0
- package/lib/public/index.html +96 -74
- package/lib/public/modules/app-connection.js +100 -5
- package/lib/public/modules/app-dm.js +43 -160
- package/lib/public/modules/app-home-hub.js +328 -585
- package/lib/public/modules/app-message-cards.js +242 -0
- package/lib/public/modules/app-message-router.js +84 -0
- package/lib/public/modules/app-messages.js +124 -38
- package/lib/public/modules/app-notifications.js +8 -119
- package/lib/public/modules/app-panels.js +43 -2
- package/lib/public/modules/app-projects.js +9 -1
- package/lib/public/modules/app-rendering.js +21 -602
- package/lib/public/modules/avatar-imprint.js +11 -8
- package/lib/public/modules/background-tasks-ui.js +139 -16
- package/lib/public/modules/chat-bubble-renderer.js +152 -0
- package/lib/public/modules/chat-render-runtime.js +198 -0
- package/lib/public/modules/command-palette.js +225 -436
- package/lib/public/modules/dm-render.js +82 -0
- package/lib/public/modules/home-capsule-creation-intent.js +31 -0
- package/lib/public/modules/home-capsule-library.js +146 -0
- package/lib/public/modules/home-capsule-source.js +383 -0
- package/lib/public/modules/home-chat-identity.js +35 -0
- package/lib/public/modules/home-chat-scroll.js +77 -0
- package/lib/public/modules/home-chat-stream-state.js +34 -0
- package/lib/public/modules/home-composer-focus.js +25 -0
- package/lib/public/modules/home-conversations-sheet.js +179 -0
- package/lib/public/modules/home-debate-activity.js +48 -0
- package/lib/public/modules/home-debate-controls.js +295 -0
- package/lib/public/modules/home-debate-launch.js +41 -0
- package/lib/public/modules/home-debate-live.js +284 -0
- package/lib/public/modules/home-debate-models.js +73 -0
- package/lib/public/modules/home-debate-planning.js +335 -0
- package/lib/public/modules/home-debates-archive.js +279 -0
- package/lib/public/modules/home-dock-resize.js +74 -0
- package/lib/public/modules/home-dock.js +446 -0
- package/lib/public/modules/home-mate-chat.js +496 -0
- package/lib/public/modules/home-mate-creation.js +109 -0
- package/lib/public/modules/home-mate-model-picker.js +281 -0
- package/lib/public/modules/home-mate-selection.js +38 -0
- package/lib/public/modules/home-mate-settings-menu.js +131 -0
- package/lib/public/modules/home-mate-settings.js +383 -0
- package/lib/public/modules/home-session-actions.js +373 -0
- package/lib/public/modules/home-session-model-confirmation.js +13 -0
- package/lib/public/modules/home-shell.js +9 -0
- package/lib/public/modules/home-sidebar-chat-list.js +63 -0
- package/lib/public/modules/home-sidebar.js +165 -0
- package/lib/public/modules/home-sub-surface.js +19 -0
- package/lib/public/modules/home-surface-boot.js +68 -0
- package/lib/public/modules/home-surface.js +141 -0
- package/lib/public/modules/home-tools.js +271 -0
- package/lib/public/modules/markdown.js +50 -2
- package/lib/public/modules/mate-management.js +86 -0
- package/lib/public/modules/mate-sidebar.js +0 -8
- package/lib/public/modules/mate-wizard.js +0 -7
- package/lib/public/modules/mention.js +17 -19
- package/lib/public/modules/pane-bridge.js +9 -0
- package/lib/public/modules/profile.js +4 -5
- package/lib/public/modules/project-logs-ambient.js +238 -0
- package/lib/public/modules/project-logs-render.js +359 -0
- package/lib/public/modules/project-logs.js +328 -0
- package/lib/public/modules/project-settings.js +34 -28
- package/lib/public/modules/project-switcher.js +11 -5
- package/lib/public/modules/project-workspace-assignment.js +23 -0
- package/lib/public/modules/scheduler.js +17 -3
- package/lib/public/modules/search-clay-chat.js +402 -0
- package/lib/public/modules/server-settings.js +14 -12
- package/lib/public/modules/session-actions.js +1 -1
- package/lib/public/modules/sidebar-mates.js +56 -552
- package/lib/public/modules/sidebar-mobile.js +12 -73
- package/lib/public/modules/sidebar-presence.js +37 -0
- package/lib/public/modules/sidebar-sessions.js +25 -1
- package/lib/public/modules/split-pair-ui.js +13 -13
- package/lib/public/modules/split-view.js +7 -0
- package/lib/public/modules/sticky-notes.js +106 -53
- package/lib/public/modules/tool-input-composition.js +48 -0
- package/lib/public/modules/tool-llm-status.js +167 -0
- package/lib/public/modules/tool-palette.js +76 -4
- package/lib/public/modules/tool-renderer-advanced.js +285 -0
- package/lib/public/modules/tool-renderer-chart.js +158 -0
- package/lib/public/modules/tool-renderer-semantics.js +35 -0
- package/lib/public/modules/tool-renderer.js +464 -0
- package/lib/public/modules/tool-runtime.js +309 -0
- package/lib/public/modules/tool-ui-evaluator.js +97 -0
- package/lib/public/modules/tool-ui-tree.js +21 -0
- package/lib/public/modules/tui-attention.js +10 -0
- package/lib/public/modules/user-settings.js +16 -23
- package/lib/public/modules/vendor-login.js +287 -0
- package/lib/public/modules/worker-proposal.js +2 -2
- package/lib/public/modules/workspace-assignment-card.js +149 -0
- package/lib/public/modules/workspace-assignment-routing.js +4 -0
- package/lib/public/style.css +14 -2
- package/lib/runtime-env.js +65 -0
- package/lib/sdk-bridge.js +120 -32
- package/lib/sdk-message-processor.js +34 -13
- package/lib/server-home-capsule-creation.js +36 -0
- package/lib/server-home-chat-events.js +287 -0
- package/lib/server-home-chat.js +518 -0
- package/lib/server-home-clay-entry.js +65 -0
- package/lib/server-home-clay-session-links.js +26 -0
- package/lib/server-home-debate-planning.js +214 -0
- package/lib/server-home-debates.js +137 -0
- package/lib/server-home-mate-creation.js +261 -0
- package/lib/server-home-models.js +241 -0
- package/lib/server-home-preferences.js +61 -0
- package/lib/server-mates.js +37 -0
- package/lib/server-tools.js +377 -0
- package/lib/server.js +166 -59
- package/lib/session-pair-mcp-server.js +6 -6
- package/lib/sessions.js +22 -4
- package/lib/tool-capsule-source.js +142 -0
- package/lib/tool-control-mcp-server.js +126 -0
- package/lib/tool-llm.js +48 -0
- package/lib/tool-storage.js +77 -0
- package/lib/tool-ui-spec-advanced.js +82 -0
- package/lib/tool-ui-spec.js +261 -0
- package/lib/tools-registry.js +286 -0
- package/lib/users-home-dock-preferences.js +77 -0
- package/lib/users-home-surface-preferences.js +99 -0
- package/lib/users-preferences.js +4 -7
- package/lib/users.js +12 -0
- package/lib/whats-new-content.js +3 -3
- package/lib/workspace-assignment-service.js +420 -0
- package/lib/workspace-query-mcp-server.js +154 -0
- package/lib/workspace-query-service.js +492 -0
- package/lib/ws-schema.js +107 -12
- package/lib/yoke/adapters/acp.js +2 -1
- package/lib/yoke/adapters/antigravity.js +2 -1
- package/lib/yoke/adapters/claude-worker.js +11 -4
- package/lib/yoke/adapters/claude.js +141 -46
- package/lib/yoke/adapters/codex.js +79 -11
- package/lib/yoke/adapters/kiro.js +2 -1
- package/lib/yoke/claude-user-input.js +38 -0
- package/lib/yoke/codex-app-server.js +20 -2
- package/lib/yoke/codex-background-tasks.js +8 -2
- package/lib/yoke/codex-user-input.js +64 -0
- package/lib/yoke/complete-once.js +164 -0
- package/lib/yoke/index.js +5 -1
- package/lib/yoke/interface.js +19 -0
- package/lib/yoke/mcp-bridge-server.js +2 -6
- package/lib/yoke/user-input.js +254 -0
- package/package.json +4 -3
- package/lib/public/css/home-chat.css +0 -380
- package/lib/public/modules/home-chat.js +0 -438
- package/lib/server-clay-home.js +0 -245
package/lib/public/app.js
CHANGED
|
@@ -12,7 +12,8 @@ import {
|
|
|
12
12
|
} from './modules/sidebar-projects.js';
|
|
13
13
|
import {
|
|
14
14
|
renderUserStrip, closeDmUserPicker, setCurrentDmUser,
|
|
15
|
-
updateDmBadge,
|
|
15
|
+
updateDmBadge, setMentionActive, clearAllMentionActive,
|
|
16
|
+
onMentionActiveChange
|
|
16
17
|
} from './modules/sidebar-mates.js';
|
|
17
18
|
import {
|
|
18
19
|
openMobileSheet, setMobileSheetMateData, refreshMobileChatSheet
|
|
@@ -41,27 +42,31 @@ import { initSTT } from './modules/stt.js';
|
|
|
41
42
|
import { initProfile, getProfileLang } from './modules/profile.js';
|
|
42
43
|
import { initUserSettings } from './modules/user-settings.js';
|
|
43
44
|
import { initToolPalettes } from './modules/tool-palette.js';
|
|
45
|
+
import { initProjectLogs, closeProjectLogs } from './modules/project-logs.js';
|
|
44
46
|
import { initProjectSwitcher } from './modules/project-switcher.js';
|
|
45
47
|
import { initSplitView } from './modules/split-view.js';
|
|
46
48
|
import { initPaneBridge } from './modules/pane-bridge.js';
|
|
47
49
|
import { initAdmin, checkAdminAccess } from './modules/admin.js';
|
|
48
50
|
import { initSessionSearch, toggleSearch, closeSearch, isSearchOpen, handleFindInSessionResults, onHistoryPrepended as onSessionSearchHistoryPrepended } from './modules/session-search.js';
|
|
49
51
|
import { initTooltips, registerTooltip } from './modules/tooltip.js';
|
|
50
|
-
import { initMateWizard, openMateWizard, closeMateWizard, handleMateCreated } from './modules/mate-wizard.js';
|
|
51
52
|
import { initCommandPalette, handlePaletteSessionSwitch, setPaletteVersion } from './modules/command-palette.js';
|
|
52
53
|
import { initLongPress } from './modules/longpress.js';
|
|
53
54
|
import { initShellCommand } from './modules/shell-command.js';
|
|
54
55
|
import { initConnection, connect as _connConnect, setStatus as _connSetStatus, scheduleReconnect as _connScheduleReconnect, cancelReconnect as _connCancelReconnect } from './modules/app-connection.js';
|
|
55
56
|
import { processMessage as _msgProcessMessage } from './modules/app-messages.js';
|
|
56
57
|
import { getWs as _getWsRef, setWs as _setWsRef } from './modules/ws-ref.js';
|
|
57
|
-
import { initHomeHub, showHomeHub as _hubShowHomeHub, hideHomeHub as _hubHideHomeHub,
|
|
58
|
+
import { initHomeHub, showHomeHub as _hubShowHomeHub, hideHomeHub as _hubHideHomeHub, isHomeHubVisible, renderHomeMateSwitcher, updateHomeIconBadge } from './modules/app-home-hub.js';
|
|
59
|
+
import { initHomeSidebar } from './modules/home-sidebar.js';
|
|
60
|
+
import { openHomeMateAction } from './modules/home-mate-chat.js';
|
|
61
|
+
import { initHomeSurfaceBoot } from './modules/home-surface-boot.js';
|
|
62
|
+
import { rememberHomePrimarySurface } from './modules/home-surface.js';
|
|
58
63
|
import { initRateLimit, handleRateLimitEvent as _rlHandleRateLimitEvent, updateRateLimitUsage as _rlUpdateRateLimitUsage, addScheduledMessageBubble as _rlAddScheduledMessageBubble, removeScheduledMessageBubble as _rlRemoveScheduledMessageBubble, handleFastModeState as _rlHandleFastModeState, getScheduledMsgEl, resetRateLimitState } from './modules/app-rate-limit.js';
|
|
59
64
|
import { initCursors, handleRemoteCursorMove as _curHandleRemoteCursorMove, handleRemoteCursorLeave as _curHandleRemoteCursorLeave, handleRemoteSelection as _curHandleRemoteSelection, clearRemoteCursors as _curClearRemoteCursors, initCursorToggle } from './modules/app-cursors.js';
|
|
60
65
|
import { initFavicon, updateFavicon as _favUpdateFavicon, setSendBtnMode as _favSetSendBtnMode, blinkIO as _favBlinkIO, blinkSessionDot as _favBlinkSessionDot, updateCrossProjectBlink as _favUpdateCrossProjectBlink, startUrgentBlink as _favStartUrgentBlink, stopUrgentBlink as _favStopUrgentBlink, setActivity as _favSetActivity } from './modules/app-favicon.js';
|
|
61
66
|
import { initHeader, closeSessionInfoPopover as _hdrCloseSessionInfoPopover, updateHistorySentinel as _hdrUpdateHistorySentinel, requestMoreHistory as _hdrRequestMoreHistory, prependOlderHistory as _hdrPrependOlderHistory } from './modules/app-header.js';
|
|
62
67
|
import { initSessionActions } from './modules/session-actions.js';
|
|
63
68
|
import { initMisc, flushPendingExtMessages, showImageModal as _miscShowImageModal, closeImageModal as _miscCloseImageModal, showPasteModal as _miscShowPasteModal, closePasteModal as _miscClosePasteModal, showConfirm as _miscShowConfirm, hideConfirm as _miscHideConfirm, showForceChangePinOverlay as _miscShowForceChangePinOverlay, sendExtensionCommand as _miscSendExtensionCommand, handleExtensionResult as _miscHandleExtensionResult } from './modules/app-misc.js';
|
|
64
|
-
import { initSkillInstall, requireSkills as _siRequireSkills,
|
|
69
|
+
import { initSkillInstall, requireSkills as _siRequireSkills, handleSkillInstallWs as _siHandleSkillInstallWs } from './modules/app-skills-install.js';
|
|
65
70
|
import { initDebateUi, showDebateConcludeConfirm as _debShowDebateConcludeConfirm, exitDebateConcludeMode as _debExitDebateConcludeMode, handleDebateConcludeSend as _debHandleDebateConcludeSend, showDebateEndedMode as _debShowDebateEndedMode, exitDebateEndedMode as _debExitDebateEndedMode, showDebateUserFloor as _debShowDebateUserFloor, exitDebateFloorMode as _debExitDebateFloorMode, handleDebateFloorSend as _debHandleDebateFloorSend, renderDebateUserFloorDone as _debRenderDebateUserFloorDone, showDebateSticky as _debShowDebateSticky, showDebateBottomBar as _debShowDebateBottomBar, removeDebateBottomBar as _debRemoveDebateBottomBar, sendDebateStickyComment as _debSendDebateStickyComment, updateDebateRound as _debUpdateDebateRound } from './modules/app-debate-ui.js';
|
|
66
71
|
import { initLoopUi, updateLoopInputVisibility as _loopUpdateLoopInputVisibility, updateLoopButton as _loopUpdateLoopButton, showLoopBanner as _loopShowLoopBanner, updateLoopBanner as _loopUpdateLoopBanner, updateRalphBars as _loopUpdateRalphBars, showRalphCraftingBar as _loopShowRalphCraftingBar, showRalphApprovalBar as _loopShowRalphApprovalBar, updateRalphApprovalStatus as _loopUpdateRalphApprovalStatus, openRalphPreviewModal as _loopOpenRalphPreviewModal, showExecModal as _loopShowExecModal, closeExecModal as _loopCloseExecModal, updateExecModalStatus as _loopUpdateExecModalStatus } from './modules/app-loop-ui.js';
|
|
67
72
|
import { initBackgroundTasksUi } from './modules/background-tasks-ui.js';
|
|
@@ -74,7 +79,7 @@ import { createStore, store } from './modules/store.js';
|
|
|
74
79
|
import { initPanels, updateConfigChip as _panUpdateConfigChip, getModelEffortLevels as _panGetModelEffortLevels, accumulateUsage as _panAccumulateUsage, updateUsagePanel as _panUpdateUsagePanel, resetUsage as _panResetUsage, toggleUsagePanel as _panToggleUsagePanel, formatTokens as _panFormatTokens, updateStatusPanel as _panUpdateStatusPanel, requestProcessStats as _panRequestProcessStats, toggleStatusPanel as _panToggleStatusPanel, accumulateContext as _panAccumulateContext, updateContextPanel as _panUpdateContextPanel, resetContext as _panResetContext, resetContextData as _panResetContextData, minimizeContext as _panMinimizeContext, expandContext as _panExpandContext, toggleContextPanel as _panToggleContextPanel, getContextView as _panGetContextView, renderCtxPopover as _panRenderCtxPopover, hideCtxPopover as _panHideCtxPopover, formatBytes as _panFormatBytes, formatUptime as _panFormatUptime, getModelSupportsEffort as _panGetModelSupportsEffort, getSessionUsage, setSessionUsage, getContextData, setContextData, setContextView as _panSetContextView, applyContextView as _panApplyContextView } from './modules/app-panels.js';
|
|
75
80
|
import { initProjects, updateProjectList as _projUpdateProjectList, renderProjectList as _projRenderProjectList, renderTopbarPresence as _projRenderTopbarPresence, switchProject as _projSwitchProject, resetClientState as _projResetClientState, confirmRemoveProject as _projConfirmRemoveProject, handleRemoveProjectCheckResult as _projHandleRemoveProjectCheckResult, handleRemoveProjectResult as _projHandleRemoveProjectResult, openAddProjectModal as _projOpenAddProjectModal, closeAddProjectModal as _projCloseAddProjectModal, handleBrowseDirResult as _projHandleBrowseDirResult, handleAddProjectResult as _projHandleAddProjectResult, handleCloneProgress as _projHandleCloneProgress, showUpdateAvailable as _projShowUpdateAvailable, getCachedProjects, setCachedProjects, getCachedProjectCount, getCachedRemovedProjects, setCachedRemovedProjects } from './modules/app-projects.js';
|
|
76
81
|
import { initRendering, addToMessages as _renAddToMessages, scrollToBottom as _renScrollToBottom, forceScrollToBottom as _renForceScrollToBottom, addUserMessage as _renAddUserMessage, getMsgTime as _renGetMsgTime, shouldGroupMessage as _renShouldGroupMessage, ensureAssistantBlock as _renEnsureAssistantBlock, addCopyHandler as _renAddCopyHandler, appendDelta as _renAppendDelta, flushStreamBuffer as _renFlushStreamBuffer, finalizeAssistantBlock as _renFinalizeAssistantBlock, addSystemMessage as _renAddSystemMessage, addConflictMessage as _renAddConflictMessage, addContextOverflowMessage as _renAddContextOverflowMessage, showClaudePreThinking as _renShowClaudePreThinking, showMatePreThinking as _renShowMatePreThinking, removeMatePreThinking as _renRemoveMatePreThinking, showSuggestionChips as _renShowSuggestionChips, hideSuggestionChips as _renHideSuggestionChips, getGhostSuggestion as _renGetGhostSuggestion, getTurnCounter, setTurnCounter, getPrependAnchor, setPrependAnchor, getActivityEl, setActivityEl, getIsUserScrolledUp, setIsUserScrolledUp, getStickyBottom, armStickyBottom, disarmStickyBottom } from './modules/app-rendering.js';
|
|
77
|
-
import { initDm, openDm as _dmOpenDm, enterDmMode as _dmEnterDmMode, exitDmMode as _dmExitDmMode, handleMateCreatedInApp as _dmHandleMateCreatedInApp,
|
|
82
|
+
import { initDm, openDm as _dmOpenDm, enterDmMode as _dmEnterDmMode, exitDmMode as _dmExitDmMode, handleMateCreatedInApp as _dmHandleMateCreatedInApp, buildMateInterviewPrompt as _dmBuildMateInterviewPrompt, updateMateIconStatus as _dmUpdateMateIconStatus, connectMateProject as _dmConnectMateProject, disconnectMateProject as _dmDisconnectMateProject, appendDmMessage as _dmAppendDmMessage, showDmTypingIndicator as _dmShowDmTypingIndicator, handleDmSend as _dmHandleDmSend } from './modules/app-dm.js';
|
|
78
83
|
import { initMention, handleMentionStart, handleMentionStream, handleMentionDone, handleMentionError, handleMentionActivity, renderMentionUser, renderMentionResponse } from './modules/mention.js';
|
|
79
84
|
import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateResumed, handleDebateTurn, handleDebateActivity, handleDebateStream, handleDebateTurnDone, handleDebateCommentQueued, handleDebateCommentInjected, handleDebateEnded, handleDebateError, renderDebateStarted, renderDebateTurnDone, renderDebateEnded, renderDebateCommentInjected, renderDebateUserResume, openDebateModal, closeDebateModal, handleDebateBriefReady, renderDebateBriefReady, isDebateActive, resetDebateState, exportDebateAsPdf, renderMcpDebateProposal } from './modules/debate.js';
|
|
80
85
|
|
|
@@ -85,8 +90,10 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
85
90
|
if (!Number.isSafeInteger(paneSessionId) || paneSessionId < 1) paneSessionId = null;
|
|
86
91
|
if (paneMode) document.body.classList.add("pane-mode");
|
|
87
92
|
var slugMatch = location.pathname.match(/^\/p\/([a-z0-9_-]+)/);
|
|
88
|
-
var
|
|
89
|
-
var
|
|
93
|
+
var homeProjectSlug = document.body.dataset.homeProjectSlug || null;
|
|
94
|
+
var connectionSlug = slugMatch ? slugMatch[1] : homeProjectSlug;
|
|
95
|
+
var basePath = connectionSlug ? "/p/" + connectionSlug + "/" : "/";
|
|
96
|
+
var wsPath = connectionSlug ? "/p/" + connectionSlug + "/ws" : "/ws";
|
|
90
97
|
if (paneMode) {
|
|
91
98
|
wsPath += "?pane=1";
|
|
92
99
|
if (paneSessionId) wsPath += "&session=" + paneSessionId;
|
|
@@ -129,17 +136,18 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
129
136
|
|
|
130
137
|
|
|
131
138
|
// --- Home Hub (delegated to app-home-hub.js) ---
|
|
132
|
-
function showHomeHub() { _hubShowHomeHub(); }
|
|
139
|
+
function showHomeHub(fromHistory) { _hubShowHomeHub(fromHistory); }
|
|
133
140
|
function hideHomeHub() { _hubHideHomeHub(); }
|
|
134
|
-
function
|
|
135
|
-
|
|
141
|
+
function startClayMateCreation() {
|
|
142
|
+
showHomeHub();
|
|
143
|
+
openHomeMateAction("mate");
|
|
144
|
+
}
|
|
136
145
|
|
|
137
146
|
// --- DM (delegated to app-dm.js) ---
|
|
138
147
|
function openDm(userId) { _dmOpenDm(userId); }
|
|
139
148
|
function enterDmMode(key, targetUser, messages) { _dmEnterDmMode(key, targetUser, messages); }
|
|
140
149
|
function exitDmMode(skipProjectSwitch) { _dmExitDmMode(skipProjectSwitch); }
|
|
141
150
|
function handleMateCreatedInApp(mate, msg) { _dmHandleMateCreatedInApp(mate, msg); }
|
|
142
|
-
function renderAvailableBuiltins(builtins) { _dmRenderAvailableBuiltins(builtins); }
|
|
143
151
|
function buildMateInterviewPrompt(mate) { return _dmBuildMateInterviewPrompt(mate); }
|
|
144
152
|
function updateMateIconStatus(msg) { _dmUpdateMateIconStatus(msg); }
|
|
145
153
|
function connectMateProject(slug) { _dmConnectMateProject(slug); }
|
|
@@ -156,7 +164,7 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
156
164
|
var projectHintDismiss = $("project-hint-dismiss");
|
|
157
165
|
// cachedProjects, cachedProjectCount, cachedRemovedProjects -> modules/app-projects.js
|
|
158
166
|
// currentProjectOwnerId -> store
|
|
159
|
-
var currentSlug =
|
|
167
|
+
var currentSlug = connectionSlug || null; // kept for pre-store init
|
|
160
168
|
|
|
161
169
|
// updateProjectList, renderTopbarPresence, renderProjectList -> modules/app-projects.js
|
|
162
170
|
function updateProjectList(msg) { _projUpdateProjectList(msg); }
|
|
@@ -184,18 +192,6 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
184
192
|
|
|
185
193
|
document.addEventListener("keydown", function (e) {
|
|
186
194
|
if (e.key === "Escape") {
|
|
187
|
-
if (isHomeHubVisible() && store.get('currentSlug')) {
|
|
188
|
-
hideHomeHub();
|
|
189
|
-
if (document.documentElement.classList.contains("pwa-standalone")) {
|
|
190
|
-
history.replaceState(null, "", "/p/" + store.get('currentSlug') + "/");
|
|
191
|
-
} else {
|
|
192
|
-
history.pushState(null, "", "/p/" + store.get('currentSlug') + "/");
|
|
193
|
-
}
|
|
194
|
-
var homeIcon = document.querySelector(".icon-strip-home");
|
|
195
|
-
if (homeIcon) homeIcon.classList.remove("active");
|
|
196
|
-
renderProjectList();
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
195
|
closeImageModal();
|
|
200
196
|
}
|
|
201
197
|
});
|
|
@@ -302,13 +298,63 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
302
298
|
isHeadlessMode: false,
|
|
303
299
|
savedMainSlug: null,
|
|
304
300
|
connected: false,
|
|
301
|
+
homeChatMateId: null,
|
|
302
|
+
homeChatSessionId: null,
|
|
303
|
+
homeChatSessionModel: null,
|
|
304
|
+
homeChatSessionVendor: null,
|
|
305
|
+
homeChatSessionModelLoading: false,
|
|
306
|
+
homeMateSessions: {},
|
|
307
|
+
homeActiveSessionByMate: {},
|
|
308
|
+
homePreferredMateId: null,
|
|
309
|
+
homeSidebarCollapsed: false,
|
|
310
|
+
homeChatScope: "all",
|
|
311
|
+
homeSubSurface: "chat",
|
|
312
|
+
homeDebatesStatus: "idle",
|
|
313
|
+
homeDebates: [],
|
|
314
|
+
homeDebatesRequestId: null,
|
|
315
|
+
homeDebatesError: "",
|
|
316
|
+
homeSurfaceLoaded: false,
|
|
317
|
+
homePrimarySurface: null,
|
|
318
|
+
homeSurfaceProjectSlug: null,
|
|
319
|
+
homeSurfaceIntent: null,
|
|
320
|
+
homeSurfaceBootResolved: false,
|
|
321
|
+
homeSurfaceRestoreRequested: false,
|
|
322
|
+
dockActiveToolId: null,
|
|
323
|
+
dockOpen: false,
|
|
324
|
+
homeDockPreferenceLoaded: false,
|
|
325
|
+
dockFocus: false,
|
|
326
|
+
dockLibraryOpen: false,
|
|
327
|
+
dockBackstageOpen: false,
|
|
328
|
+
dockWidth: null,
|
|
329
|
+
dockHasActivity: false,
|
|
330
|
+
dockActivityToolId: null,
|
|
331
|
+
projectLogsOpen: false,
|
|
332
|
+
projectLogsWide: false,
|
|
333
|
+
projectLogsFullscreen: false,
|
|
334
|
+
projectLogsEntries: [],
|
|
335
|
+
projectLogsSelectedRef: null,
|
|
336
|
+
projectLogsView: 'list',
|
|
337
|
+
projectLogsCategory: '',
|
|
338
|
+
projectLogsListScroll: 0,
|
|
339
|
+
projectLogsListRequestId: null,
|
|
340
|
+
projectLogsReadRequestId: null,
|
|
341
|
+
projectLogsCommentRequestId: null,
|
|
342
|
+
projectLogsCommentStatusEl: null,
|
|
343
|
+
projectLogsUnread: 0,
|
|
344
|
+
projectLogsSeenRevisions: {},
|
|
345
|
+
projectLogsPreview: false,
|
|
346
|
+
projectLogsPinned: false,
|
|
347
|
+
installedTools: [],
|
|
348
|
+
homeToolRegistryLoaded: false,
|
|
349
|
+
toolScanErrors: [],
|
|
350
|
+
|
|
305
351
|
// dm
|
|
306
352
|
dmTargetUser: null,
|
|
307
353
|
dmKey: null,
|
|
308
354
|
cachedMatesList: [],
|
|
309
355
|
cachedDmFavorites: [],
|
|
310
356
|
cachedAvailableBuiltins: [],
|
|
311
|
-
|
|
357
|
+
projectMateDmsEnabled: false,
|
|
312
358
|
returningFromMateDm: false,
|
|
313
359
|
pendingMateInterview: null,
|
|
314
360
|
pendingTermCommand: null,
|
|
@@ -438,7 +484,7 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
438
484
|
get projectOwnerId() { return store.get('currentProjectOwnerId'); },
|
|
439
485
|
get ownerLocked() { return store.get('ownerLocked'); },
|
|
440
486
|
openDm: function (userId) { openDm(userId); },
|
|
441
|
-
openMateWizard: function () {
|
|
487
|
+
openMateWizard: function () { startClayMateCreation(); },
|
|
442
488
|
openAddProjectModal: function () { openAddProjectModal(); },
|
|
443
489
|
sendWs: function (msg) { var _ws = _getWsRef(); if (_ws && _ws.readyState === 1) _ws.send(JSON.stringify(msg)); },
|
|
444
490
|
onDmRemoveUser: function (userId) { var dr = Object.assign({}, store.get('dmRemovedUsers')); dr[userId] = true; store.set({ dmRemovedUsers: dr }); },
|
|
@@ -451,20 +497,15 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
451
497
|
// buttons exist in the DOM when sidebar.js (and later terminal.js /
|
|
452
498
|
// mcp-ui.js / etc.) attach click handlers by ID.
|
|
453
499
|
initToolPalettes();
|
|
500
|
+
initProjectLogs();
|
|
454
501
|
initSidebar(sidebarCtx);
|
|
455
502
|
var wsGetter = function () { return _getWsRef(); };
|
|
456
503
|
initMateSidebar(wsGetter);
|
|
457
504
|
initMateKnowledge(wsGetter);
|
|
458
505
|
initMateMemory(wsGetter, { onShow: function () { hideKnowledge(); hideNotes(); } });
|
|
459
|
-
initMateWizard(
|
|
460
|
-
function (msg) { var _ws = _getWsRef(); if (_ws && _ws.readyState === 1) _ws.send(JSON.stringify(msg)); },
|
|
461
|
-
function (mate) { handleMateCreatedInApp(mate); }
|
|
462
|
-
);
|
|
463
|
-
|
|
464
506
|
initCommandPalette({
|
|
465
507
|
switchProject: function (slug) { switchProject(slug); },
|
|
466
508
|
currentSlug: function () { return store.get('currentSlug'); },
|
|
467
|
-
projectList: function () { return getCachedProjects() || []; },
|
|
468
509
|
matesList: function () { return store.get('cachedMatesList') || []; },
|
|
469
510
|
availableBuiltins: function () { return store.get('cachedAvailableBuiltins') || []; },
|
|
470
511
|
allUsers: function () { return store.get('cachedAllUsers') || []; },
|
|
@@ -486,7 +527,7 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
486
527
|
openDm: function (userId) { openDm(userId); },
|
|
487
528
|
runAction: function (action) {
|
|
488
529
|
switch (action) {
|
|
489
|
-
case "createMate":
|
|
530
|
+
case "createMate": startClayMateCreation(); break;
|
|
490
531
|
case "openSettings":
|
|
491
532
|
var sb = document.getElementById("server-settings-btn");
|
|
492
533
|
if (sb) sb.click();
|
|
@@ -741,6 +782,12 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
741
782
|
window.addEventListener("popstate", function () {
|
|
742
783
|
var m = location.pathname.match(/^\/p\/([a-z0-9_-]+)/);
|
|
743
784
|
var newSlug = m ? m[1] : null;
|
|
785
|
+
if (!newSlug) {
|
|
786
|
+
showHomeHub(true);
|
|
787
|
+
return;
|
|
788
|
+
}
|
|
789
|
+
rememberHomePrimarySurface("project", newSlug);
|
|
790
|
+
if (isHomeHubVisible()) hideHomeHub();
|
|
744
791
|
if (newSlug && newSlug !== store.get('currentSlug')) {
|
|
745
792
|
resetFileBrowser();
|
|
746
793
|
closeArchive();
|
|
@@ -847,7 +894,10 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
847
894
|
addCopyHandler: addCopyHandler,
|
|
848
895
|
matesList: function () { return store.get('cachedMatesList') || []; },
|
|
849
896
|
availableBuiltins: function () { return store.get('cachedAvailableBuiltins') || []; },
|
|
850
|
-
currentMateId: function () {
|
|
897
|
+
currentMateId: function () {
|
|
898
|
+
if (store.get('dmTargetUser') && store.get('dmTargetUser').isMate) return store.get('dmTargetUser').id;
|
|
899
|
+
return store.get('homeChatMateId') || null;
|
|
900
|
+
},
|
|
851
901
|
requireSkills: requireSkills,
|
|
852
902
|
showDebateEndedMode: function (msg) { showDebateEndedMode(msg); },
|
|
853
903
|
});
|
|
@@ -880,9 +930,8 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
880
930
|
fetch("/api/me").then(function (r) { return r.json(); }).then(function (d) {
|
|
881
931
|
if (d.multiUser) {
|
|
882
932
|
store.set({ isMultiUserMode: true });
|
|
883
|
-
//
|
|
884
|
-
// the
|
|
885
|
-
// multi-user keeps it visible (still hosts other users' avatars).
|
|
933
|
+
// The shared strip also hosts other users in multi-user deployments;
|
|
934
|
+
// the project Mate DM preference therefore hides only Mate shortcuts.
|
|
886
935
|
if (document.body) document.body.classList.add('is-multi-user');
|
|
887
936
|
}
|
|
888
937
|
if (d.user && d.user.id) { store.set({ myUserId: d.user.id }); }
|
|
@@ -923,10 +972,8 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
923
972
|
if (msBtn) msBtn.style.display = "none";
|
|
924
973
|
}
|
|
925
974
|
if (!_perms.scheduledTasks) {
|
|
926
|
-
var schBtn = document.getElementById("scheduler-btn");
|
|
975
|
+
var schBtn = document.getElementById("home-scheduler-btn");
|
|
927
976
|
if (schBtn) schBtn.style.display = "none";
|
|
928
|
-
var mateSchBtn = document.getElementById("mate-scheduler-btn");
|
|
929
|
-
if (mateSchBtn) mateSchBtn.style.display = "none";
|
|
930
977
|
}
|
|
931
978
|
if (!_perms.createProject) {
|
|
932
979
|
var addProjBtn = document.getElementById("icon-strip-add");
|
|
@@ -1066,6 +1113,7 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
1066
1113
|
var stickyNotesSidebarBtn = $("sticky-notes-sidebar-btn");
|
|
1067
1114
|
if (stickyNotesSidebarBtn) {
|
|
1068
1115
|
stickyNotesSidebarBtn.addEventListener("click", function () {
|
|
1116
|
+
closeProjectLogs();
|
|
1069
1117
|
if (isSchedulerOpen()) closeScheduler();
|
|
1070
1118
|
if (isArchiveOpen()) closeArchive();
|
|
1071
1119
|
showNotes();
|
|
@@ -1078,6 +1126,7 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
1078
1126
|
if (stickyNotesBadge) {
|
|
1079
1127
|
stickyNotesBadge.addEventListener("click", function (e) {
|
|
1080
1128
|
e.stopPropagation();
|
|
1129
|
+
closeProjectLogs();
|
|
1081
1130
|
if (isSchedulerOpen()) closeScheduler();
|
|
1082
1131
|
if (isArchiveOpen()) {
|
|
1083
1132
|
closeArchive();
|
|
@@ -1091,9 +1140,9 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
1091
1140
|
var fileBrowserBtn = $("file-browser-btn");
|
|
1092
1141
|
var gitSidebarBtn = $("git-sidebar-btn");
|
|
1093
1142
|
var terminalSidebarBtn = $("terminal-sidebar-btn");
|
|
1094
|
-
if (fileBrowserBtn) fileBrowserBtn.addEventListener("click", function () { if (isArchiveOpen()) closeArchive(); if (isSchedulerOpen()) closeScheduler(); });
|
|
1095
|
-
if (gitSidebarBtn) gitSidebarBtn.addEventListener("click", function () { if (isArchiveOpen()) closeArchive(); if (isSchedulerOpen()) closeScheduler(); });
|
|
1096
|
-
if (terminalSidebarBtn) terminalSidebarBtn.addEventListener("click", function () { if (isArchiveOpen()) closeArchive(); if (isSchedulerOpen()) closeScheduler(); });
|
|
1143
|
+
if (fileBrowserBtn) fileBrowserBtn.addEventListener("click", function () { closeProjectLogs(); if (isArchiveOpen()) closeArchive(); if (isSchedulerOpen()) closeScheduler(); });
|
|
1144
|
+
if (gitSidebarBtn) gitSidebarBtn.addEventListener("click", function () { closeProjectLogs(); if (isArchiveOpen()) closeArchive(); if (isSchedulerOpen()) closeScheduler(); });
|
|
1145
|
+
if (terminalSidebarBtn) terminalSidebarBtn.addEventListener("click", function () { closeProjectLogs(); if (isArchiveOpen()) closeArchive(); if (isSchedulerOpen()) closeScheduler(); });
|
|
1097
1146
|
|
|
1098
1147
|
// --- Ralph Loop UI (delegated to app-loop-ui.js + app-loop-wizard.js) ---
|
|
1099
1148
|
function updateLoopInputVisibility(loop) { _loopUpdateLoopInputVisibility(loop); }
|
|
@@ -1118,7 +1167,6 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
1118
1167
|
// --- Skill install dialog (delegated to app-skills-install.js) ---
|
|
1119
1168
|
// knownInstalledSkills, pendingSkillInstalls -> modules/app-skills-install.js
|
|
1120
1169
|
function requireSkills(opts, cb) { _siRequireSkills(opts, cb); }
|
|
1121
|
-
function requireClayMateInterview(cb) { _siRequireClayMateInterview(cb); }
|
|
1122
1170
|
function handleSkillInstallWs(msg) { _siHandleSkillInstallWs(msg); }
|
|
1123
1171
|
|
|
1124
1172
|
|
|
@@ -1210,6 +1258,21 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
1210
1258
|
|
|
1211
1259
|
// --- Home Hub module ---
|
|
1212
1260
|
initHomeHub();
|
|
1261
|
+
initHomeSidebar();
|
|
1262
|
+
initHomeSurfaceBoot();
|
|
1263
|
+
|
|
1264
|
+
// Mates live on the home hub now, so keep that pane and the C button
|
|
1265
|
+
// badge in sync with the mate list, unread DMs, and mention activity.
|
|
1266
|
+
store.subscribe(function (state, prev) {
|
|
1267
|
+
if (state.cachedMatesList !== prev.cachedMatesList || state.dmUnread !== prev.dmUnread) {
|
|
1268
|
+
renderHomeMateSwitcher();
|
|
1269
|
+
updateHomeIconBadge();
|
|
1270
|
+
}
|
|
1271
|
+
});
|
|
1272
|
+
onMentionActiveChange(function () {
|
|
1273
|
+
renderHomeMateSwitcher();
|
|
1274
|
+
});
|
|
1275
|
+
updateHomeIconBadge();
|
|
1213
1276
|
|
|
1214
1277
|
// --- DM module ---
|
|
1215
1278
|
initDm();
|
|
@@ -1222,11 +1285,9 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
|
|
|
1222
1285
|
// --- Init ---
|
|
1223
1286
|
lucide.createIcons();
|
|
1224
1287
|
connect();
|
|
1225
|
-
if (
|
|
1226
|
-
showHomeHub();
|
|
1227
|
-
} else if (location.hash === "#scheduler") {
|
|
1288
|
+
if (slugMatch && location.hash === "#scheduler") {
|
|
1228
1289
|
// Restore scheduler view after refresh
|
|
1229
1290
|
setTimeout(function () { openSchedulerToTab("calendar"); }, 500);
|
|
1230
|
-
} else {
|
|
1291
|
+
} else if (slugMatch) {
|
|
1231
1292
|
inputEl.focus();
|
|
1232
1293
|
}
|
package/lib/public/css/base.css
CHANGED
|
@@ -95,6 +95,10 @@ img.emoji {
|
|
|
95
95
|
--brand-paper: #f2f2ef;
|
|
96
96
|
--brand-indigo: #5857fc;
|
|
97
97
|
--brand-green: #07e5a3;
|
|
98
|
+
--brand-gold: #e0b45b;
|
|
99
|
+
--brand-blue: #8aa7ff;
|
|
100
|
+
--brand-coral: #ff7479;
|
|
101
|
+
--brand-clay: #d69a7d;
|
|
98
102
|
--font-weight-body: 400;
|
|
99
103
|
--font-weight-ui: 500;
|
|
100
104
|
--font-weight-heading: 600;
|