skill-flow 1.0.3 → 1.0.5
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/README.md +40 -3
- package/README.zh.md +40 -3
- package/dist/adapters/channel-adapters.js +11 -3
- package/dist/adapters/channel-adapters.js.map +1 -1
- package/dist/cli.js +69 -37
- package/dist/cli.js.map +1 -1
- package/dist/domain/types.d.ts +54 -1
- package/dist/services/config-coordinator.d.ts +38 -0
- package/dist/services/config-coordinator.js +81 -0
- package/dist/services/config-coordinator.js.map +1 -0
- package/dist/services/doctor-service.d.ts +2 -0
- package/dist/services/doctor-service.js +62 -0
- package/dist/services/doctor-service.js.map +1 -1
- package/dist/services/inventory-service.d.ts +3 -1
- package/dist/services/inventory-service.js +12 -5
- package/dist/services/inventory-service.js.map +1 -1
- package/dist/services/skill-flow.d.ts +50 -26
- package/dist/services/skill-flow.js +502 -89
- package/dist/services/skill-flow.js.map +1 -1
- package/dist/services/source-service.d.ts +20 -10
- package/dist/services/source-service.js +359 -75
- package/dist/services/source-service.js.map +1 -1
- package/dist/services/workflow-service.d.ts +2 -2
- package/dist/services/workflow-service.js +17 -4
- package/dist/services/workflow-service.js.map +1 -1
- package/dist/services/workspace-bootstrap-service.d.ts +25 -0
- package/dist/services/workspace-bootstrap-service.js +140 -0
- package/dist/services/workspace-bootstrap-service.js.map +1 -0
- package/dist/state/store.d.ts +16 -0
- package/dist/state/store.js +93 -18
- package/dist/state/store.js.map +1 -1
- package/dist/tests/clawhub.test.d.ts +1 -0
- package/dist/tests/clawhub.test.js +63 -0
- package/dist/tests/clawhub.test.js.map +1 -0
- package/dist/tests/cli-utils.test.d.ts +1 -0
- package/dist/tests/cli-utils.test.js +15 -0
- package/dist/tests/cli-utils.test.js.map +1 -0
- package/dist/tests/config-coordinator.test.d.ts +1 -0
- package/dist/tests/config-coordinator.test.js +172 -0
- package/dist/tests/config-coordinator.test.js.map +1 -0
- package/dist/tests/config-integration.test.d.ts +1 -0
- package/dist/tests/config-integration.test.js +238 -0
- package/dist/tests/config-integration.test.js.map +1 -0
- package/dist/tests/config-ui-utils.test.d.ts +1 -0
- package/dist/tests/config-ui-utils.test.js +389 -0
- package/dist/tests/config-ui-utils.test.js.map +1 -0
- package/dist/tests/find-and-naming-utils.test.d.ts +1 -0
- package/dist/tests/find-and-naming-utils.test.js +127 -0
- package/dist/tests/find-and-naming-utils.test.js.map +1 -0
- package/dist/tests/skill-flow.test.js +334 -881
- package/dist/tests/skill-flow.test.js.map +1 -1
- package/dist/tests/source-lifecycle.test.d.ts +1 -0
- package/dist/tests/source-lifecycle.test.js +605 -0
- package/dist/tests/source-lifecycle.test.js.map +1 -0
- package/dist/tests/target-definitions.test.d.ts +1 -0
- package/dist/tests/target-definitions.test.js +51 -0
- package/dist/tests/target-definitions.test.js.map +1 -0
- package/dist/tests/test-helpers.d.ts +18 -0
- package/dist/tests/test-helpers.js +123 -0
- package/dist/tests/test-helpers.js.map +1 -0
- package/dist/tui/config-app.d.ts +147 -24
- package/dist/tui/config-app.js +1081 -335
- package/dist/tui/config-app.js.map +1 -1
- package/dist/tui/find-app.d.ts +1 -1
- package/dist/tui/find-app.js +36 -4
- package/dist/tui/find-app.js.map +1 -1
- package/dist/utils/clawhub.d.ts +3 -0
- package/dist/utils/clawhub.js +32 -3
- package/dist/utils/clawhub.js.map +1 -1
- package/dist/utils/cli.d.ts +1 -0
- package/dist/utils/cli.js +15 -0
- package/dist/utils/cli.js.map +1 -0
- package/dist/utils/constants.d.ts +4 -0
- package/dist/utils/constants.js +31 -0
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/fs.d.ts +5 -0
- package/dist/utils/fs.js +52 -1
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/naming.d.ts +1 -0
- package/dist/utils/naming.js +7 -1
- package/dist/utils/naming.js.map +1 -1
- package/dist/utils/source-id.js +4 -0
- package/dist/utils/source-id.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,4 +2,6 @@ import type { DoctorReport, LockFile, Manifest, Result } from "../domain/types.j
|
|
|
2
2
|
export declare class DoctorService {
|
|
3
3
|
private readonly adapters;
|
|
4
4
|
run(manifest: Manifest, lockFile: LockFile): Promise<Result<DoctorReport>>;
|
|
5
|
+
private getLeafPath;
|
|
6
|
+
private reportUnmanagedExternalSkills;
|
|
5
7
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import path from "node:path";
|
|
1
2
|
import fs from "node:fs/promises";
|
|
2
3
|
import { createChannelAdapters } from "../adapters/channel-adapters.js";
|
|
3
4
|
import { hashDirectory, isBrokenSymlink, pathExists } from "../utils/fs.js";
|
|
@@ -9,6 +10,8 @@ export class DoctorService {
|
|
|
9
10
|
const issues = [];
|
|
10
11
|
for (const source of manifest.sources) {
|
|
11
12
|
const binding = manifest.bindings[source.id] ?? { targets: {} };
|
|
13
|
+
const sourceLock = lockFile.sources.find((item) => item.id === source.id);
|
|
14
|
+
const invalidLeafPaths = new Set(sourceLock?.invalidLeafs.map((leaf) => leaf.path) ?? []);
|
|
12
15
|
for (const adapter of this.adapters) {
|
|
13
16
|
const configured = binding.targets[adapter.target];
|
|
14
17
|
if (!configured?.enabled) {
|
|
@@ -27,6 +30,20 @@ export class DoctorService {
|
|
|
27
30
|
continue;
|
|
28
31
|
}
|
|
29
32
|
for (const leafId of configured.leafIds) {
|
|
33
|
+
const selectedPath = this.getLeafPath(source.id, leafId);
|
|
34
|
+
if (selectedPath && invalidLeafPaths.has(selectedPath)) {
|
|
35
|
+
issues.push({
|
|
36
|
+
severity: "error",
|
|
37
|
+
sourceId: source.id,
|
|
38
|
+
sourceLabel: formatGroupLabel(source),
|
|
39
|
+
target: adapter.target,
|
|
40
|
+
leafId,
|
|
41
|
+
leafLabel: path.basename(selectedPath) || selectedPath,
|
|
42
|
+
code: "INVALIDATED_SELECTED_LEAF",
|
|
43
|
+
message: "This selected skill is invalid in the current source inventory.",
|
|
44
|
+
});
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
30
47
|
const leaf = lockFile.leafInventory.find((item) => item.id === leafId);
|
|
31
48
|
const deployment = lockFile.deployments.find((item) => item.sourceId === source.id &&
|
|
32
49
|
item.leafId === leafId &&
|
|
@@ -116,6 +133,7 @@ export class DoctorService {
|
|
|
116
133
|
}
|
|
117
134
|
}
|
|
118
135
|
}
|
|
136
|
+
await this.reportUnmanagedExternalSkills(lockFile, issues);
|
|
119
137
|
for (const deployment of lockFile.deployments) {
|
|
120
138
|
const sourceStillExists = manifest.sources.some((source) => source.id === deployment.sourceId);
|
|
121
139
|
if (!sourceStillExists) {
|
|
@@ -138,5 +156,49 @@ export class DoctorService {
|
|
|
138
156
|
: "HEALTHY";
|
|
139
157
|
return ok({ status, issues });
|
|
140
158
|
}
|
|
159
|
+
getLeafPath(sourceId, leafId) {
|
|
160
|
+
const prefix = `${sourceId}:`;
|
|
161
|
+
if (!leafId.startsWith(prefix)) {
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
return leafId.slice(prefix.length);
|
|
165
|
+
}
|
|
166
|
+
async reportUnmanagedExternalSkills(lockFile, issues) {
|
|
167
|
+
const managedTargetPaths = new Set(lockFile.deployments.map((deployment) => path.resolve(deployment.targetPath)));
|
|
168
|
+
const seenPaths = new Set();
|
|
169
|
+
for (const adapter of this.adapters) {
|
|
170
|
+
const detection = await adapter.detect();
|
|
171
|
+
if (!detection.available) {
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
const entries = await fs.readdir(detection.rootPath, { withFileTypes: true });
|
|
175
|
+
for (const entry of entries) {
|
|
176
|
+
const skillDir = path.join(detection.rootPath, entry.name);
|
|
177
|
+
const isDirectoryLike = entry.isDirectory() ||
|
|
178
|
+
(entry.isSymbolicLink() &&
|
|
179
|
+
(await fs.stat(skillDir).then((stats) => stats.isDirectory()).catch(() => false)));
|
|
180
|
+
if (!isDirectoryLike) {
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
if (!(await pathExists(path.join(skillDir, "SKILL.md")))) {
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
const resolvedPath = await fs.realpath(skillDir).catch(() => path.resolve(skillDir));
|
|
187
|
+
if (managedTargetPaths.has(path.resolve(skillDir)) || seenPaths.has(resolvedPath)) {
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
seenPaths.add(resolvedPath);
|
|
191
|
+
issues.push({
|
|
192
|
+
severity: "warning",
|
|
193
|
+
sourceId: `unmanaged:${adapter.target}:${entry.name}`,
|
|
194
|
+
sourceLabel: "Unmanaged external skill",
|
|
195
|
+
target: adapter.target,
|
|
196
|
+
leafLabel: entry.name,
|
|
197
|
+
code: "UNMANAGED_EXTERNAL_TARGET_SKILL",
|
|
198
|
+
message: `Unmanaged skill discovered at ${resolvedPath}.`,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
141
203
|
}
|
|
142
204
|
//# sourceMappingURL=doctor-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-service.js","sourceRoot":"","sources":["../../src/services/doctor-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAQxE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,MAAM,OAAO,aAAa;IACP,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IAEpD,KAAK,CAAC,GAAG,CAAC,QAAkB,EAAE,QAAkB;QAC9C,MAAM,MAAM,GAAkB,EAAE,CAAC;QAEjC,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor-service.js","sourceRoot":"","sources":["../../src/services/doctor-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import type { InvalidLeafRecord, LeafRecord } from "../domain/types.js";
|
|
1
|
+
import type { DuplicateLeafRecord, InvalidLeafRecord, LeafRecord } from "../domain/types.js";
|
|
2
2
|
type InventoryScan = {
|
|
3
3
|
leafs: LeafRecord[];
|
|
4
4
|
invalidLeafs: InvalidLeafRecord[];
|
|
5
|
+
duplicateLeafs: DuplicateLeafRecord[];
|
|
6
|
+
skillFileCount: number;
|
|
5
7
|
};
|
|
6
8
|
export declare class InventoryService {
|
|
7
9
|
private static readonly IGNORED_DIRECTORIES;
|
|
@@ -10,6 +10,7 @@ export class InventoryService {
|
|
|
10
10
|
const skillFiles = await this.findSkillFiles(checkoutPath);
|
|
11
11
|
const candidates = [];
|
|
12
12
|
const invalidLeafs = [];
|
|
13
|
+
const duplicateLeafs = [];
|
|
13
14
|
for (const skillFilePath of skillFiles) {
|
|
14
15
|
const leafRoot = path.dirname(skillFilePath);
|
|
15
16
|
const relativePath = path.relative(checkoutPath, leafRoot) || ".";
|
|
@@ -42,10 +43,16 @@ export class InventoryService {
|
|
|
42
43
|
dedupeKey: `${parsed.name}\n${parsed.description}`,
|
|
43
44
|
});
|
|
44
45
|
}
|
|
45
|
-
const leafs = this.dedupeCandidates(candidates,
|
|
46
|
+
const leafs = this.dedupeCandidates(candidates, duplicateLeafs);
|
|
46
47
|
leafs.sort((left, right) => left.relativePath.localeCompare(right.relativePath));
|
|
48
|
+
duplicateLeafs.sort((left, right) => left.path.localeCompare(right.path));
|
|
47
49
|
invalidLeafs.sort((left, right) => left.path.localeCompare(right.path));
|
|
48
|
-
return {
|
|
50
|
+
return {
|
|
51
|
+
leafs,
|
|
52
|
+
invalidLeafs,
|
|
53
|
+
duplicateLeafs,
|
|
54
|
+
skillFileCount: skillFiles.length,
|
|
55
|
+
};
|
|
49
56
|
}
|
|
50
57
|
async findSkillFiles(rootPath) {
|
|
51
58
|
const discovered = [];
|
|
@@ -122,14 +129,14 @@ export class InventoryService {
|
|
|
122
129
|
metadataWarnings,
|
|
123
130
|
};
|
|
124
131
|
}
|
|
125
|
-
dedupeCandidates(candidates,
|
|
132
|
+
dedupeCandidates(candidates, duplicateLeafs) {
|
|
126
133
|
const keptByKey = new Map();
|
|
127
134
|
for (const candidate of candidates) {
|
|
128
135
|
if (keptByKey.has(candidate.dedupeKey)) {
|
|
129
136
|
const kept = keptByKey.get(candidate.dedupeKey);
|
|
130
|
-
|
|
137
|
+
duplicateLeafs.push({
|
|
131
138
|
path: candidate.relativePath,
|
|
132
|
-
|
|
139
|
+
keptPath: kept.relativePath,
|
|
133
140
|
});
|
|
134
141
|
continue;
|
|
135
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inventory-service.js","sourceRoot":"","sources":["../../src/services/inventory-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"inventory-service.js","sourceRoot":"","sources":["../../src/services/inventory-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
import type { DeploymentAction, DeploymentPlan, DeploymentTargetName, DoctorReport, LockFile, Manifest, Result, SkillCandidate, SourceBinding,
|
|
1
|
+
import type { DraftBinding, DeploymentAction, DeploymentPlan, DeploymentTargetName, DoctorReport, LockFile, Manifest, Result, SkillCandidate, SourceBinding, SourceUpdateResult, WorkflowSummary } from "../domain/types.js";
|
|
2
2
|
import { StateStore } from "../state/store.js";
|
|
3
3
|
import { DeploymentApplier } from "./deployment-applier.js";
|
|
4
|
+
import { ConfigCoordinator } from "./config-coordinator.js";
|
|
4
5
|
import { DeploymentPlanner } from "./deployment-planner.js";
|
|
5
6
|
import { DoctorService } from "./doctor-service.js";
|
|
6
7
|
import { InventoryService } from "./inventory-service.js";
|
|
7
8
|
import { SourceService } from "./source-service.js";
|
|
8
9
|
import { WorkflowService } from "./workflow-service.js";
|
|
9
|
-
import type { AddSourceOptions } from "./source-service.js";
|
|
10
|
-
|
|
11
|
-
enabledTargets: DeploymentTargetName[];
|
|
12
|
-
selectedLeafIds: string[];
|
|
13
|
-
};
|
|
10
|
+
import type { AddSourceOptions, SourceSnapshot } from "./source-service.js";
|
|
11
|
+
import { WorkspaceBootstrapService, type BootstrapEvent } from "./workspace-bootstrap-service.js";
|
|
14
12
|
export declare class SkillFlowApp {
|
|
15
13
|
readonly store: StateStore;
|
|
16
14
|
readonly inventoryService: InventoryService;
|
|
@@ -19,28 +17,35 @@ export declare class SkillFlowApp {
|
|
|
19
17
|
readonly applier: DeploymentApplier;
|
|
20
18
|
readonly doctorService: DoctorService;
|
|
21
19
|
readonly workflowService: WorkflowService;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
ok: false;
|
|
29
|
-
data?: import("./source-service.js").SourceSnapshot;
|
|
30
|
-
warnings: Warning[];
|
|
31
|
-
errors: import("../domain/types.js").Failure[];
|
|
32
|
-
}>;
|
|
20
|
+
readonly workspaceBootstrapService: WorkspaceBootstrapService;
|
|
21
|
+
readonly configCoordinator: ConfigCoordinator;
|
|
22
|
+
private mutationQueue;
|
|
23
|
+
constructor();
|
|
24
|
+
addSource(locator: string, options?: AddSourceOptions): Promise<Result<SourceSnapshot>>;
|
|
25
|
+
private addSourceImpl;
|
|
33
26
|
findSkills(query: string): Promise<Result<{
|
|
34
27
|
candidates: SkillCandidate[];
|
|
35
28
|
}>>;
|
|
36
29
|
listWorkflows(): Promise<Result<{
|
|
37
30
|
summaries: WorkflowSummary[];
|
|
38
31
|
}>>;
|
|
32
|
+
private listWorkflowsImpl;
|
|
39
33
|
getConfigData(): Promise<Result<{
|
|
40
34
|
manifest: Manifest;
|
|
41
35
|
lockFile: LockFile;
|
|
42
36
|
summaries: WorkflowSummary[];
|
|
43
37
|
}>>;
|
|
38
|
+
private getConfigDataImpl;
|
|
39
|
+
bootstrapWorkspaceState(onEvent?: (event: BootstrapEvent) => void): Promise<Result<{
|
|
40
|
+
availableTargets: DeploymentTargetName[];
|
|
41
|
+
manifest: Manifest;
|
|
42
|
+
lockFile: LockFile;
|
|
43
|
+
summaries: WorkflowSummary[];
|
|
44
|
+
initialDrafts: Record<string, DraftBinding>;
|
|
45
|
+
audit: DoctorReport;
|
|
46
|
+
importedSourceIds: string[];
|
|
47
|
+
}>>;
|
|
48
|
+
private bootstrapWorkspaceStateImpl;
|
|
44
49
|
getAvailableTargets(): Promise<DeploymentTargetName[]>;
|
|
45
50
|
previewDraft(sourceId: string, draft: DraftBinding): Promise<Result<{
|
|
46
51
|
plan: DeploymentPlan;
|
|
@@ -51,16 +56,22 @@ export declare class SkillFlowApp {
|
|
|
51
56
|
actions: DeploymentAction[];
|
|
52
57
|
draft: DraftBinding;
|
|
53
58
|
}>>;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
changed: boolean;
|
|
58
|
-
addedLeafIds: string[];
|
|
59
|
-
removedLeafIds: string[];
|
|
60
|
-
invalidatedLeafIds: string[];
|
|
61
|
-
}>;
|
|
62
|
-
}>>;
|
|
59
|
+
private applyDraftImpl;
|
|
60
|
+
updateSources(sourceIds?: string[]): Promise<Result<SourceUpdateResult>>;
|
|
61
|
+
private updateSourcesImpl;
|
|
63
62
|
doctor(): Promise<Result<DoctorReport>>;
|
|
63
|
+
private doctorImpl;
|
|
64
|
+
repairTargets(sourceIds?: string[]): Promise<Result<{
|
|
65
|
+
actions: DeploymentAction[];
|
|
66
|
+
}>>;
|
|
67
|
+
private repairTargetsImpl;
|
|
68
|
+
repairSource(sourceIds?: string[]): Promise<Result<SourceUpdateResult>>;
|
|
69
|
+
private repairSourceImpl;
|
|
70
|
+
repairState(sourceIds?: string[]): Promise<Result<{
|
|
71
|
+
repairedSourceIds: string[];
|
|
72
|
+
removedDeploymentCount: number;
|
|
73
|
+
}>>;
|
|
74
|
+
private repairStateImpl;
|
|
64
75
|
uninstall(sourceIds: string[]): Promise<Result<{
|
|
65
76
|
removed: string[];
|
|
66
77
|
removedRefs: Array<{
|
|
@@ -70,8 +81,11 @@ export declare class SkillFlowApp {
|
|
|
70
81
|
}>;
|
|
71
82
|
warnings: string[];
|
|
72
83
|
}>>;
|
|
84
|
+
private uninstallImpl;
|
|
73
85
|
bindingFromDraft(draft: DraftBinding): SourceBinding;
|
|
86
|
+
private pruneMissingCheckoutsImpl;
|
|
74
87
|
private persistNormalizedBindings;
|
|
88
|
+
private runSerializedMutation;
|
|
75
89
|
private normalizeBindings;
|
|
76
90
|
private draftFromBinding;
|
|
77
91
|
private selectLeafIdsForRequestedPath;
|
|
@@ -79,6 +93,13 @@ export declare class SkillFlowApp {
|
|
|
79
93
|
private findExactDuplicateLeafSelections;
|
|
80
94
|
private getExactDuplicateKey;
|
|
81
95
|
private planForAffectedSources;
|
|
96
|
+
private planForSources;
|
|
97
|
+
private planAndApplySources;
|
|
98
|
+
private rebuildDeploymentState;
|
|
99
|
+
private buildProjectedLinkNameMap;
|
|
100
|
+
private findManagedDeploymentOnDisk;
|
|
101
|
+
private matchesManagedProjection;
|
|
102
|
+
private getDeploymentKey;
|
|
82
103
|
private hasActiveTargets;
|
|
83
104
|
private buildLocalCandidates;
|
|
84
105
|
private searchBuiltinGitSource;
|
|
@@ -88,5 +109,8 @@ export declare class SkillFlowApp {
|
|
|
88
109
|
private getSourceRank;
|
|
89
110
|
private getQueryScore;
|
|
90
111
|
private getCandidateKey;
|
|
112
|
+
private getCandidateTitle;
|
|
113
|
+
private normalizeSearchQuery;
|
|
91
114
|
private formatSourceLabel;
|
|
115
|
+
private applySourceUpdateResults;
|
|
92
116
|
}
|