skill-flow 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/.gstack/qa-reports/base-branch.txt +1 -0
  2. package/.gstack/qa-reports/qa-report-skill-flow-cli-2026-03-22.md +159 -0
  3. package/README.md +39 -2
  4. package/README.zh.md +39 -2
  5. package/dist/cli.js +32 -2
  6. package/dist/cli.js.map +1 -1
  7. package/dist/domain/types.d.ts +25 -0
  8. package/dist/services/deployment-applier.js +6 -0
  9. package/dist/services/deployment-applier.js.map +1 -1
  10. package/dist/services/deployment-planner.d.ts +5 -0
  11. package/dist/services/deployment-planner.js +198 -16
  12. package/dist/services/deployment-planner.js.map +1 -1
  13. package/dist/services/skill-flow.d.ts +28 -2
  14. package/dist/services/skill-flow.js +353 -2
  15. package/dist/services/skill-flow.js.map +1 -1
  16. package/dist/services/source-service.d.ts +1 -1
  17. package/dist/services/source-service.js +11 -14
  18. package/dist/services/source-service.js.map +1 -1
  19. package/dist/state/store.d.ts +3 -0
  20. package/dist/state/store.js +10 -0
  21. package/dist/state/store.js.map +1 -1
  22. package/dist/tests/skill-flow.test.js.map +1 -1
  23. package/dist/tui/config-app.js +52 -3
  24. package/dist/tui/config-app.js.map +1 -1
  25. package/dist/tui/find-app.d.ts +9 -0
  26. package/dist/tui/find-app.js +117 -0
  27. package/dist/tui/find-app.js.map +1 -0
  28. package/dist/utils/builtin-git-sources.d.ts +5 -0
  29. package/dist/utils/builtin-git-sources.js +23 -0
  30. package/dist/utils/builtin-git-sources.js.map +1 -0
  31. package/dist/utils/find-command.d.ts +2 -0
  32. package/dist/utils/find-command.js +21 -0
  33. package/dist/utils/find-command.js.map +1 -0
  34. package/dist/utils/format.d.ts +2 -1
  35. package/dist/utils/format.js +18 -0
  36. package/dist/utils/format.js.map +1 -1
  37. package/dist/utils/github-catalog.d.ts +1 -0
  38. package/dist/utils/github-catalog.js +25 -0
  39. package/dist/utils/github-catalog.js.map +1 -0
  40. package/dist/utils/naming.d.ts +9 -1
  41. package/dist/utils/naming.js +33 -6
  42. package/dist/utils/naming.js.map +1 -1
  43. package/docs/plan/PLAN_v1.0.1.md +34 -3
  44. package/docs/refrences/README.md +2 -0
  45. package/docs/refrences/agent-skill-paths.md +22 -0
  46. package/docs/refrences/config-state-reconciliation.md +199 -0
  47. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ main
