clay-server 5.2.0-beta.1 → 5.2.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -4
- package/lib/account-auth-socket.js +1 -0
- package/lib/builtin-mates.js +19 -16
- package/lib/bundled-skills/clay-agent-browser/SKILL.md +6 -2
- package/lib/canonical-clay-record-authority.js +15 -0
- package/lib/canonical-clay-scheduling-authority.js +19 -0
- package/lib/claude-hook-installer.js +1 -239
- package/lib/claude-jsonl-watcher.js +1 -204
- package/lib/clay-control-presentation-binding.js +96 -0
- package/lib/clay-control-presentation.js +128 -0
- package/lib/clay-control-target-projection.js +26 -0
- package/lib/clay-mate-chat-receipts.js +26 -0
- package/lib/clay-mate-chat.js +88 -0
- package/lib/clay-mate-knowledge-input.js +26 -0
- package/lib/clay-mate-knowledge.js +95 -0
- package/lib/clay-mate-lifecycle.js +95 -0
- package/lib/clay-product-control-input.js +33 -0
- package/lib/clay-product-control-tools.js +52 -0
- package/lib/clay-product-control.js +250 -0
- package/lib/clay-project-lifecycle.js +154 -0
- package/lib/clay-project-record-input.js +44 -0
- package/lib/clay-project-records.js +84 -0
- package/lib/clay-scheduling-input.js +21 -0
- package/lib/clay-scheduling-receipts.js +26 -0
- package/lib/clay-scheduling.js +119 -0
- package/lib/clay-screen-controls.js +104 -0
- package/lib/clay-skill-install.js +1 -33
- package/lib/clay-vendor-usage.js +44 -0
- package/lib/clay-workspace-controls.js +84 -0
- package/lib/clay-workspace-input.js +17 -0
- package/lib/clay-workspace-receipts.js +26 -0
- package/lib/cli-sessions.js +1 -300
- package/lib/codex-defaults.js +1 -28
- package/lib/context-usage.js +3 -2
- package/lib/contextual-screen-snapshot.js +38 -0
- package/lib/daemon-project-access.js +11 -0
- package/lib/daemon-project-lifecycle-callbacks.js +15 -0
- package/lib/daemon-project-lifecycle.js +262 -0
- package/lib/daemon-projects.js +1 -1
- package/lib/daemon.js +78 -276
- package/lib/default-ai-runtime.js +4 -8
- package/lib/dm-digest-cursor.js +120 -0
- package/lib/email-mcp-server.js +1 -1
- package/lib/github-star-count.js +147 -0
- package/lib/issues-service.js +29 -15
- package/lib/kiro-defaults.js +1 -22
- package/lib/knowledge-db-import-validation.js +46 -0
- package/lib/knowledge-db-import.js +99 -0
- package/lib/knowledge-db-service.js +24 -33
- package/lib/knowledge-db-storage-nedb-maintenance.js +99 -0
- package/lib/knowledge-db-storage-nedb.js +66 -0
- package/lib/knowledge-db-storage.js +72 -0
- package/lib/knowledge-db-validation.js +0 -0
- package/lib/knowledge-document-index.js +2 -1
- package/lib/knowledge-file-store.js +7 -1
- package/lib/knowledge-product-operations.js +46 -0
- package/lib/mate-avatar-catalog.js +12 -0
- package/lib/mate-avatar-migration.js +41 -0
- package/lib/mate-context-service.js +138 -0
- package/lib/mate-context-tools.js +21 -0
- package/lib/mate-creation-mcp-server.js +2 -0
- package/lib/mate-knowledge-canonical-access.js +10 -0
- package/lib/mate-knowledge-mate-bound.js +53 -0
- package/lib/mate-knowledge-mcp-server.js +55 -8
- package/lib/mate-knowledge-service.js +16 -34
- package/lib/mate-knowledge-text-tools.js +106 -0
- package/lib/mate-lifecycle-service.js +94 -0
- package/lib/mate-message-delivery.js +43 -0
- package/lib/mate-ready-creation.js +9 -1
- package/lib/mate-schedule-input.js +29 -0
- package/lib/mate-schedule-lifecycle.js +151 -0
- package/lib/mate-scheduling.js +103 -0
- package/lib/mates.js +18 -6
- package/lib/mcp-agent-tools.js +117 -0
- package/lib/mcp-connection-store.js +119 -15
- package/lib/mcp-import-credentials.js +31 -0
- package/lib/mcp-local-transport.js +13 -0
- package/lib/mcp-oauth.js +8 -6
- package/lib/mcp-proxy.js +2 -32
- package/lib/mcp-query-bridge.js +30 -0
- package/lib/mcp-remote-connections.js +74 -20
- package/lib/mcp-source-adapters.js +1 -0
- package/lib/mcp-source-context.js +1 -0
- package/lib/mcp-source-discovery.js +1 -0
- package/lib/mcp-source-plugins.js +1 -0
- package/lib/mcp-source-restrictions.js +1 -0
- package/lib/mcp-tool-policy.js +9 -0
- package/lib/notes-checklist.js +92 -0
- package/lib/notes.js +51 -4
- package/lib/os-user-diagnostics.js +2 -4
- package/lib/os-users.js +24 -70
- package/lib/pane-pending-interactions.js +20 -0
- package/lib/pane-session-activation.js +114 -0
- package/lib/pane-session-transport.js +26 -0
- package/lib/project-admin-overview.js +51 -0
- package/lib/project-ask-user.js +8 -4
- package/lib/project-connection.js +14 -10
- package/lib/project-control-git-view.js +12 -0
- package/lib/project-debate.js +1 -0
- package/lib/project-delegated-follow-up.js +2 -1
- package/lib/project-directory-claim.js +65 -0
- package/lib/project-file-operations.js +61 -0
- package/lib/project-filesystem.js +15 -85
- package/lib/project-full-access.js +23 -2
- package/lib/project-http.js +7 -4
- package/lib/project-knowledge.js +32 -18
- package/lib/project-lifecycle-operations.js +98 -0
- package/lib/project-lifecycle-process-witness.js +32 -0
- package/lib/project-lifecycle-runtime.js +50 -0
- package/lib/project-linux-access.js +22 -0
- package/lib/project-logs-canonical-clay.js +27 -0
- package/lib/project-logs-clay-query.js +16 -0
- package/lib/project-logs-schema.js +4 -2
- package/lib/project-logs-service.js +8 -7
- package/lib/project-logs.js +1 -0
- package/lib/project-loop.js +1 -0
- package/lib/project-mate-chat-control.js +55 -0
- package/lib/project-mate-creation-proposal.js +18 -3
- package/lib/project-mate-interaction.js +40 -62
- package/lib/project-mcp.js +54 -16
- package/lib/project-models.js +14 -31
- package/lib/project-notifications.js +76 -17
- package/lib/project-ownership.js +77 -0
- package/lib/project-pair-result-delivery.js +14 -3
- package/lib/project-pair-usage.js +12 -13
- package/lib/project-pending-message-queue.js +4 -1
- package/lib/project-product-control.js +89 -0
- package/lib/project-product-session-queue.js +46 -0
- package/lib/project-push-access.js +28 -0
- package/lib/project-scheduled-message-queue.js +30 -0
- package/lib/project-scheduled-messages.js +67 -68
- package/lib/project-scheduled-task-control.js +83 -0
- package/lib/project-scheduled-tasks.js +13 -2
- package/lib/project-scheduling-access.js +10 -0
- package/lib/project-session-actions.js +65 -0
- package/lib/project-session-delete.js +8 -1
- package/lib/project-session-document.js +27 -7
- package/lib/project-session-github.js +63 -19
- package/lib/project-session-history-actions.js +167 -0
- package/lib/project-session-linear.js +14 -6
- package/lib/project-session-notes.js +40 -11
- package/lib/project-session-pair.js +1 -1
- package/lib/project-session-runtime-actions.js +64 -0
- package/lib/project-session-spawn.js +2 -3
- package/lib/project-session-vendor.js +55 -0
- package/lib/project-sessions.js +160 -290
- package/lib/project-shared-browser.js +78 -17
- package/lib/project-start-protocol.js +29 -0
- package/lib/project-studio-presentation.js +58 -0
- package/lib/project-user-message.js +67 -1
- package/lib/project-vendor-login.js +8 -36
- package/lib/project-workspace-operations.js +126 -0
- package/lib/project-workspace-query.js +19 -2
- package/lib/project.js +181 -45
- package/lib/public/app.js +71 -17
- package/lib/public/appearance-bootstrap.js +16 -0
- package/lib/public/css/clay-tool-activity.css +51 -0
- package/lib/public/css/clay-workspace.css +29 -0
- package/lib/public/css/command-palette.css +12 -33
- package/lib/public/css/contextual-clay.css +240 -0
- package/lib/public/css/filebrowser.css +1 -1
- package/lib/public/css/home-debate-planning.css +2 -0
- package/lib/public/css/home-mate-creation.css +5 -0
- package/lib/public/css/input.css +6 -0
- package/lib/public/css/mate-avatar-gallery.css +12 -0
- package/lib/public/css/mate-conversation.css +10 -5
- package/lib/public/css/mate-loading-scene.css +21 -0
- package/lib/public/css/messages.css +6 -2
- package/lib/public/css/overlays.css +68 -258
- package/lib/public/css/project-admin-overview.css +13 -0
- package/lib/public/css/project-mate-creation.css +5 -6
- package/lib/public/css/project-start.css +108 -0
- package/lib/public/css/projects-hub.css +53 -14
- package/lib/public/css/session-folders.css +11 -0
- package/lib/public/css/session-github.css +46 -1
- package/lib/public/css/settings-shell.css +103 -0
- package/lib/public/css/shared-browser.css +35 -1
- package/lib/public/css/sidebar.css +7 -0
- package/lib/public/css/sticky-notes.css +87 -1
- package/lib/public/css/title-bar.css +79 -0
- package/lib/public/index.html +61 -68
- package/lib/public/mate-avatars/B01.png +0 -0
- package/lib/public/mate-avatars/B02.png +0 -0
- package/lib/public/mate-avatars/B03.png +0 -0
- package/lib/public/mate-avatars/B04.png +0 -0
- package/lib/public/mate-avatars/B05.png +0 -0
- package/lib/public/mate-avatars/B06.png +0 -0
- package/lib/public/mate-avatars/B07.png +0 -0
- package/lib/public/mate-avatars/B08.png +0 -0
- package/lib/public/mate-avatars/B09.png +0 -0
- package/lib/public/mate-avatars/B10.png +0 -0
- package/lib/public/mate-avatars/B11.png +0 -0
- package/lib/public/mate-avatars/B12.png +0 -0
- package/lib/public/mate-avatars/B13.png +0 -0
- package/lib/public/mate-avatars/B14.png +0 -0
- package/lib/public/mate-avatars/B15.png +0 -0
- package/lib/public/mate-avatars/B16.png +0 -0
- package/lib/public/mate-avatars/B17.png +0 -0
- package/lib/public/mate-avatars/B18.png +0 -0
- package/lib/public/mate-avatars/B19.png +0 -0
- package/lib/public/mate-avatars/B20.png +0 -0
- package/lib/public/mate-avatars/B21.png +0 -0
- package/lib/public/mate-avatars/B22.png +0 -0
- package/lib/public/mate-avatars/B23.png +0 -0
- package/lib/public/mate-avatars/B24.png +0 -0
- package/lib/public/mate-avatars/B25.png +0 -0
- package/lib/public/mate-avatars/B26.png +0 -0
- package/lib/public/mate-avatars/B27.png +0 -0
- package/lib/public/mate-avatars/B28.png +0 -0
- package/lib/public/mate-avatars/B29.png +0 -0
- package/lib/public/mate-avatars/B30.png +0 -0
- package/lib/public/mate-avatars/B31.png +0 -0
- package/lib/public/mate-avatars/B32.png +0 -0
- package/lib/public/mate-avatars/B33.png +0 -0
- package/lib/public/mate-avatars/B34.png +0 -0
- package/lib/public/mate-avatars/B35.png +0 -0
- package/lib/public/mate-avatars/B36.png +0 -0
- package/lib/public/mate-avatars/B37.png +0 -0
- package/lib/public/mate-avatars/B38.png +0 -0
- package/lib/public/mate-avatars/B39.png +0 -0
- package/lib/public/mate-avatars/B40.png +0 -0
- package/lib/public/mate-avatars/B41.png +0 -0
- package/lib/public/mate-avatars/B42.png +0 -0
- package/lib/public/mate-avatars/B43.png +0 -0
- package/lib/public/mate-avatars/B44.png +0 -0
- package/lib/public/mate-avatars/B45.png +0 -0
- package/lib/public/mate-avatars/B46.png +0 -0
- package/lib/public/mate-avatars/B47.png +0 -0
- package/lib/public/mate-avatars/B48.png +0 -0
- package/lib/public/mate-avatars/C01.png +0 -0
- package/lib/public/mate-avatars/C02.png +0 -0
- package/lib/public/mate-avatars/C03.png +0 -0
- package/lib/public/mate-avatars/C04.png +0 -0
- package/lib/public/mate-avatars/C05.png +0 -0
- package/lib/public/mate-avatars/C06.png +0 -0
- package/lib/public/mate-avatars/C07.png +0 -0
- package/lib/public/mate-avatars/C08.png +0 -0
- package/lib/public/mate-avatars/C09.png +0 -0
- package/lib/public/mate-avatars/C10.png +0 -0
- package/lib/public/mate-avatars/C11.png +0 -0
- package/lib/public/mate-avatars/C12.png +0 -0
- package/lib/public/mate-avatars/C13.png +0 -0
- package/lib/public/mate-avatars/C14.png +0 -0
- package/lib/public/mate-avatars/C15.png +0 -0
- package/lib/public/mate-avatars/C16.png +0 -0
- package/lib/public/mate-avatars/C17.png +0 -0
- package/lib/public/mate-avatars/C18.png +0 -0
- package/lib/public/mate-avatars/C19.png +0 -0
- package/lib/public/mate-avatars/C20.png +0 -0
- package/lib/public/mate-avatars/C21.png +0 -0
- package/lib/public/mate-avatars/C22.png +0 -0
- package/lib/public/mate-avatars/C23.png +0 -0
- package/lib/public/mate-avatars/C24.png +0 -0
- package/lib/public/mate-avatars/C25.png +0 -0
- package/lib/public/mate-avatars/C26.png +0 -0
- package/lib/public/mate-avatars/C27.png +0 -0
- package/lib/public/mate-avatars/C28.png +0 -0
- package/lib/public/mate-avatars/C29.png +0 -0
- package/lib/public/mate-avatars/C30.png +0 -0
- package/lib/public/mate-avatars/C31.png +0 -0
- package/lib/public/mate-avatars/C32.png +0 -0
- package/lib/public/mate-avatars/C33.png +0 -0
- package/lib/public/mate-avatars/C34.png +0 -0
- package/lib/public/mate-avatars/C35.png +0 -0
- package/lib/public/mate-avatars/C36.png +0 -0
- package/lib/public/mate-avatars/C37.png +0 -0
- package/lib/public/mate-avatars/C38.png +0 -0
- package/lib/public/mate-avatars/C39.png +0 -0
- package/lib/public/mate-avatars/C40.png +0 -0
- package/lib/public/mate-avatars/C41.png +0 -0
- package/lib/public/mate-avatars/C42.png +0 -0
- package/lib/public/mate-avatars/C43.png +0 -0
- package/lib/public/mate-avatars/C44.png +0 -0
- package/lib/public/mate-avatars/C45.png +0 -0
- package/lib/public/mate-avatars/C46.png +0 -0
- package/lib/public/mate-avatars/C47.png +0 -0
- package/lib/public/mate-avatars/C48.png +0 -0
- package/lib/public/mate-avatars/catalog.json +482 -0
- package/lib/public/mate-avatars/lead-clay.png +0 -0
- package/lib/public/modules/admin-settings-invitations.js +2 -2
- package/lib/public/modules/admin-settings-projects.js +8 -4
- package/lib/public/modules/admin-settings-ui.js +20 -4
- package/lib/public/modules/admin-settings-users.js +4 -4
- package/lib/public/modules/app-connection.js +11 -1
- package/lib/public/modules/app-favicon.js +18 -9
- package/lib/public/modules/app-header.js +7 -4
- package/lib/public/modules/app-home-hub.js +2 -1
- package/lib/public/modules/app-loop-ui.js +2 -0
- package/lib/public/modules/app-message-router.js +22 -1
- package/lib/public/modules/app-messages.js +125 -19
- package/lib/public/modules/app-misc.js +3 -1
- package/lib/public/modules/app-notifications.js +11 -5
- package/lib/public/modules/app-panels.js +61 -123
- package/lib/public/modules/app-projects.js +14 -407
- package/lib/public/modules/app-rate-limit.js +19 -28
- package/lib/public/modules/app-rendering.js +4 -3
- package/lib/public/modules/avatar.js +15 -41
- package/lib/public/modules/chat-render-runtime.js +20 -0
- package/lib/public/modules/clay-browser-links.js +47 -0
- package/lib/public/modules/clay-control-activity.js +214 -0
- package/lib/public/modules/clay-control-copy.js +36 -0
- package/lib/public/modules/clay-control-detail-targets.js +44 -0
- package/lib/public/modules/clay-control-object-targets.js +52 -0
- package/lib/public/modules/clay-control-target-visibility.js +12 -0
- package/lib/public/modules/clay-control-targets.js +44 -0
- package/lib/public/modules/clay-log-links.js +23 -0
- package/lib/public/modules/clay-navigation-render.js +52 -0
- package/lib/public/modules/clay-owner-navigation.js +33 -0
- package/lib/public/modules/clay-session-links.js +31 -0
- package/lib/public/modules/clay-studio-bridge.js +20 -0
- package/lib/public/modules/clay-studio-document.js +67 -0
- package/lib/public/modules/clay-studio-render.js +146 -0
- package/lib/public/modules/clay-tool-activity.js +140 -0
- package/lib/public/modules/clay-tool-presentation.js +343 -0
- package/lib/public/modules/command-palette.js +162 -40
- package/lib/public/modules/contextual-ask-session.js +26 -0
- package/lib/public/modules/contextual-clay-geometry.js +155 -0
- package/lib/public/modules/contextual-clay-session.js +130 -0
- package/lib/public/modules/contextual-clay-workspace.js +169 -0
- package/lib/public/modules/contextual-clay.js +252 -0
- package/lib/public/modules/contextual-composer.js +91 -0
- package/lib/public/modules/contextual-mate-context.js +117 -0
- package/lib/public/modules/contextual-mate-hint.js +40 -0
- package/lib/public/modules/contextual-mate-identity.js +23 -0
- package/lib/public/modules/contextual-mate-sessions.js +134 -0
- package/lib/public/modules/contextual-search.js +137 -0
- package/lib/public/modules/contextual-session-citations.js +58 -0
- package/lib/public/modules/debate.js +1 -0
- package/lib/public/modules/default-ai.js +11 -3
- package/lib/public/modules/elicitation-form.js +5 -0
- package/lib/public/modules/filebrowser.js +20 -1
- package/lib/public/modules/generation-stop.js +8 -5
- package/lib/public/modules/git-panel.js +3 -1
- package/lib/public/modules/github-star.js +66 -0
- package/lib/public/modules/history-replay-batch.js +13 -1
- package/lib/public/modules/home-debate-live.js +2 -0
- package/lib/public/modules/home-debate-planning.js +7 -7
- package/lib/public/modules/home-mate-avatar-editor.js +127 -208
- package/lib/public/modules/home-mate-chat.js +8 -6
- package/lib/public/modules/home-mate-creation.js +73 -1
- package/lib/public/modules/home-mate-settings.js +19 -12
- package/lib/public/modules/icon-strip-tooltip.js +2 -1
- package/lib/public/modules/input.js +88 -10
- package/lib/public/modules/issues-render.js +3 -2
- package/lib/public/modules/knowledge-db-workbench.js +4 -4
- package/lib/public/modules/markdown.js +6 -34
- package/lib/public/modules/mate-avatar-catalog.js +97 -0
- package/lib/public/modules/mate-knowledge-workbench.js +1 -1
- package/lib/public/modules/mate-loading-scene.js +17 -0
- package/lib/public/modules/mate-management.js +40 -7
- package/lib/public/modules/mcp-connection-view.js +31 -13
- package/lib/public/modules/mcp-discovery-view.js +31 -0
- package/lib/public/modules/mcp-ui.js +23 -4
- package/lib/public/modules/mention.js +3 -0
- package/lib/public/modules/message-delivery.js +20 -2
- package/lib/public/modules/model-picker.js +2 -0
- package/lib/public/modules/pane-activation.js +214 -0
- package/lib/public/modules/pane-binding.js +82 -0
- package/lib/public/modules/pane-bridge.js +7 -4
- package/lib/public/modules/pane-browser-bridge.js +22 -0
- package/lib/public/modules/pane-file-bridge.js +4 -0
- package/lib/public/modules/pane-issue-bridge.js +4 -1
- package/lib/public/modules/pending-message-queue.js +1 -0
- package/lib/public/modules/permission-control.js +5 -4
- package/lib/public/modules/personal-settings-dialog.js +7 -1
- package/lib/public/modules/product-review.js +26 -0
- package/lib/public/modules/profile.js +12 -241
- package/lib/public/modules/project-access-recovery.js +17 -0
- package/lib/public/modules/project-admin-overview.js +21 -0
- package/lib/public/modules/project-chat-identity.js +13 -4
- package/lib/public/modules/project-logs-render.js +3 -0
- package/lib/public/modules/project-mate-creation-workspace.js +13 -4
- package/lib/public/modules/project-mate-navigation.js +144 -22
- package/lib/public/modules/project-session-visibility-settings.js +19 -16
- package/lib/public/modules/project-settings.js +119 -129
- package/lib/public/modules/project-start-dialog.js +130 -0
- package/lib/public/modules/project-start-folder-state.js +78 -0
- package/lib/public/modules/project-start-folder-view.js +190 -0
- package/lib/public/modules/project-start-forms.js +66 -0
- package/lib/public/modules/project-start-path.js +60 -0
- package/lib/public/modules/project-start-state.js +54 -0
- package/lib/public/modules/project-start-submit.js +67 -0
- package/lib/public/modules/projects-hub-view.js +33 -14
- package/lib/public/modules/projects-hub.js +10 -6
- package/lib/public/modules/rewind.js +5 -0
- package/lib/public/modules/scheduled-tasks.js +2 -0
- package/lib/public/modules/scheduler.js +2 -0
- package/lib/public/modules/search-clay-chat.js +5 -440
- package/lib/public/modules/server-settings.js +36 -91
- package/lib/public/modules/session-actions.js +5 -2
- package/lib/public/modules/session-context-menu.js +5 -0
- package/lib/public/modules/session-create-form.js +10 -10
- package/lib/public/modules/session-folder-layout.js +1 -1
- package/lib/public/modules/session-folder-view-menu.js +9 -0
- package/lib/public/modules/session-github.js +85 -14
- package/lib/public/modules/session-rich-drafts.js +21 -0
- package/lib/public/modules/session-switch-defer.js +67 -0
- package/lib/public/modules/session-work-primary.js +51 -0
- package/lib/public/modules/settings-defaults.js +27 -28
- package/lib/public/modules/settings-project-target.js +56 -0
- package/lib/public/modules/settings-select.js +1 -1
- package/lib/public/modules/settings-shell-registry.js +88 -0
- package/lib/public/modules/settings-shell-view.js +104 -0
- package/lib/public/modules/settings-shell.js +342 -0
- package/lib/public/modules/shared-browser-settings.js +112 -0
- package/lib/public/modules/shared-browser-tabs.js +13 -3
- package/lib/public/modules/shared-browser.js +29 -6
- package/lib/public/modules/sidebar-mobile.js +12 -33
- package/lib/public/modules/sidebar-projects.js +3 -1
- package/lib/public/modules/sidebar-session-folders-ui.js +1 -1
- package/lib/public/modules/sidebar-sessions.js +1 -0
- package/lib/public/modules/split-group-restore.js +68 -0
- package/lib/public/modules/split-pair-ui.js +1 -0
- package/lib/public/modules/split-pane-reconciler.js +15 -0
- package/lib/public/modules/split-pane-renderer.js +87 -6
- package/lib/public/modules/split-session-boundary.js +1 -1
- package/lib/public/modules/split-view.js +60 -68
- package/lib/public/modules/sticky-note-markdown.js +72 -6
- package/lib/public/modules/sticky-notes-actions.js +30 -0
- package/lib/public/modules/sticky-notes-browser.js +9 -2
- package/lib/public/modules/sticky-notes-card.js +23 -7
- package/lib/public/modules/sticky-notes-checklist.js +116 -0
- package/lib/public/modules/sticky-notes-editor.js +108 -44
- package/lib/public/modules/sticky-notes-shared.js +50 -2
- package/lib/public/modules/sticky-notes-state.js +66 -0
- package/lib/public/modules/sticky-notes.js +34 -51
- package/lib/public/modules/stt-controller.js +4 -1
- package/lib/public/modules/stt-recording.js +1 -1
- package/lib/public/modules/stt.js +7 -2
- package/lib/public/modules/terminal.js +9 -0
- package/lib/public/modules/theme.js +18 -3
- package/lib/public/modules/thinking-lifecycle.js +33 -3
- package/lib/public/modules/thinking-view.js +23 -1
- package/lib/public/modules/tools.js +60 -11
- package/lib/public/modules/tui-grab.js +1 -2
- package/lib/public/modules/user-settings-appearance.js +10 -3
- package/lib/public/modules/user-settings-editors.js +1 -1
- package/lib/public/modules/user-settings-layout.js +14 -30
- package/lib/public/modules/user-settings-preferences.js +6 -2
- package/lib/public/modules/user-settings-profile.js +13 -3
- package/lib/public/modules/user-settings.js +18 -84
- package/lib/public/modules/vendor-login-browser.js +5 -3
- package/lib/public/modules/vendor-login.js +2 -2
- package/lib/public/modules/vendor-priority.js +15 -1
- package/lib/public/modules/vendor-usage-format.js +93 -0
- package/lib/public/modules/vendor-usage-list.js +45 -0
- package/lib/public/modules/vendor-usage-model.js +215 -0
- package/lib/public/modules/vendor-usage-overview.js +312 -0
- package/lib/public/modules/wireframe-workbench.js +5 -2
- package/lib/public/muse-avatar.svg +4 -0
- package/lib/public/style.css +14 -6
- package/lib/public/sw.js +3 -1
- package/lib/public/welcome-art/conversation-desk.png +0 -0
- package/lib/public/welcome-art/mate-clay.png +0 -0
- package/lib/public/welcome-art/project-clay.png +0 -0
- package/lib/safe-bash-commands.js +3 -45
- package/lib/scheduled-task-records.js +3 -1
- package/lib/scheduler.js +2 -0
- package/lib/sdk-bridge.js +348 -402
- package/lib/sdk-foreground-admission.js +16 -0
- package/lib/sdk-mcp-descriptors.js +2 -37
- package/lib/sdk-message-processor.js +61 -18
- package/lib/sdk-quota-snapshot.js +21 -3
- package/lib/sdk-response-recovery.js +1 -0
- package/lib/sdk-worker.js +2 -677
- package/lib/server-admin.js +63 -16
- package/lib/server-appearance-settings.js +13 -1
- package/lib/server-contextual-clay-settings.js +40 -0
- package/lib/server-contextual-mate-sessions.js +70 -0
- package/lib/server-dm.js +2 -1
- package/lib/server-github-stars.js +39 -0
- package/lib/server-global-ws.js +26 -32
- package/lib/server-home-chat-events.js +18 -4
- package/lib/server-home-chat.js +22 -20
- package/lib/server-home-clay-entry.js +23 -4
- package/lib/server-home-clay-session-links.js +29 -9
- package/lib/server-home-mate-creation.js +1 -0
- package/lib/server-home-mcp-consent.js +14 -0
- package/lib/server-mates.js +25 -62
- package/lib/server-owner-ui.js +118 -0
- package/lib/server-path-access.js +38 -0
- package/lib/server-project-removal.js +22 -0
- package/lib/server-settings.js +6 -1
- package/lib/server.js +167 -43
- package/lib/session-config-transition.js +45 -0
- package/lib/session-folders.js +7 -2
- package/lib/session-fork-history.js +21 -0
- package/lib/session-github.js +9 -2
- package/lib/session-hygiene.js +3 -35
- package/lib/session-notes-mcp-server.js +26 -4
- package/lib/session-notes-writes.js +88 -0
- package/lib/session-permission-mode.js +4 -3
- package/lib/session-skill-scope.js +11 -0
- package/lib/session-visibility.js +25 -10
- package/lib/session-work-primary.js +50 -0
- package/lib/sessions.js +66 -99
- package/lib/shared-browser-cookie-sync.js +32 -0
- package/lib/shared-browser-cookies.js +79 -0
- package/lib/shared-browser-runtime.js +25 -9
- package/lib/shared-browser-storage-sync.js +43 -0
- package/lib/shared-browser-storage.js +101 -0
- package/lib/shared-browser-tools.js +2 -1
- package/lib/shared-browser-worker.js +46 -10
- package/lib/terminal-manager.js +65 -6
- package/lib/tool-llm.js +1 -1
- package/lib/tui-transcript-index.js +1 -132
- package/lib/users-contextual-clay-preferences.js +31 -0
- package/lib/users-permissions.js +2 -8
- package/lib/users.js +7 -0
- package/lib/vendor-login-browser.js +1 -11
- package/lib/vendor-usage-acp-readers.js +97 -0
- package/lib/vendor-usage-capabilities.js +88 -0
- package/lib/vendor-usage-http-readers.js +214 -0
- package/lib/vendor-usage-metrics.js +47 -0
- package/lib/vendor-usage-native-readers.js +106 -0
- package/lib/vendor-usage-overview.js +406 -0
- package/lib/vendor-usage-service.js +281 -0
- package/lib/workspace-assignment-service.js +25 -0
- package/lib/workspace-query-access.js +4 -1
- package/lib/workspace-query-mcp-server.js +1 -1
- package/lib/workspace-query-service.js +13 -2
- package/lib/ws-request.js +1 -0
- package/lib/ws-schema.js +22 -4
- package/lib/yoke/acp-agent-profiles.js +7 -5
- package/lib/yoke/adapters/antigravity.js +3 -14
- package/lib/yoke/adapters/claude-query-contract.js +9 -0
- package/lib/yoke/adapters/claude.js +66 -50
- package/lib/yoke/adapters/codex-query-contract.js +25 -0
- package/lib/yoke/adapters/codex.js +98 -123
- package/lib/yoke/adapters/kiro.js +3 -1
- package/lib/yoke/adapters/muse-query-contract.js +7 -0
- package/lib/yoke/adapters/muse.js +122 -0
- package/lib/yoke/auth-events.js +17 -0
- package/lib/yoke/claude-hook-installer.js +272 -0
- package/lib/yoke/claude-jsonl-watcher.js +204 -0
- package/lib/yoke/claude-maintenance.js +55 -0
- package/lib/yoke/claude-permission-patterns.js +53 -0
- package/lib/yoke/claude-response-recovery.js +155 -0
- package/lib/yoke/claude-transcript-hygiene.js +34 -0
- package/lib/yoke/claude-worker-startup.js +28 -0
- package/lib/yoke/clay-skill-install.js +33 -0
- package/lib/yoke/cli-sessions.js +300 -0
- package/lib/yoke/codex-app-server.js +7 -12
- package/lib/yoke/codex-dynamic-tool-names.js +80 -0
- package/lib/yoke/codex-idle-recovery.js +81 -1
- package/lib/yoke/codex-model-catalog.js +37 -3
- package/lib/yoke/codex-recovery-admission.js +164 -0
- package/lib/yoke/configuration.js +13 -0
- package/lib/yoke/discovery.js +70 -0
- package/lib/yoke/errors.js +8 -0
- package/lib/yoke/host-environment.js +7 -0
- package/lib/yoke/index.js +9 -51
- package/lib/yoke/interface.js +116 -0
- package/lib/yoke/kiro-acp-server.js +5 -5
- package/lib/yoke/legacy-sessions.js +89 -0
- package/lib/yoke/login-protocol.js +25 -0
- package/lib/yoke/maintenance.js +12 -0
- package/lib/yoke/mcp-proxy.js +32 -0
- package/lib/yoke/mcp-source-adapters.js +91 -0
- package/lib/yoke/mcp-source-context.js +42 -0
- package/lib/yoke/mcp-source-discovery.js +169 -0
- package/lib/yoke/mcp-source-plugins.js +68 -0
- package/lib/yoke/mcp-source-restrictions.js +47 -0
- package/lib/yoke/mcp-tool-policy-normalize.js +28 -0
- package/lib/yoke/model-preferences.js +6 -0
- package/lib/yoke/muse-artifacts.js +36 -0
- package/lib/yoke/muse-controls.js +50 -0
- package/lib/yoke/muse-input.js +64 -0
- package/lib/yoke/muse-items.js +157 -0
- package/lib/yoke/muse-policy.js +52 -0
- package/lib/yoke/muse-query.js +428 -0
- package/lib/yoke/muse-runtime.js +211 -0
- package/lib/yoke/muse-services.js +92 -0
- package/lib/yoke/muse-skills.js +79 -0
- package/lib/yoke/muse-turns.js +71 -0
- package/lib/yoke/options/acp.js +2 -0
- package/lib/yoke/options/antigravity.js +2 -0
- package/lib/yoke/options/claude.js +21 -0
- package/lib/yoke/options/codex-defaults.js +29 -0
- package/lib/yoke/options/codex-settings.js +21 -0
- package/lib/yoke/options/codex.js +6 -0
- package/lib/yoke/options/kiro-defaults.js +22 -0
- package/lib/yoke/options/kiro.js +5 -0
- package/lib/yoke/options/muse.js +5 -0
- package/lib/yoke/provider-contract.js +5 -0
- package/lib/yoke/providers/antigravity-executable.js +8 -0
- package/lib/yoke/providers/claude-executable.js +40 -0
- package/lib/yoke/providers/claude-model-descriptions.js +34 -0
- package/lib/yoke/providers/claude-process.js +97 -0
- package/lib/yoke/providers/claude-provision.js +75 -0
- package/lib/yoke/providers/codex-errors.js +8 -0
- package/lib/yoke/providers/muse-executable.js +17 -0
- package/lib/yoke/provisioning.js +6 -0
- package/lib/yoke/query-options.js +10 -0
- package/lib/yoke/response-recovery.js +41 -0
- package/lib/yoke/sdk-mcp-descriptors.js +37 -0
- package/lib/yoke/sdk-server-factory.js +7 -0
- package/lib/yoke/session-history.js +8 -0
- package/lib/yoke/session-tool-transport.js +34 -13
- package/lib/yoke/settings.js +23 -0
- package/lib/yoke/source-locations.js +4 -0
- package/lib/yoke/title-query.js +18 -7
- package/lib/yoke/tui-transcript-index.js +132 -0
- package/lib/yoke/usage.js +48 -0
- package/lib/yoke/user-input.js +13 -0
- package/lib/yoke/vendor-registry.js +87 -3
- package/package.json +11 -4
- package/lib/public/modules/server-settings-navigation.js +0 -39
package/lib/project.js
CHANGED
|
@@ -46,6 +46,8 @@ var { attachShellCommand } = require("./project-shell-command");
|
|
|
46
46
|
var { attachVendorLogin } = require("./project-vendor-login");
|
|
47
47
|
var { attachConnection } = require("./project-connection");
|
|
48
48
|
var { attachProjectScheduledMessages } = require("./project-scheduled-messages");
|
|
49
|
+
var { attachMateScheduling } = require("./mate-scheduling");
|
|
50
|
+
var { attachMateScheduleLifecycle } = require("./mate-schedule-lifecycle");
|
|
49
51
|
var { attachMcp } = require("./project-mcp");
|
|
50
52
|
var { createSessionSkillCatalog } = require("./yoke/session-skill-catalog");
|
|
51
53
|
var { attachEmail: attachEmailModule } = require("./project-email");
|
|
@@ -229,6 +231,8 @@ function createProjectContext(opts) {
|
|
|
229
231
|
var getScheduleCount = opts.getScheduleCount || function () { return 0; };
|
|
230
232
|
var notifyProcessingChanged = opts.onProcessingChanged || function () {};
|
|
231
233
|
var _scheduledMessages = null;
|
|
234
|
+
var _mateScheduling = null;
|
|
235
|
+
var _mateLifecycle = null;
|
|
232
236
|
var _scheduledTasks = null;
|
|
233
237
|
var _scheduledTaskExecution = null;
|
|
234
238
|
function onProcessingChanged() {
|
|
@@ -348,6 +352,10 @@ function createProjectContext(opts) {
|
|
|
348
352
|
function getRuntimeEnvForSession(session) {
|
|
349
353
|
var linuxUser = (session && session.linuxUser) || getLinuxUserForSession(session);
|
|
350
354
|
var osUserInfo = getOsUserInfoForLinuxUser(linuxUser);
|
|
355
|
+
return resolveOwnerRuntimeEnv(osUserInfo);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
function resolveOwnerRuntimeEnv(osUserInfo) {
|
|
351
359
|
var baseEnv = osUserInfo ? buildUserEnv(osUserInfo) : process.env;
|
|
352
360
|
var shared = typeof opts.onGetSharedEnv === "function" ? opts.onGetSharedEnv() : null;
|
|
353
361
|
var projectEnv = typeof opts.onGetProjectEnv === "function" ? opts.onGetProjectEnv(slug) : null;
|
|
@@ -451,7 +459,8 @@ function createProjectContext(opts) {
|
|
|
451
459
|
if (obj.type === "loop_registry_updated") payload.records = getHubSchedules(userId);
|
|
452
460
|
else payload.schedules = getHubSchedules(userId);
|
|
453
461
|
}
|
|
454
|
-
|
|
462
|
+
payload = require('./pane-session-transport').outbound(ws, payload);
|
|
463
|
+
if (payload) ws.send(JSON.stringify(payload));
|
|
455
464
|
}
|
|
456
465
|
|
|
457
466
|
function sendToAdmins(obj) {
|
|
@@ -543,24 +552,27 @@ function createProjectContext(opts) {
|
|
|
543
552
|
|| !!(ws._clayUser && ws._clayUser.id === session.userKnowledgeOwnerId);
|
|
544
553
|
}
|
|
545
554
|
|
|
546
|
-
function sendToSession(sessionId, obj) {
|
|
547
|
-
var data = JSON.stringify(obj);
|
|
555
|
+
function sendToSession(sessionId, obj, onSent) {
|
|
556
|
+
var data = JSON.stringify(obj), delivered = 0;
|
|
548
557
|
for (var ws of clients) {
|
|
549
558
|
if (ws.readyState === 1 && canReceiveMate(ws) && canReceiveYou(ws, sessionId) && ws._clayActiveSession === sessionId) {
|
|
550
|
-
|
|
559
|
+
var panePayload = require('./pane-session-transport').outbound(ws, obj, sessionId);
|
|
560
|
+
if (panePayload) { ws.send(JSON.stringify(panePayload)); delivered++; if (onSent) onSent(ws); }
|
|
551
561
|
}
|
|
552
562
|
}
|
|
553
563
|
homeDebateClients.forEach(function (ws) {
|
|
554
564
|
if (ws.readyState !== 1) { homeDebateClients.delete(ws); return; }
|
|
555
|
-
if (canReceiveMate(ws) && canReceiveYou(ws, sessionId) && !clients.has(ws) && ws._clayHomeDebateSlug === slug && ws._clayActiveSession === sessionId) ws.send(data);
|
|
565
|
+
if (canReceiveMate(ws) && canReceiveYou(ws, sessionId) && !clients.has(ws) && ws._clayHomeDebateSlug === slug && ws._clayActiveSession === sessionId) { ws.send(data); delivered++; if (onSent) onSent(ws); }
|
|
556
566
|
});
|
|
567
|
+
return delivered;
|
|
557
568
|
}
|
|
558
569
|
|
|
559
570
|
function sendToSessionOthers(sender, sessionId, obj) {
|
|
560
571
|
var data = JSON.stringify(obj);
|
|
561
572
|
for (var ws of clients) {
|
|
562
573
|
if (ws !== sender && ws.readyState === 1 && canReceiveMate(ws) && canReceiveYou(ws, sessionId) && ws._clayActiveSession === sessionId) {
|
|
563
|
-
|
|
574
|
+
var panePayload = require('./pane-session-transport').outbound(ws, obj, sessionId);
|
|
575
|
+
if (panePayload) ws.send(JSON.stringify(panePayload));
|
|
564
576
|
}
|
|
565
577
|
}
|
|
566
578
|
}
|
|
@@ -646,7 +658,8 @@ function createProjectContext(opts) {
|
|
|
646
658
|
var access = opts.getProjectAccess ? opts.getProjectAccess() : { visibility: "public", ownerId: projectOwnerId || null };
|
|
647
659
|
if (!viewer || (opts.canAccessProjectSlug && !opts.canAccessProjectSlug(viewer.id, slug)) || !usersModule.canAccessSession(viewer.id, session, access)) return;
|
|
648
660
|
}
|
|
649
|
-
ws.
|
|
661
|
+
var panePayload = ws._clayPaneActivation ? require('./pane-session-transport').outbound(ws, message, session.localId) : message;
|
|
662
|
+
if (panePayload) ws.send(panePayload === message ? data : JSON.stringify(panePayload));
|
|
650
663
|
});
|
|
651
664
|
},
|
|
652
665
|
authorize: function (session, actor) {
|
|
@@ -709,7 +722,22 @@ function createProjectContext(opts) {
|
|
|
709
722
|
|
|
710
723
|
// Personal computer tools use the extension; remote URLs are owner-bound.
|
|
711
724
|
var _mcp = attachMcp({
|
|
712
|
-
sendTo: sendTo, slug: slug, clients: clients,
|
|
725
|
+
sendTo: sendTo, slug: slug, clients: clients, cwd: cwd,
|
|
726
|
+
userInput: function (session) { return _askUser.createHandler(session); },
|
|
727
|
+
runtimeEnvForSession: getRuntimeEnvForSession,
|
|
728
|
+
canDiscoverSession: function (session) { var scope = _requestAccess.fileScope({ _clayUser: session.ownerId && usersModule.findUserById(session.ownerId) }); return !!scope.identity || !scope.projectBound; },
|
|
729
|
+
sessionVendor: function (session) { return session.vendor || sm.defaultVendor || "claude"; },
|
|
730
|
+
runtimeEnv: function (owner, ws) { return resolveOwnerRuntimeEnv(_requestAccess.fileScope(ws).identity); },
|
|
731
|
+
canDiscover: function (ws) { var scope = _requestAccess.fileScope(ws); return !!scope.identity || !scope.projectBound; },
|
|
732
|
+
ownerIdentity: function (owner) {
|
|
733
|
+
if (!osUsers) {
|
|
734
|
+
if (usersModule.isMultiUser() && (usersModule.getAllUsers().length !== 1 || !usersModule.findUserById(owner))) throw new Error('Local MCP requires OS user mapping in a shared installation.');
|
|
735
|
+
return null;
|
|
736
|
+
}
|
|
737
|
+
var user = usersModule.findUserById(owner);
|
|
738
|
+
if (!user || !user.linuxUser) throw new Error('OS user identity is unavailable.');
|
|
739
|
+
return getOsUserInfoForWs({ _clayUser: user });
|
|
740
|
+
},
|
|
713
741
|
root: require("./config").CONFIG_DIR,
|
|
714
742
|
isMultiUser: function () { return usersModule.isMultiUser(); },
|
|
715
743
|
canAccess: function (ws) { return _requestAccess.canAccessProject(ws, slug); },
|
|
@@ -768,8 +796,15 @@ function createProjectContext(opts) {
|
|
|
768
796
|
}
|
|
769
797
|
},
|
|
770
798
|
});
|
|
799
|
+
var _studioPresentation = require('./project-studio-presentation').attachStudioPresentation({
|
|
800
|
+
getPresentation: function (session) { return _workspaceQuery && _workspaceQuery.getPresentation(session); },
|
|
801
|
+
getSessionForWs: getSessionForWs,
|
|
802
|
+
});
|
|
771
803
|
var _sharedBrowser = attachSharedBrowser({
|
|
772
|
-
|
|
804
|
+
studioPresentation: _studioPresentation,
|
|
805
|
+
sendToSession: sendToSession,
|
|
806
|
+
getPresentation: function (session) { return _workspaceQuery && _workspaceQuery.getPresentation(session); },
|
|
807
|
+
slug: slug, isMate: isMate, ownerId: projectOwnerId, sm: sm, clients: clients, sendTo: sendTo,
|
|
773
808
|
usersModule: usersModule, requestAccess: _requestAccess, osUsers: osUsers,
|
|
774
809
|
getSessionForWs: getSessionForWs,
|
|
775
810
|
getIdentity: function (session) {
|
|
@@ -778,8 +813,11 @@ function createProjectContext(opts) {
|
|
|
778
813
|
},
|
|
779
814
|
});
|
|
780
815
|
var _sessionDocument = attachSessionDocument({
|
|
816
|
+
studioPresentation: _studioPresentation,
|
|
817
|
+
getPresentation: function (session) { return _workspaceQuery && _workspaceQuery.getPresentation(session); },
|
|
781
818
|
cwd: cwd,
|
|
782
819
|
isMate: isMate,
|
|
820
|
+
canUseSession: _sessionNotes.canUseSession,
|
|
783
821
|
sendToSession: sendToSession,
|
|
784
822
|
FS_MAX_SIZE: FS_MAX_SIZE,
|
|
785
823
|
getOsUserInfoForSession: function (session) {
|
|
@@ -799,6 +837,8 @@ function createProjectContext(opts) {
|
|
|
799
837
|
});
|
|
800
838
|
var _workspaceQuery = attachProjectWorkspaceQuery({
|
|
801
839
|
service: opts.workspaceQueryService || null,
|
|
840
|
+
controlService: opts.clayProductControl || null,
|
|
841
|
+
contextService: opts.mateContextService || null,
|
|
802
842
|
sm: sm,
|
|
803
843
|
projectSlug: slug,
|
|
804
844
|
getProjectOwnerId: function () { return projectOwnerId; },
|
|
@@ -839,7 +879,12 @@ function createProjectContext(opts) {
|
|
|
839
879
|
sendTo: sendTo, getClients: function () { return clients; }, startWork: _issueWork,
|
|
840
880
|
});
|
|
841
881
|
var _sessionGithub = require("./project-session-github").attachSessionGithub({
|
|
842
|
-
cwd: cwd, sm: sm, isMate: isMate, osUsers: osUsers,
|
|
882
|
+
cwd: cwd, sm: sm, isMate: isMate, osUsers: osUsers, projectSlug: slug, sendTo: sendTo,
|
|
883
|
+
userInput: function (session) { return _askUser.createHandler(session); },
|
|
884
|
+
canAccess: function (ws) {
|
|
885
|
+
return !isMate && clients.has(ws) && ws.readyState === 1 && (!usersModule.isMultiUser() ||
|
|
886
|
+
!!(ws._clayUser && usersModule.findUserById(ws._clayUser.id) && opts.canAccessProjectSlug(ws._clayUser.id, slug)));
|
|
887
|
+
},
|
|
843
888
|
canUse: function (session) {
|
|
844
889
|
if (session.hidden || session.delegated || session._pairDelegation || session._delegatedBy || require("./session-provenance").isWorker(session)) return false;
|
|
845
890
|
if (!usersModule.isMultiUser()) return true;
|
|
@@ -858,9 +903,10 @@ function createProjectContext(opts) {
|
|
|
858
903
|
});
|
|
859
904
|
var _sessionLinear = require("./project-session-linear").attachSessionLinear({
|
|
860
905
|
sm: sm, isMate: isMate, storage: opts.linearStorage, projectSlug: slug,
|
|
906
|
+
userInput: function (session) { return _askUser.createHandler(session); },
|
|
861
907
|
isMultiUser: usersModule.isMultiUser, sendTo: sendTo,
|
|
862
908
|
canAccess: function (ws) {
|
|
863
|
-
return
|
|
909
|
+
return clients.has(ws) && ws.readyState === 1 && (!usersModule.isMultiUser() ||
|
|
864
910
|
!!(ws._clayUser && usersModule.findUserById(ws._clayUser.id) && opts.canAccessProjectSlug(ws._clayUser.id, slug)));
|
|
865
911
|
},
|
|
866
912
|
startWork: require('./project-linear-launch').attachLinearLaunch({
|
|
@@ -1021,6 +1067,7 @@ function createProjectContext(opts) {
|
|
|
1021
1067
|
persistSession: function (session) { return sm.saveSessionFile(session); },
|
|
1022
1068
|
getVendorModelCatalog: function (ws, vendor) { return _models.getVendorCatalog(ws, vendor); },
|
|
1023
1069
|
createReadyMate: opts.createReadyMate,
|
|
1070
|
+
isLive: function (session) { return sm.sessions.get(session.localId) === session; },
|
|
1024
1071
|
});
|
|
1025
1072
|
var _askUser = attachAskUser({
|
|
1026
1073
|
record: function (session, event) { sm.sendAndRecord(session, event); },
|
|
@@ -1055,14 +1102,12 @@ function createProjectContext(opts) {
|
|
|
1055
1102
|
}
|
|
1056
1103
|
}
|
|
1057
1104
|
|
|
1058
|
-
// Shared sticky-note memory
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
console.error("[project] Failed to create session notes MCP server:", e.message);
|
|
1065
|
-
}
|
|
1105
|
+
// Shared sticky-note memory is available in both owner-private projects and Mates.
|
|
1106
|
+
try {
|
|
1107
|
+
var sessionNotesMcpConfig = _sessionNotes.createMcpServer(adapter);
|
|
1108
|
+
if (sessionNotesMcpConfig) servers[sessionNotesMcpConfig.name || "clay-notes"] = sessionNotesMcpConfig;
|
|
1109
|
+
} catch (e) {
|
|
1110
|
+
console.error("[project] Failed to create session notes MCP server:", e.message);
|
|
1066
1111
|
}
|
|
1067
1112
|
|
|
1068
1113
|
// Project Logs. Project sessions get the project-scoped set; Mate projects
|
|
@@ -1107,13 +1152,11 @@ function createProjectContext(opts) {
|
|
|
1107
1152
|
if (sharedBrowserConfig) servers["clay-shared-browser"] = sharedBrowserConfig;
|
|
1108
1153
|
|
|
1109
1154
|
// Explicit agent signal for user-requested Markdown presentation.
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
console.error("[project] Failed to create session document MCP server:", e.message);
|
|
1116
|
-
}
|
|
1155
|
+
try {
|
|
1156
|
+
var sessionDocumentMcpConfig = _sessionDocument.createMcpServer(adapter);
|
|
1157
|
+
if (sessionDocumentMcpConfig) servers[sessionDocumentMcpConfig.name || "clay-documents"] = sessionDocumentMcpConfig;
|
|
1158
|
+
} catch (e) {
|
|
1159
|
+
console.error("[project] Failed to create session document MCP server:", e.message);
|
|
1117
1160
|
}
|
|
1118
1161
|
|
|
1119
1162
|
// Debate MCP server (available to both mates and main project)
|
|
@@ -1383,6 +1426,7 @@ function createProjectContext(opts) {
|
|
|
1383
1426
|
|
|
1384
1427
|
// --- SDK bridge ---
|
|
1385
1428
|
sdk = createSDKBridge({
|
|
1429
|
+
isLifecycleExecutionPaused: function () { return !!(opts.getProjectAccess && opts.getProjectAccess().lifecycleExecutionPaused); },
|
|
1386
1430
|
cwd: cwd,
|
|
1387
1431
|
slug: slug,
|
|
1388
1432
|
sessionManager: sm,
|
|
@@ -1458,6 +1502,7 @@ function createProjectContext(opts) {
|
|
|
1458
1502
|
_sessionGithub.getSystemPrompt(session),
|
|
1459
1503
|
_sessionLinear.getSystemPrompt(session),
|
|
1460
1504
|
_scheduledTasks ? _scheduledTasks.getSystemPrompt(session) : "",
|
|
1505
|
+
_mateScheduling ? _mateScheduling.getSystemPrompt(session) : "",
|
|
1461
1506
|
_mateKnowledge.getSystemPrompt(session),
|
|
1462
1507
|
_userKnowledge.getSystemPrompt(session),
|
|
1463
1508
|
_autonomousRun ? _autonomousRun.getSystemPrompt(session) : "",
|
|
@@ -1487,6 +1532,7 @@ function createProjectContext(opts) {
|
|
|
1487
1532
|
.concat(opts.userKnowledgeService ? _userKnowledge.getDynamicToolDefs(session) : [])
|
|
1488
1533
|
.concat(_loopInterview ? _loopInterview.getToolDefs(session) : [])
|
|
1489
1534
|
.concat(_scheduledTasks ? _scheduledTasks.getToolDefs(session) : [])
|
|
1535
|
+
.concat(_mateScheduling ? _mateScheduling.getToolDefs(session) : [])
|
|
1490
1536
|
.concat(_scheduledTaskExecution ? _scheduledTaskExecution.getToolDefs(session) : [])
|
|
1491
1537
|
.concat(_autonomousRun ? _autonomousRun.getToolDefs(session) : []);
|
|
1492
1538
|
},
|
|
@@ -1542,6 +1588,8 @@ function createProjectContext(opts) {
|
|
|
1542
1588
|
|
|
1543
1589
|
_scheduledMessages = attachProjectScheduledMessages({
|
|
1544
1590
|
scheduler: opts.durableScheduler,
|
|
1591
|
+
mateLifecycle: function () { return _mateLifecycle; },
|
|
1592
|
+
deferRehydrate: isMate,
|
|
1545
1593
|
slug: slug,
|
|
1546
1594
|
isMate: isMate,
|
|
1547
1595
|
osUsers: osUsers,
|
|
@@ -1564,6 +1612,32 @@ function createProjectContext(opts) {
|
|
|
1564
1612
|
consumePendingMessage: function (session) { return _userMessage && _userMessage.consumePendingMessage(session); },
|
|
1565
1613
|
});
|
|
1566
1614
|
|
|
1615
|
+
var _schedulingAccess = require('./project-scheduling-access').attachSchedulingAccess({ osUsers: osUsers, getLinuxUser: getLinuxUserForSession, resolveLinuxUser: getOsUserInfoForLinuxUser });
|
|
1616
|
+
_mateLifecycle = attachMateScheduleLifecycle({
|
|
1617
|
+
sm: sm, scheduler: opts.durableScheduler, slug: slug,
|
|
1618
|
+
owner: function (session) { return _mateScheduling.owner(session); },
|
|
1619
|
+
authorize: function (session, control) { return control ? _mateScheduling.authorizeControl(session, control) : _mateScheduling.authorize(session); },
|
|
1620
|
+
authorizeRuntime: function (session) { return _mateScheduling.authorizeLifecycle(session); },
|
|
1621
|
+
schedule: function () { return _scheduledMessages.schedule.apply(null, arguments); },
|
|
1622
|
+
queueItem: function (session, job) { return _scheduledMessages.queueItem(session, job); },
|
|
1623
|
+
cancelJob: function (session, job) {
|
|
1624
|
+
return _scheduledMessages.cancel(session, { id: job.ownerId }, null, "cancelled_by_mate", { jobId: job.id, revision: job.payload.revision });
|
|
1625
|
+
},
|
|
1626
|
+
});
|
|
1627
|
+
_mateScheduling = attachMateScheduling({
|
|
1628
|
+
isMate: isMate, isHostAgent: isHostAgent, projectOwnerId: projectOwnerId, slug: slug, mateId: opts.mateId,
|
|
1629
|
+
sm: sm, users: usersModule, lifecycle: _mateLifecycle,
|
|
1630
|
+
authorizeAccess: function (session, ownerId) { _schedulingAccess.ownerIdentity(session); return _scheduledMessages.authorize(session, ownerId); },
|
|
1631
|
+
userInput: function (session) { return _askUser.createHandler(session); },
|
|
1632
|
+
});
|
|
1633
|
+
if (isMate) {
|
|
1634
|
+
sm.sessions.forEach(function (session) {
|
|
1635
|
+
try { _mateLifecycle.reconcile(session); }
|
|
1636
|
+
catch (error) { console.error("[mate-schedules] Recovery failed:", error.message); }
|
|
1637
|
+
});
|
|
1638
|
+
_scheduledMessages.rehydrate();
|
|
1639
|
+
}
|
|
1640
|
+
|
|
1567
1641
|
// --- Loop engine (delegated to project-loop.js) ---
|
|
1568
1642
|
// --- Notification center (global singleton from server.js) ---
|
|
1569
1643
|
var _notifications = opts.notificationsModule || null;
|
|
@@ -1645,6 +1719,7 @@ function createProjectContext(opts) {
|
|
|
1645
1719
|
cwd: cwd,
|
|
1646
1720
|
projectSlug: slug,
|
|
1647
1721
|
projectTitle: title || project,
|
|
1722
|
+
validateOwnerIdentity: _schedulingAccess.ownerIdentity,
|
|
1648
1723
|
isMate: isMate,
|
|
1649
1724
|
sm: sm,
|
|
1650
1725
|
sdk: sdk,
|
|
@@ -1743,8 +1818,8 @@ function createProjectContext(opts) {
|
|
|
1743
1818
|
}
|
|
1744
1819
|
|
|
1745
1820
|
// --- Schedule / cancel a message (used by WS handler and auto-continue) ---
|
|
1746
|
-
function scheduleMessage(session, text, resetsAt, actorUser, targetWs, attachments, requestId, transportAccountId) {
|
|
1747
|
-
return _scheduledMessages ? _scheduledMessages.schedule(session, text, resetsAt, actorUser, targetWs, attachments, requestId, transportAccountId) : null;
|
|
1821
|
+
function scheduleMessage(session, text, resetsAt, actorUser, targetWs, attachments, requestId, transportAccountId, options) {
|
|
1822
|
+
return _scheduledMessages ? _scheduledMessages.schedule(session, text, resetsAt, actorUser, targetWs, attachments, requestId, transportAccountId, options) : null;
|
|
1748
1823
|
}
|
|
1749
1824
|
|
|
1750
1825
|
function cancelScheduledMessage(session, actorUser, targetWs, correlation) {
|
|
@@ -1756,6 +1831,10 @@ function createProjectContext(opts) {
|
|
|
1756
1831
|
}
|
|
1757
1832
|
|
|
1758
1833
|
function handleMessage(ws, msg) {
|
|
1834
|
+
return require('./pane-session-transport').run(ws, msg, dispatchMessage);
|
|
1835
|
+
}
|
|
1836
|
+
|
|
1837
|
+
function dispatchMessage(ws, msg) {
|
|
1759
1838
|
if (!_requestAccess.permitMessage(ws, msg)) return;
|
|
1760
1839
|
// --- Keep-alive (delegated to project-connection.js) ---
|
|
1761
1840
|
// Answered before any routing so a ping can never be forwarded elsewhere.
|
|
@@ -1777,8 +1856,10 @@ function createProjectContext(opts) {
|
|
|
1777
1856
|
}
|
|
1778
1857
|
}
|
|
1779
1858
|
|
|
1859
|
+
if (_studioPresentation.handleMessage(ws, msg)) return;
|
|
1860
|
+
|
|
1780
1861
|
// --- DM messages (delegated to server-level handler) ---
|
|
1781
|
-
if (msg.type === "home_debate_question_response" || msg.type === "home_debate_control" || msg.type === "home_mate_creation_question_response" || msg.type === "default_ai_get" || msg.type === "default_ai_catalog_get" || msg.type === "default_ai_set" || msg.type === "default_vendor_get" || msg.type === "default_vendor_set" || msg.type === "context_view_get" || msg.type === "context_view_set" || msg.type === "cursor_sharing_get" || msg.type === "cursor_sharing_set") {
|
|
1862
|
+
if (msg.type === "home_mate_question_response" || msg.type === "mate_context_prepare" || msg.type === "clay_ui_ready" || msg.type === "clay_navigation_claim" || msg.type === "clay_navigation_ack" || msg.type === "clay_navigation_rendered" || msg.type === "home_debate_question_response" || msg.type === "home_debate_control" || msg.type === "home_mate_creation_question_response" || msg.type === "default_ai_get" || msg.type === "default_ai_catalog_get" || msg.type === "default_ai_set" || msg.type === "default_vendor_get" || msg.type === "default_vendor_set" || msg.type === "context_view_get" || msg.type === "context_view_set" || msg.type === "cursor_sharing_get" || msg.type === "cursor_sharing_set") {
|
|
1782
1863
|
if (typeof opts.onDmMessage === "function") opts.onDmMessage(ws, msg, slug);
|
|
1783
1864
|
return;
|
|
1784
1865
|
}
|
|
@@ -2074,6 +2155,9 @@ function createProjectContext(opts) {
|
|
|
2074
2155
|
});
|
|
2075
2156
|
sm.setSessionHydrator(_sessionSkillCatalog.hydrate);
|
|
2076
2157
|
var _sessions = attachSessions({
|
|
2158
|
+
splitStore: _splitGroups.store,
|
|
2159
|
+
adapters: adapters,
|
|
2160
|
+
isPendingQueuePaused: function (session) { return _pendingMessageQueue.isPaused(session); },
|
|
2077
2161
|
cwd: cwd,
|
|
2078
2162
|
slug: slug,
|
|
2079
2163
|
isMate: isMate,
|
|
@@ -2103,6 +2187,7 @@ function createProjectContext(opts) {
|
|
|
2103
2187
|
resolveDefaultAi: opts.resolveDefaultAi,
|
|
2104
2188
|
resolveMateSessionDefaults: opts.resolveMateSessionDefaults,
|
|
2105
2189
|
getVendorAvailability: function (ws) { return _models.getVendorAvailability(ws); },
|
|
2190
|
+
getLinuxUserForWs: getLinuxUserForWs,
|
|
2106
2191
|
canCreateScheduledTaskInterview: function (ws, session) { return !!(_scheduledTasks && _scheduledTasks.canCreateInterview(ws, session)); },
|
|
2107
2192
|
canStartScheduledTaskInterview: function (ws, session) { return !!(_scheduledTasks && _scheduledTasks.canStartInterview(ws, session)); },
|
|
2108
2193
|
onHumanPairStop: function (session) {
|
|
@@ -2147,6 +2232,26 @@ function createProjectContext(opts) {
|
|
|
2147
2232
|
_notifications: _notifications,
|
|
2148
2233
|
_projectLogs: _projectLogs,
|
|
2149
2234
|
});
|
|
2235
|
+
var _productControl = require("./project-product-control").attachProjectProductControl({
|
|
2236
|
+
sm: sm, users: usersModule, clients: clients, slug: slug, isMate: isMate, osUsers: osUsers,
|
|
2237
|
+
getProjectAccess: opts.getProjectAccess || function () { return { visibility: "public", ownerId: projectOwnerId || null }; },
|
|
2238
|
+
userInput: function (session) { return _askUser.createHandler(session); },
|
|
2239
|
+
actions: _sessions.sessionActions, history: _sessions.sessionHistoryActions, selectModel: function (session, model, options) { return _models.selectSessionModel(session, model, null, options); },
|
|
2240
|
+
isDriverOperatedSession: function (session) { return _sessionPair.workerPermission.isDriverOperated(session); },
|
|
2241
|
+
deletePlan: _sessions.deleteProductControlPlan,
|
|
2242
|
+
queue: _pendingMessageQueue,
|
|
2243
|
+
requestQueueDrain: function (session) { if (_userMessage) _userMessage.consumePendingMessage(session); },
|
|
2244
|
+
vendor: _sessions.sessionVendorActions,
|
|
2245
|
+
runtime: _sessions.sessionRuntimeActions,
|
|
2246
|
+
});
|
|
2247
|
+
var _mateChatControl = require('./project-mate-chat-control').attachMateChatControl({
|
|
2248
|
+
sm: sm, sdk: sdk, isMate: isMate, osUsers: osUsers, getLinuxUser: getLinuxUserForSession,
|
|
2249
|
+
users: usersModule, getAccess: opts.getProjectAccess || function () { return { isMate: isMate, ownerId: projectOwnerId || null, visibility: 'private' }; },
|
|
2250
|
+
actions: _sessions.sessionActions, vendor: _sessions.sessionVendorActions,
|
|
2251
|
+
selectModel: function (session, model, options) { return _models.selectSessionModel(session, model, null, options); },
|
|
2252
|
+
});
|
|
2253
|
+
|
|
2254
|
+
|
|
2150
2255
|
|
|
2151
2256
|
var _models = attachModels({
|
|
2152
2257
|
cwd: cwd,
|
|
@@ -2193,6 +2298,7 @@ function createProjectContext(opts) {
|
|
|
2193
2298
|
});
|
|
2194
2299
|
var _delegatedFollowUp = attachDelegatedFollowUp({
|
|
2195
2300
|
sm: sm,
|
|
2301
|
+
isPendingQueuePaused: function (session) { return _pendingMessageQueue.isPaused(session); },
|
|
2196
2302
|
getSdk: function () { return sdk; },
|
|
2197
2303
|
getLinuxUserForSession: getLinuxUserForSession,
|
|
2198
2304
|
onProcessingChanged: onProcessingChanged,
|
|
@@ -2207,6 +2313,12 @@ function createProjectContext(opts) {
|
|
|
2207
2313
|
|
|
2208
2314
|
// --- User message handler (delegated to project-user-message.js) ---
|
|
2209
2315
|
var _userMessage = attachUserMessage({
|
|
2316
|
+
isLifecycleExecutionPaused: function () { return !!(opts.getProjectAccess && opts.getProjectAccess().lifecycleExecutionPaused); },
|
|
2317
|
+
resumeLifecycleProject: function (ws) {
|
|
2318
|
+
if (!opts.getProjectAccess || !opts.getProjectAccess().lifecycleExecutionPaused) return true;
|
|
2319
|
+
if (!clients.has(ws) || !ws._clayUser || !opts.resumeLifecycleProject) throw new Error('The current owner must explicitly resume recovered project execution.');
|
|
2320
|
+
return opts.resumeLifecycleProject(ws._clayUser.id);
|
|
2321
|
+
},
|
|
2210
2322
|
// Exact live pair state decides whether a session is Driver-operated; the
|
|
2211
2323
|
// handler never infers the role from the message.
|
|
2212
2324
|
isDriverOperatedSession: function (session) {
|
|
@@ -2234,6 +2346,7 @@ function createProjectContext(opts) {
|
|
|
2234
2346
|
cwd: cwd,
|
|
2235
2347
|
slug: slug,
|
|
2236
2348
|
isMate: isMate,
|
|
2349
|
+
mateId: mateId,
|
|
2237
2350
|
osUsers: osUsers,
|
|
2238
2351
|
sm: sm,
|
|
2239
2352
|
sdk: sdk,
|
|
@@ -2287,6 +2400,7 @@ function createProjectContext(opts) {
|
|
|
2287
2400
|
|
|
2288
2401
|
// --- Vendor login flow (delegated to project-vendor-login.js) ---
|
|
2289
2402
|
var _vendorLogin = attachVendorLogin({
|
|
2403
|
+
onVendorAuthChanged: function () { _sessions.invalidateVendorUsage(); },
|
|
2290
2404
|
requestAccess: _requestAccess,
|
|
2291
2405
|
clients: clients,
|
|
2292
2406
|
slug: slug,
|
|
@@ -2329,6 +2443,13 @@ function createProjectContext(opts) {
|
|
|
2329
2443
|
FS_MAX_SIZE: FS_VIEWER_MAX_SIZE,
|
|
2330
2444
|
});
|
|
2331
2445
|
|
|
2446
|
+
var _workspaceOperations = require('./project-workspace-operations').attachWorkspaceOperations({
|
|
2447
|
+
cwd: cwd, isMate: isMate, osUsers: osUsers, users: usersModule, tm: tm,
|
|
2448
|
+
getAccess: opts.getProjectAccess || function () { return { ownerId: projectOwnerId || null, visibility: 'private' }; },
|
|
2449
|
+
files: function () { return _filesystem.productOperations; },
|
|
2450
|
+
publishTerminals: function () { send({ type: 'term_list', terminals: tm.list(true) }); },
|
|
2451
|
+
});
|
|
2452
|
+
|
|
2332
2453
|
// --- MCP bridge handler for Codex and session-bound Kiro tools ---
|
|
2333
2454
|
// Provides list_tools and call_tool operations over HTTP for mcp-bridge-server.js.
|
|
2334
2455
|
// The normal Codex bridge excludes local MCP servers it manages natively;
|
|
@@ -2336,6 +2457,8 @@ function createProjectContext(opts) {
|
|
|
2336
2457
|
function getMcpBridgeHandler(sessionId, sessionOnly, queryGeneration) {
|
|
2337
2458
|
var boundSession = Number.isInteger(sessionId) ? sm.sessions.get(sessionId) : null;
|
|
2338
2459
|
var queryToolBridge = createSessionQueryToolBridge({ session: boundSession, sdk: sdk });
|
|
2460
|
+
var externalQueryBridge = require('./mcp-query-bridge').createQueryBridge({ valid: sessionQueryValid,
|
|
2461
|
+
getServers: function () { return _mcp.getMcpServers(boundSession, sessionQueryValid()); } });
|
|
2339
2462
|
function sessionQueryValid() {
|
|
2340
2463
|
return !!boundSession
|
|
2341
2464
|
&& Number.isInteger(queryGeneration)
|
|
@@ -2460,7 +2583,7 @@ function createProjectContext(opts) {
|
|
|
2460
2583
|
}
|
|
2461
2584
|
}
|
|
2462
2585
|
|
|
2463
|
-
if (sessionOnly) return Promise.resolve(tools);
|
|
2586
|
+
if (sessionOnly) return Promise.resolve(tools.concat(externalQueryBridge.list()));
|
|
2464
2587
|
|
|
2465
2588
|
// In-app MCP servers (debate, browser, email).
|
|
2466
2589
|
// Use getLocalMcpServers() so clay-browser is hidden unless the
|
|
@@ -2480,7 +2603,7 @@ function createProjectContext(opts) {
|
|
|
2480
2603
|
}
|
|
2481
2604
|
|
|
2482
2605
|
// Personal computer and remote URL connections.
|
|
2483
|
-
var remoteServers = _mcp.getMcpServers(boundSession);
|
|
2606
|
+
var remoteServers = sessionQueryValid() ? _mcp.getMcpServers(boundSession, sessionQueryValid()) : {};
|
|
2484
2607
|
if (remoteServers) {
|
|
2485
2608
|
var remoteNames = Object.keys(remoteServers);
|
|
2486
2609
|
for (var ri = 0; ri < remoteNames.length; ri++) {
|
|
@@ -2578,7 +2701,7 @@ function createProjectContext(opts) {
|
|
|
2578
2701
|
if (serverName === "clay-sessions" || serverName === "clay-notes" || serverName === "clay-handoff" || serverName === "clay-documents" || serverName === "clay-shared-browser" || serverName === "clay-debate" || serverName === "clay-mate-creation" || serverName === "clay-workspace" || serverName === "clay-history" || serverName === "clay-github" || serverName === "clay-linear" || serverName === "clay-issues" || serverName === "clay-logs" || serverName === "clay-knowledge" || serverName === "clay-you") {
|
|
2579
2702
|
return Promise.reject(new Error("Session-bound tool requires a valid Clay session: " + serverName + "/" + toolName));
|
|
2580
2703
|
}
|
|
2581
|
-
if (sessionOnly) return
|
|
2704
|
+
if (sessionOnly) return externalQueryBridge.call(serverName, toolName, args);
|
|
2582
2705
|
// Try in-app servers first (gated by extension connectivity for clay-browser).
|
|
2583
2706
|
var localMcp = getLocalMcpServers(boundSession);
|
|
2584
2707
|
if (localMcp && localMcp[serverName]) {
|
|
@@ -2590,17 +2713,7 @@ function createProjectContext(opts) {
|
|
|
2590
2713
|
}
|
|
2591
2714
|
}
|
|
2592
2715
|
}
|
|
2593
|
-
|
|
2594
|
-
var remoteServers = _mcp.getMcpServers(boundSession);
|
|
2595
|
-
if (remoteServers && remoteServers[serverName]) {
|
|
2596
|
-
var rServer = remoteServers[serverName];
|
|
2597
|
-
if (rServer.instance && rServer.instance._registeredTools && rServer.instance._registeredTools[toolName]) {
|
|
2598
|
-
var rHandler = rServer.instance._registeredTools[toolName].handler;
|
|
2599
|
-
if (typeof rHandler === "function") {
|
|
2600
|
-
return Promise.resolve(rHandler(args));
|
|
2601
|
-
}
|
|
2602
|
-
}
|
|
2603
|
-
}
|
|
2716
|
+
if (externalQueryBridge.list().some(function (tool) { return tool.server === serverName && tool.name === toolName; })) return externalQueryBridge.call(serverName, toolName, args);
|
|
2604
2717
|
return Promise.reject(new Error("Tool not found: " + serverName + "/" + toolName));
|
|
2605
2718
|
},
|
|
2606
2719
|
};
|
|
@@ -2608,6 +2721,8 @@ function createProjectContext(opts) {
|
|
|
2608
2721
|
|
|
2609
2722
|
// --- HTTP handler (delegated to project-http.js) ---
|
|
2610
2723
|
var _http = attachHTTP({
|
|
2724
|
+
workspaceOperations: _workspaceOperations,
|
|
2725
|
+
getProjectOwnerId: function () { return projectOwnerId; },
|
|
2611
2726
|
requestAccess: _requestAccess,
|
|
2612
2727
|
cwd: cwd,
|
|
2613
2728
|
slug: slug,
|
|
@@ -2766,6 +2881,7 @@ function createProjectContext(opts) {
|
|
|
2766
2881
|
return false;
|
|
2767
2882
|
}));
|
|
2768
2883
|
} catch (err) {
|
|
2884
|
+
shutdowns.push(Promise.resolve(false));
|
|
2769
2885
|
console.error("[project] " + vendor + " shutdown threw for " + slug + ":", err && err.message ? err.message : err);
|
|
2770
2886
|
}
|
|
2771
2887
|
});
|
|
@@ -2788,6 +2904,7 @@ function createProjectContext(opts) {
|
|
|
2788
2904
|
}
|
|
2789
2905
|
});
|
|
2790
2906
|
var status = {
|
|
2907
|
+
controlRuntimeId: require('./clay-control-target-projection').runtime(sm),
|
|
2791
2908
|
slug: slug,
|
|
2792
2909
|
path: cwd,
|
|
2793
2910
|
project: project,
|
|
@@ -2838,7 +2955,7 @@ function createProjectContext(opts) {
|
|
|
2838
2955
|
|
|
2839
2956
|
function setTitle(newTitle) {
|
|
2840
2957
|
title = newTitle || null;
|
|
2841
|
-
send({ type: "info", cwd: cwd, slug: slug, project: title || project, version: currentVersion, debug: !!debug, osUsers: osUsers, lanHost: lanHost, projectCount: getProjectCount(), projects: getProjectList(), projectOwnerId: projectOwnerId, isMate: isMate, mateId: isMate ? mateId : null, mateDisplayName: isMate ? (opts.mateDisplayName || title || project || "Mate") : "" });
|
|
2958
|
+
send({ type: "info", controlRuntimeId: require("./clay-control-target-projection").runtime(sm), cwd: cwd, slug: slug, project: title || project, version: currentVersion, debug: !!debug, osUsers: osUsers, lanHost: lanHost, projectCount: getProjectCount(), projects: getProjectList(), projectOwnerId: projectOwnerId, isMate: isMate, mateId: isMate ? mateId : null, mateDisplayName: isMate ? (opts.mateDisplayName || title || project || "Mate") : "" });
|
|
2842
2959
|
}
|
|
2843
2960
|
|
|
2844
2961
|
function setIcon(newIcon) {
|
|
@@ -2909,15 +3026,33 @@ function createProjectContext(opts) {
|
|
|
2909
3026
|
},
|
|
2910
3027
|
getYouLinuxUser: getLinuxUserForSession,
|
|
2911
3028
|
getStatus: getStatus,
|
|
3029
|
+
bindMateSchedule: function (session, intent, id) {
|
|
3030
|
+
return _mateLifecycle.create(session, require("./mate-schedule-input").normalize(intent), id);
|
|
3031
|
+
},
|
|
3032
|
+
cancelMateSchedule: function (session, record) { return _mateLifecycle.cancel(session, record); },
|
|
2912
3033
|
getSessionManager: function () { return sm; },
|
|
2913
3034
|
createDelegatedSession: _delegatedSession.createDelegatedSession,
|
|
3035
|
+
refreshEnvironmentRuntime: function () { return sdk.refreshEnvironmentRuntime(); },
|
|
3036
|
+
getWorkspaceProductOperations: function () { return isMate ? null : _workspaceOperations; },
|
|
3037
|
+
getMateChatControl: function () { return isMate ? _mateChatControl : null; },
|
|
3038
|
+
getMateScheduleControl: function () { return isMate ? _mateLifecycle : null; },
|
|
3039
|
+
getScheduledTaskControl: function () { return _scheduledTasks.productControl; },
|
|
3040
|
+
notifyIssueUpdate: _issues.notify,
|
|
3041
|
+
notifyLogUpdate: _projectLogs.broadcastUpdate,
|
|
3042
|
+
requestProductControlReview: _productControl.requestProductControlReview,
|
|
3043
|
+
applyProductSessionAction: _productControl.applyProductSessionAction,
|
|
3044
|
+
inspectProductSessionQueue: _productControl.inspectProductSessionQueue,
|
|
3045
|
+
readVendorUsage: function (request) { return _sessions.readVendorUsage(request); },
|
|
3046
|
+
inspectProductSessionRuntime: _sessions.sessionRuntimeActions.inspect,
|
|
3047
|
+
inspectMateLifecycleRuntime: _sessions.sessionRuntimeActions.inspectLifecycle,
|
|
2914
3048
|
inspectDelegatedFollowUp: _delegatedFollowUp.inspectDelegatedFollowUp,
|
|
2915
3049
|
dispatchDelegatedFollowUp: _delegatedFollowUp.dispatchDelegatedFollowUp,
|
|
2916
3050
|
deliverCapsuleTurn: _capsuleTurn.deliverCapsuleTurn,
|
|
2917
3051
|
unregisterHomeDebateClient: function (ws) { homeDebateClients.delete(ws); },
|
|
2918
3052
|
handleHomeDebateProposalResponse: function (ws, msg, session) { return _debateProposal.handleHomeMessage(ws, msg, session); },
|
|
2919
3053
|
handleHomeMateCreationProposalResponse: function (ws, msg, session) { return _mateCreationProposal.handleHomeMessage(ws, msg, session); },
|
|
2920
|
-
|
|
3054
|
+
registerMcpConsentViewer: _mcp.registerConsentViewer,
|
|
3055
|
+
handleHomeAskUserResponse: function (msg, session, ws) { return _sessions.respondToAskUser(session, msg, ws); },
|
|
2921
3056
|
handleHomePermissionResponse: function (ws, msg, session) { return _sessions.respondToHomePermission(ws, msg, session); },
|
|
2922
3057
|
stopHomeSession: function (session) { return _sessions.stopHomeSession(session); },
|
|
2923
3058
|
handleHomeDebateControl: function (ws, msg, session) { return _debate.handleHomeControl(ws, msg, session); },
|
|
@@ -2926,6 +3061,7 @@ function createProjectContext(opts) {
|
|
|
2926
3061
|
getMemoryState: _memory.readMemoryState,
|
|
2927
3062
|
listKnowledgeFiles: _knowledge.listKnowledgeFiles,
|
|
2928
3063
|
getKnowledgeDbService: function () { return _knowledge.databases; },
|
|
3064
|
+
getKnowledgeProductOperations: function () { return _knowledge.productOperations; },
|
|
2929
3065
|
refreshCapsuleCatalog: _capsuleCatalog.refreshSessions,
|
|
2930
3066
|
getNotificationsModule: function () { return _notifications; },
|
|
2931
3067
|
refreshVendorAuth: _vendorLogin.refreshVendorAuth,
|