skill-flow 1.0.8 → 1.3.3
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 +209 -131
- package/README.zh.md +170 -131
- package/dist/bridge-command.d.ts +9 -0
- package/dist/bridge-command.js +422 -0
- package/dist/bridge-command.js.map +1 -0
- package/dist/cli.js +68 -8
- package/dist/cli.js.map +1 -1
- package/package.json +11 -2
- package/dist/adapters/channel-adapters.d.ts +0 -8
- package/dist/adapters/channel-adapters.js +0 -64
- package/dist/adapters/channel-adapters.js.map +0 -1
- package/dist/domain/types.d.ts +0 -234
- package/dist/domain/types.js +0 -2
- package/dist/domain/types.js.map +0 -1
- package/dist/services/config-coordinator.d.ts +0 -38
- package/dist/services/config-coordinator.js +0 -83
- package/dist/services/config-coordinator.js.map +0 -1
- package/dist/services/deployment-applier.d.ts +0 -10
- package/dist/services/deployment-applier.js +0 -84
- package/dist/services/deployment-applier.js.map +0 -1
- package/dist/services/deployment-planner.d.ts +0 -16
- package/dist/services/deployment-planner.js +0 -366
- package/dist/services/deployment-planner.js.map +0 -1
- package/dist/services/doctor-service.d.ts +0 -7
- package/dist/services/doctor-service.js +0 -204
- package/dist/services/doctor-service.js.map +0 -1
- package/dist/services/inventory-service.d.ts +0 -17
- package/dist/services/inventory-service.js +0 -216
- package/dist/services/inventory-service.js.map +0 -1
- package/dist/services/skill-flow.d.ts +0 -136
- package/dist/services/skill-flow.js +0 -1210
- package/dist/services/skill-flow.js.map +0 -1
- package/dist/services/source-service.d.ts +0 -57
- package/dist/services/source-service.js +0 -809
- package/dist/services/source-service.js.map +0 -1
- package/dist/services/workflow-service.d.ts +0 -5
- package/dist/services/workflow-service.js +0 -45
- package/dist/services/workflow-service.js.map +0 -1
- package/dist/services/workspace-bootstrap-service.d.ts +0 -25
- package/dist/services/workspace-bootstrap-service.js +0 -140
- package/dist/services/workspace-bootstrap-service.js.map +0 -1
- package/dist/state/store.d.ts +0 -35
- package/dist/state/store.js +0 -151
- package/dist/state/store.js.map +0 -1
- package/dist/tests/add-flow-model.test.d.ts +0 -1
- package/dist/tests/add-flow-model.test.js +0 -108
- package/dist/tests/add-flow-model.test.js.map +0 -1
- package/dist/tests/add-flow-ui.test.d.ts +0 -1
- package/dist/tests/add-flow-ui.test.js +0 -16
- package/dist/tests/add-flow-ui.test.js.map +0 -1
- package/dist/tests/add-prepare-flow.test.d.ts +0 -1
- package/dist/tests/add-prepare-flow.test.js +0 -166
- package/dist/tests/add-prepare-flow.test.js.map +0 -1
- package/dist/tests/add-selection-and-find-command.test.d.ts +0 -1
- package/dist/tests/add-selection-and-find-command.test.js +0 -89
- package/dist/tests/add-selection-and-find-command.test.js.map +0 -1
- package/dist/tests/clawhub.test.d.ts +0 -1
- package/dist/tests/clawhub.test.js +0 -63
- package/dist/tests/clawhub.test.js.map +0 -1
- package/dist/tests/cli-utils.test.d.ts +0 -1
- package/dist/tests/cli-utils.test.js +0 -24
- package/dist/tests/cli-utils.test.js.map +0 -1
- package/dist/tests/config-coordinator.test.d.ts +0 -1
- package/dist/tests/config-coordinator.test.js +0 -219
- package/dist/tests/config-coordinator.test.js.map +0 -1
- package/dist/tests/config-integration.test.d.ts +0 -1
- package/dist/tests/config-integration.test.js +0 -276
- package/dist/tests/config-integration.test.js.map +0 -1
- package/dist/tests/config-ui-utils.test.d.ts +0 -1
- package/dist/tests/config-ui-utils.test.js +0 -523
- package/dist/tests/config-ui-utils.test.js.map +0 -1
- package/dist/tests/find-and-naming-utils.test.d.ts +0 -1
- package/dist/tests/find-and-naming-utils.test.js +0 -127
- package/dist/tests/find-and-naming-utils.test.js.map +0 -1
- package/dist/tests/inventory-service-precedence.test.d.ts +0 -1
- package/dist/tests/inventory-service-precedence.test.js +0 -42
- package/dist/tests/inventory-service-precedence.test.js.map +0 -1
- package/dist/tests/skill-flow.test.d.ts +0 -1
- package/dist/tests/skill-flow.test.js +0 -991
- package/dist/tests/skill-flow.test.js.map +0 -1
- package/dist/tests/source-lifecycle.test.d.ts +0 -1
- package/dist/tests/source-lifecycle.test.js +0 -644
- package/dist/tests/source-lifecycle.test.js.map +0 -1
- package/dist/tests/source-parsing-compatibility.test.d.ts +0 -1
- package/dist/tests/source-parsing-compatibility.test.js +0 -72
- package/dist/tests/source-parsing-compatibility.test.js.map +0 -1
- package/dist/tests/target-definitions.test.d.ts +0 -1
- package/dist/tests/target-definitions.test.js +0 -51
- package/dist/tests/target-definitions.test.js.map +0 -1
- package/dist/tests/test-helpers.d.ts +0 -18
- package/dist/tests/test-helpers.js +0 -123
- package/dist/tests/test-helpers.js.map +0 -1
- package/dist/tui/add-flow-model.d.ts +0 -62
- package/dist/tui/add-flow-model.js +0 -206
- package/dist/tui/add-flow-model.js.map +0 -1
- package/dist/tui/add-flow.d.ts +0 -25
- package/dist/tui/add-flow.js +0 -534
- package/dist/tui/add-flow.js.map +0 -1
- package/dist/tui/config-app.d.ts +0 -178
- package/dist/tui/config-app.js +0 -1551
- package/dist/tui/config-app.js.map +0 -1
- package/dist/tui/find-app.d.ts +0 -9
- package/dist/tui/find-app.js +0 -150
- package/dist/tui/find-app.js.map +0 -1
- package/dist/tui/selection-state.d.ts +0 -8
- package/dist/tui/selection-state.js +0 -32
- package/dist/tui/selection-state.js.map +0 -1
- package/dist/utils/builtin-git-sources.d.ts +0 -5
- package/dist/utils/builtin-git-sources.js +0 -23
- package/dist/utils/builtin-git-sources.js.map +0 -1
- package/dist/utils/clawhub.d.ts +0 -41
- package/dist/utils/clawhub.js +0 -94
- package/dist/utils/clawhub.js.map +0 -1
- package/dist/utils/cli.d.ts +0 -2
- package/dist/utils/cli.js +0 -19
- package/dist/utils/cli.js.map +0 -1
- package/dist/utils/constants.d.ts +0 -23
- package/dist/utils/constants.js +0 -195
- package/dist/utils/constants.js.map +0 -1
- package/dist/utils/find-command.d.ts +0 -2
- package/dist/utils/find-command.js +0 -29
- package/dist/utils/find-command.js.map +0 -1
- package/dist/utils/format.d.ts +0 -7
- package/dist/utils/format.js +0 -68
- package/dist/utils/format.js.map +0 -1
- package/dist/utils/fs.d.ts +0 -16
- package/dist/utils/fs.js +0 -144
- package/dist/utils/fs.js.map +0 -1
- package/dist/utils/git.d.ts +0 -3
- package/dist/utils/git.js +0 -12
- package/dist/utils/git.js.map +0 -1
- package/dist/utils/github-catalog.d.ts +0 -1
- package/dist/utils/github-catalog.js +0 -25
- package/dist/utils/github-catalog.js.map +0 -1
- package/dist/utils/naming.d.ts +0 -29
- package/dist/utils/naming.js +0 -115
- package/dist/utils/naming.js.map +0 -1
- package/dist/utils/result.d.ts +0 -4
- package/dist/utils/result.js +0 -15
- package/dist/utils/result.js.map +0 -1
- package/dist/utils/source-id.d.ts +0 -2
- package/dist/utils/source-id.js +0 -49
- package/dist/utils/source-id.js.map +0 -1
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { getTargetDetectionCandidates, TARGET_DEFINITIONS, } from "../utils/constants.js";
|
|
3
|
-
import { pathExists } from "../utils/fs.js";
|
|
4
|
-
class DefaultChannelAdapter {
|
|
5
|
-
target;
|
|
6
|
-
strategy;
|
|
7
|
-
constructor(target) {
|
|
8
|
-
this.target = target;
|
|
9
|
-
this.strategy = TARGET_DEFINITIONS[target].strategy;
|
|
10
|
-
}
|
|
11
|
-
async detect() {
|
|
12
|
-
const definition = TARGET_DEFINITIONS[this.target];
|
|
13
|
-
const envVar = definition.envVar;
|
|
14
|
-
const candidates = getTargetDetectionCandidates(this.target);
|
|
15
|
-
if (candidates.length === 0) {
|
|
16
|
-
return {
|
|
17
|
-
target: this.target,
|
|
18
|
-
strategy: this.strategy,
|
|
19
|
-
available: false,
|
|
20
|
-
rootPath: path.resolve("."),
|
|
21
|
-
reason: `Target is disabled in explicit target mode. Set ${envVar} to enable it.`,
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
for (const candidate of candidates) {
|
|
25
|
-
const rootPath = path.resolve(candidate);
|
|
26
|
-
if (await pathExists(rootPath)) {
|
|
27
|
-
return {
|
|
28
|
-
target: this.target,
|
|
29
|
-
strategy: this.strategy,
|
|
30
|
-
available: true,
|
|
31
|
-
rootPath,
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return {
|
|
36
|
-
target: this.target,
|
|
37
|
-
strategy: this.strategy,
|
|
38
|
-
available: false,
|
|
39
|
-
rootPath: path.resolve(candidates[0] ?? "."),
|
|
40
|
-
reason: `Target directory not found. Set ${envVar} or create the agent directory first.`,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
resolveTargetPath(rootPath, linkName) {
|
|
44
|
-
return path.join(rootPath, linkName);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
export function createChannelAdapters() {
|
|
48
|
-
return [
|
|
49
|
-
new DefaultChannelAdapter("claude-code"),
|
|
50
|
-
new DefaultChannelAdapter("codex"),
|
|
51
|
-
new DefaultChannelAdapter("cursor"),
|
|
52
|
-
new DefaultChannelAdapter("github-copilot"),
|
|
53
|
-
new DefaultChannelAdapter("gemini-cli"),
|
|
54
|
-
new DefaultChannelAdapter("opencode"),
|
|
55
|
-
new DefaultChannelAdapter("openclaw"),
|
|
56
|
-
new DefaultChannelAdapter("pi"),
|
|
57
|
-
new DefaultChannelAdapter("windsurf"),
|
|
58
|
-
new DefaultChannelAdapter("roo-code"),
|
|
59
|
-
new DefaultChannelAdapter("cline"),
|
|
60
|
-
new DefaultChannelAdapter("amp"),
|
|
61
|
-
new DefaultChannelAdapter("kiro"),
|
|
62
|
-
];
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=channel-adapters.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"channel-adapters.js","sourceRoot":"","sources":["../../src/adapters/channel-adapters.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAS5C,MAAM,qBAAqB;IAGJ;IAFZ,QAAQ,CAAqB;IAEtC,YAAqB,MAA4B;QAA5B,WAAM,GAAN,MAAM,CAAsB;QAC/C,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QACjC,MAAM,UAAU,GAAG,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,KAAK;gBAChB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;gBAC3B,MAAM,EAAE,mDAAmD,MAAM,gBAAgB;aAClF,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,MAAM,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,OAAO;oBACL,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,SAAS,EAAE,IAAI;oBACf,QAAQ;iBACT,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;YAC5C,MAAM,EAAE,mCAAmC,MAAM,uCAAuC;SACzF,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,QAAgB,EAAE,QAAgB;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,IAAI,qBAAqB,CAAC,aAAa,CAAC;QACxC,IAAI,qBAAqB,CAAC,OAAO,CAAC;QAClC,IAAI,qBAAqB,CAAC,QAAQ,CAAC;QACnC,IAAI,qBAAqB,CAAC,gBAAgB,CAAC;QAC3C,IAAI,qBAAqB,CAAC,YAAY,CAAC;QACvC,IAAI,qBAAqB,CAAC,UAAU,CAAC;QACrC,IAAI,qBAAqB,CAAC,UAAU,CAAC;QACrC,IAAI,qBAAqB,CAAC,IAAI,CAAC;QAC/B,IAAI,qBAAqB,CAAC,UAAU,CAAC;QACrC,IAAI,qBAAqB,CAAC,UAAU,CAAC;QACrC,IAAI,qBAAqB,CAAC,OAAO,CAAC;QAClC,IAAI,qBAAqB,CAAC,KAAK,CAAC;QAChC,IAAI,qBAAqB,CAAC,MAAM,CAAC;KAClC,CAAC;AACJ,CAAC"}
|
package/dist/domain/types.d.ts
DELETED
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
export type Warning = {
|
|
2
|
-
code: string;
|
|
3
|
-
message: string;
|
|
4
|
-
};
|
|
5
|
-
export type Failure = {
|
|
6
|
-
code: string;
|
|
7
|
-
message: string;
|
|
8
|
-
};
|
|
9
|
-
export type Result<T> = {
|
|
10
|
-
ok: true;
|
|
11
|
-
data: T;
|
|
12
|
-
warnings: Warning[];
|
|
13
|
-
errors: [];
|
|
14
|
-
} | {
|
|
15
|
-
ok: false;
|
|
16
|
-
data?: T;
|
|
17
|
-
warnings: Warning[];
|
|
18
|
-
errors: Failure[];
|
|
19
|
-
};
|
|
20
|
-
export type SourceKind = "local" | "git" | "clawhub";
|
|
21
|
-
export type DeploymentTargetName = "claude-code" | "codex" | "cursor" | "github-copilot" | "gemini-cli" | "opencode" | "openclaw" | "pi" | "windsurf" | "roo-code" | "cline" | "amp" | "kiro";
|
|
22
|
-
export type DeploymentStrategy = "symlink" | "copy";
|
|
23
|
-
export type HealthStatus = "HEALTHY" | "ACTIVE" | "INACTIVE" | "PARTIAL" | "BLOCKED" | "INVALID" | "UPDATE AVAILABLE" | "UP TO DATE" | "DRIFT DETECTED";
|
|
24
|
-
export type SourceManifestRecord = {
|
|
25
|
-
id: string;
|
|
26
|
-
locator: string;
|
|
27
|
-
kind: SourceKind;
|
|
28
|
-
displayName: string;
|
|
29
|
-
addedAt: string;
|
|
30
|
-
requestedPath?: string;
|
|
31
|
-
selectionMode?: "all" | "partial";
|
|
32
|
-
originLocator?: string;
|
|
33
|
-
originRequestedPath?: string;
|
|
34
|
-
};
|
|
35
|
-
export type TargetBinding = {
|
|
36
|
-
enabled: boolean;
|
|
37
|
-
leafIds: string[];
|
|
38
|
-
};
|
|
39
|
-
export type SourceBinding = {
|
|
40
|
-
selectedLeafIds?: string[];
|
|
41
|
-
targets: Partial<Record<DeploymentTargetName, TargetBinding>>;
|
|
42
|
-
};
|
|
43
|
-
export type DraftBinding = {
|
|
44
|
-
enabledTargets: DeploymentTargetName[];
|
|
45
|
-
selectedLeafIds: string[];
|
|
46
|
-
};
|
|
47
|
-
export type AddSourceDraftOptions = {
|
|
48
|
-
skillNames?: string[];
|
|
49
|
-
agentTargets?: DeploymentTargetName[];
|
|
50
|
-
draft?: DraftBinding;
|
|
51
|
-
skipTargetDetection?: boolean;
|
|
52
|
-
};
|
|
53
|
-
export type AddSourcePreparation = {
|
|
54
|
-
sourceId: string;
|
|
55
|
-
availableTargets: DeploymentTargetName[];
|
|
56
|
-
draft: DraftBinding;
|
|
57
|
-
leafs: LeafRecord[];
|
|
58
|
-
};
|
|
59
|
-
export type Manifest = {
|
|
60
|
-
schemaVersion: 1;
|
|
61
|
-
sources: SourceManifestRecord[];
|
|
62
|
-
bindings: Record<string, SourceBinding>;
|
|
63
|
-
};
|
|
64
|
-
export type InvalidLeafRecord = {
|
|
65
|
-
path: string;
|
|
66
|
-
reason: string;
|
|
67
|
-
};
|
|
68
|
-
export type DuplicateLeafRecord = {
|
|
69
|
-
path: string;
|
|
70
|
-
keptPath: string;
|
|
71
|
-
};
|
|
72
|
-
export type SourceLockRecord = {
|
|
73
|
-
id: string;
|
|
74
|
-
locator: string;
|
|
75
|
-
kind: SourceKind;
|
|
76
|
-
displayName: string;
|
|
77
|
-
checkoutPath: string;
|
|
78
|
-
updatedAt: string;
|
|
79
|
-
leafIds: string[];
|
|
80
|
-
invalidLeafs: InvalidLeafRecord[];
|
|
81
|
-
commitSha?: string;
|
|
82
|
-
packageSlug?: string;
|
|
83
|
-
resolvedVersion?: string;
|
|
84
|
-
contentHash?: string;
|
|
85
|
-
versionMode?: "pinned" | "floating";
|
|
86
|
-
originBranch?: string;
|
|
87
|
-
importedFromTargets?: DeploymentTargetName[];
|
|
88
|
-
importMode?: "explicit-add" | "bootstrap-detected";
|
|
89
|
-
};
|
|
90
|
-
export type LeafRecord = {
|
|
91
|
-
id: string;
|
|
92
|
-
sourceId: string;
|
|
93
|
-
name: string;
|
|
94
|
-
linkName: string;
|
|
95
|
-
title: string;
|
|
96
|
-
description: string;
|
|
97
|
-
relativePath: string;
|
|
98
|
-
absolutePath: string;
|
|
99
|
-
skillFilePath: string;
|
|
100
|
-
contentHash: string;
|
|
101
|
-
metadataWarnings: string[];
|
|
102
|
-
valid: true;
|
|
103
|
-
};
|
|
104
|
-
export type DeploymentRecord = {
|
|
105
|
-
sourceId: string;
|
|
106
|
-
leafId: string;
|
|
107
|
-
target: DeploymentTargetName;
|
|
108
|
-
targetPath: string;
|
|
109
|
-
targetRootPath?: string;
|
|
110
|
-
strategy: DeploymentStrategy;
|
|
111
|
-
status: "active" | "drifted" | "blocked" | "removed";
|
|
112
|
-
contentHash: string;
|
|
113
|
-
appliedAt: string;
|
|
114
|
-
};
|
|
115
|
-
export type LockFile = {
|
|
116
|
-
schemaVersion: 1;
|
|
117
|
-
sources: SourceLockRecord[];
|
|
118
|
-
leafInventory: LeafRecord[];
|
|
119
|
-
deployments: DeploymentRecord[];
|
|
120
|
-
};
|
|
121
|
-
export type SourceUpdateDiffKind = "added" | "removed" | "moved" | "invalidated" | "changed";
|
|
122
|
-
export type SourceUpdateDiff = {
|
|
123
|
-
kind: SourceUpdateDiffKind;
|
|
124
|
-
sourceId: string;
|
|
125
|
-
leafId: string;
|
|
126
|
-
relativePath: string;
|
|
127
|
-
contentHash: string;
|
|
128
|
-
requestedPath?: string;
|
|
129
|
-
previousLeafId?: string;
|
|
130
|
-
previousRelativePath?: string;
|
|
131
|
-
previousContentHash?: string;
|
|
132
|
-
};
|
|
133
|
-
export type SourceUpdateResultItem = {
|
|
134
|
-
sourceId: string;
|
|
135
|
-
changed: boolean;
|
|
136
|
-
requestedPath?: string;
|
|
137
|
-
selectionMode?: "all" | "partial";
|
|
138
|
-
addedLeafIds: string[];
|
|
139
|
-
removedLeafIds: string[];
|
|
140
|
-
invalidatedLeafIds: string[];
|
|
141
|
-
diffs: SourceUpdateDiff[];
|
|
142
|
-
};
|
|
143
|
-
export type SourceUpdateResult = {
|
|
144
|
-
updated: SourceUpdateResultItem[];
|
|
145
|
-
};
|
|
146
|
-
export type ChannelDetection = {
|
|
147
|
-
target: DeploymentTargetName;
|
|
148
|
-
strategy: DeploymentStrategy;
|
|
149
|
-
available: boolean;
|
|
150
|
-
rootPath: string;
|
|
151
|
-
reason?: string;
|
|
152
|
-
};
|
|
153
|
-
export type DeploymentActionKind = "create" | "update" | "remove" | "noop" | "blocked";
|
|
154
|
-
export type DeploymentAction = {
|
|
155
|
-
kind: DeploymentActionKind;
|
|
156
|
-
sourceId: string;
|
|
157
|
-
leafId: string;
|
|
158
|
-
target: DeploymentTargetName;
|
|
159
|
-
strategy: DeploymentStrategy;
|
|
160
|
-
sourcePath: string;
|
|
161
|
-
targetPath: string;
|
|
162
|
-
targetRootPath?: string;
|
|
163
|
-
previousTargetPath?: string;
|
|
164
|
-
previousTargetRootPath?: string;
|
|
165
|
-
relocateExternalToTargetPath?: string;
|
|
166
|
-
reason?: string;
|
|
167
|
-
contentHash: string;
|
|
168
|
-
};
|
|
169
|
-
export type DeploymentPlan = {
|
|
170
|
-
actions: DeploymentAction[];
|
|
171
|
-
warnings: Warning[];
|
|
172
|
-
blocked: DeploymentAction[];
|
|
173
|
-
};
|
|
174
|
-
export type DoctorIssueSeverity = "info" | "warning" | "error";
|
|
175
|
-
export type DoctorIssue = {
|
|
176
|
-
severity: DoctorIssueSeverity;
|
|
177
|
-
sourceId: string;
|
|
178
|
-
sourceLabel?: string;
|
|
179
|
-
target?: DeploymentTargetName;
|
|
180
|
-
leafId?: string;
|
|
181
|
-
leafLabel?: string;
|
|
182
|
-
code: string;
|
|
183
|
-
message: string;
|
|
184
|
-
};
|
|
185
|
-
export type DoctorReport = {
|
|
186
|
-
status: "HEALTHY" | "PARTIAL" | "BLOCKED";
|
|
187
|
-
issues: DoctorIssue[];
|
|
188
|
-
};
|
|
189
|
-
export type ConfigBootFailure = {
|
|
190
|
-
sourceId: string;
|
|
191
|
-
message: string;
|
|
192
|
-
};
|
|
193
|
-
export type ConfigBootStatus = {
|
|
194
|
-
phase: "success" | "partial_failure";
|
|
195
|
-
updatedSourceIds: string[];
|
|
196
|
-
failedSources: ConfigBootFailure[];
|
|
197
|
-
};
|
|
198
|
-
export type WorkflowSummary = {
|
|
199
|
-
source: SourceManifestRecord;
|
|
200
|
-
lock: SourceLockRecord | undefined;
|
|
201
|
-
leafs: LeafRecord[];
|
|
202
|
-
bindings: SourceBinding;
|
|
203
|
-
activeTargetCount: number;
|
|
204
|
-
health: HealthStatus;
|
|
205
|
-
issueCounts?: {
|
|
206
|
-
warning: number;
|
|
207
|
-
error: number;
|
|
208
|
-
};
|
|
209
|
-
healthReason?: string;
|
|
210
|
-
};
|
|
211
|
-
export type SkillCandidateAction = {
|
|
212
|
-
type: "none";
|
|
213
|
-
} | {
|
|
214
|
-
type: "add-git";
|
|
215
|
-
locator: string;
|
|
216
|
-
requestedPath?: string;
|
|
217
|
-
} | {
|
|
218
|
-
type: "add-clawhub";
|
|
219
|
-
slug: string;
|
|
220
|
-
version?: string;
|
|
221
|
-
};
|
|
222
|
-
export type SkillCandidate = {
|
|
223
|
-
id: string;
|
|
224
|
-
title: string;
|
|
225
|
-
description: string;
|
|
226
|
-
source: "local" | "builtin-git" | "clawhub";
|
|
227
|
-
sourceLabel: string;
|
|
228
|
-
sourceId: string;
|
|
229
|
-
sourceKind: SourceKind;
|
|
230
|
-
locator: string;
|
|
231
|
-
relativePath?: string;
|
|
232
|
-
installed: boolean;
|
|
233
|
-
action: SkillCandidateAction;
|
|
234
|
-
};
|
package/dist/domain/types.js
DELETED
package/dist/domain/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/domain/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import type { ConfigBootStatus, DeploymentTargetName, DoctorReport, DraftBinding, LockFile, Manifest, Result, WorkflowSummary } from "../domain/types.js";
|
|
2
|
-
import type { BootstrapEvent } from "./workspace-bootstrap-service.js";
|
|
3
|
-
type ConfigCoordinatorDeps = {
|
|
4
|
-
store: {
|
|
5
|
-
init(): Promise<void>;
|
|
6
|
-
readManifest(): Promise<Manifest>;
|
|
7
|
-
};
|
|
8
|
-
doctorService: {
|
|
9
|
-
run(manifest: Manifest, lockFile: LockFile): Promise<Result<DoctorReport>>;
|
|
10
|
-
};
|
|
11
|
-
workflowService: {
|
|
12
|
-
getSummaries(manifest: Manifest, lockFile: LockFile, audit?: DoctorReport): WorkflowSummary[];
|
|
13
|
-
};
|
|
14
|
-
getAvailableTargets(): Promise<DeploymentTargetName[]>;
|
|
15
|
-
pruneMissingCheckouts(): Promise<Result<{
|
|
16
|
-
removedSourceIds: string[];
|
|
17
|
-
}>>;
|
|
18
|
-
getConfigData(): Promise<Result<{
|
|
19
|
-
manifest: Manifest;
|
|
20
|
-
lockFile: LockFile;
|
|
21
|
-
summaries: WorkflowSummary[];
|
|
22
|
-
}>>;
|
|
23
|
-
};
|
|
24
|
-
export type ConfigBootstrapData = {
|
|
25
|
-
availableTargets: DeploymentTargetName[];
|
|
26
|
-
manifest: Manifest;
|
|
27
|
-
lockFile: LockFile;
|
|
28
|
-
summaries: WorkflowSummary[];
|
|
29
|
-
initialDrafts: Record<string, DraftBinding>;
|
|
30
|
-
audit: DoctorReport;
|
|
31
|
-
bootStatus: ConfigBootStatus;
|
|
32
|
-
};
|
|
33
|
-
export declare class ConfigCoordinator {
|
|
34
|
-
private readonly deps;
|
|
35
|
-
constructor(deps: ConfigCoordinatorDeps);
|
|
36
|
-
bootstrapWorkspaceState(onEvent?: (event: BootstrapEvent) => void): Promise<Result<ConfigBootstrapData>>;
|
|
37
|
-
}
|
|
38
|
-
export {};
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { fail, ok } from "../utils/result.js";
|
|
2
|
-
export class ConfigCoordinator {
|
|
3
|
-
deps;
|
|
4
|
-
constructor(deps) {
|
|
5
|
-
this.deps = deps;
|
|
6
|
-
}
|
|
7
|
-
async bootstrapWorkspaceState(onEvent) {
|
|
8
|
-
onEvent?.({
|
|
9
|
-
phase: "detect-targets",
|
|
10
|
-
level: "info",
|
|
11
|
-
message: "Detecting available agent targets...",
|
|
12
|
-
});
|
|
13
|
-
const availableTargets = await this.deps.getAvailableTargets();
|
|
14
|
-
const pruned = await this.deps.pruneMissingCheckouts();
|
|
15
|
-
if (!pruned.ok) {
|
|
16
|
-
return fail(pruned.errors, pruned.warnings);
|
|
17
|
-
}
|
|
18
|
-
if (pruned.data.removedSourceIds.length > 0) {
|
|
19
|
-
onEvent?.({
|
|
20
|
-
phase: "refresh-sources",
|
|
21
|
-
level: "warning",
|
|
22
|
-
message: `Removed ${pruned.data.removedSourceIds.length} missing group${pruned.data.removedSourceIds.length === 1 ? "" : "s"} from config state.`,
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
onEvent?.({
|
|
26
|
-
phase: "normalize-bindings",
|
|
27
|
-
level: "info",
|
|
28
|
-
message: "Loading config state...",
|
|
29
|
-
});
|
|
30
|
-
const configData = await this.deps.getConfigData();
|
|
31
|
-
if (!configData.ok) {
|
|
32
|
-
return fail(configData.errors, configData.warnings);
|
|
33
|
-
}
|
|
34
|
-
onEvent?.({
|
|
35
|
-
phase: "audit-projections",
|
|
36
|
-
level: "info",
|
|
37
|
-
message: "Auditing current projections...",
|
|
38
|
-
});
|
|
39
|
-
const audit = await this.deps.doctorService.run(configData.data.manifest, configData.data.lockFile);
|
|
40
|
-
if (!audit.ok) {
|
|
41
|
-
return fail(audit.errors, audit.warnings);
|
|
42
|
-
}
|
|
43
|
-
onEvent?.({
|
|
44
|
-
phase: "build-summaries",
|
|
45
|
-
level: "info",
|
|
46
|
-
message: "Building config summaries...",
|
|
47
|
-
});
|
|
48
|
-
const summaries = this.deps.workflowService.getSummaries(configData.data.manifest, configData.data.lockFile, audit.data);
|
|
49
|
-
const bootStatus = {
|
|
50
|
-
phase: "success",
|
|
51
|
-
updatedSourceIds: [],
|
|
52
|
-
failedSources: [],
|
|
53
|
-
};
|
|
54
|
-
onEvent?.({
|
|
55
|
-
phase: "done",
|
|
56
|
-
level: "success",
|
|
57
|
-
message: "Config bootstrap complete.",
|
|
58
|
-
});
|
|
59
|
-
return ok({
|
|
60
|
-
availableTargets,
|
|
61
|
-
manifest: configData.data.manifest,
|
|
62
|
-
lockFile: configData.data.lockFile,
|
|
63
|
-
summaries,
|
|
64
|
-
initialDrafts: buildInitialDrafts(summaries),
|
|
65
|
-
audit: audit.data,
|
|
66
|
-
bootStatus,
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
function buildInitialDrafts(summaries) {
|
|
71
|
-
return Object.fromEntries(summaries.map((summary) => {
|
|
72
|
-
const enabledTargets = Object.entries(summary.bindings.targets)
|
|
73
|
-
.filter(([, value]) => value?.enabled)
|
|
74
|
-
.map(([target]) => target);
|
|
75
|
-
const selectedLeafIds = [
|
|
76
|
-
...new Set((summary.bindings.selectedLeafIds && summary.bindings.selectedLeafIds.length > 0
|
|
77
|
-
? summary.bindings.selectedLeafIds
|
|
78
|
-
: enabledTargets.flatMap((target) => summary.bindings.targets[target]?.leafIds ?? []))),
|
|
79
|
-
];
|
|
80
|
-
return [summary.source.id, { enabledTargets, selectedLeafIds }];
|
|
81
|
-
}));
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=config-coordinator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-coordinator.js","sourceRoot":"","sources":["../../src/services/config-coordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { DeploymentAction, LockFile, Result } from "../domain/types.js";
|
|
2
|
-
import type { ChannelAdapter } from "../adapters/channel-adapters.js";
|
|
3
|
-
export declare class DeploymentApplier {
|
|
4
|
-
private readonly adapters;
|
|
5
|
-
constructor(adapters?: ChannelAdapter[]);
|
|
6
|
-
applyPlan(lockFile: LockFile, actions: DeploymentAction[]): Promise<Result<{
|
|
7
|
-
applied: DeploymentAction[];
|
|
8
|
-
}>>;
|
|
9
|
-
private assertManagedTargetPath;
|
|
10
|
-
}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs/promises";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { copyDirectory, createSymlink, ensureDir, isPathInside, pathExists, removePath } from "../utils/fs.js";
|
|
4
|
-
import { ok } from "../utils/result.js";
|
|
5
|
-
export class DeploymentApplier {
|
|
6
|
-
adapters;
|
|
7
|
-
constructor(adapters = []) {
|
|
8
|
-
this.adapters = adapters;
|
|
9
|
-
}
|
|
10
|
-
async applyPlan(lockFile, actions) {
|
|
11
|
-
const applied = [];
|
|
12
|
-
const targetRoots = new Map(await Promise.all(this.adapters.map(async (adapter) => {
|
|
13
|
-
const detection = await adapter.detect();
|
|
14
|
-
return [adapter.target, detection.rootPath];
|
|
15
|
-
})));
|
|
16
|
-
for (const action of actions) {
|
|
17
|
-
if (action.kind === "blocked" || action.kind === "noop") {
|
|
18
|
-
continue;
|
|
19
|
-
}
|
|
20
|
-
this.assertManagedTargetPath(action.target, action.targetPath, targetRoots, action.targetRootPath);
|
|
21
|
-
if (action.kind === "remove") {
|
|
22
|
-
if (await pathExists(action.targetPath)) {
|
|
23
|
-
await removePath(action.targetPath);
|
|
24
|
-
}
|
|
25
|
-
lockFile.deployments = lockFile.deployments.filter((deployment) => !(deployment.sourceId === action.sourceId &&
|
|
26
|
-
deployment.leafId === action.leafId &&
|
|
27
|
-
deployment.target === action.target));
|
|
28
|
-
applied.push(action);
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
|
-
await ensureDir(path.dirname(action.targetPath));
|
|
32
|
-
if (action.previousTargetPath &&
|
|
33
|
-
action.previousTargetPath !== action.targetPath &&
|
|
34
|
-
(await pathExists(action.previousTargetPath))) {
|
|
35
|
-
this.assertManagedTargetPath(action.target, action.previousTargetPath, targetRoots, action.previousTargetRootPath);
|
|
36
|
-
await removePath(action.previousTargetPath);
|
|
37
|
-
}
|
|
38
|
-
if (action.relocateExternalToTargetPath &&
|
|
39
|
-
(await pathExists(action.targetPath))) {
|
|
40
|
-
this.assertManagedTargetPath(action.target, action.relocateExternalToTargetPath, targetRoots, action.targetRootPath);
|
|
41
|
-
await ensureDir(path.dirname(action.relocateExternalToTargetPath));
|
|
42
|
-
await fs.rename(action.targetPath, action.relocateExternalToTargetPath);
|
|
43
|
-
}
|
|
44
|
-
if (action.strategy === "symlink") {
|
|
45
|
-
await createSymlink(action.sourcePath, action.targetPath);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
await copyDirectory(action.sourcePath, action.targetPath);
|
|
49
|
-
}
|
|
50
|
-
const nextRecord = {
|
|
51
|
-
sourceId: action.sourceId,
|
|
52
|
-
leafId: action.leafId,
|
|
53
|
-
target: action.target,
|
|
54
|
-
targetPath: action.targetPath,
|
|
55
|
-
...(action.targetRootPath ? { targetRootPath: action.targetRootPath } : {}),
|
|
56
|
-
strategy: action.strategy,
|
|
57
|
-
status: "active",
|
|
58
|
-
contentHash: action.contentHash,
|
|
59
|
-
appliedAt: new Date().toISOString(),
|
|
60
|
-
};
|
|
61
|
-
lockFile.deployments = [
|
|
62
|
-
...lockFile.deployments.filter((deployment) => !(deployment.sourceId === action.sourceId &&
|
|
63
|
-
deployment.leafId === action.leafId &&
|
|
64
|
-
deployment.target === action.target)),
|
|
65
|
-
nextRecord,
|
|
66
|
-
];
|
|
67
|
-
applied.push(action);
|
|
68
|
-
}
|
|
69
|
-
return ok({ applied });
|
|
70
|
-
}
|
|
71
|
-
assertManagedTargetPath(target, targetPath, targetRoots, explicitRootPath) {
|
|
72
|
-
const roots = [
|
|
73
|
-
explicitRootPath,
|
|
74
|
-
targetRoots.get(target),
|
|
75
|
-
].filter((value) => Boolean(value));
|
|
76
|
-
if (roots.length === 0) {
|
|
77
|
-
throw new Error(`Managed target root is unavailable for ${target}.`);
|
|
78
|
-
}
|
|
79
|
-
if (!roots.some((rootPath) => isPathInside(rootPath, targetPath))) {
|
|
80
|
-
throw new Error(`Refusing to modify path outside managed root for ${target}: ${targetPath}`);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=deployment-applier.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deployment-applier.js","sourceRoot":"","sources":["../../src/services/deployment-applier.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { DeploymentPlan, LockFile, Manifest, Result } from "../domain/types.js";
|
|
2
|
-
import type { ChannelAdapter } from "../adapters/channel-adapters.js";
|
|
3
|
-
export declare class DeploymentPlanner {
|
|
4
|
-
private readonly adapters;
|
|
5
|
-
constructor(adapters: ChannelAdapter[]);
|
|
6
|
-
planForSource(sourceId: string, manifest: Manifest, lockFile: LockFile): Promise<Result<DeploymentPlan>>;
|
|
7
|
-
private planTarget;
|
|
8
|
-
private resolveDesiredAction;
|
|
9
|
-
private inspectTargetPath;
|
|
10
|
-
private buildExternalIdentityState;
|
|
11
|
-
private readSkillIdentity;
|
|
12
|
-
private buildExternalRelocationCandidate;
|
|
13
|
-
private buildExternalRelocationLinkNames;
|
|
14
|
-
private inspectExistingTargetPath;
|
|
15
|
-
private buildProjectedLinkNameMap;
|
|
16
|
-
}
|