crewly 1.20.105 → 1.20.107
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -12
- package/config/constants.ts +43 -0
- package/config/index.ts +2 -0
- package/config/skills/_common/lib.sh +55 -2
- package/config/skills/_common/lib.test.sh +58 -1
- package/config/skills/_common/task-pool-body-shape.test.sh +60 -0
- package/config/skills/agent/core/cancel-followup/execute.sh +18 -3
- package/config/skills/agent/core/cancel-followup/execute.test.sh +73 -0
- package/config/skills/agent/core/complete-task/execute.sh +1 -1
- package/config/skills/agent/core/create-intent-tasks/execute.sh +1 -1
- package/config/skills/agent/core/create-task/SKILL.md +1 -0
- package/config/skills/agent/core/create-task/execute.sh +10 -0
- package/config/skills/agent/core/decompose-intent/execute.sh +1 -1
- package/config/skills/agent/core/handoff-task/execute.sh +1 -1
- package/config/skills/agent/core/list-my-followups/SKILL.md +1 -1
- package/config/skills/agent/core/list-my-followups/execute.sh +25 -3
- package/config/skills/agent/core/list-my-followups/execute.test.sh +72 -0
- package/config/skills/agent/core/poll-tasks/execute.sh +3 -3
- package/config/skills/agent/core/reply-channel/SKILL.md +1 -1
- package/config/skills/agent/core/report-progress/execute.sh +1 -1
- package/config/skills/agent/core/report-status/execute.sh +1 -1
- package/config/skills/agent/core/slack-post/SKILL.md +1 -1
- package/config/skills/agent/core/todo-add/SKILL.md +64 -0
- package/config/skills/agent/core/todo-add/execute.sh +84 -0
- package/config/skills/agent/core/todo-add/execute.test.sh +76 -0
- package/config/skills/agent/core/todo-lists/SKILL.md +58 -0
- package/config/skills/agent/core/todo-lists/execute.sh +70 -0
- package/config/skills/agent/core/todo-lists/execute.test.sh +77 -0
- package/config/skills/agent/core/todo-tasks/SKILL.md +59 -0
- package/config/skills/agent/core/todo-tasks/execute.sh +78 -0
- package/config/skills/agent/core/todo-tasks/execute.test.sh +74 -0
- package/config/skills/agent/core/todo-update/SKILL.md +63 -0
- package/config/skills/agent/core/todo-update/execute.sh +115 -0
- package/config/skills/agent/core/todo-update/execute.test.sh +82 -0
- package/config/skills/agent/core/update-intent-task/execute.sh +1 -1
- package/config/skills/agent/marketing/brand-onboarding/execute.sh +1 -1
- package/config/skills/agent/marketing/submit-for-approval/execute.sh +1 -1
- package/config/skills/agent/remote-browser/SOP-google-flow-video.md +1 -1
- package/config/skills/agent/remote-browser/execute.sh +33 -1
- package/config/skills/agent/remote-browser/execute.test.sh +62 -0
- package/config/skills/agent/screenshot-compare/execute.sh +1 -1
- package/config/skills/agent/transcribe-audio/SKILL.md +1 -1
- package/config/skills/agent/transcribe-audio/execute.sh +1 -1
- package/config/skills/agent/transcribe-audio/instructions.md +1 -1
- package/config/skills/orchestrator/delegate-task/SKILL.md +1 -1
- package/config/skills/orchestrator/get-tasks/SKILL.md +7 -1
- package/config/skills/orchestrator/get-tasks/execute.sh +51 -28
- package/config/skills/orchestrator/get-tasks/execute.test.sh +67 -0
- package/config/skills/orchestrator/heartbeat/execute.sh +2 -2
- package/config/skills/orchestrator/list-missions/execute.sh +1 -1
- package/config/skills/orchestrator/list-missions/execute.test.sh +38 -11
- package/config/skills/team-leader/decompose-goal/SKILL.md +1 -0
- package/config/skills/team-leader/decompose-goal/execute.sh +17 -2
- package/config/skills/team-leader/delegate-task/SKILL.md +1 -0
- package/config/skills/team-leader/delegate-task/execute.sh +6 -2
- package/dist/backend/backend/src/constants.d.ts +264 -2
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +255 -3
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +33 -0
- package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.js +176 -9
- package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.js +38 -35
- package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts +10 -45
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +40 -89
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.d.ts +51 -0
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.js +223 -0
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.d.ts +25 -0
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js +42 -0
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/session/session.controller.d.ts +2 -1
- package/dist/backend/backend/src/controllers/session/session.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/session/session.controller.js +21 -0
- package/dist/backend/backend/src/controllers/session/session.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +51 -3
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/restart-readiness.controller.d.ts +23 -0
- package/dist/backend/backend/src/controllers/system/restart-readiness.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/system/restart-readiness.controller.js +35 -0
- package/dist/backend/backend/src/controllers/system/restart-readiness.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/system/system.controller.d.ts +5 -3
- package/dist/backend/backend/src/controllers/system/system.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/system.controller.js +27 -6
- package/dist/backend/backend/src/controllers/system/system.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/system.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/system.routes.js +3 -0
- package/dist/backend/backend/src/controllers/system/system.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +29 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.js +86 -6
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts +41 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.js +135 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts +18 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.js +25 -0
- package/dist/backend/backend/src/controllers/tickets/tickets.routes.js.map +1 -0
- package/dist/backend/backend/src/index.d.ts +70 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +352 -71
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +6 -0
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.d.ts +128 -0
- package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.d.ts.map +1 -0
- package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.js +200 -0
- package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.js.map +1 -0
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts +2 -2
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.js +3 -1
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +4 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +61 -4
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts +30 -0
- package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/claude-runtime.service.js +62 -1
- package/dist/backend/backend/src/services/agent/claude-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +2 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +0 -2
- package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.js +0 -2
- package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
- package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts +65 -1
- package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +113 -10
- package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/restore-filter.d.ts +12 -0
- package/dist/backend/backend/src/services/agent/restore-filter.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/restore-filter.js +19 -0
- package/dist/backend/backend/src/services/agent/restore-filter.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +3 -2
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-startup-blocked.error.d.ts +28 -0
- package/dist/backend/backend/src/services/agent/runtime-startup-blocked.error.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/runtime-startup-blocked.error.js +34 -0
- package/dist/backend/backend/src/services/agent/runtime-startup-blocked.error.js.map +1 -0
- package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts +57 -5
- package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-bridge.service.js +98 -18
- package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts +12 -1
- package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-proxy.service.js +25 -4
- package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.d.ts +2 -1
- package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.js +5 -1
- package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-session.service.d.ts +38 -0
- package/dist/backend/backend/src/services/browser/browser-session.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-session.service.js +34 -0
- package/dist/backend/backend/src/services/browser/browser-session.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +6 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +5 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js +7 -2
- package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +23 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +58 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.d.ts +63 -0
- package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.js +72 -0
- package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +10 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +15 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +6 -1
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
- package/dist/backend/backend/src/services/connector/connector-access.service.d.ts +2 -2
- package/dist/backend/backend/src/services/connector/connector-access.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/connector/connector-access.service.js +2 -2
- package/dist/backend/backend/src/services/connector/connector-access.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/retry.util.d.ts +5 -0
- package/dist/backend/backend/src/services/core/retry.util.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/retry.util.js +2 -2
- package/dist/backend/backend/src/services/core/retry.util.js.map +1 -1
- package/dist/backend/backend/src/services/factory.service.js +3 -3
- package/dist/backend/backend/src/services/factory.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/google-chat-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/google-chat-initializer.js +24 -1
- package/dist/backend/backend/src/services/messaging/google-chat-initializer.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts +9 -0
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js +55 -0
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +7 -0
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js +12 -0
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/thread-status-queue.service.d.ts +36 -1
- package/dist/backend/backend/src/services/messaging/thread-status-queue.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/thread-status-queue.service.js +90 -2
- package/dist/backend/backend/src/services/messaging/thread-status-queue.service.js.map +1 -1
- package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.d.ts +250 -0
- package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.js +367 -0
- package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.js.map +1 -0
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts +116 -0
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js +220 -0
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/commitment-approval-guard.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/commitment-approval-guard.js +22 -16
- package/dist/backend/backend/src/services/orchestrator/commitment-approval-guard.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js +11 -1
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +9 -9
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
- package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.d.ts +189 -0
- package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.js +246 -0
- package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.js.map +1 -0
- package/dist/backend/backend/src/services/restart/interrupted-turns.d.ts +153 -0
- package/dist/backend/backend/src/services/restart/interrupted-turns.d.ts.map +1 -0
- package/dist/backend/backend/src/services/restart/interrupted-turns.js +279 -0
- package/dist/backend/backend/src/services/restart/interrupted-turns.js.map +1 -0
- package/dist/backend/backend/src/services/restart/restart-drain.service.d.ts +176 -0
- package/dist/backend/backend/src/services/restart/restart-drain.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/restart/restart-drain.service.js +298 -0
- package/dist/backend/backend/src/services/restart/restart-drain.service.js.map +1 -0
- package/dist/backend/backend/src/services/restart/turn-probe.d.ts +52 -0
- package/dist/backend/backend/src/services/restart/turn-probe.d.ts.map +1 -0
- package/dist/backend/backend/src/services/restart/turn-probe.js +61 -0
- package/dist/backend/backend/src/services/restart/turn-probe.js.map +1 -0
- package/dist/backend/backend/src/services/session/pty/node-pty-install.utils.d.ts +70 -0
- package/dist/backend/backend/src/services/session/pty/node-pty-install.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/services/session/pty/node-pty-install.utils.js +105 -0
- package/dist/backend/backend/src/services/session/pty/node-pty-install.utils.js.map +1 -0
- package/dist/backend/backend/src/services/session/pty/pty-session.d.ts +2 -0
- package/dist/backend/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.js +53 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-binding.d.ts +125 -0
- package/dist/backend/backend/src/services/session/session-binding.d.ts.map +1 -0
- package/dist/backend/backend/src/services/session/session-binding.js +183 -0
- package/dist/backend/backend/src/services/session/session-binding.js.map +1 -0
- package/dist/backend/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-handoff.service.js +19 -0
- package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts +10 -0
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +37 -1
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-cloud-config.service.d.ts +4 -3
- package/dist/backend/backend/src/services/slack/slack-cloud-config.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-cloud-config.service.js +4 -3
- package/dist/backend/backend/src/services/slack/slack-cloud-config.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.d.ts +72 -7
- package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.js +185 -23
- package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +4 -45
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +57 -190
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-source-preference.service.d.ts +59 -0
- package/dist/backend/backend/src/services/slack/slack-source-preference.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-source-preference.service.js +69 -0
- package/dist/backend/backend/src/services/slack/slack-source-preference.service.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +18 -0
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +64 -3
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.d.ts +33 -1
- package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.js +129 -4
- package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/pool-archive-migration.d.ts +108 -0
- package/dist/backend/backend/src/services/task-pool/pool-archive-migration.d.ts.map +1 -0
- package/dist/backend/backend/src/services/task-pool/pool-archive-migration.js +193 -0
- package/dist/backend/backend/src/services/task-pool/pool-archive-migration.js.map +1 -0
- package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts +15 -0
- package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/pool-storage.js +30 -0
- package/dist/backend/backend/src/services/task-pool/pool-storage.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +41 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js +55 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.d.ts +7 -0
- package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.js +32 -1
- package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +4 -3
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js +12 -0
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request.service.d.ts +7 -0
- package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request.service.js +17 -0
- package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts +279 -0
- package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js +458 -0
- package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js.map +1 -0
- package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts +376 -0
- package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/ticket-intake.service.js +566 -0
- package/dist/backend/backend/src/services/v3/ticket-intake.service.js.map +1 -0
- package/dist/backend/backend/src/services/v3/tl-auto-verify.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js +3 -3
- package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts +28 -4
- package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/trigger-engine.service.js +40 -10
- package/dist/backend/backend/src/services/v3/trigger-engine.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +1 -0
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +3 -3
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
- package/dist/backend/backend/src/types/slack.types.d.ts +29 -0
- package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/slack.types.js.map +1 -1
- package/dist/backend/backend/src/types/thread-status.types.d.ts +26 -0
- package/dist/backend/backend/src/types/thread-status.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/thread-status.types.js +17 -0
- package/dist/backend/backend/src/types/thread-status.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/index.d.ts +3 -2
- package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/index.js +1 -1
- package/dist/backend/backend/src/types/v2/index.js.map +1 -1
- package/dist/backend/backend/src/types/v2/request.types.d.ts +39 -3
- package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/request.types.js +11 -2
- package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/ticket.types.d.ts +173 -0
- package/dist/backend/backend/src/types/v2/ticket.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/v2/ticket.types.js +203 -0
- package/dist/backend/backend/src/types/v2/ticket.types.js.map +1 -0
- package/dist/backend/backend/src/utils/agent-caller.utils.d.ts +26 -0
- package/dist/backend/backend/src/utils/agent-caller.utils.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/agent-caller.utils.js +40 -3
- package/dist/backend/backend/src/utils/agent-caller.utils.js.map +1 -1
- package/dist/backend/backend/src/utils/gemini-auth-settings.d.ts +62 -0
- package/dist/backend/backend/src/utils/gemini-auth-settings.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/gemini-auth-settings.js +104 -0
- package/dist/backend/backend/src/utils/gemini-auth-settings.js.map +1 -0
- package/dist/backend/backend/src/utils/local-api-url.utils.d.ts +56 -0
- package/dist/backend/backend/src/utils/local-api-url.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/local-api-url.utils.js +80 -0
- package/dist/backend/backend/src/utils/local-api-url.utils.js.map +1 -0
- package/dist/backend/build-info.json +2 -2
- package/dist/backend/config/constants.d.ts +40 -0
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +41 -0
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/backend/config/index.d.ts +4 -2
- package/dist/backend/config/index.d.ts.map +1 -1
- package/dist/backend/config/index.js +2 -2
- package/dist/backend/config/index.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +264 -2
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +255 -3
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts +2 -2
- package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/active-work-briefing.service.js +3 -1
- package/dist/cli/backend/src/services/agent/active-work-briefing.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +4 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js +61 -4
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts +30 -0
- package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/claude-runtime.service.js +62 -1
- package/dist/cli/backend/src/services/agent/claude-runtime.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +2 -1
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts +0 -2
- package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/crewly-agent/types.js +0 -2
- package/dist/cli/backend/src/services/agent/crewly-agent/types.js.map +1 -1
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts +65 -1
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.js +113 -10
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +3 -2
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-startup-blocked.error.d.ts +28 -0
- package/dist/cli/backend/src/services/agent/runtime-startup-blocked.error.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-startup-blocked.error.js +34 -0
- package/dist/cli/backend/src/services/agent/runtime-startup-blocked.error.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +6 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +5 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +23 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +58 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +10 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +15 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +7 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +12 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts +36 -1
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js +90 -2
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js.map +1 -1
- package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.d.ts +189 -0
- package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.js +246 -0
- package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.js.map +1 -0
- package/dist/cli/backend/src/services/restart/restart-drain.service.d.ts +176 -0
- package/dist/cli/backend/src/services/restart/restart-drain.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/restart/restart-drain.service.js +298 -0
- package/dist/cli/backend/src/services/restart/restart-drain.service.js.map +1 -0
- package/dist/cli/backend/src/services/session/pty/node-pty-install.utils.d.ts +70 -0
- package/dist/cli/backend/src/services/session/pty/node-pty-install.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/pty/node-pty-install.utils.js +105 -0
- package/dist/cli/backend/src/services/session/pty/node-pty-install.utils.js.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-session.d.ts +2 -0
- package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-session.js +53 -1
- package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -1
- package/dist/cli/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/session-handoff.service.js +19 -0
- package/dist/cli/backend/src/services/session/session-handoff.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts +10 -0
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +37 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +4 -45
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +57 -190
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +18 -0
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +64 -3
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack.service.d.ts +33 -1
- package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack.service.js +129 -4
- package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts +15 -0
- package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/pool-storage.js +30 -0
- package/dist/cli/backend/src/services/task-pool/pool-storage.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +41 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js +55 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/request.service.d.ts +7 -0
- package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/request.service.js +17 -0
- package/dist/cli/backend/src/services/v3/request.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts +279 -0
- package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js +458 -0
- package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js.map +1 -0
- package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts +376 -0
- package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/ticket-intake.service.js +566 -0
- package/dist/cli/backend/src/services/v3/ticket-intake.service.js.map +1 -0
- package/dist/cli/backend/src/types/slack.types.d.ts +29 -0
- package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/slack.types.js.map +1 -1
- package/dist/cli/backend/src/types/thread-status.types.d.ts +26 -0
- package/dist/cli/backend/src/types/thread-status.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/thread-status.types.js +17 -0
- package/dist/cli/backend/src/types/thread-status.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/index.d.ts +3 -2
- package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/index.js +1 -1
- package/dist/cli/backend/src/types/v2/index.js.map +1 -1
- package/dist/cli/backend/src/types/v2/request.types.d.ts +39 -3
- package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/request.types.js +11 -2
- package/dist/cli/backend/src/types/v2/request.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/ticket.types.d.ts +173 -0
- package/dist/cli/backend/src/types/v2/ticket.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/ticket.types.js +203 -0
- package/dist/cli/backend/src/types/v2/ticket.types.js.map +1 -0
- package/dist/cli/backend/src/utils/gemini-auth-settings.d.ts +62 -0
- package/dist/cli/backend/src/utils/gemini-auth-settings.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/gemini-auth-settings.js +104 -0
- package/dist/cli/backend/src/utils/gemini-auth-settings.js.map +1 -0
- package/dist/cli/backend/src/utils/local-api-url.utils.d.ts +56 -0
- package/dist/cli/backend/src/utils/local-api-url.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/local-api-url.utils.js +80 -0
- package/dist/cli/backend/src/utils/local-api-url.utils.js.map +1 -0
- package/dist/cli/cli/src/commands/doctor.d.ts +73 -2
- package/dist/cli/cli/src/commands/doctor.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/doctor.js +250 -8
- package/dist/cli/cli/src/commands/doctor.js.map +1 -1
- package/dist/cli/cli/src/commands/install.js +2 -0
- package/dist/cli/cli/src/commands/install.js.map +1 -1
- package/dist/cli/cli/src/commands/onboard.d.ts +68 -0
- package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/onboard.js +149 -18
- package/dist/cli/cli/src/commands/onboard.js.map +1 -1
- package/dist/cli/cli/src/commands/service.d.ts +6 -0
- package/dist/cli/cli/src/commands/service.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/service.js +152 -50
- package/dist/cli/cli/src/commands/service.js.map +1 -1
- package/dist/cli/cli/src/commands/start.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/start.js +25 -80
- package/dist/cli/cli/src/commands/start.js.map +1 -1
- package/dist/cli/cli/src/commands/status.d.ts +17 -1
- package/dist/cli/cli/src/commands/status.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/status.js +133 -68
- package/dist/cli/cli/src/commands/status.js.map +1 -1
- package/dist/cli/cli/src/commands/stop.d.ts +28 -1
- package/dist/cli/cli/src/commands/stop.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/stop.js +260 -100
- package/dist/cli/cli/src/commands/stop.js.map +1 -1
- package/dist/cli/cli/src/index.js +3 -2
- package/dist/cli/cli/src/index.js.map +1 -1
- package/dist/cli/cli/src/scripts/ensure-node-pty.d.ts +68 -0
- package/dist/cli/cli/src/scripts/ensure-node-pty.d.ts.map +1 -0
- package/dist/cli/cli/src/scripts/ensure-node-pty.js +167 -0
- package/dist/cli/cli/src/scripts/ensure-node-pty.js.map +1 -0
- package/dist/cli/cli/src/utils/backend-status.d.ts +175 -0
- package/dist/cli/cli/src/utils/backend-status.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/backend-status.js +322 -0
- package/dist/cli/cli/src/utils/backend-status.js.map +1 -0
- package/dist/cli/cli/src/utils/marketplace.d.ts +31 -2
- package/dist/cli/cli/src/utils/marketplace.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/marketplace.js +78 -20
- package/dist/cli/cli/src/utils/marketplace.js.map +1 -1
- package/dist/cli/cli/src/utils/native-toolchain.d.ts +53 -8
- package/dist/cli/cli/src/utils/native-toolchain.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/native-toolchain.js +107 -15
- package/dist/cli/cli/src/utils/native-toolchain.js.map +1 -1
- package/dist/cli/cli/src/utils/process-cleanup.d.ts +38 -6
- package/dist/cli/cli/src/utils/process-cleanup.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/process-cleanup.js +83 -53
- package/dist/cli/cli/src/utils/process-cleanup.js.map +1 -1
- package/dist/cli/cli/src/utils/runtime-auth.d.ts +130 -0
- package/dist/cli/cli/src/utils/runtime-auth.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/runtime-auth.js +248 -0
- package/dist/cli/cli/src/utils/runtime-auth.js.map +1 -0
- package/dist/cli/cli/src/utils/safe-shutdown.d.ts +137 -0
- package/dist/cli/cli/src/utils/safe-shutdown.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/safe-shutdown.js +236 -0
- package/dist/cli/cli/src/utils/safe-shutdown.js.map +1 -0
- package/dist/cli/config/constants.d.ts +40 -0
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +41 -0
- package/dist/cli/config/constants.js.map +1 -1
- package/dist/cli/config/index.d.ts +4 -2
- package/dist/cli/config/index.d.ts.map +1 -1
- package/dist/cli/config/index.js +2 -2
- package/dist/cli/config/index.js.map +1 -1
- package/frontend/dist/assets/{index-1fd45a2a.js → index-f7b99e81.js} +262 -262
- package/frontend/dist/index.html +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: To Do Tasks
|
|
3
|
+
description: List the tasks in one of the owner's Microsoft To Do lists — open tasks by default, --all to include completed ones (via the Microsoft grant held by Crewly Cloud). Read-only.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
category: productivity
|
|
6
|
+
skillType: claude-skill
|
|
7
|
+
assignableRoles:
|
|
8
|
+
- orchestrator
|
|
9
|
+
- team-leader
|
|
10
|
+
- developer
|
|
11
|
+
- operations
|
|
12
|
+
- ops
|
|
13
|
+
- sales
|
|
14
|
+
- support
|
|
15
|
+
- generalist
|
|
16
|
+
triggers:
|
|
17
|
+
- what is on my to do list
|
|
18
|
+
- list microsoft to do tasks
|
|
19
|
+
- open tasks in to do
|
|
20
|
+
- outlook tasks
|
|
21
|
+
tags:
|
|
22
|
+
- microsoft
|
|
23
|
+
- todo
|
|
24
|
+
- tasks
|
|
25
|
+
execution:
|
|
26
|
+
type: script
|
|
27
|
+
script:
|
|
28
|
+
file: execute.sh
|
|
29
|
+
interpreter: bash
|
|
30
|
+
timeoutMs: 60000
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
# To Do Tasks
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
bash execute.sh # open tasks of the default list ("Tasks")
|
|
37
|
+
bash execute.sh --list Groceries # name (case-insensitive) or id
|
|
38
|
+
bash execute.sh --list Work --all # include completed tasks
|
|
39
|
+
bash execute.sh --list Work --limit 20 # default 50, max 100
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Output
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{"list":{"id":"AAMk…","name":"Work"},"count":2,"tasks":[{"id":"AAMk…","title":"Send deck to Ann","status":"notStarted","importance":"high","due":"2026-10-01","note":"v3 is in Drive"},{"id":"AAMk…","title":"Book venue","status":"completed","completedAt":"2026-09-20"}]}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
`importance` appears only when not normal; `note` is plain text, cut at
|
|
49
|
+
200 characters. `hasMore: true` means the list has more tasks than the
|
|
50
|
+
limit. Use the task `id` with todo-update.
|
|
51
|
+
|
|
52
|
+
## Failures
|
|
53
|
+
|
|
54
|
+
`{"success":false,"reason":"not_connected","hint":"<connect URL>"}` (exit 1)
|
|
55
|
+
when the owner has not connected Microsoft To Do (Connections → Microsoft To Do).
|
|
56
|
+
Other reasons: `not_found` (unknown list / task — the message lists the
|
|
57
|
+
available lists), `forbidden` (the account has no Exchange Online mailbox, or
|
|
58
|
+
the organisation blocks the app), `rate_limited` (with `retryAfter` seconds),
|
|
59
|
+
`validation`, `connector_forbidden` (the owner has not allowed your role).
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# =============================================================================
|
|
3
|
+
# todo-tasks — List the tasks of one Microsoft To Do list (open ones unless --all)
|
|
4
|
+
#
|
|
5
|
+
# Backed by GET /api/microsoft-todo/tasks.
|
|
6
|
+
#
|
|
7
|
+
# Usage:
|
|
8
|
+
# bash execute.sh # open tasks of the default list ("Tasks")
|
|
9
|
+
# bash execute.sh --list Groceries # list name (case-insensitive) or id
|
|
10
|
+
# bash execute.sh --list Work --all # include completed tasks
|
|
11
|
+
# bash execute.sh '{"list":"Work","limit":20}'
|
|
12
|
+
# =============================================================================
|
|
13
|
+
set -euo pipefail
|
|
14
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
15
|
+
source "${SCRIPT_DIR}/../../_common/lib.sh"
|
|
16
|
+
|
|
17
|
+
print_usage() {
|
|
18
|
+
cat <<'EOF_USAGE'
|
|
19
|
+
Usage:
|
|
20
|
+
bash execute.sh # open tasks of the default list ("Tasks")
|
|
21
|
+
bash execute.sh --list Groceries # list name (case-insensitive) or id
|
|
22
|
+
bash execute.sh --list Work --all # include completed tasks
|
|
23
|
+
bash execute.sh '{"list":"Work","limit":20}'
|
|
24
|
+
|
|
25
|
+
Options:
|
|
26
|
+
--list, -l List name (case-insensitive) or id; default: the owner's default list
|
|
27
|
+
--all Include completed tasks
|
|
28
|
+
--limit, -n Result cap (default 50, max 100)
|
|
29
|
+
--help | -h Show this help
|
|
30
|
+
EOF_USAGE
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
fail_from() {
|
|
34
|
+
printf '%s' "$1" | jq -c '{success: false, reason: (.details.error // .details // .error // "unknown"), hint: (.details.hint // ""), message: (.details.message // "")} + (if (.details | type) == "object" and .details.retryAfter then {retryAfter: .details.retryAfter} else {} end)' 2>/dev/null \
|
|
35
|
+
|| jq -n --arg r "$1" '{success: false, reason: $r}'
|
|
36
|
+
exit 1
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
uri() { jq -rn --arg v "$1" '$v|@uri'; }
|
|
40
|
+
|
|
41
|
+
# api_call may print a one-line warning to stderr (no CREWLY_SESSION_NAME);
|
|
42
|
+
# the backend answer is always the last line. On failure print the mapped
|
|
43
|
+
# failure JSON (fail_from) and return 1.
|
|
44
|
+
call() {
|
|
45
|
+
local out
|
|
46
|
+
out=$(api_call "$@" 2>&1) || { fail_from "$(printf '%s\n' "$out" | tail -n 1)"; }
|
|
47
|
+
printf '%s\n' "$out" | tail -n 1
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
INPUT_JSON=""
|
|
51
|
+
if [[ $# -gt 0 && ${1:0:1} == '{' ]]; then
|
|
52
|
+
INPUT_JSON="$1"
|
|
53
|
+
shift || true
|
|
54
|
+
fi
|
|
55
|
+
LIST=""; ALL=""; LIMIT=""
|
|
56
|
+
while [[ $# -gt 0 ]]; do
|
|
57
|
+
case "$1" in
|
|
58
|
+
--list|-l) [ $# -ge 2 ] || error_exit "--list requires a value"; LIST="$2"; shift 2 ;;
|
|
59
|
+
--all) ALL="1"; shift ;;
|
|
60
|
+
--limit|-n) [ $# -ge 2 ] || error_exit "--limit requires a value"; LIMIT="$2"; shift 2 ;;
|
|
61
|
+
--help|-h) print_usage; exit 0 ;;
|
|
62
|
+
*) error_exit "Unknown option: $1" ;;
|
|
63
|
+
esac
|
|
64
|
+
done
|
|
65
|
+
if [ -n "$INPUT_JSON" ]; then
|
|
66
|
+
INPUT=$(read_json_input "$INPUT_JSON")
|
|
67
|
+
[ -z "$LIST" ] && LIST=$(printf '%s' "$INPUT" | jq -r '.list // empty')
|
|
68
|
+
[ -z "$ALL" ] && ALL=$(printf '%s' "$INPUT" | jq -r 'if .all == true then "1" else empty end')
|
|
69
|
+
[ -z "$LIMIT" ] && LIMIT=$(printf '%s' "$INPUT" | jq -r '.limit // empty')
|
|
70
|
+
fi
|
|
71
|
+
QS=""
|
|
72
|
+
[ -n "$LIST" ] && QS="${QS}&list=$(uri "$LIST")"
|
|
73
|
+
[ -n "$ALL" ] && QS="${QS}&all=1"
|
|
74
|
+
[ -n "$LIMIT" ] && QS="${QS}&limit=$(uri "$LIMIT")"
|
|
75
|
+
QS="${QS#&}"
|
|
76
|
+
RESPONSE=$(call GET "/microsoft-todo/tasks${QS:+?$QS}") || { printf '%s\n' "$RESPONSE"; exit 1; }
|
|
77
|
+
if printf '%s' "$RESPONSE" | jq -e '.truncated == true' >/dev/null 2>&1; then printf '%s\n' "$RESPONSE"; exit 0; fi
|
|
78
|
+
printf '%s' "$RESPONSE" | jq -c '{list: .data.list, count: .data.count, tasks: .data.tasks} + (if .data.hasMore then {hasMore: true} else {} end)'
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Tests for todo-tasks — run with: bash execute.test.sh
|
|
3
|
+
# Python HTTP stub as the backend; asserts the request the skill sends and
|
|
4
|
+
# the JSON it prints. Exit 0 on pass.
|
|
5
|
+
set -u
|
|
6
|
+
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
7
|
+
EXEC="$HERE/execute.sh"
|
|
8
|
+
PASS=0; FAIL=0
|
|
9
|
+
check() {
|
|
10
|
+
local name="$1"; local got="$2"; local want="$3"
|
|
11
|
+
if [ "$got" = "$want" ]; then PASS=$((PASS+1)); else FAIL=$((FAIL+1)); echo "FAIL: $name"; echo " want: $want"; echo " got: $got"; fi
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
PORT=18831
|
|
15
|
+
STUB_LOG="$(mktemp)"; export STUB_LOG; export STUB_PORT="$PORT"
|
|
16
|
+
python3 -u <<'PY' >/dev/null 2>&1 &
|
|
17
|
+
from http.server import BaseHTTPRequestHandler, HTTPServer
|
|
18
|
+
import json, os
|
|
19
|
+
LOG = os.environ['STUB_LOG']; PORT = int(os.environ['STUB_PORT'])
|
|
20
|
+
LIST = {'id': 'L1', 'name': 'Groceries'}
|
|
21
|
+
class H(BaseHTTPRequestHandler):
|
|
22
|
+
def _reply(self, method, data=None):
|
|
23
|
+
open(LOG, 'w').write(json.dumps({'method': method, 'path': self.path, 'body': data}))
|
|
24
|
+
if 'no-grant' in self.path or 'no-grant' in json.dumps(data or {}):
|
|
25
|
+
self.send_response(409); self.send_header('Content-Type', 'application/json'); self.end_headers()
|
|
26
|
+
self.wfile.write(json.dumps({'success': False, 'error': 'not_connected', 'message': 'no grant', 'hint': 'https://cloud/start?token=j'}).encode()); return
|
|
27
|
+
path = self.path.split('?')[0]
|
|
28
|
+
if path == '/api/microsoft-todo/lists' and method == 'GET':
|
|
29
|
+
out = {'count': 2, 'lists': [{'id': 'L0', 'name': 'Tasks', 'isDefault': True}, LIST]}
|
|
30
|
+
elif path == '/api/microsoft-todo/lists':
|
|
31
|
+
out = {'id': 'L9', 'name': (data or {}).get('name')}
|
|
32
|
+
elif path == '/api/microsoft-todo/tasks' and method == 'GET':
|
|
33
|
+
out = {'list': LIST, 'count': 1, 'tasks': [{'id': 'T1', 'title': 'Milk', 'status': 'notStarted', 'due': '2026-10-01'}]}
|
|
34
|
+
elif path == '/api/microsoft-todo/tasks':
|
|
35
|
+
out = {'list': LIST, 'task': {'id': 'T2', 'title': (data or {}).get('title'), 'status': 'notStarted'}}
|
|
36
|
+
elif method == 'PATCH':
|
|
37
|
+
out = {'list': LIST, 'task': {'id': path.rsplit('/', 1)[1], 'title': 'Milk', 'status': 'completed'}}
|
|
38
|
+
elif method == 'DELETE':
|
|
39
|
+
out = {'list': LIST, 'taskId': path.rsplit('/', 1)[1], 'deleted': True}
|
|
40
|
+
else:
|
|
41
|
+
out = {}
|
|
42
|
+
self.send_response(200); self.send_header('Content-Type', 'application/json'); self.end_headers()
|
|
43
|
+
self.wfile.write(json.dumps({'success': True, 'data': out}).encode())
|
|
44
|
+
def _body(self):
|
|
45
|
+
n = int(self.headers.get('content-length', '0')); body = self.rfile.read(n).decode() if n else ''
|
|
46
|
+
return json.loads(body or '{}')
|
|
47
|
+
def do_GET(self): self._reply('GET')
|
|
48
|
+
def do_DELETE(self): self._reply('DELETE')
|
|
49
|
+
def do_POST(self): self._reply('POST', self._body())
|
|
50
|
+
def do_PATCH(self): self._reply('PATCH', self._body())
|
|
51
|
+
def log_message(self, *a, **k): pass
|
|
52
|
+
HTTPServer(('127.0.0.1', PORT), H).serve_forever()
|
|
53
|
+
PY
|
|
54
|
+
STUB_PID=$!
|
|
55
|
+
disown "$STUB_PID" 2>/dev/null || true
|
|
56
|
+
trap 'kill "$STUB_PID" >/dev/null 2>&1; rm -f "$STUB_LOG"' EXIT
|
|
57
|
+
for i in $(seq 1 30); do curl -s -o /dev/null -m 0.2 "http://127.0.0.1:${PORT}/" 2>/dev/null && break; sleep 0.1; done
|
|
58
|
+
|
|
59
|
+
run() { CREWLY_API_URL="http://127.0.0.1:${PORT}" bash "$EXEC" "$@" 2>/dev/null; }
|
|
60
|
+
run_err() { CREWLY_API_URL="http://127.0.0.1:${PORT}" bash "$EXEC" "$@" 2>&1 >/dev/null; }
|
|
61
|
+
last() { jq -c "$1" "$STUB_LOG"; }
|
|
62
|
+
|
|
63
|
+
OUT=$(run --list "Big Shop" --all --limit 5)
|
|
64
|
+
check "list: output" "$OUT" '{"list":{"id":"L1","name":"Groceries"},"count":1,"tasks":[{"id":"T1","title":"Milk","status":"notStarted","due":"2026-10-01"}]}'
|
|
65
|
+
check "list: path" "$(last '.path')" '"/api/microsoft-todo/tasks?list=Big%20Shop&all=1&limit=5"'
|
|
66
|
+
run >/dev/null
|
|
67
|
+
check "default list: bare path" "$(last '.path')" '"/api/microsoft-todo/tasks"'
|
|
68
|
+
run '{"list":"Work","all":true}' >/dev/null
|
|
69
|
+
check "json input" "$(last '.path')" '"/api/microsoft-todo/tasks?list=Work&all=1"'
|
|
70
|
+
OUT=$(run --list no-grant || true)
|
|
71
|
+
check "not connected" "$(printf '%s' "$OUT" | jq -r .reason)" "not_connected"
|
|
72
|
+
|
|
73
|
+
echo "todo-tasks: $PASS passed, $FAIL failed"
|
|
74
|
+
[ "$FAIL" -eq 0 ]
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: To Do Update
|
|
3
|
+
description: Complete, reopen, retitle, re-date or delete a task in one of the owner's Microsoft To Do lists (via the Microsoft grant held by Crewly Cloud).
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
category: productivity
|
|
6
|
+
skillType: claude-skill
|
|
7
|
+
assignableRoles:
|
|
8
|
+
- orchestrator
|
|
9
|
+
- team-leader
|
|
10
|
+
- developer
|
|
11
|
+
- operations
|
|
12
|
+
- ops
|
|
13
|
+
- sales
|
|
14
|
+
- support
|
|
15
|
+
- generalist
|
|
16
|
+
triggers:
|
|
17
|
+
- mark to do task done
|
|
18
|
+
- complete microsoft to do task
|
|
19
|
+
- change the due date in to do
|
|
20
|
+
- delete a to do task
|
|
21
|
+
tags:
|
|
22
|
+
- microsoft
|
|
23
|
+
- todo
|
|
24
|
+
- tasks
|
|
25
|
+
execution:
|
|
26
|
+
type: script
|
|
27
|
+
script:
|
|
28
|
+
file: execute.sh
|
|
29
|
+
interpreter: bash
|
|
30
|
+
timeoutMs: 60000
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
# To Do Update
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
bash execute.sh --list Groceries --task <id> --complete
|
|
37
|
+
bash execute.sh --list Work --task <id> --title "Send v4 deck" --due 2026-10-03
|
|
38
|
+
bash execute.sh --list Work --task <id> --due none # clear the due date
|
|
39
|
+
bash execute.sh --list Work --task <id> --reopen
|
|
40
|
+
bash execute.sh --list Work --task <id> --delete # cannot be undone
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
`--task` is the id from todo-tasks. `--list` is the list the task is in
|
|
44
|
+
(name or id; the default list when omitted). Changes can be combined in one
|
|
45
|
+
call; `--delete` ignores the others.
|
|
46
|
+
|
|
47
|
+
## Output
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{"success":true,"list":"Groceries","task":{"id":"AAMk…","title":"Milk","status":"completed","completedAt":"2026-09-23"}}
|
|
51
|
+
{"success":true,"deleted":true,"list":"Work","taskId":"AAMk…"}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Only delete when the owner asked for it; completing keeps the history.
|
|
55
|
+
|
|
56
|
+
## Failures
|
|
57
|
+
|
|
58
|
+
`{"success":false,"reason":"not_connected","hint":"<connect URL>"}` (exit 1)
|
|
59
|
+
when the owner has not connected Microsoft To Do (Connections → Microsoft To Do).
|
|
60
|
+
Other reasons: `not_found` (unknown list / task — the message lists the
|
|
61
|
+
available lists), `forbidden` (the account has no Exchange Online mailbox, or
|
|
62
|
+
the organisation blocks the app), `rate_limited` (with `retryAfter` seconds),
|
|
63
|
+
`validation`, `connector_forbidden` (the owner has not allowed your role).
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# =============================================================================
|
|
3
|
+
# todo-update — Complete, reopen, edit or delete a Microsoft To Do task
|
|
4
|
+
#
|
|
5
|
+
# Backed by PATCH / DELETE /api/microsoft-todo/tasks/:taskId.
|
|
6
|
+
#
|
|
7
|
+
# Usage:
|
|
8
|
+
# bash execute.sh --list Groceries --task <taskId> --complete
|
|
9
|
+
# bash execute.sh --list Work --task <taskId> --title "Send v4 deck" --due 2026-10-03
|
|
10
|
+
# bash execute.sh --list Work --task <taskId> --due none # clear the due date
|
|
11
|
+
# bash execute.sh --list Work --task <taskId> --reopen
|
|
12
|
+
# bash execute.sh --list Work --task <taskId> --delete
|
|
13
|
+
# bash execute.sh '{"list":"Work","task":"AAMk…","complete":true}'
|
|
14
|
+
# =============================================================================
|
|
15
|
+
set -euo pipefail
|
|
16
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
17
|
+
source "${SCRIPT_DIR}/../../_common/lib.sh"
|
|
18
|
+
|
|
19
|
+
print_usage() {
|
|
20
|
+
cat <<'EOF_USAGE'
|
|
21
|
+
Usage:
|
|
22
|
+
bash execute.sh --list Groceries --task <taskId> --complete
|
|
23
|
+
bash execute.sh --list Work --task <taskId> --title "Send v4 deck" --due 2026-10-03
|
|
24
|
+
bash execute.sh --list Work --task <taskId> --due none # clear the due date
|
|
25
|
+
bash execute.sh --list Work --task <taskId> --reopen
|
|
26
|
+
bash execute.sh --list Work --task <taskId> --delete
|
|
27
|
+
bash execute.sh '{"list":"Work","task":"AAMk…","complete":true}'
|
|
28
|
+
|
|
29
|
+
Options:
|
|
30
|
+
--task Task id from todo-tasks (required)
|
|
31
|
+
--list, -l List name (case-insensitive) or id the task is in; default: the owner's default list
|
|
32
|
+
--complete Mark the task completed
|
|
33
|
+
--reopen Mark a completed task not started again
|
|
34
|
+
--title New title
|
|
35
|
+
--due New due date YYYY-MM-DD, or "none" to clear it
|
|
36
|
+
--note Replace the note
|
|
37
|
+
--importance low | normal | high
|
|
38
|
+
--delete Delete the task (cannot be undone)
|
|
39
|
+
--help | -h Show this help
|
|
40
|
+
EOF_USAGE
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
fail_from() {
|
|
44
|
+
printf '%s' "$1" | jq -c '{success: false, reason: (.details.error // .details // .error // "unknown"), hint: (.details.hint // ""), message: (.details.message // "")} + (if (.details | type) == "object" and .details.retryAfter then {retryAfter: .details.retryAfter} else {} end)' 2>/dev/null \
|
|
45
|
+
|| jq -n --arg r "$1" '{success: false, reason: $r}'
|
|
46
|
+
exit 1
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
uri() { jq -rn --arg v "$1" '$v|@uri'; }
|
|
50
|
+
|
|
51
|
+
# api_call may print a one-line warning to stderr (no CREWLY_SESSION_NAME);
|
|
52
|
+
# the backend answer is always the last line. On failure print the mapped
|
|
53
|
+
# failure JSON (fail_from) and return 1.
|
|
54
|
+
call() {
|
|
55
|
+
local out
|
|
56
|
+
out=$(api_call "$@" 2>&1) || { fail_from "$(printf '%s\n' "$out" | tail -n 1)"; }
|
|
57
|
+
printf '%s\n' "$out" | tail -n 1
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
INPUT_JSON=""
|
|
61
|
+
if [[ $# -gt 0 && ${1:0:1} == '{' ]]; then
|
|
62
|
+
INPUT_JSON="$1"
|
|
63
|
+
shift || true
|
|
64
|
+
fi
|
|
65
|
+
TASK=""; LIST=""; COMPLETE=""; TITLE=""; DUE=""; NOTE=""; IMPORTANCE=""; DELETE=""
|
|
66
|
+
while [[ $# -gt 0 ]]; do
|
|
67
|
+
case "$1" in
|
|
68
|
+
--task) [ $# -ge 2 ] || error_exit "--task requires a value"; TASK="$2"; shift 2 ;;
|
|
69
|
+
--list|-l) [ $# -ge 2 ] || error_exit "--list requires a value"; LIST="$2"; shift 2 ;;
|
|
70
|
+
--complete) COMPLETE="true"; shift ;;
|
|
71
|
+
--reopen) COMPLETE="false"; shift ;;
|
|
72
|
+
--title) [ $# -ge 2 ] || error_exit "--title requires a value"; TITLE="$2"; shift 2 ;;
|
|
73
|
+
--due) [ $# -ge 2 ] || error_exit "--due requires a value"; DUE="$2"; shift 2 ;;
|
|
74
|
+
--note) [ $# -ge 2 ] || error_exit "--note requires a value"; NOTE="$2"; shift 2 ;;
|
|
75
|
+
--importance) [ $# -ge 2 ] || error_exit "--importance requires a value"; IMPORTANCE="$2"; shift 2 ;;
|
|
76
|
+
--delete) DELETE="1"; shift ;;
|
|
77
|
+
--help|-h) print_usage; exit 0 ;;
|
|
78
|
+
*) error_exit "Unknown option: $1" ;;
|
|
79
|
+
esac
|
|
80
|
+
done
|
|
81
|
+
if [ -n "$INPUT_JSON" ]; then
|
|
82
|
+
INPUT=$(read_json_input "$INPUT_JSON")
|
|
83
|
+
[ -z "$TASK" ] && TASK=$(printf '%s' "$INPUT" | jq -r '.task // .taskId // .id // empty')
|
|
84
|
+
[ -z "$LIST" ] && LIST=$(printf '%s' "$INPUT" | jq -r '.list // empty')
|
|
85
|
+
[ -z "$COMPLETE" ] && COMPLETE=$(printf '%s' "$INPUT" | jq -r 'if .complete == true then "true" elif .reopen == true then "false" else empty end')
|
|
86
|
+
[ -z "$TITLE" ] && TITLE=$(printf '%s' "$INPUT" | jq -r '.title // empty')
|
|
87
|
+
[ -z "$DUE" ] && DUE=$(printf '%s' "$INPUT" | jq -r '.due // empty')
|
|
88
|
+
[ -z "$NOTE" ] && NOTE=$(printf '%s' "$INPUT" | jq -r '.note // empty')
|
|
89
|
+
[ -z "$IMPORTANCE" ] && IMPORTANCE=$(printf '%s' "$INPUT" | jq -r '.importance // empty')
|
|
90
|
+
[ -z "$DELETE" ] && DELETE=$(printf '%s' "$INPUT" | jq -r 'if .delete == true then "1" else empty end')
|
|
91
|
+
fi
|
|
92
|
+
[ -n "$TASK" ] || error_exit "--task is required (ids come from todo-tasks)"
|
|
93
|
+
if [ -n "$DELETE" ]; then
|
|
94
|
+
QS=""
|
|
95
|
+
[ -n "$LIST" ] && QS="?list=$(uri "$LIST")"
|
|
96
|
+
RESPONSE=$(call DELETE "/microsoft-todo/tasks/$(uri "$TASK")${QS}") || { printf '%s\n' "$RESPONSE"; exit 1; }
|
|
97
|
+
printf '%s' "$RESPONSE" | jq -c '{success: true, deleted: true, list: .data.list.name, taskId: .data.taskId}'
|
|
98
|
+
exit 0
|
|
99
|
+
fi
|
|
100
|
+
if [ -n "$DUE" ] && [ "$DUE" != "none" ] && ! [[ "$DUE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
|
|
101
|
+
error_exit "--due must look like 2026-10-01, or none to clear it"
|
|
102
|
+
fi
|
|
103
|
+
if [ -z "$COMPLETE" ] && [ -z "$TITLE" ] && [ -z "$DUE" ] && [ -z "$NOTE" ] && [ -z "$IMPORTANCE" ]; then
|
|
104
|
+
error_exit "nothing to change: give --complete, --reopen, --title, --due, --note, --importance or --delete"
|
|
105
|
+
fi
|
|
106
|
+
BODY=$(jq -cn --arg list "$LIST" --arg complete "$COMPLETE" --arg title "$TITLE" --arg due "$DUE" --arg note "$NOTE" --arg imp "$IMPORTANCE" \
|
|
107
|
+
'{}
|
|
108
|
+
+ (if $list != "" then {list: $list} else {} end)
|
|
109
|
+
+ (if $complete != "" then {complete: ($complete == "true")} else {} end)
|
|
110
|
+
+ (if $title != "" then {title: $title} else {} end)
|
|
111
|
+
+ (if $due == "none" then {due: null} elif $due != "" then {due: $due} else {} end)
|
|
112
|
+
+ (if $note != "" then {note: $note} else {} end)
|
|
113
|
+
+ (if $imp != "" then {importance: $imp} else {} end)')
|
|
114
|
+
RESPONSE=$(call PATCH "/microsoft-todo/tasks/$(uri "$TASK")" "$BODY") || { printf '%s\n' "$RESPONSE"; exit 1; }
|
|
115
|
+
printf '%s' "$RESPONSE" | jq -c '{success: true, list: .data.list.name, task: .data.task}'
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Tests for todo-update — run with: bash execute.test.sh
|
|
3
|
+
# Python HTTP stub as the backend; asserts the request the skill sends and
|
|
4
|
+
# the JSON it prints. Exit 0 on pass.
|
|
5
|
+
set -u
|
|
6
|
+
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
7
|
+
EXEC="$HERE/execute.sh"
|
|
8
|
+
PASS=0; FAIL=0
|
|
9
|
+
check() {
|
|
10
|
+
local name="$1"; local got="$2"; local want="$3"
|
|
11
|
+
if [ "$got" = "$want" ]; then PASS=$((PASS+1)); else FAIL=$((FAIL+1)); echo "FAIL: $name"; echo " want: $want"; echo " got: $got"; fi
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
PORT=18833
|
|
15
|
+
STUB_LOG="$(mktemp)"; export STUB_LOG; export STUB_PORT="$PORT"
|
|
16
|
+
python3 -u <<'PY' >/dev/null 2>&1 &
|
|
17
|
+
from http.server import BaseHTTPRequestHandler, HTTPServer
|
|
18
|
+
import json, os
|
|
19
|
+
LOG = os.environ['STUB_LOG']; PORT = int(os.environ['STUB_PORT'])
|
|
20
|
+
LIST = {'id': 'L1', 'name': 'Groceries'}
|
|
21
|
+
class H(BaseHTTPRequestHandler):
|
|
22
|
+
def _reply(self, method, data=None):
|
|
23
|
+
open(LOG, 'w').write(json.dumps({'method': method, 'path': self.path, 'body': data}))
|
|
24
|
+
if 'no-grant' in self.path or 'no-grant' in json.dumps(data or {}):
|
|
25
|
+
self.send_response(409); self.send_header('Content-Type', 'application/json'); self.end_headers()
|
|
26
|
+
self.wfile.write(json.dumps({'success': False, 'error': 'not_connected', 'message': 'no grant', 'hint': 'https://cloud/start?token=j'}).encode()); return
|
|
27
|
+
path = self.path.split('?')[0]
|
|
28
|
+
if path == '/api/microsoft-todo/lists' and method == 'GET':
|
|
29
|
+
out = {'count': 2, 'lists': [{'id': 'L0', 'name': 'Tasks', 'isDefault': True}, LIST]}
|
|
30
|
+
elif path == '/api/microsoft-todo/lists':
|
|
31
|
+
out = {'id': 'L9', 'name': (data or {}).get('name')}
|
|
32
|
+
elif path == '/api/microsoft-todo/tasks' and method == 'GET':
|
|
33
|
+
out = {'list': LIST, 'count': 1, 'tasks': [{'id': 'T1', 'title': 'Milk', 'status': 'notStarted', 'due': '2026-10-01'}]}
|
|
34
|
+
elif path == '/api/microsoft-todo/tasks':
|
|
35
|
+
out = {'list': LIST, 'task': {'id': 'T2', 'title': (data or {}).get('title'), 'status': 'notStarted'}}
|
|
36
|
+
elif method == 'PATCH':
|
|
37
|
+
out = {'list': LIST, 'task': {'id': path.rsplit('/', 1)[1], 'title': 'Milk', 'status': 'completed'}}
|
|
38
|
+
elif method == 'DELETE':
|
|
39
|
+
out = {'list': LIST, 'taskId': path.rsplit('/', 1)[1], 'deleted': True}
|
|
40
|
+
else:
|
|
41
|
+
out = {}
|
|
42
|
+
self.send_response(200); self.send_header('Content-Type', 'application/json'); self.end_headers()
|
|
43
|
+
self.wfile.write(json.dumps({'success': True, 'data': out}).encode())
|
|
44
|
+
def _body(self):
|
|
45
|
+
n = int(self.headers.get('content-length', '0')); body = self.rfile.read(n).decode() if n else ''
|
|
46
|
+
return json.loads(body or '{}')
|
|
47
|
+
def do_GET(self): self._reply('GET')
|
|
48
|
+
def do_DELETE(self): self._reply('DELETE')
|
|
49
|
+
def do_POST(self): self._reply('POST', self._body())
|
|
50
|
+
def do_PATCH(self): self._reply('PATCH', self._body())
|
|
51
|
+
def log_message(self, *a, **k): pass
|
|
52
|
+
HTTPServer(('127.0.0.1', PORT), H).serve_forever()
|
|
53
|
+
PY
|
|
54
|
+
STUB_PID=$!
|
|
55
|
+
disown "$STUB_PID" 2>/dev/null || true
|
|
56
|
+
trap 'kill "$STUB_PID" >/dev/null 2>&1; rm -f "$STUB_LOG"' EXIT
|
|
57
|
+
for i in $(seq 1 30); do curl -s -o /dev/null -m 0.2 "http://127.0.0.1:${PORT}/" 2>/dev/null && break; sleep 0.1; done
|
|
58
|
+
|
|
59
|
+
run() { CREWLY_API_URL="http://127.0.0.1:${PORT}" bash "$EXEC" "$@" 2>/dev/null; }
|
|
60
|
+
run_err() { CREWLY_API_URL="http://127.0.0.1:${PORT}" bash "$EXEC" "$@" 2>&1 >/dev/null; }
|
|
61
|
+
last() { jq -c "$1" "$STUB_LOG"; }
|
|
62
|
+
|
|
63
|
+
OUT=$(run --list Groceries --task "AA/k=" --complete)
|
|
64
|
+
check "complete: output" "$OUT" '{"success":true,"list":"Groceries","task":{"id":"AA%2Fk%3D","title":"Milk","status":"completed"}}'
|
|
65
|
+
check "complete: request" "$(last '[.method,.path,.body]')" '["PATCH","/api/microsoft-todo/tasks/AA%2Fk%3D",{"list":"Groceries","complete":true}]'
|
|
66
|
+
run --task T1 --title "Oat milk" --due 2026-10-03 --importance low >/dev/null
|
|
67
|
+
check "edit: body" "$(last '.body')" '{"title":"Oat milk","due":"2026-10-03","importance":"low"}'
|
|
68
|
+
run --task T1 --due none --reopen >/dev/null
|
|
69
|
+
check "clear due + reopen" "$(last '.body')" '{"complete":false,"due":null}'
|
|
70
|
+
OUT=$(run --list Work --task T1 --delete)
|
|
71
|
+
check "delete: output" "$OUT" '{"success":true,"deleted":true,"list":"Groceries","taskId":"T1"}'
|
|
72
|
+
check "delete: request" "$(last '[.method,.path]')" '["DELETE","/api/microsoft-todo/tasks/T1?list=Work"]'
|
|
73
|
+
run '{"list":"Work","task":"T7","complete":true}' >/dev/null
|
|
74
|
+
check "json input" "$(last '[.path,.body]')" '["/api/microsoft-todo/tasks/T7",{"list":"Work","complete":true}]'
|
|
75
|
+
check "task required" "$(run_err --complete | jq -r .error)" "--task is required (ids come from todo-tasks)"
|
|
76
|
+
check "nothing to change" "$(run_err --task T1 | jq -r .error | cut -c1-17)" "nothing to change"
|
|
77
|
+
check "bad due" "$(run_err --task T1 --due 1/10 | jq -r .error)" "--due must look like 2026-10-01, or none to clear it"
|
|
78
|
+
OUT=$(run --list no-grant --task T1 --complete || true)
|
|
79
|
+
check "not connected" "$(printf '%s' "$OUT" | jq -r .reason)" "not_connected"
|
|
80
|
+
|
|
81
|
+
echo "todo-update: $PASS passed, $FAIL failed"
|
|
82
|
+
[ "$FAIL" -eq 0 ]
|
|
@@ -69,7 +69,7 @@ fi
|
|
|
69
69
|
# ---------------------------------------------------------------------------
|
|
70
70
|
# Call backend API
|
|
71
71
|
# ---------------------------------------------------------------------------
|
|
72
|
-
CREWLY_PORT="${CREWLY_PORT:-8787}"
|
|
72
|
+
CREWLY_PORT="${CREWLY_PORT:-${WEB_PORT:-8787}}"
|
|
73
73
|
API_URL="${CREWLY_API_URL:-http://localhost:${CREWLY_PORT}}"
|
|
74
74
|
|
|
75
75
|
RESPONSE=$(curl -s -w "\n%{http_code}" \
|
|
@@ -27,7 +27,7 @@ OUTPUT_DIR=$(printf '%s' "$INPUT" | jq -r '.outputDir // ""')
|
|
|
27
27
|
PROJECT_PATH=$(printf '%s' "$INPUT" | jq -r '.projectPath // ""')
|
|
28
28
|
|
|
29
29
|
# Crewly API base URL
|
|
30
|
-
API_BASE="${CREWLY_API_URL:-http://localhost
|
|
30
|
+
API_BASE="${CREWLY_API_URL:-http://localhost:${WEB_PORT:-8787}}"
|
|
31
31
|
|
|
32
32
|
# Local storage directory
|
|
33
33
|
LOCAL_DIR="${PROJECT_PATH:-.}/.crewly/onboarding"
|
|
@@ -28,7 +28,7 @@ TEAM_ID=$(printf '%s' "$INPUT" | jq -r '.teamId // ""')
|
|
|
28
28
|
PROJECT_PATH=$(printf '%s' "$INPUT" | jq -r '.projectPath // ""')
|
|
29
29
|
|
|
30
30
|
# Crewly API base URL
|
|
31
|
-
API_BASE="${CREWLY_API_URL:-http://localhost
|
|
31
|
+
API_BASE="${CREWLY_API_URL:-http://localhost:${WEB_PORT:-8787}}"
|
|
32
32
|
|
|
33
33
|
case "$ACTION" in
|
|
34
34
|
submit)
|
|
@@ -131,7 +131,7 @@ bash .../remote-browser/execute.sh '{"action":"navigate","url":"https://labs.goo
|
|
|
131
131
|
|
|
132
132
|
```bash
|
|
133
133
|
# Direct API call (bypasses execute.sh):
|
|
134
|
-
curl -s -X POST
|
|
134
|
+
curl -s -X POST "$CREWLY_API_URL/api/browser/set-file-input" \
|
|
135
135
|
-H "Content-Type: application/json" \
|
|
136
136
|
-d '{"selector":"input[type=file]","filePaths":["/tmp/image.png"]}'
|
|
137
137
|
|
|
@@ -42,6 +42,11 @@
|
|
|
42
42
|
# call (drops the X-Agent-Session header).
|
|
43
43
|
# --active Only meaningful with `bind-tab`: foreground
|
|
44
44
|
# the new tab on creation.
|
|
45
|
+
# --goal <text> What you're trying to accomplish. Sent as the
|
|
46
|
+
# X-Agent-Goal header so the user's Chrome takeover
|
|
47
|
+
# banner shows your objective (e.g. "Verify DMARC
|
|
48
|
+
# setup"), not just the current tool. Overrides any
|
|
49
|
+
# inherited CREWLY_AGENT_GOAL for this call.
|
|
45
50
|
#
|
|
46
51
|
# Supported actions and their parameters:
|
|
47
52
|
# status — connection status (no params)
|
|
@@ -86,6 +91,9 @@ EXTRA_PARAMS=""
|
|
|
86
91
|
TAB_ID="" # --tab-id <N>: explicit override
|
|
87
92
|
NO_BIND="false" # --no-bind: drop X-Agent-Session for this call
|
|
88
93
|
FOREGROUND="false" # --active: only meaningful with bind-tab
|
|
94
|
+
GOAL="" # --goal <text>: what the agent is trying to accomplish
|
|
95
|
+
# (shown in the Chrome takeover banner). Overrides any
|
|
96
|
+
# inherited CREWLY_AGENT_GOAL for this call.
|
|
89
97
|
|
|
90
98
|
# Detect legacy JSON argument
|
|
91
99
|
if [[ $# -gt 0 && ${1:0:1} == '{' ]]; then
|
|
@@ -119,6 +127,10 @@ while [[ $# -gt 0 ]]; do
|
|
|
119
127
|
CODE="$2"
|
|
120
128
|
shift 2
|
|
121
129
|
;;
|
|
130
|
+
--goal|-g)
|
|
131
|
+
GOAL="$2"
|
|
132
|
+
shift 2
|
|
133
|
+
;;
|
|
122
134
|
--params|-P)
|
|
123
135
|
EXTRA_PARAMS="$2"
|
|
124
136
|
shift 2
|
|
@@ -142,6 +154,11 @@ while [[ $# -gt 0 ]]; do
|
|
|
142
154
|
--help|-h)
|
|
143
155
|
echo "Usage: execute.sh --action navigate --url https://example.com"
|
|
144
156
|
echo " execute.sh '{\"action\":\"screenshot\"}'"
|
|
157
|
+
echo " execute.sh --action navigate --url https://x.com --goal 'Check pricing'"
|
|
158
|
+
echo ""
|
|
159
|
+
echo " --goal <text> What you're trying to accomplish; shown in the"
|
|
160
|
+
echo " user's Chrome takeover banner. Recommended on the"
|
|
161
|
+
echo " first action of a browser task."
|
|
145
162
|
echo ""
|
|
146
163
|
echo "Actions: status, navigate, screenshot, read-text, click, fill, type,"
|
|
147
164
|
echo " scroll, hover, press-key, get-element, wait-for-selector,"
|
|
@@ -184,6 +201,7 @@ if [ -n "$INPUT_JSON" ]; then
|
|
|
184
201
|
[ -z "$VALUE" ] && VALUE=$(printf '%s' "$INPUT" | jq -r '.value // empty')
|
|
185
202
|
[ -z "$TEXT" ] && TEXT=$(printf '%s' "$INPUT" | jq -r '.text // empty')
|
|
186
203
|
[ -z "$CODE" ] && CODE=$(printf '%s' "$INPUT" | jq -r '.code // empty')
|
|
204
|
+
[ -z "$GOAL" ] && GOAL=$(printf '%s' "$INPUT" | jq -r '.goal // empty')
|
|
187
205
|
# Per-tab dispatch fields surfaced in JSON input. CLI flags win over JSON
|
|
188
206
|
# (CLI is more explicit). Empty string = "not provided".
|
|
189
207
|
if [ -z "$TAB_ID" ]; then
|
|
@@ -200,7 +218,7 @@ if [ -n "$INPUT_JSON" ]; then
|
|
|
200
218
|
# Capture all extra fields from JSON input as pass-through params (strip
|
|
201
219
|
# per-tab fields too — they're handled by the dedicated branches below).
|
|
202
220
|
if [ -z "$EXTRA_PARAMS" ]; then
|
|
203
|
-
EXTRA_PARAMS=$(printf '%s' "$INPUT" | jq -c 'del(.action, .url, .selector, .value, .text, .code, .tabId, .noBind, .active) | if length == 0 then empty else . end' 2>/dev/null || true)
|
|
221
|
+
EXTRA_PARAMS=$(printf '%s' "$INPUT" | jq -c 'del(.action, .url, .selector, .value, .text, .code, .goal, .tabId, .noBind, .active) | if length == 0 then empty else . end' 2>/dev/null || true)
|
|
204
222
|
fi
|
|
205
223
|
fi
|
|
206
224
|
|
|
@@ -493,6 +511,15 @@ esac
|
|
|
493
511
|
# X-Agent-Session header for this single call (api_call reads it from the
|
|
494
512
|
# env). Using a subshell to scope the unset.
|
|
495
513
|
|
|
514
|
+
# An explicit --goal (or JSON `goal`) overrides any inherited CREWLY_AGENT_GOAL
|
|
515
|
+
# for this call. lib.sh::api_call reads CREWLY_AGENT_GOAL and forwards it as the
|
|
516
|
+
# X-Agent-Goal header, which the backend stamps onto the browser command so the
|
|
517
|
+
# Chrome takeover banner shows what the agent is doing. When --goal is absent we
|
|
518
|
+
# leave CREWLY_AGENT_GOAL untouched (auto path).
|
|
519
|
+
if [ -n "$GOAL" ]; then
|
|
520
|
+
export CREWLY_AGENT_GOAL="$GOAL"
|
|
521
|
+
fi
|
|
522
|
+
|
|
496
523
|
run_api_call() {
|
|
497
524
|
if [ "$METHOD" = "GET" ]; then
|
|
498
525
|
api_call GET "$ENDPOINT"
|
|
@@ -524,7 +551,12 @@ fi
|
|
|
524
551
|
# 404 with `tab_not_found` indicates our cached tabId is stale (Extension
|
|
525
552
|
# closed the tab while we weren't looking). Purge cache and retry the call
|
|
526
553
|
# WITHOUT a cached tabId so the backend auto-binds a fresh one.
|
|
554
|
+
#
|
|
555
|
+
# Only for a CACHED tabId. A tab the caller named with --tab-id must be
|
|
556
|
+
# honoured or the call fails: retrying elsewhere would quietly answer about a
|
|
557
|
+
# different tab than the one asked about.
|
|
527
558
|
if [ "$RESPONSE_EXIT" -ne 0 ] \
|
|
559
|
+
&& [ -z "$TAB_ID" ] \
|
|
528
560
|
&& [ -n "$STDERR_CAPTURE" ] \
|
|
529
561
|
&& printf '%s' "$STDERR_CAPTURE" | grep -q '"status":404' \
|
|
530
562
|
&& printf '%s' "$STDERR_CAPTURE" | grep -q 'tab_not_found' \
|