workpilot 0.35.2__tar.gz → 0.37.0__tar.gz
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.
- {workpilot-0.35.2 → workpilot-0.37.0}/PKG-INFO +5 -4
- {workpilot-0.35.2 → workpilot-0.37.0}/browser_agent/actions.py +4 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/agents/bridge-mode.md +46 -4
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/agents/claude-code.md +13 -9
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/agents/github-copilot.md +54 -11
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/agents/overview.md +42 -0
- workpilot-0.37.0/docs/automation/events.md +254 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/automation/scheduling.md +74 -5
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/channels/web.md +32 -8
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/browser.md +4 -3
- workpilot-0.37.0/docs/cli/hooks.md +130 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/init.md +2 -1
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/msgraph.md +1 -1
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/overview.md +9 -6
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/update.md +14 -2
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/configuration/overview.md +1 -1
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/configuration/schema.md +17 -7
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/contributing/architecture.md +2 -2
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/contributing/development.md +6 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/contributing/releasing.md +58 -10
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/desktop.md +78 -17
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/gateways/local.md +9 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/getting-started/initialize.md +2 -1
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/getting-started/install.md +65 -1
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/getting-started/update.md +58 -3
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/index.md +1 -0
- workpilot-0.37.0/docs/security/approvals.md +307 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/security/overview.md +32 -4
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/storage/overview.md +13 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/storage/sessions.md +22 -1
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/tools/browser.md +78 -15
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/tools/overview.md +6 -1
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/tools/run-code.md +15 -8
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/troubleshooting.md +37 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/pyproject.toml +5 -4
- workpilot-0.37.0/web/dist/app-CIo_O1d6.css +1 -0
- workpilot-0.37.0/web/dist/app-CYZDCQXy.js +18 -0
- workpilot-0.37.0/web/dist/app-DeoqYaYU.css +0 -0
- workpilot-0.37.0/web/dist/app-DnejMwtf.css +0 -0
- workpilot-0.37.0/web/dist/app-DzggVBNJ.css +0 -0
- workpilot-0.37.0/web/dist/app-J0wEnVQ9.css +0 -0
- workpilot-0.37.0/web/dist/app-ZeLuo_qI.css +0 -0
- workpilot-0.37.0/web/dist/app-orwSkC5k.css +0 -0
- workpilot-0.37.0/web/dist/app-s3Wdl3G6.css +0 -0
- workpilot-0.37.0/web/dist/app-zQFr_IGx.css +0 -0
- workpilot-0.37.0/web/dist/chunks/AgentModelEditor-Hs0ZiCl_.js +1 -0
- workpilot-0.37.0/web/dist/chunks/AgentsView-BUwcLmNP.js +3 -0
- workpilot-0.37.0/web/dist/chunks/AskAssistant-D-Njb_9G.js +1 -0
- workpilot-0.37.0/web/dist/chunks/BackgroundAppearanceContext-D16ZpFHE.js +1 -0
- workpilot-0.37.0/web/dist/chunks/ConfigurationEditor-X7U3-oDb.js +1 -0
- workpilot-0.37.0/web/dist/chunks/ConfigurationPanel-qrVnGHor.js +2 -0
- workpilot-0.37.0/web/dist/chunks/ConfirmDialog-CUxbO5dJ.js +1 -0
- workpilot-0.37.0/web/dist/chunks/ConfirmOperation-DaNIMt40.js +1 -0
- workpilot-0.37.0/web/dist/chunks/EventDetailView-Yr2zjRBD.js +1 -0
- workpilot-0.37.0/web/dist/chunks/EventEditorView-0bWj4SjG.js +3 -0
- workpilot-0.37.0/web/dist/chunks/EventsView-C2AVQv0j.js +1 -0
- workpilot-0.37.0/web/dist/chunks/FieldContext-B0SnnBYq.js +1 -0
- workpilot-0.37.0/web/dist/chunks/KnowledgeView-Bl_-1HFR.js +1 -0
- workpilot-0.37.0/web/dist/chunks/Label-Gtq0dkNb.js +1 -0
- workpilot-0.37.0/web/dist/chunks/LinkageDetails-D-91YcM3.js +1 -0
- workpilot-0.37.0/web/dist/chunks/ModelsView-BNFZAtQ5.js +1 -0
- workpilot-0.37.0/web/dist/chunks/PromptsView-DZvUUZ2e.js +1 -0
- workpilot-0.37.0/web/dist/chunks/ScheduleDetailView-VcnE-oPY.js +1 -0
- workpilot-0.37.0/web/dist/chunks/ScheduleView-_l_bo2KB.js +1 -0
- workpilot-0.37.0/web/dist/chunks/SecurityView-B8wC0EYW.js +3 -0
- workpilot-0.37.0/web/dist/chunks/SessionsView-D74ndoUu.js +1 -0
- workpilot-0.37.0/web/dist/chunks/SettingsView-S8Q1yJTC.js +3 -0
- workpilot-0.37.0/web/dist/chunks/SkillsView-C2aem39V.js +1 -0
- workpilot-0.37.0/web/dist/chunks/StatusView-D3ceg64h.js +1 -0
- workpilot-0.37.0/web/dist/chunks/StoreView--j3PyWoE.js +10 -0
- workpilot-0.37.0/web/dist/chunks/Subtitle2-Dh0-x0nJ.js +1 -0
- workpilot-0.37.0/web/dist/chunks/ToolsView-DTC2C5-s.js +1 -0
- workpilot-0.37.0/web/dist/chunks/UsageView-CCH4tpjM.js +3 -0
- workpilot-0.37.0/web/dist/chunks/_define_property-JgUJi83s.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~EventEditorView~EventDetailView-CmXmouOb.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~KnowledgeView~ConfigurationEditor-CLq7BDn7.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~ScheduleView~ScheduleDetailView-q1d_gPT5.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~ScheduleView~ScheduleDetailView~EventEditorView~AgentsView~ConfigurationEditor-DXStIC9H.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~SettingsView~ConfigurationEditor-DqXZ0Lxp.js +2 -0
- workpilot-0.37.0/web/dist/chunks/common~StoreView~ScheduleView-BD2-QVGY.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~StoreView~ScheduleView~ScheduleDetailView-Dw1uH_oY.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~StoreView~ScheduleView~ScheduleDetailView~EventEditorView~ConfigurationEditor-BKxe82U4.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~ToolsView~SkillsView~SettingsView~ScheduleView~ScheduleDetailView~ModelsView~EventsV~hykddpuv-DTmk88w9.js +25 -0
- workpilot-0.37.0/web/dist/chunks/common~ToolsView~StoreView~SkillsView~SettingsView~SecurityView~PromptsView~EventDetailView~j0k80ooi-DoKZE66I.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~ToolsView~StoreView~StatusView~SkillsView~SettingsView~SecurityView~ScheduleView~Sch~i8zn7jh1-C3gvqy-F.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~UsageView~ToolsView~SkillsView~SecurityView~KnowledgeView~EventsView~AgentsView-C9F-8Ble.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~UsageView~ToolsView~StoreView~StatusView~SkillsView~SettingsView~SessionsView~Securi~bme0q1na-h1SiF-cV.js +17 -0
- workpilot-0.37.0/web/dist/chunks/common~index-CwwRK_51.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~ToolsView~StoreView~SettingsView~ScheduleView~ScheduleDetailView~ModelsView~Ev~hnpoo2xb-FP5l90l-.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~ToolsView~StoreView~SettingsView~SessionsView~SecurityView~ScheduleView~Schedu~e549fo3q-DKZOT4vv.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~ToolsView~StoreView~SkillsView~SettingsView~SessionsView~ScheduleView~Schedule~eeeajtw3-BLA9-nsy.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~ToolsView~StoreView~SkillsView~SettingsView~SessionsView~ScheduleView~Schedule~jxe0gace-COEONZ7B.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~ToolsView~StoreView~SkillsView~SettingsView~SessionsView~ScheduleView~Schedule~k13lxfvk-CQPZkBRt.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~UsageView~ScheduleView-CrZG5Po9.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~UsageView~StoreView-CUzPxYRn.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~UsageView~StoreView~ScheduleView-DB4r0JLo.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~UsageView~StoreView~ScheduleView~ScheduleDetailView-B-EQb-Eq.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~UsageView~ToolsView~StoreView~SettingsView~SessionsView~SecurityView~ScheduleV~n5uota57-7fTC30-e.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~UsageView~ToolsView~StoreView~SkillsView~SettingsView~SecurityView~ScheduleVie~d0dlozpb-r0pZ5frh.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~UsageView~ToolsView~StoreView~SkillsView~SettingsView~SessionsView~ScheduleVie~egd2j22m-wZuNzdDP.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~UsageView~ToolsView~StoreView~SkillsView~SettingsView~SessionsView~ScheduleVie~el5qpxb0-Ci7aYSWg.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~UsageView~ToolsView~StoreView~SkillsView~SettingsView~SessionsView~ScheduleVie~jc0u55fq-BcVEUcxl.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~UsageView~ToolsView~StoreView~SkillsView~SettingsView~SessionsView~ScheduleVie~mu4s5l7p-DR5_gMZ_.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~UsageView~ToolsView~StoreView~StatusView~SkillsView~SettingsView~SessionsView~~e4la2u87-CptqeeMu.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~UsageView~ToolsView~StoreView~StatusView~SkillsView~SettingsView~SessionsView~~eswq4jkg-CuZQ53qe.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~UsageView~ToolsView~StoreView~StatusView~SkillsView~SettingsView~SessionsView~~hsi6g182-BizIRaxA.js +1 -0
- workpilot-0.37.0/web/dist/chunks/common~index~UsageView~ToolsView~StoreView~StatusView~SkillsView~SettingsView~SessionsView~~kjs63cx7-BQASqQ24.js +2 -0
- workpilot-0.37.0/web/dist/chunks/common~index~UsageView~ToolsView~StoreView~StatusView~SkillsView~SettingsView~SessionsView~~m9i0rw6q-B2uLYO2q.js +2 -0
- workpilot-0.37.0/web/dist/chunks/createPresenceComponentVariant-BQQoYxuO.js +1 -0
- workpilot-0.37.0/web/dist/chunks/elementContains-C6noOVPK.js +1 -0
- workpilot-0.37.0/web/dist/chunks/eventsApi-Dyde4KP-.js +1 -0
- workpilot-0.37.0/web/dist/chunks/getReactElementRef-CKKCK222.js +1 -0
- workpilot-0.37.0/web/dist/chunks/isResolvedShorthand-DEEQPZ2V.js +1 -0
- workpilot-0.37.0/web/dist/chunks/management-BXuEC0W1.js +1 -0
- workpilot-0.37.0/web/dist/chunks/mergeCallbacks-ChLGui_y.js +1 -0
- workpilot-0.37.0/web/dist/chunks/purify.es-Bvo9QlJ8.js +3 -0
- workpilot-0.37.0/web/dist/chunks/useAnimationFrame-DeiqGdx3.js +1 -0
- workpilot-0.37.0/web/dist/chunks/useBrowserTimer-BLaxSrrG.js +1 -0
- workpilot-0.37.0/web/dist/chunks/useCardGridStyles-CYMr4IBm.js +1 -0
- workpilot-0.37.0/web/dist/chunks/useContextSelector-T0H5MvGp.js +1 -0
- workpilot-0.37.0/web/dist/chunks/useFieldControlProps-BOKjlRZM.js +1 -0
- workpilot-0.37.0/web/dist/chunks/useFocusFinders-BBA4gVIn.js +1 -0
- workpilot-0.37.0/web/dist/chunks/useFocusVisible-BVC3pfEE.js +1 -0
- workpilot-0.37.0/web/dist/chunks/useFocusWithin-4_8N_TN7.js +1 -0
- workpilot-0.37.0/web/dist/chunks/useMergeTabsterAttributes-a0TlZ-tx.js +1 -0
- workpilot-0.37.0/web/dist/chunks/useTimeout-D5Zw4E--.js +1 -0
- workpilot-0.37.0/web/dist/chunks/window-B9XFNWhS.js +1 -0
- workpilot-0.37.0/web/dist/index.html +68 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/schema/workpilot-config.schema.json +39 -4
- workpilot-0.37.0/workpilot/agent/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/_bg.py +2 -2
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/bridge.py +190 -140
- workpilot-0.37.0/workpilot/agent/bridge_copilot.py +376 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/browser_resource.py +40 -13
- workpilot-0.37.0/workpilot/agent/browser_sessions.py +296 -0
- workpilot-0.37.0/workpilot/agent/cards/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/code_mode/base.py +10 -1
- workpilot-0.37.0/workpilot/agent/code_mode/event_entrypoint.py +63 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/code_mode/monty.py +22 -4
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/code_mode/stdlib.py +20 -3
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/coding.py +15 -3
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/compaction.py +60 -37
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/consolidation.py +1 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/context.py +18 -3
- workpilot-0.37.0/workpilot/agent/copilot_runtime.py +386 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/history.py +52 -3
- workpilot-0.37.0/workpilot/agent/instances.py +909 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/loop.py +377 -106
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/memory.py +10 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/slash.py +42 -9
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/subagents.py +15 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tool_execution.py +255 -10
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/agent.py +12 -3
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/browser.py +225 -172
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/browser_code.py +72 -11
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/claude_code.py +46 -64
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/config_workpilot.py +4 -1
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/copilot.py +388 -536
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/cron.py +61 -6
- workpilot-0.37.0/workpilot/agent/tools/events.py +268 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/git.py +3 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/msgraph.py +29 -4
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/read_session.py +7 -12
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/registry.py +30 -26
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/run_code.py +100 -15
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/shell.py +56 -37
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/web.py +16 -16
- workpilot-0.37.0/workpilot/agents/bundled/Browser.md +94 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/bus/events.py +1 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/channels/_cloud_attachments.py +2 -2
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/channels/cloud.py +30 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/channels/manager.py +9 -1
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/commands.py +22 -8
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/cron.py +7 -0
- workpilot-0.37.0/workpilot/cli/hooks.py +210 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/init.py +3 -2
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/sessions.py +25 -22
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/update.py +4 -1
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/config/loader.py +55 -3
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/config/management.py +5 -1
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/config/schema.py +42 -15
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cron/heartbeat.py +11 -1
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cron/job.py +63 -6
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cron/job_md.py +48 -7
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cron/service.py +390 -38
- workpilot-0.37.0/workpilot/defaults/_EVENT_HANDOFF.md +25 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/defaults/_SECURITY_SHELL.md +22 -4
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/defaults/workpilot-config.schema.json +39 -4
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/defaults/workpilot.yaml +11 -4
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/desktop/updates.py +12 -4
- workpilot-0.37.0/workpilot/events/__init__.py +1 -0
- workpilot-0.37.0/workpilot/events/context.py +92 -0
- workpilot-0.37.0/workpilot/events/models.py +357 -0
- workpilot-0.37.0/workpilot/events/runner.py +126 -0
- workpilot-0.37.0/workpilot/events/scheduling.py +473 -0
- workpilot-0.37.0/workpilot/events/service.py +883 -0
- workpilot-0.37.0/workpilot/events/store.py +520 -0
- workpilot-0.37.0/workpilot/events_runtime.py +368 -0
- workpilot-0.37.0/workpilot/hooks/__init__.py +59 -0
- workpilot-0.37.0/workpilot/hooks/executor.py +300 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/hooks/handlers.py +386 -46
- workpilot-0.37.0/workpilot/hooks/loader.py +282 -0
- workpilot-0.37.0/workpilot/hooks/manager.py +420 -0
- workpilot-0.37.0/workpilot/hooks/models.py +135 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/plugins/loader.py +42 -7
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/providers/client.py +61 -1
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/providers/model_catalog.py +7 -3
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/providers/transport.py +92 -31
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/runtime.py +820 -173
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/approval.py +16 -2
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/approval_format.py +70 -2
- workpilot-0.37.0/workpilot/security/auto_approval.py +358 -0
- workpilot-0.37.0/workpilot/security/data/__init__.py +0 -0
- workpilot-0.37.0/workpilot/security/event_authority.py +70 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/rbac.py +1 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/risk.py +12 -1
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/sandbox.py +10 -1
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/scorer.py +8 -2
- workpilot-0.37.0/workpilot/security/ssrf.py +150 -0
- workpilot-0.37.0/workpilot/security/turn_trust.py +154 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/url_classify.py +10 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/session/bridge_store.py +4 -9
- workpilot-0.37.0/workpilot/session/jsonl.py +33 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/session/manager.py +39 -62
- workpilot-0.37.0/workpilot/skills/bundled/__init__.py +0 -0
- workpilot-0.37.0/workpilot/skills/bundled/event-automation.md +179 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/workpilot-feedback.md +1 -1
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/workpilot-maintenance.md +2 -2
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/loader.py +6 -0
- workpilot-0.37.0/workpilot/utils/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/defaults.py +2 -1
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/auth.py +11 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/__init__.py +8 -0
- workpilot-0.37.0/workpilot/web/handlers/agents.py +203 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/approvals.py +49 -45
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/clarifications.py +16 -0
- workpilot-0.37.0/workpilot/web/handlers/configuration.py +324 -0
- workpilot-0.37.0/workpilot/web/handlers/events.py +316 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/schedule.py +32 -15
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/sessions.py +4 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/server.py +120 -1
- workpilot-0.35.2/docs/security/approvals.md +0 -119
- workpilot-0.35.2/web/dist/app-C21mYjTW.css +0 -1
- workpilot-0.35.2/web/dist/app-CsXAYX_C.js +0 -18
- workpilot-0.35.2/web/dist/chunks/KnowledgeView-D5kr0gY3.js +0 -1
- workpilot-0.35.2/web/dist/chunks/ModelsView-UPKC5cS_.js +0 -1
- workpilot-0.35.2/web/dist/chunks/PromptsView-Cu7mFy8a.js +0 -1
- workpilot-0.35.2/web/dist/chunks/ScheduleDetailView-Cbe9k37h.js +0 -1
- workpilot-0.35.2/web/dist/chunks/ScheduleView-CC2TGFb_.js +0 -1
- workpilot-0.35.2/web/dist/chunks/SecurityView-Cz0NTGmF.js +0 -3
- workpilot-0.35.2/web/dist/chunks/SessionsView-CUTdXRcI.js +0 -1
- workpilot-0.35.2/web/dist/chunks/SettingsView-xgr3Wfg9.js +0 -4
- workpilot-0.35.2/web/dist/chunks/SkillsView-CC0lFI0P.js +0 -1
- workpilot-0.35.2/web/dist/chunks/StatusView-WTOTBpK2.js +0 -1
- workpilot-0.35.2/web/dist/chunks/StoreView-Ci8YpeWT.js +0 -10
- workpilot-0.35.2/web/dist/chunks/ToolsView-BFo4vtm6.js +0 -1
- workpilot-0.35.2/web/dist/chunks/UsageView-D-xb1rlz.js +0 -3
- workpilot-0.35.2/web/dist/chunks/common-BgaUHuMn.js +0 -43
- workpilot-0.35.2/web/dist/chunks/purify.es-7fJ1DZ6H.js +0 -3
- workpilot-0.35.2/web/dist/chunks/window-DQtQZoVn.js +0 -1
- workpilot-0.35.2/web/dist/index.html +0 -32
- workpilot-0.35.2/workpilot/agent/bridge_copilot.py +0 -526
- workpilot-0.35.2/workpilot/agents/bundled/Browser.md +0 -57
- workpilot-0.35.2/workpilot/hooks/__init__.py +0 -21
- workpilot-0.35.2/workpilot/hooks/manager.py +0 -243
- workpilot-0.35.2/workpilot/security/ssrf.py +0 -319
- workpilot-0.35.2/workpilot/security/turn_trust.py +0 -41
- {workpilot-0.35.2 → workpilot-0.37.0}/.gitignore +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/README.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/browser_agent/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/browser_agent/network.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/browser_agent/proxy.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/browser_agent/runtime.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/agents/subagents.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/automation/heartbeat.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/channels/teams.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/channels/tui.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/agents.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/attachments.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/chat.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/cloud.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/config.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/cron.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/doctor.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/logs.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/mcp.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/memory.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/plugins.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/run.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/secrets.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/security.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/serve.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/service.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/sessions.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/skills.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/status.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/teams.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/tools.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/cli/version.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/configuration/customization.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/configuration/providers.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/contributing/api.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/contributing/cloud-gateway-deployment.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/contributing/documentation.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/contributing/feedback-routing.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/extend/mcp.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/extend/plugins.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/extend/skills.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/feedback.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/gateways/cloud.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/gateways/self-hosting.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/security/audit-and-estop.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/security/authentication.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/security/secrets.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/storage/attachments.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/tools/microsoft-graph.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/docs/tools/web-search.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/hatch_build.py +0 -0
- /workpilot-0.35.2/web/dist/app-B5GQoc8V.css → /workpilot-0.37.0/web/dist/app-9Sk3b3Pl.css +0 -0
- /workpilot-0.35.2/web/dist/app-BG0MnlsF.css → /workpilot-0.37.0/web/dist/app-B5GQoc8V.css +0 -0
- /workpilot-0.35.2/web/dist/app-BMpGkMxz.css → /workpilot-0.37.0/web/dist/app-BCIpmu3M.css +0 -0
- /workpilot-0.35.2/web/dist/app-BjBgkMUd.css → /workpilot-0.37.0/web/dist/app-BG0MnlsF.css +0 -0
- /workpilot-0.35.2/web/dist/app-BmPNfp5q.css → /workpilot-0.37.0/web/dist/app-BMpGkMxz.css +0 -0
- /workpilot-0.35.2/web/dist/app-CBRs0pqs.css → /workpilot-0.37.0/web/dist/app-BiTj5w54.css +0 -0
- /workpilot-0.35.2/web/dist/app-CeVx_1Uc.css → /workpilot-0.37.0/web/dist/app-BjBgkMUd.css +0 -0
- /workpilot-0.35.2/web/dist/app-Cr6SPxVu.css → /workpilot-0.37.0/web/dist/app-BmPNfp5q.css +0 -0
- /workpilot-0.35.2/web/dist/app-CrphASwR.css → /workpilot-0.37.0/web/dist/app-BoA41zjD.css +0 -0
- /workpilot-0.35.2/web/dist/app-DnejMwtf.css → /workpilot-0.37.0/web/dist/app-Bwhb2CXy.css +0 -0
- /workpilot-0.35.2/web/dist/app-J0wEnVQ9.css → /workpilot-0.37.0/web/dist/app-ByM9P1Eh.css +0 -0
- /workpilot-0.35.2/web/dist/app-X0K9ZNVl.css → /workpilot-0.37.0/web/dist/app-CBRs0pqs.css +0 -0
- /workpilot-0.35.2/web/dist/app-orwSkC5k.css → /workpilot-0.37.0/web/dist/app-CExcdCxf.css +0 -0
- /workpilot-0.35.2/web/dist/app-s3Wdl3G6.css → /workpilot-0.37.0/web/dist/app-CHBQLV_M.css +0 -0
- /workpilot-0.35.2/workpilot/agent/__init__.py → /workpilot-0.37.0/web/dist/app-CMxsATC4.css +0 -0
- /workpilot-0.35.2/workpilot/agent/cards/__init__.py → /workpilot-0.37.0/web/dist/app-CRehheLC.css +0 -0
- /workpilot-0.35.2/workpilot/security/data/__init__.py → /workpilot-0.37.0/web/dist/app-CWtPr-2m.css +0 -0
- /workpilot-0.35.2/workpilot/skills/bundled/__init__.py → /workpilot-0.37.0/web/dist/app-Cr6SPxVu.css +0 -0
- /workpilot-0.35.2/workpilot/utils/__init__.py → /workpilot-0.37.0/web/dist/app-CrphASwR.css +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/auth-callback.html +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/BrowserPerformanceMeasurement-BDzbW3oA.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/_hljs-langs-Dc_1zEsH.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/dist-0H8Ur5Q4.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/1c-73lFXAp6.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/abnf-CSrFSEx0.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/accesslog-Dv0yWYFF.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/actionscript-1l-8ymtB.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/ada-C4qX_6Ry.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/angelscript-KNgW1fZo.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/apache-Dh9PJFmJ.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/applescript-BcBB30ub.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/arcade-bShcHfOZ.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/arduino-BqwItFkb.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/armasm-D3oKByup.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/asciidoc-Qa3iLJWP.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/aspectj-Bjg1FiVd.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/autohotkey-BW462adD.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/autoit-DwUuKi_Q.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/avrasm-CHTJ6C4a.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/awk-D463B8d-.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/axapta-p7Fa3A78.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/basic-oUUdvLrs.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/bnf-CWGByNpv.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/brainfuck-CkSV9Luo.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/cal-DTzUSEH8.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/capnproto-DvbP7u24.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/ceylon-dTiwAriW.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/clean-zdpkyKaR.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/clojure-CR7dvLJ4.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/clojure-repl-aHBM9jLK.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/cmake-CgP6gB4W.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/coffeescript-p0dfWXuO.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/coq-rqf_V7Lc.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/cos-PigSugnL.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/crmsh-CR9tZ93c.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/crystal-DyGSoxxU.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/csp-Bfnlcs7r.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/d-CXnZM-Nf.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/dart-Do_01MLp.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/delphi-BzWcX1gm.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/django-Dxj7e8BX.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/dns-Dz97dZh0.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/dockerfile-C0zufGsU.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/dos-DfZf_1de.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/dsconfig-BQvSqJrQ.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/dts-D-4KA1m9.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/dust-BCRbq8jp.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/ebnf-BmerogBf.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/elixir-DXIHlGsR.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/elm-BOkolQqs.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/erb-DptdJbGO.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/erlang-BjYI8dhz.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/erlang-repl-LZCIum1w.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/excel-BI2r-hyN.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/fix-BSf_7YOu.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/flix-DOTrSD3H.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/fortran-tuAJdZsI.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/freedesktop-D80i-mP2.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/fsharp-CvvkikEj.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/gams-CEFdYGQ4.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/gauss-Cu9sx8W2.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/gcode-DVi5cKOT.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/gherkin-BXFuf_vg.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/glsl-Boj4HSji.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/gml-5I1j5qRd.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/golo-CR1Ogma7.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/gradle-DeCngaqu.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/groovy-DaJmaWG6.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/haml-lM-YLvZH.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/handlebars-DJqXWVRL.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/haskell-DUkhXIda.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/haxe-qGz9CBa_.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/hsp-DJFrA4nv.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/http-DdjbPXam.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/hy-jK6vAkqq.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/inform7-C3EegiWg.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/irpf90-Wu2ux-Fn.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/isbl-D8SR3GGH.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/jboss-cli-CSRnPoYO.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/julia-C_UcIgej.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/julia-repl-Hj_vmM07.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/kotlin-DgSK8bu-.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/lasso-3ymKbqSp.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/latex-ifxXhTOO.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/ldif-Dg6dmf5K.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/leaf-7ZZ5wCnn.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/less-Bp0mgmpG.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/lisp-RAPfxQzG.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/livecodeserver-C_mGJ3Jy.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/livescript-ClNaFHRt.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/llvm-OW2Pjs3T.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/lsl-DGokiC3s.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/lua-1dXYaL-H.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/makefile-BX-o3EIz.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/mathematica-FGVCSpsQ.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/matlab-DkTKhn5C.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/maxima-DqHi-6vF.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/mel-DZJEcL8n.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/mercury-DRbqW1u4.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/mipsasm-CElFSg8P.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/mizar-Dh71fdD_.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/mojolicious-tYyfRjr6.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/monkey-BCEr2jAI.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/moonscript-BGRQnnF2.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/n1ql-BLbzjUaV.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/nestedtext-DGs-X5Vp.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/nginx-B1pH5dXO.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/nim-BGBfXPIx.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/nix-CR3yefiA.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/node-repl-Vgr6fxPS.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/nsis-UYRebJNT.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/objectivec-DLXDdhyK.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/ocaml-B-P1Uyq8.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/openscad-JVA7wRWo.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/oxygene-upDuL0ca.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/parser3-BpsPHbGc.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/perl-CvqMZYuf.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/pf-Hak9sRVf.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/pgsql-BJ2OcN8V.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/php-DuZl5e-L.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/php-template-8u8Pml-P.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/pony-CpMp0mBm.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/processing-BD9AMQkN.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/profile-BWVYCPTK.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/prolog-CpiLaDrO.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/properties-C_5_0OWv.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/protobuf-DGOW1qT8.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/puppet-DEWZKVv3.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/purebasic-CRcZGluc.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/python-repl-D5uGO-jm.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/q-B3koHNzP.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/qml-CjhsRFLe.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/r-DNWPCnjT.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/reasonml-CJ1TLoQF.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/rib-hKzGh-52.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/roboconf-CaM3tfvi.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/routeros-iLCLl-5n.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/rsl-Da8STgqx.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/ruby-BGpZ3p4_.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/ruleslanguage-ZpNubZZ_.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/sas-DEdPwm2c.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/scala-C9lP4FWY.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/scheme-BXgVOBG5.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/scilab-B4bepPhE.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/scss-gOyOKiXd.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/smali--7SxcPXF.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/smalltalk-DSQwiuj1.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/sml-Bqj0DVIt.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/sqf-BaWmPklZ.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/stan-aGu1RaYf.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/stata-BakFZ2ml.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/step21-1CIrbR2Q.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/stylus-ueqB8vk5.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/subunit-DV7smCjo.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/swift-BTn9__hL.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/taggerscript-YlWmQdSJ.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/tap-NqH9ctA4.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/tcl-CiO3JXx7.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/thrift-DO8eeo3I.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/tp-BkW-mzl-.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/twig-CP1rWjpH.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/vala-wv2tBZQi.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/vbnet-BiMsFFN_.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/vbscript-BahAjTwm.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/vbscript-html-DQKGwi3G.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/verilog-Ke-GOEW9.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/vhdl-CaU6e6N4.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/vim-Dhhcn_CA.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/wasm-hBR4I1od.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/wren-B1F_0bnw.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/x86asm-p0pDTEuW.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/xl-xylFSQAW.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/xquery-Dr9rmg8t.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs/zephir-CJH3ep_3.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/hljs-CLaOA3Zl.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/marked.esm-D7dwggTa.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/rolldown-runtime-hePW80VL.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/chunks/vendor-react-Dn9Luu3B.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/logo.svg +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/web/dist/msal-redirect-bridge.min.js +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/__main__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/bridge_claude.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/browser_runtime.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/cards/builders.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/cards/chip_strategy.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/cards/status.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/cards/types.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/clarify_match.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/clarify_render.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/code_mode/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/interactive_router.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/interrupt.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/loop_detect.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/mid_run.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/output_parser.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/reminders.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tool_scope.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/_browser_emulation.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/_delegate_notify.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/_shared.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/base.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/bridge.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/clarify.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/coding_task.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/concurrency.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/defer_delivery.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/filesystem.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/notify.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/search_history.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/search_workpilot_docs.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/spawn.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/task_status.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/tools.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/tools/update.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/truncation.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agent/typing.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agents/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agents/builtin.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agents/bundled/FileSearch.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agents/bundled/HistorySession.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agents/bundled/WorkPilotSupport.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agents/github.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agents/loader.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agents/shortener.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/agents/tool_categories.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/bus/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/bus/queue.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/bus/streaming.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/channels/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/channels/_cloud_allowlist.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/channels/_cloud_throttle.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/channels/base.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/channels/cli.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/channels/conv_ref_store.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/channels/web.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/agents.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/attachments.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/browser.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/chat.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/doctor.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/mcp.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/mcp_setup.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/memory.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/msgraph.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/plugins.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/prompts.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/security.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/serve.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/service.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/skills.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/teams.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cli/tools.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/config/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/config/action_plan.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cron/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cron/crontab_compat.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cron/misfire.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/cron/tz_migration.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/defaults/AGENTS.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/defaults/COMPACTION.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/defaults/GROUPING.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/defaults/HEARTBEAT.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/defaults/MEMORY.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/defaults/MERGE_SUMMARY.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/defaults/RESPONSE.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/defaults/SOUL.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/defaults/TOOLS.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/defaults/USER.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/defaults/_CONSOLIDATION.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/defaults/_RECOMPRESSION.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/defaults/_SECURITY.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/defaults/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/desktop/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/desktop/backend.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/mcp/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/mcp/adapter.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/mcp/auth.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/mcp/client.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/mcp/defaults.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/mcp/health.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/mcp/manager.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/mcp/oauth_callback.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/mcp/oauth_provider.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/mcp/oauth_storage.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/mcp/protocol.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/mcp/store.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/mcp/transport.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/mcp/types.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/plugins/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/plugins/store.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/product_docs/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/product_docs/__main__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/product_docs/corpus.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/providers/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/providers/base.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/providers/copilot_web_search.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/providers/reasoning.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/providers/resolver.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/providers/usage.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/runtime_status.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/allowlist.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/allowlist_presets.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/attachments.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/audit.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/binary_frame.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/clarify.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/data/url_classify.json +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/destructive.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/estop.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/execution_directories.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/github_auth.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/leak.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/migrate.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/relay_validator.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/sanitizer.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/secrets.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/secrets_env.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/secrets_fernet.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/secrets_keyring.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/self_governance.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/sensitive.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/short_id.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/task_approval.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/security/zw_id.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/service/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/service/linux.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/service/macos.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/service/manager.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/service/models.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/service/native.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/service/windows.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/session/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/session/artifacts.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/ado.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/azure-ops.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/calendar-lookup.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/cloud-apply.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/docx.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/github.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/msgraph-api/SKILL.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/msgraph-api/references/calendar.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/msgraph-api/references/files.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/msgraph-api/references/mail.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/msgraph-api/references/people.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/msgraph-api/references/productivity.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/msgraph-api/references/teams.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/pptx.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/read-remote-document.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/sharepoint-pptx.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/teams-message/SKILL.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/teams-message/references/advanced.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/teams-message/references/targets.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/bundled/xlsx.md +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/shortener.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/store.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/skills/universal.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/auth.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/cloud_verify.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/devbox_keepalive.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/frozen_runtime.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/helpers.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/html.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/identity.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/input.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/json_truncate.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/llm_shortener.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/log_context.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/logging.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/markdown_frontmatter.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/msgraph_scopes.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/msgraph_token.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/package_index.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/playwright_node.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/sleep_inhibitor.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/token_errors.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/update.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/utils/wam_token.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/__init__.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/estop_middleware.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/_common.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/admin.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/config.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/mcp_connections.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/mcp_store.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/memory.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/models.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/plugins_store.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/prompts.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/skills.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/skills_store.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/status.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/telemetry.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/handlers/tools.py +0 -0
- {workpilot-0.35.2 → workpilot-0.37.0}/workpilot/web/middleware.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: workpilot
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.37.0
|
|
4
4
|
Summary: Enterprise AI assistant — internal preview only
|
|
5
5
|
Project-URL: Homepage, https://aka.ms/workpilot
|
|
6
6
|
Project-URL: Documentation, https://gim-home.github.io/WorkPilot/
|
|
@@ -12,7 +12,7 @@ Requires-Dist: apscheduler>=3.11
|
|
|
12
12
|
Requires-Dist: beautifulsoup4>=4.14
|
|
13
13
|
Requires-Dist: fastapi>=0.135
|
|
14
14
|
Requires-Dist: filelock>=3.32.5
|
|
15
|
-
Requires-Dist: github-copilot-sdk
|
|
15
|
+
Requires-Dist: github-copilot-sdk<2,>=1.0.16
|
|
16
16
|
Requires-Dist: httptools>=0.8.0
|
|
17
17
|
Requires-Dist: httpx2>=2.12.0
|
|
18
18
|
Requires-Dist: jsonschema>=4.20
|
|
@@ -22,13 +22,14 @@ Requires-Dist: markdownify>=1.2
|
|
|
22
22
|
Requires-Dist: mcp<3,>=2.1.1
|
|
23
23
|
Requires-Dist: msal>=1.35.1; sys_platform == 'linux' and platform_machine == 'aarch64'
|
|
24
24
|
Requires-Dist: msal[broker]>=1.35.1; sys_platform != 'linux' or platform_machine != 'aarch64'
|
|
25
|
-
Requires-Dist: playwright>=1.
|
|
25
|
+
Requires-Dist: playwright>=1.59
|
|
26
26
|
Requires-Dist: prompt-toolkit>=3.0
|
|
27
|
-
Requires-Dist: pydantic-monty==0.0
|
|
27
|
+
Requires-Dist: pydantic-monty==1.0.0
|
|
28
28
|
Requires-Dist: pydantic<3,>=2.12
|
|
29
29
|
Requires-Dist: pyjwt[crypto]>=2.8
|
|
30
30
|
Requires-Dist: python-multipart>=0.0.9
|
|
31
31
|
Requires-Dist: pyyaml>=6.0
|
|
32
|
+
Requires-Dist: referencing>=0.36
|
|
32
33
|
Requires-Dist: rich>=14.3
|
|
33
34
|
Requires-Dist: tiktoken>=0.9
|
|
34
35
|
Requires-Dist: typer>=0.24
|
|
@@ -38,11 +38,15 @@ class BrowserLocator(BaseModel):
|
|
|
38
38
|
by: Literal["css", "role", "label", "text", "test_id"]
|
|
39
39
|
value: str = Field(min_length=1, max_length=300)
|
|
40
40
|
name: str | None = Field(default=None, max_length=300)
|
|
41
|
+
exact: bool = False
|
|
42
|
+
nth: int | None = Field(default=None, ge=0)
|
|
41
43
|
|
|
42
44
|
@model_validator(mode="after")
|
|
43
45
|
def compatible_name(self) -> Self:
|
|
44
46
|
if self.by != "role" and "name" in self.model_fields_set:
|
|
45
47
|
raise ValueError("only role locators accept a name")
|
|
48
|
+
if self.by not in {"role", "label", "text"} and "exact" in self.model_fields_set:
|
|
49
|
+
raise ValueError("only role, label and text locators accept exact")
|
|
46
50
|
return self
|
|
47
51
|
|
|
48
52
|
|
|
@@ -4,6 +4,19 @@
|
|
|
4
4
|
|
|
5
5
|
Bridge mode lets you drop out of WorkPilot's own agent loop for a session and talk directly to Claude Code or the GitHub Copilot CLI instead, while keeping the same terminal, channel, and audit trail.
|
|
6
6
|
|
|
7
|
+
## Switch to a persistent WorkPilot agent
|
|
8
|
+
|
|
9
|
+
After creating an agent in the local/desktop **Agents** page, use `/bridge research` to
|
|
10
|
+
continue its independent conversation. Use `/bridge off` to return to the main assistant.
|
|
11
|
+
`@research message` is the one-shot equivalent and leaves the current bridge selection
|
|
12
|
+
unchanged, including when another internal or external agent is selected.
|
|
13
|
+
|
|
14
|
+
Internal agents still execute through WorkPilot's normal tools, skills and approvals.
|
|
15
|
+
The external-CLI permission behavior below applies only to `claude` and `copilot`.
|
|
16
|
+
`/pause`, `/resume`, `/stop` and `/status` control a selected internal agent; prefix them
|
|
17
|
+
with `@name` for a one-shot control, for example `@research /stop`.
|
|
18
|
+
See [Persistent agents](overview.md#persistent-agents).
|
|
19
|
+
|
|
7
20
|
## Why use it
|
|
8
21
|
|
|
9
22
|
Normally, WorkPilot's agent loop reasons about your request and calls tools, including the
|
|
@@ -19,6 +32,7 @@ From the `you>` prompt:
|
|
|
19
32
|
```text
|
|
20
33
|
/bridge claude # bridge to Claude Code
|
|
21
34
|
/bridge copilot # bridge to the GitHub Copilot CLI
|
|
35
|
+
/bridge copilot --fresh # create a distinct native conversation, even while bridged
|
|
22
36
|
/bridge off # exit bridge mode, return to the normal agent loop
|
|
23
37
|
```
|
|
24
38
|
|
|
@@ -42,19 +56,47 @@ itself or session-level behavior rather than the underlying tool:
|
|
|
42
56
|
- `/reset` — reset E-stop
|
|
43
57
|
- `/exit`, `/quit`, or `/bye` — aliases for `/bridge off`
|
|
44
58
|
|
|
59
|
+
## Copilot conversation and output
|
|
60
|
+
|
|
61
|
+
`/bridge copilot resume=<id>` resumes a specific native conversation. Ordinary re-entry
|
|
62
|
+
can resume the last conversation from the Bridge transcript. A fresh entry creates a
|
|
63
|
+
unique native ID without deleting previous history. WorkPilot starts fresh automatically
|
|
64
|
+
only when native metadata confirms the requested history is missing, not when discovery
|
|
65
|
+
or resume fails.
|
|
66
|
+
|
|
67
|
+
`/model <name>` switches the live native model while preserving history. `/model default`
|
|
68
|
+
clears WorkPilot's pin but leaves a live or resumed Copilot conversation on its current
|
|
69
|
+
native selection. Use a fresh, unpinned conversation to select the CLI default.
|
|
70
|
+
Unavailable discovery is shown explicitly; static model suggestions are not claims of
|
|
71
|
+
current availability.
|
|
72
|
+
|
|
73
|
+
Streaming surfaces receive ordered, credential-redacted root assistant text. Subagent
|
|
74
|
+
output, reasoning, and raw tool arguments are not forwarded. Every turn still has an
|
|
75
|
+
authoritative final response; Teams receives only that buffered response.
|
|
76
|
+
|
|
77
|
+
Cancelling a Copilot turn requests native `abort()` before finishing local cleanup.
|
|
78
|
+
`/bg` leaves the active Copilot turn running and keeps its conversation reserved until
|
|
79
|
+
completion; resume that conversation after it finishes. E-stop and shutdown also cancel
|
|
80
|
+
detached Bridge turns. Runtime shutdown closes discovery-only SDK clients as well.
|
|
81
|
+
If native abort fails, WorkPilot reports that work may still be running and retains the
|
|
82
|
+
conversation reservation until a confirmed stop or runtime shutdown.
|
|
83
|
+
|
|
45
84
|
## Requirements
|
|
46
85
|
|
|
47
86
|
- **Claude Code bridge**: requires WorkPilot installed with the optional `all` extra — see
|
|
48
87
|
[Install](../getting-started/install.md) and [Claude Code tasks](claude-code.md).
|
|
49
|
-
- **Copilot bridge**: requires a GitHub Copilot subscription and
|
|
88
|
+
- **Copilot bridge**: requires a GitHub Copilot subscription and native GitHub authentication
|
|
89
|
+
or a configured token — see [Copilot tasks](github-copilot.md).
|
|
50
90
|
|
|
51
91
|
## Security
|
|
52
92
|
|
|
53
93
|
Entering Bridge mode is itself risk-gated and audited. While bridged, WorkPilot's normal
|
|
54
94
|
tool registry and per-tool approval pipeline are not orchestrating the external CLI; the
|
|
55
|
-
bridge integration instead bypasses Claude permission prompts and
|
|
56
|
-
Copilot permission requests.
|
|
57
|
-
|
|
95
|
+
bridge integration instead bypasses Claude permission prompts and approves ordinary unresolved
|
|
96
|
+
Copilot permission requests. Native Copilot rules still apply, and enterprise-managed
|
|
97
|
+
requests requiring human approval are never auto-approved. Treat the risk approval for
|
|
98
|
+
entering Bridge mode as authorization for ordinary native tool use, not a bypass of
|
|
99
|
+
managed policy.
|
|
58
100
|
WorkPilot still enforces channel authentication, credential redaction, outbound safety hooks,
|
|
59
101
|
and E-stop. Session history records the bridge timeline, while the per-turn audit event stores
|
|
60
102
|
metadata and a prompt hash rather than the prompt body. See
|
|
@@ -16,7 +16,7 @@ workpilot_search:
|
|
|
16
16
|
|
|
17
17
|
> [中文版](../zh-cn/agents/claude-code.md)
|
|
18
18
|
|
|
19
|
-
WorkPilot can delegate coding tasks to Claude Code using the `claude_code` tool
|
|
19
|
+
WorkPilot can delegate coding tasks to Claude Code using the `claude_code` tool. This lets the agent run code, review, test, research, and refactor tasks in the background using Anthropic's Claude models via the Claude Agent SDK.
|
|
20
20
|
|
|
21
21
|
::: tip Ask WorkPilot
|
|
22
22
|
```text
|
|
@@ -39,7 +39,7 @@ available before WorkPilot can delegate.
|
|
|
39
39
|
- Claude Code enabled in config (`tools.claude_code.enabled: true`, the default)
|
|
40
40
|
|
|
41
41
|
This is the **only** part of WorkPilot gated behind an optional install extra — the base
|
|
42
|
-
install works without it. The `claude_code`
|
|
42
|
+
install works without it. The `claude_code` tool registers only when both the SDK and CLI
|
|
43
43
|
binary are available.
|
|
44
44
|
|
|
45
45
|
## How it works
|
|
@@ -60,11 +60,13 @@ failed, preserving any partial result that was already received.
|
|
|
60
60
|
|
|
61
61
|
### claude_code
|
|
62
62
|
|
|
63
|
-
Submits
|
|
63
|
+
Submits tasks and checks their status. Omit `action` to submit a task.
|
|
64
64
|
|
|
65
65
|
| Parameter | Type | Description |
|
|
66
66
|
|-----------|------|-------------|
|
|
67
|
-
| `
|
|
67
|
+
| `action` | string | `submit` (default) or `status` (read-only) |
|
|
68
|
+
| `task_id` | string | For `status`: task ID to check; omit to list all tasks |
|
|
69
|
+
| `task` | string | Description of what to do; required only for `submit` |
|
|
68
70
|
| `task_type` | string | `code` (default), `review`, `test`, `refactor`, or `research` |
|
|
69
71
|
| `files` | list | Files relevant to the task (optional) |
|
|
70
72
|
| `mode` | string | `background` (default) or `wait` |
|
|
@@ -78,13 +80,15 @@ Submits a task to Claude Code.
|
|
|
78
80
|
| `agent` | string | Claude sub-agent name to invoke |
|
|
79
81
|
| `effort` | string | Reasoning effort override |
|
|
80
82
|
|
|
81
|
-
###
|
|
83
|
+
### Status queries
|
|
82
84
|
|
|
83
|
-
|
|
85
|
+
Use `claude_code(action="status", task_id="...")` to check a running or completed task.
|
|
86
|
+
Omit `task_id` to list all tasks. Status queries need no `task` description, score 0, and
|
|
87
|
+
do not require approval.
|
|
84
88
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
89
|
+
The separate `claude_code_status` tool is no longer registered. Update old calls and
|
|
90
|
+
tool-name configuration references explicitly; status-only permissions are not
|
|
91
|
+
automatically widened to allow task submission.
|
|
88
92
|
|
|
89
93
|
## Task types
|
|
90
94
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> [中文版](../zh-cn/agents/github-copilot.md)
|
|
4
4
|
|
|
5
|
-
WorkPilot can delegate coding tasks to GitHub Copilot using the `github_copilot` tool
|
|
5
|
+
WorkPilot can delegate coding tasks to GitHub Copilot using the `github_copilot` tool. This lets the agent run code, review, test, and refactor tasks in the background while you continue working.
|
|
6
6
|
|
|
7
7
|
These are **local CLI/SDK tasks**, not GitHub-hosted cloud-agent tasks. For Issue
|
|
8
8
|
triage, cloud agents, and delivery tracking, see
|
|
@@ -26,6 +26,8 @@ WorkPilot cannot create the subscription or enter credentials for you.
|
|
|
26
26
|
|
|
27
27
|
- A GitHub Copilot subscription
|
|
28
28
|
- GitHub authentication through a configured token or `gh auth login`
|
|
29
|
+
- WorkPilot's supported `github-copilot-sdk>=1.0.16,<2` dependency; the SDK provisions
|
|
30
|
+
its local runtime unless `tools.copilot.cli_path` selects an installed CLI
|
|
29
31
|
|
|
30
32
|
## How it works
|
|
31
33
|
|
|
@@ -34,36 +36,51 @@ When you ask WorkPilot to implement a feature, write tests, or review code, it c
|
|
|
34
36
|
Tasks can run in the background (you get a task ID and check back later) or in wait mode.
|
|
35
37
|
Wait mode has a soft cap (`tools.copilot.wait_timeout`, default 900 seconds); after the cap,
|
|
36
38
|
the Copilot session continues in the background and delivers its result later.
|
|
39
|
+
Interrupting the WorkPilot waiter also detaches it; E-stop, runtime shutdown, and the
|
|
40
|
+
hard task timeout request native cancellation instead. `task_timeout: 0` retains a
|
|
41
|
+
one-hour hard cap, including time spent sending the request.
|
|
37
42
|
|
|
38
43
|
## Tool reference
|
|
39
44
|
|
|
40
45
|
### github_copilot
|
|
41
46
|
|
|
42
|
-
|
|
47
|
+
One tool supports three actions. `submit` is the default when `action` is omitted;
|
|
48
|
+
`status` and `models` are read-only queries and do not require a task description.
|
|
43
49
|
|
|
44
50
|
| Parameter | Type | Description |
|
|
45
51
|
|-----------|------|-------------|
|
|
46
|
-
| `
|
|
52
|
+
| `action` | string | `submit` (default), `status`, or `models` |
|
|
53
|
+
| `task_id` | string | For `status`: task to inspect; omit to list live and historical tasks |
|
|
54
|
+
| `task` | string | Required for `submit`: description of what to do |
|
|
47
55
|
| `task_type` | string | `code`, `review`, `test`, or `refactor` |
|
|
48
56
|
| `files` | list | Files relevant to the task (optional) |
|
|
49
57
|
| `workdir` | string | Working directory override; paths outside the workspace raise risk |
|
|
50
58
|
| `mode` | string | `background` (default) or `wait` |
|
|
51
59
|
| `model` | string | Model to use (optional, defaults to per-type policy) |
|
|
52
60
|
| `resume_task_id` | string | Resume a previous task (optional) |
|
|
53
|
-
| `agent` | string | Copilot custom-agent name |
|
|
61
|
+
| `agent` | string | Copilot custom-agent name, passed through the SDK's native agent option |
|
|
54
62
|
| `auto_approve` | bool/null | Per-task preference for unresolved grey-area tool requests; it can tighten, never loosen, operator configuration |
|
|
55
63
|
|
|
56
|
-
###
|
|
64
|
+
### Check status
|
|
57
65
|
|
|
58
|
-
|
|
66
|
+
Use `github_copilot(action="status", task_id="...")` to inspect a task, or omit
|
|
67
|
+
`task_id` to list tasks. Output includes the WorkPilot task ID, native Copilot session
|
|
68
|
+
ID, working directory, and known run state. After a restart, a saved binding is
|
|
69
|
+
labelled historical rather than reported as an actively monitored run.
|
|
59
70
|
|
|
60
|
-
|
|
61
|
-
|-----------|------|-------------|
|
|
62
|
-
| `task_id` | string | Task ID to check (optional — lists all tasks if omitted) |
|
|
71
|
+
### List models
|
|
63
72
|
|
|
64
|
-
|
|
73
|
+
Use `github_copilot(action="models")` to list models available to the current
|
|
74
|
+
authentication, with context/prompt limits and billing multipliers. Discovery errors
|
|
75
|
+
are reported explicitly rather than disguised as an empty list.
|
|
65
76
|
|
|
66
|
-
|
|
77
|
+
### Old tool names
|
|
78
|
+
|
|
79
|
+
`github_copilot_status` and `github_copilot_models` are removed. Replace calls with the
|
|
80
|
+
corresponding actions. Existing configuration references are automatically normalized
|
|
81
|
+
to `github_copilot` with a deprecation warning, using the standard tool-name alias
|
|
82
|
+
mechanism. Configuration applies to the unified tool; submission and query actions
|
|
83
|
+
keep their existing risk and approval rules.
|
|
67
84
|
|
|
68
85
|
## Task types
|
|
69
86
|
|
|
@@ -83,6 +100,10 @@ Lists available GitHub Copilot models and their context limits. No parameters re
|
|
|
83
100
|
| test | claude-haiku-4.5 |
|
|
84
101
|
| refactor | claude-sonnet-4.6 |
|
|
85
102
|
|
|
103
|
+
An explicit `model` overrides this policy. An unset per-type policy leaves model
|
|
104
|
+
selection to the native CLI; resuming an unpinned conversation preserves its native
|
|
105
|
+
selection.
|
|
106
|
+
|
|
86
107
|
## Examples
|
|
87
108
|
|
|
88
109
|
```text
|
|
@@ -98,6 +119,22 @@ WorkPilot decides whether to use `github_copilot` based on the task, unless you
|
|
|
98
119
|
## Concurrent tasks
|
|
99
120
|
|
|
100
121
|
Up to 5 Copilot tasks can run concurrently by default. Additional requests queue until a slot is available.
|
|
122
|
+
Different native conversations can run in parallel, but an active or detached task
|
|
123
|
+
retains its conversation until completion or confirmed cancellation. A competing
|
|
124
|
+
continuation or Bridge attachment is rejected instead of replacing its live handle.
|
|
125
|
+
Status and model queries do not consume delegation slots.
|
|
126
|
+
|
|
127
|
+
## Continue a task
|
|
128
|
+
|
|
129
|
+
Use `resume_task_id` with a previous WorkPilot task ID. Each continuation has a new
|
|
130
|
+
task ID but keeps the actual native Copilot conversation ID, including when continuing
|
|
131
|
+
a continuation. WorkPilot saves these bindings and their working directories locally;
|
|
132
|
+
Copilot retains the conversation history.
|
|
133
|
+
|
|
134
|
+
When no `files` or `workdir` is supplied, continuation inherits the saved directory
|
|
135
|
+
before risk assessment. For older tasks with no saved binding, query status to recover
|
|
136
|
+
native metadata or supply an explicit directory. WorkPilot does not guess the workspace
|
|
137
|
+
after a restart, automatically replay old tasks, or restore their live notifications.
|
|
101
138
|
|
|
102
139
|
## Permission-request safety
|
|
103
140
|
|
|
@@ -106,6 +143,9 @@ native `~/.copilot/` allow/deny rules and other native configuration. WorkPilot
|
|
|
106
143
|
the unresolved grey-area requests. For those requests, a per-task `false` can tighten a
|
|
107
144
|
permissive `tools.copilot.hooks.auto_approve` setting to deny; a per-task `true` can never loosen
|
|
108
145
|
an operator setting of `false`.
|
|
146
|
+
Native tool exclusions remain effective on create and resume. Enterprise-managed
|
|
147
|
+
requests requiring human approval are not automatically approved; this integration
|
|
148
|
+
reports that human confirmation is unavailable.
|
|
109
149
|
|
|
110
150
|
## Configuration
|
|
111
151
|
|
|
@@ -133,6 +173,9 @@ tools:
|
|
|
133
173
|
enabled: false
|
|
134
174
|
```
|
|
135
175
|
|
|
176
|
+
This disables delegation, not [Bridge mode](bridge-mode.md). Root delegation,
|
|
177
|
+
Bridge, and discovery share one lazy SDK runtime; their policies remain separate.
|
|
178
|
+
|
|
136
179
|
## See also
|
|
137
180
|
|
|
138
181
|
- [Claude Code tasks](claude-code.md) — delegate tasks to Claude Code (Anthropic Agent SDK) instead
|
|
@@ -18,6 +18,48 @@ Explain which Agent is handling this task and why.
|
|
|
18
18
|
```
|
|
19
19
|
:::
|
|
20
20
|
|
|
21
|
+
## Persistent agents
|
|
22
|
+
|
|
23
|
+
For a recurring responsibility, create an agent in **Agents** in the local Web UI or desktop
|
|
24
|
+
app. Give it a calling name, instructions, model, tools, skills, and workspace. Leaving the
|
|
25
|
+
workspace blank assigns a separate working directory. Agent definitions used for delegation
|
|
26
|
+
remain reusable templates; creating a persistent member gives it its own durable identity.
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
@research Find the release notes.
|
|
30
|
+
@research Continue with the same sources.
|
|
31
|
+
/bridge research
|
|
32
|
+
/bridge off
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
`@name` addresses only that message. `/bridge name` switches the current conversation until
|
|
36
|
+
`/bridge off`; a one-shot mention while bridged does not change that selection. These commands
|
|
37
|
+
work through the existing CLI, local Web, and cloud chat channels. Use the local/desktop app
|
|
38
|
+
to manage members; cloud chat does not require a new gateway version.
|
|
39
|
+
|
|
40
|
+
Each member has its own main session, MEMORY.md, HISTORY.md, and SQLite search index. It
|
|
41
|
+
returns to standby after task completion and associated memory processing, with no periodic
|
|
42
|
+
model calls. Pause finishes the current tool batch first. Stop preserves data; continue in
|
|
43
|
+
chat with `@name /resume`. After a restart, interrupted tasks are not automatically retried:
|
|
44
|
+
send a new message or explicitly continue. Bridge selection itself is not restored.
|
|
45
|
+
The same resume command works in a single invocation: `workpilot run "@research /resume"`.
|
|
46
|
+
|
|
47
|
+
Open a member to inspect its session, edit or clear its memory, search history, or rebuild
|
|
48
|
+
its history index without using a model. Clear memory keeps history and sessions. Stop active
|
|
49
|
+
work before changing configuration, memory, or indexes. Optional skills are selected by name;
|
|
50
|
+
an empty list selects none. The normal security policy still applies: independent data and
|
|
51
|
+
workspaces are not a process or container isolation boundary.
|
|
52
|
+
|
|
53
|
+
Viewing memory, history, and sessions reads saved data without initializing the member's
|
|
54
|
+
execution environment. Missing optional skills therefore do not prevent inspecting prior work.
|
|
55
|
+
|
|
56
|
+
If cleanup fails, the remaining cleanup steps and other members are still attempted. The failed
|
|
57
|
+
member retains its data and reports incomplete cleanup; use **Stop** again to retry.
|
|
58
|
+
|
|
59
|
+
Automatic team creation, automatic collaboration, and team-shared memory are not part of this
|
|
60
|
+
first version. Scheduled-job and Event management remain with the main assistant.
|
|
61
|
+
See [Bridge mode](bridge-mode.md) and [Local data](../storage/overview.md).
|
|
62
|
+
|
|
21
63
|
## Built-in agents
|
|
22
64
|
|
|
23
65
|
| Agent | Purpose |
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Fixed-code condition checks, explicit fingerprint grants, isolated tests, and separate scheduled tasks.
|
|
3
|
+
workpilot_search:
|
|
4
|
+
keywords:
|
|
5
|
+
- Event fixed main context boolean monitor condition automation
|
|
6
|
+
- expected false fresh check scoped approval isolated test
|
|
7
|
+
- Events Web approval API key Entra
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Events
|
|
11
|
+
|
|
12
|
+
> [中文版](../zh-cn/automation/events.md)
|
|
13
|
+
|
|
14
|
+
An Event checks a condition with fixed Python code, without an agent reasoning on every poll.
|
|
15
|
+
A separate [scheduled task](scheduling.md) decides what to do. The four contracts are
|
|
16
|
+
`EventDefinition`, `EventContext`, `EventRun`, and `EventConditions`; live tool schemas are authoritative.
|
|
17
|
+
|
|
18
|
+
::: tip Ask WorkPilot
|
|
19
|
+
“Monitor the build every minute and summarize it when complete.”
|
|
20
|
+
“At 9 AM, check afresh and prepare only if the build is still running.”
|
|
21
|
+
:::
|
|
22
|
+
|
|
23
|
+
## Availability and manual setup
|
|
24
|
+
|
|
25
|
+
Events default to `events.enabled: false`. An operator must enable it and keep
|
|
26
|
+
`tools.code_mode.enabled` enabled (its default).
|
|
27
|
+
Clocks also require `cron.enabled` and a running scheduler host; manual checks do not require cron.
|
|
28
|
+
Do not silently enable dependencies. See [scheduler setup](scheduling.md#enable-the-scheduler-manually).
|
|
29
|
+
Global defaults are `max_concurrent_checks: 5`, `max_pending_checks: 200`, and
|
|
30
|
+
`history_retention_days: 30` under `events`. Checks are bounded and serialized per Event;
|
|
31
|
+
overload and output truncation are explicit. See the [configuration reference](../configuration/schema.md).
|
|
32
|
+
Nested checks report `blocked` / `overloaded` rather than waiting for busy execution capacity
|
|
33
|
+
or another run of the same Event; ordinary callers can still wait within the pending-check limit.
|
|
34
|
+
|
|
35
|
+
### Web-host authentication prerequisite
|
|
36
|
+
|
|
37
|
+
Web chat and Event approval transports must be authenticated through Entra or an effective API key.
|
|
38
|
+
The gateway's existing temporary generated key is valid; a permanently configured key is not required.
|
|
39
|
+
CLI or standalone Cloud use does not itself require Web configuration. See
|
|
40
|
+
[Local gateway authentication](../gateways/local.md#authentication-and-network-exposure).
|
|
41
|
+
|
|
42
|
+
## From a request to an enabled check
|
|
43
|
+
|
|
44
|
+
1. Agree on true, false, unknown/error, printed evidence, and a separate task and destination.
|
|
45
|
+
2. Inspect existing definitions/history. Load `tools(name="event-automation", action="skill")`;
|
|
46
|
+
describe `events`, `cron`, and source tools before using their actual schemas.
|
|
47
|
+
3. Save a disabled draft. Static `validate` checks schema/entrypoint without host calls and reports
|
|
48
|
+
`type_checked: false`; native type checking happens during execution.
|
|
49
|
+
4. Request explicit human [authorization](#authorization) for that Event ID and fingerprint;
|
|
50
|
+
saving is not approval.
|
|
51
|
+
5. Run an authorized, isolated `test` when appropriate and inspect its result and real effects.
|
|
52
|
+
6. Create/link the follow-up task before enabling its listener and the Event plan. Enabling does
|
|
53
|
+
not check immediately or replay cached observations; use **Check now** for an explicit
|
|
54
|
+
production check. Verify history rather than inferring execution from a successful save.
|
|
55
|
+
|
|
56
|
+
### Events in the Web UI
|
|
57
|
+
|
|
58
|
+
Events configuration and management entry points are temporarily hidden throughout the Web UI:
|
|
59
|
+
navigation, command palette, Event pages, Scheduled condition controls, and configuration editors.
|
|
60
|
+
Old Event page URLs return to Chat. Existing definitions, task conditions, runtime behavior, and
|
|
61
|
+
HTTP/tool APIs are unchanged. Scheduled details retain read-only check evidence without Event
|
|
62
|
+
management links, and editing a task preserves its saved conditions. Chat and Security approval
|
|
63
|
+
cards remain available for explicit human authorization.
|
|
64
|
+
|
|
65
|
+
Use the conversational tools for Event changes and operator-managed configuration files for
|
|
66
|
+
capability setup. `test` uses real tools but does not trigger tasks; `run` can trigger enabled linked
|
|
67
|
+
tasks. Once accepted, the host owns the check: closing the client or losing the connection does
|
|
68
|
+
not cancel it. The same request ID resolves to the same retained run; reconnect queries it
|
|
69
|
+
instead of automatically resubmitting. A host restart marks unfinished checks interrupted,
|
|
70
|
+
without replay. Request lookup is bounded by check-history retention.
|
|
71
|
+
HTTP request IDs must be 1-128 characters forming one URL path segment, excluding `/`, `.` and `..`.
|
|
72
|
+
An empty approval `changes` object is equivalent to omitting it and still requires explicit authorization.
|
|
73
|
+
|
|
74
|
+
## Author a fixed checker
|
|
75
|
+
|
|
76
|
+
Use `async def main(context)` for tool calls or `def main(context)` for computation. The runtime
|
|
77
|
+
invokes it in a fresh code-mode sandbox. The checker engine needs no model; tools may use one.
|
|
78
|
+
Read-only queries are recommended, not enforced: other granted tools are eligible. Checkers cannot
|
|
79
|
+
call `agent`, `spawn`, or `run_code`, directly or through `call_tool`. They can inspect cron tasks
|
|
80
|
+
but cannot add, enable, or run them; task actions are separate.
|
|
81
|
+
A tool-free comparison, with `actual` and `expected` supplied in `params`, is:
|
|
82
|
+
|
|
83
|
+
```python
|
|
84
|
+
def main(context):
|
|
85
|
+
return context["params"]["actual"] == context["params"]["expected"]
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Example disabled `create` payload (not a YAML import file); discover `read_file` first:
|
|
89
|
+
|
|
90
|
+
```yaml
|
|
91
|
+
id: build-ready
|
|
92
|
+
description: Check whether the build has completed
|
|
93
|
+
enabled: false
|
|
94
|
+
params: {path: build-status.txt}
|
|
95
|
+
pre_trigger: {schedule: 60}
|
|
96
|
+
code: |
|
|
97
|
+
async def main(context):
|
|
98
|
+
text = await read_file(path=context["params"]["path"])
|
|
99
|
+
print(text[:1000])
|
|
100
|
+
complete = "status=complete" in text
|
|
101
|
+
running = "status=running" in text
|
|
102
|
+
if complete == running:
|
|
103
|
+
raise ValueError("Expected one recognized build status")
|
|
104
|
+
return complete
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
`timeout_seconds` defaults to 60. Use optional `expires_at` for bounded monitoring.
|
|
108
|
+
Keep credentials in existing tool configuration, not code, params, or printed details.
|
|
109
|
+
|
|
110
|
+
Prefer booleans on successful paths. Python truthiness remains compatible, with coercion diagnostics:
|
|
111
|
+
`None` and empty values are false, but the string `"false"` is true. Do not disguise errors as false.
|
|
112
|
+
Errors, blocked, cancelled, interrupted checks, and missing/expired observations have no boolean.
|
|
113
|
+
`print` is bounded supplementary data, separate from the result and diagnostics.
|
|
114
|
+
Run history uses one `source`: `manual`, `time`, or `test`. Test runs never become production
|
|
115
|
+
observations.
|
|
116
|
+
|
|
117
|
+
Context is a copied snapshot containing `event`, `run`, `params`, `input`, and `last_success`.
|
|
118
|
+
`last_success` is the previous successful production check for this revision, including false,
|
|
119
|
+
or `null`; tests/failures do not replace it. There is no writable `context.state` or mutation
|
|
120
|
+
writeback. Input cannot replace host identity, params, or authority.
|
|
121
|
+
|
|
122
|
+
## Authorization
|
|
123
|
+
|
|
124
|
+
Authorization approves an entire fixed Event by **`event_id` + `fingerprint`**, within the
|
|
125
|
+
current workspace. The fingerprint is the SHA-256 hash of its ID, code and parameters,
|
|
126
|
+
not a credential or proof of approval.
|
|
127
|
+
Event IDs are unique within a workspace, not globally. Conversations share its definitions,
|
|
128
|
+
grants, observations and clocks; the originating conversation is provenance, not an access
|
|
129
|
+
boundary. Deleting or switching a chat does not retire its Events.
|
|
130
|
+
Legacy databases with duplicate workspace IDs report
|
|
131
|
+
`workspace_id_conflict` rather than choosing one definition or grant; reconcile those records
|
|
132
|
+
from a backup before starting the workspace-wide runtime.
|
|
133
|
+
`create`, `get`, and `list` expose the current `fingerprint`. Pass it with `event_id` to `authorize`;
|
|
134
|
+
optional `expires_at` limits the grant. There are no per-tool or per-argument grant rules:
|
|
135
|
+
approval covers the otherwise permitted tool calls made by that fixed Event.
|
|
136
|
+
Code/parameter changes request explicit approval **before** applying. The old version continues
|
|
137
|
+
while approval is pending; approval and applying the matching new grant are one operation.
|
|
138
|
+
The enabled/paused state is preserved, without an extra check or another enable step. Rejection,
|
|
139
|
+
timeout or a stale editing baseline leaves the active version unchanged. The Web editor shows
|
|
140
|
+
the current and proposed definitions; conversational updates use the same approval path.
|
|
141
|
+
|
|
142
|
+
Polling, timeout, Event expiry, description and notifications are ordinary configuration edits
|
|
143
|
+
that preserve the grant. Editing Event expiry does not extend a separate grant expiry.
|
|
144
|
+
Web reauthorization preserves the current grant expiry unless you explicitly change or clear it.
|
|
145
|
+
`update` takes `changes`, `expected_revision`, and optional `expected_version`; Web edits require
|
|
146
|
+
the independent editing version, including for changes that keep the execution revision.
|
|
147
|
+
Existing tool ceilings, hard denies, E-stop, audit, and postflight remain.
|
|
148
|
+
Description and error-notification edits keep the execution revision, grant, observations and timer;
|
|
149
|
+
they do not interrupt an active check. They remain editable after a one-shot time or expiry has
|
|
150
|
+
passed; these edits do not rearm the check or extend its authorization. New executable settings
|
|
151
|
+
must still satisfy schedule and expiry validation.
|
|
152
|
+
Approval cards show the complete checker and JSON authorization scope: Event ID/fingerprint,
|
|
153
|
+
workspace, parameters, runtime configuration, and expiry. Review both before
|
|
154
|
+
approving unattended execution; the Security approval queue shows the same checker and scope.
|
|
155
|
+
When they are too large for a Teams card, the card points to the Security approval queue instead.
|
|
156
|
+
|
|
157
|
+
Inspect the saved Event, use the full fingerprint returned by `get`, wait for the human
|
|
158
|
+
decision, then test:
|
|
159
|
+
|
|
160
|
+
```python
|
|
161
|
+
events(action="get", event_id="build-ready")
|
|
162
|
+
events(action="authorize", event_id="build-ready",
|
|
163
|
+
fingerprint="<fingerprint returned by get>")
|
|
164
|
+
events(action="test", event_id="build-ready")
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Tests execute granted real tools; inspect earlier effects before repeating them. Nested checks
|
|
168
|
+
inherit isolation: no production observations or task triggering. Production `run` may trigger tasks.
|
|
169
|
+
Checker grants never transfer to actions; those retain ordinary [approvals](../security/approvals.md).
|
|
170
|
+
|
|
171
|
+
## Combine time and conditions
|
|
172
|
+
|
|
173
|
+
Event timers poll independently; clocked tasks **check fresh at each tick** rather than using cache.
|
|
174
|
+
Event-only tasks use committed `event.checked` observations without recursive checks. `cron` examples:
|
|
175
|
+
|
|
176
|
+
```yaml
|
|
177
|
+
name: build-summary
|
|
178
|
+
schedule: event.checked
|
|
179
|
+
event_conditions:
|
|
180
|
+
mode: all
|
|
181
|
+
items: [{event_id: build-ready, equals: true, max_age_seconds: 120}]
|
|
182
|
+
event_policy: {mode: enter_match, cooldown_seconds: 300}
|
|
183
|
+
prompt: Summarize the completed build using the attached check details.
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
```yaml
|
|
187
|
+
name: morning-preparation
|
|
188
|
+
schedule: "0 9 * * *"
|
|
189
|
+
timezone: Asia/Shanghai
|
|
190
|
+
event_conditions:
|
|
191
|
+
mode: all
|
|
192
|
+
items: [{event_id: build-ready, equals: false}]
|
|
193
|
+
prompt: Prepare the build follow-up while the build is still running.
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
`all` requires every match; `any` needs one known match. Unknown is never false.
|
|
197
|
+
`max_age_seconds` bounds observation age and is rechecked before dispatch, including after waiting
|
|
198
|
+
for task capacity. `each_match` dispatches on matching results;
|
|
199
|
+
`enter_match` on entry into a match, including the first known match. Cooldown is not exactly-once delivery.
|
|
200
|
+
Unknown observations do not reset entry state. `busy_policy: skip` suppresses a busy task's
|
|
201
|
+
action without discarding valid condition transitions or replaying it later. `continue` uses
|
|
202
|
+
ordinary session handling: reuse a persistent conversation or create a new isolated session.
|
|
203
|
+
This policy is only supported for tasks with Event conditions.
|
|
204
|
+
Timed triggers honor the same policy within `cron.max_concurrent_jobs`; `skip` retains the
|
|
205
|
+
single-instance limit, while `continue` can admit overlapping ticks within that capacity.
|
|
206
|
+
Continued Event-bus triggers use the same limit for admitted task activations across jobs.
|
|
207
|
+
Excess matching triggers record `capacity_full` without dispatch or replay; nonmatching
|
|
208
|
+
observations still update condition transitions.
|
|
209
|
+
There are no separate parallel/sequential Event modes.
|
|
210
|
+
Persistent conversations finish the active turn before starting the next trigger as its own
|
|
211
|
+
turn, with its own permissions and check evidence. Waiting for that conversation does not occupy
|
|
212
|
+
global task capacity. Conditions and authority are rechecked before dispatch; an expired or
|
|
213
|
+
invalidated trigger is explicitly skipped, not recorded as completed or replayed later.
|
|
214
|
+
One-shot pre-triggers retain their resolved occurrence across restart and consume it atomically
|
|
215
|
+
with check reservation. Unknown started checks are not automatically replayed.
|
|
216
|
+
Approved code or parameter edits preserve that occurrence and its consumed state; only an
|
|
217
|
+
explicit check-plan change reschedules or rearms it.
|
|
218
|
+
For absolute `at:` timestamps without an offset, `pre_trigger.timezone` selects the wall-clock
|
|
219
|
+
timezone (local timezone when omitted). An explicit timestamp offset takes precedence;
|
|
220
|
+
relative `at:+seconds` delays are unchanged.
|
|
221
|
+
|
|
222
|
+
## Handoff and management
|
|
223
|
+
|
|
224
|
+
Existing cron owns execution, overlap, capacity, and history; no separate task queue or replay exists.
|
|
225
|
+
Ordinary message/prompt/tool actions retain their instructions and arguments. Printed details stay
|
|
226
|
+
fenced as untrusted data, including in `events` tool results, and are never interpolated into tool
|
|
227
|
+
arguments. Bound tasks can use `events(action="context")`. Existing tools can address idle owned
|
|
228
|
+
agents, but Events do not automatically wait for busy agents or silently resume stopped/paused ones.
|
|
229
|
+
Use the default `completion_mode="wait"` for one-shot tasks so delegated work finishes before retirement.
|
|
230
|
+
|
|
231
|
+
The task context contains `task_id`, `reason`, and bounded `events` evidence. Ownership,
|
|
232
|
+
authorization, trigger bookkeeping and causation stay in the host; they are not read back
|
|
233
|
+
from the task's data. The same true/false/unknown condition rules apply during evaluation
|
|
234
|
+
and immediately before dispatch.
|
|
235
|
+
|
|
236
|
+
Failures remain in history, with grouped error/recovery notices by default (`on_error: {notify: true}`).
|
|
237
|
+
No automatic retries or repair proposals. Agree who retires finished monitors and verify Event/task history.
|
|
238
|
+
Disable an Event to pause it. Deletion retires its workspace ID; retained check history follows
|
|
239
|
+
normal retention, and the workspace cannot reuse the ID for a different definition.
|
|
240
|
+
|
|
241
|
+
Task execution history retains the latest 100 dispatched outcomes. Routine skips do not evict
|
|
242
|
+
those runs: each task persists only its **latest linkage decision**, including time, reason and
|
|
243
|
+
related check IDs/revisions. Older skips are not individually retained. Links use retained
|
|
244
|
+
correlations, never timestamp guesses; an empty reverse lookup does not prove no action occurred.
|
|
245
|
+
|
|
246
|
+
V1 operations: `list`, `get`, `history`, `create`, `update`, `enable`, `disable`, `delete`,
|
|
247
|
+
`validate`, `authorize`, `revoke`, `run`, `test`, `context`. The authenticated `/api/events`
|
|
248
|
+
surface supports workspace management, revision-checked configuration edits, approval requests,
|
|
249
|
+
test/production admission and querying retained runs. Decisions use the same `/api/approvals`
|
|
250
|
+
transport and authenticated approval identity as Security. The Schedule HTTP API also manages
|
|
251
|
+
Event-conditioned tasks. No webhook or YAML import endpoint is introduced.
|
|
252
|
+
Removing an Event-bound task requires its Event runtime so the protected binding is removed
|
|
253
|
+
with the job. Use Scheduled or the live conversational `cron` tool; standalone `wp cron remove`
|
|
254
|
+
refuses these jobs.
|