@crewx/sdk 0.8.0-rc.79 → 0.8.0-rc.82

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 (292) hide show
  1. package/dist/__tests__/adapter/context-builder.test.d.ts +1 -0
  2. package/dist/__tests__/adapter/plugin-helper.test.d.ts +1 -0
  3. package/dist/__tests__/adapter/registration-integration.test.d.ts +1 -0
  4. package/dist/__tests__/adapter/scoped-store.test.d.ts +1 -0
  5. package/dist/__tests__/plugins/conversation.test.d.ts +1 -0
  6. package/dist/__tests__/testing/createMockContext.test.d.ts +1 -0
  7. package/dist/adapter/context-builder.d.ts +0 -9
  8. package/dist/adapter/index.d.ts +0 -1
  9. package/dist/adapter/plugin-helper.d.ts +0 -7
  10. package/dist/adapter/scoped-store.d.ts +0 -10
  11. package/dist/adapter/types.d.ts +0 -7
  12. package/dist/agent/resolver.d.ts +0 -13
  13. package/dist/boxing/box-storage.interface.d.ts +0 -4
  14. package/dist/boxing/box.service.d.ts +0 -4
  15. package/dist/boxing/box.types.d.ts +0 -4
  16. package/dist/boxing/context-builder.d.ts +0 -4
  17. package/dist/client/CrewxClient.d.ts +0 -32
  18. package/dist/client/index.d.ts +0 -1
  19. package/dist/client/index.js +1 -6
  20. package/dist/config/loader.browser.d.ts +0 -8
  21. package/dist/config/loader.d.ts +0 -12
  22. package/dist/conversation/__tests__/sqlite-provider.test.d.ts +1 -0
  23. package/dist/conversation/__tests__/to-task-reader.test.d.ts +1 -0
  24. package/dist/conversation/index.d.ts +0 -1
  25. package/dist/conversation/sqlite-provider.d.ts +0 -9
  26. package/dist/conversation/to-task-reader.d.ts +0 -11
  27. package/dist/conversation/to-template-messages.d.ts +0 -13
  28. package/dist/conversation/types.d.ts +0 -58
  29. package/dist/esm/client/index.js +1 -2
  30. package/dist/esm/hooks/index.js +7 -6
  31. package/dist/esm/index.js +79 -60
  32. package/dist/esm/plugins/index.js +52 -0
  33. package/dist/esm/testing/index.js +1 -0
  34. package/dist/esm/tools/node/index.js +36 -54
  35. package/dist/events/TypedEventEmitter.d.ts +0 -24
  36. package/dist/events/types.d.ts +0 -43
  37. package/dist/facade/Crewx.browser.d.ts +0 -40
  38. package/dist/facade/Crewx.d.ts +0 -163
  39. package/dist/hooks/define.d.ts +0 -1
  40. package/dist/hooks/dispatch.d.ts +0 -12
  41. package/dist/hooks/index.d.ts +0 -1
  42. package/dist/hooks/index.js +7 -24
  43. package/dist/hooks/observer.d.ts +0 -1
  44. package/dist/hooks/plugin.d.ts +0 -1
  45. package/dist/hooks/tool-normalize.d.ts +0 -26
  46. package/dist/hooks/types.d.ts +0 -1
  47. package/dist/hooks/yaml-plugin.d.ts +0 -1
  48. package/dist/index.browser.d.ts +0 -7
  49. package/dist/index.browser.js +2 -25
  50. package/dist/index.d.ts +0 -4
  51. package/dist/index.js +79 -151
  52. package/dist/layout/loader.d.ts +0 -20
  53. package/dist/layout/props-validator.d.ts +0 -6
  54. package/dist/layout/renderer.d.ts +0 -24
  55. package/dist/layout/types.d.ts +0 -42
  56. package/dist/parallel/agent-runtime.d.ts +0 -11
  57. package/dist/parallel/helpers.d.ts +0 -1
  58. package/dist/parallel/index.d.ts +0 -1
  59. package/dist/parallel/parallel-runner.d.ts +0 -8
  60. package/dist/parallel/types.d.ts +0 -24
  61. package/dist/parsers/agent-call.util.d.ts +0 -3
  62. package/dist/parsers/claude.parser.d.ts +0 -8
  63. package/dist/parsers/codex.parser.d.ts +0 -8
  64. package/dist/parsers/copilot.parser.d.ts +0 -9
  65. package/dist/parsers/gemini.parser.d.ts +0 -10
  66. package/dist/parsers/opencode.parser.d.ts +0 -10
  67. package/dist/parsers/router.d.ts +0 -5
  68. package/dist/paths.d.ts +1 -0
  69. package/dist/platform/BrowserFsAdapter.d.ts +0 -20
  70. package/dist/platform/IFsAdapter.d.ts +0 -23
  71. package/dist/platform/NodeFsAdapter.d.ts +0 -8
  72. package/dist/plugin/plugin-provider.d.ts +0 -22
  73. package/dist/plugin/types.d.ts +0 -31
  74. package/dist/plugin.d.ts +0 -27
  75. package/dist/plugins/conversation.d.ts +0 -2
  76. package/dist/plugins/file-logger.d.ts +0 -13
  77. package/dist/plugins/index.d.ts +0 -10
  78. package/dist/plugins/index.js +52 -19
  79. package/dist/plugins/sqlite-tracing.d.ts +0 -13
  80. package/dist/plugins/sqlite-tracing.spec.d.ts +1 -0
  81. package/dist/provider/bridge.browser.d.ts +0 -20
  82. package/dist/provider/bridge.d.ts +0 -47
  83. package/dist/provider/parse-usage.d.ts +0 -14
  84. package/dist/provider/register-api.d.ts +0 -7
  85. package/dist/provider/vercel-runtime.d.ts +0 -29
  86. package/dist/remote/index.d.ts +0 -6
  87. package/dist/remote/remote-agent-manager.d.ts +0 -31
  88. package/dist/remote/remote-provider.d.ts +0 -15
  89. package/dist/remote/remote-transport.d.ts +0 -17
  90. package/dist/remote/types.d.ts +0 -59
  91. package/dist/server/auth.d.ts +0 -16
  92. package/dist/server/handler.d.ts +0 -17
  93. package/dist/server/index.d.ts +0 -4
  94. package/dist/server/tool-adapter.d.ts +0 -16
  95. package/dist/template/engine.d.ts +0 -19
  96. package/dist/template/helpers/exec.browser.d.ts +0 -7
  97. package/dist/template/helpers/exec.d.ts +0 -45
  98. package/dist/template/helpers/fenced_code.d.ts +0 -16
  99. package/dist/template/helpers/format-conversation.d.ts +0 -22
  100. package/dist/template/helpers/include.d.ts +0 -15
  101. package/dist/template/helpers/p1p2.d.ts +0 -32
  102. package/dist/template/loader/DocumentLoader.d.ts +0 -30
  103. package/dist/template/types.d.ts +0 -30
  104. package/dist/testing/index.d.ts +0 -1
  105. package/dist/testing/index.js +1 -16
  106. package/dist/testing/mock-audit.d.ts +0 -1
  107. package/dist/testing/mock-context.d.ts +0 -1
  108. package/dist/testing/mock-logger.d.ts +0 -1
  109. package/dist/testing/mock-router.d.ts +0 -1
  110. package/dist/testing/mock-storage.d.ts +0 -1
  111. package/dist/testing/mock-store.d.ts +0 -1
  112. package/dist/tools/delegate.d.ts +0 -7
  113. package/dist/tools/index.d.ts +0 -4
  114. package/dist/tools/node/builtin.d.ts +0 -16
  115. package/dist/tools/node/index.d.ts +0 -20
  116. package/dist/tools/node/index.js +36 -59
  117. package/dist/types/index.d.ts +0 -20
  118. package/dist/types/task-log.types.d.ts +0 -4
  119. package/dist/utils/env-defaults.d.ts +0 -16
  120. package/dist/utils/glob-match.d.ts +0 -16
  121. package/dist/utils/id.d.ts +0 -15
  122. package/dist/utils/timestamp.d.ts +0 -1
  123. package/dist/utils/workspace.d.ts +0 -4
  124. package/package.json +24 -25
  125. package/dist/adapter/context-builder.js +0 -87
  126. package/dist/adapter/index.js +0 -21
  127. package/dist/adapter/plugin-helper.js +0 -45
  128. package/dist/adapter/scoped-store.js +0 -43
  129. package/dist/adapter/types.js +0 -23
  130. package/dist/agent/resolver.js +0 -46
  131. package/dist/boxing/box-storage.interface.js +0 -6
  132. package/dist/boxing/box.service.js +0 -73
  133. package/dist/boxing/box.types.js +0 -6
  134. package/dist/boxing/context-builder.js +0 -79
  135. package/dist/client/CrewxClient.js +0 -86
  136. package/dist/config/loader.browser.js +0 -59
  137. package/dist/config/loader.js +0 -95
  138. package/dist/conversation/index.js +0 -25
  139. package/dist/conversation/sqlite-provider.js +0 -178
  140. package/dist/conversation/to-task-reader.js +0 -28
  141. package/dist/conversation/to-template-messages.js +0 -34
  142. package/dist/conversation/types.js +0 -10
  143. package/dist/esm/agent/resolver.js +0 -41
  144. package/dist/esm/boxing/box-storage.interface.js +0 -5
  145. package/dist/esm/boxing/box.service.js +0 -69
  146. package/dist/esm/boxing/box.types.js +0 -5
  147. package/dist/esm/boxing/context-builder.js +0 -76
  148. package/dist/esm/client/CrewxClient.js +0 -82
  149. package/dist/esm/config/loader.browser.js +0 -54
  150. package/dist/esm/config/loader.js +0 -77
  151. package/dist/esm/events/TypedEventEmitter.js +0 -61
  152. package/dist/esm/events/types.js +0 -8
  153. package/dist/esm/facade/Crewx.browser.js +0 -310
  154. package/dist/esm/facade/Crewx.js +0 -941
  155. package/dist/esm/hooks/define.js +0 -10
  156. package/dist/esm/hooks/dispatch.js +0 -76
  157. package/dist/esm/hooks/observer.js +0 -56
  158. package/dist/esm/hooks/plugin.js +0 -12
  159. package/dist/esm/hooks/types.js +0 -9
  160. package/dist/esm/index.browser.js +0 -15
  161. package/dist/esm/layout/loader.js +0 -268
  162. package/dist/esm/layout/props-validator.js +0 -297
  163. package/dist/esm/layout/renderer.js +0 -180
  164. package/dist/esm/layout/types.js +0 -31
  165. package/dist/esm/parallel/agent-runtime.js +0 -21
  166. package/dist/esm/parallel/helpers.js +0 -214
  167. package/dist/esm/parallel/index.js +0 -5
  168. package/dist/esm/parallel/parallel-runner.js +0 -221
  169. package/dist/esm/parallel/types.js +0 -5
  170. package/dist/esm/parsers/agent-call.util.js +0 -15
  171. package/dist/esm/parsers/claude.parser.js +0 -64
  172. package/dist/esm/parsers/codex.parser.js +0 -97
  173. package/dist/esm/parsers/copilot.parser.js +0 -63
  174. package/dist/esm/parsers/gemini.parser.js +0 -43
  175. package/dist/esm/parsers/opencode.parser.js +0 -73
  176. package/dist/esm/parsers/router.js +0 -53
  177. package/dist/esm/platform/BrowserFsAdapter.js +0 -80
  178. package/dist/esm/platform/IFsAdapter.js +0 -2
  179. package/dist/esm/platform/NodeFsAdapter.js +0 -34
  180. package/dist/esm/plugin/plugin-provider.js +0 -202
  181. package/dist/esm/plugin/types.js +0 -8
  182. package/dist/esm/plugin.js +0 -25
  183. package/dist/esm/provider/bridge.browser.js +0 -43
  184. package/dist/esm/provider/bridge.js +0 -373
  185. package/dist/esm/provider/parse-usage.js +0 -80
  186. package/dist/esm/provider/register-api.js +0 -21
  187. package/dist/esm/provider/vercel-runtime.js +0 -310
  188. package/dist/esm/remote/index.js +0 -10
  189. package/dist/esm/remote/remote-agent-manager.js +0 -194
  190. package/dist/esm/remote/remote-provider.js +0 -98
  191. package/dist/esm/remote/remote-transport.js +0 -79
  192. package/dist/esm/remote/types.js +0 -8
  193. package/dist/esm/server/auth.js +0 -31
  194. package/dist/esm/server/handler.js +0 -72
  195. package/dist/esm/server/index.js +0 -5
  196. package/dist/esm/server/tool-adapter.js +0 -92
  197. package/dist/esm/template/engine.js +0 -100
  198. package/dist/esm/template/helpers/exec.browser.js +0 -31
  199. package/dist/esm/template/helpers/exec.js +0 -220
  200. package/dist/esm/template/helpers/fenced_code.js +0 -17
  201. package/dist/esm/template/helpers/include.js +0 -20
  202. package/dist/esm/template/helpers/p1p2.js +0 -83
  203. package/dist/esm/template/loader/DocumentLoader.js +0 -124
  204. package/dist/esm/template/types.js +0 -5
  205. package/dist/esm/tools/delegate.js +0 -57
  206. package/dist/esm/tools/index.js +0 -5
  207. package/dist/esm/tools/node/builtin.js +0 -541
  208. package/dist/esm/types/index.js +0 -27
  209. package/dist/esm/types/task-log.types.js +0 -5
  210. package/dist/esm/utils/env-defaults.js +0 -23
  211. package/dist/esm/utils/glob-match.js +0 -38
  212. package/dist/esm/utils/id.js +0 -46
  213. package/dist/esm/utils/workspace.js +0 -21
  214. package/dist/events/TypedEventEmitter.js +0 -65
  215. package/dist/events/types.js +0 -9
  216. package/dist/facade/Crewx.browser.js +0 -314
  217. package/dist/facade/Crewx.js +0 -1299
  218. package/dist/hooks/define.js +0 -13
  219. package/dist/hooks/dispatch.js +0 -147
  220. package/dist/hooks/observer.js +0 -60
  221. package/dist/hooks/plugin.js +0 -17
  222. package/dist/hooks/tool-normalize.js +0 -110
  223. package/dist/hooks/types.js +0 -12
  224. package/dist/hooks/yaml-plugin.js +0 -356
  225. package/dist/layout/loader.js +0 -305
  226. package/dist/layout/props-validator.js +0 -301
  227. package/dist/layout/renderer.js +0 -193
  228. package/dist/layout/types.js +0 -36
  229. package/dist/parallel/agent-runtime.js +0 -25
  230. package/dist/parallel/helpers.js +0 -219
  231. package/dist/parallel/index.js +0 -13
  232. package/dist/parallel/parallel-runner.js +0 -226
  233. package/dist/parallel/types.js +0 -6
  234. package/dist/parsers/agent-call.util.js +0 -19
  235. package/dist/parsers/api.parser.d.ts +0 -10
  236. package/dist/parsers/api.parser.js +0 -26
  237. package/dist/parsers/claude.parser.js +0 -67
  238. package/dist/parsers/codex.parser.js +0 -100
  239. package/dist/parsers/copilot.parser.js +0 -66
  240. package/dist/parsers/gemini.parser.js +0 -46
  241. package/dist/parsers/opencode.parser.js +0 -76
  242. package/dist/parsers/router.js +0 -56
  243. package/dist/platform/BrowserFsAdapter.js +0 -84
  244. package/dist/platform/IFsAdapter.js +0 -3
  245. package/dist/platform/NodeFsAdapter.js +0 -38
  246. package/dist/plugin/plugin-provider.js +0 -207
  247. package/dist/plugin/types.js +0 -9
  248. package/dist/plugin.js +0 -29
  249. package/dist/plugins/conversation.js +0 -59
  250. package/dist/plugins/file-logger.js +0 -87
  251. package/dist/plugins/sqlite-tracing.js +0 -112
  252. package/dist/provider/bridge.browser.js +0 -49
  253. package/dist/provider/bridge.js +0 -381
  254. package/dist/provider/mastra-runtime.d.ts +0 -45
  255. package/dist/provider/mastra-runtime.js +0 -208
  256. package/dist/provider/parse-usage.js +0 -83
  257. package/dist/provider/register-api.js +0 -24
  258. package/dist/provider/vercel-runtime.js +0 -347
  259. package/dist/remote/index.js +0 -32
  260. package/dist/remote/remote-agent-manager.js +0 -198
  261. package/dist/remote/remote-provider.js +0 -141
  262. package/dist/remote/remote-transport.js +0 -83
  263. package/dist/remote/types.js +0 -9
  264. package/dist/server/auth.js +0 -35
  265. package/dist/server/handler.js +0 -75
  266. package/dist/server/index.js +0 -9
  267. package/dist/server/tool-adapter.js +0 -95
  268. package/dist/template/engine.js +0 -137
  269. package/dist/template/helpers/exec.browser.js +0 -41
  270. package/dist/template/helpers/exec.js +0 -230
  271. package/dist/template/helpers/fenced_code.js +0 -20
  272. package/dist/template/helpers/format-conversation.js +0 -53
  273. package/dist/template/helpers/include.js +0 -23
  274. package/dist/template/helpers/p1p2.js +0 -90
  275. package/dist/template/loader/DocumentLoader.js +0 -128
  276. package/dist/template/types.js +0 -6
  277. package/dist/testing/mock-audit.js +0 -13
  278. package/dist/testing/mock-context.js +0 -68
  279. package/dist/testing/mock-logger.js +0 -27
  280. package/dist/testing/mock-router.js +0 -67
  281. package/dist/testing/mock-storage.js +0 -21
  282. package/dist/testing/mock-store.js +0 -8
  283. package/dist/tools/delegate.js +0 -60
  284. package/dist/tools/index.js +0 -9
  285. package/dist/tools/node/builtin.js +0 -547
  286. package/dist/types/index.js +0 -32
  287. package/dist/types/task-log.types.js +0 -6
  288. package/dist/utils/env-defaults.js +0 -27
  289. package/dist/utils/glob-match.js +0 -42
  290. package/dist/utils/id.js +0 -50
  291. package/dist/utils/timestamp.js +0 -13
  292. package/dist/utils/workspace.js +0 -58
