manigent-server 0.1.0__py3-none-any.whl
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.
- manigent/_catalog/mcps/chess/README.md +38 -0
- manigent/_catalog/mcps/chess/mcp.json +9 -0
- manigent/_catalog/mcps/registry.json +9 -0
- manigent/_catalog/skills/brief/SKILL.md +339 -0
- manigent/_catalog/skills/broaden-options/SKILL.md +133 -0
- manigent/_catalog/skills/calendar/SKILL.md +44 -0
- manigent/_catalog/skills/calendar/starter_config.jsonc +25 -0
- manigent/_catalog/skills/gmail/SKILL.md +73 -0
- manigent/_catalog/skills/google-calendar/SKILL.md +44 -0
- manigent/_catalog/skills/google-drive/SKILL.md +42 -0
- manigent/_catalog/skills/google-drive-write/SKILL.md +45 -0
- manigent/_catalog/skills/google-drive-write/starter_config.jsonc +45 -0
- manigent/_catalog/skills/grill-me/SKILL.md +173 -0
- manigent/_catalog/skills/homekit/SKILL.md +37 -0
- manigent/_catalog/skills/http-api/SKILL.md +117 -0
- manigent/_catalog/skills/ib/SKILL.md +89 -0
- manigent/_catalog/skills/ib/starter_config.jsonc +35 -0
- manigent/_catalog/skills/mailbox/SKILL.md +47 -0
- manigent/_catalog/skills/mailbox/starter_config.jsonc +38 -0
- manigent/_catalog/skills/media/SKILL.md +93 -0
- manigent/_catalog/skills/media/starter_config.jsonc +63 -0
- manigent/_catalog/skills/osxphotos/SKILL.md +41 -0
- manigent/_catalog/skills/photo-story/SKILL.md +285 -0
- manigent/_catalog/skills/playwright-browser/SKILL.md +291 -0
- manigent/_catalog/skills/playwright-browser/starter_config.jsonc +44 -0
- manigent/_catalog/skills/playwright-save-skill/SKILL.md +149 -0
- manigent/_catalog/skills/registry.json +166 -0
- manigent/_catalog/skills/web-artifacts/SKILL.md +194 -0
- manigent/api/action_executor.py +404 -0
- manigent/api/action_validator.py +531 -0
- manigent/api/actions.py +221 -0
- manigent/api/client.py +558 -0
- manigent/api/control.py +806 -0
- manigent/api/edge_protocol.py +123 -0
- manigent/api/fs_protocol.py +450 -0
- manigent/api/host_protocol.py +298 -0
- manigent/api/managed_job_client.py +124 -0
- manigent/api/responses.py +342 -0
- manigent/api/retry_transport.py +178 -0
- manigent/api/turn_protocol.py +78 -0
- manigent/cli_lifecycle.py +467 -0
- manigent/cli_server.py +978 -0
- manigent/doctor.py +1167 -0
- manigent/hub_protocol/canonical.py +375 -0
- manigent/hub_protocol/codes.py +171 -0
- manigent/hub_protocol/constants.py +71 -0
- manigent/hub_protocol/envelope.py +218 -0
- manigent/hub_protocol/frames.py +788 -0
- manigent/hub_protocol/http.py +260 -0
- manigent/hub_protocol/ids.py +170 -0
- manigent/hub_protocol/keys.py +195 -0
- manigent/hub_protocol/text.py +75 -0
- manigent/llm/base.py +1072 -0
- manigent/llm/prompt_builder.py +2450 -0
- manigent/llm/triggers.py +68 -0
- manigent/models/agent.py +2905 -0
- manigent/models/agent_bundle.py +298 -0
- manigent/models/brief_tab.py +311 -0
- manigent/models/chat_message.py +231 -0
- manigent/models/chatroom.py +1108 -0
- manigent/models/context.py +1159 -0
- manigent/models/desk_label.py +836 -0
- manigent/models/desk_read_state.py +220 -0
- manigent/models/desk_sign_off.py +267 -0
- manigent/models/desk_sop.py +965 -0
- manigent/models/desk_todo.py +1603 -0
- manigent/models/desk_todo_link.py +404 -0
- manigent/models/file_cache.py +75 -0
- manigent/models/host.py +732 -0
- manigent/models/install_token.py +401 -0
- manigent/models/invitation_code.py +162 -0
- manigent/models/knowledge_pack.py +552 -0
- manigent/models/managed_job.py +295 -0
- manigent/models/model_config.py +564 -0
- manigent/models/model_defaults.py +238 -0
- manigent/models/onboarding_plan.py +161 -0
- manigent/models/participant.py +449 -0
- manigent/models/persistable.py +892 -0
- manigent/models/plan_markdown.py +1774 -0
- manigent/models/project.py +1343 -0
- manigent/models/project_plan.py +8104 -0
- manigent/models/project_report.py +145 -0
- manigent/models/provenance.py +261 -0
- manigent/models/provider_agents.py +101 -0
- manigent/models/public_request.py +108 -0
- manigent/models/reflection_schedule.py +191 -0
- manigent/models/scheduled_message.py +285 -0
- manigent/models/share_token.py +190 -0
- manigent/models/skill_version.py +31 -0
- manigent/models/sop_template.py +187 -0
- manigent/models/thinking_partner_plan.py +187 -0
- manigent/models/tunnel_binding.py +129 -0
- manigent/models/user.py +1276 -0
- manigent/models/work_tracker.py +510 -0
- manigent/runner/invocation_registry.py +187 -0
- manigent/server/agent_capabilities.py +119 -0
- manigent/server/agent_visibility.py +119 -0
- manigent/server/announcements.py +119 -0
- manigent/server/app.py +807 -0
- manigent/server/auth.py +355 -0
- manigent/server/batch_timeout.py +94 -0
- manigent/server/channels/access.py +194 -0
- manigent/server/channels/adapter.py +295 -0
- manigent/server/channels/config.py +693 -0
- manigent/server/channels/contacts.py +39 -0
- manigent/server/channels/email_adapter.py +436 -0
- manigent/server/channels/email_address.py +145 -0
- manigent/server/channels/email_form.py +242 -0
- manigent/server/channels/email_format.py +285 -0
- manigent/server/channels/email_mail.py +427 -0
- manigent/server/channels/email_mailgun.py +164 -0
- manigent/server/channels/email_text.py +280 -0
- manigent/server/channels/file_links.py +127 -0
- manigent/server/channels/gateway.py +2998 -0
- manigent/server/channels/hub_delivery.py +211 -0
- manigent/server/channels/hub_store.py +1730 -0
- manigent/server/channels/line.py +645 -0
- manigent/server/channels/line_format.py +589 -0
- manigent/server/channels/log_redaction.py +145 -0
- manigent/server/channels/store.py +3316 -0
- manigent/server/channels/telegram.py +422 -0
- manigent/server/channels/telegram_format.py +312 -0
- manigent/server/channels/webchat.py +261 -0
- manigent/server/channels/webchat_widget.js +1310 -0
- manigent/server/channels/whatsapp.py +707 -0
- manigent/server/channels/whatsapp_format.py +511 -0
- manigent/server/chat_search_index.py +1203 -0
- manigent/server/config.py +61 -0
- manigent/server/context.py +121 -0
- manigent/server/coordinator_rule.py +115 -0
- manigent/server/desk_todo_notify.py +300 -0
- manigent/server/edge_hub.py +577 -0
- manigent/server/email.py +354 -0
- manigent/server/errors.py +83 -0
- manigent/server/home_fs_relay.py +392 -0
- manigent/server/hub/adapter.py +1395 -0
- manigent/server/hub/agent_send_guard.py +196 -0
- manigent/server/hub/avatar.py +342 -0
- manigent/server/hub/browser.py +778 -0
- manigent/server/hub/client.py +859 -0
- manigent/server/hub/demand.py +49 -0
- manigent/server/hub/directory.py +385 -0
- manigent/server/hub/enroll.py +400 -0
- manigent/server/hub/http.py +134 -0
- manigent/server/hub/identity.py +61 -0
- manigent/server/hub/keys.py +588 -0
- manigent/server/hub/mirror.py +802 -0
- manigent/server/hub/operator.py +817 -0
- manigent/server/hub/retain.py +361 -0
- manigent/server/hub/room_bridge.py +741 -0
- manigent/server/hub/runtime.py +691 -0
- manigent/server/hub/trust.py +182 -0
- manigent/server/hub/views.py +316 -0
- manigent/server/idempotency.py +205 -0
- manigent/server/in_flight_restore.py +181 -0
- manigent/server/inspection.py +816 -0
- manigent/server/isolation_gate.py +516 -0
- manigent/server/isolation_notice.py +310 -0
- manigent/server/managed_job_events.py +242 -0
- manigent/server/mcp_registry.py +118 -0
- manigent/server/message_forward.py +78 -0
- manigent/server/message_scheduler.py +176 -0
- manigent/server/notification_assets.py +164 -0
- manigent/server/oauth_login/cli_state.py +120 -0
- manigent/server/oauth_login/config.py +90 -0
- manigent/server/oauth_login/errors.py +78 -0
- manigent/server/oauth_login/flow.py +223 -0
- manigent/server/oauth_login/handoff.py +63 -0
- manigent/server/oauth_login/providers.py +45 -0
- manigent/server/oauth_state.py +81 -0
- manigent/server/owner_isolation.py +466 -0
- manigent/server/participant_liveness.py +82 -0
- manigent/server/public_profile.py +149 -0
- manigent/server/public_requests/candidates.py +116 -0
- manigent/server/public_requests/dispatch.py +121 -0
- manigent/server/public_requests/ranking.py +153 -0
- manigent/server/recent_activity.py +250 -0
- manigent/server/reflection_completion_subscriber.py +151 -0
- manigent/server/reflection_scheduler.py +239 -0
- manigent/server/requester_key_migration.py +261 -0
- manigent/server/room_flow.py +139 -0
- manigent/server/routes/_batch.py +218 -0
- manigent/server/routes/_fd_routing.py +155 -0
- manigent/server/routes/_mentions.py +70 -0
- manigent/server/routes/agent_env.py +188 -0
- manigent/server/routes/agent_fs.py +450 -0
- manigent/server/routes/agents.py +1206 -0
- manigent/server/routes/announcements.py +79 -0
- manigent/server/routes/auth.py +387 -0
- manigent/server/routes/brief_tabs.py +404 -0
- manigent/server/routes/changelog.py +237 -0
- manigent/server/routes/channels.py +993 -0
- manigent/server/routes/chatrooms.py +871 -0
- manigent/server/routes/desk_labels.py +298 -0
- manigent/server/routes/desk_latest_messages.py +116 -0
- manigent/server/routes/desk_read_state.py +110 -0
- manigent/server/routes/desk_sign_off.py +88 -0
- manigent/server/routes/desk_sops.py +216 -0
- manigent/server/routes/desk_todos.py +692 -0
- manigent/server/routes/desk_tour.py +44 -0
- manigent/server/routes/files.py +572 -0
- manigent/server/routes/hosts.py +484 -0
- manigent/server/routes/hub.py +534 -0
- manigent/server/routes/hub_channels.py +234 -0
- manigent/server/routes/inbox.py +581 -0
- manigent/server/routes/install.ps1 +436 -0
- manigent/server/routes/install.py +324 -0
- manigent/server/routes/install.sh +566 -0
- manigent/server/routes/isolation_check.py +145 -0
- manigent/server/routes/knowledge_packs.py +477 -0
- manigent/server/routes/managed_jobs.py +196 -0
- manigent/server/routes/mcps.py +271 -0
- manigent/server/routes/messages.py +1972 -0
- manigent/server/routes/model_defaults.py +279 -0
- manigent/server/routes/oauth.py +237 -0
- manigent/server/routes/oauth_login.py +351 -0
- manigent/server/routes/owner_isolation.py +91 -0
- manigent/server/routes/project_plans.py +1521 -0
- manigent/server/routes/project_reports.py +235 -0
- manigent/server/routes/projects.py +2047 -0
- manigent/server/routes/public_agents.py +151 -0
- manigent/server/routes/public_requests.py +181 -0
- manigent/server/routes/reflection.py +93 -0
- manigent/server/routes/scheduled_messages.py +263 -0
- manigent/server/routes/search.py +94 -0
- manigent/server/routes/sharing.py +156 -0
- manigent/server/routes/skills.py +406 -0
- manigent/server/routes/templates.py +219 -0
- manigent/server/routes/turn_tokens.py +119 -0
- manigent/server/routes/webchat.py +406 -0
- manigent/server/routes/websocket.py +431 -0
- manigent/server/serving_only.py +200 -0
- manigent/server/signup_policy.py +120 -0
- manigent/server/skill_registry.py +164 -0
- manigent/server/socket_events.py +858 -0
- manigent/server/timeout_checker.py +446 -0
- manigent/server/tunnel_subscriber.py +1000 -0
- manigent/server/turn_tokens.py +285 -0
- manigent/server/ws_hub.py +556 -0
- manigent/server_cli.py +31 -0
- manigent/sync/changelog.py +885 -0
- manigent/sync/console_subscriber.py +222 -0
- manigent/sync/runloop.py +619 -0
- manigent/sync/runloop_manager.py +197 -0
- manigent/sync/subscriber.py +98 -0
- manigent/utils/agent_processes.py +276 -0
- manigent/utils/agent_storage.py +125 -0
- manigent/utils/email.py +563 -0
- manigent/utils/env_store.py +174 -0
- manigent/utils/extra_dirs.py +85 -0
- manigent/utils/file_io.py +485 -0
- manigent/utils/invoke_timeout.py +87 -0
- manigent/utils/jsonc.py +78 -0
- manigent/utils/knowledge_index.py +148 -0
- manigent/utils/nofollow_fs.py +279 -0
- manigent/utils/notification_center.py +67 -0
- manigent/utils/version.py +57 -0
- manigent/web/frontend/.design-sync-entry.tsx +74 -0
- manigent/web/frontend/.design-sync-provider.tsx +46 -0
- manigent/web/frontend/.eslintrc.cjs +183 -0
- manigent/web/frontend/.gitignore +6 -0
- manigent/web/frontend/app/page.tsx +39 -0
- manigent/web/frontend/hub-terms.html +192 -0
- manigent/web/frontend/index.html +15 -0
- manigent/web/frontend/landing.html +15 -0
- manigent/web/frontend/package-lock.json +8028 -0
- manigent/web/frontend/package.json +55 -0
- manigent/web/frontend/postcss.config.js +6 -0
- manigent/web/frontend/privacy.html +217 -0
- manigent/web/frontend/private-beta-announcement.html +19 -0
- manigent/web/frontend/public/apple-touch-icon.png +0 -0
- manigent/web/frontend/public/brand-hero-banner.png +0 -0
- manigent/web/frontend/public/brand-hero.png +0 -0
- manigent/web/frontend/public/favicon.png +0 -0
- manigent/web/frontend/public/favicon.svg +8 -0
- manigent/web/frontend/public/icon-transparent-sm.png +0 -0
- manigent/web/frontend/public/icon.png +0 -0
- manigent/web/frontend/public/manigent-mark.svg +7 -0
- manigent/web/frontend/public/vite.svg +5 -0
- manigent/web/frontend/public.html +15 -0
- manigent/web/frontend/src/App.activeAccountRedirect.test.tsx +236 -0
- manigent/web/frontend/src/App.hubHostDm.test.tsx +119 -0
- manigent/web/frontend/src/App.hubHostProject.test.tsx +142 -0
- manigent/web/frontend/src/App.hubRoutes.test.tsx +187 -0
- manigent/web/frontend/src/App.oauthAddCallback.test.tsx +263 -0
- manigent/web/frontend/src/App.tsx +246 -0
- manigent/web/frontend/src/api/attachments.ts +32 -0
- manigent/web/frontend/src/api/batchLoader.test.ts +212 -0
- manigent/web/frontend/src/api/batchLoader.ts +124 -0
- manigent/web/frontend/src/api/chatroomsBatch.test.tsx +392 -0
- manigent/web/frontend/src/api/client.ts +321 -0
- manigent/web/frontend/src/api/crossAccountAuth.test.ts +388 -0
- manigent/web/frontend/src/api/endpoints/agentEnv.ts +24 -0
- manigent/web/frontend/src/api/endpoints/agentFs.ts +125 -0
- manigent/web/frontend/src/api/endpoints/agentSearch.ts +19 -0
- manigent/web/frontend/src/api/endpoints/agents.ts +66 -0
- manigent/web/frontend/src/api/endpoints/announcements.ts +26 -0
- manigent/web/frontend/src/api/endpoints/auth.ts +361 -0
- manigent/web/frontend/src/api/endpoints/authLogin.test.ts +236 -0
- manigent/web/frontend/src/api/endpoints/batch.ts +64 -0
- manigent/web/frontend/src/api/endpoints/briefTabs.ts +81 -0
- manigent/web/frontend/src/api/endpoints/channels.ts +285 -0
- manigent/web/frontend/src/api/endpoints/computers.ts +212 -0
- manigent/web/frontend/src/api/endpoints/deskLabels.ts +151 -0
- manigent/web/frontend/src/api/endpoints/deskLatestMessages.ts +23 -0
- manigent/web/frontend/src/api/endpoints/deskReadState.ts +41 -0
- manigent/web/frontend/src/api/endpoints/deskSignOffs.ts +74 -0
- manigent/web/frontend/src/api/endpoints/deskSops.ts +53 -0
- manigent/web/frontend/src/api/endpoints/deskTodoAttachments.ts +69 -0
- manigent/web/frontend/src/api/endpoints/deskTodoProjects.test.ts +99 -0
- manigent/web/frontend/src/api/endpoints/deskTodoProjects.ts +114 -0
- manigent/web/frontend/src/api/endpoints/deskTodos.ts +164 -0
- manigent/web/frontend/src/api/endpoints/deskTour.ts +16 -0
- manigent/web/frontend/src/api/endpoints/dm.ts +137 -0
- manigent/web/frontend/src/api/endpoints/files.ts +55 -0
- manigent/web/frontend/src/api/endpoints/hub.contract.test.ts +94 -0
- manigent/web/frontend/src/api/endpoints/hub.keys.ts +260 -0
- manigent/web/frontend/src/api/endpoints/hub.test.ts +203 -0
- manigent/web/frontend/src/api/endpoints/hub.ts +654 -0
- manigent/web/frontend/src/api/endpoints/index.ts +15 -0
- manigent/web/frontend/src/api/endpoints/install.ts +74 -0
- manigent/web/frontend/src/api/endpoints/isolationCheck.ts +36 -0
- manigent/web/frontend/src/api/endpoints/knowledgePacks.ts +179 -0
- manigent/web/frontend/src/api/endpoints/mcps.ts +36 -0
- manigent/web/frontend/src/api/endpoints/messages.held.test.ts +43 -0
- manigent/web/frontend/src/api/endpoints/messages.ts +95 -0
- manigent/web/frontend/src/api/endpoints/modelConfigs.ts +232 -0
- manigent/web/frontend/src/api/endpoints/oauthApi.test.ts +110 -0
- manigent/web/frontend/src/api/endpoints/projectPlans.ts +608 -0
- manigent/web/frontend/src/api/endpoints/projectReports.ts +36 -0
- manigent/web/frontend/src/api/endpoints/projects.ts +124 -0
- manigent/web/frontend/src/api/endpoints/publicRequests.ts +75 -0
- manigent/web/frontend/src/api/endpoints/reflection.ts +32 -0
- manigent/web/frontend/src/api/endpoints/roomFlow.ts +14 -0
- manigent/web/frontend/src/api/endpoints/scheduledMessages.ts +60 -0
- manigent/web/frontend/src/api/endpoints/search.ts +27 -0
- manigent/web/frontend/src/api/endpoints/sharing.ts +42 -0
- manigent/web/frontend/src/api/endpoints/skills.ts +67 -0
- manigent/web/frontend/src/api/endpoints/templates.ts +72 -0
- manigent/web/frontend/src/api/loaders.ts +22 -0
- manigent/web/frontend/src/api/singleIssuer.test.ts +148 -0
- manigent/web/frontend/src/api/transientRetry.test.ts +176 -0
- manigent/web/frontend/src/api/transientRetry.ts +140 -0
- manigent/web/frontend/src/api/websocket.resync.test.ts +111 -0
- manigent/web/frontend/src/api/websocket.ts +335 -0
- manigent/web/frontend/src/components/agent/AgentNameLink.tsx +24 -0
- manigent/web/frontend/src/components/agent/AgentViewActions.test.tsx +41 -0
- manigent/web/frontend/src/components/agent/AgentViewActions.tsx +89 -0
- manigent/web/frontend/src/components/agent/CreateAgentPage.tsx +535 -0
- manigent/web/frontend/src/components/agent/JsonConfigEditor.tsx +33 -0
- manigent/web/frontend/src/components/agent/KnowledgePackList.tsx +103 -0
- manigent/web/frontend/src/components/agent/McpCatalog.tsx +261 -0
- manigent/web/frontend/src/components/agent/McpConfigModal.tsx +224 -0
- manigent/web/frontend/src/components/agent/PreConsentModal.tsx +172 -0
- manigent/web/frontend/src/components/agent/SkillCatalog.tsx +364 -0
- manigent/web/frontend/src/components/agent/SkillConfigModal.tsx +221 -0
- manigent/web/frontend/src/components/auth/AddAccountPage.test.tsx +181 -0
- manigent/web/frontend/src/components/auth/AddAccountPage.tsx +201 -0
- manigent/web/frontend/src/components/auth/AuthShell.tsx +462 -0
- manigent/web/frontend/src/components/auth/LoginPage.test.tsx +384 -0
- manigent/web/frontend/src/components/auth/LoginPage.tsx +129 -0
- manigent/web/frontend/src/components/auth/OAuthCallbackPage.test.tsx +185 -0
- manigent/web/frontend/src/components/auth/OAuthCallbackPage.tsx +154 -0
- manigent/web/frontend/src/components/auth/OAuthLinkedBanner.tsx +44 -0
- manigent/web/frontend/src/components/auth/ProviderButtons.tsx +94 -0
- manigent/web/frontend/src/components/auth/SignupPage.tsx +437 -0
- manigent/web/frontend/src/components/auth/StepProgress.tsx +60 -0
- manigent/web/frontend/src/components/auth/VerifyEmailPage.test.tsx +155 -0
- manigent/web/frontend/src/components/auth/VerifyEmailPage.tsx +211 -0
- manigent/web/frontend/src/components/auth/index.ts +3 -0
- manigent/web/frontend/src/components/auth/oauthErrors.test.ts +107 -0
- manigent/web/frontend/src/components/auth/oauthErrors.ts +82 -0
- manigent/web/frontend/src/components/auth/useUsernameCheck.test.tsx +68 -0
- manigent/web/frontend/src/components/auth/useUsernameCheck.ts +86 -0
- manigent/web/frontend/src/components/beta/BetaPage.tsx +21 -0
- manigent/web/frontend/src/components/beta/DayAtMyDesk.tsx +120 -0
- manigent/web/frontend/src/components/beta/Footer.tsx +82 -0
- manigent/web/frontend/src/components/beta/Hero.tsx +224 -0
- manigent/web/frontend/src/components/beta/Nav.tsx +51 -0
- manigent/web/frontend/src/components/beta/Pillars.tsx +172 -0
- manigent/web/frontend/src/components/beta/TwoModels.tsx +146 -0
- manigent/web/frontend/src/components/beta/constants.ts +3 -0
- manigent/web/frontend/src/components/briefing/BriefingFrame.test.tsx +208 -0
- manigent/web/frontend/src/components/briefing/BriefingFrame.tsx +151 -0
- manigent/web/frontend/src/components/briefing/BriefingPage.test.tsx +176 -0
- manigent/web/frontend/src/components/briefing/BriefingPage.tsx +157 -0
- manigent/web/frontend/src/components/briefing/BriefingPage.wsDelete.test.tsx +177 -0
- manigent/web/frontend/src/components/briefing/briefing.css +147 -0
- manigent/web/frontend/src/components/briefing/heightBootstrap.test.ts +121 -0
- manigent/web/frontend/src/components/briefing/heightBootstrap.ts +224 -0
- manigent/web/frontend/src/components/briefing/parseBriefMessage.test.ts +90 -0
- manigent/web/frontend/src/components/briefing/sampleBriefing.ts +148 -0
- manigent/web/frontend/src/components/channels/ChannelBadge.tsx +35 -0
- manigent/web/frontend/src/components/chatroom/ChannelThreadControls.tsx +127 -0
- manigent/web/frontend/src/components/chatroom/ChannelThreadNotice.test.tsx +207 -0
- manigent/web/frontend/src/components/chatroom/ChannelThreadNotice.tsx +80 -0
- manigent/web/frontend/src/components/chatroom/ChatroomView.channel.test.tsx +550 -0
- manigent/web/frontend/src/components/chatroom/ChatroomView.flow.test.tsx +186 -0
- manigent/web/frontend/src/components/chatroom/ChatroomView.isolation.test.tsx +70 -0
- manigent/web/frontend/src/components/chatroom/ChatroomView.tsx +450 -0
- manigent/web/frontend/src/components/chatroom/DelegationRow.test.tsx +170 -0
- manigent/web/frontend/src/components/chatroom/DelegationRow.tsx +217 -0
- manigent/web/frontend/src/components/chatroom/DeliveryStatusLine.test.tsx +33 -0
- manigent/web/frontend/src/components/chatroom/DeliveryStatusLine.tsx +46 -0
- manigent/web/frontend/src/components/chatroom/ForwardModal.test.tsx +109 -0
- manigent/web/frontend/src/components/chatroom/ForwardModal.tsx +304 -0
- manigent/web/frontend/src/components/chatroom/HeldNotice.tsx +77 -0
- manigent/web/frontend/src/components/chatroom/MentionDropdown.tsx +97 -0
- manigent/web/frontend/src/components/chatroom/MessageInput.tsx +408 -0
- manigent/web/frontend/src/components/chatroom/MessageItem.tsx +425 -0
- manigent/web/frontend/src/components/chatroom/MessageList.outside.test.tsx +98 -0
- manigent/web/frontend/src/components/chatroom/MessageList.test.tsx +245 -0
- manigent/web/frontend/src/components/chatroom/MessageList.tsx +406 -0
- manigent/web/frontend/src/components/chatroom/OfflineRemedyNote.test.tsx +211 -0
- manigent/web/frontend/src/components/chatroom/OfflineRemedyNote.tsx +182 -0
- manigent/web/frontend/src/components/chatroom/OutsideBadge.tsx +18 -0
- manigent/web/frontend/src/components/chatroom/RoomFlowControl.tsx +49 -0
- manigent/web/frontend/src/components/chatroom/RoomFlowStrip.test.tsx +47 -0
- manigent/web/frontend/src/components/chatroom/RoomFlowStrip.tsx +25 -0
- manigent/web/frontend/src/components/chatroom/SaveToPackModal.tsx +350 -0
- manigent/web/frontend/src/components/chatroom/StagedAttachments.test.tsx +56 -0
- manigent/web/frontend/src/components/chatroom/StagedAttachments.tsx +160 -0
- manigent/web/frontend/src/components/chatroom/SystemNote.tsx +18 -0
- manigent/web/frontend/src/components/chatroom/contactSender.test.tsx +130 -0
- manigent/web/frontend/src/components/chatroom/index.ts +3 -0
- manigent/web/frontend/src/components/chatroom/recipientStatus.test.ts +344 -0
- manigent/web/frontend/src/components/chatroom/recipientStatus.ts +197 -0
- manigent/web/frontend/src/components/common/AnnouncementBanners.test.tsx +221 -0
- manigent/web/frontend/src/components/common/AnnouncementBanners.tsx +180 -0
- manigent/web/frontend/src/components/common/Avatar.test.tsx +50 -0
- manigent/web/frontend/src/components/common/Avatar.tsx +102 -0
- manigent/web/frontend/src/components/common/Badge.tsx +30 -0
- manigent/web/frontend/src/components/common/BrandName.tsx +16 -0
- manigent/web/frontend/src/components/common/ClearHistoryButton.tsx +74 -0
- manigent/web/frontend/src/components/common/CollapsibleHeader.tsx +64 -0
- manigent/web/frontend/src/components/common/ConnectionStatus.test.tsx +56 -0
- manigent/web/frontend/src/components/common/ConnectionStatus.tsx +28 -0
- manigent/web/frontend/src/components/common/DropOverlay.tsx +27 -0
- manigent/web/frontend/src/components/common/InlineEditableTitle.test.tsx +369 -0
- manigent/web/frontend/src/components/common/InlineEditableTitle.tsx +287 -0
- manigent/web/frontend/src/components/common/IsolationUnavailablePanel.tsx +19 -0
- manigent/web/frontend/src/components/common/Loading.tsx +22 -0
- manigent/web/frontend/src/components/common/ModelSelector.tsx +248 -0
- manigent/web/frontend/src/components/common/Overlay.tsx +15 -0
- manigent/web/frontend/src/components/common/ResizeHandle.tsx +52 -0
- manigent/web/frontend/src/components/common/TagAutocompleteInput.test.tsx +92 -0
- manigent/web/frontend/src/components/common/TagAutocompleteInput.tsx +246 -0
- manigent/web/frontend/src/components/common/TagPillInput.tsx +181 -0
- manigent/web/frontend/src/components/common/TeamAndAgentPicker.tsx +83 -0
- manigent/web/frontend/src/components/common/Timestamp.tsx +61 -0
- manigent/web/frontend/src/components/common/VerifiedBadge.tsx +20 -0
- manigent/web/frontend/src/components/common/index.ts +8 -0
- manigent/web/frontend/src/components/composer/PhPopover.tsx +239 -0
- manigent/web/frontend/src/components/composer/PromptEditor.test.tsx +472 -0
- manigent/web/frontend/src/components/composer/PromptEditor.tsx +540 -0
- manigent/web/frontend/src/components/composer/caret.ts +159 -0
- manigent/web/frontend/src/components/composer/placeholders.test.ts +352 -0
- manigent/web/frontend/src/components/composer/placeholders.ts +354 -0
- manigent/web/frontend/src/components/composer/promptEditor.css +161 -0
- manigent/web/frontend/src/components/computer/ComputerPage.test.tsx +452 -0
- manigent/web/frontend/src/components/computer/ComputerPage.tsx +811 -0
- manigent/web/frontend/src/components/computer/ConnectComputerModal.tsx +135 -0
- manigent/web/frontend/src/components/computer/CopyCommand.tsx +77 -0
- manigent/web/frontend/src/components/computer/DisconnectComputerModal.tsx +121 -0
- manigent/web/frontend/src/components/computer/SoftwareCard.tsx +145 -0
- manigent/web/frontend/src/components/computer/TerminalCard.test.tsx +114 -0
- manigent/web/frontend/src/components/computer/TerminalCard.tsx +131 -0
- manigent/web/frontend/src/components/computer/TerminalPanel.tsx +226 -0
- manigent/web/frontend/src/components/computer/TrustPanel.test.tsx +58 -0
- manigent/web/frontend/src/components/computer/TrustPanel.tsx +143 -0
- manigent/web/frontend/src/components/computer/computerCopy.test.ts +322 -0
- manigent/web/frontend/src/components/computer/computerCopy.ts +413 -0
- manigent/web/frontend/src/components/computer/sections.ts +21 -0
- manigent/web/frontend/src/components/computer/terminalProtocol.test.ts +135 -0
- manigent/web/frontend/src/components/computer/terminalProtocol.ts +170 -0
- manigent/web/frontend/src/components/context/ContextGuide.test.tsx +26 -0
- manigent/web/frontend/src/components/context/ContextGuide.tsx +144 -0
- manigent/web/frontend/src/components/context/ContextLanding.tsx +46 -0
- manigent/web/frontend/src/components/desk/CardBand.a11y.test.tsx +138 -0
- manigent/web/frontend/src/components/desk/CardBand.tsx +132 -0
- manigent/web/frontend/src/components/desk/DashTile.tsx +81 -0
- manigent/web/frontend/src/components/desk/DeskAgentPicker.retained.test.tsx +79 -0
- manigent/web/frontend/src/components/desk/DeskAgentPicker.tsx +151 -0
- manigent/web/frontend/src/components/desk/DeskComposer.detachTodo.test.tsx +233 -0
- manigent/web/frontend/src/components/desk/DeskComposer.dispatch.test.tsx +208 -0
- manigent/web/frontend/src/components/desk/DeskComposer.loadTodoDraft.test.tsx +242 -0
- manigent/web/frontend/src/components/desk/DeskComposer.restage.test.tsx +258 -0
- manigent/web/frontend/src/components/desk/DeskComposer.saveTodo.test.tsx +265 -0
- manigent/web/frontend/src/components/desk/DeskComposer.tsx +828 -0
- manigent/web/frontend/src/components/desk/DeskPage.crossHighlight.test.tsx +427 -0
- manigent/web/frontend/src/components/desk/DeskPage.link.test.tsx +271 -0
- manigent/web/frontend/src/components/desk/DeskPage.tsx +1066 -0
- manigent/web/frontend/src/components/desk/DeskPage.welcomeTour.test.tsx +262 -0
- manigent/web/frontend/src/components/desk/DeskSideRail.tsx +100 -0
- manigent/web/frontend/src/components/desk/DeskWelcomeTour.tsx +513 -0
- manigent/web/frontend/src/components/desk/DeskZeroState.tsx +45 -0
- manigent/web/frontend/src/components/desk/LabelChip.tsx +147 -0
- manigent/web/frontend/src/components/desk/LabelFilter.tsx +474 -0
- manigent/web/frontend/src/components/desk/LabelInput.test.tsx +439 -0
- manigent/web/frontend/src/components/desk/LabelInput.tsx +477 -0
- manigent/web/frontend/src/components/desk/LabelManageSheet.test.tsx +384 -0
- manigent/web/frontend/src/components/desk/LabelManageSheet.tsx +498 -0
- manigent/web/frontend/src/components/desk/PhaseRail.test.tsx +170 -0
- manigent/web/frontend/src/components/desk/PhaseRail.tsx +120 -0
- manigent/web/frontend/src/components/desk/PlanBand.test.tsx +655 -0
- manigent/web/frontend/src/components/desk/PlanBand.tsx +216 -0
- manigent/web/frontend/src/components/desk/SaveTodoModal.tsx +126 -0
- manigent/web/frontend/src/components/desk/SopEditor.tsx +280 -0
- manigent/web/frontend/src/components/desk/SopItem.tsx +171 -0
- manigent/web/frontend/src/components/desk/SopRail.test.tsx +517 -0
- manigent/web/frontend/src/components/desk/SopRail.tsx +250 -0
- manigent/web/frontend/src/components/desk/TicketChip.tsx +51 -0
- manigent/web/frontend/src/components/desk/TodoItem.attachments.test.tsx +96 -0
- manigent/web/frontend/src/components/desk/TodoItem.menu.test.tsx +142 -0
- manigent/web/frontend/src/components/desk/TodoItem.tsx +573 -0
- manigent/web/frontend/src/components/desk/TodoRail.longpress.test.tsx +396 -0
- manigent/web/frontend/src/components/desk/TodoRail.test.tsx +1155 -0
- manigent/web/frontend/src/components/desk/TodoRail.tsx +918 -0
- manigent/web/frontend/src/components/desk/TodoRowMenu.tsx +147 -0
- manigent/web/frontend/src/components/desk/UpdateCard.bands.test.tsx +308 -0
- manigent/web/frontend/src/components/desk/UpdateCard.sendBack.test.tsx +444 -0
- manigent/web/frontend/src/components/desk/UpdateCard.tsx +943 -0
- manigent/web/frontend/src/components/desk/UpdateCard.untrusted.test.tsx +161 -0
- manigent/web/frontend/src/components/desk/desk.css +1921 -0
- manigent/web/frontend/src/components/desk/desk.css.test.ts +582 -0
- manigent/web/frontend/src/components/desk/deskBands.test.ts +389 -0
- manigent/web/frontend/src/components/desk/deskBands.ts +226 -0
- manigent/web/frontend/src/components/desk/m16Surfaces.test.ts +134 -0
- manigent/web/frontend/src/components/desk/sopSyntax.ts +73 -0
- manigent/web/frontend/src/components/discovery/AgentDirectory.tsx +71 -0
- manigent/web/frontend/src/components/discovery/AgentFilterBar.tsx +46 -0
- manigent/web/frontend/src/components/discovery/AgentSearchBar.tsx +56 -0
- manigent/web/frontend/src/components/dm/AgentSummaryCard.tsx +154 -0
- manigent/web/frontend/src/components/dm/ComposeFields.tsx +145 -0
- manigent/web/frontend/src/components/dm/DMChatView.flow.test.tsx +374 -0
- manigent/web/frontend/src/components/dm/DMChatView.tsx +841 -0
- manigent/web/frontend/src/components/dm/DMZeroState.tsx +204 -0
- manigent/web/frontend/src/components/dm/DmComposeModal.tsx +301 -0
- manigent/web/frontend/src/components/dm/PersonalizeModal.tsx +366 -0
- manigent/web/frontend/src/components/dm/index.ts +1 -0
- manigent/web/frontend/src/components/files/FileItem.tsx +138 -0
- manigent/web/frontend/src/components/files/FileList.outside.test.tsx +29 -0
- manigent/web/frontend/src/components/files/FileList.tsx +48 -0
- manigent/web/frontend/src/components/files/FilePreview.test.tsx +75 -0
- manigent/web/frontend/src/components/files/FilePreview.tsx +325 -0
- manigent/web/frontend/src/components/files/FileViewerModal.test.tsx +157 -0
- manigent/web/frontend/src/components/files/FileViewerModal.tsx +261 -0
- manigent/web/frontend/src/components/files/HighlightedCode.tsx +39 -0
- manigent/web/frontend/src/components/files/SaveToAgentPanel.test.tsx +156 -0
- manigent/web/frontend/src/components/files/SaveToAgentPanel.tsx +545 -0
- manigent/web/frontend/src/components/files/index.ts +3 -0
- manigent/web/frontend/src/components/hero/AgentAvatar.tsx +66 -0
- manigent/web/frontend/src/components/hero/Button.tsx +66 -0
- manigent/web/frontend/src/components/hero/Hero.tsx +133 -0
- manigent/web/frontend/src/components/homefs/HomeFolderBrowser.test.tsx +393 -0
- manigent/web/frontend/src/components/homefs/HomeFolderBrowser.tsx +792 -0
- manigent/web/frontend/src/components/hub/BridgeDeliveryLine.test.tsx +40 -0
- manigent/web/frontend/src/components/hub/BridgeDeliveryLine.tsx +36 -0
- manigent/web/frontend/src/components/hub/HubAvatar.test.tsx +93 -0
- manigent/web/frontend/src/components/hub/HubAvatar.tsx +33 -0
- manigent/web/frontend/src/components/hub/HubChatView.test.tsx +695 -0
- manigent/web/frontend/src/components/hub/HubChatView.tsx +504 -0
- manigent/web/frontend/src/components/hub/HubContactLabel.test.tsx +92 -0
- manigent/web/frontend/src/components/hub/HubContactLabel.tsx +47 -0
- manigent/web/frontend/src/components/hub/HubDeliveryLine.tsx +49 -0
- manigent/web/frontend/src/components/hub/HubDisclosure.tsx +49 -0
- manigent/web/frontend/src/components/hub/HubEnrollmentDialog.test.tsx +144 -0
- manigent/web/frontend/src/components/hub/HubEnrollmentDialog.tsx +244 -0
- manigent/web/frontend/src/components/hub/HubMessageBody.test.tsx +26 -0
- manigent/web/frontend/src/components/hub/HubMessageBody.tsx +14 -0
- manigent/web/frontend/src/components/hub/HubOfflineConfirm.tsx +45 -0
- manigent/web/frontend/src/components/hub/HubThreadBanner.tsx +33 -0
- manigent/web/frontend/src/components/hub/HubThreadGuard.tsx +59 -0
- manigent/web/frontend/src/components/hub/RemoteAgentCard.test.tsx +50 -0
- manigent/web/frontend/src/components/hub/RemoteAgentCard.tsx +174 -0
- manigent/web/frontend/src/components/hub/RemoteAgentSection.test.tsx +446 -0
- manigent/web/frontend/src/components/hub/RemoteAgentSection.tsx +219 -0
- manigent/web/frontend/src/components/hub/ReportDialog.test.tsx +96 -0
- manigent/web/frontend/src/components/hub/ReportDialog.tsx +162 -0
- manigent/web/frontend/src/components/hub/RetainButton.test.tsx +103 -0
- manigent/web/frontend/src/components/hub/RetainButton.tsx +114 -0
- manigent/web/frontend/src/components/hub/RetainDialog.test.tsx +68 -0
- manigent/web/frontend/src/components/hub/RetainDialog.tsx +115 -0
- manigent/web/frontend/src/components/hub/RetainedList.test.tsx +94 -0
- manigent/web/frontend/src/components/hub/RetainedList.tsx +32 -0
- manigent/web/frontend/src/components/hub/RetainedRow.tsx +129 -0
- manigent/web/frontend/src/components/hub/StandInChip.test.tsx +37 -0
- manigent/web/frontend/src/components/hub/StandInChip.tsx +43 -0
- manigent/web/frontend/src/components/hub/UnusualNameChip.test.tsx +81 -0
- manigent/web/frontend/src/components/hub/UnusualNameChip.tsx +22 -0
- manigent/web/frontend/src/components/hub/hubLint.test.ts +265 -0
- manigent/web/frontend/src/components/landing/ComparisonSection.tsx +92 -0
- manigent/web/frontend/src/components/landing/ConsoleSection.tsx +402 -0
- manigent/web/frontend/src/components/landing/CrewSection.tsx +224 -0
- manigent/web/frontend/src/components/landing/FAQ.tsx +68 -0
- manigent/web/frontend/src/components/landing/Footer.tsx +58 -0
- manigent/web/frontend/src/components/landing/HowItWorks.tsx +117 -0
- manigent/web/frontend/src/components/landing/KnowledgeSection.tsx +91 -0
- manigent/web/frontend/src/components/landing/LandingPage.test.tsx +134 -0
- manigent/web/frontend/src/components/landing/LearningSection.tsx +486 -0
- manigent/web/frontend/src/components/landing/Nav.tsx +68 -0
- manigent/web/frontend/src/components/landing/Pricing.tsx +263 -0
- manigent/web/frontend/src/components/landing/Section.tsx +98 -0
- manigent/web/frontend/src/components/landing/StaffingSection.tsx +122 -0
- manigent/web/frontend/src/components/landing/WhyNowSection.tsx +92 -0
- manigent/web/frontend/src/components/landing/WhyTeamSection.tsx +73 -0
- manigent/web/frontend/src/components/landing/earlyAccess.ts +23 -0
- manigent/web/frontend/src/components/layout/AppLayout.tsx +77 -0
- manigent/web/frontend/src/components/layout/Sidebar.tsx +172 -0
- manigent/web/frontend/src/components/layout/index.ts +2 -0
- manigent/web/frontend/src/components/project/ActivityFeed.tsx +247 -0
- manigent/web/frontend/src/components/project/CreateProjectPage.tsx +543 -0
- manigent/web/frontend/src/components/project/DeleteProjectButton.tsx +39 -0
- manigent/web/frontend/src/components/project/ProjectPlanTab.phase.test.tsx +107 -0
- manigent/web/frontend/src/components/project/ProjectPlanTab.test.tsx +994 -0
- manigent/web/frontend/src/components/project/ProjectPlanTab.tsx +166 -0
- manigent/web/frontend/src/components/project/ProjectReportTab.tsx +139 -0
- manigent/web/frontend/src/components/project/ProjectView.tsx +390 -0
- manigent/web/frontend/src/components/project/index.ts +2 -0
- manigent/web/frontend/src/components/project/plan/PlanAcceptance.test.tsx +460 -0
- manigent/web/frontend/src/components/project/plan/PlanAcceptance.tsx +111 -0
- manigent/web/frontend/src/components/project/plan/PlanBlockEdit.tsx +111 -0
- manigent/web/frontend/src/components/project/plan/PlanBlockEditing.test.tsx +1132 -0
- manigent/web/frontend/src/components/project/plan/PlanBody.test.tsx +495 -0
- manigent/web/frontend/src/components/project/plan/PlanBody.tsx +992 -0
- manigent/web/frontend/src/components/project/plan/PlanCollide.tsx +254 -0
- manigent/web/frontend/src/components/project/plan/PlanCommentList.test.tsx +420 -0
- manigent/web/frontend/src/components/project/plan/PlanCommentList.tsx +391 -0
- manigent/web/frontend/src/components/project/plan/PlanDecisionNudge.test.tsx +226 -0
- manigent/web/frontend/src/components/project/plan/PlanDecisionNudge.tsx +128 -0
- manigent/web/frontend/src/components/project/plan/PlanDestructiveAccept.test.tsx +209 -0
- manigent/web/frontend/src/components/project/plan/PlanDiff.test.tsx +126 -0
- manigent/web/frontend/src/components/project/plan/PlanDiff.tsx +131 -0
- manigent/web/frontend/src/components/project/plan/PlanDiffSeries.test.tsx +500 -0
- manigent/web/frontend/src/components/project/plan/PlanDiffSeries.tsx +125 -0
- manigent/web/frontend/src/components/project/plan/PlanEditor.mounts.test.tsx +504 -0
- manigent/web/frontend/src/components/project/plan/PlanEditor.tsx +2159 -0
- manigent/web/frontend/src/components/project/plan/PlanHistory.tsx +69 -0
- manigent/web/frontend/src/components/project/plan/PlanInlineNotes.test.tsx +2398 -0
- manigent/web/frontend/src/components/project/plan/PlanNoteBase.test.tsx +215 -0
- manigent/web/frontend/src/components/project/plan/PlanNoteRow.test.tsx +562 -0
- manigent/web/frontend/src/components/project/plan/PlanNoteRow.tsx +908 -0
- manigent/web/frontend/src/components/project/plan/PlanQuotePop.tsx +254 -0
- manigent/web/frontend/src/components/project/plan/PlanStaleReconcile.test.tsx +244 -0
- manigent/web/frontend/src/components/project/plan/PlanSubmitWindow.test.tsx +281 -0
- manigent/web/frontend/src/components/project/plan/PlanTray.tsx +184 -0
- manigent/web/frontend/src/components/project/plan/PlanTrayMirror.test.tsx +242 -0
- manigent/web/frontend/src/components/project/plan/plan.css +1151 -0
- manigent/web/frontend/src/components/project/plan/planAnchor.test.tsx +459 -0
- manigent/web/frontend/src/components/project/plan/planAnchor.tsx +277 -0
- manigent/web/frontend/src/components/project/plan/planBlocks.test.tsx +470 -0
- manigent/web/frontend/src/components/project/plan/planBlocks.ts +242 -0
- manigent/web/frontend/src/components/project/plan/planContrast.test.ts +229 -0
- manigent/web/frontend/src/components/project/plan/planDiffs.test.ts +455 -0
- manigent/web/frontend/src/components/project/plan/planDiffs.ts +358 -0
- manigent/web/frontend/src/components/project/plan/planTestServer.ts +741 -0
- manigent/web/frontend/src/components/project/plan/planTransport.test.ts +160 -0
- manigent/web/frontend/src/components/project/plan/planTrayLogic.test.ts +1201 -0
- manigent/web/frontend/src/components/project/plan/planTrayLogic.ts +1164 -0
- manigent/web/frontend/src/components/publicAgents/PublicAgentsAccount.tsx +162 -0
- manigent/web/frontend/src/components/publicAgents/api.ts +55 -0
- manigent/web/frontend/src/components/publicAgents/parts.tsx +54 -0
- manigent/web/frontend/src/components/publicAgents/publicAgents.css +53 -0
- manigent/web/frontend/src/components/publicAgents/publicAgents.test.tsx +86 -0
- manigent/web/frontend/src/components/publicAgents/widget.test.ts +148 -0
- manigent/web/frontend/src/components/publicAgents/widget.ts +40 -0
- manigent/web/frontend/src/components/publicRequests/AgentDrawer.tsx +101 -0
- manigent/web/frontend/src/components/publicRequests/AgentPanel.tsx +173 -0
- manigent/web/frontend/src/components/publicRequests/AgentRankList.tsx +61 -0
- manigent/web/frontend/src/components/publicRequests/MatchRetainButton.tsx +67 -0
- manigent/web/frontend/src/components/publicRequests/ProgressBoard.tsx +74 -0
- manigent/web/frontend/src/components/publicRequests/PublicRequestsPage.tsx +57 -0
- manigent/web/frontend/src/components/publicRequests/RequestHome.tsx +99 -0
- manigent/web/frontend/src/components/publicRequests/RequestRoom.tsx +126 -0
- manigent/web/frontend/src/components/publicRequests/agentView.ts +65 -0
- manigent/web/frontend/src/components/publicRequests/publicRequests.css +209 -0
- manigent/web/frontend/src/components/publicRequests/publicRequests.test.tsx +172 -0
- manigent/web/frontend/src/components/publicRequests/requestCopy.ts +121 -0
- manigent/web/frontend/src/components/sample-request/SampleIdeaList.test.tsx +190 -0
- manigent/web/frontend/src/components/sample-request/SampleIdeaList.tsx +180 -0
- manigent/web/frontend/src/components/sample-request/SampleRequestBody.tsx +276 -0
- manigent/web/frontend/src/components/sample-request/assistantStarterSamples.ts +62 -0
- manigent/web/frontend/src/components/sample-request/sampleIdeaList.css +106 -0
- manigent/web/frontend/src/components/scheduled/CronPicker.tsx +80 -0
- manigent/web/frontend/src/components/scheduled/ScheduleMessageModal.tsx +341 -0
- manigent/web/frontend/src/components/scheduled/ScheduledMessagesList.tsx +157 -0
- manigent/web/frontend/src/components/settings/AgentSettingsPage.tsx +366 -0
- manigent/web/frontend/src/components/settings/ConnectedAccounts.tsx +277 -0
- manigent/web/frontend/src/components/settings/DefaultModelSection.test.tsx +96 -0
- manigent/web/frontend/src/components/settings/DefaultModelSection.tsx +212 -0
- manigent/web/frontend/src/components/settings/DisconnectConfirmModal.tsx +93 -0
- manigent/web/frontend/src/components/settings/FrontDeskSettingsPage.isolation.test.tsx +66 -0
- manigent/web/frontend/src/components/settings/FrontDeskSettingsPage.tsx +134 -0
- manigent/web/frontend/src/components/settings/InvitableAgentsPicker.tsx +182 -0
- manigent/web/frontend/src/components/settings/KnowledgePacksSection.tsx +867 -0
- manigent/web/frontend/src/components/settings/ModelConfigDialog.catalogDriven.test.tsx +79 -0
- manigent/web/frontend/src/components/settings/ModelConfigDialog.tsx +343 -0
- manigent/web/frontend/src/components/settings/ModelConfigSection.smartRouting.test.tsx +109 -0
- manigent/web/frontend/src/components/settings/ModelConfigSection.tsx +599 -0
- manigent/web/frontend/src/components/settings/ReflectionScheduleSection.tsx +170 -0
- manigent/web/frontend/src/components/settings/UserSettingsPage.tsx +168 -0
- manigent/web/frontend/src/components/settings/agent/AgentStatusStrip.tsx +71 -0
- manigent/web/frontend/src/components/settings/agent/BlockedDeploymentsCard.test.tsx +81 -0
- manigent/web/frontend/src/components/settings/agent/BlockedDeploymentsCard.tsx +62 -0
- manigent/web/frontend/src/components/settings/agent/ChannelIsolationLine.tsx +21 -0
- manigent/web/frontend/src/components/settings/agent/ChannelsSection.test.tsx +879 -0
- manigent/web/frontend/src/components/settings/agent/ChannelsSection.tsx +1124 -0
- manigent/web/frontend/src/components/settings/agent/EnvVarsCard.test.ts +15 -0
- manigent/web/frontend/src/components/settings/agent/EnvVarsCard.tsx +301 -0
- manigent/web/frontend/src/components/settings/agent/ExtraDirsList.tsx +85 -0
- manigent/web/frontend/src/components/settings/agent/GeneralSection.tsx +88 -0
- manigent/web/frontend/src/components/settings/agent/HostDisclaimerSlot.test.tsx +32 -0
- manigent/web/frontend/src/components/settings/agent/HostDisclaimerSlot.tsx +30 -0
- manigent/web/frontend/src/components/settings/agent/HubChannelCard.test.tsx +449 -0
- manigent/web/frontend/src/components/settings/agent/HubChannelCard.tsx +312 -0
- manigent/web/frontend/src/components/settings/agent/HubInvitableAgentsCard.test.tsx +83 -0
- manigent/web/frontend/src/components/settings/agent/HubInvitableAgentsCard.tsx +64 -0
- manigent/web/frontend/src/components/settings/agent/HubSendUsageCard.test.tsx +69 -0
- manigent/web/frontend/src/components/settings/agent/HubSendUsageCard.tsx +42 -0
- manigent/web/frontend/src/components/settings/agent/HubTurnOffDialog.tsx +88 -0
- manigent/web/frontend/src/components/settings/agent/IsolationRecheckButton.test.tsx +26 -0
- manigent/web/frontend/src/components/settings/agent/IsolationRecheckButton.tsx +68 -0
- manigent/web/frontend/src/components/settings/agent/KnowledgeSection.tsx +68 -0
- manigent/web/frontend/src/components/settings/agent/LineChannelCard.test.tsx +428 -0
- manigent/web/frontend/src/components/settings/agent/LineChannelCard.tsx +343 -0
- manigent/web/frontend/src/components/settings/agent/RuntimeSection.test.tsx +164 -0
- manigent/web/frontend/src/components/settings/agent/RuntimeSection.tsx +118 -0
- manigent/web/frontend/src/components/settings/agent/StorageSection.tsx +78 -0
- manigent/web/frontend/src/components/settings/agent/WebChatChannelCard.test.tsx +253 -0
- manigent/web/frontend/src/components/settings/agent/WebChatChannelCard.tsx +401 -0
- manigent/web/frontend/src/components/settings/agent/WhatsAppChannelCard.test.tsx +462 -0
- manigent/web/frontend/src/components/settings/agent/WhatsAppChannelCard.tsx +289 -0
- manigent/web/frontend/src/components/settings/agent/agentSettings.test.tsx +109 -0
- manigent/web/frontend/src/components/settings/agent/channelSetupGuides.test.tsx +162 -0
- manigent/web/frontend/src/components/settings/agent/channelSetupGuides.tsx +119 -0
- manigent/web/frontend/src/components/settings/agent/channelsShared.ts +83 -0
- manigent/web/frontend/src/components/settings/agent/fields.tsx +67 -0
- manigent/web/frontend/src/components/settings/agent/sections.ts +36 -0
- manigent/web/frontend/src/components/settings/agent/useAgentSettingsDraft.ts +129 -0
- manigent/web/frontend/src/components/settings/agent/useInstallSelection.ts +38 -0
- manigent/web/frontend/src/components/settings/primitives.tsx +98 -0
- manigent/web/frontend/src/components/shared/ExpandToggle.tsx +45 -0
- manigent/web/frontend/src/components/shared/MarkdownBody.tsx +218 -0
- manigent/web/frontend/src/components/shared/MarkdownBody.untrusted.test.tsx +97 -0
- manigent/web/frontend/src/components/shared/RenderBody.tsx +90 -0
- manigent/web/frontend/src/components/shared/rehypeHideComments.test.tsx +115 -0
- manigent/web/frontend/src/components/shared/rehypeHideComments.ts +124 -0
- manigent/web/frontend/src/components/sharing/AcceptSharePage.tsx +141 -0
- manigent/web/frontend/src/components/sharing/ShareLandingPage.tsx +89 -0
- manigent/web/frontend/src/components/sidebar/AccountChip.test.tsx +337 -0
- manigent/web/frontend/src/components/sidebar/AccountChip.tsx +407 -0
- manigent/web/frontend/src/components/sidebar/ActiveWorkDot.tsx +9 -0
- manigent/web/frontend/src/components/sidebar/AgentProfile.tsx +44 -0
- manigent/web/frontend/src/components/sidebar/AgentRow.tsx +71 -0
- manigent/web/frontend/src/components/sidebar/AgentsPanel.retained.test.tsx +105 -0
- manigent/web/frontend/src/components/sidebar/AgentsPanel.tsx +231 -0
- manigent/web/frontend/src/components/sidebar/AssistantHero.tsx +48 -0
- manigent/web/frontend/src/components/sidebar/ChatroomItem.tsx +48 -0
- manigent/web/frontend/src/components/sidebar/CommandPalette.channelThreads.test.tsx +76 -0
- manigent/web/frontend/src/components/sidebar/CommandPalette.reopen.test.tsx +206 -0
- manigent/web/frontend/src/components/sidebar/CommandPalette.test.tsx +725 -0
- manigent/web/frontend/src/components/sidebar/CommandPalette.tsx +774 -0
- manigent/web/frontend/src/components/sidebar/ComputersPanel.tsx +144 -0
- manigent/web/frontend/src/components/sidebar/DmIcon.tsx +46 -0
- manigent/web/frontend/src/components/sidebar/DmsPanel.tsx +226 -0
- manigent/web/frontend/src/components/sidebar/FrontDeskPanel.channels.test.tsx +582 -0
- manigent/web/frontend/src/components/sidebar/FrontDeskPanel.test.tsx +151 -0
- manigent/web/frontend/src/components/sidebar/FrontDeskPanel.tsx +454 -0
- manigent/web/frontend/src/components/sidebar/HotkeysHelp.tsx +101 -0
- manigent/web/frontend/src/components/sidebar/MessageHitRow.test.tsx +84 -0
- manigent/web/frontend/src/components/sidebar/MessageHitRow.tsx +57 -0
- manigent/web/frontend/src/components/sidebar/MyDeskRailPanel.crossHighlight.test.tsx +247 -0
- manigent/web/frontend/src/components/sidebar/MyDeskRailPanel.delete.test.tsx +273 -0
- manigent/web/frontend/src/components/sidebar/MyDeskRailPanel.tsx +351 -0
- manigent/web/frontend/src/components/sidebar/PanelShell.tsx +48 -0
- manigent/web/frontend/src/components/sidebar/ProjectItem.tsx +161 -0
- manigent/web/frontend/src/components/sidebar/ProjectRow.tsx +151 -0
- manigent/web/frontend/src/components/sidebar/ProjectsPanel.tsx +80 -0
- manigent/web/frontend/src/components/sidebar/PublicPanel.counterpart.test.tsx +85 -0
- manigent/web/frontend/src/components/sidebar/PublicPanel.hub.test.tsx +147 -0
- manigent/web/frontend/src/components/sidebar/PublicPanel.tsx +271 -0
- manigent/web/frontend/src/components/sidebar/RecencyHeader.tsx +17 -0
- manigent/web/frontend/src/components/sidebar/ScheduledPanel.tsx +58 -0
- manigent/web/frontend/src/components/sidebar/SidebarAvatar.tsx +128 -0
- manigent/web/frontend/src/components/sidebar/SidebarRail.tsx +163 -0
- manigent/web/frontend/src/components/sidebar/TeamGroup.tsx +67 -0
- manigent/web/frontend/src/components/sidebar/dmPrefill.test.ts +69 -0
- manigent/web/frontend/src/components/sidebar/dmPrefill.ts +80 -0
- manigent/web/frontend/src/components/sidebar/index.ts +18 -0
- manigent/web/frontend/src/components/sidebar/railShortcuts.ts +18 -0
- manigent/web/frontend/src/components/today/lib.test.ts +70 -0
- manigent/web/frontend/src/components/today/lib.ts +296 -0
- manigent/web/frontend/src/components/today/today.css +113 -0
- manigent/web/frontend/src/components/welcome/RunnerSetup.css +253 -0
- manigent/web/frontend/src/components/welcome/RunnerSetup.tsx +148 -0
- manigent/web/frontend/src/components/welcome/WelcomePage.css +383 -0
- manigent/web/frontend/src/components/welcome/WelcomePage.tsx +329 -0
- manigent/web/frontend/src/components/welcome/welcomeCopy.test.ts +382 -0
- manigent/web/frontend/src/components/welcome/welcomeCopy.ts +313 -0
- manigent/web/frontend/src/config/llmProviders.test.ts +161 -0
- manigent/web/frontend/src/config/llmProviders.ts +109 -0
- manigent/web/frontend/src/config/providerIds.fixture.json +13 -0
- manigent/web/frontend/src/hooks/accountNavigation.test.tsx +138 -0
- manigent/web/frontend/src/hooks/index.ts +10 -0
- manigent/web/frontend/src/hooks/useActiveWorkBootstrap.ts +86 -0
- manigent/web/frontend/src/hooks/useAgentAccess.test.tsx +30 -0
- manigent/web/frontend/src/hooks/useAgentAccess.ts +204 -0
- manigent/web/frontend/src/hooks/useAgentSampleRequests.ts +27 -0
- manigent/web/frontend/src/hooks/useAgentSearch.ts +10 -0
- manigent/web/frontend/src/hooks/useAgents.ts +46 -0
- manigent/web/frontend/src/hooks/useAnnouncements.test.ts +112 -0
- manigent/web/frontend/src/hooks/useAnnouncements.ts +100 -0
- manigent/web/frontend/src/hooks/useAssistantAgent.ts +24 -0
- manigent/web/frontend/src/hooks/useAutoResizeTextarea.ts +18 -0
- manigent/web/frontend/src/hooks/useBridgeDeliveries.test.tsx +79 -0
- manigent/web/frontend/src/hooks/useBriefTabs.ts +122 -0
- manigent/web/frontend/src/hooks/useChannelThreads.ts +69 -0
- manigent/web/frontend/src/hooks/useComposeForm.ts +80 -0
- manigent/web/frontend/src/hooks/useComputers.ts +123 -0
- manigent/web/frontend/src/hooks/useContextFirstItem.ts +118 -0
- manigent/web/frontend/src/hooks/useCreateProject.ts +78 -0
- manigent/web/frontend/src/hooks/useDebouncedValue.ts +16 -0
- manigent/web/frontend/src/hooks/useDeleteProject.ts +27 -0
- manigent/web/frontend/src/hooks/useDeskDispatch.test.tsx +170 -0
- manigent/web/frontend/src/hooks/useDeskDispatch.ts +135 -0
- manigent/web/frontend/src/hooks/useDeskReadState.test.tsx +85 -0
- manigent/web/frontend/src/hooks/useDeskReadState.ts +150 -0
- manigent/web/frontend/src/hooks/useDeskRecentlyDone.test.tsx +222 -0
- manigent/web/frontend/src/hooks/useDeskRecentlyDone.ts +225 -0
- manigent/web/frontend/src/hooks/useDeskTour.ts +37 -0
- manigent/web/frontend/src/hooks/useDeskUpdates.channelThreads.test.tsx +91 -0
- manigent/web/frontend/src/hooks/useDeskUpdates.hubThreads.test.tsx +93 -0
- manigent/web/frontend/src/hooks/useDeskUpdates.ts +353 -0
- manigent/web/frontend/src/hooks/useDisconnectIntegration.ts +23 -0
- manigent/web/frontend/src/hooks/useDmThreads.ts +99 -0
- manigent/web/frontend/src/hooks/useFileDropzone.ts +93 -0
- manigent/web/frontend/src/hooks/useFileUpload.ts +38 -0
- manigent/web/frontend/src/hooks/useFiles.ts +98 -0
- manigent/web/frontend/src/hooks/useHub.test.tsx +237 -0
- manigent/web/frontend/src/hooks/useHub.ts +502 -0
- manigent/web/frontend/src/hooks/useInstall.ts +82 -0
- manigent/web/frontend/src/hooks/useLabels.test.tsx +294 -0
- manigent/web/frontend/src/hooks/useLabels.ts +287 -0
- manigent/web/frontend/src/hooks/useLogout.ts +49 -0
- manigent/web/frontend/src/hooks/useMentionDetection.ts +90 -0
- manigent/web/frontend/src/hooks/useMessageAttachments.deskLimit.test.ts +264 -0
- manigent/web/frontend/src/hooks/useMessageAttachments.ts +283 -0
- manigent/web/frontend/src/hooks/useMessageDeepLink.test.tsx +70 -0
- manigent/web/frontend/src/hooks/useMessageDeepLink.ts +32 -0
- manigent/web/frontend/src/hooks/useMessageSearch.ts +78 -0
- manigent/web/frontend/src/hooks/useModelConfigs.ts +178 -0
- manigent/web/frontend/src/hooks/useMyAgents.ts +18 -0
- manigent/web/frontend/src/hooks/usePointerReorder.ts +270 -0
- manigent/web/frontend/src/hooks/usePrefersReducedMotion.ts +18 -0
- manigent/web/frontend/src/hooks/useProjectPlan.ts +36 -0
- manigent/web/frontend/src/hooks/useProjectReport.ts +19 -0
- manigent/web/frontend/src/hooks/useProjects.ts +104 -0
- manigent/web/frontend/src/hooks/useProjectsWithChatrooms.ts +97 -0
- manigent/web/frontend/src/hooks/usePublicRequests.ts +89 -0
- manigent/web/frontend/src/hooks/useRecentAgents.ts +38 -0
- manigent/web/frontend/src/hooks/useRenameProject.test.tsx +185 -0
- manigent/web/frontend/src/hooks/useRenameProject.ts +192 -0
- manigent/web/frontend/src/hooks/useRoomTrust.ts +56 -0
- manigent/web/frontend/src/hooks/useSharing.ts +46 -0
- manigent/web/frontend/src/hooks/useSopRecents.ts +55 -0
- manigent/web/frontend/src/hooks/useSopSchedules.ts +25 -0
- manigent/web/frontend/src/hooks/useSops.ts +99 -0
- manigent/web/frontend/src/hooks/useSwitchAccount.ts +41 -0
- manigent/web/frontend/src/hooks/useTeamGroups.ts +48 -0
- manigent/web/frontend/src/hooks/useThreadOutbox.ts +68 -0
- manigent/web/frontend/src/hooks/useTodos.add.test.tsx +89 -0
- manigent/web/frontend/src/hooks/useTodos.linkProject.test.tsx +115 -0
- manigent/web/frontend/src/hooks/useTodos.saveDraft.test.tsx +188 -0
- manigent/web/frontend/src/hooks/useTodos.ts +396 -0
- manigent/web/frontend/src/hooks/useUntrustedBodies.test.tsx +87 -0
- manigent/web/frontend/src/hooks/useUntrustedBodies.ts +51 -0
- manigent/web/frontend/src/hooks/useWebSocket.briefTab.test.tsx +148 -0
- manigent/web/frontend/src/hooks/useWebSocket.channelThreads.test.tsx +82 -0
- manigent/web/frontend/src/hooks/useWebSocket.hostSync.test.tsx +92 -0
- manigent/web/frontend/src/hooks/useWebSocket.hub.test.tsx +114 -0
- manigent/web/frontend/src/hooks/useWebSocket.labelSync.test.tsx +168 -0
- manigent/web/frontend/src/hooks/useWebSocket.plan.test.tsx +168 -0
- manigent/web/frontend/src/hooks/useWebSocket.reconnect.test.tsx +166 -0
- manigent/web/frontend/src/hooks/useWebSocket.runnerVersions.test.tsx +167 -0
- manigent/web/frontend/src/hooks/useWebSocket.ts +495 -0
- manigent/web/frontend/src/hooks/useWindowFileDropGuard.ts +33 -0
- manigent/web/frontend/src/landing.tsx +11 -0
- manigent/web/frontend/src/main.tsx +17 -0
- manigent/web/frontend/src/private-beta.tsx +10 -0
- manigent/web/frontend/src/public.tsx +42 -0
- manigent/web/frontend/src/queryClient.ts +16 -0
- manigent/web/frontend/src/stores/activeWorkStore.ts +88 -0
- manigent/web/frontend/src/stores/announcementStore.test.ts +217 -0
- manigent/web/frontend/src/stores/announcementStore.ts +169 -0
- manigent/web/frontend/src/stores/authStore.multiSession.test.ts +304 -0
- manigent/web/frontend/src/stores/authStore.test.ts +235 -0
- manigent/web/frontend/src/stores/authStore.ts +693 -0
- manigent/web/frontend/src/stores/deskLabelViewStore.test.ts +162 -0
- manigent/web/frontend/src/stores/deskLabelViewStore.ts +234 -0
- manigent/web/frontend/src/stores/deskLinkStore.ts +54 -0
- manigent/web/frontend/src/stores/deskStore.test.ts +53 -0
- manigent/web/frontend/src/stores/deskStore.ts +93 -0
- manigent/web/frontend/src/stores/heldPostsStore.ts +78 -0
- manigent/web/frontend/src/stores/mcpAuthStore.ts +52 -0
- manigent/web/frontend/src/stores/modelSelectionStore.ts +33 -0
- manigent/web/frontend/src/stores/perUserStores.ts +79 -0
- manigent/web/frontend/src/stores/runnerVersionStore.test.ts +81 -0
- manigent/web/frontend/src/stores/runnerVersionStore.ts +60 -0
- manigent/web/frontend/src/stores/skillAuthStore.ts +54 -0
- manigent/web/frontend/src/stores/switchReset.test.ts +236 -0
- manigent/web/frontend/src/stores/tokenExp.ts +32 -0
- manigent/web/frontend/src/stores/uiStore.ts +186 -0
- manigent/web/frontend/src/stores/unreadStore.ts +204 -0
- manigent/web/frontend/src/stores/unsavedGuard.ts +22 -0
- manigent/web/frontend/src/styles/design/fonts/JetBrainsMono-Latin.woff2 +0 -0
- manigent/web/frontend/src/styles/design/fonts/Nunito-Latin.woff2 +0 -0
- manigent/web/frontend/src/styles/design/fonts/Nunito-LatinExt.woff2 +0 -0
- manigent/web/frontend/src/styles/design/tokens.css +160 -0
- manigent/web/frontend/src/styles/homepage.css +242 -0
- manigent/web/frontend/src/styles/index.css +126 -0
- manigent/web/frontend/src/styles/landing.css +52 -0
- manigent/web/frontend/src/test/authFixtures.ts +154 -0
- manigent/web/frontend/src/test/fetchHarness.ts +203 -0
- manigent/web/frontend/src/test/fixtures/channelThreads.smoke.json +42 -0
- manigent/web/frontend/src/test/hubFixtures.ts +212 -0
- manigent/web/frontend/src/test/queryWrapper.tsx +9 -0
- manigent/web/frontend/src/test/suiteHygiene.test.ts +212 -0
- manigent/web/frontend/src/types/channelThreadName.test.ts +16 -0
- manigent/web/frontend/src/types/index.ts +903 -0
- manigent/web/frontend/src/utils/agentAccessCopy.test.ts +53 -0
- manigent/web/frontend/src/utils/agentAccessCopy.ts +231 -0
- manigent/web/frontend/src/utils/agentDisplay.ts +81 -0
- manigent/web/frontend/src/utils/briefSchedule.ts +25 -0
- manigent/web/frontend/src/utils/channelThreads.test.ts +109 -0
- manigent/web/frontend/src/utils/channelThreads.ts +179 -0
- manigent/web/frontend/src/utils/chatroomDisplay.ts +11 -0
- manigent/web/frontend/src/utils/deskLinks.test.ts +155 -0
- manigent/web/frontend/src/utils/deskLinks.ts +115 -0
- manigent/web/frontend/src/utils/deskRecipient.ts +29 -0
- manigent/web/frontend/src/utils/formatDate.ts +102 -0
- manigent/web/frontend/src/utils/frontDesk.ts +65 -0
- manigent/web/frontend/src/utils/hubChannelView.test.ts +178 -0
- manigent/web/frontend/src/utils/hubChannelView.ts +307 -0
- manigent/web/frontend/src/utils/hubDelivery.test.ts +105 -0
- manigent/web/frontend/src/utils/hubDelivery.ts +137 -0
- manigent/web/frontend/src/utils/hubDisplay.test.ts +157 -0
- manigent/web/frontend/src/utils/hubDisplay.ts +221 -0
- manigent/web/frontend/src/utils/hubThread.test.ts +184 -0
- manigent/web/frontend/src/utils/hubThread.ts +247 -0
- manigent/web/frontend/src/utils/labelErrors.test.ts +127 -0
- manigent/web/frontend/src/utils/labelErrors.ts +123 -0
- manigent/web/frontend/src/utils/labelView.test.ts +846 -0
- manigent/web/frontend/src/utils/labelView.ts +760 -0
- manigent/web/frontend/src/utils/legalUrls.ts +11 -0
- manigent/web/frontend/src/utils/messageSender.test.ts +32 -0
- manigent/web/frontend/src/utils/messageSender.ts +29 -0
- manigent/web/frontend/src/utils/oauthScopeCopy.ts +73 -0
- manigent/web/frontend/src/utils/personalize.ts +49 -0
- manigent/web/frontend/src/utils/reachableAgents.test.ts +36 -0
- manigent/web/frontend/src/utils/reachableAgents.ts +24 -0
- manigent/web/frontend/src/utils/recencyBuckets.ts +61 -0
- manigent/web/frontend/src/utils/roomTrust.test.ts +94 -0
- manigent/web/frontend/src/utils/roomTrust.ts +111 -0
- manigent/web/frontend/src/utils/snippetHighlight.test.ts +63 -0
- manigent/web/frontend/src/utils/snippetHighlight.ts +42 -0
- manigent/web/frontend/src/utils/sopRecipient.ts +37 -0
- manigent/web/frontend/src/utils/sopRequest.test.ts +91 -0
- manigent/web/frontend/src/utils/sopRequest.ts +68 -0
- manigent/web/frontend/src/utils/sopSchedule.ts +26 -0
- manigent/web/frontend/src/utils/sopSection.test.ts +148 -0
- manigent/web/frontend/src/utils/sopSection.ts +143 -0
- manigent/web/frontend/src/utils/textSearch.test.ts +60 -0
- manigent/web/frontend/src/utils/textSearch.ts +43 -0
- manigent/web/frontend/src/utils/thoughtPartner.ts +26 -0
- manigent/web/frontend/src/utils/threadName.test.ts +131 -0
- manigent/web/frontend/src/utils/threadName.ts +122 -0
- manigent/web/frontend/src/utils/ticketView.test.ts +296 -0
- manigent/web/frontend/src/utils/ticketView.ts +175 -0
- manigent/web/frontend/src/utils/todoAttachments.desiredState.test.ts +180 -0
- manigent/web/frontend/src/utils/todoAttachments.ts +126 -0
- manigent/web/frontend/src/utils/todoDraft.test.ts +84 -0
- manigent/web/frontend/src/utils/todoDraft.ts +46 -0
- manigent/web/frontend/src/utils/todoSearch.test.ts +82 -0
- manigent/web/frontend/src/utils/todoSearch.ts +43 -0
- manigent/web/frontend/src/utils/versionMatch.test.ts +295 -0
- manigent/web/frontend/src/utils/versionMatch.ts +245 -0
- manigent/web/frontend/src/vite-env.d.ts +1 -0
- manigent/web/frontend/tailwind.config.js +86 -0
- manigent/web/frontend/tos.html +188 -0
- manigent/web/frontend/tsconfig.dts.json +25 -0
- manigent/web/frontend/tsconfig.json +26 -0
- manigent/web/frontend/tsconfig.node.json +11 -0
- manigent/web/frontend/vite.config.ts +41 -0
- manigent/web/frontend/vitest.config.ts +16 -0
- manigent/ws_edge/app.py +514 -0
- manigent/ws_edge/auth.py +104 -0
- manigent/ws_edge/link.py +282 -0
- manigent/ws_edge/registry.py +206 -0
- manigent/ws_edge/terminal_relay.py +269 -0
- manigent_server-0.1.0.dist-info/METADATA +138 -0
- manigent_server-0.1.0.dist-info/RECORD +1004 -0
- manigent_server-0.1.0.dist-info/WHEEL +4 -0
- manigent_server-0.1.0.dist-info/entry_points.txt +2 -0
- manigent_server-0.1.0.dist-info/licenses/LICENSE +68 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Chess MCP
|
|
2
|
+
|
|
3
|
+
Deterministic chess referee backed by [`python-chess`](https://python-chess.readthedocs.io/). Install this MCP on the **gamemaster** agent of a chess match — players propose moves in chat as plain text, the gamemaster validates them through this MCP, and the state is published to the chatroom files so every participant (and any browser page) sees the same board.
|
|
4
|
+
|
|
5
|
+
## Tools
|
|
6
|
+
|
|
7
|
+
| Tool | Purpose |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `start_game(game_id, white_name, black_name)` | Create a new board at the starting position and lay out the per-game viewer directory. Returns `state_json_content` (for the gamemaster to publish into the chatroom so other agents can read) and `view_path` (absolute path to `board.html` the user opens in a browser). |
|
|
10
|
+
| `make_move(game_id, color, move)` | Apply a move. Rejects if `color` doesn't match `board.turn` or if the move is illegal. On success returns `ok`, `san`, `uci`, `fen`, `is_game_over`, `result`, `move_number`, plus `state_json_content`. On rejection returns `error`. The MCP writes `board_state.json` + `board_state.js` to the game's viewer directory automatically — the gamemaster only needs to publish `state_json_content` to the chatroom. |
|
|
11
|
+
| `post_narration(game_id, text)` | Append a narrator comment (≤1000 chars) to the game. Attaches to the most recently played ply so the live board viewer can render it alongside the move. Called by the **gamemaster** — it relays the narrator agent's chat commentary verbatim so the single per-agent MCP state directory stays consistent. |
|
|
12
|
+
| `get_state(game_id)` | Re-read the canonical state for a game (FEN, PGN, active color, move history, narration, result). |
|
|
13
|
+
| `get_legal_moves(game_id, from_square=None)` | List legal SAN moves in the current position, optionally filtered by source square. |
|
|
14
|
+
| `resign(game_id, color)` | End the game by resignation. |
|
|
15
|
+
| `list_games()` | Enumerate all game ids with state files in this MCP's state directory. |
|
|
16
|
+
|
|
17
|
+
## State directory
|
|
18
|
+
|
|
19
|
+
The MCP resolves `MANIGENT_CHESS_STATE_DIR` (injected by the Manigent runner — it points at `{agent_dir}/mcp-hub/servers/chess/`). Per-game files live at:
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
{state_dir}/games/{game_id}/
|
|
23
|
+
board_state.json # canonical state (MCP reads+writes this)
|
|
24
|
+
board_state.js # wrapper the browser viewer loads on every tick
|
|
25
|
+
board.html # static viewer page (written once on start_game)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The MCP writes `board_state.json` + `board_state.js` on every `start_game`, `make_move`, `resign`, and `post_narration` — narration entries live inside `board_state.json` under a `narration: []` list, so the viewer renders them on the same 1.5 s tick as move updates. The MCP does not push anything into the chatroom — the gamemaster is expected to forward `state_json_content` as `board_state.json` into the chatroom so the player agents (white, black, narrator) can read the position.
|
|
29
|
+
|
|
30
|
+
## Board viewer
|
|
31
|
+
|
|
32
|
+
`start_game` writes a self-contained HTML page to `{state_dir}/games/{game_id}/board.html` and returns its absolute path in `view_path`. The gamemaster forwards that path to the user, who opens it in any browser via `file://` — no HTTP server required.
|
|
33
|
+
|
|
34
|
+
The viewer polls `./board_state.js` every 1.5 s by appending a cache-busted `<script>` tag. We use `<script>` rather than `fetch()` because Chrome blocks `fetch()` from `file://` origins. The `board_state.js` file is a 1-line `window.__CHESS_STATE = {...};` wrapper that the MCP rewrites atomically on every move.
|
|
35
|
+
|
|
36
|
+
## Dependencies
|
|
37
|
+
|
|
38
|
+
`python-chess>=1.10` (ships with the `manigent` runner package).
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"name": "chess",
|
|
4
|
+
"description": "Deterministic chess referee: start games, validate moves, track state. Used by the gamemaster agent in the chess template.",
|
|
5
|
+
"tags": ["game", "chess", "turn-based"],
|
|
6
|
+
"version": "1.0.0",
|
|
7
|
+
"attribution": "Built on python-chess"
|
|
8
|
+
}
|
|
9
|
+
]
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: brief
|
|
3
|
+
description: >
|
|
4
|
+
Publishing protocol for My Desk's "Scheduled briefings". INVOKE when ANY of:
|
|
5
|
+
(1) a message contains `<!-- manigent:brief-tab-trigger:<slug> -->`;
|
|
6
|
+
(2) the user or coordinator asks you to publish, refresh, or update a
|
|
7
|
+
"briefing" / "brief tab" / a tile on My Desk.
|
|
8
|
+
Gather the data, write ONE complete HTML document, and shell
|
|
9
|
+
`manigent brief upsert-tab <slug> --html briefing.html` to upload. My Desk
|
|
10
|
+
composes all uploaded tabs into the Scheduled-briefings strip — one tile per
|
|
11
|
+
slug — and each tile tracks its own last-refreshed-at timestamp.
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Brief — tab publishing protocol
|
|
15
|
+
|
|
16
|
+
Any agent the user trusts can populate a briefing tile on My Desk on
|
|
17
|
+
its own schedule. This skill is the contract: it tells you what to
|
|
18
|
+
write, how it is displayed, and how to upload.
|
|
19
|
+
|
|
20
|
+
A briefing is **one complete HTML document that you own entirely**. The
|
|
21
|
+
desk imposes no typography, no colour, no layout — it puts your document
|
|
22
|
+
in an isolated frame and sizes the frame around it. Design it.
|
|
23
|
+
|
|
24
|
+
You publish ONE tab per invocation. To refresh, re-run with the same
|
|
25
|
+
slug — overwrite is the contract (the server keeps no history, the desk
|
|
26
|
+
re-renders in place).
|
|
27
|
+
|
|
28
|
+
## § When invoked
|
|
29
|
+
|
|
30
|
+
- **Marker**: a message in the current chatroom contains
|
|
31
|
+
`<!-- manigent:brief-tab-trigger:<slug> -->` — publish that exact
|
|
32
|
+
slug. This is the path scheduled refreshes take: a per-tab cron
|
|
33
|
+
(typically set up by the user's assistant from their DM) posts the
|
|
34
|
+
marker into your DM, and the skill fires. The message body after
|
|
35
|
+
the marker is the SOP — source, criteria, output shape; follow it.
|
|
36
|
+
- **Direct request**: the user / coordinator asks you to publish,
|
|
37
|
+
refresh, or update a briefing. Resolve the briefing key per
|
|
38
|
+
"§ Briefing key" below (prefer a name the user gave; else derive a
|
|
39
|
+
candidate and confirm it before publishing) plus the intent from the
|
|
40
|
+
chat; ask for clarification if the intent is ambiguous. Never invent
|
|
41
|
+
a throwaway slug. If the request includes a recurring refresh and you
|
|
42
|
+
have no way to create schedules, publish the tab now and suggest the
|
|
43
|
+
user ask their assistant to set up the scheduled refresh.
|
|
44
|
+
|
|
45
|
+
If the request mentions multiple tabs, publish them one at a time —
|
|
46
|
+
one `manigent brief upsert-tab` invocation per slug. Don't try to
|
|
47
|
+
batch.
|
|
48
|
+
|
|
49
|
+
## § Briefing key
|
|
50
|
+
|
|
51
|
+
The **slug is the briefing key** — a stable, user-owned identifier that
|
|
52
|
+
publish and every later refresh share, so they upsert ONE tile instead
|
|
53
|
+
of minting duplicates. Resolve it by this precedence:
|
|
54
|
+
|
|
55
|
+
1. **Marker wins.** If the invoking message carries
|
|
56
|
+
`<!-- manigent:brief-tab-trigger:<slug> -->`, that slug IS the key.
|
|
57
|
+
Use it verbatim — never re-derive it.
|
|
58
|
+
2. **User-named.** If the user gave a name ("call it `wine`", "the wine
|
|
59
|
+
briefing"), slugify that name (rule below) → the key.
|
|
60
|
+
3. **Derive & confirm.** If neither, derive a candidate from the tile
|
|
61
|
+
title and confirm it with the user before publishing. Never silently
|
|
62
|
+
invent a throwaway slug.
|
|
63
|
+
|
|
64
|
+
**Deterministic slugify** — the identical rule wherever a briefing key
|
|
65
|
+
is made (the `author-brief-tab` skill uses the same one, so a given
|
|
66
|
+
name always maps to the same key):
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
lowercase → trim → replace each run of [^a-z0-9] with a single "-"
|
|
70
|
+
→ strip leading/trailing "-" → truncate to ≤ 80 chars.
|
|
71
|
+
e.g. "Wine Briefing" → wine-briefing (every time)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Reuse before minting.** Before you publish, run `manigent brief
|
|
75
|
+
list-tabs`. If an existing tab's slug or title matches the user's name,
|
|
76
|
+
reuse THAT slug (upsert in place) instead of coining a new one — this
|
|
77
|
+
is what keeps a one-off publish and a later scheduled refresh on the
|
|
78
|
+
same tile.
|
|
79
|
+
|
|
80
|
+
**Echo the key.** State the resolved key in your confirmation line so
|
|
81
|
+
it is referenceable next time (see § Publish step 4).
|
|
82
|
+
|
|
83
|
+
## § The artifact
|
|
84
|
+
|
|
85
|
+
You write THREE values per tab:
|
|
86
|
+
|
|
87
|
+
- **slug** — the briefing KEY (see § Briefing key). A user-supplied
|
|
88
|
+
name, slugified deterministically; `[a-z0-9_-]+`, ≤ 80 chars.
|
|
89
|
+
Re-publishing the same key overwrites the previous artifact in place.
|
|
90
|
+
- **title** — the tile label shown in the strip. Defaults to slug if
|
|
91
|
+
blank. This is the label the desk uses; your document's own `<title>`
|
|
92
|
+
is ignored, so there is exactly one source of truth for the name.
|
|
93
|
+
- **html** — ONE complete HTML document: `<!doctype html>`, `<html>`,
|
|
94
|
+
`<head>`, `<body>`. UTF-8. **≤ 262144 bytes (256 KB).**
|
|
95
|
+
|
|
96
|
+
The document is stored and served **byte for byte as you wrote it**. The
|
|
97
|
+
server never parses it, never sanitizes it, never reformats it and never
|
|
98
|
+
injects anything into it. What you write is what renders.
|
|
99
|
+
|
|
100
|
+
That also means nothing will fix your document for you. It is a whole
|
|
101
|
+
page, not a fragment — a fragment is not wrapped, it is rendered as-is.
|
|
102
|
+
|
|
103
|
+
**The size limit is 262144 bytes (256 KB)**, measured on your document's
|
|
104
|
+
own UTF-8 bytes. `manigent brief upsert-tab` checks it locally, before
|
|
105
|
+
it uploads, and names both the limit and your actual size — so you fix
|
|
106
|
+
the file where you wrote it instead of learning the number from a failed
|
|
107
|
+
upload.
|
|
108
|
+
|
|
109
|
+
## § Worked example
|
|
110
|
+
|
|
111
|
+
Copy this and edit it. It is a complete, valid briefing: self-contained,
|
|
112
|
+
no network, its own typography, a hand-written bar chart and a sparkline
|
|
113
|
+
in inline SVG, a data table, and two source links.
|
|
114
|
+
|
|
115
|
+
Charts are just `<rect>` and `<polyline>` elements with coordinates you
|
|
116
|
+
compute from your data. That is the whole technique, and it is enough
|
|
117
|
+
for most briefings — no charting library, nothing to load, nothing that
|
|
118
|
+
can fail to arrive.
|
|
119
|
+
|
|
120
|
+
```html
|
|
121
|
+
<!doctype html>
|
|
122
|
+
<html lang="en">
|
|
123
|
+
<head>
|
|
124
|
+
<meta charset="utf-8">
|
|
125
|
+
<title>Wine inventory</title>
|
|
126
|
+
<style>
|
|
127
|
+
:root { --ink:#1b1b1b; --muted:#6f6a64; --rule:#e6e2dc; --accent:#7a2e2e; }
|
|
128
|
+
body { margin:0; padding:26px 30px 32px; background:#fbfaf8; color:var(--ink);
|
|
129
|
+
font:16px/1.55 "Iowan Old Style","Palatino Linotype",Georgia,serif; }
|
|
130
|
+
h1 { margin:0 0 3px; font-size:26px; letter-spacing:-.01em; }
|
|
131
|
+
.dateline { margin:0 0 20px; font-size:12px; letter-spacing:.09em;
|
|
132
|
+
text-transform:uppercase; color:var(--muted); }
|
|
133
|
+
h2 { margin:26px 0 10px; padding-bottom:6px; font-size:12px;
|
|
134
|
+
letter-spacing:.09em; text-transform:uppercase; color:var(--muted);
|
|
135
|
+
border-bottom:1px solid var(--rule); }
|
|
136
|
+
table { width:100%; border-collapse:collapse; font-size:15px; }
|
|
137
|
+
th { padding:0 0 6px; font-size:11px; font-weight:600; text-align:left;
|
|
138
|
+
letter-spacing:.07em; text-transform:uppercase; color:var(--muted); }
|
|
139
|
+
td { padding:7px 0; border-top:1px solid var(--rule); }
|
|
140
|
+
td.num { text-align:right; font-variant-numeric:tabular-nums; }
|
|
141
|
+
.low { color:var(--accent); font-weight:600; }
|
|
142
|
+
a { color:var(--accent); }
|
|
143
|
+
footer { margin-top:26px; padding-top:11px; border-top:1px solid var(--rule);
|
|
144
|
+
font-size:13px; color:var(--muted); }
|
|
145
|
+
</style>
|
|
146
|
+
</head>
|
|
147
|
+
<body>
|
|
148
|
+
|
|
149
|
+
<h1>Wine inventory</h1>
|
|
150
|
+
<p class="dateline">Chelsea · week of 8 September</p>
|
|
151
|
+
|
|
152
|
+
<h2>Cases on hand</h2>
|
|
153
|
+
<!-- Bar chart. Baseline y=140, plot height 120px, scale max 40 cases,
|
|
154
|
+
so each bar is height = cases / 40 * 120 and y = 140 - height. -->
|
|
155
|
+
<svg viewBox="0 0 420 172" width="420" height="172" role="img"
|
|
156
|
+
aria-label="Cases on hand by varietal">
|
|
157
|
+
<g font-size="10" fill="#9b948c" text-anchor="end">
|
|
158
|
+
<text x="30" y="143">0</text>
|
|
159
|
+
<text x="30" y="83">20</text>
|
|
160
|
+
<text x="30" y="23">40</text>
|
|
161
|
+
</g>
|
|
162
|
+
<g stroke="#e6e2dc">
|
|
163
|
+
<line x1="36" y1="140" x2="412" y2="140"/>
|
|
164
|
+
<line x1="36" y1="80" x2="412" y2="80"/>
|
|
165
|
+
<line x1="36" y1="20" x2="412" y2="20"/>
|
|
166
|
+
</g>
|
|
167
|
+
<g fill="#7a2e2e">
|
|
168
|
+
<rect x="44" y="47" width="48" height="93"/>
|
|
169
|
+
<rect x="120" y="68" width="48" height="72"/>
|
|
170
|
+
<rect x="196" y="86" width="48" height="54"/>
|
|
171
|
+
<rect x="272" y="104" width="48" height="36"/>
|
|
172
|
+
<rect x="348" y="119" width="48" height="21"/>
|
|
173
|
+
</g>
|
|
174
|
+
<g font-size="11" fill="#1b1b1b" text-anchor="middle">
|
|
175
|
+
<text x="68" y="41">31</text>
|
|
176
|
+
<text x="144" y="62">24</text>
|
|
177
|
+
<text x="220" y="80">18</text>
|
|
178
|
+
<text x="296" y="98">12</text>
|
|
179
|
+
<text x="372" y="113">7</text>
|
|
180
|
+
</g>
|
|
181
|
+
<g font-size="11" fill="#6f6a64" text-anchor="middle">
|
|
182
|
+
<text x="68" y="157">Riesling</text>
|
|
183
|
+
<text x="144" y="157">Chenin</text>
|
|
184
|
+
<text x="220" y="157">Gamay</text>
|
|
185
|
+
<text x="296" y="157">Nebbiolo</text>
|
|
186
|
+
<text x="372" y="157">Cava</text>
|
|
187
|
+
</g>
|
|
188
|
+
</svg>
|
|
189
|
+
|
|
190
|
+
<h2>Below par</h2>
|
|
191
|
+
<table>
|
|
192
|
+
<thead>
|
|
193
|
+
<tr><th>Wine</th><th>Supplier</th>
|
|
194
|
+
<th class="num">On hand</th><th class="num">Par</th></tr>
|
|
195
|
+
</thead>
|
|
196
|
+
<tbody>
|
|
197
|
+
<tr><td>Nebbiolo, Produttori 2021</td><td>Vine Street</td>
|
|
198
|
+
<td class="num low">12</td><td class="num">24</td></tr>
|
|
199
|
+
<tr><td>Cava Brut Nature, Recaredo</td><td>Iberia Imports</td>
|
|
200
|
+
<td class="num low">7</td><td class="num">18</td></tr>
|
|
201
|
+
<tr><td>Gamay, Foillard Morgon</td><td>Vine Street</td>
|
|
202
|
+
<td class="num">18</td><td class="num">20</td></tr>
|
|
203
|
+
</tbody>
|
|
204
|
+
</table>
|
|
205
|
+
|
|
206
|
+
<h2>Sell-through, last 12 weeks</h2>
|
|
207
|
+
<!-- Sparkline. 12 points; x = 5 + i * 10, y = 24 - (v - min) / range * 20. -->
|
|
208
|
+
<svg viewBox="0 0 120 28" width="120" height="28" role="img"
|
|
209
|
+
aria-label="Weekly cases sold, trending up">
|
|
210
|
+
<polyline fill="none" stroke="#7a2e2e" stroke-width="1.5"
|
|
211
|
+
points="5,24 15,20 25,22 35,16 45,18 55,14
|
|
212
|
+
65,16 75,10 85,12 95,8 105,10 115,4"/>
|
|
213
|
+
<circle cx="115" cy="4" r="2.5" fill="#7a2e2e"/>
|
|
214
|
+
</svg>
|
|
215
|
+
<p style="margin:6px 0 0;font-size:14px;">14 cases last week, up from 4.</p>
|
|
216
|
+
|
|
217
|
+
<footer>
|
|
218
|
+
Sources:
|
|
219
|
+
<a href="https://www.chus.wine/ics/inventories/chelsea"
|
|
220
|
+
target="_blank" rel="noopener noreferrer">inventory count</a> ·
|
|
221
|
+
<a href="https://www.chus.wine/ics/orders"
|
|
222
|
+
target="_blank" rel="noopener noreferrer">order history</a>.
|
|
223
|
+
Counted 8 September.
|
|
224
|
+
</footer>
|
|
225
|
+
|
|
226
|
+
</body>
|
|
227
|
+
</html>
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**Loading things from the internet is allowed** — a stylesheet, a font,
|
|
231
|
+
a script, an image, from any host. Two facts to weigh before you do:
|
|
232
|
+
|
|
233
|
+
1. A remote asset that fails to arrive **fails soft and invisibly**. The
|
|
234
|
+
desk cannot see inside your frame, so nothing reports the failure
|
|
235
|
+
anywhere: your briefing simply renders wrong, and nobody can tell
|
|
236
|
+
why. Self-contained is the safer default.
|
|
237
|
+
2. The 256 KB cap covers only your document's own bytes, so a
|
|
238
|
+
CDN-loaded charting library costs you nothing against it.
|
|
239
|
+
|
|
240
|
+
## § Sizing
|
|
241
|
+
|
|
242
|
+
You do nothing. The desk measures your document and sizes the
|
|
243
|
+
frame around it. Do not post a height.
|
|
244
|
+
|
|
245
|
+
Your document must contain a `<head>`. The desk inserts one
|
|
246
|
+
`<script>` as its first child — do not assume you are the
|
|
247
|
+
first script on the page.
|
|
248
|
+
|
|
249
|
+
Three things silently break the measurement. Nothing warns you;
|
|
250
|
+
the desk cannot see inside your document to diagnose any of them:
|
|
251
|
+
|
|
252
|
+
1. `html { height: 100% }` — do not set it.
|
|
253
|
+
2. `body { overflow: hidden }` — do not set it.
|
|
254
|
+
3. Content positioned out of the body's box is NOT measured.
|
|
255
|
+
Height comes from the bottom of `<body>`'s own box, so a
|
|
256
|
+
`position: absolute` child extending past it is not counted
|
|
257
|
+
and its tail is clipped. Keep content in normal flow.
|
|
258
|
+
|
|
259
|
+
## § Isolation limits
|
|
260
|
+
|
|
261
|
+
Your document runs in an isolated frame with its own opaque origin.
|
|
262
|
+
Everything below is settled — you don't have to reason about it.
|
|
263
|
+
|
|
264
|
+
| What you want | Works? | What to do instead / know |
|
|
265
|
+
| --- | --- | --- |
|
|
266
|
+
| `<style>`, `<script>`, inline SVG, fonts | **yes** | This is the whole point. Style it however you like. |
|
|
267
|
+
| `fetch()` a public API | **yes** | There is no same-origin to reach, so treat your document as offline-capable-or-broken. |
|
|
268
|
+
| `<script src="https://…">` | **yes** | Supported, not merely tolerated. Any host. |
|
|
269
|
+
| a link the user clicks | **only with `target`** | Every link MUST carry `target="_blank" rel="noopener noreferrer"`. A link without `target="_blank"` does nothing at all — no navigation, no error, no clue. |
|
|
270
|
+
| `localStorage` / `document.cookie` | **NO** | `localStorage` and `document.cookie` **throw `SecurityError`** — they do not return null. An unguarded copy-pasted snippet that touches either one hard-crashes your whole document. |
|
|
271
|
+
| reading the desk, the user's session, or another briefing | **NO** | The frame is a separate opaque origin. There is nothing there to reach. Don't try. |
|
|
272
|
+
| navigating the whole app away | **NO** | Top-level navigation is off. |
|
|
273
|
+
|
|
274
|
+
## § Publish
|
|
275
|
+
|
|
276
|
+
1. Sketch what the briefing should show, then gather the data. Read from
|
|
277
|
+
your sources / data files / chat history — whatever is the
|
|
278
|
+
authoritative place for the kind of data your tab shows.
|
|
279
|
+
2. Write the complete document to `briefing.html` in your sandbox
|
|
280
|
+
working directory with the `Write` tool. Keep it ≤ 262144 bytes
|
|
281
|
+
(256 KB).
|
|
282
|
+
3. Shell:
|
|
283
|
+
```bash
|
|
284
|
+
manigent brief upsert-tab <slug> \
|
|
285
|
+
--title "<Tile label>" \
|
|
286
|
+
--html briefing.html
|
|
287
|
+
```
|
|
288
|
+
The CLI resolves your agent id + token + server URL from the env
|
|
289
|
+
variables the runner injects (`MANIGENT_AGENT_ID`,
|
|
290
|
+
`MANIGENT_AGENT_TOKEN`, `MANIGENT_SERVER_URL`). No `--token` flag
|
|
291
|
+
needed.
|
|
292
|
+
4. Reply ONE line in `user-communication`:
|
|
293
|
+
`Briefing '<slug>' refreshed.` Don't summarize the data — the tile
|
|
294
|
+
IS the deliverable.
|
|
295
|
+
|
|
296
|
+
To check what's already on the desk (e.g., to avoid clobbering a peer
|
|
297
|
+
agent's slug):
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
manigent brief list-tabs
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
To remove a tab you own:
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
manigent brief delete-tab <slug>
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
(Only the publishing agent can delete its own tab; the owning user can
|
|
310
|
+
delete any tab through the desk UI.) If a DM from the user or their
|
|
311
|
+
assistant asks you to remove a briefing you published, run the delete and
|
|
312
|
+
confirm in one line: `Briefing '<slug>' deleted.`
|
|
313
|
+
|
|
314
|
+
## § What NOT to do
|
|
315
|
+
|
|
316
|
+
- Don't upload a fragment. `html` is a whole document — `<!doctype html>`
|
|
317
|
+
through `</html>`. Nothing wraps a fragment for you; it renders as-is,
|
|
318
|
+
usually badly.
|
|
319
|
+
- Don't touch `localStorage` or `document.cookie`, and don't paste a
|
|
320
|
+
snippet that does. They throw, and the throw takes your whole document
|
|
321
|
+
with it.
|
|
322
|
+
- Don't write a link without `target="_blank" rel="noopener noreferrer"`.
|
|
323
|
+
It will look fine and do nothing.
|
|
324
|
+
- Don't set `html { height: 100% }` or `body { overflow: hidden }`, and
|
|
325
|
+
don't position your content outside the body's box. All three break
|
|
326
|
+
the frame's height silently (see § Sizing).
|
|
327
|
+
- Don't post a height, and don't try to message the desk. Sizing is
|
|
328
|
+
handled for you.
|
|
329
|
+
- Don't write multiple tabs per invocation. One slug per
|
|
330
|
+
`upsert-tab` call. To publish N tabs, loop the CLI N times.
|
|
331
|
+
- Don't try to fetch your prior tab and merge — overwrite is the
|
|
332
|
+
contract. Each publish is the complete current state of the tab.
|
|
333
|
+
- Don't write to chat in addition to publishing. The tile is the
|
|
334
|
+
deliverable; the only chat output is your one-line confirmation in
|
|
335
|
+
`user-communication`.
|
|
336
|
+
- Don't include sensitive secrets in the document. It is stored
|
|
337
|
+
server-side and delivered to the user's browser as written. The user
|
|
338
|
+
is the only intended viewer, but the artifact lives in the server's
|
|
339
|
+
data dir.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: broaden-options
|
|
3
|
+
description: >
|
|
4
|
+
Widen the options when the user is stuck, then narrow to the 2-3 worth
|
|
5
|
+
testing. INVOKE when ANY of: (1) the user says "I'm stuck", "what are my
|
|
6
|
+
options", "brainstorm with me", "help me see other ways to do this";
|
|
7
|
+
(2) the user is choosing between two options that look alike, or only has
|
|
8
|
+
one; (3) a grill-me brief is done and the user wants options for it.
|
|
9
|
+
Asks for the user's own ideas first and labels every idea [yours] or
|
|
10
|
+
[mine]; diagnoses why they are stuck and generates with one technique at a
|
|
11
|
+
time, without judging; always adds the baselines do nothing / do both /
|
|
12
|
+
one then the other; stops generating when ideas repeat; then screens down
|
|
13
|
+
to 2-3 options on impact, effort and reversibility, each with its cheapest
|
|
14
|
+
test. If the decision the options serve is unclear, switches to grill-me
|
|
15
|
+
before generating.
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Broaden options — widen, then narrow
|
|
19
|
+
|
|
20
|
+
Being stuck is rarely a shortage of intelligence. It is usually one of four
|
|
21
|
+
things: too few ideas, ideas that are all the same idea, fear of picking
|
|
22
|
+
wrong, or being too close to see. This skill names which one, widens with a
|
|
23
|
+
technique that fits, and then narrows hard — the user leaves with 2–3
|
|
24
|
+
options and a cheap way to test each, not a list of 30.
|
|
25
|
+
|
|
26
|
+
## § Step 0 — Is the decision clear?
|
|
27
|
+
|
|
28
|
+
Before generating anything, check that you can state, in one sentence, the
|
|
29
|
+
decision these options are meant to serve and what "better" means for it.
|
|
30
|
+
|
|
31
|
+
- If a `grill-me` brief exists in this conversation, use its **Decision**
|
|
32
|
+
and **Real question**. The decision is clear.
|
|
33
|
+
- If you cannot state the decision in one sentence, or the user's options
|
|
34
|
+
answer different questions ("hire a salesperson" vs "rewrite the
|
|
35
|
+
homepage" vs "raise prices"), the decision is unclear. **Switch to
|
|
36
|
+
`grill-me` now**, before generating a single option: tell the user in one
|
|
37
|
+
line that you will first pin down what they are deciding, then run
|
|
38
|
+
`grill-me` in full. Come back to Step 1 when its brief is written.
|
|
39
|
+
|
|
40
|
+
Generating options for an unclear decision produces a long list that
|
|
41
|
+
serves nothing. Do not skip this check to be helpful.
|
|
42
|
+
|
|
43
|
+
## § Step 1 — Ask for the user's ideas first
|
|
44
|
+
|
|
45
|
+
Ask once: "Before I add anything — what options have you already
|
|
46
|
+
considered, including ones you've ruled out?" Wait for the answer. Do not
|
|
47
|
+
seed it with your own ideas.
|
|
48
|
+
|
|
49
|
+
From here on, **label every idea** with where it came from:
|
|
50
|
+
|
|
51
|
+
- `[yours]` — the user said it (including ones they ruled out).
|
|
52
|
+
- `[mine]` — you proposed it.
|
|
53
|
+
|
|
54
|
+
Keep the labels on every list you show, through to the final shortlist.
|
|
55
|
+
|
|
56
|
+
## § Step 2 — Diagnose why they are stuck
|
|
57
|
+
|
|
58
|
+
From their answer, pick ONE of the four, and say which in one line ("Your
|
|
59
|
+
three options are all versions of 'hire someone' — let's find ones that
|
|
60
|
+
aren't"):
|
|
61
|
+
|
|
62
|
+
| Why stuck | Sign | Technique |
|
|
63
|
+
|---|---|---|
|
|
64
|
+
| **Too few ideas** | one or two options, or none | Analogies (how would a different industry / a competitor / a 10x-funded version solve this?) and perspective shifts (the customer, the newest hire, someone with no budget) |
|
|
65
|
+
| **Options all alike** | several options that share the same premise | List the assumptions all the options share, then flip each one and ask what option the flipped assumption produces |
|
|
66
|
+
| **Afraid of risk** | they have options but won't commit; "what if it's wrong" | Pre-mortem (it's a year later and it failed — why?) and the smallest reversible step toward each option |
|
|
67
|
+
| **Too close to it** | long history, emotional language, "we've always…" | Outsider perspective: what would a smart newcomer, an advisor with no stake, or their successor do? |
|
|
68
|
+
|
|
69
|
+
## § Step 3 — Generate, one technique at a time, no judging
|
|
70
|
+
|
|
71
|
+
- Use **one technique per round**. Name it at the top of the round. Only
|
|
72
|
+
move to a second technique once the first stops producing new ideas.
|
|
73
|
+
- **No judging while generating.** No "but this is expensive", no ranking,
|
|
74
|
+
no pros and cons, no reactions to the user's ideas beyond recording them.
|
|
75
|
+
Every idea is a short line: `- [mine] <idea>`.
|
|
76
|
+
- **Always include the three baselines**, labelled `[mine]` unless the user
|
|
77
|
+
already said them:
|
|
78
|
+
- **Do nothing** — what happens if they decide not to decide.
|
|
79
|
+
- **Do both** — the two leading options at once, at smaller scale each.
|
|
80
|
+
- **One then the other** — sequence them, cheapest or most reversible first.
|
|
81
|
+
- Invite the user to add after each round, in one line.
|
|
82
|
+
|
|
83
|
+
### When to stop generating
|
|
84
|
+
|
|
85
|
+
Stop when ideas **repeat**: a round produces only variants of ideas already
|
|
86
|
+
on the list, or the user's additions are restatements. Say so ("New ideas
|
|
87
|
+
are now repeats of earlier ones — time to narrow"). Do not keep generating
|
|
88
|
+
to hit a number.
|
|
89
|
+
|
|
90
|
+
## § Step 4 — Narrow to 2–3
|
|
91
|
+
|
|
92
|
+
Now judge. Screen every idea on three criteria, briefly, and keep only 2–3:
|
|
93
|
+
|
|
94
|
+
- **Impact** — how much would it move the decision's real question?
|
|
95
|
+
- **Effort** — time, money and attention to try it.
|
|
96
|
+
- **Reversibility** — how cheaply can they back out if it's wrong?
|
|
97
|
+
|
|
98
|
+
Prefer high-impact, reversible options; keep at most one hard-to-reverse
|
|
99
|
+
option, and only if its impact clearly dominates.
|
|
100
|
+
|
|
101
|
+
Present the shortlist in this shape:
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
1. <option> [yours|mine]
|
|
105
|
+
Impact: <high/med/low — one phrase> Effort: <…> Reversibility: <…>
|
|
106
|
+
Cheapest test: <the smallest thing they could do this week that would show whether it works, and what result would count as "it works">
|
|
107
|
+
2. …
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Every option on the shortlist has a **cheapest test** — a concrete action
|
|
111
|
+
with an observable result, not "research it more". If you cannot name one,
|
|
112
|
+
the option is not ready for the shortlist.
|
|
113
|
+
|
|
114
|
+
Close with one line naming which option you would test first and why. The
|
|
115
|
+
choice stays the user's.
|
|
116
|
+
|
|
117
|
+
## § Inside a project
|
|
118
|
+
|
|
119
|
+
If you are a project participant rather than in a DM with the user, do not
|
|
120
|
+
ask the user for their ideas or questions — treat the project request and
|
|
121
|
+
`shared-context` as the user's ideas (`[yours]`), and run Steps 2–4 in a
|
|
122
|
+
single reply. If the decision is unclear there, say so as an objection to
|
|
123
|
+
the coordinator instead of switching to an interview.
|
|
124
|
+
|
|
125
|
+
## § Anti-patterns
|
|
126
|
+
|
|
127
|
+
- Proposing ideas before hearing the user's.
|
|
128
|
+
- Dropping the `[yours]` / `[mine]` labels anywhere.
|
|
129
|
+
- Mixing techniques in one round, or picking one without saying why stuck.
|
|
130
|
+
- Evaluating ideas while generating them.
|
|
131
|
+
- Forgetting a baseline — do nothing, do both, one then the other.
|
|
132
|
+
- Generating for an unclear decision instead of switching to `grill-me`.
|
|
133
|
+
- A shortlist of more than 3, or an option without a cheapest test.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: calendar
|
|
3
|
+
description: >
|
|
4
|
+
CalDAV calendar (list / events / create / update / delete). Provider-agnostic
|
|
5
|
+
— iCloud / Fastmail / Nextcloud / Radicale / SOGo / mailcow. Invoked via
|
|
6
|
+
`manigent caldav {list,list-events,get,create,update,delete}`. No OAuth —
|
|
7
|
+
credentials via `${VAR}` env vars in
|
|
8
|
+
`$MANIGENT_AGENT_DIR/skill-hub/configs/calendar.json`.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# /manigent:calendar
|
|
12
|
+
|
|
13
|
+
CalDAV calendar via the `manigent caldav` CLI.
|
|
14
|
+
|
|
15
|
+
## Step 0 — Preflight
|
|
16
|
+
|
|
17
|
+
Config at `$MANIGENT_AGENT_DIR/skill-hub/configs/calendar.json` with a
|
|
18
|
+
`caldav` block (url/username/password, env vars `${VAR}`). Missing config ⇒
|
|
19
|
+
reply "Open Agent Settings → Skills → calendar → Configure first."
|
|
20
|
+
|
|
21
|
+
## Step 1 — Pick the subcommand
|
|
22
|
+
|
|
23
|
+
| Intent | Command |
|
|
24
|
+
|---|---|
|
|
25
|
+
| List calendars | `manigent caldav list` |
|
|
26
|
+
| Events in range | `manigent caldav list-events --time-min ... --time-max ...` |
|
|
27
|
+
| Get one | `manigent caldav get <UID>` |
|
|
28
|
+
| Create | `manigent caldav create --summary "..." --start ... --end ... [--attendees a,b]` |
|
|
29
|
+
| Update | `manigent caldav update <UID> --summary "..."` |
|
|
30
|
+
| Delete | `manigent caldav delete <UID>` |
|
|
31
|
+
|
|
32
|
+
## Step 2 — Calendar selection
|
|
33
|
+
|
|
34
|
+
When `--calendar-url` is omitted, subcommands search every calendar named in
|
|
35
|
+
the config's `default_calendars` list (all calendars if that list is empty);
|
|
36
|
+
`create` writes to the first of them.
|
|
37
|
+
|
|
38
|
+
## Step 3 — Fetching events on a schedule
|
|
39
|
+
|
|
40
|
+
These commands only fetch (and edit). If your SOP has you pull events
|
|
41
|
+
regularly, where you store them, how you deduplicate them (the iCalendar `uid`
|
|
42
|
+
is stable; `last_modified` tells you when it changed), and how you track what
|
|
43
|
+
you already fetched (e.g. a rolling `--time-min` / `--time-max` window) is up
|
|
44
|
+
to that SOP.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
// CalDAV credentials. Defaulted to Fastmail.
|
|
3
|
+
//
|
|
4
|
+
// Setup — export CALENDAR_USERNAME and CALENDAR_PASSWORD on the runner,
|
|
5
|
+
// then point caldav.url at your provider:
|
|
6
|
+
//
|
|
7
|
+
// Fastmail: https://caldav.fastmail.com/dav/calendars/user/<email>/
|
|
8
|
+
// (app password from https://www.fastmail.com/settings/security/devicepw)
|
|
9
|
+
// iCloud: https://caldav.icloud.com
|
|
10
|
+
// (app-specific password from https://appleid.apple.com/account/manage)
|
|
11
|
+
// Nextcloud: https://<your-host>/remote.php/dav/calendars/<username>/
|
|
12
|
+
// Radicale: http://<your-host>:5232/<username>/
|
|
13
|
+
//
|
|
14
|
+
// default_calendars: CalDAV display names (case-insensitive) that
|
|
15
|
+
// list-events / get / update / delete search — and the first of which
|
|
16
|
+
// create writes to — when no --calendar-url is passed. Empty ⇒ every
|
|
17
|
+
// calendar on the account. Run `manigent caldav list` to see the names.
|
|
18
|
+
|
|
19
|
+
"caldav": {
|
|
20
|
+
"url": "https://caldav.fastmail.com/dav/calendars/user/me@example.com/",
|
|
21
|
+
"username": "${CALENDAR_USERNAME}",
|
|
22
|
+
"password": "${CALENDAR_PASSWORD}"
|
|
23
|
+
},
|
|
24
|
+
"default_calendars": ["Personal"]
|
|
25
|
+
}
|