@@ -0,0 +1,159 @@
1
+ # QA Report
2
+
3
+ Date: 2026-03-22
4
+ Target: `skill-flow` CLI v1.0.1
5
+ Mode: full functional regression
6
+ Base branch: `main`
7
+ Baseline commit: `c21868e`
8
+ Final status: `DONE_WITH_CONCERNS`
9
+
10
+ ## Summary
11
+
12
+ - Automated baseline passed: `npm run build`, `npm test` (`49 passed`)
13
+ - Verified manually:
14
+ - Git add with `--path`
15
+ - `list`
16
+ - `update --all`
17
+ - `uninstall`
18
+ - GitHub tree URL add
19
+ - ClawHub add / update / uninstall
20
+ - Blocking issue found:
21
+ - `find` / `search` can hang for 15s+ on cold start because built-in catalog search waits on many remote Git repos
22
+
23
+ ## Health Score
24
+
25
+ - Baseline: 82
26
+ - Final: 82
27
+
28
+ Rationale:
29
+ - Functional: mostly works
30
+ - Performance: materially degraded for `find`
31
+ - Reliability: build/tests clean, but discovery cold start is not ship-ready
32
+
33
+ ## Tested Flows
34
+
35
+ ### 1. Git add with path filtering
36
+
37
+ Command pattern:
38
+
39
+ ```bash
40
+ node dist/cli.js add <local-repo> --path skills/find-skills
41
+ node dist/cli.js list
42
+ node dist/cli.js update --all
43
+ node dist/cli.js uninstall repo
44
+ ```
45
+
46
+ Observed:
47
+ - add succeeded
48
+ - only one skill was registered
49
+ - list/update/uninstall all behaved correctly
50
+
51
+ ### 2. GitHub tree URL add
52
+
53
+ Command:
54
+
55
+ ```bash
56
+ node dist/cli.js add https://github.com/vercel-labs/skills/tree/main/skills/find-skills
57
+ ```
58
+
59
+ Observed:
60
+ - succeeded
61
+ - installed as repo-level source `vercel-labs-skills`
62
+ - leaf count was `1`
63
+ - runtime was about `7.76s`
64
+
65
+ ### 3. ClawHub lifecycle
66
+
67
+ Command pattern:
68
+
69
+ ```bash
70
+ node dist/cli.js add clawhub:find-skills-skill
71
+ node dist/cli.js update --all
72
+ node dist/cli.js list
73
+ node dist/cli.js uninstall clawhub-find-skills-skill
74
+ ```
75
+
76
+ Observed:
77
+ - add/update/uninstall all succeeded
78
+ - `list` reported the source as `PARTIAL` because of a metadata warning:
79
+ - `name should match parent directory name 'find-skills-skill'`
80
+
81
+ Assessment:
82
+ - functional flow passes
83
+ - warning is noisy but not a blocker
84
+
85
+ ## Findings
86
+
87
+ ### ISSUE-001
88
+
89
+ - Severity: critical
90
+ - Category: performance / functional
91
+ - Title: `find` does not complete promptly on cold start
92
+ - Status: deferred
93
+
94
+ What happens:
95
+ - `find` / `search` attempts to search the full built-in Git catalog set
96
+ - on a fresh state root, many built-in repos are not cached
97
+ - command can remain blocked for 15s+ even when a local result already exists
98
+ - `--json` has the same issue
99
+
100
+ Repro:
101
+
102
+ ```bash
103
+ export SKILL_FLOW_STATE_ROOT="$(mktemp -d)/state"
104
+ node dist/cli.js add <local-repo> --path skills/find-skills
105
+ perl -e 'alarm shift; exec @ARGV' 15 node dist/cli.js find find
106
+ ```
107
+
108
+ Observed output before timeout:
109
+
110
+ ```text
111
+ 1. find-skills local installed
112
+ Find useful skills quickly.
113
+ repo · skills/find-skills
114
+ next: already installed
115
+
116
+ 2. Using Skills builtin-git
117
+ ...
118
+ warning: Unable to refresh built-in source 'https://github.com/anthropics/skills.git': Error: Built-in source 'https://github.com/anthropics/skills.git' timed out.
119
+ ...
120
+ time: command terminated abnormally
121
+ real 15.02
122
+ ```
123
+
124
+ Impact:
125
+ - makes `find` feel hung
126
+ - especially bad on first use or slow network
127
+ - blocks the main new v1.0.1 discovery path
128
+
129
+ Recommendation:
130
+ - redesign built-in catalog search so it does not depend on cloning every remote repo during request time
131
+ - acceptable solutions include a prebuilt index, explicit catalog sync step, or a lightweight remote metadata search path
132
+
133
+ ### ISSUE-002
134
+
135
+ - Severity: medium
136
+ - Category: UX
137
+ - Title: ClawHub install shows as `PARTIAL` immediately after successful add
138
+ - Status: deferred
139
+
140
+ Observed:
141
+
142
+ ```text
143
+ find-skills-skill PARTIAL 1 skills 0 targets, 1 warnings
144
+ warning: .: name should match parent directory name 'find-skills-skill'
145
+ ```
146
+
147
+ Impact:
148
+ - user sees warning/partial state on a successful install
149
+ - creates uncertainty about whether the source is healthy
150
+
151
+ ## Ship Readiness
152
+
153
+ - `add`, `update`, and `uninstall` are in good shape
154
+ - `find/search` is functionally correct in some cases but not performance-safe enough for cold-start use
155
+ - v1.0.1 is not fully ship-ready if discovery is considered a headline feature
156
+
157
+ ## PR Summary
158
+
159
+ QA found 2 issues, fixed 0, health score 82 -> 82.
package/README.md CHANGED
@@ -80,25 +80,33 @@ skill-flow doctor
80
80
  skill-flow uninstall my-source-id
