crewly 1.0.8 → 1.0.11

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 (249) hide show
  1. package/config/constants.ts +59 -0
  2. package/config/index.ts +2 -0
  3. package/config/roles/architect/prompt.md +8 -5
  4. package/config/roles/backend-developer/prompt.md +24 -5
  5. package/config/roles/designer/prompt.md +6 -5
  6. package/config/roles/developer/prompt.md +27 -5
  7. package/config/roles/frontend-developer/prompt.md +24 -5
  8. package/config/roles/fullstack-dev/prompt.md +24 -5
  9. package/config/roles/generalist/prompt.md +9 -5
  10. package/config/roles/orchestrator/prompt.md +126 -15
  11. package/config/roles/product-manager/prompt.md +6 -5
  12. package/config/roles/qa/prompt.md +24 -5
  13. package/config/roles/qa-engineer/prompt.md +24 -5
  14. package/config/roles/sales/prompt.md +6 -5
  15. package/config/roles/support/prompt.md +6 -5
  16. package/config/roles/tpm/prompt.md +6 -5
  17. package/config/skills/agent/_common/lib.sh +4 -0
  18. package/config/skills/agent/core/accept-task/execute.sh +21 -0
  19. package/config/skills/agent/core/accept-task/instructions.md +20 -0
  20. package/config/skills/agent/core/accept-task/skill.json +20 -0
  21. package/config/skills/agent/core/block-task/execute.sh +26 -0
  22. package/config/skills/agent/core/block-task/instructions.md +22 -0
  23. package/config/skills/agent/core/block-task/skill.json +20 -0
  24. package/config/skills/agent/core/check-quality-gates/execute.sh +20 -0
  25. package/config/skills/agent/core/check-quality-gates/instructions.md +23 -0
  26. package/config/skills/agent/core/check-quality-gates/skill.json +20 -0
  27. package/config/skills/agent/core/complete-task/execute.sh +29 -0
  28. package/config/skills/agent/core/complete-task/instructions.md +53 -0
  29. package/config/skills/agent/core/complete-task/skill.json +20 -0
  30. package/config/skills/agent/core/get-my-context/execute.sh +23 -0
  31. package/config/skills/agent/core/get-my-context/instructions.md +21 -0
  32. package/config/skills/agent/core/get-my-context/skill.json +20 -0
  33. package/config/skills/agent/core/get-sops/execute.sh +24 -0
  34. package/config/skills/agent/core/get-sops/instructions.md +21 -0
  35. package/config/skills/agent/core/get-sops/skill.json +20 -0
  36. package/config/skills/agent/core/get-team-status/execute.sh +8 -0
  37. package/config/skills/agent/core/get-team-status/instructions.md +17 -0
  38. package/config/skills/agent/core/get-team-status/skill.json +20 -0
  39. package/config/skills/agent/core/heartbeat/execute.sh +22 -0
  40. package/config/skills/agent/core/heartbeat/instructions.md +23 -0
  41. package/config/skills/agent/core/heartbeat/skill.json +20 -0
  42. package/config/skills/agent/core/manage-knowledge/execute.sh +60 -0
  43. package/config/skills/agent/core/manage-knowledge/instructions.md +46 -0
  44. package/config/skills/agent/core/marketplace-search/execute.sh +77 -0
  45. package/config/skills/agent/core/marketplace-search/instructions.md +59 -0
  46. package/config/skills/agent/core/marketplace-search/skill.json +20 -0
  47. package/config/skills/agent/core/query-knowledge/execute.sh +30 -0
  48. package/config/skills/agent/core/query-knowledge/instructions.md +47 -0
  49. package/config/skills/agent/core/query-knowledge/skill.json +20 -0
  50. package/config/skills/agent/core/read-task/execute.sh +15 -0
  51. package/config/skills/agent/core/read-task/instructions.md +19 -0
  52. package/config/skills/agent/core/read-task/skill.json +20 -0
  53. package/config/skills/agent/core/recall/execute.sh +24 -0
  54. package/config/skills/agent/core/recall/instructions.md +23 -0
  55. package/config/skills/agent/core/recall/skill.json +20 -0
  56. package/config/skills/agent/core/record-learning/execute.sh +29 -0
  57. package/config/skills/agent/core/record-learning/instructions.md +24 -0
  58. package/config/skills/agent/core/record-learning/skill.json +20 -0
  59. package/config/skills/agent/core/register-self/execute.sh +28 -0
  60. package/config/skills/agent/core/register-self/instructions.md +18 -0
  61. package/config/skills/agent/core/register-self/skill.json +20 -0
  62. package/config/skills/agent/core/remember/execute.sh +29 -0
  63. package/config/skills/agent/core/remember/instructions.md +24 -0
  64. package/config/skills/agent/core/remember/skill.json +20 -0
  65. package/config/skills/agent/core/report-progress/execute.sh +28 -0
  66. package/config/skills/agent/core/report-progress/instructions.md +25 -0
  67. package/config/skills/agent/core/report-progress/skill.json +20 -0
  68. package/config/skills/agent/core/report-status/execute.sh +35 -0
  69. package/config/skills/agent/core/report-status/instructions.md +36 -0
  70. package/config/skills/agent/core/report-status/skill.json +20 -0
  71. package/config/skills/agent/core/send-chat-response/execute.sh +26 -0
  72. package/config/skills/agent/core/send-chat-response/instructions.md +22 -0
  73. package/config/skills/agent/core/send-chat-response/skill.json +20 -0
  74. package/config/skills/agent/core/send-message/execute.sh +17 -0
  75. package/config/skills/agent/core/send-message/instructions.md +20 -0
  76. package/config/skills/agent/core/send-message/skill.json +20 -0
  77. package/config/skills/orchestrator/delegate-task/execute.sh +1 -1
  78. package/config/skills/orchestrator/schedule-check/instructions.md +6 -0
  79. package/config/skills/registry.json +850 -0
  80. package/config/templates/research-team.json +2 -2
  81. package/dist/backend/backend/src/constants.d.ts +89 -4
  82. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  83. package/dist/backend/backend/src/constants.js +84 -6
  84. package/dist/backend/backend/src/constants.js.map +1 -1
  85. package/dist/backend/backend/src/controllers/marketplace/index.d.ts +1 -1
  86. package/dist/backend/backend/src/controllers/marketplace/index.d.ts.map +1 -1
  87. package/dist/backend/backend/src/controllers/marketplace/index.js +1 -1
  88. package/dist/backend/backend/src/controllers/marketplace/index.js.map +1 -1
  89. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts +64 -8
  90. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts.map +1 -1
  91. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js +194 -96
  92. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js.map +1 -1
  93. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts.map +1 -1
  94. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js +7 -2
  95. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js.map +1 -1
  96. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  97. package/dist/backend/backend/src/controllers/team/team.controller.js +30 -13
  98. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  99. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  100. package/dist/backend/backend/src/services/agent/agent-registration.service.js +37 -0
  101. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  102. package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts +51 -8
  103. package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -1
  104. package/dist/backend/backend/src/services/agent/context-window-monitor.service.js +201 -11
  105. package/dist/backend/backend/src/services/agent/context-window-monitor.service.js.map +1 -1
  106. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts +16 -1
  107. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  108. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +99 -9
  109. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  110. package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts.map +1 -1
  111. package/dist/backend/backend/src/services/agent/idle-detection.service.js +11 -4
  112. package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
  113. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts +11 -0
  114. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -1
  115. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js +18 -0
  116. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -1
  117. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  118. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +13 -0
  119. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  120. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +21 -0
  121. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  122. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +227 -91
  123. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  124. package/dist/backend/backend/src/services/chat/chat.service.d.ts +12 -0
  125. package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
  126. package/dist/backend/backend/src/services/chat/chat.service.js +23 -1
  127. package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
  128. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.d.ts +6 -0
  129. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.d.ts.map +1 -1
  130. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.js +10 -0
  131. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.js.map +1 -1
  132. package/dist/backend/backend/src/services/marketplace/index.d.ts +1 -0
  133. package/dist/backend/backend/src/services/marketplace/index.d.ts.map +1 -1
  134. package/dist/backend/backend/src/services/marketplace/index.js +2 -0
  135. package/dist/backend/backend/src/services/marketplace/index.js.map +1 -1
  136. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts +10 -9
  137. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
  138. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js +262 -73
  139. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
  140. package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.d.ts +71 -0
  141. package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.d.ts.map +1 -0
  142. package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.js +339 -0
  143. package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.js.map +1 -0
  144. package/dist/backend/backend/src/services/marketplace/marketplace.service.d.ts +4 -15
  145. package/dist/backend/backend/src/services/marketplace/marketplace.service.d.ts.map +1 -1
  146. package/dist/backend/backend/src/services/marketplace/marketplace.service.js +172 -27
  147. package/dist/backend/backend/src/services/marketplace/marketplace.service.js.map +1 -1
  148. package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts +30 -2
  149. package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts.map +1 -1
  150. package/dist/backend/backend/src/services/messaging/message-queue.service.js +79 -3
  151. package/dist/backend/backend/src/services/messaging/message-queue.service.js.map +1 -1
  152. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  153. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +57 -4
  154. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  155. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts.map +1 -1
  156. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js +20 -1
  157. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -1
  158. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -1
  159. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js +31 -0
  160. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -1
  161. package/dist/backend/backend/src/services/runtime-adapter.d.ts +20 -0
  162. package/dist/backend/backend/src/services/runtime-adapter.d.ts.map +1 -1
  163. package/dist/backend/backend/src/services/runtime-adapter.js +22 -1
  164. package/dist/backend/backend/src/services/runtime-adapter.js.map +1 -1
  165. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts +19 -0
  166. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
  167. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +31 -2
  168. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  169. package/dist/backend/backend/src/services/session/session-backend.interface.d.ts +14 -0
  170. package/dist/backend/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
  171. package/dist/backend/backend/src/services/session/session-backend.interface.js.map +1 -1
  172. package/dist/backend/backend/src/services/session/session-command-helper.d.ts +9 -0
  173. package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  174. package/dist/backend/backend/src/services/session/session-command-helper.js +24 -1
  175. package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
  176. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts +7 -13
  177. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
  178. package/dist/backend/backend/src/services/skill/skill-catalog.service.js +38 -47
  179. package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
  180. package/dist/backend/backend/src/services/skill/skill.service.d.ts +3 -0
  181. package/dist/backend/backend/src/services/skill/skill.service.d.ts.map +1 -1
  182. package/dist/backend/backend/src/services/skill/skill.service.js +17 -0
  183. package/dist/backend/backend/src/services/skill/skill.service.js.map +1 -1
  184. package/dist/backend/backend/src/types/chat.types.d.ts +5 -5
  185. package/dist/backend/backend/src/types/chat.types.d.ts.map +1 -1
  186. package/dist/backend/backend/src/types/chat.types.js +21 -1
  187. package/dist/backend/backend/src/types/chat.types.js.map +1 -1
  188. package/dist/backend/backend/src/types/marketplace.types.d.ts +37 -0
  189. package/dist/backend/backend/src/types/marketplace.types.d.ts.map +1 -1
  190. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
  191. package/dist/backend/backend/src/websocket/terminal.gateway.js +3 -5
  192. package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
  193. package/dist/backend/config/constants.d.ts +41 -0
  194. package/dist/backend/config/constants.d.ts.map +1 -1
  195. package/dist/backend/config/constants.js +57 -0
  196. package/dist/backend/config/constants.js.map +1 -1
  197. package/dist/backend/config/index.d.ts +2 -2
  198. package/dist/backend/config/index.d.ts.map +1 -1
  199. package/dist/backend/config/index.js +2 -2
  200. package/dist/backend/config/index.js.map +1 -1
  201. package/dist/cli/backend/src/constants.d.ts +89 -4
  202. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  203. package/dist/cli/backend/src/constants.js +84 -6
  204. package/dist/cli/backend/src/constants.js.map +1 -1
  205. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.d.ts +40 -0
  206. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.d.ts.map +1 -0
  207. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.js +74 -0
  208. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.js.map +1 -0
  209. package/dist/cli/backend/src/types/chat.types.d.ts +5 -5
  210. package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -1
  211. package/dist/cli/backend/src/types/chat.types.js +21 -1
  212. package/dist/cli/backend/src/types/chat.types.js.map +1 -1
  213. package/dist/cli/cli/src/commands/onboard.d.ts +11 -1
  214. package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
  215. package/dist/cli/cli/src/commands/onboard.js +118 -18
  216. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  217. package/dist/cli/cli/src/commands/publish.d.ts +14 -6
  218. package/dist/cli/cli/src/commands/publish.d.ts.map +1 -1
  219. package/dist/cli/cli/src/commands/publish.js +32 -8
  220. package/dist/cli/cli/src/commands/publish.js.map +1 -1
  221. package/dist/cli/cli/src/commands/seed-marketplace.d.ts +28 -0
  222. package/dist/cli/cli/src/commands/seed-marketplace.d.ts.map +1 -0
  223. package/dist/cli/cli/src/commands/seed-marketplace.js +148 -0
  224. package/dist/cli/cli/src/commands/seed-marketplace.js.map +1 -0
  225. package/dist/cli/cli/src/index.js +9 -0
  226. package/dist/cli/cli/src/index.js.map +1 -1
  227. package/dist/cli/cli/src/utils/marketplace.d.ts +17 -4
  228. package/dist/cli/cli/src/utils/marketplace.d.ts.map +1 -1
  229. package/dist/cli/cli/src/utils/marketplace.js +172 -58
  230. package/dist/cli/cli/src/utils/marketplace.js.map +1 -1
  231. package/dist/cli/config/constants.d.ts +41 -0
  232. package/dist/cli/config/constants.d.ts.map +1 -1
  233. package/dist/cli/config/constants.js +57 -0
  234. package/dist/cli/config/constants.js.map +1 -1
  235. package/dist/cli/config/index.d.ts +2 -2
  236. package/dist/cli/config/index.d.ts.map +1 -1
  237. package/dist/cli/config/index.js +2 -2
  238. package/dist/cli/config/index.js.map +1 -1
  239. package/frontend/dist/assets/{index-68d1eb5a.js → index-0a245b0d.js} +242 -242
  240. package/frontend/dist/assets/{index-c5043a83.css → index-6972eeee.css} +1 -1
  241. package/frontend/dist/index.html +2 -2
  242. package/package.json +2 -2
  243. package/config/skills/chrome-browser/instructions.md +0 -42
  244. package/config/skills/chrome-browser/skill.json +0 -39
  245. package/config/skills/nano-banana-image/generate.sh +0 -73
  246. package/config/skills/nano-banana-image/instructions.md +0 -50
  247. package/config/skills/nano-banana-image/skill.json +0 -39
  248. package/config/skills/playwright-chrome-browser/instructions.md +0 -95
  249. package/config/skills/playwright-chrome-browser/skill.json +0 -44
