crewly 1.20.194 → 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 +10 -5
- package/config/skills/agent/core/experiment-card/execute.sh +5 -3
- package/config/skills/agent/core/experiment-card/execute.test.sh +6 -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 +6 -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 +133 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +135 -2
- 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/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 +29 -19
- 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 +11 -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/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/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/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.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 +1 -1
- package/dist/backend/backend/src/services/experiments/experiment-verdict.js +2 -2
- package/dist/backend/backend/src/services/experiments/experiment-verdict.js.map +1 -1
- package/dist/backend/backend/src/services/experiments/experiment.service.d.ts +52 -3
- package/dist/backend/backend/src/services/experiments/experiment.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/experiments/experiment.service.js +178 -24
- package/dist/backend/backend/src/services/experiments/experiment.service.js.map +1 -1
- package/dist/backend/backend/src/services/experiments/experiment.wiring.d.ts +20 -5
- package/dist/backend/backend/src/services/experiments/experiment.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/experiments/experiment.wiring.js +27 -7
- package/dist/backend/backend/src/services/experiments/experiment.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.d.ts +7 -0
- package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.d.ts.map +1 -1
- package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.js +21 -1
- package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.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/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 +10 -2
- 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/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-orchestrator-bridge.d.ts +2 -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 +3 -2
- 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 +25 -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 +44 -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/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 +8 -6
- package/dist/backend/backend/src/types/experiment.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/experiment.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 +133 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +135 -2
- 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/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/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.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/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/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 +2 -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 +3 -2
- 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 +25 -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 +44 -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/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/package.json +1 -1
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Tests for signal-digest — run with: bash execute.test.sh
|
|
3
|
+
# Python HTTP stub as the backend; asserts the requests the skill sends and
|
|
4
|
+
# the JSON it prints. Google is never called (no GSC / GA4 in the configs).
|
|
5
|
+
set -u
|
|
6
|
+
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
7
|
+
EXEC="$HERE/execute.sh"
|
|
8
|
+
PASS=0; FAIL=0
|
|
9
|
+
check() {
|
|
10
|
+
local name="$1"; local got="$2"; local want="$3"
|
|
11
|
+
if [ "$got" = "$want" ]; then PASS=$((PASS+1)); else FAIL=$((FAIL+1)); echo "FAIL: $name"; echo " want: $want"; echo " got: $got"; fi
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
PORT=18841
|
|
15
|
+
TMP="$(mktemp -d)"
|
|
16
|
+
STUB_LOG="$TMP/requests.jsonl"; : > "$STUB_LOG"; export STUB_LOG; export STUB_PORT="$PORT"
|
|
17
|
+
python3 -u <<'PY' >/dev/null 2>&1 &
|
|
18
|
+
from http.server import BaseHTTPRequestHandler, HTTPServer
|
|
19
|
+
import json, os
|
|
20
|
+
LOG = os.environ['STUB_LOG']; PORT = int(os.environ['STUB_PORT'])
|
|
21
|
+
class H(BaseHTTPRequestHandler):
|
|
22
|
+
def _reply(self, method, data=None):
|
|
23
|
+
with open(LOG, 'a') as f:
|
|
24
|
+
f.write(json.dumps({'method': method, 'path': self.path, 'body': data, 'account': self.headers.get('X-Google-Account')}) + '\n')
|
|
25
|
+
path = self.path.split('?')[0]
|
|
26
|
+
status, out = 200, {}
|
|
27
|
+
if path == '/api/signal-digests/history':
|
|
28
|
+
out = {'site': 'visa.careerengine.us', 'entries': [{'key': 'errors:broken:/gone', 'status': 'skip', 'at': '2026-10-01T00:00:00Z', 'digestId': 'SD-1'}]}
|
|
29
|
+
elif path == '/api/experiments':
|
|
30
|
+
out = [{'id': 'EXP-1', 'status': 'running', 'metric': {'query': 'opt extension'}, 'updatedAt': '2026-10-01T00:00:00Z'}]
|
|
31
|
+
elif path == '/api/signal-digests/sources':
|
|
32
|
+
out = {'site': data['site'], 'sources': [], 'started': [k for k, v in data['sources'].items() if v.startswith('error')], 'stopped': [], 'notified': True}
|
|
33
|
+
elif path == '/api/google/gmail/search':
|
|
34
|
+
out = {'query': 'to:visa', 'count': 1, 'messages': [{'id': 'm1', 'from': 'a@b.c', 'subject': 'H1B fee?', 'date': 'd', 'snippet': 'how much'}]}
|
|
35
|
+
elif path == '/api/signal-digests' and method == 'POST':
|
|
36
|
+
if any(i.get('key') == 'tried' for i in (data or {}).get('items', [])):
|
|
37
|
+
status = 409
|
|
38
|
+
body = {'success': False, 'error': 'These actions were already decided: "tried"'}
|
|
39
|
+
self.send_response(status); self.send_header('Content-Type', 'application/json'); self.end_headers()
|
|
40
|
+
self.wfile.write(json.dumps(body).encode()); return
|
|
41
|
+
out = {'id': 'SD-7', 'site': data['site'], 'items': data['items'], 'card': {'slackChannelId': 'C1', 'messageTs': '1.0'}}
|
|
42
|
+
status = 201
|
|
43
|
+
self.send_response(status); self.send_header('Content-Type', 'application/json'); self.end_headers()
|
|
44
|
+
self.wfile.write(json.dumps({'success': True, 'data': out}).encode())
|
|
45
|
+
def _body(self):
|
|
46
|
+
n = int(self.headers.get('content-length', '0')); body = self.rfile.read(n).decode() if n else ''
|
|
47
|
+
return json.loads(body or '{}')
|
|
48
|
+
def do_GET(self): self._reply('GET')
|
|
49
|
+
def do_POST(self): self._reply('POST', self._body())
|
|
50
|
+
def log_message(self, *a, **k): pass
|
|
51
|
+
HTTPServer(('127.0.0.1', PORT), H).serve_forever()
|
|
52
|
+
PY
|
|
53
|
+
STUB_PID=$!
|
|
54
|
+
disown "$STUB_PID" 2>/dev/null || true
|
|
55
|
+
trap 'kill "$STUB_PID" >/dev/null 2>&1; rm -rf "$TMP"' EXIT
|
|
56
|
+
for i in $(seq 1 30); do curl -s -o /dev/null -m 0.2 "http://127.0.0.1:${PORT}/" 2>/dev/null && break; sleep 0.1; done
|
|
57
|
+
|
|
58
|
+
CFG="$TMP/ce.signal.json"
|
|
59
|
+
cat > "$CFG" <<'EOF'
|
|
60
|
+
{"siteUrl":"https://visa.careerengine.us","signalDigest":{"project":"CE site","inbox":{"query":"to:visa@careerengine.us newer_than:1d","account":"site@careerengine.us","max":5},"errors":{"checkSitemap":false}}}
|
|
61
|
+
EOF
|
|
62
|
+
BARE="$TMP/bare.json"
|
|
63
|
+
echo '{"siteUrl":"https://example.com","signalDigest":{"errors":{"checkSitemap":false}}}' > "$BARE"
|
|
64
|
+
|
|
65
|
+
run() { CREWLY_SESSION_NAME=tl-owen CREWLY_API_URL="http://127.0.0.1:${PORT}" HOME="$TMP" bash "$EXEC" "$@" 2>/dev/null; }
|
|
66
|
+
run_err() { CREWLY_SESSION_NAME=tl-owen CREWLY_API_URL="http://127.0.0.1:${PORT}" HOME="$TMP" bash "$EXEC" "$@" 2>&1 >/dev/null; }
|
|
67
|
+
# Skills fire a background POST /api/heartbeat on start: ignore it everywhere.
|
|
68
|
+
calls() { jq -c 'select(.path != "/api/heartbeat")' "$STUB_LOG"; }
|
|
69
|
+
last() { calls | tail -n 1 | jq -c "$1"; }
|
|
70
|
+
req() { calls | jq -c "select(.path | startswith(\"$1\")) | $2" | tail -n 1; }
|
|
71
|
+
|
|
72
|
+
# --- collect: history + inbox fetched, passed to the Python side
|
|
73
|
+
OUT=$(run collect --config "$CFG")
|
|
74
|
+
check "collect: exit 0 with the inbox as a source" "$(printf '%s' "$OUT" | jq -c '.sources')" '{"ga4":"not configured","gsc":"not configured","inbox":"ok","errors":"not configured"}'
|
|
75
|
+
check "collect: site and project from config" "$(printf '%s' "$OUT" | jq -c '[.site,.project]')" '["visa.careerengine.us","CE site"]'
|
|
76
|
+
check "collect: inbox messages" "$(printf '%s' "$OUT" | jq -c '.inbox.messages')" '[{"from":"a@b.c","subject":"H1B fee?","date":"d","snippet":"how much"}]'
|
|
77
|
+
check "collect: history asked for this site" "$(req /api/signal-digests/history '.path')" '"/api/signal-digests/history?site=visa.careerengine.us"'
|
|
78
|
+
check "collect: experiment cards asked for" "$(req /api/experiments '.path')" '"/api/experiments"'
|
|
79
|
+
check "collect: gmail query, max and account" "$(req /api/google/gmail/search '[.path,.account]')" '["/api/google/gmail/search?q=to%3Avisa%40careerengine.us%20newer_than%3A1d&max=5","site@careerengine.us"]'
|
|
80
|
+
check "collect: source status reported for the site" "$(req /api/signal-digests/sources '.body')" '{"site":"visa.careerengine.us","sources":{"ga4":"not configured","gsc":"not configured","inbox":"ok","errors":"not configured"}}'
|
|
81
|
+
check "collect: source report in the output" "$(printf '%s' "$OUT" | jq -c '.sourceReport')" '{"sent":true,"started":[],"stopped":[],"ownerTold":true}'
|
|
82
|
+
|
|
83
|
+
: > "$STUB_LOG"
|
|
84
|
+
run collect --config "$BARE" >/dev/null; CODE=$?
|
|
85
|
+
check "collect: nothing examinable exits 1" "$CODE" "1"
|
|
86
|
+
check "collect: still reports the source status" "$(req /api/signal-digests/sources '.body.site')" '"example.com"'
|
|
87
|
+
check "collect: no inbox query, no gmail call" "$(req /api/google '.path')" ''
|
|
88
|
+
|
|
89
|
+
# --- propose
|
|
90
|
+
cat > "$TMP/actions.json" <<'EOF'
|
|
91
|
+
[{"key":"gsc:low-ctr:a","source":"gsc","signal":"s1","proposal":"p1","expectedEffect":"e1","effort":"S","metric":"m1","score":99,"experiment":{"source":"gsc","measure":"ctr","query":"a"}},
|
|
92
|
+
{"key":"errors:broken:/x","source":"errors","signal":"s2","proposal":"p2","expectedEffect":"e2","effort":"S"},
|
|
93
|
+
{"key":"ga4:drop","source":"ga4","signal":"s3","proposal":"p3","expectedEffect":"e3","effort":"M"}]
|
|
94
|
+
EOF
|
|
95
|
+
OUT=$(run propose --config "$CFG" --actions "$TMP/actions.json")
|
|
96
|
+
check "propose: output" "$OUT" '{"success":true,"digestId":"SD-7","site":"visa.careerengine.us","actions":3,"card":"posted"}'
|
|
97
|
+
check "propose: body (site, project, no score, experiment kept)" "$(last '.body | [.site, .project, (.items|length), .items[0]]')" '["visa.careerengine.us","CE site",3,{"key":"gsc:low-ctr:a","source":"gsc","signal":"s1","proposal":"p1","expectedEffect":"e1","effort":"S","metric":"m1","experiment":{"source":"gsc","measure":"ctr","query":"a"}}]'
|
|
98
|
+
check "propose: absolute config path" "$(last '.body.config')" "\"$CFG\""
|
|
99
|
+
check "propose: no metric key when absent" "$(last '.body.items[1] | has("metric")')" 'false'
|
|
100
|
+
run propose --config "$BARE" --actions '{"items":[{"key":"k1","source":"gsc","signal":"s","proposal":"p","expectedEffect":"e","effort":"S"},{"key":"k2","source":"gsc","signal":"s","proposal":"p","expectedEffect":"e","effort":"S"},{"key":"k3","source":"gsc","signal":"s","proposal":"p","expectedEffect":"e","effort":"S"}]}' >/dev/null
|
|
101
|
+
check "propose: inline {items}, no project, site from siteUrl" "$(last '.body | [.site, has("project"), (.items|length)]')" '["example.com",false,3]'
|
|
102
|
+
OUT=$(run propose --config "$CFG" --actions '[{"key":"tried","source":"gsc","signal":"s","proposal":"p","expectedEffect":"e","effort":"S"}]' || true)
|
|
103
|
+
check "propose: a 409 is passed on" "$(printf '%s' "$OUT" | jq -r '.success')" "false"
|
|
104
|
+
check "propose: bad actions" "$(run_err propose --config "$CFG" --actions '{"nope":1}' | jq -r .error | cut -c1-25)" "--actions must be a JSON "
|
|
105
|
+
|
|
106
|
+
# --- schedule: prints the create-cron object (it never creates the cron itself)
|
|
107
|
+
mkdir -p "$TMP/.crewly/teams/team-ce"
|
|
108
|
+
echo '{"members":[{"sessionName":"tl-owen"}]}' > "$TMP/.crewly/teams/team-ce/config.json"
|
|
109
|
+
: > "$STUB_LOG"
|
|
110
|
+
OUT=$(run schedule --config "$CFG" --cron "30 7 * * 1-5")
|
|
111
|
+
check "schedule: cron object" "$(printf '%s' "$OUT" | jq -c '.createCron | [.cronExpression,.timezone,.targetAgent,.targetTeamId]')" '["30 7 * * 1-5","America/New_York","tl-owen","team-ce"]'
|
|
112
|
+
check "schedule: task names the site and both steps" "$(printf '%s' "$OUT" | jq -r '.createCron.taskDescription | test("visa.careerengine.us") and test("collect --config /") and test("propose --config")')" "true"
|
|
113
|
+
check "schedule: no API call" "$(calls | wc -l | tr -d ' ')" "0"
|
|
114
|
+
check "schedule: no daily team-channel post about failing sources" "$(printf '%s' "$OUT" | jq -r '.createCron.taskDescription | test("team channel")')" "false"
|
|
115
|
+
|
|
116
|
+
# --- argument errors
|
|
117
|
+
check "config required" "$(run_err collect | jq -r .error)" "Missing required parameter: config (--config)"
|
|
118
|
+
check "unknown command" "$(run_err frobnicate --config "$CFG" | jq -r .error)" "Unknown command: frobnicate (collect | propose | schedule)"
|
|
119
|
+
OUT=$(run '{"command":"propose","config":"'"$CFG"'","actions":[{"key":"k1","source":"gsc","signal":"s","proposal":"p","expectedEffect":"e","effort":"S"},{"key":"k2","source":"gsc","signal":"s","proposal":"p","expectedEffect":"e","effort":"S"},{"key":"k3","source":"gsc","signal":"s","proposal":"p","expectedEffect":"e","effort":"S"}]}')
|
|
120
|
+
check "json input: actions as an array" "$(printf '%s' "$OUT" | jq -r .digestId)" "SD-7"
|
|
121
|
+
|
|
122
|
+
echo "signal-digest: $PASS passed, $FAIL failed"
|
|
123
|
+
[ "$FAIL" -eq 0 ]
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"siteUrl": "https://visa.careerengine.us",
|
|
3
|
+
"gscProperty": "sc-domain:visa.careerengine.us",
|
|
4
|
+
"ga4PropertyId": "123456789",
|
|
5
|
+
"ga4HostName": "visa.careerengine.us",
|
|
6
|
+
"credentialsPath": "SEO_OPS_GOOGLE_CREDENTIALS",
|
|
7
|
+
"sitemapUrl": "https://visa.careerengine.us/sitemap.xml",
|
|
8
|
+
"exclusions": {
|
|
9
|
+
"queries": ["^site:", "careerengine"],
|
|
10
|
+
"pages": ["/admin"]
|
|
11
|
+
},
|
|
12
|
+
"urlNormalize": { "stripScheme": true, "localePrefixes": ["en", "zh"] },
|
|
13
|
+
"signalDigest": {
|
|
14
|
+
"site": "visa.careerengine.us",
|
|
15
|
+
"project": "CE site",
|
|
16
|
+
"days": 7,
|
|
17
|
+
"ga4": { "conversionEvents": ["generate_lead", "form_submit"] },
|
|
18
|
+
"inbox": { "query": "to:visa@careerengine.us newer_than:1d", "max": 20 },
|
|
19
|
+
"errors": { "checkSitemap": true, "maxUrls": 60, "url": "https://visa.careerengine.us/api/client-errors?days=1" },
|
|
20
|
+
"experimentLog": "~/.crewly/wiki/ce-site/experiment-log.md",
|
|
21
|
+
"thresholds": { "ga4DropPct": 20, "ga4MinPrevSessions": 50, "ga4MinPrevKeyEvents": 5 }
|
|
22
|
+
}
|
|
23
|
+
}
|