crewly 1.20.133 → 1.20.134
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/dist/backend/backend/src/constants.d.ts +82 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +87 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/bundle/bundle.controller.d.ts +44 -0
- package/dist/backend/backend/src/controllers/bundle/bundle.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/bundle/bundle.controller.js +122 -0
- package/dist/backend/backend/src/controllers/bundle/bundle.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/bundle/bundle.routes.d.ts +25 -0
- package/dist/backend/backend/src/controllers/bundle/bundle.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/bundle/bundle.routes.js +33 -0
- package/dist/backend/backend/src/controllers/bundle/bundle.routes.js.map +1 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +14 -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 +4 -0
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/services/bundle/bundle-apply.factory.d.ts +62 -0
- package/dist/backend/backend/src/services/bundle/bundle-apply.factory.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-apply.factory.js +173 -0
- package/dist/backend/backend/src/services/bundle/bundle-apply.factory.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-apply.service.d.ts +359 -0
- package/dist/backend/backend/src/services/bundle/bundle-apply.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-apply.service.js +888 -0
- package/dist/backend/backend/src/services/bundle/bundle-apply.service.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-catalog.d.ts +167 -0
- package/dist/backend/backend/src/services/bundle/bundle-catalog.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-catalog.js +248 -0
- package/dist/backend/backend/src/services/bundle/bundle-catalog.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-connectors.d.ts +43 -0
- package/dist/backend/backend/src/services/bundle/bundle-connectors.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-connectors.js +57 -0
- package/dist/backend/backend/src/services/bundle/bundle-connectors.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-deps.d.ts +37 -0
- package/dist/backend/backend/src/services/bundle/bundle-deps.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-deps.js +60 -0
- package/dist/backend/backend/src/services/bundle/bundle-deps.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-manifest.d.ts +93 -0
- package/dist/backend/backend/src/services/bundle/bundle-manifest.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-manifest.js +532 -0
- package/dist/backend/backend/src/services/bundle/bundle-manifest.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-placeholders.d.ts +100 -0
- package/dist/backend/backend/src/services/bundle/bundle-placeholders.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-placeholders.js +183 -0
- package/dist/backend/backend/src/services/bundle/bundle-placeholders.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-runtime.d.ts +36 -0
- package/dist/backend/backend/src/services/bundle/bundle-runtime.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-runtime.js +38 -0
- package/dist/backend/backend/src/services/bundle/bundle-runtime.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-skill-installer.d.ts +105 -0
- package/dist/backend/backend/src/services/bundle/bundle-skill-installer.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-skill-installer.js +144 -0
- package/dist/backend/backend/src/services/bundle/bundle-skill-installer.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-state.store.d.ts +48 -0
- package/dist/backend/backend/src/services/bundle/bundle-state.store.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-state.store.js +90 -0
- package/dist/backend/backend/src/services/bundle/bundle-state.store.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-team.builder.d.ts +81 -0
- package/dist/backend/backend/src/services/bundle/bundle-team.builder.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-team.builder.js +172 -0
- package/dist/backend/backend/src/services/bundle/bundle-team.builder.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-time.d.ts +59 -0
- package/dist/backend/backend/src/services/bundle/bundle-time.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-time.js +98 -0
- package/dist/backend/backend/src/services/bundle/bundle-time.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +5 -0
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.js +1 -1
- package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/teams-backup.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/teams-backup.service.js +4 -2
- package/dist/backend/backend/src/services/core/teams-backup.service.js.map +1 -1
- package/dist/backend/backend/src/services/onboarding/onboarding-checklist.factory.d.ts.map +1 -1
- package/dist/backend/backend/src/services/onboarding/onboarding-checklist.factory.js +2 -0
- package/dist/backend/backend/src/services/onboarding/onboarding-checklist.factory.js.map +1 -1
- package/dist/backend/backend/src/services/onboarding/onboarding-checklist.service.d.ts +14 -2
- package/dist/backend/backend/src/services/onboarding/onboarding-checklist.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/onboarding/onboarding-checklist.service.js +37 -1
- package/dist/backend/backend/src/services/onboarding/onboarding-checklist.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +21 -0
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +85 -0
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/template/template.service.js +5 -2
- package/dist/backend/backend/src/services/template/template.service.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/cron-task.service.js +4 -2
- package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
- package/dist/backend/backend/src/types/solution-bundle.types.d.ts +367 -0
- package/dist/backend/backend/src/types/solution-bundle.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/solution-bundle.types.js +17 -0
- package/dist/backend/backend/src/types/solution-bundle.types.js.map +1 -0
- package/dist/backend/backend/src/types/team-template.types.d.ts +8 -0
- package/dist/backend/backend/src/types/team-template.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/team-template.types.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +82 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +87 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/bundle/bundle-apply.service.d.ts +359 -0
- package/dist/cli/backend/src/services/bundle/bundle-apply.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-apply.service.js +888 -0
- package/dist/cli/backend/src/services/bundle/bundle-apply.service.js.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-catalog.d.ts +167 -0
- package/dist/cli/backend/src/services/bundle/bundle-catalog.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-catalog.js +248 -0
- package/dist/cli/backend/src/services/bundle/bundle-catalog.js.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-deps.d.ts +37 -0
- package/dist/cli/backend/src/services/bundle/bundle-deps.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-deps.js +60 -0
- package/dist/cli/backend/src/services/bundle/bundle-deps.js.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-manifest.d.ts +93 -0
- package/dist/cli/backend/src/services/bundle/bundle-manifest.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-manifest.js +532 -0
- package/dist/cli/backend/src/services/bundle/bundle-manifest.js.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-placeholders.d.ts +100 -0
- package/dist/cli/backend/src/services/bundle/bundle-placeholders.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-placeholders.js +183 -0
- package/dist/cli/backend/src/services/bundle/bundle-placeholders.js.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-runtime.d.ts +36 -0
- package/dist/cli/backend/src/services/bundle/bundle-runtime.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-runtime.js +38 -0
- package/dist/cli/backend/src/services/bundle/bundle-runtime.js.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-skill-installer.d.ts +105 -0
- package/dist/cli/backend/src/services/bundle/bundle-skill-installer.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-skill-installer.js +144 -0
- package/dist/cli/backend/src/services/bundle/bundle-skill-installer.js.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-state.store.d.ts +48 -0
- package/dist/cli/backend/src/services/bundle/bundle-state.store.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-state.store.js +90 -0
- package/dist/cli/backend/src/services/bundle/bundle-state.store.js.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-team.builder.d.ts +81 -0
- package/dist/cli/backend/src/services/bundle/bundle-team.builder.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-team.builder.js +172 -0
- package/dist/cli/backend/src/services/bundle/bundle-team.builder.js.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-time.d.ts +59 -0
- package/dist/cli/backend/src/services/bundle/bundle-time.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-time.js +98 -0
- package/dist/cli/backend/src/services/bundle/bundle-time.js.map +1 -0
- package/dist/cli/backend/src/services/core/storage.service.js +1 -1
- package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/cli/backend/src/services/core/teams-backup.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/teams-backup.service.js +4 -2
- package/dist/cli/backend/src/services/core/teams-backup.service.js.map +1 -1
- package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.d.ts +72 -0
- package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.js +389 -0
- package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -0
- package/dist/cli/backend/src/services/messaging/index.d.ts +15 -0
- package/dist/cli/backend/src/services/messaging/index.d.ts.map +1 -0
- package/dist/cli/backend/src/services/messaging/index.js +20 -0
- package/dist/cli/backend/src/services/messaging/index.js.map +1 -0
- package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts +224 -0
- package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/messaging/queue-processor.service.js +969 -0
- package/dist/cli/backend/src/services/messaging/queue-processor.service.js.map +1 -0
- package/dist/cli/backend/src/services/messaging/response-router.service.d.ts +110 -0
- package/dist/cli/backend/src/services/messaging/response-router.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/messaging/response-router.service.js +268 -0
- package/dist/cli/backend/src/services/messaging/response-router.service.js.map +1 -0
- package/dist/cli/backend/src/services/onboarding/onboarding-checklist.service.d.ts +14 -2
- package/dist/cli/backend/src/services/onboarding/onboarding-checklist.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/onboarding/onboarding-checklist.service.js +37 -1
- package/dist/cli/backend/src/services/onboarding/onboarding-checklist.service.js.map +1 -1
- package/dist/cli/backend/src/services/orchestrator/commitment-approval-guard.d.ts +133 -0
- package/dist/cli/backend/src/services/orchestrator/commitment-approval-guard.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/commitment-approval-guard.js +232 -0
- package/dist/cli/backend/src/services/orchestrator/commitment-approval-guard.js.map +1 -0
- package/dist/cli/backend/src/services/skill/skill-catalog.service.d.ts +277 -0
- package/dist/cli/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/skill/skill-catalog.service.js +708 -0
- package/dist/cli/backend/src/services/skill/skill-catalog.service.js.map +1 -0
- package/dist/cli/backend/src/services/skill-setup/skill-install-job.service.d.ts +243 -0
- package/dist/cli/backend/src/services/skill-setup/skill-install-job.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/skill-setup/skill-install-job.service.js +439 -0
- package/dist/cli/backend/src/services/skill-setup/skill-install-job.service.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +21 -0
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +85 -0
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/cli/backend/src/services/template/template.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/template/template.service.js +5 -2
- package/dist/cli/backend/src/services/template/template.service.js.map +1 -1
- package/dist/cli/backend/src/services/workflow/cron-task.service.d.ts +316 -0
- package/dist/cli/backend/src/services/workflow/cron-task.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/workflow/cron-task.service.js +1043 -0
- package/dist/cli/backend/src/services/workflow/cron-task.service.js.map +1 -0
- package/dist/cli/backend/src/types/cron-task.types.d.ts +95 -0
- package/dist/cli/backend/src/types/cron-task.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/cron-task.types.js +10 -0
- package/dist/cli/backend/src/types/cron-task.types.js.map +1 -0
- package/dist/cli/backend/src/types/solution-bundle.types.d.ts +367 -0
- package/dist/cli/backend/src/types/solution-bundle.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/solution-bundle.types.js +17 -0
- package/dist/cli/backend/src/types/solution-bundle.types.js.map +1 -0
- package/dist/cli/backend/src/types/team-template.types.d.ts +8 -0
- package/dist/cli/backend/src/types/team-template.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/team-template.types.js.map +1 -1
- package/dist/cli/cli/src/commands/deploy-bundle.d.ts +160 -0
- package/dist/cli/cli/src/commands/deploy-bundle.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/deploy-bundle.js +386 -0
- package/dist/cli/cli/src/commands/deploy-bundle.js.map +1 -0
- package/dist/cli/cli/src/commands/onboard.d.ts +32 -1
- package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/onboard.js +80 -3
- package/dist/cli/cli/src/commands/onboard.js.map +1 -1
- package/dist/cli/cli/src/constants.d.ts +5 -0
- package/dist/cli/cli/src/constants.d.ts.map +1 -1
- package/dist/cli/cli/src/constants.js +5 -0
- package/dist/cli/cli/src/constants.js.map +1 -1
- package/dist/cli/cli/src/index.js +15 -0
- package/dist/cli/cli/src/index.js.map +1 -1
- package/frontend/dist/assets/{index-e6c403b6.js → index-97bb17d4.js} +274 -274
- package/frontend/dist/index.html +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marketplace Installer Service
|
|
3
|
+
*
|
|
4
|
+
* Handles downloading, installing, uninstalling, and updating
|
|
5
|
+
* marketplace items. Manages asset downloads with checksum verification,
|
|
6
|
+
* tar.gz extraction, and updates the local installed-items manifest.
|
|
7
|
+
*
|
|
8
|
+
* For skill items, also ensures the shared _common/lib.sh files are
|
|
9
|
+
* present in the marketplace directory so installed skills can source them.
|
|
10
|
+
*
|
|
11
|
+
* @module services/marketplace/marketplace-installer.service
|
|
12
|
+
*/
|
|
13
|
+
import path from 'path';
|
|
14
|
+
import { homedir } from 'os';
|
|
15
|
+
import { mkdir, rm, copyFile, readFile, writeFile, rename } from 'fs/promises';
|
|
16
|
+
import { existsSync } from 'fs';
|
|
17
|
+
import { createHash } from 'crypto';
|
|
18
|
+
import { Readable } from 'stream';
|
|
19
|
+
import { pipeline } from 'stream/promises';
|
|
20
|
+
import * as tar from 'tar';
|
|
21
|
+
import { loadManifest, saveManifest, getInstallPath, } from './marketplace.service.js';
|
|
22
|
+
import { findPackageRoot } from '../../utils/package-root.js';
|
|
23
|
+
import { getSkillService } from '../skill/skill.service.js';
|
|
24
|
+
import { SkillCatalogService } from '../skill/skill-catalog.service.js';
|
|
25
|
+
import { MARKETPLACE_CONSTANTS } from '../../constants.js';
|
|
26
|
+
/**
|
|
27
|
+
* Downloads an asset (archive or raw file), verifies its checksum,
|
|
28
|
+
* and extracts/writes it into the given install directory.
|
|
29
|
+
*
|
|
30
|
+
* Shared helper used by both `installItem` and `installToPath` to
|
|
31
|
+
* eliminate duplicated download/verify/extract logic.
|
|
32
|
+
*
|
|
33
|
+
* @param item - The marketplace item whose asset is being downloaded
|
|
34
|
+
* @param installPath - Local directory to write/extract the asset into
|
|
35
|
+
* @param assetPath - Relative path to the asset (archive or model file)
|
|
36
|
+
* @returns Operation result indicating success or failure with a message
|
|
37
|
+
*/
|
|
38
|
+
async function downloadAndExtractAsset(item, installPath, assetPath) {
|
|
39
|
+
const localAssetsDir = path.join(homedir(), '.crewly', MARKETPLACE_CONSTANTS.DIR_NAME, 'assets');
|
|
40
|
+
const localAssetPath = path.join(localAssetsDir, assetPath);
|
|
41
|
+
let data;
|
|
42
|
+
if (existsSync(localAssetPath)) {
|
|
43
|
+
data = await readFile(localAssetPath);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// Fall back to remote download (premium CDN)
|
|
47
|
+
const url = `${MARKETPLACE_CONSTANTS.PREMIUM_BASE_URL}${MARKETPLACE_CONSTANTS.ASSETS_ENDPOINT}/${assetPath}`;
|
|
48
|
+
const res = await fetch(url, { signal: AbortSignal.timeout(MARKETPLACE_CONSTANTS.DOWNLOAD_TIMEOUT) });
|
|
49
|
+
if (!res.ok) {
|
|
50
|
+
return { success: false, message: `Download failed: ${res.status} ${res.statusText}` };
|
|
51
|
+
}
|
|
52
|
+
data = Buffer.from(await res.arrayBuffer());
|
|
53
|
+
}
|
|
54
|
+
// Verify checksum if provided
|
|
55
|
+
if (item.assets.checksum) {
|
|
56
|
+
const colonIdx = item.assets.checksum.indexOf(':');
|
|
57
|
+
if (colonIdx === -1) {
|
|
58
|
+
return { success: false, message: `Invalid checksum format (expected "algo:hash"): ${item.assets.checksum}` };
|
|
59
|
+
}
|
|
60
|
+
const algo = item.assets.checksum.slice(0, colonIdx);
|
|
61
|
+
const expected = item.assets.checksum.slice(colonIdx + 1);
|
|
62
|
+
if (algo !== 'sha256') {
|
|
63
|
+
return { success: false, message: `Unsupported checksum algorithm "${algo}". Only sha256 is supported.` };
|
|
64
|
+
}
|
|
65
|
+
const actual = createHash('sha256').update(data).digest('hex');
|
|
66
|
+
if (actual !== expected) {
|
|
67
|
+
return {
|
|
68
|
+
success: false,
|
|
69
|
+
message: `Checksum mismatch: expected ${expected}, got ${actual}`,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Write to install path
|
|
74
|
+
await mkdir(installPath, { recursive: true });
|
|
75
|
+
if (item.assets.archive && assetPath.endsWith('.tar.gz')) {
|
|
76
|
+
// Extract tar.gz archive contents into install directory
|
|
77
|
+
const readable = Readable.from(data);
|
|
78
|
+
await pipeline(readable, tar.x({ cwd: installPath, strip: 1 }));
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
// Non-archive asset (e.g., model file) — write raw
|
|
82
|
+
const filename = path.basename(assetPath);
|
|
83
|
+
await writeFile(path.join(installPath, filename), data);
|
|
84
|
+
}
|
|
85
|
+
return { success: true, message: `Installed ${item.name} v${item.version}` };
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Downloads and installs a marketplace item.
|
|
89
|
+
*
|
|
90
|
+
* Performs the following steps:
|
|
91
|
+
* 1. Resolves the downloadable asset (archive or model)
|
|
92
|
+
* 2. Determines the source type (GitHub directory or CDN archive)
|
|
93
|
+
* 3. Delegates to `installFromGitHub` or `downloadAndExtractAsset`
|
|
94
|
+
* 4. Calls `finalizeInstall` to update manifest and refresh registrations
|
|
95
|
+
* 5. Cleans up partial install on failure
|
|
96
|
+
*
|
|
97
|
+
* @param item - The marketplace item to install
|
|
98
|
+
* @returns Operation result indicating success or failure with a message
|
|
99
|
+
*/
|
|
100
|
+
export async function installItem(item) {
|
|
101
|
+
const installPath = getInstallPath(item.type, item.id);
|
|
102
|
+
try {
|
|
103
|
+
const assetPath = item.assets.archive || item.assets.model;
|
|
104
|
+
if (!assetPath) {
|
|
105
|
+
return { success: false, message: `No downloadable asset for ${item.id}` };
|
|
106
|
+
}
|
|
107
|
+
// Determine if this is a GitHub-sourced skill (directory path, not a .tar.gz)
|
|
108
|
+
const isGitHubSource = assetPath.startsWith('config/skills/') && !assetPath.endsWith('.tar.gz');
|
|
109
|
+
if (isGitHubSource) {
|
|
110
|
+
// Download individual skill files from GitHub raw content
|
|
111
|
+
return await installFromGitHub(item, installPath, assetPath);
|
|
112
|
+
}
|
|
113
|
+
// Archive-based install (local assets or premium CDN)
|
|
114
|
+
const downloadResult = await downloadAndExtractAsset(item, installPath, assetPath);
|
|
115
|
+
if (!downloadResult.success) {
|
|
116
|
+
return downloadResult;
|
|
117
|
+
}
|
|
118
|
+
// Post-install: update manifest, ensure common libs, refresh registrations
|
|
119
|
+
return await finalizeInstall(item, installPath);
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
// Clean up partial install on failure
|
|
123
|
+
await rm(installPath, { recursive: true, force: true }).catch(() => { });
|
|
124
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
125
|
+
return { success: false, message: `Installation failed: ${msg}` };
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Installs a skill by downloading individual files from GitHub raw content
|
|
130
|
+
* in parallel.
|
|
131
|
+
*
|
|
132
|
+
* Public skills in the crewly repo are stored as directories (not archives).
|
|
133
|
+
* This function downloads the essential skill files (SKILL.md, execute.sh)
|
|
134
|
+
* concurrently from GitHub. SKILL.md and execute.sh are required.
|
|
135
|
+
*
|
|
136
|
+
* @param item - The marketplace item to install
|
|
137
|
+
* @param installPath - Local directory to install to
|
|
138
|
+
* @param sourcePath - Relative path in the GitHub repo (e.g. config/skills/agent/code-review)
|
|
139
|
+
* @returns Operation result
|
|
140
|
+
*/
|
|
141
|
+
async function installFromGitHub(item, installPath, sourcePath) {
|
|
142
|
+
const baseUrl = MARKETPLACE_CONSTANTS.PUBLIC_CDN_BASE;
|
|
143
|
+
// Use custom file list from metadata if available, otherwise default files
|
|
144
|
+
const metadataFiles = item.metadata?.files;
|
|
145
|
+
const filesToDownload = metadataFiles && Array.isArray(metadataFiles) && metadataFiles.length > 0
|
|
146
|
+
? metadataFiles
|
|
147
|
+
: ['SKILL.md', 'execute.sh'];
|
|
148
|
+
await mkdir(installPath, { recursive: true });
|
|
149
|
+
// Download all files in parallel
|
|
150
|
+
const results = await Promise.allSettled(filesToDownload.map(async (file) => {
|
|
151
|
+
const url = `${baseUrl}/${sourcePath}/${file}`;
|
|
152
|
+
const res = await fetch(url, { signal: AbortSignal.timeout(MARKETPLACE_CONSTANTS.GITHUB_FILE_TIMEOUT) });
|
|
153
|
+
if (!res.ok) {
|
|
154
|
+
return { file, ok: false, status: res.status, statusText: res.statusText };
|
|
155
|
+
}
|
|
156
|
+
const content = Buffer.from(await res.arrayBuffer());
|
|
157
|
+
return { file, ok: true, content };
|
|
158
|
+
}));
|
|
159
|
+
// Process results: SKILL.md and execute.sh are required by default.
|
|
160
|
+
// When metadata.files is provided (MCP skills), only SKILL.md is mandatory.
|
|
161
|
+
for (let i = 0; i < filesToDownload.length; i++) {
|
|
162
|
+
const file = filesToDownload[i];
|
|
163
|
+
const result = results[i];
|
|
164
|
+
const isOptional = metadataFiles
|
|
165
|
+
? file !== 'SKILL.md' && file !== 'skill.json'
|
|
166
|
+
: file !== 'SKILL.md' && file !== 'execute.sh';
|
|
167
|
+
if (result.status === 'rejected') {
|
|
168
|
+
if (!isOptional) {
|
|
169
|
+
return { success: false, message: `Failed to download ${file}: ${result.reason}` };
|
|
170
|
+
}
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
const value = result.value;
|
|
174
|
+
if (!value.ok) {
|
|
175
|
+
if (!isOptional) {
|
|
176
|
+
return { success: false, message: `Failed to download ${file}: ${value.status} ${value.statusText}` };
|
|
177
|
+
}
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
await writeFile(path.join(installPath, file), value.content);
|
|
181
|
+
}
|
|
182
|
+
// Post-install: update manifest, ensure common libs, refresh registrations
|
|
183
|
+
return await finalizeInstall(item, installPath);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Shared post-install steps: update the installed-items manifest,
|
|
187
|
+
* ensure _common/lib.sh files exist for skills, and refresh
|
|
188
|
+
* skill registrations so the item is immediately discoverable.
|
|
189
|
+
*
|
|
190
|
+
* @param item - The marketplace item that was just installed
|
|
191
|
+
* @param installPath - Local directory where the item was installed
|
|
192
|
+
* @returns Operation result indicating success
|
|
193
|
+
*/
|
|
194
|
+
async function finalizeInstall(item, installPath) {
|
|
195
|
+
if (item.type === 'skill') {
|
|
196
|
+
await ensureCommonLibs();
|
|
197
|
+
}
|
|
198
|
+
const record = {
|
|
199
|
+
id: item.id,
|
|
200
|
+
type: item.type,
|
|
201
|
+
name: item.name,
|
|
202
|
+
version: item.version,
|
|
203
|
+
installedAt: new Date().toISOString(),
|
|
204
|
+
installPath,
|
|
205
|
+
checksum: item.assets.checksum,
|
|
206
|
+
};
|
|
207
|
+
const manifest = await loadManifest();
|
|
208
|
+
manifest.items = manifest.items.filter((r) => r.id !== item.id);
|
|
209
|
+
manifest.items.push(record);
|
|
210
|
+
await saveManifest(manifest);
|
|
211
|
+
if (item.type === 'skill') {
|
|
212
|
+
await refreshSkillRegistrations();
|
|
213
|
+
}
|
|
214
|
+
return { success: true, message: `Installed ${item.name} v${item.version}`, item: record };
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Internal uninstall with options. Used by updateItem to skip redundant refreshes.
|
|
218
|
+
*
|
|
219
|
+
* @param id - The ID of the marketplace item to uninstall
|
|
220
|
+
* @param options - Optional flags (skipRefresh: skip skill registration refresh)
|
|
221
|
+
* @returns Operation result indicating success or failure with a message
|
|
222
|
+
*/
|
|
223
|
+
async function uninstallItemInternal(id, options) {
|
|
224
|
+
try {
|
|
225
|
+
const manifest = await loadManifest();
|
|
226
|
+
const record = manifest.items.find((r) => r.id === id);
|
|
227
|
+
if (!record) {
|
|
228
|
+
return { success: false, message: `Item ${id} is not installed` };
|
|
229
|
+
}
|
|
230
|
+
// Remove directory
|
|
231
|
+
await rm(record.installPath, { recursive: true, force: true });
|
|
232
|
+
// Update manifest
|
|
233
|
+
manifest.items = manifest.items.filter((r) => r.id !== id);
|
|
234
|
+
await saveManifest(manifest);
|
|
235
|
+
// Refresh skill service and catalog after removal (unless skipped)
|
|
236
|
+
if (record.type === 'skill' && !options?.skipRefresh) {
|
|
237
|
+
await refreshSkillRegistrations();
|
|
238
|
+
}
|
|
239
|
+
return { success: true, message: `Uninstalled ${record.name}` };
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
243
|
+
return { success: false, message: `Uninstall failed: ${msg}` };
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Uninstalls a marketplace item by removing its directory and manifest entry.
|
|
248
|
+
*
|
|
249
|
+
* Performs the following steps:
|
|
250
|
+
* 1. Looks up the item in the local manifest
|
|
251
|
+
* 2. Removes the item's install directory from disk
|
|
252
|
+
* 3. Removes the item's entry from the manifest
|
|
253
|
+
*
|
|
254
|
+
* @param id - The ID of the marketplace item to uninstall
|
|
255
|
+
* @returns Operation result indicating success or failure with a message
|
|
256
|
+
*/
|
|
257
|
+
export async function uninstallItem(id) {
|
|
258
|
+
return uninstallItemInternal(id);
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Updates a marketplace item to the latest version using a safe
|
|
262
|
+
* install-to-temp-then-swap strategy.
|
|
263
|
+
*
|
|
264
|
+
* Performs the following steps:
|
|
265
|
+
* 1. Installs the new version to a temporary path (suffixed with -update-tmp)
|
|
266
|
+
* 2. On success: uninstalls the old version, renames temp to final path
|
|
267
|
+
* 3. On failure: cleans up the temp path without touching the old version
|
|
268
|
+
*
|
|
269
|
+
* @param item - The marketplace item with the latest version info
|
|
270
|
+
* @returns Operation result indicating success or failure with a message
|
|
271
|
+
*/
|
|
272
|
+
export async function updateItem(item) {
|
|
273
|
+
const finalPath = getInstallPath(item.type, item.id);
|
|
274
|
+
const tempPath = finalPath + '-update-tmp';
|
|
275
|
+
// Install new version to temp path by temporarily overriding getInstallPath behavior
|
|
276
|
+
// We create the temp item that installFromTemp will use
|
|
277
|
+
try {
|
|
278
|
+
// Manually perform the install steps to the temp path
|
|
279
|
+
const assetPath = item.assets.archive || item.assets.model;
|
|
280
|
+
if (!assetPath) {
|
|
281
|
+
return { success: false, message: `No downloadable asset for ${item.id}` };
|
|
282
|
+
}
|
|
283
|
+
const isGitHubSource = assetPath.startsWith('config/skills/') && !assetPath.endsWith('.tar.gz');
|
|
284
|
+
let installResult;
|
|
285
|
+
if (isGitHubSource) {
|
|
286
|
+
installResult = await installFromGitHub(item, tempPath, assetPath);
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
installResult = await downloadAndExtractAsset(item, tempPath, assetPath);
|
|
290
|
+
}
|
|
291
|
+
if (!installResult.success) {
|
|
292
|
+
// Clean up temp path on failure
|
|
293
|
+
await rm(tempPath, { recursive: true, force: true }).catch(() => { });
|
|
294
|
+
return { success: false, message: `Update failed during install: ${installResult.message}` };
|
|
295
|
+
}
|
|
296
|
+
// New version installed successfully to temp path
|
|
297
|
+
// Now uninstall the old version (removes old dir + manifest entry)
|
|
298
|
+
const uninstallResult = await uninstallItemInternal(item.id, { skipRefresh: true });
|
|
299
|
+
if (!uninstallResult.success) {
|
|
300
|
+
// If uninstall fails because item wasn't installed, that's OK for an update
|
|
301
|
+
if (!uninstallResult.message.includes('not installed')) {
|
|
302
|
+
await rm(tempPath, { recursive: true, force: true }).catch(() => { });
|
|
303
|
+
return { success: false, message: `Update failed during uninstall: ${uninstallResult.message}` };
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// Rename temp to final path
|
|
307
|
+
// Remove any existing final path first (in case uninstall didn't fully clean up)
|
|
308
|
+
await rm(finalPath, { recursive: true, force: true }).catch(() => { });
|
|
309
|
+
await rename(tempPath, finalPath);
|
|
310
|
+
// Finalize: update manifest and refresh registrations
|
|
311
|
+
return await finalizeInstall(item, finalPath);
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
await rm(tempPath, { recursive: true, force: true }).catch(() => { });
|
|
315
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
316
|
+
return { success: false, message: `Update failed: ${msg}` };
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Ensures the shared _common/lib.sh files exist in the marketplace directory.
|
|
321
|
+
*
|
|
322
|
+
* Marketplace-installed skills source _common/lib.sh relative to their directory.
|
|
323
|
+
* This function copies both the agent-level and root-level _common/lib.sh from
|
|
324
|
+
* the bundled package into the marketplace directory structure:
|
|
325
|
+
*
|
|
326
|
+
* ```
|
|
327
|
+
* ~/.crewly/marketplace/
|
|
328
|
+
* ├── skills/
|
|
329
|
+
* │ └── _common/
|
|
330
|
+
* │ └── lib.sh ← agent _common (delegates to root _common)
|
|
331
|
+
* └── _common/
|
|
332
|
+
* └── lib.sh ← root shared library
|
|
333
|
+
* ```
|
|
334
|
+
*
|
|
335
|
+
* Safe to call multiple times — only copies if source files exist.
|
|
336
|
+
*/
|
|
337
|
+
export async function ensureCommonLibs() {
|
|
338
|
+
let packageRoot;
|
|
339
|
+
try {
|
|
340
|
+
packageRoot = findPackageRoot(__dirname);
|
|
341
|
+
}
|
|
342
|
+
catch {
|
|
343
|
+
// In compiled mode, __dirname may not resolve — try from cwd
|
|
344
|
+
packageRoot = findPackageRoot(process.cwd());
|
|
345
|
+
}
|
|
346
|
+
const mpBase = path.join(homedir(), '.crewly', MARKETPLACE_CONSTANTS.DIR_NAME);
|
|
347
|
+
// Copy agent _common/lib.sh
|
|
348
|
+
const agentCommonSrc = path.join(packageRoot, 'config', 'skills', 'agent', '_common', 'lib.sh');
|
|
349
|
+
const agentCommonDest = path.join(mpBase, 'skills', '_common');
|
|
350
|
+
if (existsSync(agentCommonSrc)) {
|
|
351
|
+
await mkdir(agentCommonDest, { recursive: true });
|
|
352
|
+
await copyFile(agentCommonSrc, path.join(agentCommonDest, 'lib.sh'));
|
|
353
|
+
}
|
|
354
|
+
// Copy root _common/lib.sh
|
|
355
|
+
const rootCommonSrc = path.join(packageRoot, 'config', 'skills', '_common', 'lib.sh');
|
|
356
|
+
const rootCommonDest = path.join(mpBase, '_common');
|
|
357
|
+
if (existsSync(rootCommonSrc)) {
|
|
358
|
+
await mkdir(rootCommonDest, { recursive: true });
|
|
359
|
+
await copyFile(rootCommonSrc, path.join(rootCommonDest, 'lib.sh'));
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Refreshes the SkillService cache and regenerates the agent skill catalog
|
|
364
|
+
* after a marketplace install or uninstall operation.
|
|
365
|
+
*
|
|
366
|
+
* This ensures newly installed skills are immediately available to agents
|
|
367
|
+
* without requiring a server restart.
|
|
368
|
+
*/
|
|
369
|
+
async function refreshSkillRegistrations() {
|
|
370
|
+
try {
|
|
371
|
+
const skillService = getSkillService();
|
|
372
|
+
await skillService.refresh();
|
|
373
|
+
}
|
|
374
|
+
catch (error) {
|
|
375
|
+
// Skill service may not be initialized yet (e.g., during CLI usage)
|
|
376
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
377
|
+
console.debug(`[marketplace] Failed to refresh skill service: ${msg}`);
|
|
378
|
+
}
|
|
379
|
+
try {
|
|
380
|
+
const catalogService = SkillCatalogService.getInstance();
|
|
381
|
+
await catalogService.generateAgentCatalog();
|
|
382
|
+
}
|
|
383
|
+
catch (error) {
|
|
384
|
+
// Catalog service may not be available in all contexts
|
|
385
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
386
|
+
console.debug(`[marketplace] Failed to regenerate agent catalog: ${msg}`);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
//# sourceMappingURL=marketplace-installer.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marketplace-installer.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/marketplace/marketplace-installer.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Messaging Services Barrel Export
|
|
3
|
+
*
|
|
4
|
+
* @module services/messaging
|
|
5
|
+
*/
|
|
6
|
+
export { MessageQueueService } from './message-queue.service.js';
|
|
7
|
+
export { QueueProcessorService } from './queue-processor.service.js';
|
|
8
|
+
export { ResponseRouterService } from './response-router.service.js';
|
|
9
|
+
export { ThreadStatusQueueService } from './thread-status-queue.service.js';
|
|
10
|
+
import type { MessageQueueService } from './message-queue.service.js';
|
|
11
|
+
/** Store the message queue instance for use by other services (e.g. MessageRouterService). */
|
|
12
|
+
export declare function setMessageQueueInstance(instance: MessageQueueService): void;
|
|
13
|
+
/** Get the stored message queue instance, or null if not set. */
|
|
14
|
+
export declare function getMessageQueueInstance(): MessageQueueService | null;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/messaging/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAKtE,8FAA8F;AAC9F,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAE3E;AAED,iEAAiE;AACjE,wBAAgB,uBAAuB,IAAI,mBAAmB,GAAG,IAAI,CAEpE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Messaging Services Barrel Export
|
|
3
|
+
*
|
|
4
|
+
* @module services/messaging
|
|
5
|
+
*/
|
|
6
|
+
export { MessageQueueService } from './message-queue.service.js';
|
|
7
|
+
export { QueueProcessorService } from './queue-processor.service.js';
|
|
8
|
+
export { ResponseRouterService } from './response-router.service.js';
|
|
9
|
+
export { ThreadStatusQueueService } from './thread-status-queue.service.js';
|
|
10
|
+
/** Module-level reference to the message queue instance (set by CrewlyServer on startup). */
|
|
11
|
+
let _mqInstance = null;
|
|
12
|
+
/** Store the message queue instance for use by other services (e.g. MessageRouterService). */
|
|
13
|
+
export function setMessageQueueInstance(instance) {
|
|
14
|
+
_mqInstance = instance;
|
|
15
|
+
}
|
|
16
|
+
/** Get the stored message queue instance, or null if not set. */
|
|
17
|
+
export function getMessageQueueInstance() {
|
|
18
|
+
return _mqInstance;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../backend/src/services/messaging/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAI5E,6FAA6F;AAC7F,IAAI,WAAW,GAA+B,IAAI,CAAC;AAEnD,8FAA8F;AAC9F,MAAM,UAAU,uBAAuB,CAAC,QAA6B;IACnE,WAAW,GAAG,QAAQ,CAAC;AACzB,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,uBAAuB;IACrC,OAAO,WAAW,CAAC;AACrB,CAAC"}
|