skyl.dev 0.1.0 → 0.1.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 (139) hide show
  1. package/README.md +77 -0
  2. package/dist/bin.js +2265 -2
  3. package/package.json +9 -11
  4. package/dist/bin.d.ts +0 -3
  5. package/dist/bin.d.ts.map +0 -1
  6. package/dist/bin.js.map +0 -1
  7. package/dist/cli.d.ts +0 -2
  8. package/dist/cli.d.ts.map +0 -1
  9. package/dist/cli.js +0 -158
  10. package/dist/cli.js.map +0 -1
  11. package/dist/commands/add.d.ts +0 -10
  12. package/dist/commands/add.d.ts.map +0 -1
  13. package/dist/commands/add.js +0 -38
  14. package/dist/commands/add.js.map +0 -1
  15. package/dist/commands/audit.d.ts +0 -16
  16. package/dist/commands/audit.d.ts.map +0 -1
  17. package/dist/commands/audit.js +0 -91
  18. package/dist/commands/audit.js.map +0 -1
  19. package/dist/commands/context.d.ts +0 -17
  20. package/dist/commands/context.d.ts.map +0 -1
  21. package/dist/commands/context.js +0 -47
  22. package/dist/commands/context.js.map +0 -1
  23. package/dist/commands/diff.d.ts +0 -12
  24. package/dist/commands/diff.d.ts.map +0 -1
  25. package/dist/commands/diff.js +0 -79
  26. package/dist/commands/diff.js.map +0 -1
  27. package/dist/commands/learn.d.ts +0 -18
  28. package/dist/commands/learn.d.ts.map +0 -1
  29. package/dist/commands/learn.js +0 -115
  30. package/dist/commands/learn.js.map +0 -1
  31. package/dist/commands/lint.d.ts +0 -14
  32. package/dist/commands/lint.d.ts.map +0 -1
  33. package/dist/commands/lint.js +0 -109
  34. package/dist/commands/lint.js.map +0 -1
  35. package/dist/commands/list.d.ts +0 -6
  36. package/dist/commands/list.d.ts.map +0 -1
  37. package/dist/commands/list.js +0 -60
  38. package/dist/commands/list.js.map +0 -1
  39. package/dist/commands/remove.d.ts +0 -16
  40. package/dist/commands/remove.d.ts.map +0 -1
  41. package/dist/commands/remove.js +0 -73
  42. package/dist/commands/remove.js.map +0 -1
  43. package/dist/commands/scan.d.ts +0 -10
  44. package/dist/commands/scan.d.ts.map +0 -1
  45. package/dist/commands/scan.js +0 -60
  46. package/dist/commands/scan.js.map +0 -1
  47. package/dist/commands/update.d.ts +0 -11
  48. package/dist/commands/update.d.ts.map +0 -1
  49. package/dist/commands/update.js +0 -135
  50. package/dist/commands/update.js.map +0 -1
  51. package/dist/context.d.ts +0 -44
  52. package/dist/context.d.ts.map +0 -1
  53. package/dist/context.js +0 -179
  54. package/dist/context.js.map +0 -1
  55. package/dist/ignore.d.ts +0 -21
  56. package/dist/ignore.d.ts.map +0 -1
  57. package/dist/ignore.js +0 -79
  58. package/dist/ignore.js.map +0 -1
  59. package/dist/install.d.ts +0 -10
  60. package/dist/install.d.ts.map +0 -1
  61. package/dist/install.js +0 -54
  62. package/dist/install.js.map +0 -1
  63. package/dist/learn.d.ts +0 -45
  64. package/dist/learn.d.ts.map +0 -1
  65. package/dist/learn.js +0 -146
  66. package/dist/learn.js.map +0 -1
  67. package/dist/registry.d.ts +0 -23
  68. package/dist/registry.d.ts.map +0 -1
  69. package/dist/registry.js +0 -38
  70. package/dist/registry.js.map +0 -1
  71. package/dist/scan.d.ts +0 -3
  72. package/dist/scan.d.ts.map +0 -1
  73. package/dist/scan.js +0 -104
  74. package/dist/scan.js.map +0 -1
  75. package/dist/state.d.ts +0 -31
  76. package/dist/state.d.ts.map +0 -1
  77. package/dist/state.js +0 -39
  78. package/dist/state.js.map +0 -1
  79. package/dist/ui.d.ts +0 -17
  80. package/dist/ui.d.ts.map +0 -1
  81. package/dist/ui.js +0 -35
  82. package/dist/ui.js.map +0 -1
  83. package/node_modules/@skyl/core/dist/audit.d.ts +0 -48
  84. package/node_modules/@skyl/core/dist/audit.d.ts.map +0 -1
  85. package/node_modules/@skyl/core/dist/audit.js +0 -99
  86. package/node_modules/@skyl/core/dist/audit.js.map +0 -1
  87. package/node_modules/@skyl/core/dist/detect.d.ts +0 -15
  88. package/node_modules/@skyl/core/dist/detect.d.ts.map +0 -1
  89. package/node_modules/@skyl/core/dist/detect.js +0 -62
  90. package/node_modules/@skyl/core/dist/detect.js.map +0 -1
  91. package/node_modules/@skyl/core/dist/diff.d.ts +0 -32
  92. package/node_modules/@skyl/core/dist/diff.d.ts.map +0 -1
  93. package/node_modules/@skyl/core/dist/diff.js +0 -119
  94. package/node_modules/@skyl/core/dist/diff.js.map +0 -1
  95. package/node_modules/@skyl/core/dist/errors.d.ts +0 -21
  96. package/node_modules/@skyl/core/dist/errors.d.ts.map +0 -1
  97. package/node_modules/@skyl/core/dist/errors.js +0 -25
  98. package/node_modules/@skyl/core/dist/errors.js.map +0 -1
  99. package/node_modules/@skyl/core/dist/index.d.ts +0 -14
  100. package/node_modules/@skyl/core/dist/index.d.ts.map +0 -1
  101. package/node_modules/@skyl/core/dist/index.js +0 -14
  102. package/node_modules/@skyl/core/dist/index.js.map +0 -1
  103. package/node_modules/@skyl/core/dist/lint.d.ts +0 -28
  104. package/node_modules/@skyl/core/dist/lint.d.ts.map +0 -1
  105. package/node_modules/@skyl/core/dist/lint.js +0 -169
  106. package/node_modules/@skyl/core/dist/lint.js.map +0 -1
  107. package/node_modules/@skyl/core/dist/lockfile.d.ts +0 -37
  108. package/node_modules/@skyl/core/dist/lockfile.d.ts.map +0 -1
  109. package/node_modules/@skyl/core/dist/lockfile.js +0 -47
  110. package/node_modules/@skyl/core/dist/lockfile.js.map +0 -1
  111. package/node_modules/@skyl/core/dist/match.d.ts +0 -19
  112. package/node_modules/@skyl/core/dist/match.d.ts.map +0 -1
  113. package/node_modules/@skyl/core/dist/match.js +0 -72
  114. package/node_modules/@skyl/core/dist/match.js.map +0 -1
  115. package/node_modules/@skyl/core/dist/names.d.ts +0 -11
  116. package/node_modules/@skyl/core/dist/names.d.ts.map +0 -1
  117. package/node_modules/@skyl/core/dist/names.js +0 -31
  118. package/node_modules/@skyl/core/dist/names.js.map +0 -1
  119. package/node_modules/@skyl/core/dist/parse.d.ts +0 -22
  120. package/node_modules/@skyl/core/dist/parse.d.ts.map +0 -1
  121. package/node_modules/@skyl/core/dist/parse.js +0 -163
  122. package/node_modules/@skyl/core/dist/parse.js.map +0 -1
  123. package/node_modules/@skyl/core/dist/resolve.d.ts +0 -12
  124. package/node_modules/@skyl/core/dist/resolve.d.ts.map +0 -1
  125. package/node_modules/@skyl/core/dist/resolve.js +0 -40
  126. package/node_modules/@skyl/core/dist/resolve.js.map +0 -1
  127. package/node_modules/@skyl/core/dist/source.d.ts +0 -35
  128. package/node_modules/@skyl/core/dist/source.d.ts.map +0 -1
  129. package/node_modules/@skyl/core/dist/source.js +0 -85
  130. package/node_modules/@skyl/core/dist/source.js.map +0 -1
  131. package/node_modules/@skyl/core/dist/targets.d.ts +0 -20
  132. package/node_modules/@skyl/core/dist/targets.d.ts.map +0 -1
  133. package/node_modules/@skyl/core/dist/targets.js +0 -24
  134. package/node_modules/@skyl/core/dist/targets.js.map +0 -1
  135. package/node_modules/@skyl/core/dist/types.d.ts +0 -51
  136. package/node_modules/@skyl/core/dist/types.d.ts.map +0 -1
  137. package/node_modules/@skyl/core/dist/types.js +0 -2
  138. package/node_modules/@skyl/core/dist/types.js.map +0 -1
  139. package/node_modules/@skyl/core/package.json +0 -20
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skyl.dev",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Install curated AI agent skills for what your project actually uses",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -8,8 +8,9 @@
8
8
  "skyl": "dist/bin.js"