81
81
  ```
82
82
 
83
- `add <source>` supports local paths, `owner/repo`, and full https/ssh Git URLs.
83
+ `add <source>` supports local paths, `owner/repo`, full https/ssh Git URLs, GitHub tree URLs, and `clawhub:<slug>[@version]`.
84
+
85
+ By default, `add` preselects all discovered skills and all detected agent targets. When `--path <repoSubpath>` is provided, the full repo is still imported, but only skills under that path are preselected.
84
86
 
85
87
  ## Command Reference
86
88
 
87
89
  | Command | Description |
88
90
  |---|---|
89
- | `add <source>` | Add Git source (supports local path, `owner/repo`, https/ssh URL) |
91
+ | `add <source>` | Add a source from Git or ClawHub |
92
+ | `find <query>` | Search installed skills, built-in Git catalogs, and ClawHub |
93
+ | `search <query>` | Alias of `find` |
90
94
  | `list` | Show workflow groups |
91
95
  | `config` | Open interactive configuration UI |
92
96
  | `update [sourceId] --all` | Update sources and re-project |
93
97
  | `doctor` | Diagnose projection health |
94
98
  | `uninstall <sourceIds...>` | Remove workflow groups and projections |
95
99
 
100
+ When selected skills collide by name, `skill-flow` keeps identical duplicates as warnings and renames different-content collisions with repo/author-prefixed link names such as `gstack-browse`, `gstack(garrytan)-browse`, or `garrytan-skill-creator`.
101
+
96
102
  ## How It Works
97
103
 
98
104
  **State Management**
99
105
  - `~/.skillflow/manifest.json` - Your configuration intent
100
106
  - `~/.skillflow/lock.json` - Actual deployment state
101
107
  - `~/.skillflow/source/git/<source-id>/` - Git source cache
108
+ - `~/.skillflow/source/clawhub/<source-id>/` - ClawHub source cache
109
+ - `~/.skillflow/catalog/git/<source-id>/` - Built-in Git catalog cache
102
110
 
103
111
  **Projection Strategy**
104
112
  Symlinks preferred, file copies when necessary. Target directories are projections only; true state managed by lock.json.
@@ -109,6 +117,35 @@ Claude Code · Codex · Cursor · GitHub Copilot · Gemini CLI · OpenCode · Op
109
117
 
110
118
  Customize target paths via environment variables (e.g., `SKILL_FLOW_TARGET_CLAUDE_CODE`).
111
119
 
120
+ Broader ecosystem path references, including project-level rules and instructions paths, are tracked in [docs/refrences/agent-skill-paths.md](./docs/refrences/agent-skill-paths.md).
121
+
122
+ ## Built-in Discovery Catalogs
123
+
124
+ `find/search` searches built-in Git catalogs in addition to local installed skills and ClawHub.
125
+
126
+ For more reliable built-in Git catalog search, set `GITHUB_TOKEN` to avoid low unauthenticated GitHub API rate limits.
127
+
128
+ | Repository | Description | Stars | Skills |
129
+ | --- | --- | ---: | ---: |
130
+ | [anthropic-skills](https://github.com/anthropics/skills) | Official Agent Skills from Anthropic | 95,957 | 18 |
131
+ | [superpowers](https://github.com/obra/superpowers) | Agentic skills framework & development methodology | 89,816 | 14 |
132
+ | [everything-claude-code](https://github.com/affaan-m/everything-claude-code) | Performance optimization system for Claude Code, Codex, and beyond | 81,392 | 147 |
133
+ | [agency-agents](https://github.com/msitarzewski/agency-agents) | Specialized expert agents with personality and proven deliverables | 50,749 | — |
134
+ | [ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill) | Design intelligence for building professional UI/UX | 43,112 | 7 |
135
+ | [antigravity-awesome-skills](https://github.com/sickn33/antigravity-awesome-skills) | 1,000+ battle-tested skills for Claude Code, Cursor, and more | 25,047 | 1,258 |
136
+ | [marketingskills](https://github.com/coreyhaines31/marketingskills) | Marketing skills — CRO, copywriting, SEO, analytics, growth | 14,099 | 33 |
137
+ | [agentskills](https://github.com/agentskills/agentskills) | Specification and documentation for Agent Skills | 13,342 | — |
138
+ | [taste-skill](https://github.com/Leonxlnx/taste-skill) | Gives your AI good taste — stops generic, boring output | 3,389 | 5 |
139
+ | [affiliate-skills](https://github.com/Affitor/affiliate-skills) | Full affiliate marketing funnel: research to deploy | 99 | 47 |
140
+ | [skills](https://github.com/luongnv89/skills) | Reusable skills to supercharge your AI agents | 1 | 29 |
141
+ | [awesome-claude-skills](https://github.com/ComposioHQ/awesome-claude-skills) | Community Claude skills collection | — | — |
142
+ | [myclaude](https://github.com/cexll/myclaude) | Personal Claude skills collection | — | — |
143
+ | [baoyu-skills](https://github.com/JimLiu/baoyu-skills) | Community skills collection | — | — |
144
+ | [dbskill](https://github.com/dontbesilent2025/dbskill) | Database-focused skills collection | — | — |
145
+ | [gstack](https://github.com/garrytan/gstack) | Gstack skills and workflows | — | — |
146
+ | [impeccable](https://github.com/pbakaus/impeccable) | Design and taste skills collection | — | — |
147
+ | [frontend-slides](https://github.com/zarazhangrui/frontend-slides) | Frontend presentation skills collection | — | — |
148
+
112
149
  ## Development
113
150
 
114
151
  ```bash
