skill-flow 1.0.4 → 1.0.6
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 +2 -2
- package/README.zh.md +1 -1
- package/dist/adapters/channel-adapters.js +11 -3
- package/dist/adapters/channel-adapters.js.map +1 -1
- package/dist/cli.js +64 -6
- package/dist/cli.js.map +1 -1
- package/dist/domain/types.d.ts +42 -0
- 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 +4 -1
- package/dist/services/inventory-service.js +54 -26
- package/dist/services/inventory-service.js.map +1 -1
- package/dist/services/skill-flow.d.ts +38 -16
- package/dist/services/skill-flow.js +484 -194
- package/dist/services/skill-flow.js.map +1 -1
- package/dist/services/source-service.d.ts +14 -11
- package/dist/services/source-service.js +389 -81
- package/dist/services/source-service.js.map +1 -1
- package/dist/services/workspace-bootstrap-service.js +2 -10
- package/dist/services/workspace-bootstrap-service.js.map +1 -1
- package/dist/state/store.d.ts +16 -0
- package/dist/state/store.js +93 -19
- package/dist/state/store.js.map +1 -1
- package/dist/tests/add-selection-and-find-command.test.d.ts +1 -0
- package/dist/tests/add-selection-and-find-command.test.js +89 -0
- package/dist/tests/add-selection-and-find-command.test.js.map +1 -0
- 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 +473 -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/inventory-service-precedence.test.d.ts +1 -0
- package/dist/tests/inventory-service-precedence.test.js +42 -0
- package/dist/tests/inventory-service-precedence.test.js.map +1 -0
- package/dist/tests/skill-flow.test.js +311 -889
- 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/source-parsing-compatibility.test.d.ts +1 -0
- package/dist/tests/source-parsing-compatibility.test.js +71 -0
- package/dist/tests/source-parsing-compatibility.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 +150 -24
- package/dist/tui/config-app.js +1034 -338
- package/dist/tui/config-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/find-command.js +10 -2
- package/dist/utils/find-command.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/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import { hashDirectory, slugify } from "../utils/fs.js";
|
|
3
|
+
import { hashDirectory, pathExists, slugify } from "../utils/fs.js";
|
|
4
4
|
export class InventoryService {
|
|
5
5
|
static IGNORED_DIRECTORIES = new Set([
|
|
6
6
|
".git",
|
|
@@ -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,39 +43,66 @@ 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 = [];
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
const seen = new Set();
|
|
60
|
+
const rootSkillPath = path.join(rootPath, "SKILL.md");
|
|
61
|
+
if (await pathExists(rootSkillPath)) {
|
|
62
|
+
discovered.push(rootSkillPath);
|
|
63
|
+
seen.add(rootSkillPath);
|
|
64
|
+
}
|
|
65
|
+
await this.walkSkillTree(path.join(rootPath, "skills"), discovered, seen, false);
|
|
66
|
+
await this.walkSkillTree(path.join(rootPath, "skills", ".curated"), discovered, seen, true);
|
|
67
|
+
await this.walkSkillTree(path.join(rootPath, "skills", ".experimental"), discovered, seen, true);
|
|
68
|
+
await this.walkSkillTree(path.join(rootPath, "skills", ".system"), discovered, seen, true);
|
|
69
|
+
await this.walkSkillTree(rootPath, discovered, seen, true);
|
|
70
|
+
return discovered;
|
|
71
|
+
}
|
|
72
|
+
async walkSkillTree(currentPath, discovered, seen, includeHiddenDirectories) {
|
|
73
|
+
if (!(await pathExists(currentPath))) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const entries = await fs.readdir(currentPath, { withFileTypes: true });
|
|
77
|
+
const files = entries
|
|
78
|
+
.filter((entry) => entry.isFile())
|
|
79
|
+
.sort((left, right) => left.name.localeCompare(right.name));
|
|
80
|
+
const visibleDirectories = entries
|
|
81
|
+
.filter((entry) => entry.isDirectory() &&
|
|
82
|
+
!InventoryService.IGNORED_DIRECTORIES.has(entry.name) &&
|
|
83
|
+
!entry.name.startsWith("."))
|
|
84
|
+
.sort((left, right) => left.name.localeCompare(right.name));
|
|
85
|
+
const hiddenDirectories = includeHiddenDirectories
|
|
86
|
+
? entries
|
|
63
87
|
.filter((entry) => entry.isDirectory() &&
|
|
64
88
|
!InventoryService.IGNORED_DIRECTORIES.has(entry.name) &&
|
|
65
89
|
entry.name.startsWith("."))
|
|
66
|
-
.sort((left, right) => left.name.localeCompare(right.name))
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
90
|
+
.sort((left, right) => left.name.localeCompare(right.name))
|
|
91
|
+
: [];
|
|
92
|
+
for (const entry of files) {
|
|
93
|
+
if (entry.name !== "SKILL.md") {
|
|
94
|
+
continue;
|
|
71
95
|
}
|
|
72
|
-
|
|
73
|
-
|
|
96
|
+
const skillFilePath = path.join(currentPath, entry.name);
|
|
97
|
+
if (seen.has(skillFilePath)) {
|
|
98
|
+
continue;
|
|
74
99
|
}
|
|
100
|
+
seen.add(skillFilePath);
|
|
101
|
+
discovered.push(skillFilePath);
|
|
102
|
+
}
|
|
103
|
+
for (const entry of [...visibleDirectories, ...hiddenDirectories]) {
|
|
104
|
+
await this.walkSkillTree(path.join(currentPath, entry.name), discovered, seen, includeHiddenDirectories);
|
|
75
105
|
}
|
|
76
|
-
await walk(rootPath);
|
|
77
|
-
return discovered;
|
|
78
106
|
}
|
|
79
107
|
parseSkillFile(raw, parentDirName) {
|
|
80
108
|
const lines = raw.split(/\r?\n/);
|
|
@@ -122,14 +150,14 @@ export class InventoryService {
|
|
|
122
150
|
metadataWarnings,
|
|
123
151
|
};
|
|
124
152
|
}
|
|
125
|
-
dedupeCandidates(candidates,
|
|
153
|
+
dedupeCandidates(candidates, duplicateLeafs) {
|
|
126
154
|
const keptByKey = new Map();
|
|
127
155
|
for (const candidate of candidates) {
|
|
128
156
|
if (keptByKey.has(candidate.dedupeKey)) {
|
|
129
157
|
const kept = keptByKey.get(candidate.dedupeKey);
|
|
130
|
-
|
|
158
|
+
duplicateLeafs.push({
|
|
131
159
|
path: candidate.relativePath,
|
|
132
|
-
|
|
160
|
+
keptPath: kept.relativePath,
|
|
133
161
|
});
|
|
134
162
|
continue;
|
|
135
163
|
}
|
|
@@ -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,6 +1,7 @@
|
|
|
1
|
-
import type { DeploymentAction, DeploymentPlan, DeploymentTargetName, DoctorReport, LockFile, Manifest, Result, SkillCandidate, SourceBinding, WorkflowSummary } from "../domain/types.js";
|
|
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";
|
|
@@ -8,10 +9,6 @@ import { SourceService } from "./source-service.js";
|
|
|
8
9
|
import { WorkflowService } from "./workflow-service.js";
|
|
9
10
|
import type { AddSourceOptions, SourceSnapshot } from "./source-service.js";
|
|
10
11
|
import { WorkspaceBootstrapService, type BootstrapEvent } from "./workspace-bootstrap-service.js";
|
|
11
|
-
export type DraftBinding = {
|
|
12
|
-
enabledTargets: DeploymentTargetName[];
|
|
13
|
-
selectedLeafIds: string[];
|
|
14
|
-
};
|
|
15
12
|
export declare class SkillFlowApp {
|
|
16
13
|
readonly store: StateStore;
|
|
17
14
|
readonly inventoryService: InventoryService;
|
|
@@ -21,18 +18,24 @@ export declare class SkillFlowApp {
|
|
|
21
18
|
readonly doctorService: DoctorService;
|
|
22
19
|
readonly workflowService: WorkflowService;
|
|
23
20
|
readonly workspaceBootstrapService: WorkspaceBootstrapService;
|
|
21
|
+
readonly configCoordinator: ConfigCoordinator;
|
|
22
|
+
private mutationQueue;
|
|
23
|
+
constructor();
|
|
24
24
|
addSource(locator: string, options?: AddSourceOptions): Promise<Result<SourceSnapshot>>;
|
|
25
|
+
private addSourceImpl;
|
|
25
26
|
findSkills(query: string): Promise<Result<{
|
|
26
27
|
candidates: SkillCandidate[];
|
|
27
28
|
}>>;
|
|
28
29
|
listWorkflows(): Promise<Result<{
|
|
29
30
|
summaries: WorkflowSummary[];
|
|
30
31
|
}>>;
|
|
32
|
+
private listWorkflowsImpl;
|
|
31
33
|
getConfigData(): Promise<Result<{
|
|
32
34
|
manifest: Manifest;
|
|
33
35
|
lockFile: LockFile;
|
|
34
36
|
summaries: WorkflowSummary[];
|
|
35
37
|
}>>;
|
|
38
|
+
private getConfigDataImpl;
|
|
36
39
|
bootstrapWorkspaceState(onEvent?: (event: BootstrapEvent) => void): Promise<Result<{
|
|
37
40
|
availableTargets: DeploymentTargetName[];
|
|
38
41
|
manifest: Manifest;
|
|
@@ -42,6 +45,7 @@ export declare class SkillFlowApp {
|
|
|
42
45
|
audit: DoctorReport;
|
|
43
46
|
importedSourceIds: string[];
|
|
44
47
|
}>>;
|
|
48
|
+
private bootstrapWorkspaceStateImpl;
|
|
45
49
|
getAvailableTargets(): Promise<DeploymentTargetName[]>;
|
|
46
50
|
previewDraft(sourceId: string, draft: DraftBinding): Promise<Result<{
|
|
47
51
|
plan: DeploymentPlan;
|
|
@@ -52,16 +56,22 @@ export declare class SkillFlowApp {
|
|
|
52
56
|
actions: DeploymentAction[];
|
|
53
57
|
draft: DraftBinding;
|
|
54
58
|
}>>;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
changed: boolean;
|
|
59
|
-
addedLeafIds: string[];
|
|
60
|
-
removedLeafIds: string[];
|
|
61
|
-
invalidatedLeafIds: string[];
|
|
62
|
-
}>;
|
|
63
|
-
}>>;
|
|
59
|
+
private applyDraftImpl;
|
|
60
|
+
updateSources(sourceIds?: string[]): Promise<Result<SourceUpdateResult>>;
|
|
61
|
+
private updateSourcesImpl;
|
|
64
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;
|
|
65
75
|
uninstall(sourceIds: string[]): Promise<Result<{
|
|
66
76
|
removed: string[];
|
|
67
77
|
removedRefs: Array<{
|
|
@@ -71,15 +81,26 @@ export declare class SkillFlowApp {
|
|
|
71
81
|
}>;
|
|
72
82
|
warnings: string[];
|
|
73
83
|
}>>;
|
|
84
|
+
private uninstallImpl;
|
|
74
85
|
bindingFromDraft(draft: DraftBinding): SourceBinding;
|
|
86
|
+
private pruneMissingCheckoutsImpl;
|
|
75
87
|
private persistNormalizedBindings;
|
|
88
|
+
private runSerializedMutation;
|
|
76
89
|
private normalizeBindings;
|
|
77
90
|
private draftFromBinding;
|
|
78
91
|
private selectLeafIdsForRequestedPath;
|
|
92
|
+
private normalizeRequestedPath;
|
|
79
93
|
private prepareManifestForDraft;
|
|
80
94
|
private findExactDuplicateLeafSelections;
|
|
81
95
|
private getExactDuplicateKey;
|
|
82
96
|
private planForAffectedSources;
|
|
97
|
+
private planForSources;
|
|
98
|
+
private planAndApplySources;
|
|
99
|
+
private rebuildDeploymentState;
|
|
100
|
+
private buildProjectedLinkNameMap;
|
|
101
|
+
private findManagedDeploymentOnDisk;
|
|
102
|
+
private matchesManagedProjection;
|
|
103
|
+
private getDeploymentKey;
|
|
83
104
|
private hasActiveTargets;
|
|
84
105
|
private buildLocalCandidates;
|
|
85
106
|
private searchBuiltinGitSource;
|
|
@@ -89,7 +110,8 @@ export declare class SkillFlowApp {
|
|
|
89
110
|
private getSourceRank;
|
|
90
111
|
private getQueryScore;
|
|
91
112
|
private getCandidateKey;
|
|
113
|
+
private getCandidateTitle;
|
|
114
|
+
private normalizeSearchQuery;
|
|
92
115
|
private formatSourceLabel;
|
|
93
|
-
private
|
|
94
|
-
private applySelectionModeForUpdatedSources;
|
|
116
|
+
private applySourceUpdateResults;
|
|
95
117
|
}
|