@@ -1,9 +0,0 @@
1
- "use strict";
2
- /**
3
- * Plugin Provider Types
4
- *
5
- * Configuration for `type: plugin` providers in crewx.yaml.
6
- * Plugin providers wrap arbitrary CLI tools as CrewX agents.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- //# sourceMappingURL=types.js.map
package/dist/plugin.js DELETED
@@ -1,29 +0,0 @@
1
- "use strict";
2
- /**
3
- * CrewxPlugin — base class for SDK plugins.
4
- *
5
- * Plugins subscribe to Crewx events in attach() and clean up in detach().
6
- * Register via Crewx.use(plugin).
7
- *
8
- * @example
9
- * class MyPlugin extends CrewxPlugin {
10
- * readonly name = 'my-plugin';
11
- * attach(crewx: Crewx) {
12
- * crewx.on('task:start', (e) => console.log(e.traceId));
13
- * }
14
- * }
15
- * await crewx.use(new MyPlugin());
16
- */
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.CrewxPlugin = void 0;
19
- class CrewxPlugin {
20
- /**
21
- * Called on Crewx.close() in LIFO order.
22
- * Remove event listeners and release resources here.
23
- * Default: no-op.
24
- */
25
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
26
- detach(_crewx) { }
27
- }
28
- exports.CrewxPlugin = CrewxPlugin;
29
- //# sourceMappingURL=plugin.js.map
@@ -1,59 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ConversationPlugin = void 0;
4
- const plugin_1 = require("../plugin");
5
- const sqlite_provider_1 = require("../conversation/sqlite-provider");
6
- class ConversationPlugin extends plugin_1.CrewxPlugin {
7
- name = 'conversation';
8
- _provider;
9
- unsubStart = null;
10
- unsubEnd = null;
11
- constructor(opts) {
12
- super();
13
- this._provider = new sqlite_provider_1.SqliteConversationProvider(opts?.dbPath);
14
- }
15
- /** Expose provider for SDK history auto-fetch (WI-CONV-002). */
16
- get conversationProvider() {
17
- return this._provider;
18
- }
19
- attach(crewx) {
20
- // task:start — save user message + ensure thread
21
- this.unsubStart = crewx.on('task:start', async (event) => {
22
- if (!event.threadId)
23
- return;
24
- const platform = (event.platform ?? 'cli');
25
- try {
26
- await this._provider.ensureThread(event.threadId, platform, event.workspaceId);
27
- await this._provider.saveUserMessage(event.threadId, event.message ?? '');
28
- }
29
- catch {
30
- // Non-fatal: conversation persistence must never crash the main process
31
- }
32
- });
33
- // task:end — save assistant response (WI-CONV-002)
34
- this.unsubEnd = crewx.on('task:end', async (event) => {
35
- if (!event.result)
36
- return;
37
- // Resolve threadId from metadata propagated in task:start
38
- const threadId = event.metadata?.threadId;
39
- if (!threadId)
40
- return;
41
- const agentId = event.agentRef?.replace(/^@/, '') ?? '';
42
- try {
43
- await this._provider.saveAssistantMessage(threadId, event.result, agentId);
44
- }
45
- catch {
46
- // Non-fatal: conversation persistence must never crash the main process
47
- }
48
- });
49
- }
50
- detach(_crewx) {
51
- this.unsubStart?.();
52
- this.unsubStart = null;
53
- this.unsubEnd?.();
54
- this.unsubEnd = null;
55
- this._provider.close?.();
56
- }
57
- }
58
- exports.ConversationPlugin = ConversationPlugin;
59
- //# sourceMappingURL=conversation.js.map
@@ -1,87 +0,0 @@
1
- "use strict";
2
- /**
3
- * FileLoggerPlugin — writes structured log files to .crewx/logs/.
4
- *
5
- * Subscribes to task:start and task:end events and writes one log file
6
- * per task execution. Format mirrors cli-bak TaskManagementService for
7
- * backward compatibility.
8
- *
9
- * File name: {YYYYMMDDTHHmmss}_{traceId}.log
10
- * e.g. 20260412T145044_tsk_AbCdEfGh.log
11
- */
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.FileLoggerPlugin = void 0;
14
- const fs_1 = require("fs");
15
- const path_1 = require("path");
16
- const plugin_1 = require("../plugin");
17
- const timestamp_1 = require("../utils/timestamp");
18
- class FileLoggerPlugin extends plugin_1.CrewxPlugin {
19
- name = 'file-logger';
20
- unsubs = [];
21
- logFiles = new Map();
22
- logsDir;
23
- version;
24
- constructor(opts) {
25
- super();
26
- this.logsDir = (0, path_1.join)(opts?.workspaceRoot ?? process.cwd(), '.crewx', 'logs');
27
- this.version = opts?.version ?? 'unknown';
28
- }
29
- attach(crewx) {
30
- this.unsubs.push(crewx.on('task:start', (event) => {
31
- try {
32
- if (!(0, fs_1.existsSync)(this.logsDir)) {
33
- (0, fs_1.mkdirSync)(this.logsDir, { recursive: true });
34
- }
35
- const ts = (0, timestamp_1.formatTimestamp)(event.timestamp);
36
- const logFile = (0, path_1.join)(this.logsDir, `${ts}_${event.traceId}.log`);
37
- this.logFiles.set(event.traceId, logFile);
38
- const header = `=== TASK LOG: ${event.traceId} ===\n` +
39
- `CrewX Version: ${this.version}\n` +
40
- `Mode: ${event.mode}\n` +
41
- `Agent: ${event.agentRef}\n` +
42
- `Started: ${event.timestamp.toLocaleString()}\n` +
43
- `Message: ${event.message}\n` +
44
- `\n`;
45
- (0, fs_1.writeFileSync)(logFile, header, { encoding: 'utf8', mode: 0o600 });
46
- }
47
- catch {
48
- // Non-fatal: logging must never crash the main process
49
- }
50
- }), crewx.on('task:output', (event) => {
51
- try {
52
- const logFile = this.logFiles.get(event.traceId);
53
- if (!logFile)
54
- return;
55
- const ts = new Date().toISOString();
56
- (0, fs_1.appendFileSync)(logFile, `[${ts}] STDOUT: ${event.output}\n`, 'utf8');
57
- }
58
- catch {
59
- // Non-fatal
60
- }
61
- }), crewx.on('task:end', (event) => {
62
- try {
63
- const logFile = this.logFiles.get(event.traceId);
64
- if (!logFile)
65
- return;
66
- const ts = new Date().toLocaleString();
67
- const status = event.error
68
- ? `failed: ${event.error.message}`
69
- : 'completed successfully';
70
- const completion = `[${ts}] INFO: Task ${status} in ${event.durationMs}ms\n` +
71
- `[${ts}] INFO: Process closed with exit code: ${event.error ? 1 : 0}\n`;
72
- (0, fs_1.appendFileSync)(logFile, completion, 'utf8');
73
- this.logFiles.delete(event.traceId);
74
- }
75
- catch {
76
- // Non-fatal
77
- }
78
- }));
79
- }
80
- detach(_crewx) {
81
- this.unsubs.forEach(fn => fn());
82
- this.unsubs = [];
83
- this.logFiles.clear();
84
- }
85
- }
86
- exports.FileLoggerPlugin = FileLoggerPlugin;
87
- //# sourceMappingURL=file-logger.js.map
@@ -1,112 +0,0 @@
1
- "use strict";
2
- /**
3
- * SqliteTracingPlugin — records task execution data to ~/.crewx/crewx.db.
4
- *
5
- * Subscribes to task:start, task:output, and task:end events and persists
6
- * full records to the global CrewX SQLite database. Matches the schema
7
- * written by the global crewx CLI (0.8.x).
8
- *
9
- * DB location: {dbRoot}/.crewx/crewx.db
10
- * (dbRoot defaults to os.homedir())
11
- */
12
- var __importDefault = (this && this.__importDefault) || function (mod) {
13
- return (mod && mod.__esModule) ? mod : { "default": mod };
14
- };
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.SqliteTracingPlugin = void 0;
17
- const fs_1 = require("fs");
18
- const path_1 = require("path");
19
- const os_1 = require("os");
20
- const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
21
- const plugin_1 = require("../plugin");
22
- const workspace_1 = require("../utils/workspace");
23
- /** Detect host AI caller agent ID from environment (set by parent crewx process). */
24
- function detectCallerAgentId() {
25
- return process.env['CREWX_CALLER_AGENT_ID'] ?? null;
26
- }
27
- class SqliteTracingPlugin extends plugin_1.CrewxPlugin {
28
- name = 'sqlite-tracing';
29
- db = null;
30
- unsubs = [];
31
- dbPath;
32
- version;
33
- constructor(opts) {
34
- super();
35
- this.dbPath = (0, path_1.join)(opts?.dbRoot ?? (0, os_1.homedir)(), '.crewx', 'crewx.db');
36
- this.version = opts?.version ?? 'unknown';
37
- }
38
- attach(crewx) {
39
- // Ensure parent directory exists
40
- const dbDir = (0, path_1.dirname)(this.dbPath);
41
- if (!(0, fs_1.existsSync)(dbDir)) {
42
- (0, fs_1.mkdirSync)(dbDir, { recursive: true });
43
- }
44
- this.db = new better_sqlite3_1.default(this.dbPath);
45
- // Fallback workspace only when crewx.yaml/.yml exists in cwd — prevents phantom workspace entries
46
- const cwd = process.cwd();
47
- const yamlExists = (0, fs_1.existsSync)((0, path_1.join)(cwd, 'crewx.yaml')) || (0, fs_1.existsSync)((0, path_1.join)(cwd, 'crewx.yml'));
48
- const fallbackWorkspaceId = yamlExists ? (0, workspace_1.hashWorkspaceId)(cwd) : null;
49
- const fallbackWorkspaceName = yamlExists ? (0, path_1.basename)(cwd) : null;
50
- const callerAgentId = detectCallerAgentId();
51
- const command = process.argv.join(' ');
52
- this.unsubs.push(crewx.on('task:start', (event) => {
53
- try {
54
- const metadata = event.metadata
55
- ? JSON.stringify(event.metadata)
56
- : JSON.stringify({ provider: event.provider ?? 'cli/claude' });
57
- this.db.prepare(`INSERT OR IGNORE INTO tasks
58
- (id, agent_id, prompt, mode, status, pid, started_at,
59
- crewx_version, platform,
60
- model, rendered_prompt, command, coding_agent_command,
61
- workspace_id, workspace_name,
62
- caller_agent_id, trace_id, metadata, thread_id)
63
- VALUES (?, ?, ?, ?, 'running', ?, ?,
64
- ?, ?,
65
- ?, ?, ?, ?,
66
- ?, ?,
67
- ?, ?, ?, ?)`).run(event.traceId, event.agentRef.replace(/^@/, ''), event.message, event.mode, event.pid ?? null, event.timestamp.toISOString(), this.version, event.platform ?? 'cli', event.model ?? null, event.renderedPrompt ?? null, command, event.codingAgentCommand ?? null, event.workspaceId ?? fallbackWorkspaceId, event.workspaceName ?? fallbackWorkspaceName, callerAgentId, event.traceId, // trace_id mirrors the task id for root requests
68
- metadata, event.threadId ?? null);
69
- }
70
- catch {
71
- // Non-fatal: tracing must never crash the main process
72
- }
73
- }), crewx.on('task:output', (event) => {
74
- try {
75
- const row = this.db.prepare('SELECT logs FROM tasks WHERE id=?').get(event.traceId);
76
- const existing = row?.logs ? JSON.parse(row.logs) : [];
77
- existing.push({
78
- timestamp: event.timestamp.toISOString(),
79
- level: event.level ?? 'stdout',
80
- message: event.output,
81
- });
82
- this.db.prepare('UPDATE tasks SET logs=? WHERE id=?').run(JSON.stringify(existing), event.traceId);
83
- }
84
- catch {
85
- // Non-fatal
86
- }
87
- }), crewx.on('task:end', (event) => {
88
- try {
89
- const status = event.error ? 'failed' : 'success';
90
- this.db.prepare(`UPDATE tasks
91
- SET status=?, result=?, error=?,
92
- completed_at=?, duration_ms=?,
93
- exit_code=?,
94
- input_tokens=?, output_tokens=?, cached_input_tokens=?,
95
- cost_usd=?,
96
- model=COALESCE(?, model)
97
- WHERE id=?`).run(status, event.result ?? null, event.error ? JSON.stringify(event.error) : null, event.timestamp.toISOString(), event.durationMs, event.exitCode ?? null, event.inputTokens ?? 0, event.outputTokens ?? 0, event.cachedInputTokens ?? 0, event.costUsd ?? 0, event.model ?? null, event.traceId);
98
- }
99
- catch {
100
- // Non-fatal
101
- }
102
- }));
103
- }
104
- detach(_crewx) {
105
- this.unsubs.forEach(fn => fn());
106
- this.unsubs = [];
107
- this.db?.close();
108
- this.db = null;
109
- }
110
- }
111
- exports.SqliteTracingPlugin = SqliteTracingPlugin;
112
- //# sourceMappingURL=sqlite-tracing.js.map
@@ -1,49 +0,0 @@
1
- "use strict";
2
- /**
3
- * Browser-safe provider bridge.
4
- * Registry pattern only — no child_process / CLI spawn.
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.ProviderError = void 0;
8
- exports.registerProviderFactory = registerProviderFactory;
9
- exports.createProvider = createProvider;
10
- class ProviderError extends Error {
11
- providerStr;
12
- constructor(message, providerStr) {
13
- super(message);
14
- this.providerStr = providerStr;
15
- this.name = 'ProviderError';
16
- }
17
- }
18
- exports.ProviderError = ProviderError;
19
- // ── Provider factory registry ───────────────────────────────────────────────
20
- const _providerFactories = new Map();
21
- /**
22
- * Register a provider factory for a given namespace.
23
- *
24
- * @example
25
- * registerProviderFactory('api', (id, providerStr) => ({
26
- * async query(message, options) { ... },
27
- * async execute(message, options) { ... },
28
- * }));
29
- */
30
- function registerProviderFactory(namespace, factory) {
31
- _providerFactories.set(namespace, factory);
32
- }
33
- /**
34
- * Create a provider runtime for the given provider string.
35
- * Browser version — only supports registered factories (no CLI fallback).
36
- */
37
- function createProvider(providerStr) {
38
- const parts = providerStr.split('/');
39
- if (parts.length !== 2) {
40
- throw new ProviderError(`Invalid provider format: "${providerStr}". Expected namespace/id (e.g., api/webllm)`, providerStr);
41
- }
42
- const [namespace, id] = parts;
43
- const factory = _providerFactories.get(namespace);
44
- if (factory) {
45
- return factory(id, providerStr);
46
- }
47
- throw new ProviderError(`Unsupported provider namespace: "${namespace}". Register a factory with registerProviderFactory('${namespace}', factory).`, providerStr);
48
- }
49
- //# sourceMappingURL=bridge.browser.js.map