@@ -1 +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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"}
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,71 @@
1
+ /**
2
+ * Marketplace Submission Service
3
+ *
4
+ * Handles skill submissions to the marketplace, including validation,
5
+ * archive storage, and review workflow management.
6
+ *
7
+ * Submissions are stored locally in ~/.crewly/marketplace/submissions/
8
+ * with a manifest.json tracking all submissions and their status.
9
+ *
10
+ * @module services/marketplace/marketplace-submission.service
11
+ */
12
+ import type { MarketplaceSubmission, SubmissionsManifest, SubmissionStatus, MarketplaceOperationResult } from '../../types/marketplace.types.js';
13
+ /**
14
+ * Loads the submissions manifest from disk.
15
+ *
16
+ * Returns an empty manifest if the file does not exist or is unparsable.
17
+ *
18
+ * @returns The submissions manifest
19
+ */
20
+ export declare function loadSubmissionsManifest(): Promise<SubmissionsManifest>;
21
+ /**
22
+ * Saves the submissions manifest to disk.
23
+ *
24
+ * Creates the submissions directory if it does not exist.
25
+ *
26
+ * @param manifest - The manifest to persist
27
+ */
28
+ export declare function saveSubmissionsManifest(manifest: SubmissionsManifest): Promise<void>;
29
+ /**
30
+ * Submits a skill package (tar.gz archive) to the marketplace for review.
31
+ *
32
+ * Performs the following steps:
33
+ * 1. Verifies the archive exists and is a tar.gz
34
+ * 2. Extracts and validates skill.json from the archive
35
+ * 3. Checks for duplicate submissions
36
+ * 4. Stores the archive in the submissions directory
37
+ * 5. Creates a submission record in the manifest
38
+ *
39
+ * @param archivePath - Path to the tar.gz archive to submit
40
+ * @returns Operation result with the submission record
41
+ */
42
+ export declare function submitSkill(archivePath: string): Promise<MarketplaceOperationResult & {
43
+ submission?: MarketplaceSubmission;
44
+ }>;
45
+ /**
46
+ * Lists all submissions, optionally filtered by status.
47
+ *
48
+ * @param status - Optional status filter
49
+ * @returns Array of submissions
50
+ */
51
+ export declare function listSubmissions(status?: SubmissionStatus): Promise<MarketplaceSubmission[]>;
52
+ /**
53
+ * Gets a single submission by ID.
54
+ *
55
+ * @param id - Submission ID
56
+ * @returns The submission, or null if not found
57
+ */
58
+ export declare function getSubmission(id: string): Promise<MarketplaceSubmission | null>;
59
+ /**
60
+ * Reviews a submission — approving or rejecting it.
61
+ *
62
+ * When approved, the skill is added to the local registry and becomes
63
+ * available for installation. When rejected, the archive is removed.
64
+ *
65
+ * @param id - Submission ID
66
+ * @param action - 'approve' or 'reject'
67
+ * @param notes - Optional review notes
68
+ * @returns Operation result
69
+ */
70
+ export declare function reviewSubmission(id: string, action: 'approve' | 'reject', notes?: string): Promise<MarketplaceOperationResult>;
71
+ //# sourceMappingURL=marketplace-submission.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace-submission.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/marketplace/marketplace-submission.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAEhB,0BAA0B,EAC3B,MAAM,kCAAkC,CAAC;AAa1C;;;;;;GAMG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAO5E;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1F;AA8CD;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,GAAG;IAAE,UAAU,CAAC,EAAE,qBAAqB,CAAA;CAAE,CAAC,CAiFnI;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAMjG;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAGrF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,SAAS,GAAG,QAAQ,EAC5B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,0BAA0B,CAAC,CA6CrC"}
@@ -0,0 +1,339 @@
1
+ /**
2
+ * Marketplace Submission Service
3
+ *
4
+ * Handles skill submissions to the marketplace, including validation,
5
+ * archive storage, and review workflow management.
6
+ *
7
+ * Submissions are stored locally in ~/.crewly/marketplace/submissions/
8
+ * with a manifest.json tracking all submissions and their status.
9
+ *
10
+ * @module services/marketplace/marketplace-submission.service
11
+ */
12
+ import path from 'path';
13
+ import { homedir } from 'os';
14
+ import { mkdir, readFile, writeFile, copyFile, rm } from 'fs/promises';
15
+ import { existsSync } from 'fs';
16
+ import { createHash, randomUUID } from 'crypto';
17
+ import * as tar from 'tar';
18
+ import { MARKETPLACE_CONSTANTS } from '../../constants.js';
19
+ const MARKETPLACE_DIR = path.join(homedir(), '.crewly', MARKETPLACE_CONSTANTS.DIR_NAME);
20
+ const SUBMISSIONS_DIR = path.join(MARKETPLACE_DIR, MARKETPLACE_CONSTANTS.SUBMISSIONS_DIR);
21
+ const SUBMISSIONS_MANIFEST_PATH = path.join(SUBMISSIONS_DIR, 'manifest.json');
22
+ /** Kebab-case pattern for skill IDs */
23
+ const KEBAB_CASE_RE = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/;
24
+ /** Semver pattern (major.minor.patch) */
25
+ const SEMVER_RE = /^\d+\.\d+\.\d+$/;
26
+ /**
27
+ * Loads the submissions manifest from disk.
28
+ *
29
+ * Returns an empty manifest if the file does not exist or is unparsable.
30
+ *
31
+ * @returns The submissions manifest
32
+ */
33
+ export async function loadSubmissionsManifest() {
34
+ try {
35
+ const data = await readFile(SUBMISSIONS_MANIFEST_PATH, 'utf-8');
36
+ return JSON.parse(data);
37
+ }
38
+ catch {
39
+ return { schemaVersion: 1, submissions: [] };
40
+ }
41
+ }
42
+ /**
43
+ * Saves the submissions manifest to disk.
44
+ *
45
+ * Creates the submissions directory if it does not exist.
46
+ *
47
+ * @param manifest - The manifest to persist
48
+ */
49
+ export async function saveSubmissionsManifest(manifest) {
50
+ await mkdir(SUBMISSIONS_DIR, { recursive: true });
51
+ await writeFile(SUBMISSIONS_MANIFEST_PATH, JSON.stringify(manifest, null, 2) + '\n');
52
+ }
53
+ /**
54
+ * Validates a skill.json manifest from a submitted archive.
55
+ *
56
+ * @param manifest - Parsed skill.json content
57
+ * @returns Array of validation error messages (empty if valid)
58
+ */
59
+ function validateSkillManifest(manifest) {
60
+ const errors = [];
61
+ if (!manifest.id || typeof manifest.id !== 'string') {
62
+ errors.push('skill.json missing required field: id');
63
+ }
64
+ else if (!KEBAB_CASE_RE.test(manifest.id)) {
65
+ errors.push(`skill.json id must be kebab-case: "${manifest.id}"`);
66
+ }
67
+ if (!manifest.name || typeof manifest.name !== 'string') {
68
+ errors.push('skill.json missing required field: name');
69
+ }
70
+ if (!manifest.description || typeof manifest.description !== 'string') {
71
+ errors.push('skill.json missing required field: description');
72
+ }
73
+ if (!manifest.version || typeof manifest.version !== 'string') {
74
+ errors.push('skill.json missing required field: version');
75
+ }
76
+ else if (!SEMVER_RE.test(manifest.version)) {
77
+ errors.push(`skill.json version must be semver (x.y.z): "${manifest.version}"`);
78
+ }
79
+ if (!manifest.category || typeof manifest.category !== 'string') {
80
+ errors.push('skill.json missing required field: category');
81
+ }
82
+ if (!Array.isArray(manifest.assignableRoles) || manifest.assignableRoles.length === 0) {
83
+ errors.push('skill.json must have a non-empty assignableRoles array');
84
+ }
85
+ if (!Array.isArray(manifest.tags) || manifest.tags.length === 0) {
86
+ errors.push('skill.json must have a non-empty tags array');
87
+ }
88
+ return errors;
89
+ }
90
+ /**
91
+ * Submits a skill package (tar.gz archive) to the marketplace for review.
92
+ *
93
+ * Performs the following steps:
94
+ * 1. Verifies the archive exists and is a tar.gz
95
+ * 2. Extracts and validates skill.json from the archive
96
+ * 3. Checks for duplicate submissions
97
+ * 4. Stores the archive in the submissions directory
98
+ * 5. Creates a submission record in the manifest
99
+ *
100
+ * @param archivePath - Path to the tar.gz archive to submit
101
+ * @returns Operation result with the submission record
102
+ */
103
+ export async function submitSkill(archivePath) {
104
+ try {
105
+ if (!existsSync(archivePath)) {
106
+ return { success: false, message: `Archive not found: ${archivePath}` };
107
+ }
108
+ if (!archivePath.endsWith('.tar.gz')) {
109
+ return { success: false, message: 'Archive must be a .tar.gz file' };
110
+ }
111
+ // Extract skill.json first, then read archive for checksum (avoids reading file twice)
112
+ let skillManifest;
113
+ try {
114
+ skillManifest = await extractSkillJson(archivePath);
115
+ }
116
+ catch (err) {
117
+ const msg = err instanceof Error ? err.message : String(err);
118
+ return { success: false, message: `Invalid skill archive: ${msg}` };
119
+ }
120
+ // Compute checksum
121
+ const archiveData = await readFile(archivePath);
122
+ const hash = createHash('sha256').update(archiveData).digest('hex');
123
+ const checksum = `sha256:${hash}`;
124
+ // Validate skill.json
125
+ const validationErrors = validateSkillManifest(skillManifest);
126
+ if (validationErrors.length > 0) {
127
+ return { success: false, message: `Validation failed: ${validationErrors.join('; ')}` };
128
+ }
129
+ const skillId = skillManifest.id;
130
+ // Check for duplicate submissions
131
+ const manifest = await loadSubmissionsManifest();
132
+ const existing = manifest.submissions.find((s) => s.skillId === skillId && s.status === 'pending');
133
+ if (existing) {
134
+ return { success: false, message: `Skill "${skillId}" already has a pending submission` };
135
+ }
136
+ // Store the archive
137
+ await mkdir(SUBMISSIONS_DIR, { recursive: true });
138
+ const storedArchiveName = `${skillId}-${skillManifest.version}.tar.gz`;
139
+ const storedArchivePath = path.join(SUBMISSIONS_DIR, storedArchiveName);
140
+ await copyFile(archivePath, storedArchivePath);
141
+ // Create submission record
142
+ const submission = {
143
+ id: randomUUID(),
144
+ skillId,
145
+ name: skillManifest.name,
146
+ description: skillManifest.description,
147
+ author: skillManifest.author || 'Community',
148
+ version: skillManifest.version,
149
+ category: skillManifest.category,
150
+ tags: skillManifest.tags,
151
+ license: skillManifest.license || 'MIT',
152
+ status: 'pending',
153
+ archivePath: storedArchivePath,
154
+ checksum,
155
+ sizeBytes: archiveData.length,
156
+ metadata: {
157
+ assignableRoles: skillManifest.assignableRoles,
158
+ triggers: skillManifest.triggers || [],
159
+ },
160
+ submittedAt: new Date().toISOString(),
161
+ };
162
+ manifest.submissions.push(submission);
163
+ await saveSubmissionsManifest(manifest);
164
+ return {
165
+ success: true,
166
+ message: `Skill "${submission.name}" submitted for review`,
167
+ submission,
168
+ };
169
+ }
170
+ catch (error) {
171
+ const msg = error instanceof Error ? error.message : String(error);
172
+ return { success: false, message: `Submission failed: ${msg}` };
173
+ }
174
+ }
175
+ /**
176
+ * Lists all submissions, optionally filtered by status.
177
+ *
178
+ * @param status - Optional status filter
179
+ * @returns Array of submissions
180
+ */
181
+ export async function listSubmissions(status) {
182
+ const manifest = await loadSubmissionsManifest();
183
+ if (status) {
184
+ return manifest.submissions.filter((s) => s.status === status);
185
+ }
186
+ return manifest.submissions;
187
+ }
188
+ /**
189
+ * Gets a single submission by ID.
190
+ *
191
+ * @param id - Submission ID
192
+ * @returns The submission, or null if not found
193
+ */
194
+ export async function getSubmission(id) {
195
+ const manifest = await loadSubmissionsManifest();
196
+ return manifest.submissions.find((s) => s.id === id) || null;
197
+ }
198
+ /**
199
+ * Reviews a submission — approving or rejecting it.
200
+ *
201
+ * When approved, the skill is added to the local registry and becomes
202
+ * available for installation. When rejected, the archive is removed.
203
+ *
204
+ * @param id - Submission ID
205
+ * @param action - 'approve' or 'reject'
206
+ * @param notes - Optional review notes
207
+ * @returns Operation result
208
+ */
209
+ export async function reviewSubmission(id, action, notes) {
210
+ const manifest = await loadSubmissionsManifest();
211
+ const submission = manifest.submissions.find((s) => s.id === id);
212
+ if (!submission) {
213
+ return { success: false, message: `Submission not found: ${id}` };
214
+ }
215
+ if (submission.status !== 'pending') {
216
+ return { success: false, message: `Submission already ${submission.status}` };
217
+ }
218
+ const newStatus = action === 'approve' ? 'approved' : 'rejected';
219
+ submission.status = newStatus;
220
+ submission.reviewedAt = new Date().toISOString();
221
+ submission.reviewNotes = notes;
222
+ if (action === 'approve') {
223
+ // Add to local registry by creating the item in the assets directory
224
+ const assetsDir = path.join(MARKETPLACE_DIR, 'assets', 'skills', submission.skillId);
225
+ await mkdir(assetsDir, { recursive: true });
226
+ const assetArchiveName = `${submission.skillId}-${submission.version}.tar.gz`;
227
+ const assetPath = path.join(assetsDir, assetArchiveName);
228
+ if (existsSync(submission.archivePath)) {
229
+ await copyFile(submission.archivePath, assetPath);
230
+ }
231
+ // Add to local registry file
232
+ await addToLocalRegistry(submission, assetArchiveName);
233
+ }
234
+ else {
235
+ // Remove archive for rejected submissions
236
+ if (existsSync(submission.archivePath)) {
237
+ await rm(submission.archivePath, { force: true });
238
+ }
239
+ }
240
+ await saveSubmissionsManifest(manifest);
241
+ return {
242
+ success: true,
243
+ message: action === 'approve'
244
+ ? `Approved "${submission.name}" — now available in marketplace`
245
+ : `Rejected "${submission.name}"`,
246
+ };
247
+ }
248
+ /**
249
+ * Adds an approved submission to the local registry file.
250
+ *
251
+ * The local registry augments the remote registry so that locally
252
+ * published skills appear in the marketplace alongside remote ones.
253
+ *
254
+ * @param submission - The approved submission
255
+ * @param archiveFilename - Name of the archive file in assets/
256
+ */
257
+ async function addToLocalRegistry(submission, archiveFilename) {
258
+ const localRegistryPath = path.join(MARKETPLACE_DIR, MARKETPLACE_CONSTANTS.LOCAL_REGISTRY_FILE);
259
+ let registry;
260
+ try {
261
+ const data = await readFile(localRegistryPath, 'utf-8');
262
+ registry = JSON.parse(data);
263
+ }
264
+ catch {
265
+ registry = { items: [] };
266
+ }
267
+ // Remove any existing entry for this skill
268
+ registry.items = registry.items.filter((i) => i.id !== submission.skillId);
269
+ // Add the new entry
270
+ const item = {
271
+ id: submission.skillId,
272
+ type: 'skill',
273
+ name: submission.name,
274
+ description: submission.description,
275
+ author: submission.author,
276
+ version: submission.version,
277
+ category: submission.category,
278
+ tags: submission.tags,
279
+ license: submission.license,
280
+ downloads: 0,
281
+ rating: 0,
282
+ createdAt: submission.submittedAt,
283
+ updatedAt: submission.reviewedAt || submission.submittedAt,
284
+ assets: {
285
+ archive: `skills/${submission.skillId}/${archiveFilename}`,
286
+ checksum: submission.checksum,
287
+ sizeBytes: submission.sizeBytes,
288
+ },
289
+ metadata: submission.metadata,
290
+ };
291
+ registry.items.push(item);
292
+ await writeFile(localRegistryPath, JSON.stringify(registry, null, 2) + '\n');
293
+ }
294
+ /**
295
+ * Extracts and parses skill.json from a tar.gz archive.
296
+ *
297
+ * Handles archives with various prefix structures (skill-id/skill.json,
298
+ * skill-name/skill.json, or flat skill.json).
299
+ *
300
+ * @param archivePath - Path to the tar.gz archive
301
+ * @returns Parsed skill.json content
302
+ * @throws Error if skill.json is not found or invalid
303
+ */
304
+ async function extractSkillJson(archivePath) {
305
+ return new Promise((resolve, reject) => {
306
+ let settled = false;
307
+ const chunks = [];
308
+ const extract = tar.t({
309
+ file: archivePath,
310
+ onReadEntry: (entry) => {
311
+ const entryPath = entry.path;
312
+ // Match skill.json at any level
313
+ if (entryPath.endsWith('skill.json') && !settled) {
314
+ settled = true;
315
+ entry.on('data', (chunk) => chunks.push(chunk));
316
+ entry.on('end', () => {
317
+ try {
318
+ const content = Buffer.concat(chunks).toString('utf-8');
319
+ resolve(JSON.parse(content));
320
+ }
321
+ catch (err) {
322
+ reject(new Error(`Invalid JSON in skill.json: ${err instanceof Error ? err.message : String(err)}`));
323
+ }
324
+ });
325
+ }
326
+ },
327
+ });
328
+ extract.then(() => {
329
+ if (!settled) {
330
+ reject(new Error('skill.json not found in archive'));
331
+ }
332
+ }).catch((err) => {
333
+ if (!settled) {
334
+ reject(err);
335
+ }
336
+ });
337
+ });
338
+ }
339
+ //# sourceMappingURL=marketplace-submission.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace-submission.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/marketplace/marketplace-submission.service.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,11 @@
7
7
  *
