opencode-snippets 2.0.2 → 2.1.1
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/README.md +44 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +106 -2
- package/dist/index.js.map +1 -1
- package/dist/src/config.d.ts +2 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +12 -2
- package/dist/src/config.js.map +1 -1
- package/dist/src/constants.d.ts +2 -0
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +2 -0
- package/dist/src/constants.js.map +1 -1
- package/dist/src/expander.d.ts.map +1 -1
- package/dist/src/expander.js +4 -1
- package/dist/src/expander.js.map +1 -1
- package/dist/src/hook-types.d.ts +3 -0
- package/dist/src/hook-types.d.ts.map +1 -1
- package/dist/src/skill-load-manager.d.ts +10 -0
- package/dist/src/skill-load-manager.d.ts.map +1 -0
- package/dist/src/skill-load-manager.js +30 -0
- package/dist/src/skill-load-manager.js.map +1 -0
- package/dist/src/skill-loader.d.ts +8 -1
- package/dist/src/skill-loader.d.ts.map +1 -1
- package/dist/src/skill-loader.js +66 -17
- package/dist/src/skill-loader.js.map +1 -1
- package/dist/src/skill-loading.d.ts +11 -0
- package/dist/src/skill-loading.d.ts.map +1 -0
- package/dist/src/skill-loading.js +122 -0
- package/dist/src/skill-loading.js.map +1 -0
- package/dist/src/tui-search.d.ts +2 -0
- package/dist/src/tui-search.d.ts.map +1 -1
- package/dist/src/tui-search.js +61 -16
- package/dist/src/tui-search.js.map +1 -1
- package/dist/src/tui-trigger.d.ts +2 -0
- package/dist/src/tui-trigger.d.ts.map +1 -1
- package/dist/src/tui-trigger.js +22 -0
- package/dist/src/tui-trigger.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.jsx +84 -29
- package/dist/tui.jsx.map +1 -1
- package/package.json +1 -1
- package/skill/snippets/SKILL.md +30 -2
package/dist/src/skill-loader.js
CHANGED
|
@@ -1,48 +1,97 @@
|
|
|
1
|
-
import { readdir } from "node:fs/promises";
|
|
1
|
+
import { readdir, stat } from "node:fs/promises";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
|
-
import { join } from "node:path";
|
|
3
|
+
import { dirname, join, resolve } from "node:path";
|
|
4
4
|
import { importCjs } from "./cjs-interop.js";
|
|
5
5
|
const matter = await importCjs("gray-matter");
|
|
6
6
|
import { logger } from "./logger.js";
|
|
7
7
|
/**
|
|
8
|
-
* OpenCode skill directory patterns
|
|
8
|
+
* OpenCode skill directory patterns.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
* -
|
|
10
|
+
* User requirement: keep behavior aligned with current OpenCode skill discovery.
|
|
11
|
+
* During the 2026-04 parity audit, the archived `opencode-ai/opencode` repo did not
|
|
12
|
+
* contain the modern skill loader, so the authoritative reference was the live docs:
|
|
13
|
+
* https://opencode.ai/docs/skills/
|
|
14
|
+
*
|
|
15
|
+
* Official paths from current OpenCode docs:
|
|
12
16
|
* - ~/.config/opencode/skills/<name>/SKILL.md
|
|
17
|
+
* - ~/.claude/skills/<name>/SKILL.md
|
|
18
|
+
* - ~/.agents/skills/<name>/SKILL.md
|
|
19
|
+
* - .opencode/skills/<name>/SKILL.md
|
|
20
|
+
* - .claude/skills/<name>/SKILL.md
|
|
21
|
+
* - .agents/skills/<name>/SKILL.md
|
|
13
22
|
*
|
|
14
|
-
*
|
|
23
|
+
* Compatibility paths we intentionally keep because this repo and local setup still use them:
|
|
24
|
+
* - ~/.config/opencode/skill/<name>/SKILL.md
|
|
15
25
|
* - .opencode/skill/<name>/SKILL.md
|
|
16
|
-
*
|
|
17
|
-
*
|
|
26
|
+
*
|
|
27
|
+
* Compatibility paths are loaded before the official `.opencode/skills` variants so the
|
|
28
|
+
* documented OpenCode locations still win if both singular and plural exist side by side.
|
|
18
29
|
*/
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
30
|
+
function getGlobalSkillDirs(homeDir = homedir()) {
|
|
31
|
+
return [
|
|
32
|
+
join(homeDir, ".config", "opencode", "skill"),
|
|
33
|
+
join(homeDir, ".config", "opencode", "skills"),
|
|
34
|
+
join(homeDir, ".claude", "skills"),
|
|
35
|
+
join(homeDir, ".agents", "skills"),
|
|
36
|
+
];
|
|
37
|
+
}
|
|
23
38
|
function getProjectSkillDirs(projectDir) {
|
|
24
39
|
return [
|
|
25
40
|
join(projectDir, ".opencode", "skill"),
|
|
26
41
|
join(projectDir, ".opencode", "skills"),
|
|
27
42
|
join(projectDir, ".claude", "skills"),
|
|
43
|
+
join(projectDir, ".agents", "skills"),
|
|
28
44
|
];
|
|
29
45
|
}
|
|
46
|
+
async function exists(path) {
|
|
47
|
+
try {
|
|
48
|
+
await stat(path);
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* OpenCode walks upward from the current working directory until the git worktree.
|
|
57
|
+
* We mirror that so nested apps can inherit repo-root skills while still allowing
|
|
58
|
+
* closer directories to override farther ones.
|
|
59
|
+
*/
|
|
60
|
+
async function getProjectSearchRoots(projectDir) {
|
|
61
|
+
const roots = [];
|
|
62
|
+
let dir = resolve(projectDir);
|
|
63
|
+
while (true) {
|
|
64
|
+
roots.push(dir);
|
|
65
|
+
if (await exists(join(dir, ".git"))) {
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
const parent = dirname(dir);
|
|
69
|
+
if (parent === dir) {
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
dir = parent;
|
|
73
|
+
}
|
|
74
|
+
return roots.reverse();
|
|
75
|
+
}
|
|
30
76
|
/**
|
|
31
77
|
* Loads all skills from global and project directories
|
|
32
78
|
*
|
|
33
79
|
* @param projectDir - Optional project directory path
|
|
80
|
+
* @param options - Test-only overrides for discovery roots
|
|
34
81
|
* @returns A map of skill names (lowercase) to their SkillInfo
|
|
35
82
|
*/
|
|
36
|
-
export async function loadSkills(projectDir) {
|
|
83
|
+
export async function loadSkills(projectDir, options = {}) {
|
|
37
84
|
const skills = new Map();
|
|
38
85
|
// Load from global directories first
|
|
39
|
-
for (const dir of
|
|
86
|
+
for (const dir of getGlobalSkillDirs(options.homeDir)) {
|
|
40
87
|
await loadFromDirectory(dir, skills, "global");
|
|
41
88
|
}
|
|
42
|
-
// Load from project directories
|
|
89
|
+
// Load from project directories from git root -> cwd so nearer paths override farther ones.
|
|
43
90
|
if (projectDir) {
|
|
44
|
-
for (const
|
|
45
|
-
|
|
91
|
+
for (const root of await getProjectSearchRoots(projectDir)) {
|
|
92
|
+
for (const dir of getProjectSkillDirs(root)) {
|
|
93
|
+
await loadFromDirectory(dir, skills, "project");
|
|
94
|
+
}
|
|
46
95
|
}
|
|
47
96
|
}
|
|
48
97
|
logger.debug("Skills loaded", { count: skills.size });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-loader.js","sourceRoot":"","sources":["../../src/skill-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"skill-loader.js","sourceRoot":"","sources":["../../src/skill-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type SkillRegistry } from "./skill-loader.js";
|
|
2
|
+
import type { SnippetRegistry } from "./types.js";
|
|
3
|
+
export interface SkillLoadResult {
|
|
4
|
+
text: string;
|
|
5
|
+
payloads: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare function expandSkillLoads(text: string, registry: SkillRegistry, snippets: SnippetRegistry, options: {
|
|
8
|
+
expandSkillTagsInContent: boolean;
|
|
9
|
+
extractInject: boolean;
|
|
10
|
+
}): Promise<SkillLoadResult>;
|
|
11
|
+
//# sourceMappingURL=skill-loading.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-loading.d.ts","sourceRoot":"","sources":["../../src/skill-loading.ts"],"names":[],"mappings":"AAMA,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAUD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE;IACP,wBAAwB,EAAE,OAAO,CAAC;IAClC,aAAa,EAAE,OAAO,CAAC;CACxB,GACA,OAAO,CAAC,eAAe,CAAC,CAsC1B"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { readdir } from "node:fs/promises";
|
|
2
|
+
import { dirname, resolve } from "node:path";
|
|
3
|
+
import { pathToFileURL } from "node:url";
|
|
4
|
+
import { PATTERNS } from "./constants.js";
|
|
5
|
+
import { assembleMessage, expandHashtags } from "./expander.js";
|
|
6
|
+
import { logger } from "./logger.js";
|
|
7
|
+
import { getSkill } from "./skill-loader.js";
|
|
8
|
+
import { expandSkillTags } from "./skill-renderer.js";
|
|
9
|
+
const SKILL_FILE_LIMIT = 10;
|
|
10
|
+
function visibleSkillLoad(skill) {
|
|
11
|
+
return `↳ Loaded ${skill.name}`;
|
|
12
|
+
}
|
|
13
|
+
function pluginNote(skill, marker) {
|
|
14
|
+
return `Plugin note: \`${marker}\` is not instruction. Do not call \`skill\` again for ${skill.name}.`;
|
|
15
|
+
}
|
|
16
|
+
export async function expandSkillLoads(text, registry, snippets, options) {
|
|
17
|
+
PATTERNS.SKILL_LOAD.lastIndex = 0;
|
|
18
|
+
const matches = [...text.matchAll(PATTERNS.SKILL_LOAD)];
|
|
19
|
+
if (matches.length === 0) {
|
|
20
|
+
return { text, payloads: [] };
|
|
21
|
+
}
|
|
22
|
+
let result = "";
|
|
23
|
+
let lastIndex = 0;
|
|
24
|
+
const payloads = [];
|
|
25
|
+
for (const match of matches) {
|
|
26
|
+
const index = match.index ?? 0;
|
|
27
|
+
const token = match[0];
|
|
28
|
+
const parsed = parseSkillName(match[1]);
|
|
29
|
+
result += text.slice(lastIndex, index);
|
|
30
|
+
lastIndex = index + token.length;
|
|
31
|
+
if (!parsed) {
|
|
32
|
+
result += token;
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const skill = getSkill(registry, parsed);
|
|
36
|
+
if (!skill) {
|
|
37
|
+
logger.warn(`Skill not found: '${parsed}', leaving syntax unchanged`);
|
|
38
|
+
result += token;
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
const marker = visibleSkillLoad(skill);
|
|
42
|
+
payloads.push(await buildSkillPayload(skill, registry, snippets, marker, options));
|
|
43
|
+
result += marker;
|
|
44
|
+
}
|
|
45
|
+
result += text.slice(lastIndex);
|
|
46
|
+
return { text: result, payloads };
|
|
47
|
+
}
|
|
48
|
+
function parseSkillName(input) {
|
|
49
|
+
if (!input)
|
|
50
|
+
return null;
|
|
51
|
+
const trimmed = input.trim();
|
|
52
|
+
if (!trimmed)
|
|
53
|
+
return null;
|
|
54
|
+
const quote = trimmed[0];
|
|
55
|
+
if ((quote === '"' || quote === "'") && trimmed.at(-1) === quote) {
|
|
56
|
+
const inner = trimmed.slice(1, -1).trim();
|
|
57
|
+
return inner || null;
|
|
58
|
+
}
|
|
59
|
+
return trimmed;
|
|
60
|
+
}
|
|
61
|
+
async function buildSkillPayload(skill, registry, snippets, marker, options) {
|
|
62
|
+
const dir = dirname(skill.filePath);
|
|
63
|
+
const base = pathToFileURL(dir).href;
|
|
64
|
+
const files = await listSkillFiles(dir, SKILL_FILE_LIMIT);
|
|
65
|
+
const content = renderSkillContent(skill.content, registry, snippets, options);
|
|
66
|
+
return [
|
|
67
|
+
`<skill_content name="${skill.name}">`,
|
|
68
|
+
// User requirement: repeat the exact visible marker in hidden context so the
|
|
69
|
+
// model treats `↳ Loaded ...` as already-resolved state, not as a new tool request.
|
|
70
|
+
pluginNote(skill, marker),
|
|
71
|
+
"",
|
|
72
|
+
`# Skill: ${skill.name}`,
|
|
73
|
+
"",
|
|
74
|
+
content,
|
|
75
|
+
"",
|
|
76
|
+
`Base directory for this skill: ${base}`,
|
|
77
|
+
"Relative paths in this skill (e.g., scripts/, reference/) are relative to this base directory.",
|
|
78
|
+
"Note: file list is sampled.",
|
|
79
|
+
"",
|
|
80
|
+
"<skill_files>",
|
|
81
|
+
files.map((file) => `<file>${file}</file>`).join("\n"),
|
|
82
|
+
"</skill_files>",
|
|
83
|
+
"</skill_content>",
|
|
84
|
+
].join("\n");
|
|
85
|
+
}
|
|
86
|
+
function renderSkillContent(content, registry, snippets, options) {
|
|
87
|
+
let processed = content;
|
|
88
|
+
if (options.expandSkillTagsInContent) {
|
|
89
|
+
processed = expandSkillTags(processed, registry);
|
|
90
|
+
}
|
|
91
|
+
const expandOptions = {
|
|
92
|
+
extractInject: options.extractInject,
|
|
93
|
+
};
|
|
94
|
+
return assembleMessage(expandHashtags(processed, snippets, new Map(), expandOptions));
|
|
95
|
+
}
|
|
96
|
+
async function listSkillFiles(dir, limit) {
|
|
97
|
+
const files = [];
|
|
98
|
+
await walkSkillFiles(dir, files, limit);
|
|
99
|
+
return files;
|
|
100
|
+
}
|
|
101
|
+
async function walkSkillFiles(dir, files, limit) {
|
|
102
|
+
if (files.length >= limit)
|
|
103
|
+
return;
|
|
104
|
+
const entries = await readdir(dir, { withFileTypes: true, encoding: "utf8" }).catch(() => null);
|
|
105
|
+
if (!entries)
|
|
106
|
+
return;
|
|
107
|
+
for (const entry of entries.toSorted((a, b) => a.name.localeCompare(b.name))) {
|
|
108
|
+
if (files.length >= limit)
|
|
109
|
+
return;
|
|
110
|
+
const filePath = resolve(dir, entry.name);
|
|
111
|
+
if (entry.isDirectory()) {
|
|
112
|
+
await walkSkillFiles(filePath, files, limit);
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (!entry.isFile())
|
|
116
|
+
continue;
|
|
117
|
+
if (filePath.includes("SKILL.md"))
|
|
118
|
+
continue;
|
|
119
|
+
files.push(filePath);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=skill-loading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-loading.js","sourceRoot":"","sources":["../../src/skill-loading.ts"],"names":[],"mappings":"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"}
|
package/dist/src/tui-search.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import type { SkillInfo } from "./skill-loader.js";
|
|
1
2
|
import type { SnippetInfo } from "./types.js";
|
|
2
3
|
export interface HighlightPart {
|
|
3
4
|
text: string;
|
|
4
5
|
match: boolean;
|
|
5
6
|
}
|
|
6
7
|
export declare function filterSnippets(snippets: SnippetInfo[], query: string): SnippetInfo[];
|
|
8
|
+
export declare function filterSkills(skills: SkillInfo[], query: string): SkillInfo[];
|
|
7
9
|
export declare function matchedAliases(snippet: SnippetInfo, query: string): string[];
|
|
8
10
|
export declare function snippetDescription(snippet: SnippetInfo): string;
|
|
9
11
|
export declare function highlightMatches(input: string, query: string): HighlightPart[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-search.d.ts","sourceRoot":"","sources":["../../src/tui-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"tui-search.d.ts","sourceRoot":"","sources":["../../src/tui-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB;AA+DD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAgBpF;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,CAgB5E;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAK5E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAE/D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CA0B9E"}
|
package/dist/src/tui-search.js
CHANGED
|
@@ -1,30 +1,58 @@
|
|
|
1
|
-
function
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
function normalizeSearchText(input) {
|
|
2
|
+
return input.toLowerCase().replace(/[^a-z0-9]/g, "");
|
|
3
|
+
}
|
|
4
|
+
function scoreText(input, query) {
|
|
5
|
+
const raw = input.toLowerCase();
|
|
4
6
|
const needle = query.toLowerCase();
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
if (name === needle)
|
|
7
|
+
const compact = normalizeSearchText(input);
|
|
8
|
+
const compactNeedle = normalizeSearchText(query);
|
|
9
|
+
if (raw === needle)
|
|
9
10
|
return 0;
|
|
10
|
-
if (
|
|
11
|
+
if (compactNeedle && compact === compactNeedle)
|
|
11
12
|
return 1;
|
|
12
|
-
if (
|
|
13
|
+
if (raw.startsWith(needle))
|
|
13
14
|
return 2;
|
|
14
|
-
if (
|
|
15
|
+
if (compactNeedle && compact.startsWith(compactNeedle))
|
|
15
16
|
return 3;
|
|
16
|
-
if (
|
|
17
|
+
if (raw.includes(needle))
|
|
17
18
|
return 4;
|
|
18
|
-
if (
|
|
19
|
+
if (compactNeedle && compact.includes(compactNeedle))
|
|
19
20
|
return 5;
|
|
21
|
+
return Number.POSITIVE_INFINITY;
|
|
22
|
+
}
|
|
23
|
+
function scoreSnippet(snippet, query) {
|
|
24
|
+
if (!query)
|
|
25
|
+
return 0;
|
|
26
|
+
const description = (snippet.description || "").toLowerCase();
|
|
27
|
+
const score = Math.min(scoreText(snippet.name, query), ...snippet.aliases.map((alias) => scoreText(alias, query)));
|
|
28
|
+
if (Number.isFinite(score))
|
|
29
|
+
return score;
|
|
30
|
+
const needle = query.toLowerCase();
|
|
20
31
|
if (description.startsWith(needle))
|
|
21
32
|
return 6;
|
|
22
33
|
if (description.includes(needle))
|
|
23
34
|
return 7;
|
|
24
35
|
return Number.POSITIVE_INFINITY;
|
|
25
36
|
}
|
|
26
|
-
function sourceRank(
|
|
27
|
-
return
|
|
37
|
+
function sourceRank(item) {
|
|
38
|
+
return item.source === "project" ? 0 : 1;
|
|
39
|
+
}
|
|
40
|
+
function skillTag(skill) {
|
|
41
|
+
return `skill(${skill.name})`;
|
|
42
|
+
}
|
|
43
|
+
function scoreSkill(skill, query) {
|
|
44
|
+
if (!query)
|
|
45
|
+
return 0;
|
|
46
|
+
const description = (skill.description || "").toLowerCase();
|
|
47
|
+
const score = Math.min(scoreText(skill.name, query), scoreText(skillTag(skill), query));
|
|
48
|
+
if (Number.isFinite(score))
|
|
49
|
+
return score;
|
|
50
|
+
const needle = query.toLowerCase();
|
|
51
|
+
if (description.startsWith(needle))
|
|
52
|
+
return 6;
|
|
53
|
+
if (description.includes(needle))
|
|
54
|
+
return 7;
|
|
55
|
+
return Number.POSITIVE_INFINITY;
|
|
28
56
|
}
|
|
29
57
|
export function filterSnippets(snippets, query) {
|
|
30
58
|
return [...snippets]
|
|
@@ -43,11 +71,28 @@ export function filterSnippets(snippets, query) {
|
|
|
43
71
|
})
|
|
44
72
|
.map((item) => item.snippet);
|
|
45
73
|
}
|
|
74
|
+
export function filterSkills(skills, query) {
|
|
75
|
+
return [...skills]
|
|
76
|
+
.map((skill) => ({
|
|
77
|
+
skill,
|
|
78
|
+
score: scoreSkill(skill, query.trim()),
|
|
79
|
+
}))
|
|
80
|
+
.filter((item) => Number.isFinite(item.score))
|
|
81
|
+
.sort((a, b) => {
|
|
82
|
+
if (a.score !== b.score)
|
|
83
|
+
return a.score - b.score;
|
|
84
|
+
const sourceDiff = sourceRank(a.skill) - sourceRank(b.skill);
|
|
85
|
+
if (sourceDiff !== 0)
|
|
86
|
+
return sourceDiff;
|
|
87
|
+
return a.skill.name.localeCompare(b.skill.name);
|
|
88
|
+
})
|
|
89
|
+
.map((item) => item.skill);
|
|
90
|
+
}
|
|
46
91
|
export function matchedAliases(snippet, query) {
|
|
47
|
-
const needle = query.trim()
|
|
92
|
+
const needle = query.trim();
|
|
48
93
|
if (!needle)
|
|
49
94
|
return [];
|
|
50
|
-
return snippet.aliases.filter((alias) =>
|
|
95
|
+
return snippet.aliases.filter((alias) => Number.isFinite(scoreText(alias, needle)));
|
|
51
96
|
}
|
|
52
97
|
export function snippetDescription(snippet) {
|
|
53
98
|
return (snippet.description || snippet.content).replace(/\s+/g, " ").trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-search.js","sourceRoot":"","sources":["../../src/tui-search.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tui-search.js","sourceRoot":"","sources":["../../src/tui-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,9 @@ export interface HashtagTriggerMatch {
|
|
|
8
8
|
export declare function findTrailingHashtagTrigger(input: string): HashtagTriggerMatch | undefined;
|
|
9
9
|
export declare function replaceTrailingHashtag(input: string, name: string): string | undefined;
|
|
10
10
|
export declare function insertSnippetTag(input: string, name: string): string;
|
|
11
|
+
export declare function insertSkillLoad(input: string, name: string): string;
|
|
11
12
|
export declare function preferredSnippetTag(input: string, item: Pick<SnippetInfo, "name" | "aliases">): string;
|
|
12
13
|
export declare function insertSnippetTrigger(input: string): string;
|
|
14
|
+
export declare function stepSelection(current: number, total: number, delta: -1 | 1): number;
|
|
13
15
|
export declare function truncateSnippetPreview(input: string, max?: number): string;
|
|
14
16
|
//# sourceMappingURL=tui-trigger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-trigger.d.ts","sourceRoot":"","sources":["../../src/tui-trigger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAID,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAazF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKtF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQpE;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC,GAC1C,MAAM,CAKR;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO1D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,CAKvE"}
|
|
1
|
+
{"version":3,"file":"tui-trigger.d.ts","sourceRoot":"","sources":["../../src/tui-trigger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAID,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAazF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKtF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQpE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAWnE;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC,GAC1C,MAAM,CAKR;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO1D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAQnF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,CAKvE"}
|
package/dist/src/tui-trigger.js
CHANGED
|
@@ -28,6 +28,18 @@ export function insertSnippetTag(input, name) {
|
|
|
28
28
|
return `${input}#${name} `;
|
|
29
29
|
return `${input} #${name} `;
|
|
30
30
|
}
|
|
31
|
+
export function insertSkillLoad(input, name) {
|
|
32
|
+
const match = findTrailingHashtagTrigger(input);
|
|
33
|
+
const load = `#skill(${name}) `;
|
|
34
|
+
if (match) {
|
|
35
|
+
return `${input.slice(0, match.start)}${load}`;
|
|
36
|
+
}
|
|
37
|
+
if (!input)
|
|
38
|
+
return load;
|
|
39
|
+
if (/\s$/.test(input))
|
|
40
|
+
return `${input}${load}`;
|
|
41
|
+
return `${input} ${load}`;
|
|
42
|
+
}
|
|
31
43
|
export function preferredSnippetTag(input, item) {
|
|
32
44
|
const query = findTrailingHashtagTrigger(input)?.query.trim();
|
|
33
45
|
if (!query)
|
|
@@ -43,6 +55,16 @@ export function insertSnippetTrigger(input) {
|
|
|
43
55
|
return `${input}#`;
|
|
44
56
|
return `${input} #`;
|
|
45
57
|
}
|
|
58
|
+
export function stepSelection(current, total, delta) {
|
|
59
|
+
if (total <= 0)
|
|
60
|
+
return 0;
|
|
61
|
+
const next = current + delta;
|
|
62
|
+
if (next < 0)
|
|
63
|
+
return 0;
|
|
64
|
+
if (next >= total)
|
|
65
|
+
return total - 1;
|
|
66
|
+
return next;
|
|
67
|
+
}
|
|
46
68
|
export function truncateSnippetPreview(input, max = 140) {
|
|
47
69
|
const text = input.replace(/\s+/g, " ").trim();
|
|
48
70
|
if (text.length <= max)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-trigger.js","sourceRoot":"","sources":["../../src/tui-trigger.ts"],"names":[],"mappings":"AASA,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAE5C,MAAM,UAAU,0BAA0B,CAAC,KAAa;IACtD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO;IAEjB,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;IAE1B,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;QAClC,GAAG,EAAE,KAAK,CAAC,MAAM;QACjB,KAAK;QACL,KAAK;KACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,IAAY;IAChE,MAAM,KAAK,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,IAAY;IAC1D,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,IAAI,GAAG,CAAC;IAC/B,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC;IAElD,OAAO,GAAG,KAAK,KAAK,IAAI,GAAG,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,IAA2C;IAE3C,MAAM,KAAK,GAAG,0BAA0B,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IAC9D,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IAE7B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,IAAI,0BAA0B,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEpD,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,CAAC;IACvB,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,KAAK,GAAG,CAAC;IAE1C,OAAO,GAAG,KAAK,IAAI,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,GAAG,GAAG,GAAG;IAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,IAAI,CAAC;IAEpC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC;AAClD,CAAC"}
|
|
1
|
+
{"version":3,"file":"tui-trigger.js","sourceRoot":"","sources":["../../src/tui-trigger.ts"],"names":[],"mappings":"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"}
|
package/dist/tui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../tui.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,eAAe,EAGhB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../tui.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,eAAe,EAGhB,MAAM,yBAAyB,CAAC;AA2vBjC,QAAA,MAAM,MAAM,EAAE,eAAe,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAG3C,CAAC;AAEF,eAAe,MAAM,CAAC"}
|