vskill 1.0.13 → 1.0.15
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 +63 -2
- package/agents.json +1 -1
- package/dist/bin.js +0 -0
- package/dist/clone/github-scaffold.d.ts +38 -0
- package/dist/clone/github-scaffold.js +108 -0
- package/dist/clone/github-scaffold.js.map +1 -0
- package/dist/clone/provenance-fork.d.ts +34 -0
- package/dist/clone/provenance-fork.js +97 -0
- package/dist/clone/provenance-fork.js.map +1 -0
- package/dist/clone/reference-scanner.d.ts +19 -0
- package/dist/clone/reference-scanner.js +144 -0
- package/dist/clone/reference-scanner.js.map +1 -0
- package/dist/clone/skill-locator.d.ts +26 -0
- package/dist/clone/skill-locator.js +248 -0
- package/dist/clone/skill-locator.js.map +1 -0
- package/dist/clone/target-router.d.ts +73 -0
- package/dist/clone/target-router.js +200 -0
- package/dist/clone/target-router.js.map +1 -0
- package/dist/clone/types.d.ts +82 -0
- package/dist/clone/types.js +11 -0
- package/dist/clone/types.js.map +1 -0
- package/dist/commands/add.js +96 -32
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/auth.d.ts +23 -0
- package/dist/commands/auth.js +273 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/check.d.ts +55 -0
- package/dist/commands/check.js +279 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/clone-prompts.d.ts +13 -0
- package/dist/commands/clone-prompts.js +67 -0
- package/dist/commands/clone-prompts.js.map +1 -0
- package/dist/commands/clone.d.ts +70 -0
- package/dist/commands/clone.js +649 -0
- package/dist/commands/clone.js.map +1 -0
- package/dist/commands/eval/serve.js +8 -1
- package/dist/commands/eval/serve.js.map +1 -1
- package/dist/commands/keys.js +54 -2
- package/dist/commands/keys.js.map +1 -1
- package/dist/core/agent-prompts.d.ts +35 -0
- package/dist/core/agent-prompts.js +201 -0
- package/dist/core/agent-prompts.js.map +1 -0
- package/dist/core/skill-generator.d.ts +25 -3
- package/dist/core/skill-generator.js +131 -0
- package/dist/core/skill-generator.js.map +1 -1
- package/dist/eval/skill-scanner.d.ts +2 -12
- package/dist/eval/skill-scanner.js +27 -5
- package/dist/eval/skill-scanner.js.map +1 -1
- package/dist/eval-server/api-routes.d.ts +14 -0
- package/dist/eval-server/api-routes.js +376 -31
- package/dist/eval-server/api-routes.js.map +1 -1
- package/dist/eval-server/data-events.d.ts +1 -1
- package/dist/eval-server/data-events.js.map +1 -1
- package/dist/eval-server/install-engine-routes-helpers.d.ts +1 -3
- package/dist/eval-server/install-engine-routes-helpers.js +6 -14
- package/dist/eval-server/install-engine-routes-helpers.js.map +1 -1
- package/dist/eval-server/origin-resolver.d.ts +42 -0
- package/dist/eval-server/origin-resolver.js +168 -0
- package/dist/eval-server/origin-resolver.js.map +1 -0
- package/dist/eval-server/platform-proxy.d.ts +10 -0
- package/dist/eval-server/platform-proxy.js +58 -2
- package/dist/eval-server/platform-proxy.js.map +1 -1
- package/dist/eval-server/skill-create-routes.d.ts +8 -0
- package/dist/eval-server/skill-create-routes.js +96 -0
- package/dist/eval-server/skill-create-routes.js.map +1 -1
- package/dist/eval-server/skill-resolver.js +40 -0
- package/dist/eval-server/skill-resolver.js.map +1 -1
- package/dist/eval-server/utils/resolve-editor.d.ts +18 -0
- package/dist/eval-server/utils/resolve-editor.js +77 -0
- package/dist/eval-server/utils/resolve-editor.js.map +1 -0
- package/dist/eval-server/utils/scan-install-locations.d.ts +7 -0
- package/dist/eval-server/utils/scan-install-locations.js +20 -0
- package/dist/eval-server/utils/scan-install-locations.js.map +1 -1
- package/dist/eval-server/utils/which.d.ts +15 -0
- package/dist/eval-server/utils/which.js +76 -0
- package/dist/eval-server/utils/which.js.map +1 -0
- package/dist/eval-ui/assets/{CreateSkillPage-T0YWZWw-.js → CreateSkillPage-BmbvQEzE.js} +1 -1
- package/dist/eval-ui/assets/{FindSkillsPalette-KcFM32hZ.js → FindSkillsPalette-D0Zjhm31.js} +2 -2
- package/dist/eval-ui/assets/{SearchPaletteCore-EhBtr4Xx.js → SearchPaletteCore-EhcN1xEa.js} +1 -1
- package/dist/eval-ui/assets/SkillDetailPanel-B5J60ffv.js +1 -0
- package/dist/eval-ui/assets/{UpdateDropdown-pjFhHTi6.js → UpdateDropdown-Celf0_Cr.js} +1 -1
- package/dist/eval-ui/assets/index-BV7k6fdk.js +124 -0
- package/dist/eval-ui/assets/{index-BKAvJDDF.css → index-CKLqBL52.css} +1 -1
- package/dist/eval-ui/index.html +2 -2
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -1
- package/dist/installer/frontmatter.d.ts +26 -0
- package/dist/installer/frontmatter.js +90 -0
- package/dist/installer/frontmatter.js.map +1 -1
- package/dist/lib/github-fetch.d.ts +22 -0
- package/dist/lib/github-fetch.js +152 -0
- package/dist/lib/github-fetch.js.map +1 -0
- package/dist/lib/keychain.d.ts +41 -0
- package/dist/lib/keychain.js +232 -0
- package/dist/lib/keychain.js.map +1 -0
- package/dist/studio/types.d.ts +13 -0
- package/dist/utils/claude-plugin.d.ts +26 -0
- package/dist/utils/claude-plugin.js +60 -0
- package/dist/utils/claude-plugin.js.map +1 -1
- package/package.json +2 -1
- package/dist/eval-ui/assets/SkillDetailPanel-cyzLsLcK.js +0 -1
- package/dist/eval-ui/assets/index-C3S9iHnq.js +0 -122
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// vskill clone — interactive prompts (TTY-only, readline-based)
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Mirrors the pattern used in src/commands/remove.ts (createInterface + a
|
|
5
|
+
// promise-wrapped question). Falls back to non-interactive defaults when
|
|
6
|
+
// stdin is not a TTY so the CLI is scriptable in CI.
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
import { createInterface } from "node:readline";
|
|
9
|
+
export async function confirmPrompt(message, opts = {}) {
|
|
10
|
+
if (opts.yes)
|
|
11
|
+
return true;
|
|
12
|
+
const isTTY = opts.stdinIsTTY ?? process.stdin.isTTY;
|
|
13
|
+
if (!isTTY) {
|
|
14
|
+
process.stderr.write("refusing to prompt in non-TTY context — re-run with --yes to confirm\n");
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
18
|
+
return new Promise((resolveAns) => {
|
|
19
|
+
rl.question(`${message} (y/N): `, (answer) => {
|
|
20
|
+
rl.close();
|
|
21
|
+
resolveAns(answer.trim().toLowerCase() === "y");
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
export async function promptInput(message) {
|
|
26
|
+
if (!process.stdin.isTTY)
|
|
27
|
+
return "";
|
|
28
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
29
|
+
return new Promise((resolveAns) => {
|
|
30
|
+
rl.question(`${message} `, (answer) => {
|
|
31
|
+
rl.close();
|
|
32
|
+
resolveAns(answer.trim());
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Prompt the user to choose one of N labelled options. Returns the chosen
|
|
38
|
+
* index. Re-prompts on bad input.
|
|
39
|
+
*/
|
|
40
|
+
export async function promptChoice(message, labels) {
|
|
41
|
+
if (!process.stdin.isTTY)
|
|
42
|
+
return 0;
|
|
43
|
+
console.log(message);
|
|
44
|
+
for (let i = 0; i < labels.length; i++) {
|
|
45
|
+
console.log(` [${i + 1}] ${labels[i]}`);
|
|
46
|
+
}
|
|
47
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
48
|
+
const askOnce = () => new Promise((resolveAns) => {
|
|
49
|
+
rl.question(`Pick 1-${labels.length}: `, (answer) => {
|
|
50
|
+
resolveAns(answer.trim());
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
try {
|
|
54
|
+
while (true) {
|
|
55
|
+
const raw = await askOnce();
|
|
56
|
+
const n = Number.parseInt(raw, 10);
|
|
57
|
+
if (Number.isInteger(n) && n >= 1 && n <= labels.length) {
|
|
58
|
+
return n - 1;
|
|
59
|
+
}
|
|
60
|
+
console.log(` invalid — enter a number between 1 and ${labels.length}.`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
finally {
|
|
64
|
+
rl.close();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=clone-prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clone-prompts.js","sourceRoot":"","sources":["../../src/commands/clone-prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { type RunGh } from "../clone/github-scaffold.js";
|
|
2
|
+
import type { CloneResult, CloneTargetKind, ReferenceMatch, SkillSource, SkillSourceLocation } from "../clone/types.js";
|
|
3
|
+
export interface CloneCommandOptions {
|
|
4
|
+
target?: CloneTargetKind;
|
|
5
|
+
path?: string;
|
|
6
|
+
plugin?: string;
|
|
7
|
+
pluginName?: string;
|
|
8
|
+
author?: string;
|
|
9
|
+
namespace?: string;
|
|
10
|
+
github?: boolean;
|
|
11
|
+
force?: boolean;
|
|
12
|
+
source?: SkillSourceLocation;
|
|
13
|
+
dryRun?: boolean;
|
|
14
|
+
/** Auto-confirm all prompts (--yes / -y). */
|
|
15
|
+
yes?: boolean;
|
|
16
|
+
/** Override home — used for tests. */
|
|
17
|
+
home?: string;
|
|
18
|
+
/** Override cwd — used for tests. */
|
|
19
|
+
cwd?: string;
|
|
20
|
+
/** Injectable `gh` adapter for tests. */
|
|
21
|
+
runGh?: RunGh;
|
|
22
|
+
/** When true, error messages are thrown instead of printed (used for tests / whole-plugin path). */
|
|
23
|
+
throwOnError?: boolean;
|
|
24
|
+
}
|
|
25
|
+
declare function slugify(name: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Recursively scan a skill directory for cross-skill references and
|
|
28
|
+
* self-name occurrences across SKILL.md and any .md files in subdirectories
|
|
29
|
+
* (e.g., agents/*.md). Operates on the staged `.tmp` content so the report
|
|
30
|
+
* reflects what actually got copied.
|
|
31
|
+
*/
|
|
32
|
+
declare function scanCopiedSkill(stagingDir: string, oldSkillName: string): Promise<{
|
|
33
|
+
refs: ReferenceMatch[];
|
|
34
|
+
selfNames: ReferenceMatch[];
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* Validate the staged clone: SKILL.md must parse and any `agents/*.md`
|
|
38
|
+
* referenced by frontmatter must exist. Throws on any inconsistency.
|
|
39
|
+
*/
|
|
40
|
+
declare function validateStagedClone(stagingDir: string): Promise<void>;
|
|
41
|
+
interface ResolvedCloneArgs {
|
|
42
|
+
source: SkillSource;
|
|
43
|
+
targetKind: CloneTargetKind;
|
|
44
|
+
newSkillBase: string;
|
|
45
|
+
newSkillFullName: string;
|
|
46
|
+
author: string;
|
|
47
|
+
namespace: string;
|
|
48
|
+
finalDir: string;
|
|
49
|
+
pluginRoot?: string;
|
|
50
|
+
pluginName?: string;
|
|
51
|
+
}
|
|
52
|
+
declare function resolveArgs(positionalSource: string, opts: CloneCommandOptions, homePath: string, cwdPath: string): Promise<ResolvedCloneArgs>;
|
|
53
|
+
/**
|
|
54
|
+
* Run the clone pipeline. Returns the CloneResult on success. On failure,
|
|
55
|
+
* cleans up every staged `.tmp` path before propagating the error.
|
|
56
|
+
*
|
|
57
|
+
* The function is exported for use by the whole-plugin path (T-010) and unit
|
|
58
|
+
* tests; the CLI entry point is `cloneCommand` below.
|
|
59
|
+
*/
|
|
60
|
+
export declare function runCloneOnce(resolved: ResolvedCloneArgs, opts: CloneCommandOptions): Promise<CloneResult>;
|
|
61
|
+
/** CLI entry point (Commander action). */
|
|
62
|
+
export declare function cloneCommand(source: string | undefined, opts: CloneCommandOptions): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Whole-plugin clone path (T-010). Delegated to its own module is overkill —
|
|
65
|
+
* the orchestration is small and shares all the same primitives.
|
|
66
|
+
*/
|
|
67
|
+
declare function runWholePluginClone(pluginName: string, opts: CloneCommandOptions, homePath: string, cwdPath: string): Promise<void>;
|
|
68
|
+
/** Re-exports for tests. */
|
|
69
|
+
export { resolveArgs, validateStagedClone, scanCopiedSkill, slugify, runWholePluginClone };
|
|
70
|
+
export type { ResolvedCloneArgs };
|