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,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ticket type definitions (specs/ticket-loop.md).
|
|
3
|
+
*
|
|
4
|
+
* A ticket IS a {@link Request} with a few extra fields — no new store. This
|
|
5
|
+
* module holds those fields' types plus the pure helpers every surface needs:
|
|
6
|
+
* number formatting / parsing, the delivered-message marker, priority labels
|
|
7
|
+
* and the derived board column.
|
|
8
|
+
*
|
|
9
|
+
* @module types/v2/ticket.types
|
|
10
|
+
*/
|
|
11
|
+
import { TICKET_CONSTANTS } from '../../constants.js';
|
|
12
|
+
/** All valid {@link TicketKind} values. */
|
|
13
|
+
export const TICKET_KINDS = ['issue', 'feature', 'idea'];
|
|
14
|
+
/** All board columns in display order. */
|
|
15
|
+
export const TICKET_BOARD_COLUMNS = [
|
|
16
|
+
'idea',
|
|
17
|
+
'todo',
|
|
18
|
+
'in_progress',
|
|
19
|
+
'blocked',
|
|
20
|
+
'to_review',
|
|
21
|
+
'done',
|
|
22
|
+
'cancelled',
|
|
23
|
+
];
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// Ticket number helpers
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
/** `TKT-12`, `tkt 12`, `TKT-012` → 12. */
|
|
28
|
+
const TICKET_NUMBER_REF = /^\s*tkt[-\s_]?(\d+)\s*$/i;
|
|
29
|
+
/** Bare digits → ticket number. */
|
|
30
|
+
const BARE_NUMBER_REF = /^\s*(\d+)\s*$/;
|
|
31
|
+
/**
|
|
32
|
+
* Render a ticket number for display.
|
|
33
|
+
*
|
|
34
|
+
* @param n - Ticket number
|
|
35
|
+
* @returns `TKT-` + the number zero-padded to three digits
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* formatTicketNumber(7) // 'TKT-007'
|
|
39
|
+
* formatTicketNumber(1234) // 'TKT-1234'
|
|
40
|
+
*/
|
|
41
|
+
export function formatTicketNumber(n) {
|
|
42
|
+
return `${TICKET_CONSTANTS.NUMBER_PREFIX}${String(Math.max(0, Math.floor(n))).padStart(TICKET_CONSTANTS.NUMBER_PAD, '0')}`;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Parse a ticket reference into a number, when it is one.
|
|
46
|
+
*
|
|
47
|
+
* @param ref - `TKT-123`, `tkt-123` or `123`
|
|
48
|
+
* @returns The number, or null when `ref` is not a number-style reference
|
|
49
|
+
*/
|
|
50
|
+
export function parseTicketNumber(ref) {
|
|
51
|
+
const m = TICKET_NUMBER_REF.exec(ref) ?? BARE_NUMBER_REF.exec(ref);
|
|
52
|
+
if (!m)
|
|
53
|
+
return null;
|
|
54
|
+
const n = Number.parseInt(m[1], 10);
|
|
55
|
+
return Number.isFinite(n) && n > 0 ? n : null;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Whether a string is a `TKT-123` style reference (not a bare number).
|
|
59
|
+
*
|
|
60
|
+
* @param ref - Candidate reference
|
|
61
|
+
* @returns True for `TKT-…` references
|
|
62
|
+
*/
|
|
63
|
+
export function isTicketNumberRef(ref) {
|
|
64
|
+
return TICKET_NUMBER_REF.test(ref);
|
|
65
|
+
}
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
// Delivered-message marker
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
/** `[TICKET:TKT-123 <uuid>]` */
|
|
70
|
+
const TICKET_MARKER = /\[TICKET:(TKT-\d+) ([A-Za-z0-9-]+)\]/g;
|
|
71
|
+
/**
|
|
72
|
+
* Build the marker added to a message delivered to an agent, so the agent
|
|
73
|
+
* (and `addToPool`) know which ticket the message belongs to.
|
|
74
|
+
*
|
|
75
|
+
* @param ticket - The ticket (needs id + ticketNumber)
|
|
76
|
+
* @returns `[TICKET:TKT-123 <id>]`, or '' when the ticket has no number
|
|
77
|
+
*/
|
|
78
|
+
export function formatTicketMarker(ticket) {
|
|
79
|
+
if (typeof ticket.ticketNumber !== 'number')
|
|
80
|
+
return '';
|
|
81
|
+
return `[TICKET:${formatTicketNumber(ticket.ticketNumber)} ${ticket.id}]`;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Every ticket marker in a delivered text, in order, de-duplicated by id.
|
|
85
|
+
*
|
|
86
|
+
* @param text - Delivered text
|
|
87
|
+
* @returns Referenced tickets
|
|
88
|
+
*/
|
|
89
|
+
export function parseTicketMarkers(text) {
|
|
90
|
+
const out = [];
|
|
91
|
+
const seen = new Set();
|
|
92
|
+
for (const m of text.matchAll(TICKET_MARKER)) {
|
|
93
|
+
if (seen.has(m[2]))
|
|
94
|
+
continue;
|
|
95
|
+
seen.add(m[2]);
|
|
96
|
+
out.push({ tkt: m[1], id: m[2] });
|
|
97
|
+
}
|
|
98
|
+
return out;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* The one ticket a set of delivered texts refers to.
|
|
102
|
+
*
|
|
103
|
+
* Used to link a WorkItem to the ticket of the turn that created it. When the
|
|
104
|
+
* turn holds messages from two different tickets there is no way to tell which
|
|
105
|
+
* one the WorkItem is for, so nothing is linked (the agent can still pass
|
|
106
|
+
* `--request-id`).
|
|
107
|
+
*
|
|
108
|
+
* @param texts - Texts delivered in the current turn
|
|
109
|
+
* @returns The ticket id, or null when none or more than one ticket is referenced
|
|
110
|
+
*/
|
|
111
|
+
export function uniqueTicketIdFromTexts(texts) {
|
|
112
|
+
const ids = new Set();
|
|
113
|
+
for (const t of texts) {
|
|
114
|
+
for (const ref of parseTicketMarkers(t))
|
|
115
|
+
ids.add(ref.id);
|
|
116
|
+
}
|
|
117
|
+
return ids.size === 1 ? [...ids][0] : null;
|
|
118
|
+
}
|
|
119
|
+
// ---------------------------------------------------------------------------
|
|
120
|
+
// Priority + board
|
|
121
|
+
// ---------------------------------------------------------------------------
|
|
122
|
+
/**
|
|
123
|
+
* Map the internal priority to the displayed P-label.
|
|
124
|
+
*
|
|
125
|
+
* @param priority - Request priority
|
|
126
|
+
* @returns P0 (urgent) … P3 (low)
|
|
127
|
+
*/
|
|
128
|
+
export function ticketPriorityLabel(priority) {
|
|
129
|
+
switch (priority) {
|
|
130
|
+
case 'urgent':
|
|
131
|
+
return 'P0';
|
|
132
|
+
case 'high':
|
|
133
|
+
return 'P1';
|
|
134
|
+
case 'low':
|
|
135
|
+
return 'P3';
|
|
136
|
+
default:
|
|
137
|
+
return 'P2';
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/** WorkItem statuses that count as terminal success for "to review". */
|
|
141
|
+
const WORK_ITEM_SUCCESS = new Set(['done', 'verified']);
|
|
142
|
+
/**
|
|
143
|
+
* Derive the board column of a ticket (never stored).
|
|
144
|
+
*
|
|
145
|
+
* @param request - The ticket
|
|
146
|
+
* @param workItems - Its WorkItems, when known (missing ones are ignored)
|
|
147
|
+
* @returns Board column
|
|
148
|
+
*/
|
|
149
|
+
export function deriveBoardColumn(request, workItems = []) {
|
|
150
|
+
if (request.status === 'done')
|
|
151
|
+
return 'done';
|
|
152
|
+
if (request.status === 'cancelled')
|
|
153
|
+
return 'cancelled';
|
|
154
|
+
// Work finished and the owner has to look at it — ahead of "blocked", which
|
|
155
|
+
// `waiting_confirmation` otherwise maps to.
|
|
156
|
+
if (request.requiresConfirmation &&
|
|
157
|
+
workItems.length > 0 &&
|
|
158
|
+
workItems.every((w) => WORK_ITEM_SUCCESS.has(w.status))) {
|
|
159
|
+
return 'to_review';
|
|
160
|
+
}
|
|
161
|
+
switch (request.status) {
|
|
162
|
+
case 'blocked':
|
|
163
|
+
case 'waiting_confirmation':
|
|
164
|
+
return 'blocked';
|
|
165
|
+
case 'running':
|
|
166
|
+
return 'in_progress';
|
|
167
|
+
case 'open':
|
|
168
|
+
return request.kind === 'idea' ? 'idea' : 'todo';
|
|
169
|
+
default:
|
|
170
|
+
return 'todo';
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Whether a string is a valid board column.
|
|
175
|
+
*
|
|
176
|
+
* @param value - Candidate
|
|
177
|
+
* @returns True when it is a {@link TicketBoardColumn}
|
|
178
|
+
*/
|
|
179
|
+
export function isTicketBoardColumn(value) {
|
|
180
|
+
return TICKET_BOARD_COLUMNS.includes(value);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Whether a string is a valid ticket kind.
|
|
184
|
+
*
|
|
185
|
+
* @param value - Candidate
|
|
186
|
+
* @returns True when it is a {@link TicketKind}
|
|
187
|
+
*/
|
|
188
|
+
export function isTicketKind(value) {
|
|
189
|
+
return TICKET_KINDS.includes(value);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Pick the kind of a new ticket from its text.
|
|
193
|
+
*
|
|
194
|
+
* Default `feature`; a 🐛 makes it an `issue` (the Phase 4 bug button sends
|
|
195
|
+
* one). `idea` is only set explicitly (the Phase 4 `ticket-idea` skill).
|
|
196
|
+
*
|
|
197
|
+
* @param text - Message text
|
|
198
|
+
* @returns The kind
|
|
199
|
+
*/
|
|
200
|
+
export function inferTicketKind(text) {
|
|
201
|
+
return text.includes('🐛') ? 'issue' : 'feature';
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=ticket.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ticket.types.js","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/ticket.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAUtD,2CAA2C;AAC3C,MAAM,CAAC,MAAM,YAAY,GAA0B,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAU,CAAC;AAuEzF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,oBAAoB,GAAiC;IAChE,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;IACT,WAAW;IACX,MAAM;IACN,WAAW;CACH,CAAC;AAKX,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,0CAA0C;AAC1C,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAErD,mCAAmC;AACnC,MAAM,eAAe,GAAG,eAAe,CAAC;AAExC;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,CAAS;IAC1C,OAAO,GAAG,gBAAgB,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC;AAC7H,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnE,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,OAAO,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,gCAAgC;AAChC,MAAM,aAAa,GAAG,uCAAuC,CAAC;AAU9D;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA4C;IAC7E,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACvD,OAAO,WAAW,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC;AAC5E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAE,SAAS;QAC7B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACf,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAwB;IAC9D,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,KAAK,MAAM,GAAG,IAAI,kBAAkB,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAA6B;IAC/D,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;QACd,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;QACd,KAAK,KAAK;YACR,OAAO,IAAI,CAAC;QACd;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAOD,wEAAwE;AACxE,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAkE,EAClE,YAA0C,EAAE;IAE5C,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IACvD,4EAA4E;IAC5E,4CAA4C;IAC5C,IACE,OAAO,CAAC,oBAAoB;QAC5B,SAAS,CAAC,MAAM,GAAG,CAAC;QACpB,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EACvD,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,KAAK,SAAS,CAAC;QACf,KAAK,sBAAsB;YACzB,OAAO,SAAS,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,aAAa,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACnD;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAQ,oBAA0C,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAQ,YAAkC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-select Gemini CLI's authentication method.
|
|
3
|
+
*
|
|
4
|
+
* Interactive Gemini CLI reads its auth method only from settings
|
|
5
|
+
* (`security.auth.selectedType`). With none saved it opens the
|
|
6
|
+
* "How would you like to authenticate for this project?" dialog on every
|
|
7
|
+
* launch, even when GEMINI_API_KEY is set ("Existing API key detected ...
|
|
8
|
+
* Select 'Gemini API Key' option to use it"). Non-interactive runs fall back
|
|
9
|
+
* to the environment, which is why `gemini` looks fine when run by hand
|
|
10
|
+
* without a terminal but a Crewly-launched session stalls on the dialog and
|
|
11
|
+
* never reaches its ready prompt.
|
|
12
|
+
*
|
|
13
|
+
* Verified against Gemini CLI 0.61.0 in a clean HOME: no saved method +
|
|
14
|
+
* GEMINI_API_KEY -> auth dialog at 2s; `selectedType: "gemini-api-key"` ->
|
|
15
|
+
* ready prompt at 2s.
|
|
16
|
+
*
|
|
17
|
+
* @module utils/gemini-auth-settings
|
|
18
|
+
*/
|
|
19
|
+
/** Gemini CLI's value for "Use Gemini API Key". */
|
|
20
|
+
export declare const GEMINI_API_KEY_AUTH_TYPE = "gemini-api-key";
|
|
21
|
+
/** Top-level key older Gemini CLI settings (v1 schema) used for the auth method. */
|
|
22
|
+
export declare const LEGACY_AUTH_TYPE_KEY = "selectedAuthType";
|
|
23
|
+
/** What {@link ensureGeminiApiKeyAuthSelected} did. */
|
|
24
|
+
export type GeminiAuthSeedResult =
|
|
25
|
+
/** No method was saved; "Use Gemini API Key" is now selected. */
|
|
26
|
+
'seeded'
|
|
27
|
+
/** A method was already saved (the user's choice); left untouched. */
|
|
28
|
+
| 'kept'
|
|
29
|
+
/** The settings file exists but is not plain JSON; left untouched. */
|
|
30
|
+
| 'unparseable'
|
|
31
|
+
/** Reading or writing failed; nothing changed. */
|
|
32
|
+
| 'error';
|
|
33
|
+
/** Minimal logger accepted by this module. */
|
|
34
|
+
export interface GeminiAuthSettingsLogger {
|
|
35
|
+
warn(message: string, meta?: Record<string, unknown>): void;
|
|
36
|
+
info(message: string, meta?: Record<string, unknown>): void;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Path of Gemini CLI's user settings file.
|
|
40
|
+
*
|
|
41
|
+
* @returns `~/.gemini/settings.json`
|
|
42
|
+
*/
|
|
43
|
+
export declare function getDefaultGeminiUserSettingsPath(): string;
|
|
44
|
+
/**
|
|
45
|
+
* Select "Use Gemini API Key" in Gemini's user settings when no auth method
|
|
46
|
+
* has been chosen yet.
|
|
47
|
+
*
|
|
48
|
+
* Call only when a Gemini API key is actually available to the session.
|
|
49
|
+
* Never overrides an existing choice (e.g. Login with Google), never rewrites
|
|
50
|
+
* a file it cannot parse, and preserves every other setting.
|
|
51
|
+
*
|
|
52
|
+
* @param logger - Optional logger
|
|
53
|
+
* @param settingsPath - Override for tests; defaults to ~/.gemini/settings.json
|
|
54
|
+
* @returns What was done
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* if (apiKey) await ensureGeminiApiKeyAuthSelected(logger);
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function ensureGeminiApiKeyAuthSelected(logger?: GeminiAuthSettingsLogger, settingsPath?: string): Promise<GeminiAuthSeedResult>;
|
|
62
|
+
//# sourceMappingURL=gemini-auth-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-auth-settings.d.ts","sourceRoot":"","sources":["../../../../../backend/src/utils/gemini-auth-settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,mDAAmD;AACnD,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AAEzD,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAEvD,uDAAuD;AACvD,MAAM,MAAM,oBAAoB;AAC/B,iEAAiE;AAC/D,QAAQ;AACV,sEAAsE;GACpE,MAAM;AACR,sEAAsE;GACpE,aAAa;AACf,kDAAkD;GAChD,OAAO,CAAC;AAEX,8CAA8C;AAC9C,MAAM,WAAW,wBAAwB;IACxC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC5D;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,IAAI,MAAM,CAEzD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,8BAA8B,CACnD,MAAM,CAAC,EAAE,wBAAwB,EACjC,YAAY,GAAE,MAA2C,GACvD,OAAO,CAAC,oBAAoB,CAAC,CAmD/B"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-select Gemini CLI's authentication method.
|
|
3
|
+
*
|
|
4
|
+
* Interactive Gemini CLI reads its auth method only from settings
|
|
5
|
+
* (`security.auth.selectedType`). With none saved it opens the
|
|
6
|
+
* "How would you like to authenticate for this project?" dialog on every
|
|
7
|
+
* launch, even when GEMINI_API_KEY is set ("Existing API key detected ...
|
|
8
|
+
* Select 'Gemini API Key' option to use it"). Non-interactive runs fall back
|
|
9
|
+
* to the environment, which is why `gemini` looks fine when run by hand
|
|
10
|
+
* without a terminal but a Crewly-launched session stalls on the dialog and
|
|
11
|
+
* never reaches its ready prompt.
|
|
12
|
+
*
|
|
13
|
+
* Verified against Gemini CLI 0.61.0 in a clean HOME: no saved method +
|
|
14
|
+
* GEMINI_API_KEY -> auth dialog at 2s; `selectedType: "gemini-api-key"` ->
|
|
15
|
+
* ready prompt at 2s.
|
|
16
|
+
*
|
|
17
|
+
* @module utils/gemini-auth-settings
|
|
18
|
+
*/
|
|
19
|
+
import { promises as fsPromises } from 'fs';
|
|
20
|
+
import * as os from 'os';
|
|
21
|
+
import * as path from 'path';
|
|
22
|
+
/** Gemini CLI's value for "Use Gemini API Key". */
|
|
23
|
+
export const GEMINI_API_KEY_AUTH_TYPE = 'gemini-api-key';
|
|
24
|
+
/** Top-level key older Gemini CLI settings (v1 schema) used for the auth method. */
|
|
25
|
+
export const LEGACY_AUTH_TYPE_KEY = 'selectedAuthType';
|
|
26
|
+
/**
|
|
27
|
+
* Path of Gemini CLI's user settings file.
|
|
28
|
+
*
|
|
29
|
+
* @returns `~/.gemini/settings.json`
|
|
30
|
+
*/
|
|
31
|
+
export function getDefaultGeminiUserSettingsPath() {
|
|
32
|
+
return path.join(os.homedir(), '.gemini', 'settings.json');
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Select "Use Gemini API Key" in Gemini's user settings when no auth method
|
|
36
|
+
* has been chosen yet.
|
|
37
|
+
*
|
|
38
|
+
* Call only when a Gemini API key is actually available to the session.
|
|
39
|
+
* Never overrides an existing choice (e.g. Login with Google), never rewrites
|
|
40
|
+
* a file it cannot parse, and preserves every other setting.
|
|
41
|
+
*
|
|
42
|
+
* @param logger - Optional logger
|
|
43
|
+
* @param settingsPath - Override for tests; defaults to ~/.gemini/settings.json
|
|
44
|
+
* @returns What was done
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* if (apiKey) await ensureGeminiApiKeyAuthSelected(logger);
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export async function ensureGeminiApiKeyAuthSelected(logger, settingsPath = getDefaultGeminiUserSettingsPath()) {
|
|
52
|
+
let settings = {};
|
|
53
|
+
try {
|
|
54
|
+
const raw = await fsPromises.readFile(settingsPath, 'utf8');
|
|
55
|
+
if (raw.trim()) {
|
|
56
|
+
try {
|
|
57
|
+
const parsed = JSON.parse(raw);
|
|
58
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
59
|
+
logger?.warn('Gemini settings are not a JSON object; not pre-selecting auth', { settingsPath });
|
|
60
|
+
return 'unparseable';
|
|
61
|
+
}
|
|
62
|
+
settings = parsed;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// Gemini accepts comments in settings.json; rewriting would drop them.
|
|
66
|
+
logger?.warn('Gemini settings could not be parsed as JSON; not pre-selecting auth', { settingsPath });
|
|
67
|
+
return 'unparseable';
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
if (error.code !== 'ENOENT') {
|
|
73
|
+
logger?.warn('Could not read Gemini settings; not pre-selecting auth', { settingsPath, error: String(error) });
|
|
74
|
+
return 'error';
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const security = (settings.security ?? {});
|
|
78
|
+
const auth = (security.auth ?? {});
|
|
79
|
+
if (typeof auth.selectedType === 'string' && auth.selectedType.length > 0) {
|
|
80
|
+
return 'kept';
|
|
81
|
+
}
|
|
82
|
+
// Older Gemini CLI versions saved the choice at the top level. Gemini
|
|
83
|
+
// migrates it on load, so adding the new key next to it would override it.
|
|
84
|
+
if (typeof settings[LEGACY_AUTH_TYPE_KEY] === 'string' && settings[LEGACY_AUTH_TYPE_KEY].length > 0) {
|
|
85
|
+
return 'kept';
|
|
86
|
+
}
|
|
87
|
+
const updated = {
|
|
88
|
+
...settings,
|
|
89
|
+
security: { ...security, auth: { ...auth, selectedType: GEMINI_API_KEY_AUTH_TYPE } },
|
|
90
|
+
};
|
|
91
|
+
try {
|
|
92
|
+
await fsPromises.mkdir(path.dirname(settingsPath), { recursive: true });
|
|
93
|
+
await fsPromises.writeFile(settingsPath, `${JSON.stringify(updated, null, 2)}\n`, 'utf8');
|
|
94
|
+
logger?.info('Pre-selected "Use Gemini API Key" in Gemini settings so the auth dialog does not block startup', {
|
|
95
|
+
settingsPath,
|
|
96
|
+
});
|
|
97
|
+
return 'seeded';
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
logger?.warn('Could not write Gemini settings; the auth dialog may appear', { settingsPath, error: String(error) });
|
|
101
|
+
return 'error';
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=gemini-auth-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-auth-settings.js","sourceRoot":"","sources":["../../../../../backend/src/utils/gemini-auth-settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one place the backend's own API address comes from.
|
|
3
|
+
*
|
|
4
|
+
* Agents (`CREWLY_API_URL` in their PTY env), the in-process crewly-agent
|
|
5
|
+
* runtime, skills spawned by the server, and the server's own
|
|
6
|
+
* server-to-server calls (reconciler wake, auto-claim, dispatch writes) all
|
|
7
|
+
* need to reach THIS instance. They used to hard-code
|
|
8
|
+
* `WEB_CONSTANTS.PORTS.BACKEND` (8787), so an instance started with
|
|
9
|
+
* `crewly start -p 8797` handed its agents the default port and every skill
|
|
10
|
+
* call went to the wrong server — or to another Crewly on 8787 (#777).
|
|
11
|
+
*
|
|
12
|
+
* The server records its resolved listen port at construction
|
|
13
|
+
* ({@link setLocalApiPort}); everything else asks {@link getLocalApiPort} /
|
|
14
|
+
* {@link getLocalApiBaseUrl}. Before that (tests, scripts) the accessor
|
|
15
|
+
* falls back to `WEB_PORT`, then the default.
|
|
16
|
+
*
|
|
17
|
+
* `CREWLY_API_URL` in the backend's OWN environment is deliberately NOT
|
|
18
|
+
* consulted: a backend launched from inside an agent shell inherits that
|
|
19
|
+
* agent's URL, which points at a different instance.
|
|
20
|
+
*
|
|
21
|
+
* @module utils/local-api-url
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Parse a port value, rejecting anything that is not an integer in 1..65535.
|
|
25
|
+
*
|
|
26
|
+
* @param value - Candidate port (number or numeric string)
|
|
27
|
+
* @returns The port, or null when invalid
|
|
28
|
+
*/
|
|
29
|
+
export declare function parsePort(value: unknown): number | null;
|
|
30
|
+
/**
|
|
31
|
+
* Record the port this server listens on. Called once by the server with its
|
|
32
|
+
* resolved `webPort` (from `-p` / `WEB_PORT` / default).
|
|
33
|
+
*
|
|
34
|
+
* @param port - The listen port
|
|
35
|
+
* @throws {Error} When the port is not a valid TCP port
|
|
36
|
+
*/
|
|
37
|
+
export declare function setLocalApiPort(port: number): void;
|
|
38
|
+
/**
|
|
39
|
+
* The port this Crewly instance's API is served on.
|
|
40
|
+
*
|
|
41
|
+
* @returns The recorded running port, else a valid `WEB_PORT`, else the default
|
|
42
|
+
*/
|
|
43
|
+
export declare function getLocalApiPort(): number;
|
|
44
|
+
/**
|
|
45
|
+
* Base URL of this instance's API, e.g. `http://localhost:8797` — the value
|
|
46
|
+
* agents receive as `CREWLY_API_URL`. Paths are appended by the caller
|
|
47
|
+
* (`${getLocalApiBaseUrl()}/api/teams`).
|
|
48
|
+
*
|
|
49
|
+
* @returns The base URL without a trailing slash
|
|
50
|
+
*/
|
|
51
|
+
export declare function getLocalApiBaseUrl(): string;
|
|
52
|
+
/**
|
|
53
|
+
* Forget the recorded port (tests only).
|
|
54
|
+
*/
|
|
55
|
+
export declare function resetLocalApiPortForTesting(): void;
|
|
56
|
+
//# sourceMappingURL=local-api-url.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-api-url.utils.d.ts","sourceRoot":"","sources":["../../../../../backend/src/utils/local-api-url.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAaH;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGvD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAMlD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAGxC;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one place the backend's own API address comes from.
|
|
3
|
+
*
|
|
4
|
+
* Agents (`CREWLY_API_URL` in their PTY env), the in-process crewly-agent
|
|
5
|
+
* runtime, skills spawned by the server, and the server's own
|
|
6
|
+
* server-to-server calls (reconciler wake, auto-claim, dispatch writes) all
|
|
7
|
+
* need to reach THIS instance. They used to hard-code
|
|
8
|
+
* `WEB_CONSTANTS.PORTS.BACKEND` (8787), so an instance started with
|
|
9
|
+
* `crewly start -p 8797` handed its agents the default port and every skill
|
|
10
|
+
* call went to the wrong server — or to another Crewly on 8787 (#777).
|
|
11
|
+
*
|
|
12
|
+
* The server records its resolved listen port at construction
|
|
13
|
+
* ({@link setLocalApiPort}); everything else asks {@link getLocalApiPort} /
|
|
14
|
+
* {@link getLocalApiBaseUrl}. Before that (tests, scripts) the accessor
|
|
15
|
+
* falls back to `WEB_PORT`, then the default.
|
|
16
|
+
*
|
|
17
|
+
* `CREWLY_API_URL` in the backend's OWN environment is deliberately NOT
|
|
18
|
+
* consulted: a backend launched from inside an agent shell inherits that
|
|
19
|
+
* agent's URL, which points at a different instance.
|
|
20
|
+
*
|
|
21
|
+
* @module utils/local-api-url
|
|
22
|
+
*/
|
|
23
|
+
import { WEB_CONSTANTS } from '../constants.js';
|
|
24
|
+
/** Host agents use to reach the backend on the same machine. */
|
|
25
|
+
const LOCAL_API_HOST = 'localhost';
|
|
26
|
+
/** Largest valid TCP port. */
|
|
27
|
+
const MAX_TCP_PORT = 65535;
|
|
28
|
+
/** Port recorded by the running server, or null before it is known. */
|
|
29
|
+
let runningPort = null;
|
|
30
|
+
/**
|
|
31
|
+
* Parse a port value, rejecting anything that is not an integer in 1..65535.
|
|
32
|
+
*
|
|
33
|
+
* @param value - Candidate port (number or numeric string)
|
|
34
|
+
* @returns The port, or null when invalid
|
|
35
|
+
*/
|
|
36
|
+
export function parsePort(value) {
|
|
37
|
+
const n = typeof value === 'number' ? value : typeof value === 'string' && value.trim() !== '' ? Number(value) : NaN;
|
|
38
|
+
return Number.isInteger(n) && n >= 1 && n <= MAX_TCP_PORT ? n : null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Record the port this server listens on. Called once by the server with its
|
|
42
|
+
* resolved `webPort` (from `-p` / `WEB_PORT` / default).
|
|
43
|
+
*
|
|
44
|
+
* @param port - The listen port
|
|
45
|
+
* @throws {Error} When the port is not a valid TCP port
|
|
46
|
+
*/
|
|
47
|
+
export function setLocalApiPort(port) {
|
|
48
|
+
const parsed = parsePort(port);
|
|
49
|
+
if (parsed === null) {
|
|
50
|
+
throw new Error(`Invalid Crewly API port: ${String(port)}`);
|
|
51
|
+
}
|
|
52
|
+
runningPort = parsed;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The port this Crewly instance's API is served on.
|
|
56
|
+
*
|
|
57
|
+
* @returns The recorded running port, else a valid `WEB_PORT`, else the default
|
|
58
|
+
*/
|
|
59
|
+
export function getLocalApiPort() {
|
|
60
|
+
if (runningPort !== null)
|
|
61
|
+
return runningPort;
|
|
62
|
+
return parsePort(process.env.WEB_PORT) ?? WEB_CONSTANTS.PORTS.BACKEND;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Base URL of this instance's API, e.g. `http://localhost:8797` — the value
|
|
66
|
+
* agents receive as `CREWLY_API_URL`. Paths are appended by the caller
|
|
67
|
+
* (`${getLocalApiBaseUrl()}/api/teams`).
|
|
68
|
+
*
|
|
69
|
+
* @returns The base URL without a trailing slash
|
|
70
|
+
*/
|
|
71
|
+
export function getLocalApiBaseUrl() {
|
|
72
|
+
return `http://${LOCAL_API_HOST}:${getLocalApiPort()}`;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Forget the recorded port (tests only).
|
|
76
|
+
*/
|
|
77
|
+
export function resetLocalApiPortForTesting() {
|
|
78
|
+
runningPort = null;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=local-api-url.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-api-url.utils.js","sourceRoot":"","sources":["../../../../../backend/src/utils/local-api-url.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,gEAAgE;AAChE,MAAM,cAAc,GAAG,WAAW,CAAC;AAEnC,8BAA8B;AAC9B,MAAM,YAAY,GAAG,KAAK,CAAC;AAE3B,uEAAuE;AACvE,IAAI,WAAW,GAAkB,IAAI,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,MAAM,CAAC,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACrH,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,WAAW,GAAG,MAAM,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,WAAW,CAAC;IAC7C,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;AACxE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,UAAU,cAAc,IAAI,eAAe,EAAE,EAAE,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B;IACzC,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -7,8 +7,16 @@
|
|
|
7
7
|
* rebuild them is present (server-install finding 11), and — on Linux — whether
|
|
8
8
|
* the user service will survive logout.
|
|
9
9
|
*
|
|
10
|
+
* It also checks what agents need to do anything at all (#779): the jq and
|
|
11
|
+
* curl the skills call, at least one AI runtime (Claude Code / Codex / Gemini
|
|
12
|
+
* CLI) that is installed AND logged in, and that the skill marketplace the
|
|
13
|
+
* installer uses is reachable. Every failure names the command that fixes it,
|
|
14
|
+
* and any failure makes the command exit non-zero instead of claiming a pass.
|
|
15
|
+
*
|
|
10
16
|
* @module cli/commands/doctor
|
|
11
17
|
*/
|
|
18
|
+
import { type RuntimeAuthStatus } from '../utils/runtime-auth.js';
|
|
19
|
+
import { type SystemToolInfo } from './onboard.js';
|
|
12
20
|
/** Severity of a doctor line. */
|
|
13
21
|
export type DoctorStatus = 'ok' | 'warn' | 'fail';
|
|
14
22
|
/** One line of the report. */
|
|
@@ -35,7 +43,67 @@ export interface DoctorDeps {
|
|
|
35
43
|
homeDir?: string;
|
|
36
44
|
/** Linger lookup (Linux only). */
|
|
37
45
|
lingerState?: () => Promise<'yes' | 'no' | null>;
|
|
46
|
+
/** Effective user id lookup (defaults to `process.getuid`; absent on Windows). */
|
|
47
|
+
getuid?: () => number;
|
|
48
|
+
/** Environment override (defaults to `process.env`). */
|
|
49
|
+
env?: NodeJS.ProcessEnv;
|
|
50
|
+
/** Reachability probe for the marketplace check (defaults to an HTTPS GET). */
|
|
51
|
+
probeUrl?: UrlProbe;
|
|
52
|
+
/**
|
|
53
|
+
* Returns the path of a node-pty `spawn-helper` that exists but is not
|
|
54
|
+
* executable (every PTY spawn then fails with `posix_spawnp failed`), or null.
|
|
55
|
+
*/
|
|
56
|
+
findBrokenSpawnHelper?: (packageRoot: string) => string | null;
|
|
57
|
+
}
|
|
58
|
+
/** Result of probing one URL. */
|
|
59
|
+
export interface UrlProbeResult {
|
|
60
|
+
ok: boolean;
|
|
61
|
+
/** `HTTP 200`, `ENOTFOUND`, `timeout`, ... */
|
|
62
|
+
detail: string;
|
|
38
63
|
}
|
|
64
|
+
/** Fetches a URL and reports whether it answered 2xx. Never throws. */
|
|
65
|
+
export type UrlProbe = (url: string, timeoutMs: number) => Promise<UrlProbeResult>;
|
|
66
|
+
/**
|
|
67
|
+
* System tools the agent skills call. jq comes from onboarding's required
|
|
68
|
+
* list (#768); curl is how every skill reaches the Crewly API.
|
|
69
|
+
*/
|
|
70
|
+
export declare const DOCTOR_SYSTEM_TOOLS: readonly SystemToolInfo[];
|
|
71
|
+
/**
|
|
72
|
+
* Fix hint for a native module that does not load.
|
|
73
|
+
*
|
|
74
|
+
* node-pty normally loads a prebuilt binary (#778); when it does not, either
|
|
75
|
+
* the install is incomplete (reinstall) or this platform has no usable
|
|
76
|
+
* prebuild (musl, glibc < 2.28, 32-bit ARM) and it has to be compiled.
|
|
77
|
+
*
|
|
78
|
+
* @param mod - Module name
|
|
79
|
+
* @param packageRoot - Crewly package root
|
|
80
|
+
* @param prebuildProblem - Why the prebuild cannot run on this host, if known
|
|
81
|
+
* @returns One-line hint
|
|
82
|
+
*/
|
|
83
|
+
export declare function nativeModuleHint(mod: string, packageRoot: string, prebuildProblem?: string | null): string;
|
|
84
|
+
/**
|
|
85
|
+
* Default URL probe: HTTPS GET with a timeout; the body is discarded.
|
|
86
|
+
*
|
|
87
|
+
* @param url - URL to fetch
|
|
88
|
+
* @param timeoutMs - Timeout
|
|
89
|
+
* @returns Whether it answered 2xx, and why not
|
|
90
|
+
*/
|
|
91
|
+
export declare function defaultProbeUrl(url: string, timeoutMs: number): Promise<UrlProbeResult>;
|
|
92
|
+
/**
|
|
93
|
+
* Checks for the runtimes: one line per installed runtime, plus a `runtime`
|
|
94
|
+
* line that fails when none is installed and logged in.
|
|
95
|
+
*
|
|
96
|
+
* @param statuses - Claude, Codex, Gemini login state
|
|
97
|
+
* @returns Checks
|
|
98
|
+
*/
|
|
99
|
+
export declare function runtimeChecks(statuses: readonly RuntimeAuthStatus[]): DoctorCheck[];
|
|
100
|
+
/**
|
|
101
|
+
* Marketplace reachability check.
|
|
102
|
+
*
|
|
103
|
+
* @param probe - URL probe
|
|
104
|
+
* @returns One check: ok (all sources), warn (some), fail (none)
|
|
105
|
+
*/
|
|
106
|
+
export declare function marketplaceCheck(probe: UrlProbe): Promise<DoctorCheck>;
|
|
39
107
|
/**
|
|
40
108
|
* Build the list of checks without printing anything.
|
|
41
109
|
*
|
|
@@ -52,7 +120,10 @@ export declare function collectDoctorChecks(deps?: DoctorDeps): Promise<DoctorCh
|
|
|
52
120
|
export declare function formatDoctorCheck(check: DoctorCheck): string[];
|
|
53
121
|
/**
|
|
54
122
|
* `crewly doctor` entry point. Prints the report and sets a non-zero exit
|
|
55
|
-
* code when any check failed
|
|
123
|
+
* code when any check failed; "All checks passed" only when nothing failed
|
|
124
|
+
* or warned.
|
|
125
|
+
*
|
|
126
|
+
* @param deps - Injection points (tests); the CLI passes none
|
|
56
127
|
*/
|
|
57
|
-
export declare function doctorCommand(): Promise<void>;
|
|
128
|
+
export declare function doctorCommand(deps?: DoctorDeps): Promise<void>;
|
|
58
129
|
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../../../cli/src/commands/doctor.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../../../cli/src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAgBH,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEpF,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAE1E,iCAAiC;AACjC,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,8BAA8B;AAC9B,MAAM,WAAW,WAAW;IAC3B,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,yEAAyE;AACzE,MAAM,WAAW,UAAU;IAC1B,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,uEAAuE;IACvE,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,2CAA2C;IAC3C,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACjC,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IACjD,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC/D;AAED,iCAAiC;AACjC,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;CACf;AAED,uEAAuE;AACvE,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAcnF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,cAAc,EASxD,CAAC;AAoDF;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM,CAQhH;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAU7F;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,GAAG,WAAW,EAAE,CAgCnF;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAoB5E;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA+IvF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE,CAK9D;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBxE"}
|