crewly 1.20.130 → 1.20.132

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 (136) hide show
  1. package/config/skills/agent/core/find-skill/SKILL.md +58 -0
  2. package/config/skills/agent/core/find-skill/execute.sh +67 -0
  3. package/config/skills/agent/core/find-skill/execute.test.sh +69 -0
  4. package/config/skills/agent/core/generate-pdf/SKILL.md +24 -29
  5. package/config/skills/agent/core/generate-pdf/execute.sh +22 -78
  6. package/config/skills/agent/core/generate-pdf/execute.test.sh +45 -0
  7. package/config/skills/agent/core/install-skill/SKILL.md +67 -0
  8. package/config/skills/agent/core/install-skill/execute.sh +80 -0
  9. package/config/skills/agent/core/install-skill/execute.test.sh +74 -0
  10. package/config/skills/agent/pdf-tools/SKILL.md +103 -0
  11. package/config/skills/agent/pdf-tools/execute.sh +301 -0
  12. package/config/skills/agent/pdf-tools/execute.test.sh +218 -0
  13. package/config/skills/agent/pdf-tools/instructions.md +14 -0
  14. package/config/skills/agent/pdf-tools/pdf_tools.py +268 -0
  15. package/config/skills/agent/pdf-tools/skill.json +103 -0
  16. package/config/skills/agent/pdf-tools/style.css +143 -0
  17. package/config/skills/agent/transcribe-audio/SKILL.md +42 -5
  18. package/config/skills/agent/transcribe-audio/execute.sh +44 -11
  19. package/config/skills/agent/transcribe-audio/execute.test.sh +90 -0
  20. package/config/skills/agent/transcribe-audio/install-whisper-cpp.sh +126 -0
  21. package/config/skills/agent/transcribe-audio/install-whisper-cpp.test.sh +69 -0
  22. package/config/skills/agent/transcribe-audio/skill.json +67 -6
  23. package/config/skills/marketplace-registry.ts +8 -1
  24. package/config/skills/registry.json +337 -3
  25. package/dist/backend/backend/src/constants.d.ts +71 -0
  26. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  27. package/dist/backend/backend/src/constants.js +96 -0
  28. package/dist/backend/backend/src/constants.js.map +1 -1
  29. package/dist/backend/backend/src/controllers/skill-setup/skill-setup.controller.d.ts +49 -0
  30. package/dist/backend/backend/src/controllers/skill-setup/skill-setup.controller.d.ts.map +1 -0
  31. package/dist/backend/backend/src/controllers/skill-setup/skill-setup.controller.js +185 -0
  32. package/dist/backend/backend/src/controllers/skill-setup/skill-setup.controller.js.map +1 -0
  33. package/dist/backend/backend/src/controllers/skill-setup/skill-setup.routes.d.ts +21 -0
  34. package/dist/backend/backend/src/controllers/skill-setup/skill-setup.routes.d.ts.map +1 -0
  35. package/dist/backend/backend/src/controllers/skill-setup/skill-setup.routes.js +29 -0
  36. package/dist/backend/backend/src/controllers/skill-setup/skill-setup.routes.js.map +1 -0
  37. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  38. package/dist/backend/backend/src/routes/api.routes.js +5 -0
  39. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  40. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts +14 -0
  41. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  42. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +33 -1
  43. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  44. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  45. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +7 -0
  46. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  47. package/dist/backend/backend/src/services/marketplace/marketplace.service.d.ts.map +1 -1
  48. package/dist/backend/backend/src/services/marketplace/marketplace.service.js +11 -3
  49. package/dist/backend/backend/src/services/marketplace/marketplace.service.js.map +1 -1
  50. package/dist/backend/backend/src/services/skill-setup/skill-discovery.service.d.ts +281 -0
  51. package/dist/backend/backend/src/services/skill-setup/skill-discovery.service.d.ts.map +1 -0
  52. package/dist/backend/backend/src/services/skill-setup/skill-discovery.service.js +559 -0
  53. package/dist/backend/backend/src/services/skill-setup/skill-discovery.service.js.map +1 -0
  54. package/dist/backend/backend/src/services/skill-setup/skill-install-job.service.d.ts +243 -0
  55. package/dist/backend/backend/src/services/skill-setup/skill-install-job.service.d.ts.map +1 -0
  56. package/dist/backend/backend/src/services/skill-setup/skill-install-job.service.js +439 -0
  57. package/dist/backend/backend/src/services/skill-setup/skill-install-job.service.js.map +1 -0
  58. package/dist/backend/backend/src/services/skill-setup/skill-setup-manifest.d.ts +138 -0
  59. package/dist/backend/backend/src/services/skill-setup/skill-setup-manifest.d.ts.map +1 -0
  60. package/dist/backend/backend/src/services/skill-setup/skill-setup-manifest.js +281 -0
  61. package/dist/backend/backend/src/services/skill-setup/skill-setup-manifest.js.map +1 -0
  62. package/dist/backend/backend/src/services/skill-setup/skill-setup-runner.service.d.ts +338 -0
  63. package/dist/backend/backend/src/services/skill-setup/skill-setup-runner.service.d.ts.map +1 -0
  64. package/dist/backend/backend/src/services/skill-setup/skill-setup-runner.service.js +761 -0
  65. package/dist/backend/backend/src/services/skill-setup/skill-setup-runner.service.js.map +1 -0
  66. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  67. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +6 -0
  68. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  69. package/dist/backend/backend/src/types/marketplace.types.d.ts +16 -1
  70. package/dist/backend/backend/src/types/marketplace.types.d.ts.map +1 -1
  71. package/dist/backend/backend/src/utils/inbound-file-hint.utils.d.ts +55 -0
  72. package/dist/backend/backend/src/utils/inbound-file-hint.utils.d.ts.map +1 -0
  73. package/dist/backend/backend/src/utils/inbound-file-hint.utils.js +78 -0
  74. package/dist/backend/backend/src/utils/inbound-file-hint.utils.js.map +1 -0
  75. package/dist/backend/build-info.json +2 -2
  76. package/dist/cli/backend/src/constants.d.ts +71 -0
  77. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  78. package/dist/cli/backend/src/constants.js +96 -0
  79. package/dist/cli/backend/src/constants.js.map +1 -1
  80. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts +14 -0
  81. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  82. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +33 -1
  83. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  84. package/dist/cli/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  85. package/dist/cli/backend/src/services/event-bus/event-bus.service.js +7 -0
  86. package/dist/cli/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  87. package/dist/cli/backend/src/services/marketplace/marketplace.service.d.ts +101 -0
  88. package/dist/cli/backend/src/services/marketplace/marketplace.service.d.ts.map +1 -0
  89. package/dist/cli/backend/src/services/marketplace/marketplace.service.js +392 -0
  90. package/dist/cli/backend/src/services/marketplace/marketplace.service.js.map +1 -0
  91. package/dist/cli/backend/src/services/skill-setup/skill-discovery.service.d.ts +281 -0
  92. package/dist/cli/backend/src/services/skill-setup/skill-discovery.service.d.ts.map +1 -0
  93. package/dist/cli/backend/src/services/skill-setup/skill-discovery.service.js +559 -0
  94. package/dist/cli/backend/src/services/skill-setup/skill-discovery.service.js.map +1 -0
  95. package/dist/cli/backend/src/services/skill-setup/skill-setup-manifest.d.ts +138 -0
  96. package/dist/cli/backend/src/services/skill-setup/skill-setup-manifest.d.ts.map +1 -0
  97. package/dist/cli/backend/src/services/skill-setup/skill-setup-manifest.js +281 -0
  98. package/dist/cli/backend/src/services/skill-setup/skill-setup-manifest.js.map +1 -0
  99. package/dist/cli/backend/src/services/skill-setup/skill-setup-runner.service.d.ts +338 -0
  100. package/dist/cli/backend/src/services/skill-setup/skill-setup-runner.service.d.ts.map +1 -0
  101. package/dist/cli/backend/src/services/skill-setup/skill-setup-runner.service.js +761 -0
  102. package/dist/cli/backend/src/services/skill-setup/skill-setup-runner.service.js.map +1 -0
  103. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  104. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +6 -0
  105. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  106. package/dist/cli/backend/src/types/marketplace.types.d.ts +219 -0
  107. package/dist/cli/backend/src/types/marketplace.types.d.ts.map +1 -0
  108. package/dist/cli/backend/src/types/marketplace.types.js +6 -0
  109. package/dist/cli/backend/src/types/marketplace.types.js.map +1 -0
  110. package/dist/cli/backend/src/utils/inbound-file-hint.utils.d.ts +55 -0
  111. package/dist/cli/backend/src/utils/inbound-file-hint.utils.d.ts.map +1 -0
  112. package/dist/cli/backend/src/utils/inbound-file-hint.utils.js +78 -0
  113. package/dist/cli/backend/src/utils/inbound-file-hint.utils.js.map +1 -0
  114. package/dist/cli/backend/src/utils/package-root.d.ts +15 -0
  115. package/dist/cli/backend/src/utils/package-root.d.ts.map +1 -0
  116. package/dist/cli/backend/src/utils/package-root.js +38 -0
  117. package/dist/cli/backend/src/utils/package-root.js.map +1 -0
  118. package/dist/cli/cli/src/commands/install.d.ts +13 -1
  119. package/dist/cli/cli/src/commands/install.d.ts.map +1 -1
  120. package/dist/cli/cli/src/commands/install.js +40 -3
  121. package/dist/cli/cli/src/commands/install.js.map +1 -1
  122. package/dist/cli/cli/src/commands/skills.d.ts +58 -0
  123. package/dist/cli/cli/src/commands/skills.d.ts.map +1 -0
  124. package/dist/cli/cli/src/commands/skills.js +132 -0
  125. package/dist/cli/cli/src/commands/skills.js.map +1 -0
  126. package/dist/cli/cli/src/index.js +12 -3
  127. package/dist/cli/cli/src/index.js.map +1 -1
  128. package/dist/cli/cli/src/utils/archive-creator.d.ts +14 -0
  129. package/dist/cli/cli/src/utils/archive-creator.d.ts.map +1 -1
  130. package/dist/cli/cli/src/utils/archive-creator.js +24 -3
  131. package/dist/cli/cli/src/utils/archive-creator.js.map +1 -1
  132. package/dist/cli/cli/src/utils/package-validator.d.ts +2 -0
  133. package/dist/cli/cli/src/utils/package-validator.d.ts.map +1 -1
  134. package/dist/cli/cli/src/utils/package-validator.js +16 -0
  135. package/dist/cli/cli/src/utils/package-validator.js.map +1 -1
  136. package/package.json +1 -1
