@detergent-software/atk 9.1.0-dev.1 → 9.1.0-dev.3
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/CHANGELOG.md +17 -0
- package/README.md +15 -11
- package/build/command-manifest.json +21 -2
- package/build/commands/search.d.ts +8 -2
- package/build/commands/search.d.ts.map +1 -1
- package/build/commands/search.js +55 -9
- package/build/commands/search.js.map +1 -1
- package/build/components/AssetTable.d.ts +4 -0
- package/build/components/AssetTable.d.ts.map +1 -1
- package/build/components/AssetTable.js +1 -1
- package/build/components/AssetTable.js.map +1 -1
- package/build/hooks/useBrowseState.d.ts.map +1 -1
- package/build/hooks/useBrowseState.js +4 -7
- package/build/hooks/useBrowseState.js.map +1 -1
- package/build/lib/init.d.ts.map +1 -1
- package/build/lib/init.js +1 -1
- package/build/lib/init.js.map +1 -1
- package/build/lib/publish-flow.d.ts +2 -0
- package/build/lib/publish-flow.d.ts.map +1 -1
- package/build/lib/publish-flow.js +6 -2
- package/build/lib/publish-flow.js.map +1 -1
- package/build/lib/search.d.ts +36 -9
- package/build/lib/search.d.ts.map +1 -1
- package/build/lib/search.js +138 -68
- package/build/lib/search.js.map +1 -1
- package/build/lib/setup.d.ts +2 -1
- package/build/lib/setup.d.ts.map +1 -1
- package/build/lib/setup.js +3 -2
- package/build/lib/setup.js.map +1 -1
- package/package.json +1 -1
package/build/lib/search.js
CHANGED
|
@@ -1,70 +1,127 @@
|
|
|
1
1
|
import { filterVisibleAssets, filterVisibleBundles } from './registry.js';
|
|
2
2
|
import { AssetType } from './schemas/index.js';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* Throws an Error if the type string is not recognized.
|
|
4
|
+
* Optimal string alignment distance: Levenshtein plus adjacent transpositions,
|
|
5
|
+
* so `wroktree` is one edit from `worktree`.
|
|
7
6
|
*/
|
|
8
|
-
export function
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
export function editDistance(a, b) {
|
|
8
|
+
const rows = a.length + 1;
|
|
9
|
+
const cols = b.length + 1;
|
|
10
|
+
const d = Array.from({ length: rows }, (_, i) => Array.from({ length: cols }, (_, j) => (i === 0 ? j : j === 0 ? i : 0)));
|
|
11
|
+
for (let i = 1; i < rows; i++) {
|
|
12
|
+
for (let j = 1; j < cols; j++) {
|
|
13
|
+
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
|
|
14
|
+
let best = Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost);
|
|
15
|
+
if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {
|
|
16
|
+
best = Math.min(best, d[i - 2][j - 2] + 1);
|
|
17
|
+
}
|
|
18
|
+
d[i][j] = best;
|
|
19
|
+
}
|
|
15
20
|
}
|
|
16
|
-
return
|
|
21
|
+
return d[a.length][b.length];
|
|
17
22
|
}
|
|
18
23
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* the raw tags array, the search terms, and the full query string.
|
|
24
|
+
* The one matcher `search` and `browse` share. Every term must match the name
|
|
25
|
+
* (as a substring, a whole name segment, or within a small edit distance), the
|
|
26
|
+
* description, a tag or the author; otherwise the item doesn't match (null).
|
|
27
|
+
* No terms matches everything with score 0. Higher score = better match.
|
|
24
28
|
*/
|
|
25
|
-
export function
|
|
29
|
+
export function matchItem(fields, terms) {
|
|
30
|
+
if (terms.length === 0)
|
|
31
|
+
return 0;
|
|
32
|
+
const name = fields.name.toLowerCase();
|
|
33
|
+
const nameSegments = name.split(NAME_SEPARATORS).filter(Boolean);
|
|
34
|
+
const description = fields.description.toLowerCase();
|
|
35
|
+
const descriptionWords = description.split(/[^\p{L}\p{N}]+/u).filter(Boolean);
|
|
36
|
+
const tags = fields.tags.map((t) => t.toLowerCase());
|
|
37
|
+
const author = fields.author.toLowerCase();
|
|
26
38
|
let score = 0;
|
|
27
|
-
//
|
|
28
|
-
|
|
39
|
+
// Whole-phrase bonuses: the name with its separators read as spaces counts,
|
|
40
|
+
// so `worktree kit` is an exact match for `worktree-kit`. The partial bonus
|
|
41
|
+
// needs the phrase to start a name segment, not sit inside a word.
|
|
42
|
+
const fullQuery = terms.join(' ');
|
|
43
|
+
const spacedQuery = fullQuery.split(NAME_SEPARATORS).filter(Boolean).join(' ');
|
|
44
|
+
const spacedName = nameSegments.join(' ');
|
|
45
|
+
// A query of separators alone (`-`) leaves spacedQuery empty and earns none.
|
|
46
|
+
if (spacedQuery && spacedName === spacedQuery) {
|
|
29
47
|
score += 100;
|
|
30
48
|
}
|
|
31
|
-
|
|
32
|
-
else if (name.includes(fullQuery)) {
|
|
49
|
+
else if (spacedQuery && ` ${spacedName}`.includes(` ${spacedQuery}`)) {
|
|
33
50
|
score += 50;
|
|
34
51
|
}
|
|
35
|
-
|
|
36
|
-
if (description.includes(fullQuery)) {
|
|
52
|
+
if (terms.length > 1 && description.includes(fullQuery)) {
|
|
37
53
|
score += 20;
|
|
38
54
|
}
|
|
39
|
-
//
|
|
55
|
+
// Each field scores a whole word above the start of a word, that above the
|
|
56
|
+
// middle of one (`test` in `contest`), and any literal hit above a fuzzy one.
|
|
57
|
+
// A term's own separators read as spaces, so `code_review` finds `code-review`.
|
|
58
|
+
const spacedDescription = descriptionWords.join(' ');
|
|
40
59
|
for (const term of terms) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
60
|
+
let termScore = 0;
|
|
61
|
+
const spacedTerm = term.split(NAME_SEPARATORS).filter(Boolean).join(' ');
|
|
62
|
+
const startsAWord = (spaced) => spacedTerm !== '' && ` ${spaced}`.includes(` ${spacedTerm}`);
|
|
63
|
+
if (nameSegments.includes(term)) {
|
|
64
|
+
termScore += 15;
|
|
65
|
+
}
|
|
66
|
+
else if (startsAWord(spacedName)) {
|
|
67
|
+
termScore += 10;
|
|
68
|
+
}
|
|
69
|
+
else if (name.includes(term)) {
|
|
70
|
+
termScore += 4;
|
|
71
|
+
}
|
|
72
|
+
else if (isFuzzyNameMatch(term, name, nameSegments)) {
|
|
73
|
+
termScore += 3;
|
|
44
74
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
score += 5;
|
|
75
|
+
if (descriptionWords.includes(term)) {
|
|
76
|
+
termScore += 7;
|
|
48
77
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
78
|
+
else if (startsAWord(spacedDescription)) {
|
|
79
|
+
termScore += 5;
|
|
80
|
+
}
|
|
81
|
+
else if (description.includes(term)) {
|
|
82
|
+
termScore += 2;
|
|
83
|
+
}
|
|
84
|
+
if (tags.includes(term)) {
|
|
85
|
+
termScore += 8;
|
|
86
|
+
}
|
|
87
|
+
else if (tags.some((t) => t.startsWith(term))) {
|
|
88
|
+
termScore += 6;
|
|
89
|
+
}
|
|
90
|
+
else if (tags.some((t) => t.includes(term))) {
|
|
91
|
+
termScore += 4;
|
|
52
92
|
}
|
|
53
|
-
// Author matches
|
|
54
93
|
if (author.includes(term)) {
|
|
55
|
-
|
|
94
|
+
termScore += 3;
|
|
56
95
|
}
|
|
96
|
+
if (termScore === 0)
|
|
97
|
+
return null;
|
|
98
|
+
score += termScore;
|
|
57
99
|
}
|
|
58
100
|
return score;
|
|
59
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Parse and validate a type filter string.
|
|
104
|
+
* Returns 'bundle' for the bundle type, or a validated AssetType.
|
|
105
|
+
* Throws an Error if the type string is not recognized.
|
|
106
|
+
*/
|
|
107
|
+
export function parseTypeFilter(type) {
|
|
108
|
+
if (type === 'bundle') {
|
|
109
|
+
return 'bundle';
|
|
110
|
+
}
|
|
111
|
+
const result = AssetType.safeParse(type);
|
|
112
|
+
if (!result.success) {
|
|
113
|
+
throw new Error(`Invalid type '${type}'. Valid types are: ${AssetType.options.join(', ')}, bundle`);
|
|
114
|
+
}
|
|
115
|
+
return result.data;
|
|
116
|
+
}
|
|
60
117
|
/**
|
|
61
118
|
* Search the registry for assets and bundles matching a query.
|
|
62
|
-
*
|
|
119
|
+
* Current items come first, then deprecated ones; within each, by score
|
|
120
|
+
* (highest first) or by name, with name breaking ties.
|
|
63
121
|
*/
|
|
64
122
|
export function searchRegistry(registry, options) {
|
|
65
|
-
const { org, query, tag, tool, type } = options;
|
|
66
|
-
const
|
|
67
|
-
const queryTerms = queryLower.split(/\s+/).filter(Boolean);
|
|
123
|
+
const { includeDeprecated = true, org, query, sort = 'relevance', tag, tool, type } = options;
|
|
124
|
+
const terms = tokenize(query);
|
|
68
125
|
const results = [];
|
|
69
126
|
// Filter assets and bundles through org visibility (handles shadowing and scoping)
|
|
70
127
|
const visibleAssets = filterVisibleAssets(registry, org);
|
|
@@ -81,14 +138,17 @@ export function searchRegistry(registry, options) {
|
|
|
81
138
|
continue;
|
|
82
139
|
if (tool && !latestVersion.tools.includes(tool))
|
|
83
140
|
continue;
|
|
84
|
-
|
|
141
|
+
const deprecation = deprecationOf(registry, asset.name, asset.type, asset.org);
|
|
142
|
+
if (deprecation && !includeDeprecated)
|
|
143
|
+
continue;
|
|
144
|
+
let score = matchItem({ author: latestVersion.author, description: latestVersion.description, name: asset.name, tags: asset.tags }, terms);
|
|
145
|
+
if (score === null)
|
|
146
|
+
continue;
|
|
85
147
|
// Org-scoped assets get a small scoring bonus when org is active
|
|
86
148
|
if (score > 0 && org && asset.org === org) {
|
|
87
149
|
score += 5;
|
|
88
150
|
}
|
|
89
|
-
|
|
90
|
-
results.push({ item: asset, kind: 'asset', score });
|
|
91
|
-
}
|
|
151
|
+
results.push({ ...(deprecation && { deprecation }), item: asset, kind: 'asset', score });
|
|
92
152
|
}
|
|
93
153
|
}
|
|
94
154
|
// Search bundles (skip when filtering to a specific asset type, or when tool filter is active)
|
|
@@ -97,40 +157,50 @@ export function searchRegistry(registry, options) {
|
|
|
97
157
|
for (const bundle of visibleBundles) {
|
|
98
158
|
if (tag && !bundle.tags.some((t) => t.toLowerCase() === tag.toLowerCase()))
|
|
99
159
|
continue;
|
|
100
|
-
const
|
|
101
|
-
if (
|
|
102
|
-
|
|
103
|
-
|
|
160
|
+
const deprecation = deprecationOf(registry, bundle.name, undefined, bundle.org);
|
|
161
|
+
if (deprecation && !includeDeprecated)
|
|
162
|
+
continue;
|
|
163
|
+
const score = matchItem(bundle, terms);
|
|
164
|
+
if (score === null)
|
|
165
|
+
continue;
|
|
166
|
+
results.push({ ...(deprecation && { deprecation }), item: bundle, kind: 'bundle', score });
|
|
104
167
|
}
|
|
105
168
|
}
|
|
106
169
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
return b.score - a.score;
|
|
111
|
-
return a.item.name.localeCompare(b.item.name);
|
|
112
|
-
});
|
|
170
|
+
results.sort((a, b) => Number(a.deprecation !== undefined) - Number(b.deprecation !== undefined) ||
|
|
171
|
+
(sort === 'relevance' ? b.score - a.score : 0) ||
|
|
172
|
+
a.item.name.localeCompare(b.item.name));
|
|
113
173
|
return results;
|
|
114
174
|
}
|
|
175
|
+
/** Split a query into lowercase words. */
|
|
176
|
+
export function tokenize(query) {
|
|
177
|
+
return query.toLowerCase().split(/\s+/).filter(Boolean);
|
|
178
|
+
}
|
|
179
|
+
const NAME_SEPARATORS = /[-_/.\s]+/;
|
|
115
180
|
/**
|
|
116
|
-
*
|
|
117
|
-
*
|
|
181
|
+
* The item's entry in the registry's `deprecated` list, keyed on its kind as
|
|
182
|
+
* well as (name, org): an asset's entry carries its type and a bundle's has
|
|
183
|
+
* none, so a bundle and an asset that share a name don't take each other's.
|
|
184
|
+
* An entry with no type still counts for an asset when no bundle has that
|
|
185
|
+
* name, since older entries may leave the type out.
|
|
118
186
|
*/
|
|
119
|
-
function
|
|
120
|
-
const
|
|
121
|
-
const
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
187
|
+
function deprecationOf(registry, name, type, org) {
|
|
188
|
+
const sameOrg = (other) => (other || undefined) === (org || undefined);
|
|
189
|
+
const untypedIsBundle = (registry.bundles ?? []).some((b) => b.name === name && sameOrg(b.org));
|
|
190
|
+
const entry = (registry.deprecated ?? []).find((d) => d.name === name &&
|
|
191
|
+
sameOrg(d.org) &&
|
|
192
|
+
(d.type === type || (type !== undefined && d.type === undefined && !untypedIsBundle)));
|
|
193
|
+
return entry && { reason: entry.reason, ...(entry.replacement && { replacement: entry.replacement }) };
|
|
125
194
|
}
|
|
126
195
|
/**
|
|
127
|
-
*
|
|
128
|
-
*
|
|
196
|
+
* A term of 5–7 characters may be one edit from the name or a name segment, and
|
|
197
|
+
* one of 8 or more two edits; shorter terms never match fuzzily, since one edit
|
|
198
|
+
* turns them into too many other words (`test` into `text`).
|
|
129
199
|
*/
|
|
130
|
-
function
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
const
|
|
134
|
-
return
|
|
200
|
+
function isFuzzyNameMatch(term, name, nameSegments) {
|
|
201
|
+
if (term.length < 5)
|
|
202
|
+
return false;
|
|
203
|
+
const maxDistance = term.length >= 8 ? 2 : 1;
|
|
204
|
+
return [name, ...nameSegments].some((candidate) => Math.abs(candidate.length - term.length) <= maxDistance && editDistance(term, candidate) <= maxDistance);
|
|
135
205
|
}
|
|
136
206
|
//# sourceMappingURL=search.js.map
|
package/build/lib/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"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"}
|
package/build/lib/setup.d.ts
CHANGED
|
@@ -21,7 +21,8 @@ export interface SummaryAction {
|
|
|
21
21
|
/**
|
|
22
22
|
* Parse the raw `atk setup --tool` values into a deduplicated, order-preserving list of tool
|
|
23
23
|
* ids. The flag is repeatable and each value may itself be comma-separated, so
|
|
24
|
-
* `--tool a --tool b`, `--tool a,b` and a mix of both all yield `['a', 'b']`.
|
|
24
|
+
* `--tool a --tool b`, `--tool a,b` and a mix of both all yield `['a', 'b']`. Tool ids are
|
|
25
|
+
* lowercase, so `--tool Claude-Code` is `claude-code`.
|
|
25
26
|
*/
|
|
26
27
|
export declare function parseToolsInput(values: string[]): string[];
|
|
27
28
|
/**
|
package/build/lib/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"AAaA,OAAO,EAAc,KAAK,aAAa,EAAgB,MAAM,YAAY,CAAC;AAM1E;;;GAGG;AACH,eAAO,MAAM,WAAW,QAA4B,CAAC;AAMrD,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAMD
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"AAaA,OAAO,EAAc,KAAK,aAAa,EAAgB,MAAM,YAAY,CAAC;AAM1E;;;GAGG;AACH,eAAO,MAAM,WAAW,QAA4B,CAAC;AAMrD,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAMD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAa1D;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAkHtG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAWxF;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,WAAW,EACX,IAAY,GACb,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,aAAa,CAAC,CAOzB"}
|
package/build/lib/setup.js
CHANGED
|
@@ -22,13 +22,14 @@ export const ORG_PATTERN = /^[a-zA-Z][a-zA-Z0-9-]*$/;
|
|
|
22
22
|
/**
|
|
23
23
|
* Parse the raw `atk setup --tool` values into a deduplicated, order-preserving list of tool
|
|
24
24
|
* ids. The flag is repeatable and each value may itself be comma-separated, so
|
|
25
|
-
* `--tool a --tool b`, `--tool a,b` and a mix of both all yield `['a', 'b']`.
|
|
25
|
+
* `--tool a --tool b`, `--tool a,b` and a mix of both all yield `['a', 'b']`. Tool ids are
|
|
26
|
+
* lowercase, so `--tool Claude-Code` is `claude-code`.
|
|
26
27
|
*/
|
|
27
28
|
export function parseToolsInput(values) {
|
|
28
29
|
const result = [];
|
|
29
30
|
for (const value of values) {
|
|
30
31
|
for (const part of value.split(',')) {
|
|
31
|
-
const trimmed = part.trim();
|
|
32
|
+
const trimmed = part.trim().toLowerCase();
|
|
32
33
|
if (trimmed && !result.includes(trimmed)) {
|
|
33
34
|
result.push(trimmed);
|
|
34
35
|
}
|
package/build/lib/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACxG,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAsB,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1E,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,yBAAyB,CAAC;AAuBrD,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"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"}
|