skyl.dev 0.1.1 → 0.2.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/bundle.json +1 -1
- package/dist/skyl.js +2406 -0
- package/package.json +8 -11
- package/dist/bin.d.ts +0 -3
- package/dist/bin.d.ts.map +0 -1
- package/dist/bin.js +0 -4
- package/dist/bin.js.map +0 -1
- package/dist/cli.d.ts +0 -2
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -158
- package/dist/cli.js.map +0 -1
- package/dist/commands/add.d.ts +0 -10
- package/dist/commands/add.d.ts.map +0 -1
- package/dist/commands/add.js +0 -38
- package/dist/commands/add.js.map +0 -1
- package/dist/commands/audit.d.ts +0 -16
- package/dist/commands/audit.d.ts.map +0 -1
- package/dist/commands/audit.js +0 -91
- package/dist/commands/audit.js.map +0 -1
- package/dist/commands/context.d.ts +0 -17
- package/dist/commands/context.d.ts.map +0 -1
- package/dist/commands/context.js +0 -47
- package/dist/commands/context.js.map +0 -1
- package/dist/commands/diff.d.ts +0 -12
- package/dist/commands/diff.d.ts.map +0 -1
- package/dist/commands/diff.js +0 -79
- package/dist/commands/diff.js.map +0 -1
- package/dist/commands/learn.d.ts +0 -18
- package/dist/commands/learn.d.ts.map +0 -1
- package/dist/commands/learn.js +0 -115
- package/dist/commands/learn.js.map +0 -1
- package/dist/commands/lint.d.ts +0 -14
- package/dist/commands/lint.d.ts.map +0 -1
- package/dist/commands/lint.js +0 -109
- package/dist/commands/lint.js.map +0 -1
- package/dist/commands/list.d.ts +0 -6
- package/dist/commands/list.d.ts.map +0 -1
- package/dist/commands/list.js +0 -60
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/remove.d.ts +0 -16
- package/dist/commands/remove.d.ts.map +0 -1
- package/dist/commands/remove.js +0 -73
- package/dist/commands/remove.js.map +0 -1
- package/dist/commands/scan.d.ts +0 -10
- package/dist/commands/scan.d.ts.map +0 -1
- package/dist/commands/scan.js +0 -60
- package/dist/commands/scan.js.map +0 -1
- package/dist/commands/update.d.ts +0 -11
- package/dist/commands/update.d.ts.map +0 -1
- package/dist/commands/update.js +0 -135
- package/dist/commands/update.js.map +0 -1
- package/dist/context.d.ts +0 -44
- package/dist/context.d.ts.map +0 -1
- package/dist/context.js +0 -179
- package/dist/context.js.map +0 -1
- package/dist/ignore.d.ts +0 -21
- package/dist/ignore.d.ts.map +0 -1
- package/dist/ignore.js +0 -79
- package/dist/ignore.js.map +0 -1
- package/dist/install.d.ts +0 -10
- package/dist/install.d.ts.map +0 -1
- package/dist/install.js +0 -54
- package/dist/install.js.map +0 -1
- package/dist/learn.d.ts +0 -45
- package/dist/learn.d.ts.map +0 -1
- package/dist/learn.js +0 -146
- package/dist/learn.js.map +0 -1
- package/dist/registry.d.ts +0 -23
- package/dist/registry.d.ts.map +0 -1
- package/dist/registry.js +0 -38
- package/dist/registry.js.map +0 -1
- package/dist/scan.d.ts +0 -3
- package/dist/scan.d.ts.map +0 -1
- package/dist/scan.js +0 -104
- package/dist/scan.js.map +0 -1
- package/dist/state.d.ts +0 -31
- package/dist/state.d.ts.map +0 -1
- package/dist/state.js +0 -39
- package/dist/state.js.map +0 -1
- package/dist/ui.d.ts +0 -17
- package/dist/ui.d.ts.map +0 -1
- package/dist/ui.js +0 -35
- package/dist/ui.js.map +0 -1
- package/node_modules/@skyl/core/dist/audit.d.ts +0 -48
- package/node_modules/@skyl/core/dist/audit.d.ts.map +0 -1
- package/node_modules/@skyl/core/dist/audit.js +0 -99
- package/node_modules/@skyl/core/dist/audit.js.map +0 -1
- package/node_modules/@skyl/core/dist/detect.d.ts +0 -15
- package/node_modules/@skyl/core/dist/detect.d.ts.map +0 -1
- package/node_modules/@skyl/core/dist/detect.js +0 -62
- package/node_modules/@skyl/core/dist/detect.js.map +0 -1
- package/node_modules/@skyl/core/dist/diff.d.ts +0 -32
- package/node_modules/@skyl/core/dist/diff.d.ts.map +0 -1
- package/node_modules/@skyl/core/dist/diff.js +0 -119
- package/node_modules/@skyl/core/dist/diff.js.map +0 -1
- package/node_modules/@skyl/core/dist/errors.d.ts +0 -21
- package/node_modules/@skyl/core/dist/errors.d.ts.map +0 -1
- package/node_modules/@skyl/core/dist/errors.js +0 -25
- package/node_modules/@skyl/core/dist/errors.js.map +0 -1
- package/node_modules/@skyl/core/dist/index.d.ts +0 -14
- package/node_modules/@skyl/core/dist/index.d.ts.map +0 -1
- package/node_modules/@skyl/core/dist/index.js +0 -14
- package/node_modules/@skyl/core/dist/index.js.map +0 -1
- package/node_modules/@skyl/core/dist/lint.d.ts +0 -28
- package/node_modules/@skyl/core/dist/lint.d.ts.map +0 -1
- package/node_modules/@skyl/core/dist/lint.js +0 -169
- package/node_modules/@skyl/core/dist/lint.js.map +0 -1
- package/node_modules/@skyl/core/dist/lockfile.d.ts +0 -37
- package/node_modules/@skyl/core/dist/lockfile.d.ts.map +0 -1
- package/node_modules/@skyl/core/dist/lockfile.js +0 -47
- package/node_modules/@skyl/core/dist/lockfile.js.map +0 -1
- package/node_modules/@skyl/core/dist/match.d.ts +0 -19
- package/node_modules/@skyl/core/dist/match.d.ts.map +0 -1
- package/node_modules/@skyl/core/dist/match.js +0 -72
- package/node_modules/@skyl/core/dist/match.js.map +0 -1
- package/node_modules/@skyl/core/dist/names.d.ts +0 -11
- package/node_modules/@skyl/core/dist/names.d.ts.map +0 -1
- package/node_modules/@skyl/core/dist/names.js +0 -31
- package/node_modules/@skyl/core/dist/names.js.map +0 -1
- package/node_modules/@skyl/core/dist/parse.d.ts +0 -22
- package/node_modules/@skyl/core/dist/parse.d.ts.map +0 -1
- package/node_modules/@skyl/core/dist/parse.js +0 -163
- package/node_modules/@skyl/core/dist/parse.js.map +0 -1
- package/node_modules/@skyl/core/dist/resolve.d.ts +0 -12
- package/node_modules/@skyl/core/dist/resolve.d.ts.map +0 -1
- package/node_modules/@skyl/core/dist/resolve.js +0 -40
- package/node_modules/@skyl/core/dist/resolve.js.map +0 -1
- package/node_modules/@skyl/core/dist/source.d.ts +0 -35
- package/node_modules/@skyl/core/dist/source.d.ts.map +0 -1
- package/node_modules/@skyl/core/dist/source.js +0 -85
- package/node_modules/@skyl/core/dist/source.js.map +0 -1
- package/node_modules/@skyl/core/dist/targets.d.ts +0 -20
- package/node_modules/@skyl/core/dist/targets.d.ts.map +0 -1
- package/node_modules/@skyl/core/dist/targets.js +0 -24
- package/node_modules/@skyl/core/dist/targets.js.map +0 -1
- package/node_modules/@skyl/core/dist/types.d.ts +0 -51
- package/node_modules/@skyl/core/dist/types.d.ts.map +0 -1
- package/node_modules/@skyl/core/dist/types.js +0 -2
- package/node_modules/@skyl/core/dist/types.js.map +0 -1
- package/node_modules/@skyl/core/package.json +0 -20
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skyl.dev",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Install curated AI agent skills for what your project actually uses",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"bin": {
|
|
8
|
-
"skyl": "dist/
|
|
8
|
+
"skyl": "dist/skyl.js"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
|
-
"dist",
|
|
11
|
+
"dist/skyl.js",
|
|
12
12
|
"bundle.json",
|
|
13
13
|
"README.md"
|
|
14
14
|
],
|
|
@@ -23,22 +23,19 @@
|
|
|
23
23
|
"scripts": {
|
|
24
24
|
"build": "tsc -b",
|
|
25
25
|
"typecheck": "tsc -b --force",
|
|
26
|
-
"prepack": "tsc -b && node ../../scripts/build-bundle.mjs"
|
|
27
|
-
},
|
|
28
|
-
"dependencies": {
|
|
29
|
-
"@skyl/core": "0.1.1"
|
|
26
|
+
"prepack": "tsc -b && node ../../scripts/build-bundle.mjs && node ../../scripts/bundle-js.mjs"
|
|
30
27
|
},
|
|
31
28
|
"engines": {
|
|
32
29
|
"node": ">=20"
|
|
33
30
|
},
|
|
34
|
-
"bundleDependencies": [
|
|
35
|
-
"@skyl/core"
|
|
36
|
-
],
|
|
37
31
|
"repository": {
|
|
38
32
|
"type": "git",
|
|
39
33
|
"url": "git+https://github.com/skyl-dev/skyl.dev.git",
|
|
40
34
|
"directory": "packages/cli"
|
|
41
35
|
},
|
|
42
36
|
"homepage": "https://skyl.dev",
|
|
43
|
-
"author": "ahmmedrejowan"
|
|
37
|
+
"author": "ahmmedrejowan",
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@skyl/core": "workspace:*"
|
|
40
|
+
}
|
|
44
41
|
}
|
package/dist/bin.d.ts
DELETED
package/dist/bin.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
|
package/dist/bin.js
DELETED
package/dist/bin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,CAAC,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/cli.d.ts
DELETED
package/dist/cli.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAwFA,wBAAsB,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA0DlE"}
|
package/dist/cli.js
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import { SkylError, TARGETS } from '@skyl/core';
|
|
2
|
-
import { add } from "./commands/add.js";
|
|
3
|
-
import { audit } from "./commands/audit.js";
|
|
4
|
-
import { context } from "./commands/context.js";
|
|
5
|
-
import { diff } from "./commands/diff.js";
|
|
6
|
-
import { learn } from "./commands/learn.js";
|
|
7
|
-
import { lint } from "./commands/lint.js";
|
|
8
|
-
import { list } from "./commands/list.js";
|
|
9
|
-
import { remove } from "./commands/remove.js";
|
|
10
|
-
import { scan } from "./commands/scan.js";
|
|
11
|
-
import { update } from "./commands/update.js";
|
|
12
|
-
import { bold, cyan, dim, err, out, red } from "./ui.js";
|
|
13
|
-
// kept in step with package.json by a test, rather than read at startup
|
|
14
|
-
const VERSION = '0.1.1';
|
|
15
|
-
const HELP = `
|
|
16
|
-
${bold('skyl')} ${dim('curated agent skills for what your project actually uses')}
|
|
17
|
-
|
|
18
|
-
${dim('Install')}
|
|
19
|
-
${bold('skyl scan')} read the project and propose an install
|
|
20
|
-
${bold('skyl add')} <skill...> install skills and what they require
|
|
21
|
-
${bold('skyl remove')} <skill...> take skills back out
|
|
22
|
-
${bold('skyl list')} what is installed, and what has moved since
|
|
23
|
-
|
|
24
|
-
${dim('Keep current')}
|
|
25
|
-
${bold('skyl diff')} [skill...] what changed here, and what changed upstream
|
|
26
|
-
${bold('skyl update')} [skill...] apply the upstream side, keeping local edits
|
|
27
|
-
|
|
28
|
-
${dim('Your own files')}
|
|
29
|
-
${bold('skyl audit')} [file] read a hand-written CLAUDE.md and say what is in it
|
|
30
|
-
${bold('skyl context')} emit what a model needs to describe this project
|
|
31
|
-
${bold('skyl learn')} derive a project knowledge skill from this repository
|
|
32
|
-
|
|
33
|
-
${dim('Authoring')}
|
|
34
|
-
${bold('skyl lint')} [path...] check skills against the spec
|
|
35
|
-
|
|
36
|
-
${dim('Options')}
|
|
37
|
-
--target <${TARGETS.map((t) => t.id).join('|')}>
|
|
38
|
-
--dir <path> read skills from a local checkout instead
|
|
39
|
-
--refresh prefer the network over the bundled copy
|
|
40
|
-
--json machine-readable output (scan, context)
|
|
41
|
-
--full whole file rather than hunks (diff)
|
|
42
|
-
--force take the upstream side of a conflict (update)
|
|
43
|
-
--strict warnings fail the run (lint)
|
|
44
|
-
--dry-run list what would be sent, and send nothing (context)
|
|
45
|
-
--agent <cmd> the agent to pipe a prompt to (learn)
|
|
46
|
-
--print-prompt print the prompt instead of running anything (learn)
|
|
47
|
-
--out <file> write to a file instead of stdout
|
|
48
|
-
-y, --yes do not ask before writing
|
|
49
|
-
-C <path> run as if in this directory
|
|
50
|
-
-h, --help -v, --version
|
|
51
|
-
|
|
52
|
-
${dim('Skills are proposed, never installed without asking.')}
|
|
53
|
-
`;
|
|
54
|
-
function parse(argv) {
|
|
55
|
-
const positional = [];
|
|
56
|
-
const flags = {};
|
|
57
|
-
const takesValue = new Set(['target', 'dir', 'C', 'out', 'agent', 'max-files']);
|
|
58
|
-
for (let i = 0; i < argv.length; i += 1) {
|
|
59
|
-
const arg = argv[i];
|
|
60
|
-
if (arg === '--') {
|
|
61
|
-
positional.push(...argv.slice(i + 1));
|
|
62
|
-
break;
|
|
63
|
-
}
|
|
64
|
-
if (arg.startsWith('--')) {
|
|
65
|
-
const [name, inline] = arg.slice(2).split('=', 2);
|
|
66
|
-
if (inline !== undefined)
|
|
67
|
-
flags[name] = inline;
|
|
68
|
-
else if (takesValue.has(name)) {
|
|
69
|
-
flags[name] = argv[i + 1] ?? '';
|
|
70
|
-
i += 1;
|
|
71
|
-
}
|
|
72
|
-
else
|
|
73
|
-
flags[name] = true;
|
|
74
|
-
}
|
|
75
|
-
else if (arg.startsWith('-') && arg.length > 1) {
|
|
76
|
-
const short = arg.slice(1);
|
|
77
|
-
if (takesValue.has(short)) {
|
|
78
|
-
flags[short] = argv[i + 1] ?? '';
|
|
79
|
-
i += 1;
|
|
80
|
-
}
|
|
81
|
-
else
|
|
82
|
-
for (const c of short)
|
|
83
|
-
flags[c] = true;
|
|
84
|
-
}
|
|
85
|
-
else
|
|
86
|
-
positional.push(arg);
|
|
87
|
-
}
|
|
88
|
-
return { command: positional.shift(), positional, flags };
|
|
89
|
-
}
|
|
90
|
-
const str = (v) => (typeof v === 'string' && v !== '' ? v : undefined);
|
|
91
|
-
const yes = (flags) => flags['yes'] === true || flags['y'] === true;
|
|
92
|
-
export async function run(argv) {
|
|
93
|
-
const { command, positional, flags } = parse(argv);
|
|
94
|
-
// version before the no-command case, or `skyl --version` prints help
|
|
95
|
-
if (flags['version'] === true || flags['v'] === true) {
|
|
96
|
-
out(`skyl ${VERSION}`);
|
|
97
|
-
return 0;
|
|
98
|
-
}
|
|
99
|
-
if (flags['help'] === true || flags['h'] === true || command === 'help') {
|
|
100
|
-
out(HELP);
|
|
101
|
-
return 0;
|
|
102
|
-
}
|
|
103
|
-
if (command === undefined) {
|
|
104
|
-
out(HELP);
|
|
105
|
-
return 1;
|
|
106
|
-
}
|
|
107
|
-
const root = str(flags['C']) ?? process.cwd();
|
|
108
|
-
const dir = str(flags['dir']);
|
|
109
|
-
const refresh = flags['refresh'] === true;
|
|
110
|
-
try {
|
|
111
|
-
switch (command) {
|
|
112
|
-
case 'scan':
|
|
113
|
-
return await scan({ root, dir, refresh, json: flags['json'] === true });
|
|
114
|
-
case 'add':
|
|
115
|
-
return await add({ root, names: positional, target: str(flags['target']), dir, refresh, yes: yes(flags) });
|
|
116
|
-
case 'list':
|
|
117
|
-
return await list({ root, dir, refresh });
|
|
118
|
-
case 'remove':
|
|
119
|
-
case 'rm':
|
|
120
|
-
return await remove({ root, names: positional, dir, refresh, yes: yes(flags) });
|
|
121
|
-
case 'diff':
|
|
122
|
-
return await diff({ root, names: positional, dir, refresh, full: flags['full'] === true });
|
|
123
|
-
case 'update':
|
|
124
|
-
case 'upgrade':
|
|
125
|
-
return await update({
|
|
126
|
-
root, names: positional, dir, refresh, yes: yes(flags),
|
|
127
|
-
force: flags['force'] === true, showDiff: flags['diff'] === true,
|
|
128
|
-
});
|
|
129
|
-
case 'audit':
|
|
130
|
-
return await audit({ root, file: positional[0], dir, refresh });
|
|
131
|
-
case 'context':
|
|
132
|
-
return await context({
|
|
133
|
-
root, dryRun: flags['dry-run'] === true, json: flags['json'] === true,
|
|
134
|
-
outFile: str(flags['out']),
|
|
135
|
-
...(str(flags['max-files']) === undefined ? {} : { maxFiles: Number(str(flags['max-files'])) }),
|
|
136
|
-
});
|
|
137
|
-
case 'learn':
|
|
138
|
-
return await learn({
|
|
139
|
-
root, agent: str(flags['agent']), printPrompt: flags['print-prompt'] === true,
|
|
140
|
-
outFile: str(flags['out']), yes: yes(flags), target: str(flags['target']),
|
|
141
|
-
});
|
|
142
|
-
case 'lint':
|
|
143
|
-
return await lint({ root, paths: positional, strict: flags['strict'] === true });
|
|
144
|
-
default:
|
|
145
|
-
err(`${red('Unknown command')} ${bold(command)}`);
|
|
146
|
-
err(`Try ${cyan('skyl --help')}`);
|
|
147
|
-
return 1;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
catch (cause) {
|
|
151
|
-
if (cause instanceof SkylError) {
|
|
152
|
-
err(`${red('Error')} ${cause.message}`);
|
|
153
|
-
return 1;
|
|
154
|
-
}
|
|
155
|
-
throw cause;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAEzD,wEAAwE;AACxE,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,IAAI,GAAG;IACT,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,0DAA0D,CAAC;;IAE/E,GAAG,CAAC,SAAS,CAAC;MACZ,IAAI,CAAC,WAAW,CAAC;MACjB,IAAI,CAAC,UAAU,CAAC;MAChB,IAAI,CAAC,aAAa,CAAC;MACnB,IAAI,CAAC,WAAW,CAAC;;IAEnB,GAAG,CAAC,cAAc,CAAC;MACjB,IAAI,CAAC,WAAW,CAAC;MACjB,IAAI,CAAC,aAAa,CAAC;;IAErB,GAAG,CAAC,gBAAgB,CAAC;MACnB,IAAI,CAAC,YAAY,CAAC;MAClB,IAAI,CAAC,cAAc,CAAC;MACpB,IAAI,CAAC,YAAY,CAAC;;IAEpB,GAAG,CAAC,WAAW,CAAC;MACd,IAAI,CAAC,WAAW,CAAC;;IAEnB,GAAG,CAAC,SAAS,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;IAe9C,GAAG,CAAC,sDAAsD,CAAC;CAC9D,CAAC;AAQF,SAAS,KAAK,CAAC,IAAuB;IACpC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IAEhF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAAC,MAAM;QAAC,CAAC;QACnE,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAiC,CAAC;YAClF,IAAI,MAAM,KAAK,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;iBAC1C,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBAAC,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;;gBACtE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAC1B,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBAAC,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;;gBACnE,KAAK,MAAM,CAAC,IAAI,KAAK;oBAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAC9C,CAAC;;YAAM,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,CAA+B,EAAsB,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAEzH,MAAM,GAAG,GAAG,CAAC,KAAsB,EAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AAE9F,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAuB;IAC/C,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAEnD,sEAAsE;IACtE,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAAC,GAAG,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IAC3F,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IACjG,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IAEnD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9C,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IAE1C,IAAI,CAAC;QACH,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,MAAM;gBACT,OAAO,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC1E,KAAK,KAAK;gBACR,OAAO,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC7G,KAAK,MAAM;gBACT,OAAO,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,OAAO,MAAM,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClF,KAAK,MAAM;gBACT,OAAO,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC7F,KAAK,QAAQ,CAAC;YACd,KAAK,SAAS;gBACZ,OAAO,MAAM,MAAM,CAAC;oBAClB,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC;oBACtD,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI;iBACjE,CAAC,CAAC;YACL,KAAK,OAAO;gBACV,OAAO,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YAClE,KAAK,SAAS;gBACZ,OAAO,MAAM,OAAO,CAAC;oBACnB,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI;oBACrE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC1B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChG,CAAC,CAAC;YACL,KAAK,OAAO;gBACV,OAAO,MAAM,KAAK,CAAC;oBACjB,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,IAAI;oBAC7E,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;iBAC1E,CAAC,CAAC;YACL,KAAK,MAAM;gBACT,OAAO,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACnF;gBACE,GAAG,CAAC,GAAG,GAAG,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAClD,GAAG,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;gBAClC,OAAO,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;YAC/B,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/commands/add.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export interface AddOptions {
|
|
2
|
-
root: string;
|
|
3
|
-
names: string[];
|
|
4
|
-
target?: string | undefined;
|
|
5
|
-
dir?: string | undefined;
|
|
6
|
-
refresh?: boolean | undefined;
|
|
7
|
-
yes?: boolean | undefined;
|
|
8
|
-
}
|
|
9
|
-
export declare function add(opts: AddOptions): Promise<number>;
|
|
10
|
-
//# sourceMappingURL=add.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3B;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAuC3D"}
|
package/dist/commands/add.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { implied, normalise, resolve } from '@skyl/core';
|
|
2
|
-
import { loadRegistry } from "../registry.js";
|
|
3
|
-
import { install, readLockfile, resolveTarget, writeLockfile } from "../install.js";
|
|
4
|
-
import { bold, confirm, dim, green, out, tokens, yellow } from "../ui.js";
|
|
5
|
-
export async function add(opts) {
|
|
6
|
-
if (opts.names.length === 0) {
|
|
7
|
-
out(`${yellow('Nothing to add.')} Name a skill, or run ${bold('skyl scan')} to see what fits.`);
|
|
8
|
-
return 1;
|
|
9
|
-
}
|
|
10
|
-
const { skills } = await loadRegistry({ dir: opts.dir, refresh: opts.refresh });
|
|
11
|
-
const requested = normalise(skills, opts.names);
|
|
12
|
-
const ordered = resolve(skills, requested);
|
|
13
|
-
const extra = implied(ordered, requested);
|
|
14
|
-
const lock = await readLockfile(opts.root);
|
|
15
|
-
const target = resolveTarget(opts.target, lock);
|
|
16
|
-
const already = new Set(Object.keys(lock?.skills ?? {}));
|
|
17
|
-
out();
|
|
18
|
-
for (const skill of ordered) {
|
|
19
|
-
const state = already.has(skill.name) ? dim('reinstall') : green('install');
|
|
20
|
-
const why = extra.some((e) => e.name === skill.name) ? dim('required by another skill') : '';
|
|
21
|
-
out(` ${bold(skill.name.padEnd(22))} ${skill.version.padEnd(8)} ${state.padEnd(18)} ${why}`);
|
|
22
|
-
}
|
|
23
|
-
const words = ordered.reduce((n, s) => n + s.installableWords, 0);
|
|
24
|
-
out();
|
|
25
|
-
out(` ${ordered.length} skills, ${tokens(words)} ${dim(`into ${target.dir}`)}`);
|
|
26
|
-
out();
|
|
27
|
-
if (!(await confirm(' Write them?', opts.yes === true))) {
|
|
28
|
-
out(` ${dim('Nothing written.')}`);
|
|
29
|
-
return 1;
|
|
30
|
-
}
|
|
31
|
-
const next = await install(opts.root, target, ordered, new Set(requested), lock);
|
|
32
|
-
await writeLockfile(opts.root, next);
|
|
33
|
-
out();
|
|
34
|
-
out(` ${green('Done.')} ${dim('Recorded in skyl.lock.')}`);
|
|
35
|
-
out();
|
|
36
|
-
return 0;
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=add.js.map
|
package/dist/commands/add.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/audit.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export interface AuditOptions {
|
|
2
|
-
root: string;
|
|
3
|
-
file?: string | undefined;
|
|
4
|
-
dir?: string | undefined;
|
|
5
|
-
refresh?: boolean | undefined;
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Read a hand-written context file and say what is in it.
|
|
9
|
-
*
|
|
10
|
-
* Analysis only, and no rewriting: prose passed through a model comes back longer and
|
|
11
|
-
* more generic, and this file is usually one someone tuned by hand. Everything here is
|
|
12
|
-
* lexical, so the matched words are always printed. A reader who disagrees can see
|
|
13
|
-
* immediately why the tool said it.
|
|
14
|
-
*/
|
|
15
|
-
export declare function audit(opts: AuditOptions): Promise<number>;
|
|
16
|
-
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAsB,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAuE/D"}
|
package/dist/commands/audit.js
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { readFile } from 'node:fs/promises';
|
|
2
|
-
import { join, relative } from 'node:path';
|
|
3
|
-
import { audit as analyse } from '@skyl/core';
|
|
4
|
-
import { readLockfile } from "../install.js";
|
|
5
|
-
import { loadRegistry } from "../registry.js";
|
|
6
|
-
import { bold, cyan, dim, green, out, red, tokens, yellow } from "../ui.js";
|
|
7
|
-
/** Where hand-written agent context tends to live. */
|
|
8
|
-
const CANDIDATES = [
|
|
9
|
-
'CLAUDE.md', '.claude/CLAUDE.md', 'AGENTS.md', '.cursorrules', '.windsurfrules',
|
|
10
|
-
'.github/copilot-instructions.md', '.continue/rules.md', '.aider.conf.yml',
|
|
11
|
-
];
|
|
12
|
-
/**
|
|
13
|
-
* Read a hand-written context file and say what is in it.
|
|
14
|
-
*
|
|
15
|
-
* Analysis only, and no rewriting: prose passed through a model comes back longer and
|
|
16
|
-
* more generic, and this file is usually one someone tuned by hand. Everything here is
|
|
17
|
-
* lexical, so the matched words are always printed. A reader who disagrees can see
|
|
18
|
-
* immediately why the tool said it.
|
|
19
|
-
*/
|
|
20
|
-
export async function audit(opts) {
|
|
21
|
-
let path = opts.file;
|
|
22
|
-
if (!path) {
|
|
23
|
-
for (const c of CANDIDATES) {
|
|
24
|
-
const full = join(opts.root, c);
|
|
25
|
-
if (await readFile(full, 'utf8').then(() => true, () => false)) {
|
|
26
|
-
path = full;
|
|
27
|
-
break;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
else if (!path.startsWith('/')) {
|
|
32
|
-
path = join(opts.root, path);
|
|
33
|
-
}
|
|
34
|
-
if (!path) {
|
|
35
|
-
out(` ${yellow('No hand-written context file found.')}`);
|
|
36
|
-
out(` ${dim(`Looked for ${CANDIDATES.slice(0, 4).join(', ')}`)}`);
|
|
37
|
-
return 1;
|
|
38
|
-
}
|
|
39
|
-
const text = await readFile(path, 'utf8').catch(() => undefined);
|
|
40
|
-
if (text === undefined) {
|
|
41
|
-
out(` ${red('Cannot read')} ${path}`);
|
|
42
|
-
return 1;
|
|
43
|
-
}
|
|
44
|
-
const { skills } = await loadRegistry({ dir: opts.dir, refresh: opts.refresh });
|
|
45
|
-
const lock = await readLockfile(opts.root);
|
|
46
|
-
const installed = new Set(Object.keys(lock?.skills ?? {}));
|
|
47
|
-
const report = analyse(text, skills);
|
|
48
|
-
out();
|
|
49
|
-
out(` ${bold(relative(opts.root, path) || path)} ${dim(`${report.words} words, ${tokens(report.words)}`)}`);
|
|
50
|
-
out();
|
|
51
|
-
if (report.secrets.length > 0) {
|
|
52
|
-
out(` ${red('Possible credentials.')} ${dim('these reach the model with every request')}`);
|
|
53
|
-
for (const s of report.secrets)
|
|
54
|
-
out(` ${red('!')} line ${s.line}, ${s.what}`);
|
|
55
|
-
out();
|
|
56
|
-
}
|
|
57
|
-
let flagged = 0;
|
|
58
|
-
for (const section of report.sections) {
|
|
59
|
-
const notes = [];
|
|
60
|
-
for (const o of section.overlaps) {
|
|
61
|
-
const state = installed.has(o.skill) ? 'installed' : 'in the registry';
|
|
62
|
-
notes.push(`${yellow('~')} shares vocabulary with ${bold(o.skill)} ${dim(`(${state}: ${o.terms.slice(0, 6).join(', ')})`)}`);
|
|
63
|
-
}
|
|
64
|
-
if (section.noInstruction && section.words > 40) {
|
|
65
|
-
notes.push(`${yellow('~')} no instruction in it ${dim('nothing to follow, and the agent can read the code itself')}`);
|
|
66
|
-
}
|
|
67
|
-
if (notes.length === 0)
|
|
68
|
-
continue;
|
|
69
|
-
flagged += 1;
|
|
70
|
-
out(` ${bold(section.heading)} ${dim(`${section.words} words`)}`);
|
|
71
|
-
for (const n of notes)
|
|
72
|
-
out(` ${n}`);
|
|
73
|
-
out();
|
|
74
|
-
}
|
|
75
|
-
if (report.missing.length > 0) {
|
|
76
|
-
out(` ${dim('Not found in the file')}`);
|
|
77
|
-
for (const m of report.missing)
|
|
78
|
-
out(` ${dim('o')} ${m}`);
|
|
79
|
-
out();
|
|
80
|
-
}
|
|
81
|
-
if (flagged === 0 && report.secrets.length === 0) {
|
|
82
|
-
out(` ${green('Nothing to flag.')} ${dim('no overlap with the registry, and every section carries an instruction')}`);
|
|
83
|
-
out();
|
|
84
|
-
return 0;
|
|
85
|
-
}
|
|
86
|
-
out(` ${dim('Overlap is word overlap, not a judgement. Read the section before cutting it.')}`);
|
|
87
|
-
out(` ${cyan('skyl scan')} ${dim('shows what the registry would install for this project.')}`);
|
|
88
|
-
out();
|
|
89
|
-
return 0;
|
|
90
|
-
}
|
|
91
|
-
//# sourceMappingURL=audit.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export interface ContextOptions {
|
|
2
|
-
root: string;
|
|
3
|
-
dryRun?: boolean | undefined;
|
|
4
|
-
json?: boolean | undefined;
|
|
5
|
-
outFile?: string | undefined;
|
|
6
|
-
maxFiles?: number | undefined;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Emit what a model would need to describe this product.
|
|
10
|
-
*
|
|
11
|
-
* A separate command rather than a step inside `learn`, because the selection is the
|
|
12
|
-
* part worth trusting and it has to be reviewable on its own. `--dry-run` lists the
|
|
13
|
-
* files without their contents, which is what anyone with a proprietary codebase will
|
|
14
|
-
* run first.
|
|
15
|
-
*/
|
|
16
|
-
export declare function context(opts: ContextOptions): Promise<number>;
|
|
17
|
-
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAkCnE"}
|
package/dist/commands/context.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { writeFile } from 'node:fs/promises';
|
|
2
|
-
import { buildContext, renderContext } from "../context.js";
|
|
3
|
-
import { readLockfile } from "../install.js";
|
|
4
|
-
import { bold, dim, green, out, tokens, yellow } from "../ui.js";
|
|
5
|
-
/**
|
|
6
|
-
* Emit what a model would need to describe this product.
|
|
7
|
-
*
|
|
8
|
-
* A separate command rather than a step inside `learn`, because the selection is the
|
|
9
|
-
* part worth trusting and it has to be reviewable on its own. `--dry-run` lists the
|
|
10
|
-
* files without their contents, which is what anyone with a proprietary codebase will
|
|
11
|
-
* run first.
|
|
12
|
-
*/
|
|
13
|
-
export async function context(opts) {
|
|
14
|
-
const lock = await readLockfile(opts.root);
|
|
15
|
-
const bundle = await buildContext(opts.root, {
|
|
16
|
-
installed: Object.keys(lock?.skills ?? {}),
|
|
17
|
-
...(opts.maxFiles === undefined ? {} : { maxFiles: opts.maxFiles }),
|
|
18
|
-
});
|
|
19
|
-
if (opts.dryRun === true) {
|
|
20
|
-
out();
|
|
21
|
-
out(` ${bold('Would send')} ${dim(`${bundle.files.length} files`)}`);
|
|
22
|
-
out();
|
|
23
|
-
for (const file of bundle.files) {
|
|
24
|
-
out(` ${file.path.padEnd(52)} ${dim(`${file.why}${file.truncated ? ', truncated' : ''}`)}`);
|
|
25
|
-
}
|
|
26
|
-
if (bundle.withheld.length > 0) {
|
|
27
|
-
out();
|
|
28
|
-
out(` ${yellow('Withheld')}`);
|
|
29
|
-
for (const w of bundle.withheld)
|
|
30
|
-
out(` ${w.path.padEnd(52)} ${dim(w.why)}`);
|
|
31
|
-
}
|
|
32
|
-
const words = bundle.files.reduce((n, f) => n + f.text.split(/\s+/).length, 0);
|
|
33
|
-
out();
|
|
34
|
-
out(` ${dim(`plus the directory tree and what the build declares, ${tokens(words)}`)}`);
|
|
35
|
-
out();
|
|
36
|
-
return 0;
|
|
37
|
-
}
|
|
38
|
-
const text = opts.json === true ? `${JSON.stringify(bundle, null, 2)}\n` : renderContext(bundle);
|
|
39
|
-
if (opts.outFile) {
|
|
40
|
-
await writeFile(opts.outFile, text, 'utf8');
|
|
41
|
-
out(` ${green('Written.')} ${opts.outFile} ${dim(`${bundle.files.length} files`)}`);
|
|
42
|
-
return 0;
|
|
43
|
-
}
|
|
44
|
-
process.stdout.write(text);
|
|
45
|
-
return 0;
|
|
46
|
-
}
|
|
47
|
-
//# sourceMappingURL=context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/diff.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { type Installed } from '../state.ts';
|
|
2
|
-
export interface DiffOptions {
|
|
3
|
-
root: string;
|
|
4
|
-
names?: string[];
|
|
5
|
-
dir?: string | undefined;
|
|
6
|
-
refresh?: boolean | undefined;
|
|
7
|
-
full?: boolean | undefined;
|
|
8
|
-
}
|
|
9
|
-
/** Print one skill's installed-to-upstream diff. Returns true if anything differed. */
|
|
10
|
-
export declare function printDiff(item: Installed, full: boolean): boolean;
|
|
11
|
-
export declare function diff(opts: DiffOptions): Promise<number>;
|
|
12
|
-
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAG5E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC5B;AAED,uFAAuF;AACvF,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAuBjE;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAmD7D"}
|
package/dist/commands/diff.js
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { diffLines, hunks, stat } from '@skyl/core';
|
|
2
|
-
import { readLockfile, resolveTarget } from "../install.js";
|
|
3
|
-
import { changedOnDisk, installedState } from "../state.js";
|
|
4
|
-
import { bold, cyan, dim, green, out, red, yellow } from "../ui.js";
|
|
5
|
-
/** Print one skill's installed-to-upstream diff. Returns true if anything differed. */
|
|
6
|
-
export function printDiff(item, full) {
|
|
7
|
-
if (item.upstream === undefined || item.onDisk === undefined)
|
|
8
|
-
return false;
|
|
9
|
-
const ops = diffLines(item.onDisk, item.upstream);
|
|
10
|
-
const { added, removed } = stat(ops);
|
|
11
|
-
if (added === 0 && removed === 0)
|
|
12
|
-
return false;
|
|
13
|
-
const versions = item.skill && item.skill.version !== item.entry.version
|
|
14
|
-
? dim(`${item.entry.version} to ${item.skill.version}`)
|
|
15
|
-
: dim(`${item.entry.version}, edited here`);
|
|
16
|
-
out();
|
|
17
|
-
out(` ${bold(item.name)} ${versions} ${green(`+${added}`)} ${red(`-${removed}`)}`);
|
|
18
|
-
out(` ${dim('- what is in your file, + what upstream has')}`);
|
|
19
|
-
out();
|
|
20
|
-
for (const hunk of hunks(ops, full ? 999 : 3)) {
|
|
21
|
-
out(` ${cyan(`@@ -${hunk.beforeStart},${hunk.beforeCount} +${hunk.afterStart},${hunk.afterCount} @@`)}`);
|
|
22
|
-
for (const line of hunk.lines) {
|
|
23
|
-
const text = `${line.kind} ${line.text}`;
|
|
24
|
-
out(` ${line.kind === '+' ? green(text) : line.kind === '-' ? red(text) : dim(text)}`);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
export async function diff(opts) {
|
|
30
|
-
const lock = await readLockfile(opts.root);
|
|
31
|
-
if (!lock || Object.keys(lock.skills).length === 0) {
|
|
32
|
-
out(`${yellow('Nothing installed.')} Run ${bold('skyl scan')} to see what fits this project.`);
|
|
33
|
-
return 0;
|
|
34
|
-
}
|
|
35
|
-
const target = resolveTarget(undefined, lock);
|
|
36
|
-
// currency is the whole point of a diff, so prefer the network unless told otherwise
|
|
37
|
-
const { items, from } = await installedState(opts.root, lock, target, {
|
|
38
|
-
dir: opts.dir, refresh: opts.refresh ?? opts.dir === undefined,
|
|
39
|
-
});
|
|
40
|
-
if (from === undefined) {
|
|
41
|
-
out(` ${yellow('No registry reachable.')} ${dim('Nothing to compare against.')}`);
|
|
42
|
-
return 1;
|
|
43
|
-
}
|
|
44
|
-
const wanted = new Set(opts.names ?? []);
|
|
45
|
-
const subject = wanted.size === 0 ? items : items.filter((i) => wanted.has(i.name) || wanted.has(i.name.split('/')[1]));
|
|
46
|
-
if (subject.length === 0) {
|
|
47
|
-
out(` ${yellow('Not installed here.')} ${dim([...wanted].join(', '))}`);
|
|
48
|
-
return 1;
|
|
49
|
-
}
|
|
50
|
-
let shown = 0;
|
|
51
|
-
for (const item of subject) {
|
|
52
|
-
if (item.skill === undefined) {
|
|
53
|
-
out();
|
|
54
|
-
out(` ${bold(item.name)} ${yellow('is no longer in the registry')} ${dim('installed at ' + item.entry.version)}`);
|
|
55
|
-
shown += 1;
|
|
56
|
-
continue;
|
|
57
|
-
}
|
|
58
|
-
if (item.onDisk === undefined) {
|
|
59
|
-
out();
|
|
60
|
-
out(` ${bold(item.name)} ${yellow('file is gone')} ${dim(`skyl add ${item.name} puts it back`)}`);
|
|
61
|
-
shown += 1;
|
|
62
|
-
continue;
|
|
63
|
-
}
|
|
64
|
-
if (printDiff(item, opts.full === true))
|
|
65
|
-
shown += 1;
|
|
66
|
-
}
|
|
67
|
-
out();
|
|
68
|
-
if (shown === 0) {
|
|
69
|
-
out(` ${green('Up to date.')} ${dim(`${subject.length} skills, nothing changed here or upstream`)}`);
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
const editable = subject.filter((i) => changedOnDisk(i) && i.state !== 'local-edit').length;
|
|
73
|
-
if (editable > 0)
|
|
74
|
-
out(` ${cyan('skyl update')} ${dim('applies the upstream side')}`);
|
|
75
|
-
}
|
|
76
|
-
out();
|
|
77
|
-
return 0;
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=diff.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/learn.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export interface LearnOptions {
|
|
2
|
-
root: string;
|
|
3
|
-
agent?: string | undefined;
|
|
4
|
-
printPrompt?: boolean | undefined;
|
|
5
|
-
outFile?: string | undefined;
|
|
6
|
-
yes?: boolean | undefined;
|
|
7
|
-
target?: string | undefined;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Derive a project knowledge skill from this repository.
|
|
11
|
-
*
|
|
12
|
-
* The agent calls skyl, not the reverse. Selecting the files, keeping the hand-written
|
|
13
|
-
* text, and merging the result are deterministic and live here; the reading is done by
|
|
14
|
-
* whichever model the user already pays for. That is why there is no API key anywhere in
|
|
15
|
-
* this command, and why `--print-prompt` is a first class path rather than a fallback.
|
|
16
|
-
*/
|
|
17
|
-
export declare function learn(opts: LearnOptions): Promise<number>;
|
|
18
|
-
//# sourceMappingURL=learn.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"learn.d.ts","sourceRoot":"","sources":["../../src/commands/learn.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAKD;;;;;;;GAOG;AACH,wBAAsB,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA2E/D"}
|