9
9
  },
10
10
  "files": [
11
- "dist",
12
- "bundle.json"
11
+ "dist/bin.js",
12
+ "bundle.json",
13
+ "README.md"
13
14
  ],
14
15
  "keywords": [
15
16
  "ai",
@@ -22,22 +23,19 @@
22
23
  "scripts": {
23
24
  "build": "tsc -b",
24
25
  "typecheck": "tsc -b --force",
25
- "prepack": "tsc -b && node ../../scripts/build-bundle.mjs"
26
- },
27
- "dependencies": {
28
- "@skyl/core": "workspace:*"
26
+ "prepack": "tsc -b && node ../../scripts/build-bundle.mjs && node ../../scripts/bundle-js.mjs"
29
27
  },
30
28
  "engines": {
31
29
  "node": ">=20"
32
30
  },
33
- "bundleDependencies": [
34
- "@skyl/core"
35
- ],
36
31
  "repository": {
37
32
  "type": "git",
38
33
  "url": "git+https://github.com/skyl-dev/skyl.dev.git",
39
34
  "directory": "packages/cli"
40
35
  },
41
36
  "homepage": "https://skyl.dev",
42
- "author": "ahmmedrejowan"
37
+ "author": "ahmmedrejowan",
38
+ "devDependencies": {
39
+ "@skyl/core": "workspace:*"
40
+ }
43
41
  }
