crewly 1.6.1 → 1.6.3
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/orchestrator/prompt.md +16 -0
- package/config/skills/agent/core/get-my-active-work/SKILL.md +101 -0
- package/config/skills/agent/core/get-my-active-work/execute.sh +122 -0
- package/config/skills/agent/core/record-learning/SKILL.md +29 -0
- package/config/skills/agent/core/reply-channel/SKILL.md +41 -0
- package/config/skills/agent/core/reply-channel/execute.sh +165 -0
- package/config/skills/agent/core/reply-channel/execute.test.sh +148 -0
- package/config/skills/agent/remote-browser/execute.sh +296 -14
- package/config/skills/agent/remote-browser/execute.test.sh +482 -0
- package/config/skills/orchestrator/send-message/SKILL.md +30 -7
- package/config/skills/orchestrator/team-health-scan/SKILL.md +98 -0
- package/config/skills/orchestrator/team-health-scan/execute.sh +44 -0
- package/config/skills/registry.json +62 -1
- package/config/slack-app-manifest.json +2 -1
- package/config/sops/developer/git-workflow.md +38 -3
- package/dist/backend/backend/src/constants.d.ts +69 -1
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +69 -2
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/active-work/active-work.controller.d.ts +53 -0
- package/dist/backend/backend/src/controllers/active-work/active-work.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/active-work/active-work.controller.js +92 -0
- package/dist/backend/backend/src/controllers/active-work/active-work.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.js +18 -1
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +68 -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 +233 -5
- package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.routes.js +10 -1
- package/dist/backend/backend/src/controllers/browser/browser.routes.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 +8 -3
- 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 +132 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +401 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts +29 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js +39 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/chat-v2/index.d.ts +8 -0
- package/dist/backend/backend/src/controllers/chat-v2/index.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/chat-v2/index.js +8 -0
- package/dist/backend/backend/src/controllers/chat-v2/index.js.map +1 -0
- package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.d.ts +13 -13
- package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.js +74 -234
- package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.js +76 -15
- package/dist/backend/backend/src/controllers/orchestrator/orchestrator.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 +4 -6
- package/dist/backend/backend/src/controllers/request/request.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/tasks.controller.d.ts +43 -0
- package/dist/backend/backend/src/controllers/task-management/tasks.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/tasks.controller.js +200 -72
- package/dist/backend/backend/src/controllers/task-management/tasks.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 +49 -0
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/team-health/team-health.controller.d.ts +59 -0
- package/dist/backend/backend/src/controllers/team-health/team-health.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/team-health/team-health.controller.js +127 -0
- package/dist/backend/backend/src/controllers/team-health/team-health.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/team-health/team-health.routes.d.ts +13 -0
- package/dist/backend/backend/src/controllers/team-health/team-health.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/team-health/team-health.routes.js +20 -0
- package/dist/backend/backend/src/controllers/team-health/team-health.routes.js.map +1 -0
- package/dist/backend/backend/src/index.d.ts +9 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +233 -0
- 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 +40 -6
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts +498 -0
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.js +759 -0
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +25 -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 +221 -58
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +9 -2
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js +35 -2
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +8 -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 +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
- package/dist/backend/backend/src/services/agent/tmux-command.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/tmux-command.service.js +2 -1
- package/dist/backend/backend/src/services/agent/tmux-command.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/tmux.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/tmux.service.js +2 -1
- package/dist/backend/backend/src/services/agent/tmux.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +148 -3
- package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js +241 -2
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js +13 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/role-boundary.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/role-boundary.module.js +26 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/role-boundary.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts +79 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js +118 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js.map +1 -0
- package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts +161 -0
- 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 +382 -2
- 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 +105 -0
- 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 +232 -13
- package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +178 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +254 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.mention-resolver.d.ts +134 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.mention-resolver.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.mention-resolver.js +232 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.mention-resolver.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.realtime-holder.d.ts +25 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.realtime-holder.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.realtime-holder.js +23 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.realtime-holder.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +254 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +467 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.d.ts +27 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.js +57 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.team-membership.d.ts +43 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.team-membership.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.team-membership.js +54 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.team-membership.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/config.d.ts +100 -0
- package/dist/backend/backend/src/services/chat-v2/config.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/config.js +174 -0
- package/dist/backend/backend/src/services/chat-v2/config.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/index.d.ts +11 -0
- package/dist/backend/backend/src/services/chat-v2/index.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/index.js +12 -0
- package/dist/backend/backend/src/services/chat-v2/index.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts +114 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js +194 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts +100 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js +351 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +132 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +281 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/types.d.ts +295 -0
- package/dist/backend/backend/src/services/chat-v2/types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/types.js +61 -0
- package/dist/backend/backend/src/services/chat-v2/types.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.d.ts +113 -0
- package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.js +179 -0
- package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.d.ts +131 -0
- package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.js +227 -0
- package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.js.map +1 -0
- package/dist/backend/backend/src/services/core/config.service.js +3 -3
- package/dist/backend/backend/src/services/core/config.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.d.ts +22 -0
- package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.js +57 -0
- package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts +69 -1
- package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-bus.service.js +118 -0
- package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts +275 -0
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +736 -0
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -0
- package/dist/backend/backend/src/services/knowledge/fts5-index.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/knowledge/fts5-index.service.js +18 -2
- package/dist/backend/backend/src/services/knowledge/fts5-index.service.js.map +1 -1
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts +49 -13
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js +123 -29
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js.map +1 -1
- package/dist/backend/backend/src/services/knowledge/learnings-index.service.d.ts +159 -0
- package/dist/backend/backend/src/services/knowledge/learnings-index.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/knowledge/learnings-index.service.js +304 -0
- package/dist/backend/backend/src/services/knowledge/learnings-index.service.js.map +1 -0
- package/dist/backend/backend/src/services/knowledge/vector-store.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/knowledge/vector-store.service.js +24 -4
- package/dist/backend/backend/src/services/knowledge/vector-store.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/auto-learning.subscriber.d.ts +174 -0
- package/dist/backend/backend/src/services/memory/auto-learning.subscriber.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/auto-learning.subscriber.js +375 -0
- package/dist/backend/backend/src/services/memory/auto-learning.subscriber.js.map +1 -0
- package/dist/backend/backend/src/services/memory/learning-format.validator.d.ts +97 -0
- package/dist/backend/backend/src/services/memory/learning-format.validator.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/learning-format.validator.js +209 -0
- package/dist/backend/backend/src/services/memory/learning-format.validator.js.map +1 -0
- package/dist/backend/backend/src/services/memory/vector-store.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/vector-store.service.js +19 -4
- package/dist/backend/backend/src/services/memory/vector-store.service.js.map +1 -1
- package/dist/backend/backend/src/services/onboarding/onboarding-provision.service.d.ts +16 -5
- package/dist/backend/backend/src/services/onboarding/onboarding-provision.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/onboarding/onboarding-provision.service.js +32 -5
- package/dist/backend/backend/src/services/onboarding/onboarding-provision.service.js.map +1 -1
- package/dist/backend/backend/src/services/onboarding/onboarding.service.d.ts +157 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.service.js +229 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.service.js.map +1 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.types.d.ts +141 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.types.js +18 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.types.js.map +1 -0
- package/dist/backend/backend/src/services/pr-review/pr-review.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/pr-review/pr-review.service.js +1 -1
- package/dist/backend/backend/src/services/pr-review/pr-review.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/cross-machine-message.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/cross-machine-message.service.js +17 -1
- package/dist/backend/backend/src/services/slack/cross-machine-message.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +39 -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 +158 -26
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +248 -6
- 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 +531 -51
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/team-health/index.d.ts +16 -0
- package/dist/backend/backend/src/services/team-health/index.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-health/index.js +16 -0
- package/dist/backend/backend/src/services/team-health/index.js.map +1 -0
- package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.d.ts +52 -0
- package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.js +161 -0
- package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.js.map +1 -0
- package/dist/backend/backend/src/services/team-health/lost-dispatch-detector.d.ts +53 -0
- package/dist/backend/backend/src/services/team-health/lost-dispatch-detector.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-health/lost-dispatch-detector.js +88 -0
- package/dist/backend/backend/src/services/team-health/lost-dispatch-detector.js.map +1 -0
- package/dist/backend/backend/src/services/team-health/stale-trigger-detector.d.ts +44 -0
- package/dist/backend/backend/src/services/team-health/stale-trigger-detector.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-health/stale-trigger-detector.js +83 -0
- package/dist/backend/backend/src/services/team-health/stale-trigger-detector.js.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-alert-router.d.ts +92 -0
- package/dist/backend/backend/src/services/team-health/team-health-alert-router.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-alert-router.js +328 -0
- package/dist/backend/backend/src/services/team-health/team-health-alert-router.js.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-config.d.ts +41 -0
- package/dist/backend/backend/src/services/team-health/team-health-config.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-config.js +213 -0
- package/dist/backend/backend/src/services/team-health/team-health-config.js.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-detector.d.ts +46 -0
- package/dist/backend/backend/src/services/team-health/team-health-detector.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-detector.js +347 -0
- package/dist/backend/backend/src/services/team-health/team-health-detector.js.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-types.d.ts +154 -0
- package/dist/backend/backend/src/services/team-health/team-health-types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-types.js +94 -0
- package/dist/backend/backend/src/services/team-health/team-health-types.js.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-watchdog.service.d.ts +111 -0
- package/dist/backend/backend/src/services/team-health/team-health-watchdog.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-watchdog.service.js +226 -0
- package/dist/backend/backend/src/services/team-health/team-health-watchdog.service.js.map +1 -0
- package/dist/backend/backend/src/services/v3/mission-reminder.service.d.ts +148 -0
- package/dist/backend/backend/src/services/v3/mission-reminder.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/mission-reminder.service.js +545 -0
- package/dist/backend/backend/src/services/v3/mission-reminder.service.js.map +1 -0
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts +499 -0
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +1105 -0
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -0
- package/dist/backend/backend/src/services/v3/request.service.d.ts +22 -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 +71 -0
- package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/v3-data.service.d.ts +1 -0
- package/dist/backend/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/v3-data.service.js +22 -6
- package/dist/backend/backend/src/services/v3/v3-data.service.js.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.d.ts +19 -1
- package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.js +43 -0
- package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/backend/backend/src/types/index.d.ts +22 -1
- package/dist/backend/backend/src/types/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/index.js.map +1 -1
- package/dist/backend/backend/src/types/review-reason.types.d.ts +63 -0
- package/dist/backend/backend/src/types/review-reason.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/review-reason.types.js +50 -0
- package/dist/backend/backend/src/types/review-reason.types.js.map +1 -0
- package/dist/backend/backend/src/types/slack.types.d.ts +4 -1
- 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/v2/mission.types.d.ts +18 -0
- package/dist/backend/backend/src/types/v2/mission.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/mission.types.js +1 -0
- package/dist/backend/backend/src/types/v2/mission.types.js.map +1 -1
- 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 +25 -1
- package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/backend/backend/src/utils/team.utils.d.ts +38 -0
- package/dist/backend/backend/src/utils/team.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/team.utils.js +45 -0
- package/dist/backend/backend/src/utils/team.utils.js.map +1 -0
- package/dist/backend/backend/src/websocket/chat-v2.gateway.d.ts +195 -0
- package/dist/backend/backend/src/websocket/chat-v2.gateway.d.ts.map +1 -0
- package/dist/backend/backend/src/websocket/chat-v2.gateway.js +401 -0
- package/dist/backend/backend/src/websocket/chat-v2.gateway.js.map +1 -0
- package/dist/backend/backend/src/websocket/terminal.gateway.d.ts +37 -2
- package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/terminal.gateway.js +106 -5
- package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +69 -1
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +69 -2
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/core/config.service.js +3 -3
- package/dist/cli/backend/src/services/core/config.service.js.map +1 -1
- package/dist/cli/backend/src/services/core/storage.service.d.ts +22 -0
- package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/storage.service.js +57 -0
- package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/cli/backend/src/services/knowledge/fts5-index.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/knowledge/fts5-index.service.js +18 -2
- package/dist/cli/backend/src/services/knowledge/fts5-index.service.js.map +1 -1
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts +49 -13
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js +123 -29
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js.map +1 -1
- package/dist/cli/backend/src/services/knowledge/vector-store.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/knowledge/vector-store.service.js +24 -4
- package/dist/cli/backend/src/services/knowledge/vector-store.service.js.map +1 -1
- package/dist/cli/backend/src/types/index.d.ts +22 -1
- package/dist/cli/backend/src/types/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/index.js.map +1 -1
- 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 +25 -1
- package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
- package/frontend/dist/assets/{index-70356616.js → index-7a4e7df5.js} +328 -326
- package/frontend/dist/assets/index-b7e59b2b.css +33 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +2 -1
- package/config/skills/orchestrator/recall/SKILL.md +0 -47
- package/config/skills/orchestrator/recall/execute.sh +0 -13
- package/config/skills/orchestrator/record-learning/SKILL.md +0 -47
- package/config/skills/orchestrator/record-learning/execute.sh +0 -13
- package/config/skills/orchestrator/remember/SKILL.md +0 -55
- package/config/skills/orchestrator/remember/execute.sh +0 -15
- package/frontend/dist/assets/index-6aaa0630.css +0 -33
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud Portal Onboarding Service.
|
|
3
|
+
*
|
|
4
|
+
* Manages session lifecycle for the KR3 sub-5-minute Cloud Portal onboarding
|
|
5
|
+
* flow exposed under `/api/onboarding/*`. Sessions are kept in memory for the
|
|
6
|
+
* duration of the backend process — see {@link OnboardingSession} for the
|
|
7
|
+
* data model and the rationale for in-memory storage.
|
|
8
|
+
*
|
|
9
|
+
* This service is intentionally distinct from {@link BrandOnboardingService}
|
|
10
|
+
* (marketing brand-voice questionnaire). They share the `provisionFromOnboarding`
|
|
11
|
+
* sink but model their session shapes independently, so each flow can evolve
|
|
12
|
+
* without coupling.
|
|
13
|
+
*
|
|
14
|
+
* ## Tenant scoping (Phase E pre-beta — N1)
|
|
15
|
+
*
|
|
16
|
+
* Every read and mutation method accepts an optional `ownerUserId` scope
|
|
17
|
+
* parameter. When provided, the method only returns / mutates sessions
|
|
18
|
+
* owned by that user — cross-owner reads return `null` (the same shape as
|
|
19
|
+
* a missing session, so callers cannot enumerate ids that belong to other
|
|
20
|
+
* tenants). When omitted, the method runs unscoped — preserves OSS
|
|
21
|
+
* single-user behaviour and admin/test access.
|
|
22
|
+
*
|
|
23
|
+
* The HTTP layer at `controllers/onboarding/onboarding.routes.ts` is
|
|
24
|
+
* responsible for resolving the principal from the auth context and
|
|
25
|
+
* always passing `req.user.userId` to the service in Cloud Portal mode.
|
|
26
|
+
*
|
|
27
|
+
* @module services/onboarding/onboarding.service
|
|
28
|
+
*/
|
|
29
|
+
import type { DiscoveryAnswers, OnboardingPrefillData, OnboardingSession } from './onboarding.types.js';
|
|
30
|
+
/**
|
|
31
|
+
* In-memory singleton service implementing Cloud Portal onboarding session
|
|
32
|
+
* lifecycle (`createSession`, `listSessions`, `getSession`, `updateSession`,
|
|
33
|
+
* `setPrefillData`, `approveProfile`).
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* const svc = OnboardingService.getInstance();
|
|
38
|
+
* const session = svc.createSession('https://acme.com', 'user-123');
|
|
39
|
+
* svc.setPrefillData(session.id, { businessName: 'Acme', confidence: 'high' }, 'user-123');
|
|
40
|
+
* svc.approveProfile(session.id, { identity: { name: 'Acme', vertical: 'Software/Tech', size: 'small' } }, 'user-123');
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare class OnboardingService {
|
|
44
|
+
private static instance;
|
|
45
|
+
private readonly sessions;
|
|
46
|
+
/**
|
|
47
|
+
* Get the singleton instance, constructing it on first access.
|
|
48
|
+
*
|
|
49
|
+
* @returns The shared service instance
|
|
50
|
+
*/
|
|
51
|
+
static getInstance(): OnboardingService;
|
|
52
|
+
/**
|
|
53
|
+
* Reset the singleton (intended for tests). Discards all in-memory sessions.
|
|
54
|
+
*/
|
|
55
|
+
static resetInstance(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Internal: returns the stored session if (a) it exists and (b) the
|
|
58
|
+
* caller's `ownerUserId` matches (or the call is unscoped). Returns
|
|
59
|
+
* `null` otherwise — this is the canonical "either missing or
|
|
60
|
+
* not-owned" fallthrough that prevents id-enumeration leaks across
|
|
61
|
+
* tenants (cross-owner attempts look identical to "not found").
|
|
62
|
+
*
|
|
63
|
+
* @param sessionId - Session id to look up
|
|
64
|
+
* @param ownerUserId - Optional owner scope; undefined disables the check
|
|
65
|
+
* @returns The session if visible to the caller, else `null`
|
|
66
|
+
*/
|
|
67
|
+
private resolveOwned;
|
|
68
|
+
/**
|
|
69
|
+
* Create a new onboarding session.
|
|
70
|
+
*
|
|
71
|
+
* Generates a UUID v4 id, stamps `createdAt`/`updatedAt`, and stores the
|
|
72
|
+
* session in memory. Status starts at `'created'`. When `ownerUserId` is
|
|
73
|
+
* provided, the session is bound to that owner for all subsequent
|
|
74
|
+
* lookups and mutations (Cloud Portal mode); when omitted, the session
|
|
75
|
+
* is unscoped and visible to any caller that also runs unscoped (OSS
|
|
76
|
+
* single-user mode).
|
|
77
|
+
*
|
|
78
|
+
* @param websiteUrl - Optional website URL to seed the session with
|
|
79
|
+
* @param ownerUserId - Optional owner principal id (`req.user.userId` in HTTP)
|
|
80
|
+
* @returns The newly created session
|
|
81
|
+
*/
|
|
82
|
+
createSession(websiteUrl?: string, ownerUserId?: string): OnboardingSession;
|
|
83
|
+
/**
|
|
84
|
+
* List onboarding sessions visible to the caller.
|
|
85
|
+
*
|
|
86
|
+
* When `ownerUserId` is provided, only sessions owned by that user are
|
|
87
|
+
* returned. When omitted, the full set is returned — this preserves
|
|
88
|
+
* existing OSS test/admin behaviour and is the implicit default for
|
|
89
|
+
* callers that never set the scope. Iteration order matches insertion
|
|
90
|
+
* order (Map iteration semantics) so callers that care about chronology
|
|
91
|
+
* can rely on it without an explicit sort.
|
|
92
|
+
*
|
|
93
|
+
* @param ownerUserId - Optional owner scope (`req.user.userId` in HTTP)
|
|
94
|
+
* @returns Snapshot array of the sessions visible to the caller
|
|
95
|
+
*/
|
|
96
|
+
listSessions(ownerUserId?: string): OnboardingSession[];
|
|
97
|
+
/**
|
|
98
|
+
* Get a session by id, scoped to the caller.
|
|
99
|
+
*
|
|
100
|
+
* Returns `null` when (a) the session does not exist OR (b) the caller
|
|
101
|
+
* does not own it. The two cases are intentionally indistinguishable
|
|
102
|
+
* to the caller so cross-tenant id enumeration cannot probe for
|
|
103
|
+
* existence.
|
|
104
|
+
*
|
|
105
|
+
* @param sessionId - Session id
|
|
106
|
+
* @param ownerUserId - Optional owner scope (`req.user.userId` in HTTP)
|
|
107
|
+
* @returns The session, or `null` if missing or not owned by the caller
|
|
108
|
+
*/
|
|
109
|
+
getSession(sessionId: string, ownerUserId?: string): OnboardingSession | null;
|
|
110
|
+
/**
|
|
111
|
+
* Apply a partial update to a session.
|
|
112
|
+
*
|
|
113
|
+
* Identity fields (`id`, `createdAt`) are protected from mutation — the
|
|
114
|
+
* caller's `updates` payload may carry them (e.g. when echoing the body
|
|
115
|
+
* back from the frontend) but they are stripped before merge. The
|
|
116
|
+
* `ownerUserId` field is also stripped — ownership is set at creation
|
|
117
|
+
* time only and cannot be re-targeted via PUT. Status is never
|
|
118
|
+
* auto-mutated here — callers must set `status` explicitly if they
|
|
119
|
+
* want to advance the lifecycle. `updatedAt` is always refreshed.
|
|
120
|
+
*
|
|
121
|
+
* Cross-tenant updates are rejected with a `null` return — same shape
|
|
122
|
+
* as a missing session, so callers cannot probe for existence.
|
|
123
|
+
*
|
|
124
|
+
* @param sessionId - Session id
|
|
125
|
+
* @param updates - Fields to merge into the existing session
|
|
126
|
+
* @param ownerUserId - Optional owner scope (`req.user.userId` in HTTP)
|
|
127
|
+
* @returns The updated session, or `null` if missing or not owned
|
|
128
|
+
*/
|
|
129
|
+
updateSession(sessionId: string, updates: Partial<OnboardingSession>, ownerUserId?: string): OnboardingSession | null;
|
|
130
|
+
/**
|
|
131
|
+
* Store AI-extracted prefill data on a session and advance status to
|
|
132
|
+
* `'prefilled'`.
|
|
133
|
+
*
|
|
134
|
+
* Idempotent w.r.t. prefill replacement — calling this twice with different
|
|
135
|
+
* payloads keeps the latest one. Cross-tenant calls return `null` (no
|
|
136
|
+
* enumeration leak).
|
|
137
|
+
*
|
|
138
|
+
* @param sessionId - Session id
|
|
139
|
+
* @param data - The AI-extracted prefill payload
|
|
140
|
+
* @param ownerUserId - Optional owner scope (`req.user.userId` in HTTP)
|
|
141
|
+
* @returns The updated session, or `null` if missing or not owned
|
|
142
|
+
*/
|
|
143
|
+
setPrefillData(sessionId: string, data: OnboardingPrefillData, ownerUserId?: string): OnboardingSession | null;
|
|
144
|
+
/**
|
|
145
|
+
* Record the user's approved discovery answers and advance status to
|
|
146
|
+
* `'approved'`.
|
|
147
|
+
*
|
|
148
|
+
* Cross-tenant calls return `null` (no enumeration leak).
|
|
149
|
+
*
|
|
150
|
+
* @param sessionId - Session id
|
|
151
|
+
* @param answers - The user-approved discovery answer payload
|
|
152
|
+
* @param ownerUserId - Optional owner scope (`req.user.userId` in HTTP)
|
|
153
|
+
* @returns The updated session, or `null` if missing or not owned
|
|
154
|
+
*/
|
|
155
|
+
approveProfile(sessionId: string, answers: DiscoveryAnswers, ownerUserId?: string): OnboardingSession | null;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=onboarding.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/onboarding/onboarding.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkC;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6C;IAEtE;;;;OAIG;IACH,MAAM,CAAC,WAAW,IAAI,iBAAiB;IAOvC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,YAAY;IAYpB;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAc3E;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAMvD;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAI7E;;;;;;;;;;;;;;;;;;OAkBG;IACH,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,EACnC,WAAW,CAAC,EAAE,MAAM,GACnB,iBAAiB,GAAG,IAAI;IAqB3B;;;;;;;;;;;;OAYG;IACH,cAAc,CACZ,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,qBAAqB,EAC3B,WAAW,CAAC,EAAE,MAAM,GACnB,iBAAiB,GAAG,IAAI;IAa3B;;;;;;;;;;OAUG;IACH,cAAc,CACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,EACzB,WAAW,CAAC,EAAE,MAAM,GACnB,iBAAiB,GAAG,IAAI;CAY5B"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud Portal Onboarding Service.
|
|
3
|
+
*
|
|
4
|
+
* Manages session lifecycle for the KR3 sub-5-minute Cloud Portal onboarding
|
|
5
|
+
* flow exposed under `/api/onboarding/*`. Sessions are kept in memory for the
|
|
6
|
+
* duration of the backend process — see {@link OnboardingSession} for the
|
|
7
|
+
* data model and the rationale for in-memory storage.
|
|
8
|
+
*
|
|
9
|
+
* This service is intentionally distinct from {@link BrandOnboardingService}
|
|
10
|
+
* (marketing brand-voice questionnaire). They share the `provisionFromOnboarding`
|
|
11
|
+
* sink but model their session shapes independently, so each flow can evolve
|
|
12
|
+
* without coupling.
|
|
13
|
+
*
|
|
14
|
+
* ## Tenant scoping (Phase E pre-beta — N1)
|
|
15
|
+
*
|
|
16
|
+
* Every read and mutation method accepts an optional `ownerUserId` scope
|
|
17
|
+
* parameter. When provided, the method only returns / mutates sessions
|
|
18
|
+
* owned by that user — cross-owner reads return `null` (the same shape as
|
|
19
|
+
* a missing session, so callers cannot enumerate ids that belong to other
|
|
20
|
+
* tenants). When omitted, the method runs unscoped — preserves OSS
|
|
21
|
+
* single-user behaviour and admin/test access.
|
|
22
|
+
*
|
|
23
|
+
* The HTTP layer at `controllers/onboarding/onboarding.routes.ts` is
|
|
24
|
+
* responsible for resolving the principal from the auth context and
|
|
25
|
+
* always passing `req.user.userId` to the service in Cloud Portal mode.
|
|
26
|
+
*
|
|
27
|
+
* @module services/onboarding/onboarding.service
|
|
28
|
+
*/
|
|
29
|
+
import { randomUUID } from 'crypto';
|
|
30
|
+
/**
|
|
31
|
+
* In-memory singleton service implementing Cloud Portal onboarding session
|
|
32
|
+
* lifecycle (`createSession`, `listSessions`, `getSession`, `updateSession`,
|
|
33
|
+
* `setPrefillData`, `approveProfile`).
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* const svc = OnboardingService.getInstance();
|
|
38
|
+
* const session = svc.createSession('https://acme.com', 'user-123');
|
|
39
|
+
* svc.setPrefillData(session.id, { businessName: 'Acme', confidence: 'high' }, 'user-123');
|
|
40
|
+
* svc.approveProfile(session.id, { identity: { name: 'Acme', vertical: 'Software/Tech', size: 'small' } }, 'user-123');
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export class OnboardingService {
|
|
44
|
+
static instance = null;
|
|
45
|
+
sessions = new Map();
|
|
46
|
+
/**
|
|
47
|
+
* Get the singleton instance, constructing it on first access.
|
|
48
|
+
*
|
|
49
|
+
* @returns The shared service instance
|
|
50
|
+
*/
|
|
51
|
+
static getInstance() {
|
|
52
|
+
if (!OnboardingService.instance) {
|
|
53
|
+
OnboardingService.instance = new OnboardingService();
|
|
54
|
+
}
|
|
55
|
+
return OnboardingService.instance;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Reset the singleton (intended for tests). Discards all in-memory sessions.
|
|
59
|
+
*/
|
|
60
|
+
static resetInstance() {
|
|
61
|
+
OnboardingService.instance = null;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Internal: returns the stored session if (a) it exists and (b) the
|
|
65
|
+
* caller's `ownerUserId` matches (or the call is unscoped). Returns
|
|
66
|
+
* `null` otherwise — this is the canonical "either missing or
|
|
67
|
+
* not-owned" fallthrough that prevents id-enumeration leaks across
|
|
68
|
+
* tenants (cross-owner attempts look identical to "not found").
|
|
69
|
+
*
|
|
70
|
+
* @param sessionId - Session id to look up
|
|
71
|
+
* @param ownerUserId - Optional owner scope; undefined disables the check
|
|
72
|
+
* @returns The session if visible to the caller, else `null`
|
|
73
|
+
*/
|
|
74
|
+
resolveOwned(sessionId, ownerUserId) {
|
|
75
|
+
const session = this.sessions.get(sessionId);
|
|
76
|
+
if (!session)
|
|
77
|
+
return null;
|
|
78
|
+
if (ownerUserId !== undefined && session.ownerUserId !== ownerUserId) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
return session;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Create a new onboarding session.
|
|
85
|
+
*
|
|
86
|
+
* Generates a UUID v4 id, stamps `createdAt`/`updatedAt`, and stores the
|
|
87
|
+
* session in memory. Status starts at `'created'`. When `ownerUserId` is
|
|
88
|
+
* provided, the session is bound to that owner for all subsequent
|
|
89
|
+
* lookups and mutations (Cloud Portal mode); when omitted, the session
|
|
90
|
+
* is unscoped and visible to any caller that also runs unscoped (OSS
|
|
91
|
+
* single-user mode).
|
|
92
|
+
*
|
|
93
|
+
* @param websiteUrl - Optional website URL to seed the session with
|
|
94
|
+
* @param ownerUserId - Optional owner principal id (`req.user.userId` in HTTP)
|
|
95
|
+
* @returns The newly created session
|
|
96
|
+
*/
|
|
97
|
+
createSession(websiteUrl, ownerUserId) {
|
|
98
|
+
const now = new Date().toISOString();
|
|
99
|
+
const session = {
|
|
100
|
+
id: randomUUID(),
|
|
101
|
+
...(ownerUserId ? { ownerUserId } : {}),
|
|
102
|
+
...(websiteUrl ? { websiteUrl } : {}),
|
|
103
|
+
status: 'created',
|
|
104
|
+
createdAt: now,
|
|
105
|
+
updatedAt: now,
|
|
106
|
+
};
|
|
107
|
+
this.sessions.set(session.id, session);
|
|
108
|
+
return session;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* List onboarding sessions visible to the caller.
|
|
112
|
+
*
|
|
113
|
+
* When `ownerUserId` is provided, only sessions owned by that user are
|
|
114
|
+
* returned. When omitted, the full set is returned — this preserves
|
|
115
|
+
* existing OSS test/admin behaviour and is the implicit default for
|
|
116
|
+
* callers that never set the scope. Iteration order matches insertion
|
|
117
|
+
* order (Map iteration semantics) so callers that care about chronology
|
|
118
|
+
* can rely on it without an explicit sort.
|
|
119
|
+
*
|
|
120
|
+
* @param ownerUserId - Optional owner scope (`req.user.userId` in HTTP)
|
|
121
|
+
* @returns Snapshot array of the sessions visible to the caller
|
|
122
|
+
*/
|
|
123
|
+
listSessions(ownerUserId) {
|
|
124
|
+
const all = Array.from(this.sessions.values());
|
|
125
|
+
if (ownerUserId === undefined)
|
|
126
|
+
return all;
|
|
127
|
+
return all.filter((s) => s.ownerUserId === ownerUserId);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Get a session by id, scoped to the caller.
|
|
131
|
+
*
|
|
132
|
+
* Returns `null` when (a) the session does not exist OR (b) the caller
|
|
133
|
+
* does not own it. The two cases are intentionally indistinguishable
|
|
134
|
+
* to the caller so cross-tenant id enumeration cannot probe for
|
|
135
|
+
* existence.
|
|
136
|
+
*
|
|
137
|
+
* @param sessionId - Session id
|
|
138
|
+
* @param ownerUserId - Optional owner scope (`req.user.userId` in HTTP)
|
|
139
|
+
* @returns The session, or `null` if missing or not owned by the caller
|
|
140
|
+
*/
|
|
141
|
+
getSession(sessionId, ownerUserId) {
|
|
142
|
+
return this.resolveOwned(sessionId, ownerUserId);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Apply a partial update to a session.
|
|
146
|
+
*
|
|
147
|
+
* Identity fields (`id`, `createdAt`) are protected from mutation — the
|
|
148
|
+
* caller's `updates` payload may carry them (e.g. when echoing the body
|
|
149
|
+
* back from the frontend) but they are stripped before merge. The
|
|
150
|
+
* `ownerUserId` field is also stripped — ownership is set at creation
|
|
151
|
+
* time only and cannot be re-targeted via PUT. Status is never
|
|
152
|
+
* auto-mutated here — callers must set `status` explicitly if they
|
|
153
|
+
* want to advance the lifecycle. `updatedAt` is always refreshed.
|
|
154
|
+
*
|
|
155
|
+
* Cross-tenant updates are rejected with a `null` return — same shape
|
|
156
|
+
* as a missing session, so callers cannot probe for existence.
|
|
157
|
+
*
|
|
158
|
+
* @param sessionId - Session id
|
|
159
|
+
* @param updates - Fields to merge into the existing session
|
|
160
|
+
* @param ownerUserId - Optional owner scope (`req.user.userId` in HTTP)
|
|
161
|
+
* @returns The updated session, or `null` if missing or not owned
|
|
162
|
+
*/
|
|
163
|
+
updateSession(sessionId, updates, ownerUserId) {
|
|
164
|
+
const existing = this.resolveOwned(sessionId, ownerUserId);
|
|
165
|
+
if (!existing)
|
|
166
|
+
return null;
|
|
167
|
+
// Strip identity/timestamps and ownerUserId so the caller can't accidentally
|
|
168
|
+
// rewrite them.
|
|
169
|
+
const { id: _ignoredId, createdAt: _ignoredCreatedAt, updatedAt: _ignoredUpdatedAt, ownerUserId: _ignoredOwnerUserId, ...safeUpdates } = updates;
|
|
170
|
+
const merged = {
|
|
171
|
+
...existing,
|
|
172
|
+
...safeUpdates,
|
|
173
|
+
updatedAt: new Date().toISOString(),
|
|
174
|
+
};
|
|
175
|
+
this.sessions.set(sessionId, merged);
|
|
176
|
+
return merged;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Store AI-extracted prefill data on a session and advance status to
|
|
180
|
+
* `'prefilled'`.
|
|
181
|
+
*
|
|
182
|
+
* Idempotent w.r.t. prefill replacement — calling this twice with different
|
|
183
|
+
* payloads keeps the latest one. Cross-tenant calls return `null` (no
|
|
184
|
+
* enumeration leak).
|
|
185
|
+
*
|
|
186
|
+
* @param sessionId - Session id
|
|
187
|
+
* @param data - The AI-extracted prefill payload
|
|
188
|
+
* @param ownerUserId - Optional owner scope (`req.user.userId` in HTTP)
|
|
189
|
+
* @returns The updated session, or `null` if missing or not owned
|
|
190
|
+
*/
|
|
191
|
+
setPrefillData(sessionId, data, ownerUserId) {
|
|
192
|
+
const existing = this.resolveOwned(sessionId, ownerUserId);
|
|
193
|
+
if (!existing)
|
|
194
|
+
return null;
|
|
195
|
+
const merged = {
|
|
196
|
+
...existing,
|
|
197
|
+
prefillData: data,
|
|
198
|
+
status: 'prefilled',
|
|
199
|
+
updatedAt: new Date().toISOString(),
|
|
200
|
+
};
|
|
201
|
+
this.sessions.set(sessionId, merged);
|
|
202
|
+
return merged;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Record the user's approved discovery answers and advance status to
|
|
206
|
+
* `'approved'`.
|
|
207
|
+
*
|
|
208
|
+
* Cross-tenant calls return `null` (no enumeration leak).
|
|
209
|
+
*
|
|
210
|
+
* @param sessionId - Session id
|
|
211
|
+
* @param answers - The user-approved discovery answer payload
|
|
212
|
+
* @param ownerUserId - Optional owner scope (`req.user.userId` in HTTP)
|
|
213
|
+
* @returns The updated session, or `null` if missing or not owned
|
|
214
|
+
*/
|
|
215
|
+
approveProfile(sessionId, answers, ownerUserId) {
|
|
216
|
+
const existing = this.resolveOwned(sessionId, ownerUserId);
|
|
217
|
+
if (!existing)
|
|
218
|
+
return null;
|
|
219
|
+
const merged = {
|
|
220
|
+
...existing,
|
|
221
|
+
discoveryAnswers: answers,
|
|
222
|
+
status: 'approved',
|
|
223
|
+
updatedAt: new Date().toISOString(),
|
|
224
|
+
};
|
|
225
|
+
this.sessions.set(sessionId, merged);
|
|
226
|
+
return merged;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=onboarding.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/onboarding/onboarding.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAOpC;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAC,QAAQ,GAA6B,IAAI,CAAC;IACxC,QAAQ,GAAmC,IAAI,GAAG,EAAE,CAAC;IAEtE;;;;OAIG;IACH,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;YAChC,iBAAiB,CAAC,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACvD,CAAC;QACD,OAAO,iBAAiB,CAAC,QAAQ,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa;QAClB,iBAAiB,CAAC,QAAQ,GAAG,IAAI,CAAC;IACpC,CAAC;IAED;;;;;;;;;;OAUG;IACK,YAAY,CAClB,SAAiB,EACjB,WAAoB;QAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1B,IAAI,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,UAAmB,EAAE,WAAoB;QACrD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,OAAO,GAAsB;YACjC,EAAE,EAAE,UAAU,EAAE;YAChB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACf,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACvC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,WAAoB;QAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/C,IAAI,WAAW,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC;QAC1C,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,SAAiB,EAAE,WAAoB;QAChD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,aAAa,CACX,SAAiB,EACjB,OAAmC,EACnC,WAAoB;QAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,6EAA6E;QAC7E,gBAAgB;QAChB,MAAM,EACJ,EAAE,EAAE,UAAU,EACd,SAAS,EAAE,iBAAiB,EAC5B,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,mBAAmB,EAChC,GAAG,WAAW,EACf,GAAG,OAAO,CAAC;QACZ,MAAM,MAAM,GAAsB;YAChC,GAAG,QAAQ;YACX,GAAG,WAAW;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,cAAc,CACZ,SAAiB,EACjB,IAA2B,EAC3B,WAAoB;QAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,MAAM,MAAM,GAAsB;YAChC,GAAG,QAAQ;YACX,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;OAUG;IACH,cAAc,CACZ,SAAiB,EACjB,OAAyB,EACzB,WAAoB;QAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,MAAM,MAAM,GAAsB;YAChC,GAAG,QAAQ;YACX,gBAAgB,EAAE,OAAO;YACzB,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud Portal Onboarding Session Types.
|
|
3
|
+
*
|
|
4
|
+
* These types model the lightweight session-lifecycle data used by the Cloud
|
|
5
|
+
* Portal sub-5-minute onboarding flow (KR3). They are deliberately distinct
|
|
6
|
+
* from the marketing-focused {@link BrandOnboardingService} session model:
|
|
7
|
+
* Cloud Portal sessions track *intent gathering* (website URL → AI prefill →
|
|
8
|
+
* user-approved discovery answers), while Brand Onboarding tracks a fixed
|
|
9
|
+
* questionnaire used to generate a Brand Voice Guide.
|
|
10
|
+
*
|
|
11
|
+
* Both flows ultimately funnel into
|
|
12
|
+
* {@link provisionFromOnboarding} for team materialisation, but the session
|
|
13
|
+
* stores are independent so each flow can evolve without coupling.
|
|
14
|
+
*
|
|
15
|
+
* @module services/onboarding/onboarding.types
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Lifecycle of a Cloud Portal onboarding session.
|
|
19
|
+
*
|
|
20
|
+
* Transitions:
|
|
21
|
+
* created → prefilled (after POST /sessions/:id/prefill)
|
|
22
|
+
* prefilled → reviewed (free-form PUT updates while user reviews)
|
|
23
|
+
* reviewed → approved (after POST /sessions/:id/approve)
|
|
24
|
+
* approved → provisioned (after POST /provision succeeds)
|
|
25
|
+
*
|
|
26
|
+
* Backwards transitions are allowed via PUT updates so the user can revise
|
|
27
|
+
* answers before approving.
|
|
28
|
+
*/
|
|
29
|
+
export type OnboardingSessionStatus = 'created' | 'prefilled' | 'reviewed' | 'approved' | 'provisioned';
|
|
30
|
+
/**
|
|
31
|
+
* Confidence band for an AI-extracted prefill field.
|
|
32
|
+
*
|
|
33
|
+
* Mirrors {@link PrefillConfidence} from the brand-onboarding flow so callers
|
|
34
|
+
* downstream of either service can reuse the same threshold logic.
|
|
35
|
+
*/
|
|
36
|
+
export type OnboardingPrefillConfidence = 'low' | 'medium' | 'high';
|
|
37
|
+
/**
|
|
38
|
+
* AI-extracted prefill data for a Cloud Portal onboarding session.
|
|
39
|
+
*
|
|
40
|
+
* Generated by the Website Analysis pipeline (LLM extraction over the user's
|
|
41
|
+
* marketing site) and stored as a single payload — fields are optional because
|
|
42
|
+
* extraction confidence varies per site, and missing fields are surfaced as
|
|
43
|
+
* `missingFields` for the user to fill in manually.
|
|
44
|
+
*/
|
|
45
|
+
export interface OnboardingPrefillData {
|
|
46
|
+
/** Business / company name. */
|
|
47
|
+
businessName?: string;
|
|
48
|
+
/** Industry or vertical (free-form, normalised downstream). */
|
|
49
|
+
industry?: string;
|
|
50
|
+
/** One-sentence summary of what the business does. */
|
|
51
|
+
description?: string;
|
|
52
|
+
/** Target customer description. */
|
|
53
|
+
targetCustomer?: string;
|
|
54
|
+
/** Identified competitor names. */
|
|
55
|
+
competitors?: string[];
|
|
56
|
+
/** Brand personality keywords. */
|
|
57
|
+
personality?: string[];
|
|
58
|
+
/** Voice/tone descriptor. */
|
|
59
|
+
tone?: string;
|
|
60
|
+
/** Stated business goals. */
|
|
61
|
+
goals?: string[];
|
|
62
|
+
/** Active marketing platforms (e.g. ['Instagram','LinkedIn']). */
|
|
63
|
+
platforms?: string[];
|
|
64
|
+
/**
|
|
65
|
+
* Field IDs that the extractor could not populate with sufficient confidence.
|
|
66
|
+
* The Cloud Portal UI uses this to highlight what the user still needs to
|
|
67
|
+
* confirm before approving.
|
|
68
|
+
*/
|
|
69
|
+
missingFields?: string[];
|
|
70
|
+
/** Aggregate confidence across all populated fields. */
|
|
71
|
+
confidence?: OnboardingPrefillConfidence;
|
|
72
|
+
/** ISO 8601 timestamp of the extraction run. */
|
|
73
|
+
extractedAt?: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* User-approved answers from the Cloud Portal discovery review step.
|
|
77
|
+
*
|
|
78
|
+
* Shape is intentionally permissive (an open record) because the Cloud Portal
|
|
79
|
+
* questionnaire is template-driven and may evolve. The
|
|
80
|
+
* {@link OnboardingProvisionRequest} validator at the provision boundary
|
|
81
|
+
* pulls out the typed fields it requires; everything else is forwarded as
|
|
82
|
+
* `metadata` for downstream agents.
|
|
83
|
+
*/
|
|
84
|
+
export interface DiscoveryAnswers {
|
|
85
|
+
/** Business identity block (name, vertical, size). */
|
|
86
|
+
identity?: {
|
|
87
|
+
name?: string;
|
|
88
|
+
vertical?: string;
|
|
89
|
+
size?: string;
|
|
90
|
+
};
|
|
91
|
+
/** Strategy block (goal, budget, urgency). */
|
|
92
|
+
strategy?: {
|
|
93
|
+
goal?: string;
|
|
94
|
+
budget?: string;
|
|
95
|
+
urgency?: string;
|
|
96
|
+
};
|
|
97
|
+
/** Vertical-specific probe answers (per OnboardingProvisionRequest §3.2). */
|
|
98
|
+
probe?: Record<string, unknown>;
|
|
99
|
+
/** Stack mapping answers (per OnboardingProvisionRequest §4). */
|
|
100
|
+
stackMapping?: Record<string, unknown>;
|
|
101
|
+
/** Free-form additional fields surfaced by the questionnaire. */
|
|
102
|
+
[extra: string]: unknown;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* A Cloud Portal onboarding session.
|
|
106
|
+
*
|
|
107
|
+
* Persists in memory for the duration of the backend process — the Cloud
|
|
108
|
+
* Portal flow is a single-user wizard whose lifetime is bounded by the
|
|
109
|
+
* 5-minute onboarding budget, so disk persistence is intentionally deferred
|
|
110
|
+
* until we observe a real reload need.
|
|
111
|
+
*/
|
|
112
|
+
export interface OnboardingSession {
|
|
113
|
+
/** Unique session identifier (UUID v4). */
|
|
114
|
+
id: string;
|
|
115
|
+
/**
|
|
116
|
+
* Owner user/tenant id (the authenticated principal that created the
|
|
117
|
+
* session). Populated at `createSession()` time from the auth context
|
|
118
|
+
* (`req.user.userId`). When undefined, the session is treated as
|
|
119
|
+
* unscoped — this preserves OSS single-user behaviour for callers that
|
|
120
|
+
* do not run behind the auth middleware. In Cloud Portal multi-tenant
|
|
121
|
+
* mode the auth middleware ensures this is always populated, so all
|
|
122
|
+
* read/write paths apply ownership checks and cross-tenant access
|
|
123
|
+
* returns HTTP 404 with no enumeration leak.
|
|
124
|
+
*
|
|
125
|
+
* @see N1 — Phase E pre-beta tenant scoping
|
|
126
|
+
*/
|
|
127
|
+
ownerUserId?: string;
|
|
128
|
+
/** Optional website URL provided at session creation. */
|
|
129
|
+
websiteUrl?: string;
|
|
130
|
+
/** Current lifecycle status. */
|
|
131
|
+
status: OnboardingSessionStatus;
|
|
132
|
+
/** AI-extracted prefill data, present after POST /sessions/:id/prefill. */
|
|
133
|
+
prefillData?: OnboardingPrefillData;
|
|
134
|
+
/** User-approved discovery answers, present after POST /sessions/:id/approve. */
|
|
135
|
+
discoveryAnswers?: DiscoveryAnswers;
|
|
136
|
+
/** ISO 8601 timestamp of session creation. */
|
|
137
|
+
createdAt: string;
|
|
138
|
+
/** ISO 8601 timestamp of the last mutation. */
|
|
139
|
+
updatedAt: string;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=onboarding.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding.types.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/onboarding/onboarding.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,uBAAuB,GAC/B,SAAS,GACT,WAAW,GACX,UAAU,GACV,UAAU,GACV,aAAa,CAAC;AAElB;;;;;GAKG;AACH,MAAM,MAAM,2BAA2B,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpE;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,+BAA+B;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,wDAAwD;IACxD,UAAU,CAAC,EAAE,2BAA2B,CAAC;IACzC,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,8CAA8C;IAC9C,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,iEAAiE;IACjE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,MAAM,EAAE,uBAAuB,CAAC;IAChC,2EAA2E;IAC3E,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud Portal Onboarding Session Types.
|
|
3
|
+
*
|
|
4
|
+
* These types model the lightweight session-lifecycle data used by the Cloud
|
|
5
|
+
* Portal sub-5-minute onboarding flow (KR3). They are deliberately distinct
|
|
6
|
+
* from the marketing-focused {@link BrandOnboardingService} session model:
|
|
7
|
+
* Cloud Portal sessions track *intent gathering* (website URL → AI prefill →
|
|
8
|
+
* user-approved discovery answers), while Brand Onboarding tracks a fixed
|
|
9
|
+
* questionnaire used to generate a Brand Voice Guide.
|
|
10
|
+
*
|
|
11
|
+
* Both flows ultimately funnel into
|
|
12
|
+
* {@link provisionFromOnboarding} for team materialisation, but the session
|
|
13
|
+
* stores are independent so each flow can evolve without coupling.
|
|
14
|
+
*
|
|
15
|
+
* @module services/onboarding/onboarding.types
|
|
16
|
+
*/
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=onboarding.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding.types.js","sourceRoot":"","sources":["../../../../../../backend/src/services/onboarding/onboarding.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr-review.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/pr-review/pr-review.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"pr-review.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/pr-review/pr-review.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* @module services/pr-review/pr-review.service
|
|
9
9
|
*/
|
|
10
10
|
import { execSync } from 'child_process';
|
|
11
|
+
import * as crypto from 'crypto';
|
|
11
12
|
// ========================= Constants =========================
|
|
12
13
|
/** Timeout for gh CLI commands in milliseconds */
|
|
13
14
|
const GH_CLI_TIMEOUT_MS = 30000;
|
|
@@ -33,7 +34,6 @@ export function verifyWebhookSignature(payload, signature, secret) {
|
|
|
33
34
|
if (!signature || !secret) {
|
|
34
35
|
return false;
|
|
35
36
|
}
|
|
36
|
-
const crypto = require('crypto');
|
|
37
37
|
const hmac = crypto.createHmac(HMAC_ALGORITHM, secret);
|
|
38
38
|
hmac.update(payload);
|
|
39
39
|
const expected = `sha256=${hmac.digest('hex')}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr-review.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/pr-review/pr-review.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"pr-review.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/pr-review/pr-review.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cross-machine-message.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/cross-machine-message.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"cross-machine-message.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/cross-machine-message.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAwBtC,OAAO,EAAE,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACjG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAE5B,MAAM,oCAAoC,CAAC;AAI5C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,+EAA+E;IAC/E,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAChD,iDAAiD;IACjD,SAAS,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAClD,sBAAsB;IACtB,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC/B;AAQD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,0BAA2B,SAAQ,YAAY;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,WAAW,CAAS;IAE5B,gEAAgE;IAChE,OAAO,CAAC,mBAAmB,CAAqB;IAChD,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAE5C;;;;OAIG;gBACS,cAAc,CAAC,EAAE,qBAAqB;IAOlD;;;;;OAKG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC;;;;;;;;OAQG;IACH,SAAS,IAAI,OAAO;IAmBpB;;;;OAIG;IACH,SAAS,IAAI,kBAAkB,GAAG,IAAI;IAItC;;;;OAIG;IACH,WAAW,IAAI,cAAc,GAAG,IAAI;IAIpC;;;;;;OAMG;IACG,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D;;;;;;;;;;OAUG;IACG,WAAW,CACf,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,uBAAuB,EAC7B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,OAAO,CAAC,sBAAsB,CAAC;IAwElC;;;;;;;;;OASG;IACH,qBAAqB,CAAC,YAAY,EAAE,oBAAoB,GAAG,OAAO;IAqElE;;;;OAIG;YACW,UAAU;IAexB;;;;OAIG;YACW,UAAU;IAgBxB;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;CAG7B;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,IAAI,0BAA0B,CAK1E"}
|