@shortwind/cli 0.1.0-beta.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.
@@ -0,0 +1,374 @@
1
+ import { Diagnostic } from "@shortwind/core";
2
+
3
+ //#region src/detect.d.ts
4
+ type PackageManager = "npm" | "pnpm" | "yarn" | "bun";
5
+ type Bundler = "vite" | "next" | "astro" | "unknown";
6
+ type Framework = "react" | "vue" | "svelte" | "astro" | "plain";
7
+ type ProjectShape = {
8
+ packageManager: PackageManager;
9
+ tailwindVersion: string | null;
10
+ tailwindMajor: 3 | 4 | null;
11
+ bundler: Bundler;
12
+ framework: Framework;
13
+ hasPackageJson: boolean;
14
+ };
15
+ declare function detectProject(cwd: string): ProjectShape;
16
+ //#endregion
17
+ //#region src/init.d.ts
18
+ declare const DEFAULT_REGISTRY = "https://shortwind.dev/registry";
19
+ type InitOptions = {
20
+ cwd: string;
21
+ preset: string;
22
+ registry?: string;
23
+ installPackages?: InstallPackages;
24
+ };
25
+ type InstallPackages = (pm: PackageManager, packages: string[], cwd: string) => Promise<void>;
26
+ type InitResult = {
27
+ packageManager: PackageManager;
28
+ preset: string;
29
+ registry: string;
30
+ families: string[];
31
+ installedPackages: string[];
32
+ installedFamilies: string[];
33
+ skippedFamilies: string[];
34
+ configPath: string;
35
+ vscodePath: string;
36
+ huskyPath: string;
37
+ skillPath: string;
38
+ };
39
+ declare function init(options: InitOptions): Promise<InitResult>;
40
+ //#endregion
41
+ //#region src/registry-source.d.ts
42
+ type Presets = Record<string, string[] | "*">;
43
+ type RegistrySource = {
44
+ origin: string;
45
+ loadPresets: () => Promise<Presets>;
46
+ loadFamily: (family: string) => Promise<string>;
47
+ listAllFamilies: () => Promise<string[]>;
48
+ };
49
+ declare function createRegistrySource(origin: string): RegistrySource;
50
+ declare function resolvePresetFamilies(preset: string, presets: Presets, allFamilies: string[]): string[];
51
+ //#endregion
52
+ //#region src/lockfile.d.ts
53
+ type LockEntry = {
54
+ version: string;
55
+ sha: string;
56
+ };
57
+ type Lockfile = {
58
+ version: number;
59
+ registry: string;
60
+ families: Record<string, LockEntry>;
61
+ };
62
+ declare function readLockfile(recipesDir: string): Promise<Lockfile>;
63
+ declare function writeLockfile(recipesDir: string, lock: Lockfile): Promise<void>;
64
+ //#endregion
65
+ //#region src/commands/add.d.ts
66
+ type AddOptions = {
67
+ cwd: string;
68
+ families: string[];
69
+ as?: string;
70
+ all?: boolean;
71
+ force?: boolean;
72
+ registry?: string;
73
+ };
74
+ type AddResult = {
75
+ added: string[];
76
+ skipped: string[];
77
+ overwritten: string[];
78
+ missingDependencies: {
79
+ family: string;
80
+ references: string[];
81
+ }[];
82
+ lockfile: Lockfile;
83
+ skillPath: string;
84
+ };
85
+ declare function add(options: AddOptions): Promise<AddResult>;
86
+ //#endregion
87
+ //#region src/commands/remove.d.ts
88
+ type RemoveOptions = {
89
+ cwd: string;
90
+ families: string[];
91
+ };
92
+ type RemoveResult = {
93
+ removed: string[];
94
+ notFound: string[];
95
+ brokenDependents: {
96
+ dependent: string;
97
+ references: string[];
98
+ }[];
99
+ lockfile: Lockfile;
100
+ skillPath: string;
101
+ };
102
+ declare function remove(options: RemoveOptions): Promise<RemoveResult>;
103
+ //#endregion
104
+ //#region src/commands/preset.d.ts
105
+ type PresetOptions = {
106
+ cwd: string;
107
+ name: string;
108
+ registry?: string;
109
+ };
110
+ type PresetResult = AddResult & {
111
+ preset: string;
112
+ };
113
+ declare function preset(options: PresetOptions): Promise<PresetResult>;
114
+ //#endregion
115
+ //#region src/commands/ls.d.ts
116
+ type LsOptions = {
117
+ cwd: string;
118
+ registry?: string;
119
+ installedOnly?: boolean;
120
+ availableOnly?: boolean;
121
+ };
122
+ type LsResult = {
123
+ installed: {
124
+ family: string;
125
+ version: string | null;
126
+ }[];
127
+ available: string[];
128
+ };
129
+ declare function ls(options: LsOptions): Promise<LsResult>;
130
+ declare function formatLsText(result: LsResult): string;
131
+ //#endregion
132
+ //#region src/commands/build.d.ts
133
+ type BuildOptions = {
134
+ cwd: string;
135
+ };
136
+ type BuildResult = {
137
+ changed: boolean;
138
+ families: string[];
139
+ skillPath: string;
140
+ };
141
+ declare class BuildError extends Error {
142
+ readonly diagnostics: Diagnostic[];
143
+ constructor(diagnostics: Diagnostic[]);
144
+ }
145
+ declare function build(options: BuildOptions): Promise<BuildResult>;
146
+ //#endregion
147
+ //#region src/commands/dev.d.ts
148
+ type DevOptions = {
149
+ cwd: string;
150
+ signal?: AbortSignal;
151
+ onStatus?: (status: DevStatus) => void;
152
+ debounceMs?: number;
153
+ reconcileIntervalMs?: number;
154
+ };
155
+ type DevStatus = {
156
+ kind: "ready";
157
+ recipesDir: string;
158
+ } | {
159
+ kind: "rebuilt";
160
+ families: string[];
161
+ changed: boolean;
162
+ } | {
163
+ kind: "error";
164
+ message: string;
165
+ };
166
+ declare function dev(options: DevOptions): Promise<{
167
+ stop: () => Promise<void>;
168
+ }>;
169
+ //#endregion
170
+ //#region src/commands/upgrade.d.ts
171
+ type UpgradeChoice = "accept" | "keep" | "skip";
172
+ type TouchedContext = {
173
+ family: string;
174
+ local: string;
175
+ baseline: {
176
+ version: string;
177
+ sha: string;
178
+ };
179
+ incoming: {
180
+ version: string;
181
+ body: string;
182
+ };
183
+ };
184
+ type UpgradeResolver = (ctx: TouchedContext) => Promise<UpgradeChoice>;
185
+ type UpgradeOptions = {
186
+ cwd: string;
187
+ families?: string[];
188
+ registry?: string;
189
+ force?: boolean;
190
+ check?: boolean;
191
+ resolver?: UpgradeResolver;
192
+ source?: RegistrySource;
193
+ };
194
+ type FamilyState = "pristine" | "touched" | "unchanged" | "missing" | "untracked";
195
+ type FamilyOutcome = {
196
+ family: string;
197
+ action: "updated";
198
+ from: string;
199
+ to: string;
200
+ state: FamilyState;
201
+ } | {
202
+ family: string;
203
+ action: "kept";
204
+ reason: "unchanged" | "user-chose-keep";
205
+ state: FamilyState;
206
+ } | {
207
+ family: string;
208
+ action: "skipped";
209
+ reason: string;
210
+ state: FamilyState;
211
+ } | {
212
+ family: string;
213
+ action: "would-update";
214
+ from: string;
215
+ to: string;
216
+ state: FamilyState;
217
+ } | {
218
+ family: string;
219
+ action: "would-review";
220
+ from: string;
221
+ to: string;
222
+ state: FamilyState;
223
+ };
224
+ type UpgradeResult = {
225
+ outcomes: FamilyOutcome[];
226
+ hasUpdates: boolean;
227
+ hasTouched: boolean;
228
+ lockfile: Lockfile;
229
+ skillPath: string | null;
230
+ };
231
+ declare class UpgradeError extends Error {
232
+ readonly errors: {
233
+ family: string;
234
+ message: string;
235
+ }[];
236
+ constructor(errors: {
237
+ family: string;
238
+ message: string;
239
+ }[]);
240
+ }
241
+ declare function upgrade(options: UpgradeOptions): Promise<UpgradeResult>;
242
+ //#endregion
243
+ //#region src/commands/verify.d.ts
244
+ type VerifyIssue = {
245
+ family: string;
246
+ kind: "missing-header";
247
+ file: string;
248
+ } | {
249
+ family: string;
250
+ kind: "header-tampered";
251
+ file: string;
252
+ recorded: string;
253
+ actual: string;
254
+ } | {
255
+ family: string;
256
+ kind: "lockfile-mismatch";
257
+ file: string;
258
+ locked: string;
259
+ actual: string;
260
+ } | {
261
+ family: string;
262
+ kind: "missing-lock-entry";
263
+ file: string;
264
+ } | {
265
+ family: string;
266
+ kind: "missing-file";
267
+ file: string;
268
+ };
269
+ type VerifyOptions = {
270
+ cwd: string;
271
+ };
272
+ type VerifyResult = {
273
+ ok: boolean;
274
+ checked: string[];
275
+ issues: VerifyIssue[];
276
+ };
277
+ declare function verify(options: VerifyOptions): Promise<VerifyResult>;
278
+ //#endregion
279
+ //#region src/commands/bench.d.ts
280
+ type BenchOptions = {
281
+ cwd: string;
282
+ corpus?: boolean;
283
+ json?: boolean;
284
+ registry?: string;
285
+ path?: string;
286
+ };
287
+ type FileBenchResult = {
288
+ filename: string;
289
+ compactClassTokens: number;
290
+ expandedClassTokens: number;
291
+ compactClassBytes: number;
292
+ expandedClassBytes: number;
293
+ compactFileBytes: number;
294
+ expandedFileBytes: number;
295
+ compactLlmTokens: number;
296
+ expandedLlmTokens: number;
297
+ };
298
+ type BenchTotals = Omit<FileBenchResult, "filename">;
299
+ type BenchResult = {
300
+ files: FileBenchResult[];
301
+ totals: BenchTotals;
302
+ };
303
+ declare function bench(options: BenchOptions): Promise<BenchResult>;
304
+ declare function formatBenchTable(result: BenchResult): string;
305
+ //#endregion
306
+ //#region src/commands/lint.d.ts
307
+ declare const ALL_RULES: readonly ["recipe/unknown", "recipe/cycle", "recipe/duplicate", "recipe/unused", "recipe/no-redundant-utility", "recipe/bad-suffix-order", "recipe/conflicting-intent", "recipe/dynamic-class", "recipe/no-sibling-overlap"];
308
+ type Rule = (typeof ALL_RULES)[number];
309
+ type Severity = "error" | "warning" | "info";
310
+ type Finding = {
311
+ rule: Rule;
312
+ severity: Severity;
313
+ file: string;
314
+ line: number;
315
+ column: number;
316
+ message: string;
317
+ };
318
+ type LintOptions = {
319
+ cwd: string;
320
+ rules?: Rule[];
321
+ fix?: boolean;
322
+ content?: string[];
323
+ };
324
+ type LintResult = {
325
+ ok: boolean;
326
+ findings: Finding[];
327
+ filesFixed: string[];
328
+ };
329
+ declare function lint(options: LintOptions): Promise<LintResult>;
330
+ type ClassUsage = {
331
+ fileOffset: number;
332
+ valueStart: number;
333
+ raw: string;
334
+ tokens: Array<{
335
+ value: string;
336
+ line: number;
337
+ column: number;
338
+ }>;
339
+ dynamicTokens: Array<{
340
+ value: string;
341
+ line: number;
342
+ column: number;
343
+ }>;
344
+ fixable: boolean;
345
+ };
346
+ declare function extractClassUsages(source: string): ClassUsage[];
347
+ declare function formatFindingsText(findings: Finding[]): string;
348
+ //#endregion
349
+ //#region src/fingerprint.d.ts
350
+ type RecipeHeader = {
351
+ family: string;
352
+ version: string;
353
+ sha: string;
354
+ };
355
+ declare function extractHeader(source: string): RecipeHeader | null;
356
+ declare function normalizeBody(body: string): string;
357
+ declare function computeBodySha(source: string): string;
358
+ declare function buildHeaderLine(family: string, version: string, sha: string): string;
359
+ declare function rewriteHeaderSha(source: string, sha: string): string;
360
+ declare function sealRecipeFile(source: string, family: string, version: string): string;
361
+ //#endregion
362
+ //#region src/project.d.ts
363
+ /**
364
+ * Rewrite a recipe file so that every occurrence of `<from>` is replaced with `<to>`:
365
+ * - fingerprint header family slot
366
+ * - recipe names (after `@recipe `)
367
+ * - cross-recipe `@from` / `@from-*` references in bodies
368
+ *
369
+ * Descriptions and unrelated text are untouched.
370
+ */
371
+ declare function renameFamilyInSource(source: string, from: string, to: string): string;
372
+ //#endregion
373
+ export { ALL_RULES, type AddOptions, type AddResult, type BenchOptions, type BenchResult, BuildError, type BuildOptions, type BuildResult, type Bundler, DEFAULT_REGISTRY, type DevOptions, type DevStatus, type FamilyOutcome, type FamilyState, type FileBenchResult, type Finding, type Framework, type InitOptions, type InitResult, type InstallPackages, type LintOptions, type LintResult, type LockEntry, type Lockfile, type LsOptions, type LsResult, type PackageManager, type PresetOptions, type PresetResult, type Presets, type ProjectShape, type RecipeHeader, type RegistrySource, type RemoveOptions, type RemoveResult, type Rule, type Severity, type TouchedContext, type UpgradeChoice, UpgradeError, type UpgradeOptions, type UpgradeResolver, type UpgradeResult, type VerifyIssue, type VerifyOptions, type VerifyResult, add, bench, build, buildHeaderLine, computeBodySha, createRegistrySource, detectProject, dev, extractClassUsages, extractHeader, formatBenchTable, formatFindingsText, formatLsText, init, lint, ls, normalizeBody, preset, readLockfile, remove, renameFamilyInSource, resolvePresetFamilies, rewriteHeaderSha, sealRecipeFile, upgrade, verify, writeLockfile };
374
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/detect.ts","../src/init.ts","../src/registry-source.ts","../src/lockfile.ts","../src/commands/add.ts","../src/commands/remove.ts","../src/commands/preset.ts","../src/commands/ls.ts","../src/commands/build.ts","../src/commands/dev.ts","../src/commands/upgrade.ts","../src/commands/verify.ts","../src/commands/bench.ts","../src/commands/lint.ts","../src/fingerprint.ts","../src/project.ts"],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ import { A as rewriteHeaderSha, C as createRegistrySource, D as computeBodySha, E as buildHeaderLine, O as extractHeader, S as writeLockfile, T as detectProject, _ as add, a as formatFindingsText, b as init, c as UpgradeError, d as BuildError, f as build, g as remove, h as preset, i as extractClassUsages, j as sealRecipeFile, k as normalizeBody, l as upgrade, m as ls, n as formatBenchTable, o as lint, p as formatLsText, r as ALL_RULES, s as verify, t as bench, u as dev, v as renameFamilyInSource, w as resolvePresetFamilies, x as readLockfile, y as DEFAULT_REGISTRY } from "./bench-a_9WmuOE.js";
2
+ export { ALL_RULES, BuildError, DEFAULT_REGISTRY, UpgradeError, add, bench, build, buildHeaderLine, computeBodySha, createRegistrySource, detectProject, dev, extractClassUsages, extractHeader, formatBenchTable, formatFindingsText, formatLsText, init, lint, ls, normalizeBody, preset, readLockfile, remove, renameFamilyInSource, resolvePresetFamilies, rewriteHeaderSha, sealRecipeFile, upgrade, verify, writeLockfile };
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@shortwind/cli",
3
+ "version": "0.1.0-beta.0",
4
+ "description": "Shortwind CLI — init, add, remove, upgrade, dev, build, lint, ls, preset. Provides the `shortwind` command.",
5
+ "type": "module",
6
+ "bin": {
7
+ "shortwind": "./dist/bin.js"
8
+ },
9
+ "main": "./dist/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "files": [
12
+ "dist"
13
+ ],
14
+ "dependencies": {
15
+ "@clack/prompts": "^1.4.0",
16
+ "cac": "^7.0.0",
17
+ "chokidar": "^5.0.0",
18
+ "js-tiktoken": "^1.0.21",
19
+ "jsonc-parser": "^3.3.1",
20
+ "picocolors": "^1.1.1",
21
+ "tinyglobby": "^0.2.16",
22
+ "@shortwind/core": "0.1.0-beta.0",
23
+ "@shortwind/tailwind": "0.1.0-beta.0"
24
+ },
25
+ "devDependencies": {
26
+ "@types/node": "^25.7.0",
27
+ "tsdown": "^0.22.0"
28
+ },
29
+ "publishConfig": {
30
+ "access": "public",
31
+ "tag": "beta"
32
+ },
33
+ "scripts": {
34
+ "build": "tsdown",
35
+ "dev": "tsdown --watch",
36
+ "gen:bench": "tsx scripts/generate-bench-recipes.ts",
37
+ "typecheck": "tsc --noEmit",
38
+ "test": "vitest run",
39
+ "test:watch": "vitest"
40
+ }
41
+ }