package/dist/bin.d.ts DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=bin.d.ts.map
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.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
@@ -1,2 +0,0 @@
1
- export declare function run(argv: readonly string[]): Promise<number>;
2
- //# sourceMappingURL=cli.d.ts.map
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.0';
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":"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"}
@@ -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"}
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -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"}
@@ -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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"}
@@ -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"}
@@ -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":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAkB,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAUpE,uFAAuF;AACvF,MAAM,UAAU,SAAS,CAAC,IAAe,EAAE,IAAa;IACtD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC3E,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,KAAK,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE/C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO;QACtE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACvD,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;IAE9C,GAAG,EAAE,CAAC;IACN,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACrF,GAAG,CAAC,KAAK,GAAG,CAAC,6CAA6C,CAAC,EAAE,CAAC,CAAC;IAC/D,GAAG,EAAE,CAAC;IAEN,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1G,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACzC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAiB;IAC1C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,GAAG,MAAM,CAAC,oBAAoB,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC;QAC/F,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9C,qFAAqF;IACrF,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;QACpE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;KAC/D,CAAC,CAAC;IAEH,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,GAAG,CAAC,KAAK,MAAM,CAAC,wBAAwB,CAAC,IAAI,GAAG,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;QACnF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;IACzH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,GAAG,CAAC,KAAK,MAAM,CAAC,qBAAqB,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,GAAG,EAAE,CAAC;YACN,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,8BAA8B,CAAC,IAAI,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnH,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,GAAG,EAAE,CAAC;YACN,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,YAAY,IAAI,CAAC,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;YACnG,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;YAAE,KAAK,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,GAAG,EAAE,CAAC;IACN,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,GAAG,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,2CAA2C,CAAC,EAAE,CAAC,CAAC;IACxG,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC,MAAM,CAAC;QAC5F,IAAI,QAAQ,GAAG,CAAC;YAAE,GAAG,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,GAAG,EAAE,CAAC;IACN,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -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"}