@@ -0,0 +1,281 @@
1
+ /**
2
+ * Skill discovery — find a skill for a capability, locally or in the marketplace.
3
+ *
4
+ * Backs `find-skill` and `install-skill` (specs/skill-auto-install.md). It
5
+ * merges three sources into one candidate list:
6
+ *
7
+ * 1. **Bundled** skills shipped in the npm package (`config/skills/agent/**`).
8
+ * They are present on every install, so `find-skill` works for them even
9
+ * when the registry has no entry or the network is down.
10
+ * 2. **Installed** marketplace skills (`~/.crewly/marketplace/skills/<id>`).
11
+ * 3. **Registry** entries (public GitHub registry + crewlyai.com), fetched
12
+ * with the existing marketplace service (cached, deduplicated).
13
+ *
14
+ * ## What "official" means
15
+ *
16
+ * A skill is official — and may be installed by an agent without asking — when
17
+ * it is **bundled with Crewly**, or it is listed in an **official registry**
18
+ * (the public GitHub registry or crewlyai.com, both curated by Crewly
19
+ * maintainers) with `author` "Crewly Team" / "crewly" or `metadata.verified:
20
+ * true`. Entries from the machine-local registry (`local-registry.json`,
21
+ * written by local publishing) are never official, whatever author they claim.
22
+ * A marketplace skill installed earlier counts as official only when the
23
+ * registry still lists it as official.
24
+ *
25
+ * @module services/skill-setup/skill-discovery.service
26
+ */
27
+ import type { MarketplaceItem, MarketplaceRegistry, InstalledItemsManifest } from '../../types/marketplace.types.js';
28
+ import { type SkillSetupManifest } from './skill-setup-manifest.js';
29
+ import { type SkillSetupRunner } from './skill-setup-runner.service.js';
30
+ /** Where a candidate was found. */
31
+ export type SkillSource = 'bundled' | 'installed' | 'registry';
32
+ /** Setup state reported for a candidate. */
33
+ export interface CandidateSetup {
34
+ /** The skill declares a setup block */
35
+ declared: boolean;
36
+ /** Minutes a first-time setup takes (quoted to the user) */
37
+ estimatedMinutes?: number;
38
+ /** Result of a check-only probe (undefined when not probed) */
39
+ satisfied?: boolean;
40
+ /** Steps that are missing (check-only probe) */
41
+ missing?: string[];
42
+ }
43
+ /** One skill that could provide a capability. */
44
+ export interface SkillCandidate {
45
+ /** The id `install-skill --id` takes */
46
+ id: string;
47
+ name: string;
48
+ description: string;
49
+ tags: string[];
50
+ triggers: string[];
51
+ source: SkillSource;
52
+ official: boolean;
53
+ /** Why it is (or is not) official, in words */
54
+ officialReason: string;
55
+ author?: string;
56
+ version?: string;
57
+ /** The skill's files are on this machine */
58
+ installed: boolean;
59
+ /** Installed and its setup (if any) is satisfied — usable right now */
60
+ ready?: boolean;
61
+ /** Local skill directory */
62
+ skillDir?: string;
63
+ /** Local entry point (`<skillDir>/execute.sh`) */
64
+ executePath?: string;
65
+ /** Registry id when it differs from `id` */
66
+ registryId?: string;
67
+ setup: CandidateSetup;
68
+ /** Ranking score (higher is better) */
69
+ score: number;
70
+ }
71
+ /** A candidate plus the internals install-skill needs. */
72
+ export interface ResolvedSkill extends SkillCandidate {
73
+ /** Parsed, validated setup manifest (local copy preferred, registry fallback) */
74
+ manifest?: SkillSetupManifest;
75
+ /** Setup block that failed validation (message) */
76
+ manifestError?: string;
77
+ /** The registry entry, when there is one */
78
+ registryItem?: MarketplaceItem;
79
+ }
80
+ /** Injectable dependencies. */
81
+ export interface SkillDiscoveryDeps {
82
+ /** Root of bundled agent skills (default: `<package>/config/skills/agent`) */
83
+ bundledRoot?: string;
84
+ /** Directory of marketplace-installed skills */
85
+ installedRoot?: string;
86
+ fetchRegistry?: () => Promise<MarketplaceRegistry>;
87
+ loadManifest?: () => Promise<InstalledItemsManifest>;
88
+ runner?: SkillSetupRunner;
89
+ }
90
+ /**
91
+ * Split a query into lower-case tokens, dropping stopwords.
92
+ *
93
+ * @param text - Free text
94
+ * @returns Tokens (CJK runs stay whole)
95
+ */
96
+ export declare function tokenize(text: string): string[];
97
+ /**
98
+ * Expand tokens with synonyms (QUERY_SYNONYMS). CJK tokens also match a
99
+ * synonym key they contain ("语音消息" contains "语音").
100
+ *
101
+ * @param tokens - Query tokens
102
+ * @returns Original tokens (weight 1) and synonyms (weight 0.6), deduplicated
103
+ */
104
+ export declare function expandTokens(tokens: string[]): Array<{
105
+ token: string;
106
+ weight: number;
107
+ }>;
108
+ /** The text fields a candidate is scored on. */
109
+ export interface ScoredDoc {
110
+ id: string;
111
+ name: string;
112
+ tags: string[];
113
+ triggers: string[];
114
+ description: string;
115
+ }
116
+ /**
117
+ * Score how well a skill matches a query.
118
+ *
119
+ * Each query token (and synonym, at reduced weight) takes its best match:
120
+ * exact id/name 10, exact tag 6, id/name contains 5, trigger contains 3,
121
+ * tag overlap 3, description contains 1.5. The whole query appearing in a
122
+ * trigger or the description adds 4.
123
+ *
124
+ * @param query - Free-text need ("transcribe a voice message")
125
+ * @param doc - Candidate fields
126
+ * @returns Score (0 = no match)
127
+ */
128
+ export declare function scoreSkill(query: string, doc: ScoredDoc): number;
129
+ /**
130
+ * Whether a registry entry is official (see module docs).
131
+ *
132
+ * @param item - Registry entry (with registrySource set by fetchRegistry)
133
+ * @returns `{ official, reason }`
134
+ */
135
+ export declare function registryOfficial(item: MarketplaceItem): {
136
+ official: boolean;
137
+ reason: string;
138
+ };
139
+ /** Finds and describes skills. */
140
+ export declare class SkillDiscoveryService {
141
+ private readonly bundledRoot;
142
+ private readonly installedRoot;
143
+ private readonly fetchRegistryFn;
144
+ private readonly loadManifestFn;
145
+ private readonly runner;
146
+ /**
147
+ * @param deps - Injectable dependencies (all optional)
148
+ */
149
+ constructor(deps?: SkillDiscoveryDeps);
150
+ /**
151
+ * `<package root>/config/skills/agent`, or null when the package root cannot be found.
152
+ *
153
+ * @returns Absolute path or null
154
+ */
155
+ static defaultBundledRoot(): string | null;
156
+ /**
157
+ * Where to start looking for the package root.
158
+ *
159
+ * The compiled backend and CLI are ES modules, where `__dirname` does not
160
+ * exist (a bare reference throws); under ts-jest it does. The entry script
161
+ * (`process.argv[1]`, realpath'd through the global `bin` symlink) is
162
+ * always inside the package at runtime, so it is the anchor that works
163
+ * for `crewly` and the backend alike; cwd is the last resort.
164
+ *
165
+ * @returns Candidate start directories, most reliable first
166
+ */
167
+ static packageSearchStarts(): string[];
168
+ /**
169
+ * Find skills for a need, best first.
170
+ *
171
+ * @param query - What the agent needs ("transcribe voice message", "read pdf")
172
+ * @param options - `limit` (default FIND_MAX_RESULTS); `probe` runs check-only setup on the top few (default true)
173
+ * @returns Ranked candidates (score > 0) and whether the registry was reachable
174
+ *
175
+ * @example
176
+ * ```ts
177
+ * const { candidates } = await discovery.find('transcribe a voice message');
178
+ * candidates[0].id; // 'transcribe-audio'
179
+ * ```
180
+ */
181
+ find(query: string, options?: {
182
+ limit?: number;
183
+ probe?: boolean;
184
+ }): Promise<{
185
+ candidates: SkillCandidate[];
186
+ registryAvailable: boolean;
187
+ }>;
188
+ /**
189
+ * Resolve one skill by id (local id, directory name or registry id).
190
+ *
191
+ * @param id - Skill id
192
+ * @returns The skill, or null when neither bundled, installed nor in the registry
193
+ */
194
+ resolve(id: string): Promise<ResolvedSkill | null>;
195
+ /**
196
+ * Resolve a skill that is on this machine (bundled or installed) without
197
+ * touching the network — for `crewly skills setup` offline.
198
+ *
199
+ * Official status of an installed marketplace skill needs the registry, so
200
+ * here it is reported as not official; bundled skills are official.
201
+ *
202
+ * @param id - Skill id or directory name
203
+ * @returns The skill, or null when it is not on this machine
204
+ */
205
+ resolveLocal(id: string): Promise<ResolvedSkill | null>;
206
+ /**
207
+ * Pick a candidate by id, registry id or directory name.
208
+ *
209
+ * @param id - Wanted id
210
+ * @param all - Candidates
211
+ * @returns The match or null
212
+ */
213
+ private pick;
214
+ /**
215
+ * Run a check-only setup probe and record the result on the candidate.
216
+ *
217
+ * @param c - Candidate (mutated)
218
+ * @returns The same candidate
219
+ */
220
+ probe(c: ResolvedSkill): Promise<ResolvedSkill>;
221
+ /**
222
+ * Strip internals for API output.
223
+ *
224
+ * @param c - Resolved candidate
225
+ * @returns Public candidate
226
+ */
227
+ publicView(c: ResolvedSkill): SkillCandidate;
228
+ /**
229
+ * Build every candidate from all sources.
230
+ *
231
+ * @param options - `registry: false` skips the registry fetch
232
+ * @returns Candidates and registry reachability
233
+ */
234
+ private collect;
235
+ /**
236
+ * Candidate for a local (bundled or installed) skill.
237
+ *
238
+ * @param local - Local skill
239
+ * @param item - Matching registry entry, if any
240
+ * @returns Candidate
241
+ */
242
+ private fromLocal;
243
+ /**
244
+ * Candidate for a registry-only skill.
245
+ *
246
+ * @param item - Registry entry
247
+ * @param installed - The marketplace manifest lists it (files may still be missing)
248
+ * @returns Candidate
249
+ */
250
+ private fromRegistry;
251
+ /**
252
+ * Validate a raw setup block and record it on the candidate.
253
+ *
254
+ * @param c - Candidate (mutated)
255
+ * @param raw - Raw `setup` value
256
+ */
257
+ private attachSetup;
258
+ /**
259
+ * Scan a skills root: direct skill dirs, and one level of category dirs.
260
+ *
261
+ * @param root - Directory
262
+ * @param source - Label for what is found
263
+ * @returns Local skills
264
+ */
265
+ private scanRoot;
266
+ /**
267
+ * Read one skill directory (SKILL.md frontmatter wins over skill.json, as in the registry builder).
268
+ *
269
+ * @param dir - Skill directory
270
+ * @param source - Label
271
+ * @returns The skill, or null when the directory has no manifest
272
+ */
273
+ private readLocal;
274
+ }
275
+ /**
276
+ * The process-wide discovery service.
277
+ *
278
+ * @returns The service
279
+ */
280
+ export declare function getSkillDiscoveryService(): SkillDiscoveryService;
281
+ //# sourceMappingURL=skill-discovery.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-discovery.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/skill-setup/skill-discovery.service.ts"],"names":[],"mappings":"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"}