@skillctl/link-manager 0.3.1 → 0.5.0
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/LICENSE +21 -21
- package/dist/link-manager.d.ts +10 -1
- package/dist/link-manager.d.ts.map +1 -1
- package/dist/link-manager.js +106 -12
- package/dist/link-manager.js.map +1 -1
- package/package.json +5 -4
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 xFurti, Gabry848
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 xFurti, Gabry848
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/link-manager.d.ts
CHANGED
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
* Used by AgentAdapters' ensureTarget/removeTarget.
|
|
6
6
|
*/
|
|
7
7
|
import type { LinkMode } from '@skillctl/core';
|
|
8
|
+
export interface ManagedTargetInspection {
|
|
9
|
+
kind: 'missing' | 'link' | 'copy' | 'unmanaged';
|
|
10
|
+
canonical?: string;
|
|
11
|
+
}
|
|
8
12
|
export interface LinkOptions {
|
|
9
13
|
mode?: LinkMode;
|
|
10
14
|
dryRun?: boolean;
|
|
@@ -19,7 +23,7 @@ export declare class LinkManager {
|
|
|
19
23
|
* Verifies after creation that realpath(target) resolves to canonical.
|
|
20
24
|
*/
|
|
21
25
|
ensureLink(canonical: string, target: string, options?: LinkOptions): Promise<void>;
|
|
22
|
-
removeLink(target: string): Promise<void>;
|
|
26
|
+
removeLink(target: string, canonical?: string): Promise<void>;
|
|
23
27
|
/**
|
|
24
28
|
* Check if target currently points (via realpath) to the canonical.
|
|
25
29
|
*/
|
|
@@ -29,7 +33,12 @@ export declare class LinkManager {
|
|
|
29
33
|
* Returns true if safe or does not exist.
|
|
30
34
|
*/
|
|
31
35
|
verifyTargetSafe(target: string, storeRoot: string): Promise<boolean>;
|
|
36
|
+
inspectManagedTarget(target: string, storeRoot: string): Promise<ManagedTargetInspection>;
|
|
37
|
+
targetState(canonical: string, target: string): Promise<'missing' | 'current' | 'managed-stale' | 'unmanaged'>;
|
|
32
38
|
private copyDir;
|
|
39
|
+
private readManagedCopyMarker;
|
|
40
|
+
private hasManagedCopyMarker;
|
|
41
|
+
private isManagedCopy;
|
|
33
42
|
}
|
|
34
43
|
export declare const linkManager: LinkManager;
|
|
35
44
|
export declare function pathExists(p: string): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-manager.d.ts","sourceRoot":"","sources":["../src/link-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"link-manager.d.ts","sourceRoot":"","sources":["../src/link-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAW/C,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,WAAW;IACtB;;;;OAIG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA6FvF,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBnE;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWrE;;;OAGG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAarE,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAkBzF,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,GAAG,eAAe,GAAG,WAAW,CAAC;YAStG,OAAO;YAkBP,qBAAqB;YAUrB,oBAAoB;YAOpB,aAAa;CAO5B;AAGD,eAAO,MAAM,WAAW,aAAoB,CAAC;AAG7C,wBAAsB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO5D;AAED,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/link-manager.js
CHANGED
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
* Safety: realpath verification to ensure targets point inside canonical store.
|
|
5
5
|
* Used by AgentAdapters' ensureTarget/removeTarget.
|
|
6
6
|
*/
|
|
7
|
-
import { symlink, rm, stat, realpath, access, constants, cp as fsCp } from 'node:fs/promises';
|
|
8
|
-
import { dirname, relative, resolve as pathResolve } from 'node:path';
|
|
9
|
-
import { ensureDir } from '@skillctl/core';
|
|
7
|
+
import { symlink, rm, stat, lstat, realpath, access, constants, cp as fsCp, readFile, writeFile, } from 'node:fs/promises';
|
|
8
|
+
import { join, dirname, relative, resolve as pathResolve, isAbsolute } from 'node:path';
|
|
9
|
+
import { computeDirIntegrity, ensureDir } from '@skillctl/core';
|
|
10
|
+
const MANAGED_COPY_MARKER = '.skillctl-managed.json';
|
|
10
11
|
export class LinkManager {
|
|
11
12
|
/**
|
|
12
13
|
* Ensure a link (or copy) from canonical skill dir to a target path (agent's skills dir entry).
|
|
@@ -34,6 +35,17 @@ export class LinkManager {
|
|
|
34
35
|
if (await this.isLinkedTo(canonical, target)) {
|
|
35
36
|
return;
|
|
36
37
|
}
|
|
38
|
+
const existing = await lstat(target).catch(() => null);
|
|
39
|
+
if (existing) {
|
|
40
|
+
if (await this.isManagedCopy(canonical, target))
|
|
41
|
+
return;
|
|
42
|
+
if (await this.hasManagedCopyMarker(canonical, target)) {
|
|
43
|
+
await rm(target, { recursive: true, force: true });
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
throw new Error(`Refusing to overwrite unmanaged target: ${target}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
37
49
|
try {
|
|
38
50
|
if (mode === 'copy') {
|
|
39
51
|
await this.copyDir(canonical, target);
|
|
@@ -94,16 +106,25 @@ export class LinkManager {
|
|
|
94
106
|
}
|
|
95
107
|
}
|
|
96
108
|
}
|
|
97
|
-
async removeLink(target) {
|
|
109
|
+
async removeLink(target, canonical) {
|
|
98
110
|
try {
|
|
99
|
-
const st = await
|
|
111
|
+
const st = await lstat(target).catch(() => null);
|
|
100
112
|
if (!st)
|
|
101
113
|
return;
|
|
102
|
-
|
|
114
|
+
if (!canonical) {
|
|
115
|
+
throw new Error('canonical path is required to remove a managed target safely');
|
|
116
|
+
}
|
|
117
|
+
const managedLink = await this.isLinkedTo(canonical, target);
|
|
118
|
+
const managedCopy = await this.hasManagedCopyMarker(canonical, target);
|
|
119
|
+
if (!managedLink && !managedCopy) {
|
|
120
|
+
throw new Error('target is not a link or copy managed by skillctl');
|
|
121
|
+
}
|
|
103
122
|
await rm(target, { recursive: true, force: true });
|
|
104
123
|
}
|
|
105
|
-
catch {
|
|
106
|
-
|
|
124
|
+
catch (err) {
|
|
125
|
+
if (err.code === 'ENOENT')
|
|
126
|
+
return;
|
|
127
|
+
throw err;
|
|
107
128
|
}
|
|
108
129
|
}
|
|
109
130
|
/**
|
|
@@ -131,16 +152,85 @@ export class LinkManager {
|
|
|
131
152
|
return true;
|
|
132
153
|
const tReal = await realpath(target);
|
|
133
154
|
const storeReal = await realpath(storeRoot);
|
|
134
|
-
|
|
155
|
+
const rel = relative(storeReal, tReal);
|
|
156
|
+
return rel === '' || (!rel.startsWith('..') && !isAbsolute(rel));
|
|
135
157
|
}
|
|
136
|
-
catch {
|
|
137
|
-
return
|
|
158
|
+
catch (err) {
|
|
159
|
+
return err.code === 'ENOENT';
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
async inspectManagedTarget(target, storeRoot) {
|
|
163
|
+
const existing = await lstat(target).catch(() => null);
|
|
164
|
+
if (!existing)
|
|
165
|
+
return { kind: 'missing' };
|
|
166
|
+
const storeReal = await realpath(storeRoot).catch(() => pathResolve(storeRoot));
|
|
167
|
+
if (existing.isSymbolicLink()) {
|
|
168
|
+
const canonical = await realpath(target).catch(() => null);
|
|
169
|
+
if (canonical && isPathInside(storeReal, canonical))
|
|
170
|
+
return { kind: 'link', canonical };
|
|
171
|
+
return { kind: 'unmanaged' };
|
|
138
172
|
}
|
|
173
|
+
const marker = await this.readManagedCopyMarker(target);
|
|
174
|
+
if (marker && isPathInside(storeReal, marker.canonical)) {
|
|
175
|
+
return { kind: 'copy', canonical: marker.canonical };
|
|
176
|
+
}
|
|
177
|
+
return { kind: 'unmanaged' };
|
|
178
|
+
}
|
|
179
|
+
async targetState(canonical, target) {
|
|
180
|
+
const existing = await lstat(target).catch(() => null);
|
|
181
|
+
if (!existing)
|
|
182
|
+
return 'missing';
|
|
183
|
+
if (await this.isLinkedTo(canonical, target))
|
|
184
|
+
return 'current';
|
|
185
|
+
if (await this.isManagedCopy(canonical, target))
|
|
186
|
+
return 'current';
|
|
187
|
+
if (await this.hasManagedCopyMarker(canonical, target))
|
|
188
|
+
return 'managed-stale';
|
|
189
|
+
return 'unmanaged';
|
|
139
190
|
}
|
|
140
191
|
async copyDir(src, dest) {
|
|
192
|
+
const existing = await lstat(dest).catch(() => null);
|
|
193
|
+
if (existing) {
|
|
194
|
+
if (!(await this.hasManagedCopyMarker(src, dest))) {
|
|
195
|
+
throw new Error(`Refusing to copy over unmanaged target: ${dest}`);
|
|
196
|
+
}
|
|
197
|
+
await rm(dest, { recursive: true, force: true });
|
|
198
|
+
}
|
|
141
199
|
await ensureDir(dest);
|
|
142
|
-
// Use recursive cp (node 16.7+)
|
|
143
200
|
await fsCp(src, dest, { recursive: true, force: true });
|
|
201
|
+
const marker = {
|
|
202
|
+
version: 1,
|
|
203
|
+
canonical: await realpath(src).catch(() => pathResolve(src)),
|
|
204
|
+
integrity: await computeDirIntegrity(src),
|
|
205
|
+
};
|
|
206
|
+
await writeFile(join(dest, MANAGED_COPY_MARKER), `${JSON.stringify(marker)}\n`, 'utf8');
|
|
207
|
+
}
|
|
208
|
+
async readManagedCopyMarker(target) {
|
|
209
|
+
try {
|
|
210
|
+
const parsed = JSON.parse(await readFile(join(target, MANAGED_COPY_MARKER), 'utf8'));
|
|
211
|
+
if (parsed.version !== 1 || !parsed.canonical || !parsed.integrity)
|
|
212
|
+
return null;
|
|
213
|
+
return parsed;
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
async hasManagedCopyMarker(canonical, target) {
|
|
220
|
+
const marker = await this.readManagedCopyMarker(target);
|
|
221
|
+
if (!marker)
|
|
222
|
+
return false;
|
|
223
|
+
const canonReal = await realpath(canonical).catch(() => pathResolve(canonical));
|
|
224
|
+
return pathResolve(marker.canonical) === pathResolve(canonReal);
|
|
225
|
+
}
|
|
226
|
+
async isManagedCopy(canonical, target) {
|
|
227
|
+
const marker = await this.readManagedCopyMarker(target);
|
|
228
|
+
if (!marker)
|
|
229
|
+
return false;
|
|
230
|
+
const canonReal = await realpath(canonical).catch(() => pathResolve(canonical));
|
|
231
|
+
if (pathResolve(marker.canonical) !== pathResolve(canonReal))
|
|
232
|
+
return false;
|
|
233
|
+
return marker.integrity === (await computeDirIntegrity(canonical));
|
|
144
234
|
}
|
|
145
235
|
}
|
|
146
236
|
// Singleton for convenience
|
|
@@ -157,4 +247,8 @@ export async function pathExists(p) {
|
|
|
157
247
|
}
|
|
158
248
|
export { join, resolve as pathResolve } from 'node:path';
|
|
159
249
|
export { homedir } from 'node:os';
|
|
250
|
+
function isPathInside(root, candidate) {
|
|
251
|
+
const rel = relative(pathResolve(root), pathResolve(candidate));
|
|
252
|
+
return rel === '' || (!rel.startsWith('..') && !isAbsolute(rel));
|
|
253
|
+
}
|
|
160
254
|
//# sourceMappingURL=link-manager.js.map
|
package/dist/link-manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-manager.js","sourceRoot":"","sources":["../src/link-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"link-manager.js","sourceRoot":"","sources":["../src/link-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,OAAO,EACP,EAAE,EACF,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,MAAM,EACN,SAAS,EACT,EAAE,IAAI,IAAI,EACV,QAAQ,EACR,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGxF,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhE,MAAM,mBAAmB,GAAG,wBAAwB,CAAC;AAqBrD,MAAM,OAAO,WAAW;IACtB;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,MAAc,EAAE,UAAuB,EAAE;QAC3E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrF,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QAE7B,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,GAAG,CAAC,wBAAwB,SAAS,OAAO,MAAM,KAAK,IAAI,GAAG,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QAED,MAAM,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAEjC,mBAAmB;QACnB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC;gBAAE,OAAO;YACxD,IAAI,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;gBACvD,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,2CAA2C,MAAM,EAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBACtC,OAAO;YACT,CAAC;YAED,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YACvC,MAAM,UAAU,GAAG,WAAW;gBAC5B,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,GAAG;gBACzD,CAAC,CAAC,QAAQ,CAAC;YAEb,IAAI,WAAW,EAAE,CAAC;gBAChB,8EAA8E;gBAC9E,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC3C,CAAC;gBAAC,OAAO,CAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC9C,OAAO,CAAC,IAAI,CAAC,8CAA8C,MAAM,wBAAwB,CAAC,CAAC;wBAC3F,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;wBACtC,OAAO;oBACT,CAAC;oBACD,MAAM,CAAC,CAAC;gBACV,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAC/D,qFAAqF;gBACrF,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;gBAC9C,CAAC;gBAAC,OAAO,CAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC9C,OAAO,CAAC,IAAI,CAAC,sCAAsC,MAAM,wBAAwB,CAAC,CAAC;wBACnF,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;wBACtC,OAAO;oBACT,CAAC;oBACD,MAAM,CAAC,CAAC;gBACV,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YACzC,CAAC;YAED,SAAS;YACT,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;gBAChD,gCAAgC;gBAChC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACnE,OAAO,CAAC,IAAI,CAAC,qEAAqE,MAAM,EAAE,CAAC,CAAC;gBAC5F,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,6DAA6D;YAC7D,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,8BAA8B,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,qBAAqB,MAAM,EAAE,CAAC,CAAC;gBACjG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,SAAkB;QACjD,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC,EAAE;gBAAE,OAAO;YAEhB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;YAClF,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC7D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACvE,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACtE,CAAC;YAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO;YAC7D,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,MAAc;QAChD,IAAI,CAAC;YACH,sCAAsC;YACtC,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACnE,OAAO,WAAW,CAAC,UAAU,CAAC,KAAK,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CAAC,MAAc,EAAE,SAAiB;QACtD,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9B,IAAI,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC;YACrB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACvC,OAAO,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAQ,GAA6B,CAAC,IAAI,KAAK,QAAQ,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,MAAc,EAAE,SAAiB;QAC1D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QAEhF,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC3D,IAAI,SAAS,IAAI,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YACxF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QAC/B,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACxD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QACvD,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,MAAc;QACjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC;QAChC,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/D,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC;YAAE,OAAO,SAAS,CAAC;QAClE,IAAI,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC;YAAE,OAAO,eAAe,CAAC;QAC/E,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,IAAY;QAC7C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CAAC,2CAA2C,IAAI,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QACtB,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,MAAM,GAAsB;YAChC,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC5D,SAAS,EAAE,MAAM,mBAAmB,CAAC,GAAG,CAAC;SAC1C,CAAC;QACF,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1F,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,MAAc;QAChD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE,MAAM,CAAC,CAAsB,CAAC;YAC1G,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;YAChF,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,SAAiB,EAAE,MAAc;QAClE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QAChF,OAAO,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,WAAW,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,MAAc;QAC3D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QAChF,IAAI,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,WAAW,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3E,OAAO,MAAM,CAAC,SAAS,KAAK,CAAC,MAAM,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;IACrE,CAAC;CACF;AAED,4BAA4B;AAC5B,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAE7C,2DAA2D;AAC3D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,CAAS;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,SAAS,YAAY,CAAC,IAAY,EAAE,SAAiB;IACnD,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IAChE,OAAO,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACnE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skillctl/link-manager",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Link manager for symlinks, junctions, copies across agent adapters for skillctl",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "xFurti & Gabry848",
|
|
@@ -8,10 +8,11 @@
|
|
|
8
8
|
"main": "./dist/index.js",
|
|
9
9
|
"types": "./dist/index.d.ts",
|
|
10
10
|
"files": [
|
|
11
|
-
"dist"
|
|
11
|
+
"dist",
|
|
12
|
+
"!dist/test"
|
|
12
13
|
],
|
|
13
14
|
"dependencies": {
|
|
14
|
-
"@skillctl/core": "0.
|
|
15
|
+
"@skillctl/core": "0.5.0"
|
|
15
16
|
},
|
|
16
17
|
"devDependencies": {
|
|
17
18
|
"@types/node": "^20.14.0",
|
|
@@ -38,6 +39,6 @@
|
|
|
38
39
|
"dev": "tsc -b --watch",
|
|
39
40
|
"clean": "rimraf dist",
|
|
40
41
|
"lint": "tsc --noEmit",
|
|
41
|
-
"test": "node --test ./dist/test/*.test.js
|
|
42
|
+
"test": "node --test ./dist/test/*.test.js"
|
|
42
43
|
}
|
|
43
44
|
}
|