crewx 0.8.7-rc.14 → 0.8.7-rc.15

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.
@@ -384,7 +384,7 @@ let MarketService = MarketService_1 = class MarketService {
384
384
  const relPath = file.path.slice(skillPrefix.length);
385
385
  // Path traversal guard
386
386
  const destPath = (0, path_1.resolve)((0, path_1.join)(tempDir, relPath));
387
- if (!destPath.startsWith(resolvedTempDir + '/') && destPath !== resolvedTempDir) {
387
+ if (!destPath.startsWith(resolvedTempDir + path_1.sep) && destPath !== resolvedTempDir) {
388
388
  throw new Error(`Path traversal detected: ${relPath}`);
389
389
  }
390
390
  const destFileDir = (0, path_1.dirname)(destPath);
@@ -583,12 +583,12 @@ let MarketService = MarketService_1 = class MarketService {
583
583
  }
584
584
  // --- Installed items ---
585
585
  resolveItemSource(dir, projectRoot) {
586
- const nmDir = (0, path_1.join)(projectRoot, 'node_modules') + '/';
586
+ const nmDir = (0, path_1.join)(projectRoot, 'node_modules') + path_1.sep;
587
587
  if (!dir.startsWith(nmDir) && dir !== (0, path_1.join)(projectRoot, 'node_modules')) {
588
588
  return 'local';
589
589
  }
590
590
  const relFromNm = dir.slice(nmDir.length);
591
- return relFromNm.startsWith('@crewx/') ? 'builtin' : 'node_modules';
591
+ return relFromNm.startsWith(`@crewx${path_1.sep}`) ? 'builtin' : 'node_modules';
592
592
  }
593
593
  async listInstalledMarkets() {
594
594
  const projectRoot = (0, path_1.dirname)(this.skillsDir);
@@ -9,7 +9,6 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  var McpService_1;
12
- var _a;
13
12
  Object.defineProperty(exports, "__esModule", { value: true });
14
13
  exports.McpService = void 0;
15
14
  const common_1 = require("@nestjs/common");
@@ -671,7 +670,8 @@ exports.McpService = McpService = McpService_1 = __decorate([
671
670
  __metadata("design:paramtypes", [crewx_pool_service_js_1.CrewxPoolService,
672
671
  project_repository_js_1.ProjectRepository,
673
672
  browser_session_store_js_1.BrowserSessionStore,
674
- tool_router_service_js_1.ToolRouterService, typeof (_a = typeof repository_1.ToolCallRepository !== "undefined" && repository_1.ToolCallRepository) === "function" ? _a : Object])
673
+ tool_router_service_js_1.ToolRouterService,
674
+ repository_1.ToolCallRepository])
675
675
  ], McpService);
676
676
  function normalizeContent(result) {
677
677
  if (Array.isArray(result.content) && result.content.length > 0) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "crewx",
3
- "version": "0.8.7-rc.14",
3
+ "version": "0.8.7-rc.15",
4
4
  "description": "CrewX — AI agent team dashboard with Electron UI and CLI (Web + Electron + Global CLI)",
5
5
  "main": "server.js",
6
6
  "bin": {
@@ -74,17 +74,17 @@
74
74
  "wink-nlp-utils": "2.1.0",
75
75
  "yargs": "17.7.0",
76
76
  "zod": "3.25.76",
77
- "@crewx/cli": "0.8.7-rc.14",
78
- "@crewx/doc": "0.1.8",
77
+ "@crewx/cli": "0.8.7-rc.15",
78
+ "@crewx/knowledge-core": "0.1.8",
79
79
  "@crewx/cron": "0.1.8",
80
- "@crewx/knowledge-core": "0.1.7",
81
- "@crewx/memory": "0.1.12",
80
+ "@crewx/memory": "0.1.13",
81
+ "@crewx/doc": "0.1.8",
82
+ "@crewx/skill": "0.1.11",
83
+ "@crewx/sdk": "0.8.7-rc.15",
84
+ "@crewx/wbs": "0.1.9",
82
85
  "@crewx/search": "0.1.9",
83
- "@crewx/shared": "0.0.5",
84
- "@crewx/sdk": "0.8.7-rc.14",
85
86
  "@crewx/workflow": "0.3.18",
86
- "@crewx/skill": "0.1.10",
87
- "@crewx/wbs": "0.1.9"
87
+ "@crewx/shared": "0.0.5"
88
88
  },
89
89
  "devDependencies": {
90
90
  "@ccusage/codex": "0.0.1",
@@ -351,26 +351,6 @@ async function handleInit(opts) {
351
351
  catch (e) {
352
352
  throw new Error(`YAML_CREATE_FAILED: ${e.message}`);
353
353
  }
354
- for (const dir of ['.crewx/logs', '.claude/commands', 'docs/goal', 'docs/daily', 'docs/wi']) {
355
- try {
356
- (0, fs_1.mkdirSync)((0, path_1.join)(target, dir), { recursive: true });
357
- }
358
- catch (e) {
359
- errors.push(`MKDIR_FAILED:${dir}:${e.message}`);
360
- }
361
- }
362
- const docTemplates = [
363
- { dir: 'docs/goal', file: 'GOAL-TEMPLATE.md', content: GOAL_TEMPLATE },
364
- { dir: 'docs/daily', file: 'DAILY-TEMPLATE.md', content: DAILY_TEMPLATE },
365
- { dir: 'docs/wi', file: 'WI-TEMPLATE.md', content: WI_TEMPLATE },
366
- ];
367
- for (const t of docTemplates) {
368
- const fullPath = (0, path_1.join)(target, t.dir, t.file);
369
- if (!(0, fs_1.existsSync)(fullPath)) {
370
- (0, fs_1.writeFileSync)(fullPath, t.content, 'utf-8');
371
- console.log(`✅ ${t.dir}/ created (${t.file})`);
372
- }
373
- }
374
354
  if (!skipHook) {
375
355
  try {
376
356
  await (0, install_1.handleHookInstall)({ projectRoot: target, yes: true });
@@ -381,6 +361,28 @@ async function handleInit(opts) {
381
361
  }
382
362
  }
383
363
  }
364
+ // Always create docs dirs and templates, regardless of whether yaml was skipped
365
+ for (const dir of ['.crewx/logs', '.claude/commands', 'docs/goal', 'docs/daily', 'docs/wi']) {
366
+ try {
367
+ (0, fs_1.mkdirSync)((0, path_1.join)(target, dir), { recursive: true });
368
+ }
369
+ catch (e) {
370
+ errors.push(`MKDIR_FAILED:${dir}:${e.message}`);
371
+ }
372
+ }
373
+ const docTemplates = [
374
+ { dir: 'docs/goal', file: 'GOAL-TEMPLATE.md', content: GOAL_TEMPLATE },
375
+ { dir: 'docs/daily', file: 'DAILY-TEMPLATE.md', content: DAILY_TEMPLATE },
376
+ { dir: 'docs/wi', file: 'WI-TEMPLATE.md', content: WI_TEMPLATE },
377
+ ];
378
+ for (const t of docTemplates) {
379
+ const fullPath = (0, path_1.join)(target, t.dir, t.file);
380
+ if (force || !(0, fs_1.existsSync)(fullPath)) {
381
+ const action = (0, fs_1.existsSync)(fullPath) ? 'updated' : 'created';
382
+ (0, fs_1.writeFileSync)(fullPath, t.content, 'utf-8');
383
+ console.log(`✅ ${t.dir}/ ${action} (${t.file})`);
384
+ }
385
+ }
384
386
  // Always register workspace in ~/.crewx/crewx.db (best-effort, idempotent)
385
387
  let workspaceId;
386
388
  let slug;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewx/cli",
3
- "version": "0.8.7-rc.14",
3
+ "version": "0.8.7-rc.15",
4
4
  "license": "UNLICENSED",
5
5
  "engines": {
6
6
  "node": ">=20.19.0"