crewly 1.5.8 → 1.5.10
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/skills/_common/lib.sh +47 -0
- package/config/skills/agent/browse-stealth/execute.sh +7 -7
- package/config/skills/agent/competitor-content-tracker/execute.sh +13 -13
- package/config/skills/agent/content-calendar/execute.sh +29 -29
- package/config/skills/agent/content-repurposer/execute.sh +8 -8
- package/config/skills/agent/content-writer/execute.sh +22 -22
- package/config/skills/agent/core/accept-task/execute.sh +6 -6
- package/config/skills/agent/core/block-task/execute.sh +5 -5
- package/config/skills/agent/core/check-quality-gates/execute.sh +5 -5
- package/config/skills/agent/core/complete-task/execute.sh +13 -13
- package/config/skills/agent/core/generate-pdf/execute.sh +4 -4
- package/config/skills/agent/core/get-my-context/execute.sh +5 -5
- package/config/skills/agent/core/get-my-tasks/execute.sh +4 -4
- package/config/skills/agent/core/get-sops/execute.sh +4 -4
- package/config/skills/agent/core/get-team-norms/execute.sh +4 -4
- package/config/skills/agent/core/handoff-task/execute.sh +8 -8
- package/config/skills/agent/core/manage-knowledge/execute.sh +14 -14
- package/config/skills/agent/core/marketplace-search/execute.sh +6 -6
- package/config/skills/agent/core/query-knowledge/execute.sh +5 -5
- package/config/skills/agent/core/read-task/execute.sh +2 -2
- package/config/skills/agent/core/recall/execute.sh +5 -5
- package/config/skills/agent/core/record-learning/execute.sh +7 -7
- package/config/skills/agent/core/register-self/execute.sh +6 -6
- package/config/skills/agent/core/remember/execute.sh +9 -9
- package/config/skills/agent/core/report-progress/execute.sh +5 -5
- package/config/skills/agent/core/report-status/execute.sh +14 -14
- package/config/skills/agent/core/save-working-state/execute.sh +5 -5
- package/config/skills/agent/core/schedule-check/execute.sh +9 -9
- package/config/skills/agent/core/send-chat-response/execute.sh +5 -5
- package/config/skills/agent/core/send-message/execute.sh +6 -5
- package/config/skills/agent/core/update-team-norm/execute.sh +9 -9
- package/config/skills/agent/core/update-user-profile/execute.sh +2 -2
- package/config/skills/agent/marketing/brand-onboarding/execute.sh +8 -8
- package/config/skills/agent/marketing/submit-for-approval/execute.sh +10 -10
- package/config/skills/agent/marketing/weekly-content-planning/execute.sh +8 -8
- package/config/skills/agent/marketing/weekly-marketing-report/execute.sh +5 -5
- package/config/skills/agent/trend-monitor/execute.sh +12 -12
- package/config/skills/auditor/score-task/execute.sh +4 -4
- package/config/skills/orchestrator/assign-task/execute.sh +1 -1
- package/config/skills/orchestrator/assign-team-to-project/execute.sh +2 -2
- package/config/skills/orchestrator/broadcast/execute.sh +2 -2
- package/config/skills/orchestrator/broadcast-to-org/execute.sh +3 -3
- package/config/skills/orchestrator/cancel-all-schedules/execute.sh +3 -3
- package/config/skills/orchestrator/cancel-cron/execute.sh +2 -2
- package/config/skills/orchestrator/cancel-schedule/execute.sh +2 -2
- package/config/skills/orchestrator/complete-task/execute.sh +1 -1
- package/config/skills/orchestrator/create-cron/execute.sh +6 -6
- package/config/skills/orchestrator/create-project/execute.sh +2 -2
- package/config/skills/orchestrator/create-team/execute.sh +2 -2
- package/config/skills/orchestrator/delegate-task/execute.sh +19 -19
- package/config/skills/orchestrator/get-agent-logs/execute.sh +3 -3
- package/config/skills/orchestrator/get-agent-status/execute.sh +2 -2
- package/config/skills/orchestrator/get-tasks/execute.sh +2 -2
- package/config/skills/orchestrator/handle-agent-failure/execute.sh +7 -7
- package/config/skills/orchestrator/list-cron/execute.sh +3 -3
- package/config/skills/orchestrator/list-schedules/execute.sh +2 -2
- package/config/skills/orchestrator/query-knowledge/execute.sh +5 -5
- package/config/skills/orchestrator/read-session-logs/execute.sh +3 -3
- package/config/skills/orchestrator/read-system-logs/execute.sh +3 -3
- package/config/skills/orchestrator/recall/execute.sh +2 -2
- package/config/skills/orchestrator/record-failure/execute.sh +2 -2
- package/config/skills/orchestrator/record-learning/execute.sh +2 -2
- package/config/skills/orchestrator/record-success/execute.sh +2 -2
- package/config/skills/orchestrator/register-self/execute.sh +4 -4
- package/config/skills/orchestrator/remember/execute.sh +3 -3
- package/config/skills/orchestrator/report-bug/execute.sh +5 -5
- package/config/skills/orchestrator/resume-session/execute.sh +2 -2
- package/config/skills/orchestrator/schedule-check/execute.sh +10 -10
- package/config/skills/orchestrator/send-key/execute.sh +6 -6
- package/config/skills/orchestrator/send-message/execute.sh +7 -6
- package/config/skills/orchestrator/set-goal/execute.sh +2 -2
- package/config/skills/orchestrator/start-agent/execute.sh +3 -3
- package/config/skills/orchestrator/start-team/execute.sh +2 -2
- package/config/skills/orchestrator/stop-agent/execute.sh +3 -3
- package/config/skills/orchestrator/stop-team/execute.sh +2 -2
- package/config/skills/orchestrator/subscribe-event/execute.sh +3 -3
- package/config/skills/orchestrator/terminate-agent/execute.sh +2 -2
- package/config/skills/orchestrator/unsubscribe-event/execute.sh +2 -2
- package/config/skills/orchestrator/update-cron/execute.sh +3 -3
- package/config/skills/orchestrator/update-focus/execute.sh +2 -2
- package/config/skills/orchestrator/update-team/execute.sh +3 -3
- package/config/skills/team-leader/aggregate-results/execute.sh +7 -7
- package/config/skills/team-leader/decompose-goal/execute.sh +5 -5
- package/config/skills/team-leader/delegate-task/execute.sh +13 -13
- package/config/skills/team-leader/handle-failure/execute.sh +10 -10
- package/config/skills/team-leader/schedule-check/execute.sh +9 -9
- package/config/skills/team-leader/start-agent/execute.sh +4 -4
- package/config/skills/team-leader/stop-agent/execute.sh +4 -4
- package/config/skills/team-leader/verify-output/execute.sh +8 -8
- package/config/templates/cloud-deploy.json +119 -0
- package/config/templates/dev-fullstack/template.json +64 -17
- package/config/templates/research-analysis/template.json +44 -15
- package/config/templates/social-media-ops/template.json +43 -15
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.d.ts +31 -0
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.js +94 -0
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.routes.d.ts +19 -0
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.routes.js +25 -0
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +11 -3
- package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.js +56 -26
- 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 +3 -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 +16 -0
- package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.js +39 -2
- package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.routes.js +3 -1
- package/dist/backend/backend/src/controllers/chat/chat.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts +15 -0
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +45 -0
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts +1 -0
- package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.routes.js +3 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/index.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/index.js +2 -0
- package/dist/backend/backend/src/controllers/index.js.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts +15 -0
- package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js +35 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js +2 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/monitoring.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/monitoring.routes.js +7 -1
- package/dist/backend/backend/src/controllers/monitoring/monitoring.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 +29 -6
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/token-usage.controller.d.ts +29 -0
- package/dist/backend/backend/src/controllers/monitoring/token-usage.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/token-usage.controller.js +76 -0
- package/dist/backend/backend/src/controllers/monitoring/token-usage.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/project/project.controller.d.ts +16 -0
- package/dist/backend/backend/src/controllers/project/project.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/project/project.controller.js +47 -0
- package/dist/backend/backend/src/controllers/project/project.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/project/project.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/project/project.routes.js +3 -1
- package/dist/backend/backend/src/controllers/project/project.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/scheduler.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/scheduler.controller.js +10 -2
- package/dist/backend/backend/src/controllers/system/scheduler.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 +34 -3
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +18 -4
- package/dist/backend/backend/src/index.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 +25 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts +2 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js +19 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-stream.service.d.ts +145 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-stream.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-stream.service.js +133 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-stream.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.d.ts +130 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.js +263 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js +8 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.d.ts +79 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.js +218 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.d.ts +91 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.js +143 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.d.ts +103 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.js +256 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts +44 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js +323 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +21 -0
- 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 +7 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts +4 -1
- 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 +26 -11
- package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat/chat-highlights.service.d.ts +100 -0
- package/dist/backend/backend/src/services/chat/chat-highlights.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat/chat-highlights.service.js +145 -0
- package/dist/backend/backend/src/services/chat/chat-highlights.service.js.map +1 -0
- package/dist/backend/backend/src/services/chat/chat-sanitizer.service.d.ts +76 -0
- package/dist/backend/backend/src/services/chat/chat-sanitizer.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat/chat-sanitizer.service.js +127 -0
- package/dist/backend/backend/src/services/chat/chat-sanitizer.service.js.map +1 -0
- package/dist/backend/backend/src/services/chat/chat.service.d.ts +8 -0
- package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat/chat.service.js +27 -1
- package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
- package/dist/backend/backend/src/services/marketplace/index.d.ts +1 -1
- package/dist/backend/backend/src/services/marketplace/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/marketplace/index.js +1 -1
- package/dist/backend/backend/src/services/marketplace/index.js.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace.service.d.ts +11 -0
- package/dist/backend/backend/src/services/marketplace/marketplace.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace.service.js +31 -0
- package/dist/backend/backend/src/services/marketplace/marketplace.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/token-estimator.service.d.ts +197 -0
- package/dist/backend/backend/src/services/monitoring/token-estimator.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/monitoring/token-estimator.service.js +408 -0
- package/dist/backend/backend/src/services/monitoring/token-estimator.service.js.map +1 -0
- package/dist/backend/backend/src/services/project/project-search.service.d.ts +62 -0
- package/dist/backend/backend/src/services/project/project-search.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project/project-search.service.js +107 -0
- package/dist/backend/backend/src/services/project/project-search.service.js.map +1 -0
- package/dist/backend/backend/src/services/quality/quality-gate.service.d.ts +11 -0
- package/dist/backend/backend/src/services/quality/quality-gate.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/quality/quality-gate.service.js +93 -19
- package/dist/backend/backend/src/services/quality/quality-gate.service.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-command-helper.js +11 -5
- package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts +8 -2
- package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.js +30 -6
- package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/types/settings.types.d.ts +3 -0
- package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/settings.types.js +1 -0
- package/dist/backend/backend/src/types/settings.types.js.map +1 -1
- package/dist/cli/backend/src/types/settings.types.d.ts +3 -0
- package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/settings.types.js +1 -0
- package/dist/cli/backend/src/types/settings.types.js.map +1 -1
- package/dist/cli/cli/src/commands/stop.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/stop.js +3 -0
- package/dist/cli/cli/src/commands/stop.js.map +1 -1
- package/dist/cli/cli/src/utils/license-check.d.ts +70 -0
- package/dist/cli/cli/src/utils/license-check.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/license-check.js +124 -0
- package/dist/cli/cli/src/utils/license-check.js.map +1 -0
- package/dist/cli/cli/src/utils/process-cleanup.d.ts +9 -0
- package/dist/cli/cli/src/utils/process-cleanup.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/process-cleanup.js +48 -0
- package/dist/cli/cli/src/utils/process-cleanup.js.map +1 -1
- package/frontend/dist/assets/index-76782e9e.js +5215 -0
- package/frontend/dist/assets/index-b19b2478.css +33 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/frontend/dist/assets/index-512efc8e.js +0 -4921
- package/frontend/dist/assets/index-dc6ac165.css +0 -33
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI License Check Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides functions for verifying user license tier and feature entitlements
|
|
5
|
+
* against the Crewly backend. Used by CLI commands to gate premium features.
|
|
6
|
+
*
|
|
7
|
+
* When the backend is unreachable, defaults to free tier (basic_teams only)
|
|
8
|
+
* to ensure graceful degradation.
|
|
9
|
+
*
|
|
10
|
+
* @module cli/utils/license-check
|
|
11
|
+
*/
|
|
12
|
+
import chalk from 'chalk';
|
|
13
|
+
import { WEB_CONSTANTS } from '../../../config/constants.js';
|
|
14
|
+
// ========================= Constants =========================
|
|
15
|
+
/** Backend base URL for license verification */
|
|
16
|
+
const BACKEND_URL = `http://localhost:${WEB_CONSTANTS.PORTS.BACKEND}`;
|
|
17
|
+
/** License verification endpoint */
|
|
18
|
+
const LICENSE_VERIFY_ENDPOINT = '/api/cloud/license/verify';
|
|
19
|
+
/** Request timeout in milliseconds */
|
|
20
|
+
const LICENSE_CHECK_TIMEOUT_MS = 5000;
|
|
21
|
+
/** Features available on the free tier when backend is unreachable */
|
|
22
|
+
const FREE_TIER_FEATURES = ['basic_teams'];
|
|
23
|
+
/** Free tier name */
|
|
24
|
+
const FREE_TIER_NAME = 'free';
|
|
25
|
+
// ========================= Functions =========================
|
|
26
|
+
/**
|
|
27
|
+
* Checks whether the current user's license allows access to a specific feature.
|
|
28
|
+
*
|
|
29
|
+
* Queries GET /api/cloud/license/verify on the local backend and inspects the
|
|
30
|
+
* returned features array. If the backend is unreachable or returns an error,
|
|
31
|
+
* defaults to free tier (only `basic_teams` allowed).
|
|
32
|
+
*
|
|
33
|
+
* @param requiredFeature - The feature identifier to check (e.g. 'premium_templates', 'cloud_relay')
|
|
34
|
+
* @returns License check result with allowed status, tier, and optional message
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const result = await checkLicense('premium_templates');
|
|
39
|
+
* if (!result.allowed) {
|
|
40
|
+
* console.log(result.message);
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export async function checkLicense(requiredFeature) {
|
|
45
|
+
try {
|
|
46
|
+
const controller = new AbortController();
|
|
47
|
+
const timeout = setTimeout(() => controller.abort(), LICENSE_CHECK_TIMEOUT_MS);
|
|
48
|
+
const response = await fetch(`${BACKEND_URL}${LICENSE_VERIFY_ENDPOINT}`, {
|
|
49
|
+
signal: controller.signal,
|
|
50
|
+
headers: { 'Accept': 'application/json' },
|
|
51
|
+
});
|
|
52
|
+
clearTimeout(timeout);
|
|
53
|
+
if (!response.ok) {
|
|
54
|
+
return buildFreeTierResult(requiredFeature);
|
|
55
|
+
}
|
|
56
|
+
const body = (await response.json());
|
|
57
|
+
if (!body.success || !body.data?.valid) {
|
|
58
|
+
return buildFreeTierResult(requiredFeature);
|
|
59
|
+
}
|
|
60
|
+
const { tier, features } = body.data;
|
|
61
|
+
const allowed = Array.isArray(features) && features.includes(requiredFeature);
|
|
62
|
+
if (allowed) {
|
|
63
|
+
return { allowed: true, tier };
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
allowed: false,
|
|
67
|
+
tier,
|
|
68
|
+
message: `Feature "${requiredFeature}" requires a higher plan. Current tier: ${tier}. Upgrade at https://crewlyai.com/pricing`,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return buildFreeTierResult(requiredFeature);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Builds a license check result assuming free tier access.
|
|
77
|
+
* Used when the backend is unreachable or returns invalid data.
|
|
78
|
+
*
|
|
79
|
+
* @param requiredFeature - The feature that was requested
|
|
80
|
+
* @returns A LicenseCheckResult defaulting to free tier
|
|
81
|
+
*/
|
|
82
|
+
function buildFreeTierResult(requiredFeature) {
|
|
83
|
+
const allowed = FREE_TIER_FEATURES.includes(requiredFeature);
|
|
84
|
+
if (allowed) {
|
|
85
|
+
return { allowed: true, tier: FREE_TIER_NAME };
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
allowed: false,
|
|
89
|
+
tier: FREE_TIER_NAME,
|
|
90
|
+
message: `Feature "${requiredFeature}" is not available on the free tier. Connect to Crewly Cloud to unlock premium features: crewly cloud login`,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Guards a CLI command by verifying the user has access to a required feature.
|
|
95
|
+
*
|
|
96
|
+
* Calls {@link checkLicense} and, if the feature is not allowed, prints a
|
|
97
|
+
* user-friendly error message using chalk and exits the process with code 1.
|
|
98
|
+
*
|
|
99
|
+
* @param feature - The feature identifier required by the command
|
|
100
|
+
* @throws Exits the process (process.exit(1)) if the feature is not allowed
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* // At the top of a premium command handler:
|
|
105
|
+
* await requireFeature('premium_templates');
|
|
106
|
+
* // If we reach here, the user has access
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export async function requireFeature(feature) {
|
|
110
|
+
const result = await checkLicense(feature);
|
|
111
|
+
if (result.allowed) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
console.error('');
|
|
115
|
+
console.error(chalk.red(' ✖ Feature not available'));
|
|
116
|
+
console.error('');
|
|
117
|
+
console.error(` ${chalk.yellow(result.message ?? `Feature "${feature}" requires a premium license.`)}`);
|
|
118
|
+
console.error('');
|
|
119
|
+
console.error(` ${chalk.gray(`Current tier: ${result.tier}`)}`);
|
|
120
|
+
console.error(` ${chalk.cyan('Upgrade → https://crewlyai.com/pricing')}`);
|
|
121
|
+
console.error('');
|
|
122
|
+
process.exit(1);
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=license-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license-check.js","sourceRoot":"","sources":["../../../../../cli/src/utils/license-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,4 +12,13 @@
|
|
|
12
12
|
* @param logFn - Logging function for status messages.
|
|
13
13
|
*/
|
|
14
14
|
export declare function killZombieProcesses(port: number, logFn?: (msg: string) => void): void;
|
|
15
|
+
/**
|
|
16
|
+
* Kill orphaned vitest worker processes that survived agent session termination.
|
|
17
|
+
* These accumulate when exec() kills only the parent shell but leaves
|
|
18
|
+
* vitest's forked worker pool running.
|
|
19
|
+
*
|
|
20
|
+
* @param myPid - Current process PID to exclude from killing.
|
|
21
|
+
* @param logFn - Logging function for status messages.
|
|
22
|
+
*/
|
|
23
|
+
export declare function killOrphanedTestProcesses(myPid?: number, logFn?: (msg: string) => void): void;
|
|
15
24
|
//# sourceMappingURL=process-cleanup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-cleanup.d.ts","sourceRoot":"","sources":["../../../../../cli/src/utils/process-cleanup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAkB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"process-cleanup.d.ts","sourceRoot":"","sources":["../../../../../cli/src/utils/process-cleanup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAkB,GAAG,IAAI,CAiElG;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACxC,KAAK,GAAE,MAAoB,EAC3B,KAAK,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAkB,GACxC,IAAI,CAsCN"}
|
|
@@ -72,5 +72,53 @@ export function killZombieProcesses(port, logFn = console.log) {
|
|
|
72
72
|
catch {
|
|
73
73
|
// No stale processes found
|
|
74
74
|
}
|
|
75
|
+
// Kill orphaned vitest/test runner processes from previous agent sessions
|
|
76
|
+
killOrphanedTestProcesses(myPid, logFn);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Kill orphaned vitest worker processes that survived agent session termination.
|
|
80
|
+
* These accumulate when exec() kills only the parent shell but leaves
|
|
81
|
+
* vitest's forked worker pool running.
|
|
82
|
+
*
|
|
83
|
+
* @param myPid - Current process PID to exclude from killing.
|
|
84
|
+
* @param logFn - Logging function for status messages.
|
|
85
|
+
*/
|
|
86
|
+
export function killOrphanedTestProcesses(myPid = process.pid, logFn = console.log) {
|
|
87
|
+
try {
|
|
88
|
+
const result = execSync('ps -eo pid,ppid,command | grep -E "node.*vitest|npx vitest" | grep -v grep', { encoding: 'utf8', timeout: 5000 }).trim();
|
|
89
|
+
if (!result)
|
|
90
|
+
return;
|
|
91
|
+
const pids = result
|
|
92
|
+
.split('\n')
|
|
93
|
+
.map(line => parseInt(line.trim()))
|
|
94
|
+
.filter(pid => !isNaN(pid) && pid !== myPid);
|
|
95
|
+
if (pids.length > 0) {
|
|
96
|
+
logFn(`Found ${pids.length} orphaned test process(es), killing...`);
|
|
97
|
+
for (const pid of pids) {
|
|
98
|
+
try {
|
|
99
|
+
process.kill(pid, 'SIGTERM');
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// Already dead
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Force kill after a brief grace period
|
|
106
|
+
try {
|
|
107
|
+
execSync('sleep 1', { timeout: 3000 });
|
|
108
|
+
}
|
|
109
|
+
catch { /* ignore */ }
|
|
110
|
+
for (const pid of pids) {
|
|
111
|
+
try {
|
|
112
|
+
process.kill(pid, 'SIGKILL');
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// Already dead
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// No orphaned test processes found
|
|
122
|
+
}
|
|
75
123
|
}
|
|
76
124
|
//# sourceMappingURL=process-cleanup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-cleanup.js","sourceRoot":"","sources":["../../../../../cli/src/utils/process-cleanup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,QAA+B,OAAO,CAAC,GAAG;IAC3F,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;IAE1B,kCAAkC;IAClC,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;aACjF,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;QAE1C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,SAAS,QAAQ,CAAC,MAAM,+BAA+B,IAAI,cAAc,CAAC,CAAC;YACjF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACJ,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;gBACxC,CAAC;gBAAC,MAAM,CAAC;oBACR,eAAe;gBAChB,CAAC;YACF,CAAC;YACD,iDAAiD;YACjD,IAAI,CAAC;gBACJ,QAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACxB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACJ,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;gBACxC,CAAC;gBAAC,MAAM,CAAC;oBACR,eAAe;gBAChB,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,+DAA+D;IAChE,CAAC;IAED,oDAAoD;IACpD,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,QAAQ,CACtB,8EAA8E,EAC9E,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CACnC,CAAC,IAAI,EAAE,CAAC;QAET,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,SAAS,GAAG,MAAM;iBACtB,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;iBAClC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC;YAE9C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,KAAK,CAAC,SAAS,SAAS,CAAC,MAAM,wCAAwC,CAAC,CAAC;gBACzE,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;oBAC7B,IAAI,CAAC;wBACJ,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;oBAC9B,CAAC;oBAAC,MAAM,CAAC;wBACR,eAAe;oBAChB,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,2BAA2B;IAC5B,CAAC;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"process-cleanup.js","sourceRoot":"","sources":["../../../../../cli/src/utils/process-cleanup.ts"],"names":[],"mappings":"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"}
|