8
8
  * @module services/marketplace/marketplace.service
9
9
  */
10
- import { MarketplaceRegistry, MarketplaceItemWithStatus, MarketplaceFilter, InstalledItemsManifest, InstalledItemRecord } from '../../types/marketplace.types.js';
10
+ import { MarketplaceRegistry, MarketplaceItemWithStatus, MarketplaceFilter, InstalledItemsManifest, InstalledItemRecord, type MarketplaceItemType } from '../../types/marketplace.types.js';
11
11
  /**
12
12
  * Fetches the marketplace registry from the Crewly webapp API.
13
- * Uses in-memory caching with a 1-hour TTL.
13
+ * Uses in-memory caching with a 1-hour TTL. Concurrent callers share
14
+ * the same in-flight request to avoid duplicate network fetches.
14
15
  *
15
16
  * On network failure, falls back to the previously cached registry
16
17
  * if one is available. Throws only when no cached data exists.
@@ -79,19 +80,7 @@ export declare function getInstalledItems(): Promise<InstalledItemRecord[]>;
79
80
  * @returns Matching items with install status
80
81
  */
81
82
  export declare function searchItems(query: string): Promise<MarketplaceItemWithStatus[]>;
82
- /**
83
- * Returns the local install path for a marketplace item.
84
- *
85
- * Maps item types to directory names:
86
- * - 'skill' -> 'skills'
87
- * - 'model' -> 'models'
88
- * - 'role' -> 'roles'
89
- *
90
- * @param type - The marketplace item type
91
- * @param id - The marketplace item ID
92
- * @returns Absolute path to the item's install directory
93
- */
94
- export declare function getInstallPath(type: string, id: string): string;
83
+ export declare function getInstallPath(type: MarketplaceItemType, id: string): string;
95
84
  /**
96
85
  * Resets the in-memory registry cache.
97
86
  *
@@ -1 +1 @@
1
- {"version":3,"file":"marketplace.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/marketplace/marketplace.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EACL,mBAAmB,EAEnB,yBAAyB,EACzB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAa1C;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,YAAY,UAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgBtF;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAOpE;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAGlF;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAKnF;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAoChG;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAG9E;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAGxE;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAErF;AA0BD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC"}
1
+ {"version":3,"file":"marketplace.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/marketplace/marketplace.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EACL,mBAAmB,EAEnB,yBAAyB,EACzB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,mBAAmB,EACzB,MAAM,kCAAkC,CAAC;AAyB1C;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,YAAY,UAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAuBtF;AA+HD;;;;;;;GAOG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAOpE;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAGlF;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAOnF;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAuChG;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAG9E;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAGxE;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAErF;AA0CD,wBAAgB,cAAc,CAAC,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAM5E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}