crewly 1.20.193 → 1.20.195
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/config/roles/auditor/prompt.md +2 -2
- package/config/roles/orchestrator/fragments/communication.md +1 -1
- package/config/roles/orchestrator/prompt.md +15 -505
- package/config/skills/agent/computer-use/SKILL.md +6 -0
- package/config/skills/agent/core/experiment-card/SKILL.md +101 -0
- package/config/skills/agent/core/experiment-card/execute.sh +149 -0
- package/config/skills/agent/core/experiment-card/execute.test.sh +97 -0
- package/config/skills/agent/desktop-app-control/execute.sh +5 -2
- package/config/skills/orchestrator/send-message/execute.sh +19 -2
- package/config/skills/orchestrator/send-message/execute.test.sh +80 -0
- package/config/skills/registry.json +7 -5
- package/config/skills/team-leader/signal-digest/SKILL.md +110 -0
- package/config/skills/team-leader/signal-digest/execute.sh +173 -0
- package/config/skills/team-leader/signal-digest/execute.test.sh +123 -0
- package/config/skills/team-leader/signal-digest/signal-digest.config.example.json +23 -0
- package/config/skills/team-leader/signal-digest/signal_digest.py +572 -0
- package/config/skills/team-leader/signal-digest/signal_digest.test.py +319 -0
- package/dist/backend/backend/src/constants.d.ts +191 -1
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +194 -1
- package/dist/backend/backend/src/constants.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 +6 -0
- 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.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +3 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/experiments/experiments.routes.d.ts +27 -0
- package/dist/backend/backend/src/controllers/experiments/experiments.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/experiments/experiments.routes.js +96 -0
- package/dist/backend/backend/src/controllers/experiments/experiments.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts +1 -0
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js +1 -0
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +5 -2
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/request/request.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/request/request.controller.js +5 -1
- package/dist/backend/backend/src/controllers/request/request.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/settings/settings.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/settings/settings.controller.js +18 -2
- package/dist/backend/backend/src/controllers/settings/settings.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.d.ts +26 -0
- package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.js +100 -0
- package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/trace/trace.controller.d.ts +47 -0
- package/dist/backend/backend/src/controllers/trace/trace.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/trace/trace.controller.js +169 -0
- package/dist/backend/backend/src/controllers/trace/trace.controller.js.map +1 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +66 -20
- 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 +14 -0
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- 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 +6 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js +3 -0
- package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts +4 -2
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.js +22 -6
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +2 -2
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
- package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts +6 -0
- package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/backup/backup-archive.service.js +7 -1
- package/dist/backend/backend/src/services/backup/backup-archive.service.js.map +1 -1
- package/dist/backend/backend/src/services/boot/boot-announce.service.d.ts +1 -1
- package/dist/backend/backend/src/services/boot/boot-announce.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/canva/canva-token.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/canva/canva-token.service.js +5 -0
- package/dist/backend/backend/src/services/canva/canva-token.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat/chat.service.d.ts +78 -2
- package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat/chat.service.js +210 -26
- package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +14 -3
- 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 +28 -4
- 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.service.d.ts +4 -3
- 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 +7 -4
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision-store.d.ts.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision-store.js +5 -1
- package/dist/backend/backend/src/services/decisions/decision-store.js.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts +10 -1
- package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.wiring.js +20 -9
- package/dist/backend/backend/src/services/decisions/decision.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/experiments/experiment-verdict.d.ts +88 -0
- package/dist/backend/backend/src/services/experiments/experiment-verdict.d.ts.map +1 -0
- package/dist/backend/backend/src/services/experiments/experiment-verdict.js +226 -0
- package/dist/backend/backend/src/services/experiments/experiment-verdict.js.map +1 -0
- package/dist/backend/backend/src/services/experiments/experiment.service.d.ts +350 -0
- package/dist/backend/backend/src/services/experiments/experiment.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/experiments/experiment.service.js +908 -0
- package/dist/backend/backend/src/services/experiments/experiment.service.js.map +1 -0
- package/dist/backend/backend/src/services/experiments/experiment.wiring.d.ts +88 -0
- package/dist/backend/backend/src/services/experiments/experiment.wiring.d.ts.map +1 -0
- package/dist/backend/backend/src/services/experiments/experiment.wiring.js +162 -0
- package/dist/backend/backend/src/services/experiments/experiment.wiring.js.map +1 -0
- package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.d.ts +67 -0
- package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.d.ts.map +1 -0
- package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.js +133 -0
- package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.js.map +1 -0
- package/dist/backend/backend/src/services/google/google-workspace-token.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/google/google-workspace-token.service.js +5 -0
- package/dist/backend/backend/src/services/google/google-workspace-token.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.js +7 -0
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts +11 -3
- 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 +24 -7
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js +5 -0
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts +7 -0
- package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/token-usage.service.js +4 -0
- package/dist/backend/backend/src/services/monitoring/token-usage.service.js.map +1 -1
- package/dist/backend/backend/src/services/orc/orc-status-router.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orc/orc-status-router.service.js +12 -3
- package/dist/backend/backend/src/services/orc/orc-status-router.service.js.map +1 -1
- package/dist/backend/backend/src/services/orc/reply-destination.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orc/reply-destination.wiring.js +16 -0
- package/dist/backend/backend/src/services/orc/reply-destination.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/people/acting-for.service.d.ts +42 -5
- package/dist/backend/backend/src/services/people/acting-for.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/people/acting-for.service.js +80 -5
- package/dist/backend/backend/src/services/people/acting-for.service.js.map +1 -1
- package/dist/backend/backend/src/services/people/grant-sharing.d.ts +5 -4
- package/dist/backend/backend/src/services/people/grant-sharing.d.ts.map +1 -1
- package/dist/backend/backend/src/services/people/grant-sharing.js +12 -4
- package/dist/backend/backend/src/services/people/grant-sharing.js.map +1 -1
- package/dist/backend/backend/src/services/people/people-directory.service.d.ts +71 -13
- package/dist/backend/backend/src/services/people/people-directory.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/people/people-directory.service.js +164 -27
- package/dist/backend/backend/src/services/people/people-directory.service.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js +2 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js +15 -0
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
- 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 +8 -5
- package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -1
- package/dist/backend/backend/src/services/signal-digest/signal-digest-card.d.ts +75 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-card.d.ts.map +1 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-card.js +187 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-card.js.map +1 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-contract.d.ts +86 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-contract.d.ts.map +1 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-contract.js +307 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-contract.js.map +1 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-store.d.ts +85 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-store.d.ts.map +1 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-store.js +185 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-store.js.map +1 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest.service.d.ts +272 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest.service.js +570 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest.service.js.map +1 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest.wiring.d.ts +51 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest.wiring.d.ts.map +1 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest.wiring.js +116 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest.wiring.js.map +1 -0
- package/dist/backend/backend/src/services/slack/notify-reconciliation.service.d.ts +5 -1
- package/dist/backend/backend/src/services/slack/notify-reconciliation.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js +6 -2
- package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-bot-ids.d.ts +33 -0
- package/dist/backend/backend/src/services/slack/slack-bot-ids.d.ts.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-bot-ids.js +56 -0
- package/dist/backend/backend/src/services/slack/slack-bot-ids.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +14 -1
- 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 +30 -10
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.d.ts +1 -1
- package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.d.ts +31 -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 +52 -7
- package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/backend/backend/src/services/system/auto-update.service.d.ts +2 -2
- package/dist/backend/backend/src/services/system/auto-update.service.d.ts.map +1 -1
- 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 +4 -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.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js +2 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/trace/trace-context.service.d.ts +195 -0
- package/dist/backend/backend/src/services/trace/trace-context.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-context.service.js +432 -0
- package/dist/backend/backend/src/services/trace/trace-context.service.js.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-http.middleware.d.ts +42 -0
- package/dist/backend/backend/src/services/trace/trace-http.middleware.d.ts.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-http.middleware.js +146 -0
- package/dist/backend/backend/src/services/trace/trace-http.middleware.js.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-markers.d.ts +93 -0
- package/dist/backend/backend/src/services/trace/trace-markers.d.ts.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-markers.js +162 -0
- package/dist/backend/backend/src/services/trace/trace-markers.js.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-recorder.d.ts +290 -0
- package/dist/backend/backend/src/services/trace/trace-recorder.d.ts.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-recorder.js +669 -0
- package/dist/backend/backend/src/services/trace/trace-recorder.js.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-store.d.ts +269 -0
- package/dist/backend/backend/src/services/trace/trace-store.d.ts.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-store.js +602 -0
- package/dist/backend/backend/src/services/trace/trace-store.js.map +1 -0
- package/dist/backend/backend/src/services/trace/trace.types.d.ts +118 -0
- package/dist/backend/backend/src/services/trace/trace.types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/trace/trace.types.js +85 -0
- package/dist/backend/backend/src/services/trace/trace.types.js.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts +1 -1
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request.service.js +4 -0
- package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
- 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 +22 -2
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts +3 -1
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/message-scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/message-scheduler.service.js +3 -0
- package/dist/backend/backend/src/services/workflow/message-scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.js +3 -0
- package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts +3 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js +7 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js.map +1 -1
- package/dist/backend/backend/src/types/experiment.types.d.ts +155 -0
- package/dist/backend/backend/src/types/experiment.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/experiment.types.js +32 -0
- package/dist/backend/backend/src/types/experiment.types.js.map +1 -0
- package/dist/backend/backend/src/types/messaging.types.d.ts +6 -0
- package/dist/backend/backend/src/types/messaging.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/messaging.types.js.map +1 -1
- package/dist/backend/backend/src/types/signal-digest.types.d.ts +185 -0
- package/dist/backend/backend/src/types/signal-digest.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/signal-digest.types.js +21 -0
- package/dist/backend/backend/src/types/signal-digest.types.js.map +1 -0
- package/dist/backend/backend/src/types/v2/request.types.d.ts +4 -0
- package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts +4 -0
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.js +1 -0
- package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/backend/backend/src/utils/security.d.ts +2 -0
- package/dist/backend/backend/src/utils/security.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/security.js +3 -1
- package/dist/backend/backend/src/utils/security.js.map +1 -1
- package/dist/backend/backend/src/websocket/chat.gateway.d.ts +9 -0
- package/dist/backend/backend/src/websocket/chat.gateway.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/chat.gateway.js +26 -0
- package/dist/backend/backend/src/websocket/chat.gateway.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +191 -1
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +194 -1
- package/dist/cli/backend/src/constants.js.map +1 -1
- 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 +6 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js +3 -0
- package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +1 -1
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts +4 -2
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.js +22 -6
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js +2 -2
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
- package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts +6 -0
- package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/backup/backup-archive.service.js +7 -1
- package/dist/cli/backend/src/services/backup/backup-archive.service.js.map +1 -1
- package/dist/cli/backend/src/services/chat/chat.service.d.ts +185 -0
- package/dist/cli/backend/src/services/chat/chat.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat/chat.service.js +558 -0
- package/dist/cli/backend/src/services/chat/chat.service.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +14 -3
- 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 +28 -4
- 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 +4 -3
- 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 +7 -4
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision-store.d.ts.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision-store.js +5 -1
- package/dist/cli/backend/src/services/decisions/decision-store.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.js +7 -0
- package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts +11 -3
- package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/queue-processor.service.js +24 -7
- package/dist/cli/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +7 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js +4 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -1
- package/dist/cli/backend/src/services/people/acting-for.service.d.ts +42 -5
- package/dist/cli/backend/src/services/people/acting-for.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/people/acting-for.service.js +80 -5
- package/dist/cli/backend/src/services/people/acting-for.service.js.map +1 -1
- package/dist/cli/backend/src/services/people/people-directory.service.d.ts +71 -13
- package/dist/cli/backend/src/services/people/people-directory.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/people/people-directory.service.js +164 -27
- package/dist/cli/backend/src/services/people/people-directory.service.js.map +1 -1
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js +2 -0
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.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 +8 -5
- package/dist/cli/backend/src/services/session/session-handoff.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +14 -1
- 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 +30 -10
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack.service.d.ts +31 -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 +52 -7
- 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.map +1 -1
- package/dist/cli/backend/src/services/task-pool/pool-storage.js +4 -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.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js +2 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/services/trace/trace-context.service.d.ts +195 -0
- package/dist/cli/backend/src/services/trace/trace-context.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/trace/trace-context.service.js +432 -0
- package/dist/cli/backend/src/services/trace/trace-context.service.js.map +1 -0
- package/dist/cli/backend/src/services/trace/trace-markers.d.ts +93 -0
- package/dist/cli/backend/src/services/trace/trace-markers.d.ts.map +1 -0
- package/dist/cli/backend/src/services/trace/trace-markers.js +162 -0
- package/dist/cli/backend/src/services/trace/trace-markers.js.map +1 -0
- package/dist/cli/backend/src/services/trace/trace-recorder.d.ts +290 -0
- package/dist/cli/backend/src/services/trace/trace-recorder.d.ts.map +1 -0
- package/dist/cli/backend/src/services/trace/trace-recorder.js +669 -0
- package/dist/cli/backend/src/services/trace/trace-recorder.js.map +1 -0
- package/dist/cli/backend/src/services/trace/trace-store.d.ts +269 -0
- package/dist/cli/backend/src/services/trace/trace-store.d.ts.map +1 -0
- package/dist/cli/backend/src/services/trace/trace-store.js +602 -0
- package/dist/cli/backend/src/services/trace/trace-store.js.map +1 -0
- package/dist/cli/backend/src/services/trace/trace.types.d.ts +118 -0
- package/dist/cli/backend/src/services/trace/trace.types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/trace/trace.types.js +85 -0
- package/dist/cli/backend/src/services/trace/trace.types.js.map +1 -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 +4 -0
- package/dist/cli/backend/src/services/v3/request.service.js.map +1 -1
- package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts +3 -1
- package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/wiki/wiki-ingest.service.js.map +1 -1
- package/dist/cli/backend/src/types/messaging.types.d.ts +6 -0
- package/dist/cli/backend/src/types/messaging.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/messaging.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/request.types.d.ts +4 -0
- package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/request.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts +4 -0
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.js +1 -0
- package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/cli/backend/src/utils/security.d.ts +196 -0
- package/dist/cli/backend/src/utils/security.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/security.js +538 -0
- package/dist/cli/backend/src/utils/security.js.map +1 -0
- package/dist/cli/backend/src/websocket/chat.gateway.d.ts +9 -0
- package/dist/cli/backend/src/websocket/chat.gateway.d.ts.map +1 -1
- package/dist/cli/backend/src/websocket/chat.gateway.js +26 -0
- package/dist/cli/backend/src/websocket/chat.gateway.js.map +1 -1
- package/frontend/dist/assets/{index-465d1f8f.js → index-800118ca.js} +274 -274
- package/frontend/dist/index.html +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run traces API (specs/2026-10-03-run-traces.md, issue #983).
|
|
3
|
+
*
|
|
4
|
+
* - `GET /api/traces?since=<ISO>&type=<rootKind>&limit=` — traces, most recently active first
|
|
5
|
+
* - `GET /api/traces/by-ref?workItemId=|ticketId=|requestId=|decisionId=|experimentId=` — the trace of an entity
|
|
6
|
+
* - `GET /api/traces/:id?offset=&limit=` — `{ root, events, total, offset, limit, truncated }`
|
|
7
|
+
* - `POST /api/traces` `{ kind: 'goal'|'experiment', summary, refs? }` — start a goal / experiment root
|
|
8
|
+
*
|
|
9
|
+
* @module controllers/trace/trace.controller
|
|
10
|
+
*/
|
|
11
|
+
import { Router } from 'express';
|
|
12
|
+
import { TRACE_CONSTANTS } from '../../constants.js';
|
|
13
|
+
import { readAgentSessionHeader } from '../../utils/agent-caller.utils.js';
|
|
14
|
+
import { getTraceStore } from '../../services/trace/trace-store.js';
|
|
15
|
+
import { startGoalTrace } from '../../services/trace/trace-recorder.js';
|
|
16
|
+
import { isTraceId, isTraceRootKind } from '../../services/trace/trace.types.js';
|
|
17
|
+
/** Query parameter → index ref kind, in lookup order. */
|
|
18
|
+
const REF_PARAMS = [
|
|
19
|
+
['workItemId', 'workItem'],
|
|
20
|
+
['ticketId', 'ticket'],
|
|
21
|
+
['requestId', 'request'],
|
|
22
|
+
['decisionId', 'decision'],
|
|
23
|
+
['experimentId', 'experiment'],
|
|
24
|
+
];
|
|
25
|
+
/**
|
|
26
|
+
* A query value as a trimmed string.
|
|
27
|
+
*
|
|
28
|
+
* @param value - Raw query value
|
|
29
|
+
* @returns String, or undefined
|
|
30
|
+
*/
|
|
31
|
+
function queryString(value) {
|
|
32
|
+
const v = Array.isArray(value) ? value[0] : value;
|
|
33
|
+
return typeof v === 'string' && v.trim().length > 0 ? v.trim() : undefined;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* A query value as a non-negative integer.
|
|
37
|
+
*
|
|
38
|
+
* @param value - Raw query value
|
|
39
|
+
* @param fallback - Default
|
|
40
|
+
* @returns The integer
|
|
41
|
+
*/
|
|
42
|
+
function queryInt(value, fallback) {
|
|
43
|
+
const s = queryString(value);
|
|
44
|
+
if (!s || !/^\d+$/.test(s))
|
|
45
|
+
return fallback;
|
|
46
|
+
return Number(s);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* GET /api/traces
|
|
50
|
+
*
|
|
51
|
+
* @param req - Query: since (ISO), type (root kind), limit
|
|
52
|
+
* @param res - `{ success, data: { traces, writeFailures } }`
|
|
53
|
+
*/
|
|
54
|
+
export function listTraces(req, res) {
|
|
55
|
+
const sinceRaw = queryString(req.query.since);
|
|
56
|
+
const since = sinceRaw ? new Date(sinceRaw) : undefined;
|
|
57
|
+
if (since && Number.isNaN(since.getTime())) {
|
|
58
|
+
res.status(400).json({ success: false, error: 'since must be an ISO date' });
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const type = queryString(req.query.type);
|
|
62
|
+
if (type && !isTraceRootKind(type)) {
|
|
63
|
+
res.status(400).json({ success: false, error: 'type must be one of request, goal, experiment, owner_message' });
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const store = getTraceStore();
|
|
67
|
+
const traces = store.list({
|
|
68
|
+
...(since ? { since } : {}),
|
|
69
|
+
...(type && isTraceRootKind(type) ? { rootKind: type } : {}),
|
|
70
|
+
limit: queryInt(req.query.limit, TRACE_CONSTANTS.DEFAULT_LIST_LIMIT),
|
|
71
|
+
});
|
|
72
|
+
// writeFailures: trace writes lost since the backend started (disk full, permissions).
|
|
73
|
+
res.json({ success: true, data: { traces, writeFailures: store.writeFailures } });
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* GET /api/traces/by-ref
|
|
77
|
+
*
|
|
78
|
+
* @param req - Query: one of workItemId, ticketId, requestId, decisionId, experimentId
|
|
79
|
+
* @param res - `{ success, data: { traceId, root } }`, 400 without a ref, 404 when unknown
|
|
80
|
+
*/
|
|
81
|
+
export function traceByRef(req, res) {
|
|
82
|
+
const store = getTraceStore();
|
|
83
|
+
let asked = false;
|
|
84
|
+
for (const [param, kind] of REF_PARAMS) {
|
|
85
|
+
const id = queryString(req.query[param]);
|
|
86
|
+
if (!id)
|
|
87
|
+
continue;
|
|
88
|
+
asked = true;
|
|
89
|
+
const traceId = store.traceByRef(kind, id);
|
|
90
|
+
const entry = traceId ? store.getEntry(traceId) : null;
|
|
91
|
+
if (entry) {
|
|
92
|
+
res.json({ success: true, data: { traceId: entry.traceId, root: entry.root } });
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (!asked) {
|
|
97
|
+
res.status(400).json({ success: false, error: 'Pass one of workItemId, ticketId, requestId, decisionId, experimentId' });
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
res.status(404).json({ success: false, error: 'No trace for that reference (only work started after traces were enabled has one)' });
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* GET /api/traces/:id
|
|
104
|
+
*
|
|
105
|
+
* @param req - Params: id; query: offset, limit
|
|
106
|
+
* @param res - `{ success, data: { root, events, total, offset, limit, truncated } }`
|
|
107
|
+
*/
|
|
108
|
+
export async function getTrace(req, res) {
|
|
109
|
+
const id = req.params.id;
|
|
110
|
+
if (!isTraceId(id)) {
|
|
111
|
+
res.status(400).json({ success: false, error: 'Not a trace id (tr-YYYYMMDD-xxxxxxxx)' });
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const page = await getTraceStore().read(id, queryInt(req.query.offset, 0), queryInt(req.query.limit, TRACE_CONSTANTS.DEFAULT_PAGE_SIZE));
|
|
115
|
+
if (!page) {
|
|
116
|
+
res.status(404).json({ success: false, error: `Trace ${id} not found` });
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
res.json({ success: true, data: page });
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* POST /api/traces — start a goal or experiment trace. An agent caller's turn
|
|
123
|
+
* is bound to it.
|
|
124
|
+
*
|
|
125
|
+
* @param req - Body: kind ('goal' | 'experiment'), summary, refs?
|
|
126
|
+
* @param res - 201 `{ success, data: { traceId } }`
|
|
127
|
+
*/
|
|
128
|
+
export function startTrace(req, res) {
|
|
129
|
+
const body = (req.body ?? {});
|
|
130
|
+
if (body.kind !== 'goal' && body.kind !== 'experiment') {
|
|
131
|
+
res.status(400).json({ success: false, error: "kind must be 'goal' or 'experiment'" });
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (typeof body.summary !== 'string' || body.summary.trim().length === 0) {
|
|
135
|
+
res.status(400).json({ success: false, error: 'summary is required' });
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const refs = {};
|
|
139
|
+
if (body.refs && typeof body.refs === 'object') {
|
|
140
|
+
for (const key of ['requestId', 'ticketId', 'workItemId', 'messageId', 'decisionId', 'experimentId']) {
|
|
141
|
+
const v = body.refs[key];
|
|
142
|
+
if (typeof v === 'string' && v.length > 0)
|
|
143
|
+
refs[key] = v;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
const session = readAgentSessionHeader(req);
|
|
147
|
+
const traceId = startGoalTrace({ kind: body.kind, summary: body.summary, refs, ...(session ? { session } : {}) });
|
|
148
|
+
if (!traceId) {
|
|
149
|
+
res.status(500).json({ success: false, error: 'The trace could not be started' });
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
res.status(201).json({ success: true, data: { traceId } });
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Router for `/api/traces`.
|
|
156
|
+
*
|
|
157
|
+
* @returns Express router
|
|
158
|
+
*/
|
|
159
|
+
export function createTraceRouter() {
|
|
160
|
+
const router = Router();
|
|
161
|
+
router.get('/', listTraces);
|
|
162
|
+
router.get('/by-ref', traceByRef);
|
|
163
|
+
router.post('/', startTrace);
|
|
164
|
+
router.get('/:id', (req, res, next) => {
|
|
165
|
+
getTrace(req, res).catch(next);
|
|
166
|
+
});
|
|
167
|
+
return router;
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=trace.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.controller.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/trace/trace.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../backend/src/index.ts"],"names":[],"mappings":";AA2CA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../backend/src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,8 @@ import { getSettingsService } from './services/settings/index.js';
|
|
|
28
28
|
import { MemoryService } from './services/memory/memory.service.js';
|
|
29
29
|
import { getImprovementStartupService } from './services/orchestrator/improvement-startup.service.js';
|
|
30
30
|
import { dedicatedDecisionFor } from './services/people/dedicated-agent.js';
|
|
31
|
-
import { setPeopleOwnerLookup } from './services/people/people-directory.service.js';
|
|
31
|
+
import { setPeopleBotLookup, setPeopleOwnerLookup } from './services/people/people-directory.service.js';
|
|
32
|
+
import { isCrewlyBotUserId } from './services/slack/slack-bot-ids.js';
|
|
32
33
|
import { getSlackCloudConfigService } from './services/slack/slack-cloud-config.service.js';
|
|
33
34
|
import { initializeSlackIfConfigured, shutdownSlack } from './services/slack/index.js';
|
|
34
35
|
import { isNonFatalUnhandledRejection, unhandledRejectionMessage } from './utils/unhandled-rejection.utils.js';
|
|
@@ -67,7 +68,7 @@ import { getSlackAutoWorkingService } from './services/slack/slack-auto-working.
|
|
|
67
68
|
import { getSlackAgentDmService } from './services/slack/slack-agent-dm.service.js';
|
|
68
69
|
import { sendBootAnnouncement, isFirstBoot, markBooted } from './services/boot/boot-announce.service.js';
|
|
69
70
|
import { SubAgentMessageQueue } from './services/messaging/sub-agent-message-queue.service.js';
|
|
70
|
-
import { SUB_AGENT_QUEUE_CONSTANTS, CHAT_CONTEXT_CONSTANTS, SAFE_RESTART, AUTO_UPDATE_CONSTANTS, PROCESS_EXIT_CODES, CLAUDE_STARTUP_CONSTANTS, WEB_CONSTANTS, TICKET_CONSTANTS, UNASSIGNED_ROUTE_CONSTANTS, CLOUD_TALK_CONSTANTS, STANDING_ANSWERS_CONSTANTS, TICKET_AUTOPILOT_CONSTANTS, WORK_ITEM_DESTINATION_CONSTANTS, CODEX_USAGE_SYNC_CONSTANTS, ANTIGRAVITY_USAGE_SYNC_CONSTANTS } from './constants.js';
|
|
71
|
+
import { SUB_AGENT_QUEUE_CONSTANTS, CHAT_CONTEXT_CONSTANTS, SAFE_RESTART, AUTO_UPDATE_CONSTANTS, PROCESS_EXIT_CODES, CLAUDE_STARTUP_CONSTANTS, WEB_CONSTANTS, TICKET_CONSTANTS, UNASSIGNED_ROUTE_CONSTANTS, CLOUD_TALK_CONSTANTS, STANDING_ANSWERS_CONSTANTS, TICKET_AUTOPILOT_CONSTANTS, EXPERIMENT_CONSTANTS, WORK_ITEM_DESTINATION_CONSTANTS, CODEX_USAGE_SYNC_CONSTANTS, ANTIGRAVITY_USAGE_SYNC_CONSTANTS } from './constants.js';
|
|
71
72
|
import { PtyActivityTrackerService } from './services/agent/pty-activity-tracker.service.js';
|
|
72
73
|
import { InFlightTurnTracker } from './services/restart/in-flight-turn-tracker.service.js';
|
|
73
74
|
import { TicketIntakeService, setTicketIntakeService, resolveTicketIdForSession, } from './services/v3/ticket-intake.service.js';
|
|
@@ -2122,7 +2123,7 @@ export class CrewlyServer {
|
|
|
2122
2123
|
// messages into the bound agent session so it can reply via the
|
|
2123
2124
|
// `reply-channel` skill. See chat-v2.gateway.ts for the contract.
|
|
2124
2125
|
try {
|
|
2125
|
-
const [{ ChatV2Gateway, devAnonymousTokenVerifier }, { ChatV2DispatcherService }, { ChatV2MentionResolver }, { getChatV2Service }, { setChatV2RealtimeDeps }, { verifyHs256Token },] = await Promise.all([
|
|
2126
|
+
const [{ ChatV2Gateway, devAnonymousTokenVerifier }, { ChatV2DispatcherService, agentAuthorOf }, { ChatV2MentionResolver }, { getChatV2Service }, { setChatV2RealtimeDeps }, { verifyHs256Token },] = await Promise.all([
|
|
2126
2127
|
import('./websocket/chat-v2.gateway.js'),
|
|
2127
2128
|
import('./services/chat-v2/chat-v2.dispatcher.service.js'),
|
|
2128
2129
|
import('./services/chat-v2/chat-v2.mention-resolver.js'),
|
|
@@ -2157,8 +2158,11 @@ export class CrewlyServer {
|
|
|
2157
2158
|
mentionResolver: chatMentionResolver,
|
|
2158
2159
|
// Issue #968: an agent dedicated to one person never gets (or
|
|
2159
2160
|
// is woken by) anyone else's Slack message.
|
|
2161
|
+
// A post another agent wrote (colleague's Slack post, or a
|
|
2162
|
+
// local agent's user turn) is never declined.
|
|
2160
2163
|
refuseDelivery: async (sessionName, message) => (await dedicatedDecisionFor(StorageService.getInstance(), sessionName, {
|
|
2161
2164
|
slackUserId: typeof message.metadata?.slackUserId === 'string' ? message.metadata.slackUserId : null,
|
|
2165
|
+
authorAgentSession: agentAuthorOf(message),
|
|
2162
2166
|
})).decline,
|
|
2163
2167
|
// Phase B-2 — huddle roster lookup. ChatV2Service owns
|
|
2164
2168
|
// the chat_channel_members table; the dispatcher just
|
|
@@ -3010,14 +3014,15 @@ export class CrewlyServer {
|
|
|
3010
3014
|
const slack = getSlackService();
|
|
3011
3015
|
if (!slack.isConnected())
|
|
3012
3016
|
return false;
|
|
3013
|
-
|
|
3017
|
+
// Only a delivered notice counts: sendNotification resolves
|
|
3018
|
+
// false when there was no channel to send it to.
|
|
3019
|
+
return slack.sendNotification({
|
|
3014
3020
|
type: 'project_update',
|
|
3015
3021
|
title,
|
|
3016
3022
|
message,
|
|
3017
3023
|
urgency: urgent ? 'high' : 'normal',
|
|
3018
3024
|
timestamp: new Date().toISOString(),
|
|
3019
3025
|
});
|
|
3020
|
-
return true;
|
|
3021
3026
|
});
|
|
3022
3027
|
TicketAutopilotService.getInstance()?.stop();
|
|
3023
3028
|
TicketAutopilotService.setInstance(autopilot);
|
|
@@ -3030,6 +3035,37 @@ export class CrewlyServer {
|
|
|
3030
3035
|
else {
|
|
3031
3036
|
this.logger.info('Ticket autopilot off (CREWLY_TICKET_AUTOPILOT=0)');
|
|
3032
3037
|
}
|
|
3038
|
+
// Experiment cards (specs/experiment-cards.md, issue #986): measure each
|
|
3039
|
+
// shipped experiment at the end of its window, label it, log it to the
|
|
3040
|
+
// wiki and tell the owner. Kill switch: CREWLY_EXPERIMENTS=0.
|
|
3041
|
+
if (process.env[EXPERIMENT_CONSTANTS.ENV_SWITCH] !== '0')
|
|
3042
|
+
try {
|
|
3043
|
+
const { createDefaultExperimentService } = await import('./services/experiments/experiment.wiring.js');
|
|
3044
|
+
const { ExperimentService } = await import('./services/experiments/experiment.service.js');
|
|
3045
|
+
const experiments = await createDefaultExperimentService(async ({ title, message, urgent }) => {
|
|
3046
|
+
const slack = getSlackService();
|
|
3047
|
+
if (!slack.isConnected())
|
|
3048
|
+
return false;
|
|
3049
|
+
// Only a delivered notice counts: sendNotification resolves
|
|
3050
|
+
// false when there was no channel to send it to.
|
|
3051
|
+
return slack.sendNotification({
|
|
3052
|
+
type: 'project_update',
|
|
3053
|
+
title,
|
|
3054
|
+
message,
|
|
3055
|
+
urgency: urgent ? 'high' : 'normal',
|
|
3056
|
+
timestamp: new Date().toISOString(),
|
|
3057
|
+
});
|
|
3058
|
+
});
|
|
3059
|
+
ExperimentService.getInstance()?.stop();
|
|
3060
|
+
ExperimentService.setInstance(experiments);
|
|
3061
|
+
experiments.start();
|
|
3062
|
+
this.logger.info('Experiment cards started');
|
|
3063
|
+
}
|
|
3064
|
+
catch (experimentErr) {
|
|
3065
|
+
this.logger.warn('Experiment cards failed to start (non-fatal)', {
|
|
3066
|
+
error: experimentErr instanceof Error ? experimentErr.message : String(experimentErr),
|
|
3067
|
+
});
|
|
3068
|
+
}
|
|
3033
3069
|
// Decision cards (specs/2026-10-01-decision-cards.md): structured owner
|
|
3034
3070
|
// questions posted by the responsible agent's own bot, answered by
|
|
3035
3071
|
// button / reaction / thread reply / dashboard; deadlines applied here.
|
|
@@ -3418,6 +3454,8 @@ export class CrewlyServer {
|
|
|
3418
3454
|
// The people directory's owner is the Slack user who installed Crewly's
|
|
3419
3455
|
// Slack app (issue #968); before Slack is set up it is "owner".
|
|
3420
3456
|
setPeopleOwnerLookup(() => getSlackCloudConfigService()?.getConfig()?.workspace.installedBy || null);
|
|
3457
|
+
// Crewly's own bots (master bot, agent bots) are never people.
|
|
3458
|
+
setPeopleBotLookup(isCrewlyBotUserId);
|
|
3421
3459
|
try {
|
|
3422
3460
|
this.logger.info('Checking Slack configuration...');
|
|
3423
3461
|
const result = await initializeSlackIfConfigured({
|
|
@@ -4798,24 +4836,25 @@ export class CrewlyServer {
|
|
|
4798
4836
|
const { createDecisionService, attachDecisionSlackListeners, attachSkipAllCommand } = await import('./services/decisions/decision.wiring.js');
|
|
4799
4837
|
const { DecisionService } = await import('./services/decisions/decision.service.js');
|
|
4800
4838
|
const RUNNING = new Set(['running', 'accepted', 'proposed']);
|
|
4839
|
+
const sendToAgent = async (session, text) => {
|
|
4840
|
+
let exists = false;
|
|
4841
|
+
try {
|
|
4842
|
+
exists = getSessionBackendSync()?.sessionExists(session) ?? false;
|
|
4843
|
+
}
|
|
4844
|
+
catch {
|
|
4845
|
+
exists = false;
|
|
4846
|
+
}
|
|
4847
|
+
if (!exists) {
|
|
4848
|
+
const { activateAgentBySession } = await import('./controllers/team/team.controller.js');
|
|
4849
|
+
await activateAgentBySession(this.apiController, session).catch(() => undefined);
|
|
4850
|
+
}
|
|
4851
|
+
const result = await this.apiController.agentRegistrationService.sendMessageToAgent(session, text);
|
|
4852
|
+
return result.success;
|
|
4853
|
+
};
|
|
4801
4854
|
const decisions = createDecisionService({
|
|
4802
4855
|
crewlyHome: this.config.crewlyHome,
|
|
4803
4856
|
getTeams: () => this.storageService.getTeams(),
|
|
4804
|
-
sendToAgent
|
|
4805
|
-
let exists = false;
|
|
4806
|
-
try {
|
|
4807
|
-
exists = getSessionBackendSync()?.sessionExists(session) ?? false;
|
|
4808
|
-
}
|
|
4809
|
-
catch {
|
|
4810
|
-
exists = false;
|
|
4811
|
-
}
|
|
4812
|
-
if (!exists) {
|
|
4813
|
-
const { activateAgentBySession } = await import('./controllers/team/team.controller.js');
|
|
4814
|
-
await activateAgentBySession(this.apiController, session).catch(() => undefined);
|
|
4815
|
-
}
|
|
4816
|
-
const result = await this.apiController.agentRegistrationService.sendMessageToAgent(session, text);
|
|
4817
|
-
return result.success;
|
|
4818
|
-
},
|
|
4857
|
+
sendToAgent,
|
|
4819
4858
|
sendToOrchestrator: async (text) => {
|
|
4820
4859
|
this.messageQueueService.enqueue({ content: text, conversationId: 'system', source: 'system_event' });
|
|
4821
4860
|
return true;
|
|
@@ -4844,6 +4883,13 @@ export class CrewlyServer {
|
|
|
4844
4883
|
await attachSkipAllCommand(decisions).catch((err) => this.logger.warn('Skip-all command not wired (non-critical)', { error: err instanceof Error ? err.message : String(err) }));
|
|
4845
4884
|
decisions.start();
|
|
4846
4885
|
this.logger.info('Decision cards started');
|
|
4886
|
+
// Daily signal digest (#987, specs/2026-10-03-signal-digest.md): Do / Skip
|
|
4887
|
+
// per action on one card; Do opens an experiment ticket.
|
|
4888
|
+
const { createSignalDigestService, attachSignalDigestSlackListeners } = await import('./services/signal-digest/signal-digest.wiring.js');
|
|
4889
|
+
const { SignalDigestService } = await import('./services/signal-digest/signal-digest.service.js');
|
|
4890
|
+
const signalDigests = createSignalDigestService({ crewlyHome: this.config.crewlyHome, getTeams: () => this.storageService.getTeams(), sendToAgent });
|
|
4891
|
+
SignalDigestService.setInstance(signalDigests);
|
|
4892
|
+
attachSignalDigestSlackListeners(signalDigests);
|
|
4847
4893
|
// Runtime Terms consent (specs/2026-10-01-runtime-terms-consent.md): the
|
|
4848
4894
|
// owner agrees to a runtime's first-run Terms from a Slack card.
|
|
4849
4895
|
const { startRuntimeTerms } = await import('./services/runtime-terms/runtime-terms.wiring.js');
|