crewx 0.8.3-rc.3 → 0.8.3-rc.4

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.
Files changed (161) hide show
  1. package/package.json +7 -7
  2. package/packages/cli/package.json +1 -1
  3. package/server.js +1 -1
  4. package/dist-server/package.json +0 -3
  5. package/dist-server/packages/sdk/src/repository/base-sqlite-repository.js +0 -29
  6. package/dist-server/packages/sdk/src/repository/db.js +0 -20
  7. package/dist-server/packages/sdk/src/repository/errors.js +0 -16
  8. package/dist-server/packages/sdk/src/repository/index.js +0 -26
  9. package/dist-server/packages/sdk/src/repository/migrate.js +0 -30
  10. package/dist-server/packages/sdk/src/repository/request-log.repository.js +0 -114
  11. package/dist-server/packages/sdk/src/repository/span.repository.js +0 -95
  12. package/dist-server/packages/sdk/src/repository/task.repository.js +0 -636
  13. package/dist-server/packages/sdk/src/repository/thread-box.repository.js +0 -151
  14. package/dist-server/packages/sdk/src/repository/thread.repository.js +0 -502
  15. package/dist-server/packages/sdk/src/repository/tool-call.repository.js +0 -104
  16. package/dist-server/packages/sdk/src/repository/workspace.repository.js +0 -305
  17. package/dist-server/packages/sdk/src/schema/index.js +0 -23
  18. package/dist-server/packages/sdk/src/schema/request-logs.js +0 -28
  19. package/dist-server/packages/sdk/src/schema/spans.js +0 -23
  20. package/dist-server/packages/sdk/src/schema/tasks.js +0 -54
  21. package/dist-server/packages/sdk/src/schema/thread-boxes.js +0 -22
  22. package/dist-server/packages/sdk/src/schema/threads.js +0 -21
  23. package/dist-server/packages/sdk/src/schema/tool-calls.js +0 -20
  24. package/dist-server/packages/sdk/src/schema/workspaces.js +0 -14
  25. package/dist-server/packages/sdk/src/utils/workspace.js +0 -57
  26. /package/dist-server/{src/server/adapters → adapters}/adapter.module.js +0 -0
  27. /package/dist-server/{src/server/adapters → adapters}/adapter.service.js +0 -0
  28. /package/dist-server/{src/server/adapters → adapters}/http-router.service.js +0 -0
  29. /package/dist-server/{src/server/app.module.js → app.module.js} +0 -0
  30. /package/dist-server/{src/server/bootstrap → bootstrap}/crewx-server.js +0 -0
  31. /package/dist-server/{src/server/common → common}/decorators/project.decorator.js +0 -0
  32. /package/dist-server/{src/server/common → common}/decorators/workspace.decorator.js +0 -0
  33. /package/dist-server/{src/server/common → common}/interceptor/api-id-header.interceptor.js +0 -0
  34. /package/dist-server/{src/server/common → common}/interceptor/http-logging.interceptor.js +0 -0
  35. /package/dist-server/{src/server/common → common}/limits/defaults.js +0 -0
  36. /package/dist-server/{src/server/common → common}/limits/limits-provider.js +0 -0
  37. /package/dist-server/{src/server/common → common}/limits/limits.controller.js +0 -0
  38. /package/dist-server/{src/server/common → common}/limits/limits.module.js +0 -0
  39. /package/dist-server/{src/server/common → common}/limits/local-limits.provider.js +0 -0
  40. /package/dist-server/{src/server/common → common}/middleware/workspace.middleware.js +0 -0
  41. /package/dist-server/{src/server/common → common}/repository.exception-filter.js +0 -0
  42. /package/dist-server/{src/server/common → common}/workspace-context.store.js +0 -0
  43. /package/dist-server/{src/server/domain → domain}/agent/agent.controller.js +0 -0
  44. /package/dist-server/{src/server/domain → domain}/agent/agent.module.js +0 -0
  45. /package/dist-server/{src/server/domain → domain}/agent/agent.service.js +0 -0
  46. /package/dist-server/{src/server/domain → domain}/agent/agent.types.js +0 -0
  47. /package/dist-server/{src/server/domain → domain}/agent/dto/create-agent.dto.js +0 -0
  48. /package/dist-server/{src/server/domain → domain}/agent/dto/preview-prompt.dto.js +0 -0
  49. /package/dist-server/{src/server/domain → domain}/agent/dto/update-agent.dto.js +0 -0
  50. /package/dist-server/{src/server/domain → domain}/agent/template-processor.service.js +0 -0
  51. /package/dist-server/{src/server/domain → domain}/box/box.controller.js +0 -0
  52. /package/dist-server/{src/server/domain → domain}/box/box.module.js +0 -0
  53. /package/dist-server/{src/server/domain → domain}/box/box.service.js +0 -0
  54. /package/dist-server/{src/server/domain → domain}/box/dto/create-box.dto.js +0 -0
  55. /package/dist-server/{src/server/domain → domain}/cli/cli.controller.js +0 -0
  56. /package/dist-server/{src/server/domain → domain}/cli/cli.module.js +0 -0
  57. /package/dist-server/{src/server/domain → domain}/cli/cli.service.js +0 -0
  58. /package/dist-server/{src/server/domain → domain}/cli/dto/update-cli.dto.js +0 -0
  59. /package/dist-server/{src/server/domain → domain}/doc/doc.controller.js +0 -0
  60. /package/dist-server/{src/server/domain → domain}/doc/doc.module.js +0 -0
  61. /package/dist-server/{src/server/domain → domain}/doc/doc.service.js +0 -0
  62. /package/dist-server/{src/server/domain → domain}/doc/dto/doc.dto.js +0 -0
  63. /package/dist-server/{src/server/domain → domain}/document/document.controller.js +0 -0
  64. /package/dist-server/{src/server/domain → domain}/document/document.module.js +0 -0
  65. /package/dist-server/{src/server/domain → domain}/document/document.service.js +0 -0
  66. /package/dist-server/{src/server/domain → domain}/document/dto/register-document.dto.js +0 -0
  67. /package/dist-server/{src/server/domain → domain}/fs/dto/tree-node.dto.js +0 -0
  68. /package/dist-server/{src/server/domain → domain}/fs/dto/tree-query.dto.js +0 -0
  69. /package/dist-server/{src/server/domain → domain}/fs/fs.controller.js +0 -0
  70. /package/dist-server/{src/server/domain → domain}/fs/fs.module.js +0 -0
  71. /package/dist-server/{src/server/domain → domain}/fs/fs.service.js +0 -0
  72. /package/dist-server/{src/server/domain → domain}/git/git.module.js +0 -0
  73. /package/dist-server/{src/server/domain → domain}/git/git.service.js +0 -0
  74. /package/dist-server/{src/server/domain → domain}/health/health.controller.js +0 -0
  75. /package/dist-server/{src/server/domain → domain}/health/health.module.js +0 -0
  76. /package/dist-server/{src/server/domain → domain}/knowledge/dto/graph-knowledge.dto.js +0 -0
  77. /package/dist-server/{src/server/domain → domain}/knowledge/dto/knowledge.dto.js +0 -0
  78. /package/dist-server/{src/server/domain → domain}/knowledge/knowledge.controller.js +0 -0
  79. /package/dist-server/{src/server/domain → domain}/knowledge/knowledge.module.js +0 -0
  80. /package/dist-server/{src/server/domain → domain}/knowledge/knowledge.service.js +0 -0
  81. /package/dist-server/{src/server/domain → domain}/mcp/crewx-tool.factory.js +0 -0
  82. /package/dist-server/{src/server/domain → domain}/mcp/mcp-auth.guard.js +0 -0
  83. /package/dist-server/{src/server/domain → domain}/mcp/mcp.constants.js +0 -0
  84. /package/dist-server/{src/server/domain → domain}/mcp/mcp.controller.js +0 -0
  85. /package/dist-server/{src/server/domain → domain}/mcp/mcp.dto.js +0 -0
  86. /package/dist-server/{src/server/domain → domain}/mcp/mcp.module.js +0 -0
  87. /package/dist-server/{src/server/domain → domain}/mcp/mcp.service.js +0 -0
  88. /package/dist-server/{src/server/domain → domain}/message/dto/list-messages.dto.js +0 -0
  89. /package/dist-server/{src/server/domain → domain}/message/dto/send-message.dto.js +0 -0
  90. /package/dist-server/{src/server/domain → domain}/message/message.controller.js +0 -0
  91. /package/dist-server/{src/server/domain → domain}/message/message.module.js +0 -0
  92. /package/dist-server/{src/server/domain → domain}/message/message.service.js +0 -0
  93. /package/dist-server/{src/server/domain → domain}/onboarding/onboarding.controller.js +0 -0
  94. /package/dist-server/{src/server/domain → domain}/onboarding/onboarding.module.js +0 -0
  95. /package/dist-server/{src/server/domain → domain}/onboarding/onboarding.service.js +0 -0
  96. /package/dist-server/{src/server/domain → domain}/onboarding/onboarding.types.js +0 -0
  97. /package/dist-server/{src/server/domain → domain}/onboarding/presets/custom.js +0 -0
  98. /package/dist-server/{src/server/domain → domain}/onboarding/presets/dev-team.js +0 -0
  99. /package/dist-server/{src/server/domain → domain}/onboarding/presets/index.js +0 -0
  100. /package/dist-server/{src/server/domain → domain}/onboarding/presets/marketing-team.js +0 -0
  101. /package/dist-server/{src/server/domain → domain}/onboarding/presets/planning-team.js +0 -0
  102. /package/dist-server/{src/server/domain → domain}/onboarding/presets/solo.js +0 -0
  103. /package/dist-server/{src/server/domain → domain}/project/dto/create-project.dto.js +0 -0
  104. /package/dist-server/{src/server/domain → domain}/project/dto/update-project.dto.js +0 -0
  105. /package/dist-server/{src/server/domain → domain}/project/project.controller.js +0 -0
  106. /package/dist-server/{src/server/domain → domain}/project/project.module.js +0 -0
  107. /package/dist-server/{src/server/domain → domain}/project/project.service.js +0 -0
  108. /package/dist-server/{src/server/domain → domain}/skill/dto/add-registry.dto.js +0 -0
  109. /package/dist-server/{src/server/domain → domain}/skill/dto/install-skill.dto.js +0 -0
  110. /package/dist-server/{src/server/domain → domain}/skill/skill.controller.js +0 -0
  111. /package/dist-server/{src/server/domain → domain}/skill/skill.module.js +0 -0
  112. /package/dist-server/{src/server/domain → domain}/skill/skill.service.js +0 -0
  113. /package/dist-server/{src/server/domain → domain}/task/dto/all-tasks.dto.js +0 -0
  114. /package/dist-server/{src/server/domain → domain}/task/dto/list-tasks.dto.js +0 -0
  115. /package/dist-server/{src/server/domain → domain}/task/dto/search-tasks.dto.js +0 -0
  116. /package/dist-server/{src/server/domain → domain}/task/dto/send-message.dto.js +0 -0
  117. /package/dist-server/{src/server/domain → domain}/task/dto/task-status.dto.js +0 -0
  118. /package/dist-server/{src/server/domain → domain}/task/dto/workspace-usage.dto.js +0 -0
  119. /package/dist-server/{src/server/domain → domain}/task/task.constants.js +0 -0
  120. /package/dist-server/{src/server/domain → domain}/task/task.controller.js +0 -0
  121. /package/dist-server/{src/server/domain → domain}/task/task.module.js +0 -0
  122. /package/dist-server/{src/server/domain → domain}/task/task.service.js +0 -0
  123. /package/dist-server/{src/server/domain → domain}/thread/dto/build-context.dto.js +0 -0
  124. /package/dist-server/{src/server/domain → domain}/thread/dto/list-messages.dto.js +0 -0
  125. /package/dist-server/{src/server/domain → domain}/thread/dto/list-threads.dto.js +0 -0
  126. /package/dist-server/{src/server/domain → domain}/thread/dto/search-threads.dto.js +0 -0
  127. /package/dist-server/{src/server/domain → domain}/thread/dto/update-thread.dto.js +0 -0
  128. /package/dist-server/{src/server/domain → domain}/thread/thread.controller.js +0 -0
  129. /package/dist-server/{src/server/domain → domain}/thread/thread.module.js +0 -0
  130. /package/dist-server/{src/server/domain → domain}/thread/thread.service.js +0 -0
  131. /package/dist-server/{src/server/domain → domain}/usage/usage.controller.js +0 -0
  132. /package/dist-server/{src/server/domain → domain}/usage/usage.module.js +0 -0
  133. /package/dist-server/{src/server/domain → domain}/usage/usage.service.js +0 -0
  134. /package/dist-server/{src/server/domain → domain}/usage/usage.types.js +0 -0
  135. /package/dist-server/{src/server/domain → domain}/wbs/wbs.controller.js +0 -0
  136. /package/dist-server/{src/server/domain → domain}/wbs/wbs.module.js +0 -0
  137. /package/dist-server/{src/server/domain → domain}/wbs/wbs.service.js +0 -0
  138. /package/dist-server/{src/server/domain → domain}/workflow/workflow.controller.js +0 -0
  139. /package/dist-server/{src/server/domain → domain}/workflow/workflow.module.js +0 -0
  140. /package/dist-server/{src/server/domain → domain}/workflow/workflow.service.js +0 -0
  141. /package/dist-server/{src/server/domain → domain}/workspace/dto/create-workspace.dto.js +0 -0
  142. /package/dist-server/{src/server/domain → domain}/workspace/dto/switch-workspace.dto.js +0 -0
  143. /package/dist-server/{src/server/domain → domain}/workspace/dto/workspace-info.dto.js +0 -0
  144. /package/dist-server/{src/server/domain → domain}/workspace/workspace.controller.js +0 -0
  145. /package/dist-server/{src/server/domain → domain}/workspace/workspace.module.js +0 -0
  146. /package/dist-server/{src/server/domain → domain}/workspace/workspace.service.js +0 -0
  147. /package/dist-server/{src/server/main.js → main.js} +0 -0
  148. /package/dist-server/{src/server/modules → modules}/crewx-pool.service.js +0 -0
  149. /package/dist-server/{src/server/modules → modules}/crewx.module.js +0 -0
  150. /package/dist-server/{src/server/repository → repository}/base-sqlite.repository.js +0 -0
  151. /package/dist-server/{src/server/repository → repository}/box.repository.js +0 -0
  152. /package/dist-server/{src/server/repository → repository}/message.repository.js +0 -0
  153. /package/dist-server/{src/server/repository → repository}/project.repository.js +0 -0
  154. /package/dist-server/{src/server/repository → repository}/repository.module.js +0 -0
  155. /package/dist-server/{src/server/repository → repository}/request-log.repository.js +0 -0
  156. /package/dist-server/{src/server/repository → repository}/task.repository.js +0 -0
  157. /package/dist-server/{src/server/repository → repository}/thread.repository.js +0 -0
  158. /package/dist-server/{src/server/shared → shared}/crewx-home.js +0 -0
  159. /package/dist-server/{src/server/shared → shared}/crewx-state.js +0 -0
  160. /package/dist-server/{src/server/test-utils → test-utils}/compat-database.js +0 -0
  161. /package/dist-server/{src/server/utils → utils}/tokenizer.js +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "crewx",
