crewly 1.20.133 → 1.20.134
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.
- package/dist/backend/backend/src/constants.d.ts +82 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +87 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/bundle/bundle.controller.d.ts +44 -0
- package/dist/backend/backend/src/controllers/bundle/bundle.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/bundle/bundle.controller.js +122 -0
- package/dist/backend/backend/src/controllers/bundle/bundle.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/bundle/bundle.routes.d.ts +25 -0
- package/dist/backend/backend/src/controllers/bundle/bundle.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/bundle/bundle.routes.js +33 -0
- package/dist/backend/backend/src/controllers/bundle/bundle.routes.js.map +1 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +14 -0
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +4 -0
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/services/bundle/bundle-apply.factory.d.ts +62 -0
- package/dist/backend/backend/src/services/bundle/bundle-apply.factory.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-apply.factory.js +173 -0
- package/dist/backend/backend/src/services/bundle/bundle-apply.factory.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-apply.service.d.ts +359 -0
- package/dist/backend/backend/src/services/bundle/bundle-apply.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-apply.service.js +888 -0
- package/dist/backend/backend/src/services/bundle/bundle-apply.service.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-catalog.d.ts +167 -0
- package/dist/backend/backend/src/services/bundle/bundle-catalog.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-catalog.js +248 -0
- package/dist/backend/backend/src/services/bundle/bundle-catalog.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-connectors.d.ts +43 -0
- package/dist/backend/backend/src/services/bundle/bundle-connectors.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-connectors.js +57 -0
- package/dist/backend/backend/src/services/bundle/bundle-connectors.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-deps.d.ts +37 -0
- package/dist/backend/backend/src/services/bundle/bundle-deps.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-deps.js +60 -0
- package/dist/backend/backend/src/services/bundle/bundle-deps.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-manifest.d.ts +93 -0
- package/dist/backend/backend/src/services/bundle/bundle-manifest.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-manifest.js +532 -0
- package/dist/backend/backend/src/services/bundle/bundle-manifest.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-placeholders.d.ts +100 -0
- package/dist/backend/backend/src/services/bundle/bundle-placeholders.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-placeholders.js +183 -0
- package/dist/backend/backend/src/services/bundle/bundle-placeholders.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-runtime.d.ts +36 -0
- package/dist/backend/backend/src/services/bundle/bundle-runtime.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-runtime.js +38 -0
- package/dist/backend/backend/src/services/bundle/bundle-runtime.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-skill-installer.d.ts +105 -0
- package/dist/backend/backend/src/services/bundle/bundle-skill-installer.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-skill-installer.js +144 -0
- package/dist/backend/backend/src/services/bundle/bundle-skill-installer.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-state.store.d.ts +48 -0
- package/dist/backend/backend/src/services/bundle/bundle-state.store.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-state.store.js +90 -0
- package/dist/backend/backend/src/services/bundle/bundle-state.store.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-team.builder.d.ts +81 -0
- package/dist/backend/backend/src/services/bundle/bundle-team.builder.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-team.builder.js +172 -0
- package/dist/backend/backend/src/services/bundle/bundle-team.builder.js.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-time.d.ts +59 -0
- package/dist/backend/backend/src/services/bundle/bundle-time.d.ts.map +1 -0
- package/dist/backend/backend/src/services/bundle/bundle-time.js +98 -0
- package/dist/backend/backend/src/services/bundle/bundle-time.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +5 -0
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.js +1 -1
- package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/teams-backup.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/teams-backup.service.js +4 -2
- package/dist/backend/backend/src/services/core/teams-backup.service.js.map +1 -1
- package/dist/backend/backend/src/services/onboarding/onboarding-checklist.factory.d.ts.map +1 -1
- package/dist/backend/backend/src/services/onboarding/onboarding-checklist.factory.js +2 -0
- package/dist/backend/backend/src/services/onboarding/onboarding-checklist.factory.js.map +1 -1
- package/dist/backend/backend/src/services/onboarding/onboarding-checklist.service.d.ts +14 -2
- package/dist/backend/backend/src/services/onboarding/onboarding-checklist.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/onboarding/onboarding-checklist.service.js +37 -1
- package/dist/backend/backend/src/services/onboarding/onboarding-checklist.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +21 -0
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +85 -0
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/template/template.service.js +5 -2
- package/dist/backend/backend/src/services/template/template.service.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/cron-task.service.js +4 -2
- package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
- package/dist/backend/backend/src/types/solution-bundle.types.d.ts +367 -0
- package/dist/backend/backend/src/types/solution-bundle.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/solution-bundle.types.js +17 -0
- package/dist/backend/backend/src/types/solution-bundle.types.js.map +1 -0
- package/dist/backend/backend/src/types/team-template.types.d.ts +8 -0
- package/dist/backend/backend/src/types/team-template.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/team-template.types.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +82 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +87 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/bundle/bundle-apply.service.d.ts +359 -0
- package/dist/cli/backend/src/services/bundle/bundle-apply.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-apply.service.js +888 -0
- package/dist/cli/backend/src/services/bundle/bundle-apply.service.js.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-catalog.d.ts +167 -0
- package/dist/cli/backend/src/services/bundle/bundle-catalog.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-catalog.js +248 -0
- package/dist/cli/backend/src/services/bundle/bundle-catalog.js.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-deps.d.ts +37 -0
- package/dist/cli/backend/src/services/bundle/bundle-deps.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-deps.js +60 -0
- package/dist/cli/backend/src/services/bundle/bundle-deps.js.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-manifest.d.ts +93 -0
- package/dist/cli/backend/src/services/bundle/bundle-manifest.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-manifest.js +532 -0
- package/dist/cli/backend/src/services/bundle/bundle-manifest.js.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-placeholders.d.ts +100 -0
- package/dist/cli/backend/src/services/bundle/bundle-placeholders.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-placeholders.js +183 -0
- package/dist/cli/backend/src/services/bundle/bundle-placeholders.js.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-runtime.d.ts +36 -0
- package/dist/cli/backend/src/services/bundle/bundle-runtime.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-runtime.js +38 -0
- package/dist/cli/backend/src/services/bundle/bundle-runtime.js.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-skill-installer.d.ts +105 -0
- package/dist/cli/backend/src/services/bundle/bundle-skill-installer.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-skill-installer.js +144 -0
- package/dist/cli/backend/src/services/bundle/bundle-skill-installer.js.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-state.store.d.ts +48 -0
- package/dist/cli/backend/src/services/bundle/bundle-state.store.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-state.store.js +90 -0
- package/dist/cli/backend/src/services/bundle/bundle-state.store.js.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-team.builder.d.ts +81 -0
- package/dist/cli/backend/src/services/bundle/bundle-team.builder.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-team.builder.js +172 -0
- package/dist/cli/backend/src/services/bundle/bundle-team.builder.js.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-time.d.ts +59 -0
- package/dist/cli/backend/src/services/bundle/bundle-time.d.ts.map +1 -0
- package/dist/cli/backend/src/services/bundle/bundle-time.js +98 -0
- package/dist/cli/backend/src/services/bundle/bundle-time.js.map +1 -0
- package/dist/cli/backend/src/services/core/storage.service.js +1 -1
- package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/cli/backend/src/services/core/teams-backup.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/teams-backup.service.js +4 -2
- package/dist/cli/backend/src/services/core/teams-backup.service.js.map +1 -1
- package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.d.ts +72 -0
- package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.js +389 -0
- package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -0
- package/dist/cli/backend/src/services/messaging/index.d.ts +15 -0
- package/dist/cli/backend/src/services/messaging/index.d.ts.map +1 -0
- package/dist/cli/backend/src/services/messaging/index.js +20 -0
- package/dist/cli/backend/src/services/messaging/index.js.map +1 -0
- package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts +224 -0
- package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/messaging/queue-processor.service.js +969 -0
- package/dist/cli/backend/src/services/messaging/queue-processor.service.js.map +1 -0
- package/dist/cli/backend/src/services/messaging/response-router.service.d.ts +110 -0
- package/dist/cli/backend/src/services/messaging/response-router.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/messaging/response-router.service.js +268 -0
- package/dist/cli/backend/src/services/messaging/response-router.service.js.map +1 -0
- package/dist/cli/backend/src/services/onboarding/onboarding-checklist.service.d.ts +14 -2
- package/dist/cli/backend/src/services/onboarding/onboarding-checklist.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/onboarding/onboarding-checklist.service.js +37 -1
- package/dist/cli/backend/src/services/onboarding/onboarding-checklist.service.js.map +1 -1
- package/dist/cli/backend/src/services/orchestrator/commitment-approval-guard.d.ts +133 -0
- package/dist/cli/backend/src/services/orchestrator/commitment-approval-guard.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/commitment-approval-guard.js +232 -0
- package/dist/cli/backend/src/services/orchestrator/commitment-approval-guard.js.map +1 -0
- package/dist/cli/backend/src/services/skill/skill-catalog.service.d.ts +277 -0
- package/dist/cli/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/skill/skill-catalog.service.js +708 -0
- package/dist/cli/backend/src/services/skill/skill-catalog.service.js.map +1 -0
- package/dist/cli/backend/src/services/skill-setup/skill-install-job.service.d.ts +243 -0
- package/dist/cli/backend/src/services/skill-setup/skill-install-job.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/skill-setup/skill-install-job.service.js +439 -0
- package/dist/cli/backend/src/services/skill-setup/skill-install-job.service.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +21 -0
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +85 -0
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/cli/backend/src/services/template/template.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/template/template.service.js +5 -2
- package/dist/cli/backend/src/services/template/template.service.js.map +1 -1
- package/dist/cli/backend/src/services/workflow/cron-task.service.d.ts +316 -0
- package/dist/cli/backend/src/services/workflow/cron-task.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/workflow/cron-task.service.js +1043 -0
- package/dist/cli/backend/src/services/workflow/cron-task.service.js.map +1 -0
- package/dist/cli/backend/src/types/cron-task.types.d.ts +95 -0
- package/dist/cli/backend/src/types/cron-task.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/cron-task.types.js +10 -0
- package/dist/cli/backend/src/types/cron-task.types.js.map +1 -0
- package/dist/cli/backend/src/types/solution-bundle.types.d.ts +367 -0
- package/dist/cli/backend/src/types/solution-bundle.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/solution-bundle.types.js +17 -0
- package/dist/cli/backend/src/types/solution-bundle.types.js.map +1 -0
- package/dist/cli/backend/src/types/team-template.types.d.ts +8 -0
- package/dist/cli/backend/src/types/team-template.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/team-template.types.js.map +1 -1
- package/dist/cli/cli/src/commands/deploy-bundle.d.ts +160 -0
- package/dist/cli/cli/src/commands/deploy-bundle.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/deploy-bundle.js +386 -0
- package/dist/cli/cli/src/commands/deploy-bundle.js.map +1 -0
- package/dist/cli/cli/src/commands/onboard.d.ts +32 -1
- package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/onboard.js +80 -3
- package/dist/cli/cli/src/commands/onboard.js.map +1 -1
- package/dist/cli/cli/src/constants.d.ts +5 -0
- package/dist/cli/cli/src/constants.d.ts.map +1 -1
- package/dist/cli/cli/src/constants.js +5 -0
- package/dist/cli/cli/src/constants.js.map +1 -1
- package/dist/cli/cli/src/index.js +15 -0
- package/dist/cli/cli/src/index.js.map +1 -1
- package/frontend/dist/assets/{index-e6c403b6.js → index-97bb17d4.js} +274 -274
- package/frontend/dist/index.html +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-manifest.js","sourceRoot":"","sources":["../../../../../../backend/src/services/bundle/bundle-manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Placeholders and answers of solution bundles.
|
|
3
|
+
*
|
|
4
|
+
* A bundle's prompts, norms, SOPs, schedules and tasks contain
|
|
5
|
+
* `{{question_id}}` placeholders. The owner's answers to the bundle's
|
|
6
|
+
* deploy-time questions fill them. Two built-ins (`team_name`,
|
|
7
|
+
* `lead_name`) are filled by the engine per team.
|
|
8
|
+
*
|
|
9
|
+
* @module services/bundle/bundle-placeholders
|
|
10
|
+
*/
|
|
11
|
+
import type { BundleQuestion } from '../../types/solution-bundle.types.js';
|
|
12
|
+
/** Answer values after defaults: a string, or a list for multiselect. */
|
|
13
|
+
export type BundleAnswerValue = string | string[];
|
|
14
|
+
/** Answers keyed by question id. */
|
|
15
|
+
export type BundleAnswers = Record<string, BundleAnswerValue>;
|
|
16
|
+
/** A question the owner has to (re)answer. */
|
|
17
|
+
export interface BundleAnswerProblem {
|
|
18
|
+
id: string;
|
|
19
|
+
label: string;
|
|
20
|
+
/** Owner-facing reason */
|
|
21
|
+
reason: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The owner's answers are incomplete or invalid. `missing` lists required
|
|
25
|
+
* questions without an answer; `invalid` lists answers that do not fit.
|
|
26
|
+
*/
|
|
27
|
+
export declare class BundleAnswersError extends Error {
|
|
28
|
+
readonly missing: BundleAnswerProblem[];
|
|
29
|
+
readonly invalid: BundleAnswerProblem[];
|
|
30
|
+
readonly code = "invalid_answers";
|
|
31
|
+
/**
|
|
32
|
+
* @param missing - Required questions left empty
|
|
33
|
+
* @param invalid - Answers that do not fit their question
|
|
34
|
+
*/
|
|
35
|
+
constructor(missing: BundleAnswerProblem[], invalid: BundleAnswerProblem[]);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A text still contains a placeholder nobody fills (a template bug, or a
|
|
39
|
+
* built-in used outside a team).
|
|
40
|
+
*/
|
|
41
|
+
export declare class BundlePlaceholderError extends Error {
|
|
42
|
+
readonly names: string[];
|
|
43
|
+
readonly where: string;
|
|
44
|
+
readonly code = "unfilled_placeholder";
|
|
45
|
+
/**
|
|
46
|
+
* @param names - Placeholder names without a value
|
|
47
|
+
* @param where - Which text they are in (for the message)
|
|
48
|
+
*/
|
|
49
|
+
constructor(names: string[], where: string);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The placeholder names a text uses, each once, in order of appearance.
|
|
53
|
+
*
|
|
54
|
+
* @param text - Any text (undefined reads as empty)
|
|
55
|
+
* @returns Placeholder names
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* listPlaceholders('给 {{business_name}} 写 {{ platform }}') // ['business_name', 'platform']
|
|
59
|
+
*/
|
|
60
|
+
export declare function listPlaceholders(text: string | undefined): string[];
|
|
61
|
+
/**
|
|
62
|
+
* Turn an answer value into the text that fills a placeholder.
|
|
63
|
+
*
|
|
64
|
+
* @param value - Answer
|
|
65
|
+
* @returns Text (multiselect values joined with 、)
|
|
66
|
+
*/
|
|
67
|
+
export declare function answerText(value: BundleAnswerValue): string;
|
|
68
|
+
/**
|
|
69
|
+
* Replace every placeholder in a text.
|
|
70
|
+
*
|
|
71
|
+
* @param text - Text with `{{name}}` placeholders
|
|
72
|
+
* @param values - Values by placeholder name
|
|
73
|
+
* @param where - Label for the error message (e.g. `norm content-review`)
|
|
74
|
+
* @returns The filled text
|
|
75
|
+
* @throws BundlePlaceholderError when a placeholder has no value
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* fillPlaceholders('你好 {{business_name}}', { business_name: '小周咖啡' }, 'prompt') // '你好 小周咖啡'
|
|
79
|
+
*/
|
|
80
|
+
export declare function fillPlaceholders(text: string, values: Record<string, BundleAnswerValue>, where: string): string;
|
|
81
|
+
/**
|
|
82
|
+
* Check the owner's answers against the questions and apply defaults.
|
|
83
|
+
*
|
|
84
|
+
* - A required question without an answer is reported as missing.
|
|
85
|
+
* - An optional question without an answer takes its `default`.
|
|
86
|
+
* - Select answers must be one of the options; a multiselect accepts a list
|
|
87
|
+
* (or a single value); text answers are capped at MAX_ANSWER_LENGTH.
|
|
88
|
+
* - Answers to unknown question ids are ignored.
|
|
89
|
+
*
|
|
90
|
+
* @param questions - The bundle's questions
|
|
91
|
+
* @param raw - Answers from the client (any JSON)
|
|
92
|
+
* @returns Answers for every question
|
|
93
|
+
* @throws BundleAnswersError listing every missing or invalid answer at once
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* resolveAnswers([{ id: 'tone', label: '语气', type: 'text', required: false, default: '亲切' }], {})
|
|
97
|
+
* // { tone: '亲切' }
|
|
98
|
+
*/
|
|
99
|
+
export declare function resolveAnswers(questions: BundleQuestion[], raw: unknown): BundleAnswers;
|
|
100
|
+
//# sourceMappingURL=bundle-placeholders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-placeholders.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/bundle/bundle-placeholders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAK3E,yEAAyE;AACzE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AAElD,oCAAoC;AACpC,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAE9D,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAQzC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,EAAE;IACvC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,EAAE;IARzC,QAAQ,CAAC,IAAI,qBAAqB;IAElC;;;OAGG;gBAEQ,OAAO,EAAE,mBAAmB,EAAE,EAC9B,OAAO,EAAE,mBAAmB,EAAE;CAQ1C;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAQ7C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM;IARxB,QAAQ,CAAC,IAAI,0BAA0B;IAEvC;;;OAGG;gBAEQ,KAAK,EAAE,MAAM,EAAE,EACf,KAAK,EAAE,MAAM;CAKzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAKnE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAE3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAI/G;AAqBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CA6CvF"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Placeholders and answers of solution bundles.
|
|
3
|
+
*
|
|
4
|
+
* A bundle's prompts, norms, SOPs, schedules and tasks contain
|
|
5
|
+
* `{{question_id}}` placeholders. The owner's answers to the bundle's
|
|
6
|
+
* deploy-time questions fill them. Two built-ins (`team_name`,
|
|
7
|
+
* `lead_name`) are filled by the engine per team.
|
|
8
|
+
*
|
|
9
|
+
* @module services/bundle/bundle-placeholders
|
|
10
|
+
*/
|
|
11
|
+
import { BUNDLE_CONSTANTS } from '../../constants.js';
|
|
12
|
+
/** `{{ name }}`: lower snake case, optional spaces inside the braces. */
|
|
13
|
+
const PLACEHOLDER_PATTERN = /\{\{\s*([a-z][a-z0-9_]*)\s*\}\}/g;
|
|
14
|
+
/**
|
|
15
|
+
* The owner's answers are incomplete or invalid. `missing` lists required
|
|
16
|
+
* questions without an answer; `invalid` lists answers that do not fit.
|
|
17
|
+
*/
|
|
18
|
+
export class BundleAnswersError extends Error {
|
|
19
|
+
missing;
|
|
20
|
+
invalid;
|
|
21
|
+
code = 'invalid_answers';
|
|
22
|
+
/**
|
|
23
|
+
* @param missing - Required questions left empty
|
|
24
|
+
* @param invalid - Answers that do not fit their question
|
|
25
|
+
*/
|
|
26
|
+
constructor(missing, invalid) {
|
|
27
|
+
const parts = [];
|
|
28
|
+
if (missing.length > 0)
|
|
29
|
+
parts.push(`还没回答:${missing.map((m) => `${m.label}(${m.id})`).join('、')}`);
|
|
30
|
+
if (invalid.length > 0)
|
|
31
|
+
parts.push(`回答不对:${invalid.map((m) => `${m.label}(${m.id}):${m.reason}`).join(';')}`);
|
|
32
|
+
super(parts.join('。'));
|
|
33
|
+
this.missing = missing;
|
|
34
|
+
this.invalid = invalid;
|
|
35
|
+
this.name = 'BundleAnswersError';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* A text still contains a placeholder nobody fills (a template bug, or a
|
|
40
|
+
* built-in used outside a team).
|
|
41
|
+
*/
|
|
42
|
+
export class BundlePlaceholderError extends Error {
|
|
43
|
+
names;
|
|
44
|
+
where;
|
|
45
|
+
code = 'unfilled_placeholder';
|
|
46
|
+
/**
|
|
47
|
+
* @param names - Placeholder names without a value
|
|
48
|
+
* @param where - Which text they are in (for the message)
|
|
49
|
+
*/
|
|
50
|
+
constructor(names, where) {
|
|
51
|
+
super(`No value for {{${names.join('}}, {{')}}} in ${where}`);
|
|
52
|
+
this.names = names;
|
|
53
|
+
this.where = where;
|
|
54
|
+
this.name = 'BundlePlaceholderError';
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The placeholder names a text uses, each once, in order of appearance.
|
|
59
|
+
*
|
|
60
|
+
* @param text - Any text (undefined reads as empty)
|
|
61
|
+
* @returns Placeholder names
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* listPlaceholders('给 {{business_name}} 写 {{ platform }}') // ['business_name', 'platform']
|
|
65
|
+
*/
|
|
66
|
+
export function listPlaceholders(text) {
|
|
67
|
+
if (!text)
|
|
68
|
+
return [];
|
|
69
|
+
const seen = new Set();
|
|
70
|
+
for (const match of text.matchAll(PLACEHOLDER_PATTERN))
|
|
71
|
+
seen.add(match[1]);
|
|
72
|
+
return [...seen];
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Turn an answer value into the text that fills a placeholder.
|
|
76
|
+
*
|
|
77
|
+
* @param value - Answer
|
|
78
|
+
* @returns Text (multiselect values joined with 、)
|
|
79
|
+
*/
|
|
80
|
+
export function answerText(value) {
|
|
81
|
+
return Array.isArray(value) ? value.join(BUNDLE_CONSTANTS.MULTISELECT_JOINER) : value;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Replace every placeholder in a text.
|
|
85
|
+
*
|
|
86
|
+
* @param text - Text with `{{name}}` placeholders
|
|
87
|
+
* @param values - Values by placeholder name
|
|
88
|
+
* @param where - Label for the error message (e.g. `norm content-review`)
|
|
89
|
+
* @returns The filled text
|
|
90
|
+
* @throws BundlePlaceholderError when a placeholder has no value
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* fillPlaceholders('你好 {{business_name}}', { business_name: '小周咖啡' }, 'prompt') // '你好 小周咖啡'
|
|
94
|
+
*/
|
|
95
|
+
export function fillPlaceholders(text, values, where) {
|
|
96
|
+
const missing = listPlaceholders(text).filter((name) => values[name] === undefined);
|
|
97
|
+
if (missing.length > 0)
|
|
98
|
+
throw new BundlePlaceholderError(missing, where);
|
|
99
|
+
return text.replace(PLACEHOLDER_PATTERN, (_m, name) => answerText(values[name]));
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Normalize one raw answer (trim, drop empties).
|
|
103
|
+
*
|
|
104
|
+
* @param raw - What the client sent
|
|
105
|
+
* @returns A string, a list, or undefined for "no answer"
|
|
106
|
+
*/
|
|
107
|
+
function normalizeRaw(raw) {
|
|
108
|
+
if (typeof raw === 'string') {
|
|
109
|
+
const trimmed = raw.trim();
|
|
110
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
111
|
+
}
|
|
112
|
+
if (Array.isArray(raw)) {
|
|
113
|
+
const list = raw.filter((v) => typeof v === 'string').map((v) => v.trim()).filter((v) => v.length > 0);
|
|
114
|
+
return list.length > 0 ? list : undefined;
|
|
115
|
+
}
|
|
116
|
+
if (typeof raw === 'number' || typeof raw === 'boolean')
|
|
117
|
+
return String(raw);
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Check the owner's answers against the questions and apply defaults.
|
|
122
|
+
*
|
|
123
|
+
* - A required question without an answer is reported as missing.
|
|
124
|
+
* - An optional question without an answer takes its `default`.
|
|
125
|
+
* - Select answers must be one of the options; a multiselect accepts a list
|
|
126
|
+
* (or a single value); text answers are capped at MAX_ANSWER_LENGTH.
|
|
127
|
+
* - Answers to unknown question ids are ignored.
|
|
128
|
+
*
|
|
129
|
+
* @param questions - The bundle's questions
|
|
130
|
+
* @param raw - Answers from the client (any JSON)
|
|
131
|
+
* @returns Answers for every question
|
|
132
|
+
* @throws BundleAnswersError listing every missing or invalid answer at once
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* resolveAnswers([{ id: 'tone', label: '语气', type: 'text', required: false, default: '亲切' }], {})
|
|
136
|
+
* // { tone: '亲切' }
|
|
137
|
+
*/
|
|
138
|
+
export function resolveAnswers(questions, raw) {
|
|
139
|
+
const input = raw && typeof raw === 'object' && !Array.isArray(raw) ? raw : {};
|
|
140
|
+
const out = {};
|
|
141
|
+
const missing = [];
|
|
142
|
+
const invalid = [];
|
|
143
|
+
for (const q of questions) {
|
|
144
|
+
let value = normalizeRaw(input[q.id]);
|
|
145
|
+
if (value === undefined) {
|
|
146
|
+
if (q.required) {
|
|
147
|
+
missing.push({ id: q.id, label: q.label, reason: '必填' });
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
value = q.default ?? '';
|
|
151
|
+
}
|
|
152
|
+
const allowed = new Set((q.options ?? []).map((o) => o.value));
|
|
153
|
+
if (q.type === 'select') {
|
|
154
|
+
const single = Array.isArray(value) ? value[0] ?? '' : value;
|
|
155
|
+
if (single !== '' && !allowed.has(single)) {
|
|
156
|
+
invalid.push({ id: q.id, label: q.label, reason: `只能选 ${[...allowed].join(' / ')}` });
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
out[q.id] = single;
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
if (q.type === 'multiselect') {
|
|
163
|
+
const list = Array.isArray(value) ? value : value === '' ? [] : [value];
|
|
164
|
+
const bad = list.filter((v) => !allowed.has(v));
|
|
165
|
+
if (bad.length > 0) {
|
|
166
|
+
invalid.push({ id: q.id, label: q.label, reason: `没有这些选项:${bad.join('、')}` });
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
out[q.id] = list;
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
const text = Array.isArray(value) ? value.join(BUNDLE_CONSTANTS.MULTISELECT_JOINER) : value;
|
|
173
|
+
if (text.length > BUNDLE_CONSTANTS.MAX_ANSWER_LENGTH) {
|
|
174
|
+
invalid.push({ id: q.id, label: q.label, reason: `太长了(最多 ${BUNDLE_CONSTANTS.MAX_ANSWER_LENGTH} 字)` });
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
out[q.id] = text;
|
|
178
|
+
}
|
|
179
|
+
if (missing.length > 0 || invalid.length > 0)
|
|
180
|
+
throw new BundleAnswersError(missing, invalid);
|
|
181
|
+
return out;
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=bundle-placeholders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-placeholders.js","sourceRoot":"","sources":["../../../../../../backend/src/services/bundle/bundle-placeholders.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which runtime a bundle's agents run on.
|
|
3
|
+
*
|
|
4
|
+
* The bundle recommends one (e.g. `crewly-agent` + DeepSeek for marketing,
|
|
5
|
+
* `claude-code` / `codex-cli` for development). On the owner's own machine,
|
|
6
|
+
* though, only the orchestrator's harness is known to be installed and
|
|
7
|
+
* logged in; on a hosted server the DeepSeek key is set. The rule:
|
|
8
|
+
*
|
|
9
|
+
* 1. an explicit runtime (API `runtime`, CLI `--runtime`) wins;
|
|
10
|
+
* 2. the recommended runtime when this machine can run it: `crewly-agent`
|
|
11
|
+
* with a DeepSeek key, or a coding harness equal to the orchestrator's;
|
|
12
|
+
* 3. otherwise the orchestrator's harness;
|
|
13
|
+
* 4. otherwise the recommended runtime.
|
|
14
|
+
*
|
|
15
|
+
* @module services/bundle/bundle-runtime
|
|
16
|
+
*/
|
|
17
|
+
/** Inputs of {@link resolveBundleRuntime}. */
|
|
18
|
+
export interface RuntimeResolutionInput {
|
|
19
|
+
recommended: string;
|
|
20
|
+
requested?: string;
|
|
21
|
+
/** The orchestrator's harness on this machine, if recorded */
|
|
22
|
+
orcHarness: string | null;
|
|
23
|
+
/** Whether a DeepSeek API key is configured (crewly-agent can run) */
|
|
24
|
+
hasDeepseekKey: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Pick the runtime for a bundle's members.
|
|
28
|
+
*
|
|
29
|
+
* @param input - Recommended / requested runtime and machine facts
|
|
30
|
+
* @returns Runtime id
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* resolveBundleRuntime({ recommended: 'crewly-agent', orcHarness: 'claude-code', hasDeepseekKey: false }) // 'claude-code'
|
|
34
|
+
*/
|
|
35
|
+
export declare function resolveBundleRuntime(input: RuntimeResolutionInput): string;
|
|
36
|
+
//# sourceMappingURL=bundle-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-runtime.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/bundle/bundle-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,8CAA8C;AAC9C,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,sEAAsE;IACtE,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAM1E"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which runtime a bundle's agents run on.
|
|
3
|
+
*
|
|
4
|
+
* The bundle recommends one (e.g. `crewly-agent` + DeepSeek for marketing,
|
|
5
|
+
* `claude-code` / `codex-cli` for development). On the owner's own machine,
|
|
6
|
+
* though, only the orchestrator's harness is known to be installed and
|
|
7
|
+
* logged in; on a hosted server the DeepSeek key is set. The rule:
|
|
8
|
+
*
|
|
9
|
+
* 1. an explicit runtime (API `runtime`, CLI `--runtime`) wins;
|
|
10
|
+
* 2. the recommended runtime when this machine can run it: `crewly-agent`
|
|
11
|
+
* with a DeepSeek key, or a coding harness equal to the orchestrator's;
|
|
12
|
+
* 3. otherwise the orchestrator's harness;
|
|
13
|
+
* 4. otherwise the recommended runtime.
|
|
14
|
+
*
|
|
15
|
+
* @module services/bundle/bundle-runtime
|
|
16
|
+
*/
|
|
17
|
+
import { RUNTIME_TYPES } from '../../constants.js';
|
|
18
|
+
/**
|
|
19
|
+
* Pick the runtime for a bundle's members.
|
|
20
|
+
*
|
|
21
|
+
* @param input - Recommended / requested runtime and machine facts
|
|
22
|
+
* @returns Runtime id
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* resolveBundleRuntime({ recommended: 'crewly-agent', orcHarness: 'claude-code', hasDeepseekKey: false }) // 'claude-code'
|
|
26
|
+
*/
|
|
27
|
+
export function resolveBundleRuntime(input) {
|
|
28
|
+
if (input.requested)
|
|
29
|
+
return input.requested;
|
|
30
|
+
if (input.recommended === RUNTIME_TYPES.CREWLY_AGENT && input.hasDeepseekKey)
|
|
31
|
+
return input.recommended;
|
|
32
|
+
if (input.orcHarness && input.recommended === input.orcHarness)
|
|
33
|
+
return input.recommended;
|
|
34
|
+
if (input.orcHarness)
|
|
35
|
+
return input.orcHarness;
|
|
36
|
+
return input.recommended;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=bundle-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-runtime.js","sourceRoot":"","sources":["../../../../../../backend/src/services/bundle/bundle-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAYnD;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAA6B;IAChE,IAAI,KAAK,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC,SAAS,CAAC;IAC5C,IAAI,KAAK,CAAC,WAAW,KAAK,aAAa,CAAC,YAAY,IAAI,KAAK,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC,WAAW,CAAC;IACvG,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC,WAAW,CAAC;IACzF,IAAI,KAAK,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC,UAAU,CAAC;IAC9C,OAAO,KAAK,CAAC,WAAW,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill installation for bundles, through the existing marketplace install.
|
|
3
|
+
*
|
|
4
|
+
* Kept behind {@link BundleSkillInstaller} so the apply engine can switch to
|
|
5
|
+
* the skill-autoinstall runner (`feat/skill-autoinstall`: skill discovery
|
|
6
|
+
* over bundled / installed / registry skills + install jobs with setup
|
|
7
|
+
* recipes) when it lands, without touching the engine.
|
|
8
|
+
*
|
|
9
|
+
* A skill counts as available when it is bundled with Crewly
|
|
10
|
+
* (`config/skills/{agent,team-leader,orchestrator}/**`) or already installed
|
|
11
|
+
* from the marketplace. Missing ones are installed with the marketplace
|
|
12
|
+
* installer (`POST /api/marketplace/:id/install` / `crewly install <id>`).
|
|
13
|
+
*
|
|
14
|
+
* @module services/bundle/bundle-skill-installer
|
|
15
|
+
*/
|
|
16
|
+
import type { MarketplaceItem, MarketplaceRegistry } from '../../types/marketplace.types.js';
|
|
17
|
+
import type { BundleSkillInstaller } from './bundle-apply.service.js';
|
|
18
|
+
/**
|
|
19
|
+
* Find a skill folder by id under the bundled skill roots.
|
|
20
|
+
*
|
|
21
|
+
* @param packageRoot - Crewly package root (contains `config/skills`)
|
|
22
|
+
* @param skillId - Skill id (folder name)
|
|
23
|
+
* @returns The folder, or null
|
|
24
|
+
*/
|
|
25
|
+
export declare function findBundledSkill(packageRoot: string, skillId: string): string | null;
|
|
26
|
+
/** What the marketplace installer needs. */
|
|
27
|
+
export interface MarketplaceSkillInstallerDeps {
|
|
28
|
+
/** Crewly package root */
|
|
29
|
+
packageRoot: string;
|
|
30
|
+
/** The Crewly home this deployment writes to */
|
|
31
|
+
crewlyHome: string;
|
|
32
|
+
/**
|
|
33
|
+
* The Crewly home the marketplace installer writes to. The marketplace
|
|
34
|
+
* code always uses `~/.crewly`; when a deployment runs under another
|
|
35
|
+
* CREWLY_HOME (tests, trials) installing would write outside it, so the
|
|
36
|
+
* installer refuses instead.
|
|
37
|
+
*/
|
|
38
|
+
marketplaceHome: string;
|
|
39
|
+
/** Local install folder of a skill */
|
|
40
|
+
installPath(skillId: string): string;
|
|
41
|
+
fetchRegistry(): Promise<MarketplaceRegistry>;
|
|
42
|
+
installItem(item: MarketplaceItem): Promise<{
|
|
43
|
+
success: boolean;
|
|
44
|
+
message: string;
|
|
45
|
+
}>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* A {@link BundleSkillInstaller} over the marketplace.
|
|
49
|
+
*
|
|
50
|
+
* @param deps - Package root, homes and marketplace functions
|
|
51
|
+
* @returns Installer
|
|
52
|
+
*/
|
|
53
|
+
export declare function createMarketplaceSkillInstaller(deps: MarketplaceSkillInstallerDeps): BundleSkillInstaller;
|
|
54
|
+
/** The parts of the skill-setup services the bundle installer uses. */
|
|
55
|
+
export interface SkillSetupInstallerDeps<S extends {
|
|
56
|
+
installed: boolean;
|
|
57
|
+
ready?: boolean;
|
|
58
|
+
} = {
|
|
59
|
+
installed: boolean;
|
|
60
|
+
ready?: boolean;
|
|
61
|
+
}> {
|
|
62
|
+
/** SkillDiscoveryService: resolve + probe (is it set up?) */
|
|
63
|
+
discovery: {
|
|
64
|
+
resolve(id: string): Promise<S | null>;
|
|
65
|
+
probe(skill: S): Promise<S>;
|
|
66
|
+
};
|
|
67
|
+
/** SkillInstallJobService: install + setup as a job */
|
|
68
|
+
jobs: {
|
|
69
|
+
startInstall(input: {
|
|
70
|
+
skillId: string;
|
|
71
|
+
ownerDashboard?: boolean;
|
|
72
|
+
resumeNote?: string;
|
|
73
|
+
}): Promise<{
|
|
74
|
+
kind: 'already-ready';
|
|
75
|
+
} | {
|
|
76
|
+
kind: 'job';
|
|
77
|
+
job: {
|
|
78
|
+
jobId: string;
|
|
79
|
+
};
|
|
80
|
+
}>;
|
|
81
|
+
waitForJob(jobId: string): Promise<{
|
|
82
|
+
state: string;
|
|
83
|
+
log: string;
|
|
84
|
+
}>;
|
|
85
|
+
};
|
|
86
|
+
/** Home this deploy writes to */
|
|
87
|
+
crewlyHome: string;
|
|
88
|
+
/** Home the marketplace download writes to (always ~/.crewly today) */
|
|
89
|
+
marketplaceHome: string;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Bundle skill installer on the skill-setup services (specs/skill-auto-install.md):
|
|
93
|
+
* a skill counts as available only when its declared dependencies are set up,
|
|
94
|
+
* and installing runs that setup too (brew/apt/model downloads). Deploying a
|
|
95
|
+
* bundle is the owner's own action, so third-party skills in it install as
|
|
96
|
+
* the owner (`ownerDashboard`).
|
|
97
|
+
*
|
|
98
|
+
* @param deps - Discovery and install-job services
|
|
99
|
+
* @returns Installer for the apply engine
|
|
100
|
+
*/
|
|
101
|
+
export declare function createSkillSetupInstaller<S extends {
|
|
102
|
+
installed: boolean;
|
|
103
|
+
ready?: boolean;
|
|
104
|
+
}>(deps: SkillSetupInstallerDeps<S>): BundleSkillInstaller;
|
|
105
|
+
//# sourceMappingURL=bundle-skill-installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-skill-installer.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/bundle/bundle-skill-installer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC7F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAStE;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA6BpF;AAED,4CAA4C;AAC5C,MAAM,WAAW,6BAA6B;IAC5C,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC9C,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpF;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,6BAA6B,GAAG,oBAAoB,CAwBzG;AAED,uEAAuE;AACvE,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE;IAClI,6DAA6D;IAC7D,SAAS,EAAE;QACT,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACvC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;KAC7B,CAAC;IACF,uDAAuD;IACvD,IAAI,EAAE;QACJ,YAAY,CAAC,KAAK,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,cAAc,CAAC,EAAE,OAAO,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAC9F;YAAE,IAAI,EAAE,eAAe,CAAA;SAAE,GAAG;YAAE,IAAI,EAAE,KAAK,CAAC;YAAC,GAAG,EAAE;gBAAE,KAAK,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CACpE,CAAC;QACF,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACpE,CAAC;IACF,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,SAAS;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,IAAI,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CA4BnJ"}
|