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,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gmail
|
|
3
|
+
description: >
|
|
4
|
+
Read, search, send, and archive Gmail messages. Invoked via Bash subcommands
|
|
5
|
+
(`manigent gmail search|get|labels|attachment|send|archive|auth|revoke`); the
|
|
6
|
+
token resolves from `$MANIGENT_AGENT_DIR/skill-hub/state/gmail/`. For
|
|
7
|
+
requests like "any emails about X?" or "send Y to Z" shell the matching
|
|
8
|
+
subcommand. Requires Google OAuth — install + Authenticate via Agent
|
|
9
|
+
Settings → Skills → gmail before first use.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /manigent:gmail
|
|
13
|
+
|
|
14
|
+
Gmail integration. The agent profile decides *when* to read/search/send;
|
|
15
|
+
this skill is *how* — Bash invocations of the `manigent gmail` CLI.
|
|
16
|
+
|
|
17
|
+
## Step 0 — Preflight
|
|
18
|
+
|
|
19
|
+
Token at `$MANIGENT_AGENT_DIR/skill-hub/state/gmail/token.json` is required.
|
|
20
|
+
If absent, reply with:
|
|
21
|
+
|
|
22
|
+
> The gmail skill isn't authenticated for this agent yet. Open Agent Settings → Skills → gmail and click "Authenticate", or run `manigent gmail auth` on the runner.
|
|
23
|
+
|
|
24
|
+
## Step 1 — Pick the subcommand
|
|
25
|
+
|
|
26
|
+
| Marker / intent | Command |
|
|
27
|
+
|---|---|
|
|
28
|
+
| "any emails from / about …" | `manigent gmail search "<query>" --max 20` |
|
|
29
|
+
| "open the email …" | `manigent gmail get <message-id>` |
|
|
30
|
+
| "what attachment was on …" | `manigent gmail attachment <message-id> <attachment-id> --out <path>` |
|
|
31
|
+
| "send an email to …" | `manigent gmail send --to … --subject "…" --body -` (pipe body via stdin) |
|
|
32
|
+
| "archive this / clear these out of my inbox" | `manigent gmail archive <id> [<id> …]` |
|
|
33
|
+
| "archive everything from …" | `manigent gmail archive -q "<query>" --max N --dry-run` first, then re-run without `--dry-run` |
|
|
34
|
+
| "put that back in my inbox" | `manigent gmail archive <id> --undo` |
|
|
35
|
+
| List labels | `manigent gmail labels` |
|
|
36
|
+
|
|
37
|
+
The CLI self-resolves `--token` from `$MANIGENT_AGENT_DIR` — omit it.
|
|
38
|
+
|
|
39
|
+
## Step 2 — Fetching mail on a schedule
|
|
40
|
+
|
|
41
|
+
These commands only fetch. If your SOP has you pull mail regularly, where you
|
|
42
|
+
store it, how you deduplicate it (Gmail's message `id` is stable), and how you
|
|
43
|
+
track what you already fetched (e.g. an `after:<epoch>` search term from your
|
|
44
|
+
last run) is up to that SOP.
|
|
45
|
+
|
|
46
|
+
## Step 3 — Interactive use
|
|
47
|
+
|
|
48
|
+
For search / read / send, pipe long bodies via stdin (`--body -`), parse the
|
|
49
|
+
JSON output, and synthesize a conversational reply. Don't paste raw JSON into
|
|
50
|
+
chat.
|
|
51
|
+
|
|
52
|
+
## Step 3b — Archiving (the only write op besides send)
|
|
53
|
+
|
|
54
|
+
Gmail archive == removing the `INBOX` label. Nothing is deleted: the mail stays
|
|
55
|
+
in All Mail and `manigent gmail archive <id> --undo` puts it back. Say that
|
|
56
|
+
when you report — it's what makes a bulk archive safe to accept.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
manigent gmail archive 18f2a1b3c4d5e6f7 # one message
|
|
60
|
+
manigent gmail archive -q "from:news older_than:30d" --max 50 --dry-run
|
|
61
|
+
manigent gmail archive -q "from:news older_than:30d" --max 50 # for real
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Query mode: ALWAYS `--dry-run` first**, show the user the matched subjects,
|
|
65
|
+
and only re-run without the flag after they confirm. Explicit-id archive needs
|
|
66
|
+
no confirmation step — the user already named the message.
|
|
67
|
+
|
|
68
|
+
Output JSON carries `matched` (with subject/from/date in query mode),
|
|
69
|
+
`archived`, and `failed: [{id, error}]`. Two things to surface in your reply:
|
|
70
|
+
- `truncated: true` means the match count hit `--max` and more mail may match —
|
|
71
|
+
tell the user, and offer to re-run with a higher `--max`.
|
|
72
|
+
- A non-empty `failed` names the specific messages that didn't move; the rest
|
|
73
|
+
did. Re-running is safe — archiving an already-archived message is a no-op.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: google-calendar
|
|
3
|
+
description: >
|
|
4
|
+
Google Calendar (list / get / create / update / delete events). Invoked via
|
|
5
|
+
`manigent gcal {calendars,list-events,get,create,update,delete,auth,revoke}`.
|
|
6
|
+
Requires Google OAuth — Authenticate via Agent Settings → Skills →
|
|
7
|
+
google-calendar. The token resolves from
|
|
8
|
+
`$MANIGENT_AGENT_DIR/skill-hub/state/google-calendar/`.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# /manigent:google-calendar
|
|
12
|
+
|
|
13
|
+
Google Calendar via the `manigent gcal` CLI.
|
|
14
|
+
|
|
15
|
+
## Step 0 — Preflight
|
|
16
|
+
|
|
17
|
+
Token at `$MANIGENT_AGENT_DIR/skill-hub/state/google-calendar/token.json` is required.
|
|
18
|
+
If absent, reply: "Open Agent Settings → Skills → google-calendar and click Authenticate."
|
|
19
|
+
|
|
20
|
+
## Step 1 — Pick the subcommand
|
|
21
|
+
|
|
22
|
+
| Intent | Command |
|
|
23
|
+
|---|---|
|
|
24
|
+
| List user's calendars | `manigent gcal calendars` |
|
|
25
|
+
| "what's on my calendar this week?" | `manigent gcal list-events --time-min ... --time-max ...` |
|
|
26
|
+
| Fetch one event | `manigent gcal get <event-id>` |
|
|
27
|
+
| Create event | `manigent gcal create --summary "..." --start ... --end ... [--attendees a,b,c]` |
|
|
28
|
+
| Patch event | `manigent gcal update <event-id> --fields '{"summary":"new"}'` (or `--fields -` stdin) |
|
|
29
|
+
| Delete event | `manigent gcal delete <event-id>` |
|
|
30
|
+
|
|
31
|
+
`--token` self-resolves — omit it.
|
|
32
|
+
|
|
33
|
+
## Step 2 — Interactive use
|
|
34
|
+
|
|
35
|
+
Parse JSON output and respond conversationally. Times are RFC3339 UTC
|
|
36
|
+
(`2026-04-20T00:00:00Z`).
|
|
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 event `id` is
|
|
42
|
+
stable per occurrence; `iCalUID` is shared across a recurring series), and how
|
|
43
|
+
you track what you already fetched (e.g. a rolling `--time-min` / `--time-max`
|
|
44
|
+
window) is up to that SOP.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: google-drive
|
|
3
|
+
description: >
|
|
4
|
+
Google Drive read-only (search / read). Invoked via
|
|
5
|
+
`manigent gdrive {search,get,auth,revoke}`. Requires Google OAuth
|
|
6
|
+
(drive.readonly) — Authenticate via Agent Settings → Skills → google-drive.
|
|
7
|
+
Google Docs / Sheets / Slides export as text / first-tab TSV.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# /manigent:google-drive
|
|
11
|
+
|
|
12
|
+
Drive read access via the `manigent gdrive` CLI.
|
|
13
|
+
|
|
14
|
+
## Step 0 — Preflight
|
|
15
|
+
|
|
16
|
+
Token at `$MANIGENT_AGENT_DIR/skill-hub/state/google-drive/token.json` required.
|
|
17
|
+
If absent, reply: "Open Agent Settings → Skills → google-drive and click Authenticate."
|
|
18
|
+
|
|
19
|
+
## Step 1 — Pick the subcommand
|
|
20
|
+
|
|
21
|
+
| Intent | Command |
|
|
22
|
+
|---|---|
|
|
23
|
+
| "find files about X" | `manigent gdrive search "name contains 'X'"` |
|
|
24
|
+
| Read one file body | `manigent gdrive get <file-id>` |
|
|
25
|
+
|
|
26
|
+
Drive query syntax: `name contains 'foo'`, `mimeType = '...'`,
|
|
27
|
+
`'<folder>' in parents`, `modifiedTime > '2025-01-01T00:00:00Z'`. See
|
|
28
|
+
https://developers.google.com/drive/api/guides/search-files.
|
|
29
|
+
|
|
30
|
+
## Step 2 — Interactive read
|
|
31
|
+
|
|
32
|
+
`get` returns `{id, name, mime_type, modified_time, content}`. Google Docs /
|
|
33
|
+
Slides export as text and Sheets as first-tab TSV. Binary types and bodies over
|
|
34
|
+
256 KB return `content: null` — open those via the file's `web_view_link`
|
|
35
|
+
(from `search`).
|
|
36
|
+
|
|
37
|
+
## Step 3 — Fetching files on a schedule
|
|
38
|
+
|
|
39
|
+
These commands only fetch. If your SOP has you pull files regularly, where you
|
|
40
|
+
store them, how you deduplicate them (the file `id` is stable), and how you
|
|
41
|
+
track what you already fetched (e.g. a `modifiedTime > '<last run>'` search
|
|
42
|
+
term) is up to that SOP.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: google-drive-write
|
|
3
|
+
description: >
|
|
4
|
+
Google Sheets read + write (per-target). Each named target binds one
|
|
5
|
+
spreadsheet's named tab + id-column. Invoked via
|
|
6
|
+
`manigent gdrive-write {read-rows,append-rows,update-cell,auth}`. Separate
|
|
7
|
+
from `google-drive` so the sheets-write OAuth scope is opt-in (one agent
|
|
8
|
+
can hold both tokens). No sync trigger — used inline by content-engine
|
|
9
|
+
pipelines (e.g. marketing template's instagram agent: read brief sheet →
|
|
10
|
+
generate image → write back).
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# /manigent:google-drive-write
|
|
14
|
+
|
|
15
|
+
Google Sheets read+write via the `manigent gdrive-write` CLI.
|
|
16
|
+
|
|
17
|
+
## Step 0 — Preflight
|
|
18
|
+
|
|
19
|
+
Token at `$MANIGENT_AGENT_DIR/skill-hub/state/google-drive-write/token.json`
|
|
20
|
+
required. Configure `sheet_targets` via Agent Settings → Skills →
|
|
21
|
+
google-drive-write → Configure.
|
|
22
|
+
|
|
23
|
+
## Step 1 — Pick the subcommand
|
|
24
|
+
|
|
25
|
+
| Intent | Command |
|
|
26
|
+
|---|---|
|
|
27
|
+
| Read all rows | `manigent gdrive-write read-rows --target <name>` |
|
|
28
|
+
| Append rows | `manigent gdrive-write append-rows --target <name> --rows-file rows.json` |
|
|
29
|
+
| Update one cell | `manigent gdrive-write update-cell --target <name> --row-id <id> --column <col> --value <val>` |
|
|
30
|
+
|
|
31
|
+
Each target's `name` is the logical key the LLM uses; `spreadsheet_id`,
|
|
32
|
+
`sheet_name`, and `row_id_column` are configured separately.
|
|
33
|
+
|
|
34
|
+
## Step 2 — Append shape
|
|
35
|
+
|
|
36
|
+
`--rows-file` is a JSON list of dicts keyed by column name. Unknown keys
|
|
37
|
+
are silently dropped (extend the Sheet header first if you need a new
|
|
38
|
+
column). Missing keys are written as empty strings. Stream via stdin:
|
|
39
|
+
`manigent gdrive-write append-rows --target ideas --rows -`.
|
|
40
|
+
|
|
41
|
+
## Step 3 — Update by primary key
|
|
42
|
+
|
|
43
|
+
`update-cell` looks up the row whose `row_id_column` matches `--row-id`
|
|
44
|
+
and writes `--value` into `--column`. Errors verbosely on missing
|
|
45
|
+
column / missing row so the agent can self-correct.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
// google-drive-write — read AND write N configured Google Sheet targets.
|
|
3
|
+
//
|
|
4
|
+
// Each entry in `sheet_targets` is one tab on one spreadsheet the agent can
|
|
5
|
+
// operate on. Tools (`read_sheet_rows`, `append_sheet_rows`,
|
|
6
|
+
// `update_sheet_cell`) take a `target_name` selecting which entry to use.
|
|
7
|
+
//
|
|
8
|
+
// The OAuth scope is `spreadsheets` (write); install this MCP separately
|
|
9
|
+
// from the read-only `google-drive` MCP so you can opt into each
|
|
10
|
+
// independently.
|
|
11
|
+
//
|
|
12
|
+
// Per-entry fields:
|
|
13
|
+
// name — logical key the LLM passes as `target_name`. Must be
|
|
14
|
+
// unique within `sheet_targets`.
|
|
15
|
+
// spreadsheet_id — the long id in the Sheet URL between /d/ and /edit.
|
|
16
|
+
// Inline the literal id OR use a ${VAR} placeholder
|
|
17
|
+
// resolved from runner env (e.g. ${MARKETING_SHEET_ID}).
|
|
18
|
+
// sheet_name — the tab name (NOT the file name). Defaults to
|
|
19
|
+
// "Sheet1" in a brand-new Sheet.
|
|
20
|
+
// row_id_column — header name of the primary-key column used by
|
|
21
|
+
// update_sheet_cell to find rows. Optional; defaults to
|
|
22
|
+
// "id". The marketing pipeline expects "id".
|
|
23
|
+
//
|
|
24
|
+
// Each target's sheet MUST have a header row in row 1; tools key cell
|
|
25
|
+
// values on it. For the marketing pipeline, paste this header into row 1
|
|
26
|
+
// of the `ideas` tab:
|
|
27
|
+
// id created_at channel idea_title idea_brief grade grade_rationale
|
|
28
|
+
// sign_off draft_body drafted_at publish_sign_off notes
|
|
29
|
+
|
|
30
|
+
"sheet_targets": [
|
|
31
|
+
{
|
|
32
|
+
"name": "ideas",
|
|
33
|
+
"spreadsheet_id": "${MARKETING_SHEET_ID}",
|
|
34
|
+
"sheet_name": "ideas",
|
|
35
|
+
"row_id_column": "id"
|
|
36
|
+
}
|
|
37
|
+
// Add more entries here to operate on additional tabs / sheets, e.g.:
|
|
38
|
+
// {
|
|
39
|
+
// "name": "ops",
|
|
40
|
+
// "spreadsheet_id": "${OPS_SHEET_ID}",
|
|
41
|
+
// "sheet_name": "tasks",
|
|
42
|
+
// "row_id_column": "id"
|
|
43
|
+
// }
|
|
44
|
+
]
|
|
45
|
+
}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: grill-me
|
|
3
|
+
description: >
|
|
4
|
+
Narrow a fuzzy decision down to the real question before anyone spends a
|
|
5
|
+
project on the wrong one. INVOKE when ANY of: (1) the user says "grill me",
|
|
6
|
+
"push back on this", "help me think this through", or "what am I really
|
|
7
|
+
deciding"; (2) in a DM, the user brings a decision they keep putting off, or
|
|
8
|
+
asks for research or a comparison that is really in service of one decision
|
|
9
|
+
("compare 10 CRMs"); (3) `broaden-options` hands off because the decision the
|
|
10
|
+
options serve is unclear; (4) you are a participant in a project whose
|
|
11
|
+
request is a decision and you hold a brief for it. Two modes. In a DM: one
|
|
12
|
+
question per turn, up to about 8 turns, ending in a five-part brief and a
|
|
13
|
+
fixed self-graded closing line. Inside a project: never interview the user;
|
|
14
|
+
review the plan against the brief once before acceptance and the final
|
|
15
|
+
report against "what would change my mind" once.
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Grill me — find the real question
|
|
19
|
+
|
|
20
|
+
People arrive with the question they can say out loud ("which CRM?"). The
|
|
21
|
+
decision usually sits one or two layers under it ("do we keep selling to
|
|
22
|
+
agencies, or move to in-house teams?"). This skill gets there by asking, and
|
|
23
|
+
writes down what it found as a **brief** that the user — and any project that
|
|
24
|
+
follows — can work against.
|
|
25
|
+
|
|
26
|
+
## § Pick the mode first
|
|
27
|
+
|
|
28
|
+
Read your own prompt before anything else:
|
|
29
|
+
|
|
30
|
+
- **DM mode** — your role block says `== DIRECT MESSAGE CONVERSATION ==` or
|
|
31
|
+
`== DM COORDINATOR ROLE ==`: you are in a 1:1 conversation with the user.
|
|
32
|
+
Follow § DM mode.
|
|
33
|
+
- **Project mode** — anything else: a `== WORKER ROLE ==`, a project
|
|
34
|
+
coordinator role, a workroom, a `milestone-*` room, a `PLAN.md` in the
|
|
35
|
+
synced files. Follow § Project mode.
|
|
36
|
+
|
|
37
|
+
If you cannot tell, treat it as project mode. Wrongly staying quiet costs one
|
|
38
|
+
skipped interview; wrongly interviewing inside a project costs the user's
|
|
39
|
+
trust in the whole team.
|
|
40
|
+
|
|
41
|
+
## § DM mode
|
|
42
|
+
|
|
43
|
+
### The interview
|
|
44
|
+
|
|
45
|
+
1. **One question per turn.** Never two, never a numbered list of questions,
|
|
46
|
+
never "a few quick questions". One question, then stop and wait.
|
|
47
|
+
2. **Each question builds on the user's last answer.** Quote or name the
|
|
48
|
+
thing they just said that you are pulling on. A question that could have
|
|
49
|
+
been asked before their last answer is the wrong question.
|
|
50
|
+
3. Before your question, add at most two sentences: what you just heard, and
|
|
51
|
+
(when it changed) the draft brief part it moved. No lecturing, no advice,
|
|
52
|
+
no options yet — options are `broaden-options`' job.
|
|
53
|
+
4. Dig in roughly this order, skipping anything already clear:
|
|
54
|
+
- **The decision** — what will actually be chosen, by whom, by when?
|
|
55
|
+
- **The real question** — why does this decision matter now? What would
|
|
56
|
+
be different if they got it right? Keep asking "and that matters
|
|
57
|
+
because…?" until the answer stops being a means to something else.
|
|
58
|
+
- **The current bet** — if they had to choose today, what would they pick?
|
|
59
|
+
(They almost always have one. Ask for it plainly.)
|
|
60
|
+
- **What would change their mind** — what evidence, if they saw it, would
|
|
61
|
+
flip the bet? Push for something observable, not "if it turns out badly".
|
|
62
|
+
- **What is out of scope** — what are they NOT deciding here?
|
|
63
|
+
5. Keep a draft brief in your head (the five parts below) and update it after
|
|
64
|
+
every answer.
|
|
65
|
+
|
|
66
|
+
### When to stop
|
|
67
|
+
|
|
68
|
+
Stop asking and write the brief when **either**:
|
|
69
|
+
|
|
70
|
+
- you have asked about **8 questions**, or
|
|
71
|
+
- the draft brief has **not changed for 2 turns in a row** — the last two
|
|
72
|
+
answers confirmed it rather than moved it.
|
|
73
|
+
|
|
74
|
+
Also stop if the user says "enough", "just write it up", or similar. Do not
|
|
75
|
+
stretch to 8 if the brief is already stable.
|
|
76
|
+
|
|
77
|
+
### The brief
|
|
78
|
+
|
|
79
|
+
Write it in this shape, in the user's own words wherever possible:
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
**Decision:** <what will be chosen, by whom, by when>
|
|
83
|
+
**Real question:** <the question underneath, that the decision actually serves>
|
|
84
|
+
**Current bet:** <what they would pick today, and the one-line why>
|
|
85
|
+
**Evidence that would change my mind:** <observable things that would flip the bet>
|
|
86
|
+
**Out of scope:** <what this decision is not about>
|
|
87
|
+
|
|
88
|
+
Real question changed from your first message: yes (self-graded)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### The closing line — fixed wording, always last
|
|
92
|
+
|
|
93
|
+
The brief ALWAYS ends with exactly one closing line, and it is the last line
|
|
94
|
+
of the message:
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
Real question changed from your first message: yes (self-graded)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
or
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
Real question changed from your first message: no (self-graded)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
- You fill in `yes` or `no` yourself. Compare the **Real question** you just
|
|
107
|
+
wrote with the user's FIRST message in this conversation. `yes` if a
|
|
108
|
+
reader would say they are about different things (the first message asked
|
|
109
|
+
"which CRM", the real question is about which customers to serve); `no` if
|
|
110
|
+
the brief only sharpened or restated what they first asked.
|
|
111
|
+
- Copy the wording character for character: no bold, no bullet, no trailing
|
|
112
|
+
punctuation, lowercase `yes`/`no`, then ` (self-graded)`. Adoption measures
|
|
113
|
+
parse this line with a fixed prefix; any variation is lost from the count.
|
|
114
|
+
- Never omit it, even if the brief is short or the user cut the interview off.
|
|
115
|
+
|
|
116
|
+
Between the brief and the closing line, offer — in one sentence — the
|
|
117
|
+
obvious next step: widen the options with `broaden-options`, or take the
|
|
118
|
+
brief into a project. Do not start either unasked, and never put the offer
|
|
119
|
+
after the closing line.
|
|
120
|
+
|
|
121
|
+
## § Project mode
|
|
122
|
+
|
|
123
|
+
**Inside a project you NEVER interview the user. Not in any room, not once,
|
|
124
|
+
not "just one quick question".** Installing this skill cannot enforce that
|
|
125
|
+
rule, so it is stated here and it is absolute. The user agreed to a plan;
|
|
126
|
+
they did not agree to be grilled through a coordinator. If you think a
|
|
127
|
+
question needs the user's answer, write it as an objection (below) and let
|
|
128
|
+
the coordinator decide whether to raise it.
|
|
129
|
+
|
|
130
|
+
### Get the brief
|
|
131
|
+
|
|
132
|
+
Look, in order, in the project request, the `shared-context` room and its
|
|
133
|
+
files, and your delegation message, for a brief with the five parts above
|
|
134
|
+
(often pasted from a grill-me DM). If there is none, write a draft brief
|
|
135
|
+
yourself from the project request alone, and mark every part you inferred
|
|
136
|
+
`(inferred)`. Do not ask anyone to supply it.
|
|
137
|
+
|
|
138
|
+
### Two reviews, each exactly once
|
|
139
|
+
|
|
140
|
+
1. **Plan review — once, before the plan is accepted.** Read `PLAN.md`
|
|
141
|
+
against the brief. For each milestone, ask: which brief part does this
|
|
142
|
+
serve? Raise an objection for any milestone that serves none, any brief
|
|
143
|
+
part no milestone serves, and any milestone that works on something the
|
|
144
|
+
brief puts **Out of scope**. Post the review once in `shared-context`;
|
|
145
|
+
do not re-review later drafts unless the coordinator asks.
|
|
146
|
+
2. **Final-report review — once, at the final report.** Read the completion
|
|
147
|
+
report against **Evidence that would change my mind**. Say whether the
|
|
148
|
+
project produced that evidence, produced the opposite, or did not look.
|
|
149
|
+
Post it once in your workroom.
|
|
150
|
+
|
|
151
|
+
### Every objection names the brief part
|
|
152
|
+
|
|
153
|
+
Each objection names the milestone and the brief part it fails to serve, in
|
|
154
|
+
this shape:
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
- <milestone name> does not serve **<brief part>**: <one sentence why>. Suggest: <one-line change>.
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
The brief part is one of: **Decision**, **Real question**, **Current bet**,
|
|
161
|
+
**Evidence that would change my mind**, **Out of scope**. An objection that
|
|
162
|
+
names no brief part is a taste comment — drop it. If the plan serves every
|
|
163
|
+
part, say so in one line and raise nothing.
|
|
164
|
+
|
|
165
|
+
## § Anti-patterns
|
|
166
|
+
|
|
167
|
+
- Asking two questions in one turn, or a list "to save time".
|
|
168
|
+
- Offering options, advice or a recommendation during the interview.
|
|
169
|
+
- Asking a question the user already answered.
|
|
170
|
+
- Running past ~8 questions because the brief "could be sharper".
|
|
171
|
+
- Paraphrasing the closing line, bolding it, or putting anything after it.
|
|
172
|
+
- In a project: any question addressed to the user, directly or relayed.
|
|
173
|
+
- In a project: re-running either review on every plan edit.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: homekit
|
|
3
|
+
description: >
|
|
4
|
+
Apple HomeKit / Apple Home control via the macOS `shortcuts` CLI. The user
|
|
5
|
+
builds the Shortcuts (Bedtime, Away-mode, Set Bedroom Temp); this skill just
|
|
6
|
+
enumerates and invokes them through `manigent homekit list-shortcuts` and
|
|
7
|
+
`manigent homekit run-shortcut "<name>"`. macOS 12+ only. No OAuth, no
|
|
8
|
+
config. If the runner is non-macOS, the CLI errors out — reply that the
|
|
9
|
+
skill is unavailable on this host.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /manigent:homekit
|
|
13
|
+
|
|
14
|
+
Two Bash subcommands. The Shortcuts app is the contract; this skill never
|
|
15
|
+
reinvents device primitives or duplicates the editor.
|
|
16
|
+
|
|
17
|
+
## Step 1 — Discover
|
|
18
|
+
|
|
19
|
+
When you first need to control devices on a new agent, call
|
|
20
|
+
`manigent homekit list-shortcuts` once and remember the result (or cache it
|
|
21
|
+
under `memory/learnings/` if you'll use it across sessions).
|
|
22
|
+
|
|
23
|
+
## Step 2 — Invoke
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
manigent homekit run-shortcut "Bedtime"
|
|
27
|
+
manigent homekit run-shortcut "Set Bedroom Temp" --input - # piped stdin
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Returns `{ok, exit_code, stdout, stderr}`. Report back conversationally — e.g.
|
|
31
|
+
"Set Bedroom Temp ran OK." Don't paste raw stdout if it's empty.
|
|
32
|
+
|
|
33
|
+
## Step 3 — Errors
|
|
34
|
+
|
|
35
|
+
The CLI exits 1 with a clear message if the platform isn't macOS or the
|
|
36
|
+
`shortcuts` binary is missing. Surface that error to the user without
|
|
37
|
+
re-formatting; they need to know the host can't drive HomeKit.
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: http-api
|
|
3
|
+
description: >
|
|
4
|
+
Generic HTTP client — `manigent http-api get|post|put|patch|delete <url>`
|
|
5
|
+
with `-H`, `--query`, `--data`/`--json`, and a curl-style session jar
|
|
6
|
+
(`--save-session`/`--session`) so login is just a POST that writes cookies,
|
|
7
|
+
with `--expect-location`/`--expect-status` to declare what success looks
|
|
8
|
+
like (a wrong password is an ordinary 3xx, not an error status). `$VAR` /
|
|
9
|
+
`${VAR}` in header values expand from the environment, so auth secrets stay
|
|
10
|
+
out of argv. No config.
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# /manigent:http-api
|
|
14
|
+
|
|
15
|
+
Drive any HTTP/REST API via the `manigent http-api` CLI.
|
|
16
|
+
|
|
17
|
+
Fetching data on a schedule: these commands only fetch (and write). Where the
|
|
18
|
+
results are stored, how they are deduplicated, and how incremental fetches are
|
|
19
|
+
tracked (a `since` / cursor / page parameter passed via `--query`) is up to
|
|
20
|
+
your agent's SOP.
|
|
21
|
+
|
|
22
|
+
## Commands
|
|
23
|
+
|
|
24
|
+
A general-purpose curl-shaped client for driving a live API — log in, hold the
|
|
25
|
+
session, then read/write.
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
manigent http-api get <url> [options]
|
|
29
|
+
manigent http-api post <url> [options] # + --data / --json
|
|
30
|
+
manigent http-api put <url> [options] # + --data / --json
|
|
31
|
+
manigent http-api patch <url> [options] # + --data / --json
|
|
32
|
+
manigent http-api delete <url> [options] # + --data / --json (body optional)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Options
|
|
36
|
+
|
|
37
|
+
| Option | Meaning |
|
|
38
|
+
|--------|---------|
|
|
39
|
+
| `-H, --header "Name: value"` | Repeatable. `$VAR` / `${VAR}` in the value is expanded from the **environment** (unset → empty string) — so `-H "Authorization: Bearer $ICS_TOKEN"` keeps the secret out of argv/logs/jar. |
|
|
40
|
+
| `--query "k=v"` | Repeatable query-string param. |
|
|
41
|
+
| `--data "k=v"` | Repeatable form field → `application/x-www-form-urlencoded`. |
|
|
42
|
+
| `--json '<raw>'` | Raw JSON body, curl semantics: repeatable + concatenated, `@file` and `@-` (stdin) supported; sets `Content-Type` **and** `Accept: application/json` (an explicit `-H` wins). Mutually exclusive with `--data`. |
|
|
43
|
+
| `--session <jar>` | Load cookies from a jar (curl `-b`). |
|
|
44
|
+
| `--save-session <jar>` | Write captured cookies to a `0600` JSON jar (curl `-c`). |
|
|
45
|
+
| `--follow` / `--no-follow` | **Default `--no-follow`.** A login's `3xx` *is* the auth signal — `302` or `303` (Rails and most POST-redirect-GET frameworks emit `303`) with `Location: /` = ok, `/login` = fail; auto-following would mask a failed login as a final `200`. |
|
|
46
|
+
| `--expect-location <glob>` | **Declare where a successful request lands.** The `Location` header is resolved against the request URL first (so `/`, `https://host/` and `../x` all normalize), then glob-matched. A pattern starting with `/` matches the URL **path** — `'/'` is exact, `'/dashboard*'` is a prefix; any other pattern matches the whole absolute URL. Under `--follow` (no `Location` on the final response) it matches the final URL instead, so the flag reads as "where did I end up" either way. Unmet → exit `23` **and the `--save-session` jar is not written**. Note `/dashboard` and `/dashboard/` are different paths — write `'/dashboard*'` if the app may add the slash. |
|
|
47
|
+
| `--expect-status <spec>` | **Declare the acceptable status(es)** — `'200'`, `'2xx'`, `'200,303'`; `x` is a wildcard digit. Covers the two shapes `--expect-location` cannot see: a login form re-rendered at `200`, and an API returning JSON `401`. Unmet → exit `23`, jar not written. A malformed spec exits `2` **before any request is sent**. |
|
|
48
|
+
| `--output body\|json\|full` | `body` (default) = raw text; `json` = pretty-printed (errors if the body isn't JSON); `full` = envelope `{status, reason, url, location, history, headers, body}` — read this to inspect a login's status + `Location`. |
|
|
49
|
+
| `--timeout <s>` | Per-request timeout (default 30). |
|
|
50
|
+
| `--fail` | Opt into curl-style non-zero exit on HTTP status ≥ 400. |
|
|
51
|
+
|
|
52
|
+
### Session jar
|
|
53
|
+
|
|
54
|
+
The jar is **cookies-only**: `{"cookies": {name: value}}` written `0600`.
|
|
55
|
+
Cookies are captured from *every* response — **including a 302's own
|
|
56
|
+
`Set-Cookie`** — so `--save-session` works even with `--no-follow`. Login is
|
|
57
|
+
therefore just a `post` that writes a jar; there is no auth subcommand, which
|
|
58
|
+
keeps it general across cookie / token / OTP APIs. (Legacy
|
|
59
|
+
`{"cookies", "headers"}` jars still load; the `headers` half is ignored.)
|
|
60
|
+
|
|
61
|
+
**The jar is written only when the command exits `0`.** An unmet `--expect-*`,
|
|
62
|
+
a `--fail` status, or a render error all suppress the write, so a failed login
|
|
63
|
+
can never replace a working session with the login page's anonymous cookie.
|
|
64
|
+
Without `--expect-*` there is nothing to fail against — a bad password still
|
|
65
|
+
looks like success — which is why a login that writes a jar should always
|
|
66
|
+
declare an expectation.
|
|
67
|
+
|
|
68
|
+
### Exit codes
|
|
69
|
+
|
|
70
|
+
| Code | Meaning |
|
|
71
|
+
|------|---------|
|
|
72
|
+
| `0` | Response received — **any** HTTP status (incl. 4xx/5xx); body on stdout. |
|
|
73
|
+
| `2` | Usage error (bad `-H`/`--query`/`--data`, `--json`+`--data` together, bad `--output`, body on a GET). |
|
|
74
|
+
| `6` | Session/jar I/O error (missing/unreadable/unwritable jar). |
|
|
75
|
+
| `7` | Network error (DNS, connect, timeout, TLS, bad URL). |
|
|
76
|
+
| `22` | HTTP status ≥ 400 **and** `--fail` was passed. Jar not written. |
|
|
77
|
+
| `23` | A declared `--expect-location` / `--expect-status` did not match. Body still printed, one-line reason on stderr, jar not written. Wins over `22` when both fire — the more specific declaration reports. |
|
|
78
|
+
|
|
79
|
+
4xx/5xx return `0` by default so structured error payloads (e.g. a JSON
|
|
80
|
+
`400`) stay readable.
|
|
81
|
+
|
|
82
|
+
### Worked example — login, then authed GET
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
export ICS_TOKEN=... # if the API is token-based instead of cookie
|
|
86
|
+
|
|
87
|
+
# 1) Log in. POST the form, DON'T follow the redirect, save the cookie jar,
|
|
88
|
+
# and DECLARE where a successful login lands. Without --expect-location a
|
|
89
|
+
# wrong password returns 3xx + Set-Cookie + exit 0, exactly like success.
|
|
90
|
+
manigent http-api post https://ics.example/login \
|
|
91
|
+
--data "username=alice" --data "password=$ICS_PW" \
|
|
92
|
+
--no-follow --save-session /tmp/ics.jar --expect-location '/' --output full
|
|
93
|
+
# exit 0 => landed at "/": authenticated, cookie captured off the 3xx
|
|
94
|
+
# exit 23 => landed elsewhere (e.g. "/login"): jar NOT written, any previous
|
|
95
|
+
# session left intact; stderr says where it actually landed.
|
|
96
|
+
|
|
97
|
+
# API-style login (JSON 200 on success, 401 on failure)? Declare the status
|
|
98
|
+
# instead of the destination:
|
|
99
|
+
manigent http-api post https://api.example/session \
|
|
100
|
+
--json "{\"user\":\"alice\",\"pw\":\"$ICS_PW\"}" \
|
|
101
|
+
--save-session /tmp/api.jar --expect-status 200 --output json
|
|
102
|
+
|
|
103
|
+
# 2) Reuse the session on subsequent calls.
|
|
104
|
+
manigent http-api get https://ics.example/reports --session /tmp/ics.jar --output json
|
|
105
|
+
|
|
106
|
+
# 3) Token APIs need no jar — pass the header, read the secret from env:
|
|
107
|
+
manigent http-api get https://api.example/v1/me \
|
|
108
|
+
-H "Authorization: Bearer $ICS_TOKEN" --output json
|
|
109
|
+
|
|
110
|
+
# 4) Writes work the same way (PUT/PATCH/DELETE take --data or --json):
|
|
111
|
+
manigent http-api patch https://api.example/v1/items/42 \
|
|
112
|
+
--session /tmp/ics.jar --json '{"status":"archived"}' --output full
|
|
113
|
+
manigent http-api delete https://api.example/v1/items/42 --session /tmp/ics.jar --fail
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Credentials are never echoed: request headers/cookies/body are not logged, and
|
|
117
|
+
only the response you asked for is printed.
|