package/README.zh.md CHANGED
@@ -80,25 +80,33 @@ skill-flow doctor
80
80
  skill-flow uninstall my-source-id
81
81
  ```
82
82
 
83
- `add <source>` 支持本地路径、`owner/repo`,以及完整的 https/ssh Git URL
83
+ `add <source>` 支持本地路径、`owner/repo`、完整的 https/ssh Git URL、GitHub tree URL,以及 `clawhub:<slug>[@version]`。
84
+
85
+ `add` 默认会预选该源的全部 skill,以及当前检测到的全部 agent 目标。传入 `--path <repoSubpath>` 时,仍然会导入整个仓库,但只会预选该路径下的 skill。
84
86
 
85
87
  ## 命令参考
86
88
 
87
89
  | 命令 | 说明 |
88
90
  |---|---|
89
- | `add <source>` | 添加 Git 源(支持本地路径、`owner/repo`、https/ssh URL) |
91
+ | `add <source>` | Git ClawHub 添加技能源 |
92
+ | `find <query>` | 搜索本地已安装技能、内置 Git 仓库和 ClawHub |
93
+ | `search <query>` | `find` 的别名 |
90
94
  | `list` | 显示工作流分组 |
91
95
  | `config` | 打开交互式配置界面 |
92
96
  | `update [sourceId] --all` | 更新源并重新投影 |
93
97
  | `doctor` | 诊断投影健康状态 |
94
98
  | `uninstall <sourceIds...>` | 移除工作流组及其投影 |
95
99
 
100
+ 当已选 skill 出现同名冲突时,`skill-flow` 会把内容完全相同的重复项保留为 warning,把内容不同的冲突项改成带 repo / author 前缀的链接名,例如 `gstack-browse`、`gstack(garrytan)-browse` 或 `garrytan-skill-creator`。
101
+
96
102
  ## 工作原理
97
103
 
98
104
  **状态管理**
99
105
  - `~/.skillflow/manifest.json` - 你的配置意图
100
106
  - `~/.skillflow/lock.json` - 实际部署状态
101
107
  - `~/.skillflow/source/git/<source-id>/` - Git 源缓存
108
+ - `~/.skillflow/source/clawhub/<source-id>/` - ClawHub 源缓存
109
+ - `~/.skillflow/catalog/git/<source-id>/` - 内置 Git 仓库缓存
102
110
 
103
111
  **投影策略**
104
112
  优先使用符号链接,必要时使用文件复制。目标目录仅作为投影,真实状态由 lock.json 管理。
@@ -109,6 +117,35 @@ Claude Code · Codex · Cursor · GitHub Copilot · Gemini CLI · OpenCode · Op
109
117
 
110
118
  可通过环境变量自定义目标路径(如 `SKILL_FLOW_TARGET_CLAUDE_CODE`)。
111
119
 
120
+ 更广义的生态路径参考,包括 project 级 rules / instructions 路径,见 [docs/refrences/agent-skill-paths.md](./docs/refrences/agent-skill-paths.md)。
121
+
122
+ ## 默认内置发现仓库
123
+
124
+ `find/search` 除了搜索本地已安装技能和 ClawHub,也会搜索默认内置的 Git 仓库目录。
125
+
126
+ 如果希望内置 Git 仓库搜索更稳定,建议设置 `GITHUB_TOKEN`,避免 GitHub 未认证 API 的低速率限制。
127
+
128
+ | Repository | Description | Stars | Skills |
129
+ | --- | --- | ---: | ---: |
130
+ | [anthropic-skills](https://github.com/anthropics/skills) | Official Agent Skills from Anthropic | 95,957 | 18 |
131
+ | [superpowers](https://github.com/obra/superpowers) | Agentic skills framework & development methodology | 89,816 | 14 |
132
+ | [everything-claude-code](https://github.com/affaan-m/everything-claude-code) | Performance optimization system for Claude Code, Codex, and beyond | 81,392 | 147 |
133
+ | [agency-agents](https://github.com/msitarzewski/agency-agents) | Specialized expert agents with personality and proven deliverables | 50,749 | — |
134
+ | [ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill) | Design intelligence for building professional UI/UX | 43,112 | 7 |
135
+ | [antigravity-awesome-skills](https://github.com/sickn33/antigravity-awesome-skills) | 1,000+ battle-tested skills for Claude Code, Cursor, and more | 25,047 | 1,258 |
136
+ | [marketingskills](https://github.com/coreyhaines31/marketingskills) | Marketing skills — CRO, copywriting, SEO, analytics, growth | 14,099 | 33 |
137
+ | [agentskills](https://github.com/agentskills/agentskills) | Specification and documentation for Agent Skills | 13,342 | — |
138
+ | [taste-skill](https://github.com/Leonxlnx/taste-skill) | Gives your AI good taste — stops generic, boring output | 3,389 | 5 |
139
+ | [affiliate-skills](https://github.com/Affitor/affiliate-skills) | Full affiliate marketing funnel: research to deploy | 99 | 47 |
140
+ | [skills](https://github.com/luongnv89/skills) | Reusable skills to supercharge your AI agents | 1 | 29 |
141
+ | [awesome-claude-skills](https://github.com/ComposioHQ/awesome-claude-skills) | Community Claude skills collection | — | — |
142
+ | [myclaude](https://github.com/cexll/myclaude) | Personal Claude skills collection | — | — |
143
+ | [baoyu-skills](https://github.com/JimLiu/baoyu-skills) | Community skills collection | — | — |
144
+ | [dbskill](https://github.com/dontbesilent2025/dbskill) | Database-focused skills collection | — | — |
145
+ | [gstack](https://github.com/garrytan/gstack) | Gstack skills and workflows | — | — |
146
+ | [impeccable](https://github.com/pbakaus/impeccable) | Design and taste skills collection | — | — |
147
+ | [frontend-slides](https://github.com/zarazhangrui/frontend-slides) | Frontend presentation skills collection | — | — |
148
+
112
149
  ## 开发
113
150
 
114
151
  ```bash