3
- "version": "0.8.3-rc.3",
3
+ "version": "0.8.3-rc.4",
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": {
@@ -95,17 +95,17 @@
95
95
  "yargs": "^17.7.0",
96
96
  "zod": "^3.22.0",
97
97
  "zustand": "^4.5.0",
98
- "@crewx/cli": "0.8.3-rc.3",
99
- "@crewx/doc": "0.1.7",
98
+ "@crewx/cli": "0.8.3-rc.4",
100
99
  "@crewx/cron": "0.1.7",
101
100
  "@crewx/knowledge-core": "0.1.5",
101
+ "@crewx/doc": "0.1.7",
102
+ "@crewx/sdk": "0.8.3-rc.1",
102
103
  "@crewx/memory": "0.1.9",
104
+ "@crewx/search": "0.1.8",
103
105
  "@crewx/shared": "0.0.4",
104
- "@crewx/wbs": "0.1.8",
105
- "@crewx/sdk": "0.8.3-rc.0",
106
- "@crewx/workflow": "0.3.13",
107
106
  "@crewx/skill": "0.1.7",
108
- "@crewx/search": "0.1.8"
107
+ "@crewx/workflow": "0.3.13",
108
+ "@crewx/wbs": "0.1.8"
109
109
  },
110
110
  "devDependencies": {
111
111
  "@nestjs/cli": "^11.0.16",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewx/cli",
3
- "version": "0.8.3-rc.3",
3
+ "version": "0.8.3-rc.4",
4
4
  "license": "UNLICENSED",
5
5
  "engines": {
6
6
  "node": ">=20.19.0"
package/server.js CHANGED
@@ -74,7 +74,7 @@ if (args[0] === 'cli') {
74
74
  }
75
75
 
76
76
  // Start NestJS server with proxy PATH injected
77
- // tsc outputs to dist-server/ (rootDir: src/server in tsconfig.server.json)
77
+ // tsc outputs flatten to dist-server/main.js when tsconfig.server.json paths target node_modules/@crewx/sdk/dist/* (not source).
78
78
  const distServerPath = join(__dirname, 'dist-server', 'main.js');
79
79
  const devServerPath = join(__dirname, 'src', 'server', 'main.ts');
80
80
  const serverEnv = {
@@ -1,3 +0,0 @@
1
- {
2
- "type": "commonjs"
3
- }
@@ -1,29 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.BaseSqliteRepository = void 0;
7
- const fs_1 = require("fs");
8
- const path_1 = require("path");
9
- const os_1 = __importDefault(require("os"));
10
- class BaseSqliteRepository {
11
- /** Resolve DB path: CREWX_DB → CREWX_TRACES_DB → ~/.crewx/crewx.db */
12
- resolveDbPath() {
13
- if (process.env.CREWX_DB)
14
- return process.env.CREWX_DB;
15
- if (process.env.CREWX_TRACES_DB)
16
- return process.env.CREWX_TRACES_DB;
17
- return (0, path_1.join)(os_1.default.homedir(), '.crewx', 'crewx.db');
18
- }
19
- resolveDbPaths() {
20
- return [this.resolveDbPath()];
21
- }
22
- isMissingTableError(error) {
23
- return error instanceof Error && /no such table:/i.test(error.message);
24
- }
25
- dbExists(dbPath) {
26
- return (0, fs_1.existsSync)(dbPath ?? this.resolveDbPath());
27
- }
28
- }
29
- exports.BaseSqliteRepository = BaseSqliteRepository;
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.openDrizzleDb = openDrizzleDb;
4
- // Lazy-load better-sqlite3 and drizzle-orm/better-sqlite3 to preserve WI-001 baseline:
5
- // main entry import of @crewx/sdk must not pull in native sqlite bindings.
6
- function openDrizzleDb(dbPath) {
7
- /* eslint-disable @typescript-eslint/no-require-imports */
8
- const Database = require('better-sqlite3');
9
- const { drizzle } = require('drizzle-orm/better-sqlite3');
10
- /* eslint-enable @typescript-eslint/no-require-imports */
11
- const sqlite = new Database(dbPath);
12
- sqlite.exec('PRAGMA journal_mode = WAL');
13
- sqlite.exec('PRAGMA busy_timeout = 5000');
14
- sqlite.exec('PRAGMA foreign_keys = ON');
15
- return {
16
- db: drizzle(sqlite),
17
- runRaw: (sqlStr, params = []) => sqlite.prepare(sqlStr).run(...params),
18
- close: () => sqlite.close(),
19
- };
20
- }
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RepositoryError = void 0;
4
- class RepositoryError extends Error {
5
- code;
6
- cause;
7
- constructor(code, message, cause) {
8
- super(message);
9
- this.name = 'RepositoryError';
10
- this.code = code;
11
- this.cause = cause;
12
- // restore prototype chain (ES5 compat)
13
- Object.setPrototypeOf(this, new.target.prototype);
14
- }
15
- }
16
- exports.RepositoryError = RepositoryError;
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RequestLogRepository = exports.ThreadBoxRepository = exports.ToolCallRepository = exports.SpanRepository = exports.ThreadRepository = exports.TaskRepository = exports.runMigrationsOnce = exports.runMigrations = exports.openDrizzleDb = exports.WorkspaceRepository = exports.RepositoryError = exports.BaseSqliteRepository = void 0;
4
- var base_sqlite_repository_js_1 = require("./base-sqlite-repository.js");
5
- Object.defineProperty(exports, "BaseSqliteRepository", { enumerable: true, get: function () { return base_sqlite_repository_js_1.BaseSqliteRepository; } });
6
- var errors_js_1 = require("./errors.js");
7
- Object.defineProperty(exports, "RepositoryError", { enumerable: true, get: function () { return errors_js_1.RepositoryError; } });
8
- var workspace_repository_js_1 = require("./workspace.repository.js");
9
- Object.defineProperty(exports, "WorkspaceRepository", { enumerable: true, get: function () { return workspace_repository_js_1.WorkspaceRepository; } });
10
- var db_js_1 = require("./db.js");
11
- Object.defineProperty(exports, "openDrizzleDb", { enumerable: true, get: function () { return db_js_1.openDrizzleDb; } });
12
- var migrate_js_1 = require("./migrate.js");
13
- Object.defineProperty(exports, "runMigrations", { enumerable: true, get: function () { return migrate_js_1.runMigrations; } });
14
- Object.defineProperty(exports, "runMigrationsOnce", { enumerable: true, get: function () { return migrate_js_1.runMigrationsOnce; } });
15
- var task_repository_js_1 = require("./task.repository.js");
16
- Object.defineProperty(exports, "TaskRepository", { enumerable: true, get: function () { return task_repository_js_1.TaskRepository; } });
17
- var thread_repository_js_1 = require("./thread.repository.js");
18
- Object.defineProperty(exports, "ThreadRepository", { enumerable: true, get: function () { return thread_repository_js_1.ThreadRepository; } });
19
- var span_repository_js_1 = require("./span.repository.js");
20
- Object.defineProperty(exports, "SpanRepository", { enumerable: true, get: function () { return span_repository_js_1.SpanRepository; } });
21
- var tool_call_repository_js_1 = require("./tool-call.repository.js");
22
- Object.defineProperty(exports, "ToolCallRepository", { enumerable: true, get: function () { return tool_call_repository_js_1.ToolCallRepository; } });
23
- var thread_box_repository_js_1 = require("./thread-box.repository.js");
24
- Object.defineProperty(exports, "ThreadBoxRepository", { enumerable: true, get: function () { return thread_box_repository_js_1.ThreadBoxRepository; } });
25
- var request_log_repository_js_1 = require("./request-log.repository.js");
26
- Object.defineProperty(exports, "RequestLogRepository", { enumerable: true, get: function () { return request_log_repository_js_1.RequestLogRepository; } });
@@ -1,30 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.runMigrations = runMigrations;
7
- exports.runMigrationsOnce = runMigrationsOnce;
8
- const path_1 = __importDefault(require("path"));
9
- const fs_1 = require("fs");
10
- // Per-process cache: avoids redundant migrate calls for the same dbPath.
11
- // drizzle migrate is idempotent (checks __drizzle_migrations table), so
12
- // re-running after a hot reload is safe — this is just a performance guard.
13
- const migratedPaths = new Set();
14
- function runMigrations(db) {
15
- /* eslint-disable @typescript-eslint/no-require-imports */
16
- const { migrate } = require('drizzle-orm/better-sqlite3/migrator');
17
- /* eslint-enable @typescript-eslint/no-require-imports */
18
- // After build: dist/repository → ../migrations = dist/migrations (npm production path)
19
- const builtPath = path_1.default.join(__dirname, '../migrations');
20
- // During vitest from TypeScript source: src/repository → ../migrations = src/migrations
21
- // Fallback to monorepo drizzle/migrations if src/migrations doesn't exist
22
- const migrationsFolder = (0, fs_1.existsSync)(builtPath) ? builtPath : path_1.default.join(__dirname, '../../../../drizzle/migrations');
23
- migrate(db, { migrationsFolder });
24
- }
25
- function runMigrationsOnce(db, dbPath) {
26
- if (migratedPaths.has(dbPath))
27
- return;
28
- runMigrations(db);
29
- migratedPaths.add(dbPath);
30
- }
@@ -1,114 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RequestLogRepository = void 0;
4
- const fs_1 = require("fs");
5
- const path_1 = require("path");
6
- const drizzle_orm_1 = require("drizzle-orm");
7
- const crypto_1 = require("crypto");
8
- const base_sqlite_repository_js_1 = require("./base-sqlite-repository.js");
9
- const db_js_1 = require("./db.js");
10
- const migrate_js_1 = require("./migrate.js");
11
- const errors_js_1 = require("./errors.js");
12
- const index_js_1 = require("../schema/index.js");
13
- // ---- repository ----
14
- class RequestLogRepository extends base_sqlite_repository_js_1.BaseSqliteRepository {
15
- dbPath;
16
- constructor(opts = {}) {
17
- super();
18
- if (opts.dbPath) {
19
- this.dbPath = opts.dbPath;
20
- }
21
- else if (opts.dbRoot) {
22
- this.dbPath = (0, path_1.join)(opts.dbRoot, '.crewx', 'crewx.db');
23
- }
24
- }
25
- resolveDbPath() {
26
- if (this.dbPath)
27
- return this.dbPath;
28
- return super.resolveDbPath();
29
- }
30
- openHandle(writable) {
31
- const p = this.resolveDbPath();
32
- if (!writable) {
33
- if (!(0, fs_1.existsSync)(p))
34
- throw new errors_js_1.RepositoryError('NOT_FOUND', 'Database not found');
35
- }
36
- else {
37
- const dir = (0, path_1.dirname)(p);
38
- if (!(0, fs_1.existsSync)(dir))
39
- (0, fs_1.mkdirSync)(dir, { recursive: true });
40
- }
41
- const handle = (0, db_js_1.openDrizzleDb)(p);
42
- if (writable) {
43
- try {
44
- (0, migrate_js_1.runMigrationsOnce)(handle.db, p);
45
- }
46
- catch (e) {
47
- handle.close();
48
- throw e;
49
- }
50
- }
51
- return handle;
52
- }
53
- /**
54
- * Bulk insert request log entries inside a single transaction.
55
- */
56
- bulkInsert(entries) {
57
- if (entries.length === 0)
58
- return;
59
- const handle = this.openHandle(true);
60
- try {
61
- const now = new Date().toISOString();
62
- handle.db.transaction((tx) => {
63
- for (const entry of entries) {
64
- tx.insert(index_js_1.request_logs).values({
65
- id: (0, crypto_1.randomUUID)(),
66
- path: entry.path,
67
- method: entry.method,
68
- status_code: entry.statusCode,
69
- duration_ms: entry.durationMs,
70
- ip: entry.ip ?? null,
71
- request_headers: entry.requestHeaders ?? null,
72
- response_headers: entry.responseHeaders ?? null,
73
- request_body: entry.requestBody ?? null,
74
- response_body: entry.responseBody ?? null,
75
- query: entry.query ?? null,
76
- user_id: entry.userId ?? null,
77
- project_id: entry.projectId ?? null,
78
- partition_key: entry.partitionKey ?? 'default',
79
- timestamp: now,
80
- metadata: entry.metadata ?? null,
81
- }).run();
82
- }
83
- });
84
- }
85
- catch (e) {
86
- if (e instanceof errors_js_1.RepositoryError)
87
- throw e;
88
- throw new errors_js_1.RepositoryError('DB_ERROR', 'Failed to bulk insert request logs', e);
89
- }
90
- finally {
91
- handle.close();
92
- }
93
- }
94
- findRecent(limit = 100) {
95
- if (!this.dbExists())
96
- return [];
97
- const handle = this.openHandle(false);
98
- try {
99
- return handle.db
100
- .select()
101
- .from(index_js_1.request_logs)
102
- .orderBy((0, drizzle_orm_1.desc)(index_js_1.request_logs.timestamp))
103
- .limit(limit)
104
- .all();
105
- }
106
- catch (e) {
107
- throw new errors_js_1.RepositoryError('DB_ERROR', 'Failed to find recent request logs', e);
108
- }
109
- finally {
110
- handle.close();
111
- }
112
- }
113
- }
114
- exports.RequestLogRepository = RequestLogRepository;
@@ -1,95 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SpanRepository = void 0;
4
- const fs_1 = require("fs");
5
- const path_1 = require("path");
6
- const drizzle_orm_1 = require("drizzle-orm");
7
- const base_sqlite_repository_js_1 = require("./base-sqlite-repository.js");
8
- const db_js_1 = require("./db.js");
9
- const migrate_js_1 = require("./migrate.js");
10
- const errors_js_1 = require("./errors.js");
11
- const index_js_1 = require("../schema/index.js");
12
- // ---- repository ----
13
- class SpanRepository extends base_sqlite_repository_js_1.BaseSqliteRepository {
14
- dbPath;
15
- constructor(opts = {}) {
16
- super();
17
- if (opts.dbPath) {
18
- this.dbPath = opts.dbPath;
19
- }
20
- else if (opts.dbRoot) {
21
- this.dbPath = (0, path_1.join)(opts.dbRoot, '.crewx', 'crewx.db');
22
- }
23
- }
24
- resolveDbPath() {
25
- if (this.dbPath)
26
- return this.dbPath;
27
- return super.resolveDbPath();
28
- }
29
- openHandle(writable) {
30
- const p = this.resolveDbPath();
31
- if (!writable) {
32
- if (!(0, fs_1.existsSync)(p))
33
- throw new errors_js_1.RepositoryError('NOT_FOUND', 'Database not found');
34
- }
35
- else {
36
- const dir = (0, path_1.dirname)(p);
37
- if (!(0, fs_1.existsSync)(dir))
38
- (0, fs_1.mkdirSync)(dir, { recursive: true });
39
- }
40
- const handle = (0, db_js_1.openDrizzleDb)(p);
41
- if (writable) {
42
- try {
43
- (0, migrate_js_1.runMigrationsOnce)(handle.db, p);
44
- }
45
- catch (e) {
46
- handle.close();
47
- throw e;
48
- }
49
- }
50
- return handle;
51
- }
52
- insertSpan(opts) {
53
- const handle = this.openHandle(true);
54
- try {
55
- handle.db.insert(index_js_1.spans).values(opts).run();
56
- }
57
- catch (e) {
58
- if (e instanceof errors_js_1.RepositoryError)
59
- throw e;
60
- throw new errors_js_1.RepositoryError('DB_ERROR', 'Failed to insert span', e);
61
- }
62
- finally {
63
- handle.close();
64
- }
65
- }
66
- findByTaskId(taskId) {
67
- if (!this.dbExists())
68
- return [];
69
- const handle = this.openHandle(false);
70
- try {
71
- return handle.db.select().from(index_js_1.spans).where((0, drizzle_orm_1.eq)(index_js_1.spans.task_id, taskId)).all();
72
- }
73
- catch (e) {
74
- throw new errors_js_1.RepositoryError('DB_ERROR', 'Failed to find spans by task id', e);
75
- }
76
- finally {
77
- handle.close();
78
- }
79
- }
80
- findById(spanId) {
81
- if (!this.dbExists())
82
- return undefined;
83
- const handle = this.openHandle(false);
84
- try {
85
- return handle.db.select().from(index_js_1.spans).where((0, drizzle_orm_1.eq)(index_js_1.spans.id, spanId)).limit(1).get() ?? undefined;
86
- }
87
- catch (e) {
88
- throw new errors_js_1.RepositoryError('DB_ERROR', 'Failed to find span by id', e);
89
- }
90
- finally {
91
- handle.close();
92
- }
93
- }
94
- }
95
- exports.SpanRepository = SpanRepository;