package/dist/cli.js CHANGED
@@ -4,14 +4,16 @@ import { Command } from "commander";
4
4
  import { render } from "ink";
5
5
  import { SkillFlowApp } from "./services/skill-flow.js";
6
6
  import { ConfigApp } from "./tui/config-app.js";
7
+ import { FindApp } from "./tui/find-app.js";
7
8
  import { formatGroupRef } from "./utils/naming.js";
8
- import { formatDoctorIssue, formatWorkflowList } from "./utils/format.js";
9
+ import { formatDoctorIssue, formatWorkflowList, } from "./utils/format.js";
10
+ import { buildFindCommand } from "./utils/find-command.js";
9
11
  const program = new Command();
10
12
  const app = new SkillFlowApp();
11
13
  program
12
14
  .name("skill-flow")
13
15
  .description("Workflow-first skill projection manager")
14
- .version("1.0.0");
16
+ .version("1.0.2");
15
17
  program
16
18
  .command("add")
17
19
  .argument("<source>", "Source locator")
@@ -40,6 +42,34 @@ program.command("list").action(async () => {
40
42
  }
41
43
  console.log(formatWorkflowList(result.data.summaries));
42
44
  });
45
+ program
46
+ .command("find")
47
+ .alias("search")
48
+ .argument("<query>", "Search query")
49
+ .option("--json", "Print JSON output")
50
+ .action(async (query, options) => {
51
+ const result = await app.findSkills(query);
52
+ if (!result.ok) {
53
+ printErrors(result.errors);
54
+ process.exitCode = 1;
55
+ return;
56
+ }
57
+ if (options.json) {
58
+ console.log(JSON.stringify(result.data.candidates.map((candidate) => ({
59
+ ...candidate,
60
+ nextCommand: buildFindCommand(candidate),
61
+ })), null, 2));
62
+ printWarnings(result.warnings.map((warning) => warning.message));
63
+ return;
64
+ }
65
+ const instance = render(_jsx(FindApp, { app: app, query: query, candidates: result.data.candidates }));
66
+ if (result.warnings.length > 0) {
67
+ for (const warning of result.warnings) {
68
+ console.warn(`warning: ${warning.message}`);
69
+ }
70
+ }
71
+ await instance.waitUntilExit();
72
+ });
43
73
  program.command("config").action(async () => {
44
74
  const result = await app.getConfigData();
45
75
  if (!result.ok) {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":"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"}
@@ -107,6 +107,7 @@ export type DeploymentAction = {
107
107
  sourcePath: string;
108
108
  targetPath: string;
109
109
  previousTargetPath?: string;
110
+ relocateExternalToTargetPath?: string;
110
111
  reason?: string;
111
112
  contentHash: string;
112
113
  };
@@ -138,3 +139,27 @@ export type WorkflowSummary = {
138
139
  activeTargetCount: number;
139
140
  health: HealthStatus;
140
141
  };
142
+ export type SkillCandidateAction = {
143
+ type: "none";
144
+ } | {
145
+ type: "add-git";
146
+ locator: string;
147
+ requestedPath?: string;
148
+ } | {
149
+ type: "add-clawhub";
150
+ slug: string;
151
+ version?: string;
152
+ };
153
+ export type SkillCandidate = {
154
+ id: string;
155
+ title: string;
156
+ description: string;
157
+ source: "local" | "builtin-git" | "clawhub";
158
+ sourceLabel: string;
159
+ sourceId: string;
160
+ sourceKind: SourceKind;
161
+ locator: string;
162
+ relativePath?: string;
163
+ installed: boolean;
164
+ action: SkillCandidateAction;
165
+ };
@@ -1,3 +1,4 @@
1
+ import fs from "node:fs/promises";
1
2
  import path from "node:path";
2
3
  import { copyDirectory, createSymlink, ensureDir, pathExists, removePath } from "../utils/fs.js";
3
4
  import { ok } from "../utils/result.js";
@@ -24,6 +25,11 @@ export class DeploymentApplier {
24
25
  (await pathExists(action.previousTargetPath))) {
25
26
  await removePath(action.previousTargetPath);
26
27
  }
28
+ if (action.relocateExternalToTargetPath &&
29
+ (await pathExists(action.targetPath))) {
30
+ await ensureDir(path.dirname(action.relocateExternalToTargetPath));
31
+ await fs.rename(action.targetPath, action.relocateExternalToTargetPath);
32
+ }
27
33
  if (action.strategy === "symlink") {
28
34
  await createSymlink(action.sourcePath, action.targetPath);
29
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deployment-applier.js","sourceRoot":"","sources":["../../src/services/deployment-applier.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjG,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,MAAM,OAAO,iBAAiB;IAC5B,KAAK,CAAC,SAAS,CACb,QAAkB,EAClB,OAA2B;QAE3B,MAAM,OAAO,GAAuB,EAAE,CAAC;QAEvC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACxD,SAAS;YACX,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,IAAI,MAAM,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;oBACxC,MAAM,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACtC,CAAC;gBACD,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAChD,CAAC,UAAU,EAAE,EAAE,CACb,CAAC,CACC,UAAU,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;oBACvC,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;oBACnC,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CACpC,CACJ,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrB,SAAS;YACX,CAAC;YAED,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;YACjD,IACE,MAAM,CAAC,kBAAkB;gBACzB,MAAM,CAAC,kBAAkB,KAAK,MAAM,CAAC,UAAU;gBAC/C,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAC7C,CAAC;gBACD,MAAM,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC9C,CAAC;YAED,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAClC,MAAM,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACN,MAAM,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,UAAU,GAAqB;gBACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,QAAQ;gBAChB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YAEF,QAAQ,CAAC,WAAW,GAAG;gBACrB,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAC5B,CAAC,UAAU,EAAE,EAAE,CACb,CAAC,CACC,UAAU,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;oBACvC,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;oBACnC,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CACpC,CACJ;gBACD,UAAU;aACX,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"deployment-applier.js","sourceRoot":"","sources":["../../src/services/deployment-applier.ts"],"names":[],"mappings":"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"}
@@ -7,5 +7,10 @@ export declare class DeploymentPlanner {
7
7
  private planTarget;
8
8
  private resolveDesiredAction;
9
9
  private inspectTargetPath;
10
+ private buildExternalIdentityState;
11
+ private readSkillIdentity;
12
+ private buildExternalRelocationCandidate;
13
+ private buildExternalRelocationLinkNames;
14
+ private inspectExistingTargetPath;
10
15
  private buildProjectedLinkNameMap;
11
16
  }