neoctl 0.1.11 → 0.1.13
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 +69 -10
- package/dist/core/query.js +23 -4
- package/dist/core/query.js.map +1 -1
- package/dist/core/smoke-core-loop.js +43 -1
- package/dist/core/smoke-core-loop.js.map +1 -1
- package/dist/index.d.ts +20 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/dist/skills/skill-filesystem.d.ts +32 -0
- package/dist/skills/skill-filesystem.js +371 -0
- package/dist/skills/skill-filesystem.js.map +1 -0
- package/dist/skills/skill-management-tools.d.ts +36 -0
- package/dist/skills/skill-management-tools.js +188 -0
- package/dist/skills/skill-management-tools.js.map +1 -0
- package/dist/skills/skill-tool.d.ts +85 -5
- package/dist/skills/skill-tool.js +173 -14
- package/dist/skills/skill-tool.js.map +1 -1
- package/dist/skills/smoke-skills.js +53 -4
- package/dist/skills/smoke-skills.js.map +1 -1
- package/dist/tools/tool.d.ts +8 -0
- package/dist/tools/tool.js.map +1 -1
- package/dist/web/index.js +10 -3
- package/dist/web/index.js.map +1 -1
- package/package.json +19 -1
|
@@ -1,28 +1,108 @@
|
|
|
1
|
-
import type { Tool } from "../tools/tool.js";
|
|
1
|
+
import type { CanUseTool, JsonSchema, Tool } from "../tools/tool.js";
|
|
2
|
+
export type SkillExecutionMode = "inline" | "fork";
|
|
3
|
+
export type SkillEffort = "minimal" | "low" | "medium" | "high";
|
|
4
|
+
export type SkillTrustLevel = "builtin" | "workspace" | "user" | "plugin" | "generated" | "remote";
|
|
5
|
+
export interface SkillExample {
|
|
6
|
+
input?: unknown;
|
|
7
|
+
output?: unknown;
|
|
8
|
+
description?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface SkillPermission {
|
|
11
|
+
kind: "tool" | "network" | "filesystem" | "env" | "model" | string;
|
|
12
|
+
value?: string;
|
|
13
|
+
reason?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface SkillSourceInfo {
|
|
16
|
+
kind: "memory" | "filesystem" | "plugin" | "remote" | "generated" | string;
|
|
17
|
+
root?: string;
|
|
18
|
+
path?: string;
|
|
19
|
+
plugin?: string;
|
|
20
|
+
uri?: string;
|
|
21
|
+
}
|
|
2
22
|
export interface SkillDescriptor {
|
|
3
23
|
name: string;
|
|
4
24
|
description: string;
|
|
5
25
|
entrypoint: string;
|
|
6
|
-
execution:
|
|
26
|
+
execution: SkillExecutionMode;
|
|
7
27
|
allowedTools?: readonly string[];
|
|
8
28
|
model?: string;
|
|
9
|
-
effort?:
|
|
29
|
+
effort?: SkillEffort;
|
|
10
30
|
disableModelInvocation?: boolean;
|
|
31
|
+
version?: string;
|
|
32
|
+
title?: string;
|
|
33
|
+
tags?: readonly string[];
|
|
34
|
+
argumentHint?: string;
|
|
35
|
+
inputSchema?: JsonSchema;
|
|
36
|
+
outputSchema?: JsonSchema;
|
|
37
|
+
permissions?: readonly SkillPermission[];
|
|
38
|
+
examples?: readonly SkillExample[];
|
|
39
|
+
metadata?: Record<string, unknown>;
|
|
40
|
+
enabled?: boolean;
|
|
41
|
+
trustLevel?: SkillTrustLevel;
|
|
42
|
+
source?: SkillSourceInfo;
|
|
43
|
+
createdAt?: string;
|
|
44
|
+
updatedAt?: string;
|
|
11
45
|
}
|
|
12
46
|
export interface SkillCatalog {
|
|
13
47
|
list(): Promise<SkillDescriptor[]>;
|
|
14
48
|
get(name: string): Promise<SkillDescriptor | undefined>;
|
|
15
49
|
}
|
|
50
|
+
export interface MutableSkillCatalog extends SkillCatalog {
|
|
51
|
+
create(skill: SkillDescriptor, options?: SkillWriteOptions): Promise<SkillDescriptor>;
|
|
52
|
+
update(name: string, patch: SkillUpdatePatch, options?: SkillWriteOptions): Promise<SkillDescriptor>;
|
|
53
|
+
delete(name: string, options?: SkillWriteOptions): Promise<boolean>;
|
|
54
|
+
}
|
|
55
|
+
export interface SkillWriteOptions {
|
|
56
|
+
overwrite?: boolean;
|
|
57
|
+
actor?: string;
|
|
58
|
+
reason?: string;
|
|
59
|
+
}
|
|
60
|
+
export type SkillUpdatePatch = Partial<Omit<SkillDescriptor, "name" | "source" | "createdAt">> & {
|
|
61
|
+
name?: never;
|
|
62
|
+
};
|
|
16
63
|
export interface SkillToolInput {
|
|
17
64
|
skill?: string;
|
|
18
65
|
name?: string;
|
|
19
66
|
args?: string;
|
|
20
67
|
input?: unknown;
|
|
21
68
|
}
|
|
22
|
-
export
|
|
23
|
-
|
|
69
|
+
export interface CreateSkillToolOptions {
|
|
70
|
+
description?: string;
|
|
71
|
+
exposeCatalogHint?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface SkillValidationOptions {
|
|
74
|
+
allowDisabled?: boolean;
|
|
75
|
+
requireEntrypoint?: boolean;
|
|
76
|
+
}
|
|
77
|
+
export interface SkillValidationIssue {
|
|
78
|
+
path: string;
|
|
79
|
+
message: string;
|
|
80
|
+
}
|
|
81
|
+
export type SkillValidationResult = {
|
|
82
|
+
ok: true;
|
|
83
|
+
value: SkillDescriptor;
|
|
84
|
+
issues: [];
|
|
85
|
+
} | {
|
|
86
|
+
ok: false;
|
|
87
|
+
issues: SkillValidationIssue[];
|
|
88
|
+
};
|
|
89
|
+
export declare function createSkillTool(catalog: SkillCatalog, options?: CreateSkillToolOptions): Tool<SkillToolInput>;
|
|
90
|
+
export declare class InMemorySkillCatalog implements MutableSkillCatalog {
|
|
24
91
|
private readonly skills;
|
|
25
92
|
constructor(skills?: readonly SkillDescriptor[]);
|
|
26
93
|
list(): Promise<SkillDescriptor[]>;
|
|
27
94
|
get(name: string): Promise<SkillDescriptor | undefined>;
|
|
95
|
+
create(skill: SkillDescriptor, options?: SkillWriteOptions): Promise<SkillDescriptor>;
|
|
96
|
+
update(name: string, patch: SkillUpdatePatch): Promise<SkillDescriptor>;
|
|
97
|
+
delete(name: string): Promise<boolean>;
|
|
28
98
|
}
|
|
99
|
+
export declare function validateSkillDescriptor(input: unknown, options?: SkillValidationOptions): SkillValidationResult;
|
|
100
|
+
export declare function normalizeSkillDescriptor(skill: SkillDescriptor, options?: SkillValidationOptions): SkillDescriptor;
|
|
101
|
+
export declare function normalizeSkillName(value: string | undefined): string | undefined;
|
|
102
|
+
export declare function isValidSkillName(name: string): boolean;
|
|
103
|
+
export declare function requireSkillName(value: string | undefined): string;
|
|
104
|
+
export declare function renderSkillPrompt(skill: SkillDescriptor, args?: string): string;
|
|
105
|
+
export declare function summarizeSkill(skill: SkillDescriptor): Record<string, unknown>;
|
|
106
|
+
export declare function createSkillAwareCanUseTool(catalog: SkillCatalog, delegate?: CanUseTool, options?: {
|
|
107
|
+
enforceAllowedTools?: boolean;
|
|
108
|
+
}): CanUseTool;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { createTextMessage } from "../types/messages.js";
|
|
2
|
-
export function createSkillTool(catalog) {
|
|
2
|
+
export function createSkillTool(catalog, options = {}) {
|
|
3
3
|
return {
|
|
4
4
|
name: "skill",
|
|
5
5
|
aliases: ["Skill"],
|
|
6
|
-
description:
|
|
6
|
+
description: options.description ?? buildSkillToolDescription(options),
|
|
7
7
|
inputSchema: {
|
|
8
8
|
type: "object",
|
|
9
9
|
properties: {
|
|
10
|
-
skill: { type: "string" },
|
|
11
|
-
name: { type: "string" },
|
|
12
|
-
args: { type: "string" },
|
|
13
|
-
input: {},
|
|
10
|
+
skill: { type: "string", description: "Skill name to invoke." },
|
|
11
|
+
name: { type: "string", description: "Alias for skill." },
|
|
12
|
+
args: { type: "string", description: "Human-readable arguments for the skill." },
|
|
13
|
+
input: { description: "Structured arguments for the skill." },
|
|
14
14
|
},
|
|
15
15
|
additionalProperties: false,
|
|
16
16
|
},
|
|
@@ -25,6 +25,8 @@ export function createSkillTool(catalog) {
|
|
|
25
25
|
const skill = await catalog.get(name);
|
|
26
26
|
if (!skill)
|
|
27
27
|
return { ok: false, message: `Unknown skill: ${name}` };
|
|
28
|
+
if (skill.enabled === false)
|
|
29
|
+
return { ok: false, message: `Skill ${name} is disabled` };
|
|
28
30
|
if (skill.disableModelInvocation)
|
|
29
31
|
return { ok: false, message: `Skill ${name} cannot be invoked by the model` };
|
|
30
32
|
return { ok: true, value: { ...input, skill: name } };
|
|
@@ -34,6 +36,8 @@ export function createSkillTool(catalog) {
|
|
|
34
36
|
const skill = name ? await catalog.get(name) : undefined;
|
|
35
37
|
if (!name || !skill)
|
|
36
38
|
return { ok: false, output: { error: `Unknown skill: ${name ?? "<empty>"}` } };
|
|
39
|
+
if (skill.enabled === false)
|
|
40
|
+
return { ok: false, output: { error: `Skill ${name} is disabled` } };
|
|
37
41
|
if (skill.execution === "fork") {
|
|
38
42
|
return {
|
|
39
43
|
ok: false,
|
|
@@ -41,16 +45,12 @@ export function createSkillTool(catalog) {
|
|
|
41
45
|
status: "fork_required",
|
|
42
46
|
skill: name,
|
|
43
47
|
message: "Forked skill execution requires launching AgentTool with the skill prompt in this scaffold.",
|
|
48
|
+
descriptor: summarizeSkill(skill),
|
|
44
49
|
},
|
|
45
50
|
};
|
|
46
51
|
}
|
|
47
52
|
const args = renderSkillArgs(input.args ?? input.input);
|
|
48
|
-
const prompt =
|
|
49
|
-
`<skill name="${escapeXml(name)}">`,
|
|
50
|
-
skill.entrypoint,
|
|
51
|
-
args ? `\n<skill-args>\n${args}\n</skill-args>` : "",
|
|
52
|
-
`</skill>`,
|
|
53
|
-
].join("\n");
|
|
53
|
+
const prompt = renderSkillPrompt(skill, args);
|
|
54
54
|
return {
|
|
55
55
|
ok: true,
|
|
56
56
|
output: {
|
|
@@ -59,6 +59,7 @@ export function createSkillTool(catalog) {
|
|
|
59
59
|
allowed_tools: skill.allowedTools ?? [],
|
|
60
60
|
model: skill.model,
|
|
61
61
|
effort: skill.effort,
|
|
62
|
+
descriptor: summarizeSkill(skill),
|
|
62
63
|
},
|
|
63
64
|
newMessages: [
|
|
64
65
|
{
|
|
@@ -73,6 +74,13 @@ export function createSkillTool(catalog) {
|
|
|
73
74
|
...context.options,
|
|
74
75
|
mainLoopModel: skill.model ?? context.options?.mainLoopModel,
|
|
75
76
|
thinkingConfig: skill.effort ? { effort: skill.effort } : context.options?.thinkingConfig,
|
|
77
|
+
activeSkill: {
|
|
78
|
+
name,
|
|
79
|
+
allowedTools: [...(skill.allowedTools ?? [])],
|
|
80
|
+
model: skill.model,
|
|
81
|
+
effort: skill.effort,
|
|
82
|
+
source: skill.source,
|
|
83
|
+
},
|
|
76
84
|
},
|
|
77
85
|
}),
|
|
78
86
|
};
|
|
@@ -83,7 +91,7 @@ export class InMemorySkillCatalog {
|
|
|
83
91
|
skills = new Map();
|
|
84
92
|
constructor(skills = []) {
|
|
85
93
|
for (const skill of skills)
|
|
86
|
-
this.skills.set(skill.name, skill);
|
|
94
|
+
this.skills.set(requireSkillName(skill.name), normalizeSkillDescriptor(skill, { requireEntrypoint: true }));
|
|
87
95
|
}
|
|
88
96
|
async list() {
|
|
89
97
|
return [...this.skills.values()].sort((left, right) => left.name.localeCompare(right.name));
|
|
@@ -91,11 +99,162 @@ export class InMemorySkillCatalog {
|
|
|
91
99
|
async get(name) {
|
|
92
100
|
return this.skills.get(normalizeSkillName(name) ?? name);
|
|
93
101
|
}
|
|
102
|
+
async create(skill, options = {}) {
|
|
103
|
+
const normalized = normalizeSkillDescriptor(skill, { requireEntrypoint: true });
|
|
104
|
+
if (!options.overwrite && this.skills.has(normalized.name))
|
|
105
|
+
throw new Error(`Skill already exists: ${normalized.name}`);
|
|
106
|
+
const now = new Date().toISOString();
|
|
107
|
+
const stored = {
|
|
108
|
+
...normalized,
|
|
109
|
+
source: normalized.source ?? { kind: "memory" },
|
|
110
|
+
createdAt: normalized.createdAt ?? now,
|
|
111
|
+
updatedAt: now,
|
|
112
|
+
};
|
|
113
|
+
this.skills.set(stored.name, stored);
|
|
114
|
+
return stored;
|
|
115
|
+
}
|
|
116
|
+
async update(name, patch) {
|
|
117
|
+
const normalizedName = requireSkillName(name);
|
|
118
|
+
const current = this.skills.get(normalizedName);
|
|
119
|
+
if (!current)
|
|
120
|
+
throw new Error(`Unknown skill: ${normalizedName}`);
|
|
121
|
+
const updated = normalizeSkillDescriptor({ ...current, ...patch, name: normalizedName }, { requireEntrypoint: true });
|
|
122
|
+
const stored = { ...updated, createdAt: current.createdAt, source: current.source, updatedAt: new Date().toISOString() };
|
|
123
|
+
this.skills.set(normalizedName, stored);
|
|
124
|
+
return stored;
|
|
125
|
+
}
|
|
126
|
+
async delete(name) {
|
|
127
|
+
return this.skills.delete(requireSkillName(name));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
export function validateSkillDescriptor(input, options = {}) {
|
|
131
|
+
const issues = [];
|
|
132
|
+
if (!input || typeof input !== "object" || Array.isArray(input)) {
|
|
133
|
+
return { ok: false, issues: [{ path: "skill", message: "Skill descriptor must be an object" }] };
|
|
134
|
+
}
|
|
135
|
+
const value = input;
|
|
136
|
+
const name = normalizeSkillName(value.name);
|
|
137
|
+
if (!name)
|
|
138
|
+
issues.push({ path: "name", message: "Skill name is required" });
|
|
139
|
+
else if (!isValidSkillName(name))
|
|
140
|
+
issues.push({ path: "name", message: "Skill name may contain letters, numbers, dot, underscore, or dash only" });
|
|
141
|
+
if (!value.description?.trim())
|
|
142
|
+
issues.push({ path: "description", message: "Skill description is required" });
|
|
143
|
+
if (options.requireEntrypoint !== false && !value.entrypoint?.trim())
|
|
144
|
+
issues.push({ path: "entrypoint", message: "Skill entrypoint is required" });
|
|
145
|
+
if (value.execution && value.execution !== "inline" && value.execution !== "fork")
|
|
146
|
+
issues.push({ path: "execution", message: "Skill execution must be inline or fork" });
|
|
147
|
+
if (value.effort && !["minimal", "low", "medium", "high"].includes(value.effort))
|
|
148
|
+
issues.push({ path: "effort", message: "Skill effort is invalid" });
|
|
149
|
+
if (value.enabled === false && !options.allowDisabled)
|
|
150
|
+
issues.push({ path: "enabled", message: "Skill is disabled" });
|
|
151
|
+
if (value.allowedTools && !Array.isArray(value.allowedTools))
|
|
152
|
+
issues.push({ path: "allowedTools", message: "allowedTools must be an array" });
|
|
153
|
+
if (value.tags && !Array.isArray(value.tags))
|
|
154
|
+
issues.push({ path: "tags", message: "tags must be an array" });
|
|
155
|
+
if (issues.length)
|
|
156
|
+
return { ok: false, issues };
|
|
157
|
+
return { ok: true, value: normalizeSkillDescriptor(value, options), issues: [] };
|
|
94
158
|
}
|
|
95
|
-
function
|
|
159
|
+
export function normalizeSkillDescriptor(skill, options = {}) {
|
|
160
|
+
const validation = validateSkillDescriptorShallow(skill, options);
|
|
161
|
+
if (validation.length)
|
|
162
|
+
throw new Error(validation.map((issue) => `${issue.path}: ${issue.message}`).join("; "));
|
|
163
|
+
return {
|
|
164
|
+
...skill,
|
|
165
|
+
name: requireSkillName(skill.name),
|
|
166
|
+
description: skill.description.trim(),
|
|
167
|
+
entrypoint: (skill.entrypoint ?? "").trim(),
|
|
168
|
+
execution: skill.execution ?? "inline",
|
|
169
|
+
allowedTools: normalizeStringList(skill.allowedTools),
|
|
170
|
+
tags: normalizeStringList(skill.tags),
|
|
171
|
+
enabled: skill.enabled ?? true,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
export function normalizeSkillName(value) {
|
|
96
175
|
const normalized = value?.trim().replace(/^\/+/, "");
|
|
97
176
|
return normalized || undefined;
|
|
98
177
|
}
|
|
178
|
+
export function isValidSkillName(name) {
|
|
179
|
+
return /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/.test(name) && !name.includes("..") && !/[\\/]/.test(name);
|
|
180
|
+
}
|
|
181
|
+
export function requireSkillName(value) {
|
|
182
|
+
const name = normalizeSkillName(value);
|
|
183
|
+
if (!name || !isValidSkillName(name))
|
|
184
|
+
throw new Error(`Invalid skill name: ${value ?? "<empty>"}`);
|
|
185
|
+
return name;
|
|
186
|
+
}
|
|
187
|
+
export function renderSkillPrompt(skill, args = "") {
|
|
188
|
+
return [
|
|
189
|
+
`<skill name="${escapeXml(skill.name)}">`,
|
|
190
|
+
skill.entrypoint,
|
|
191
|
+
args ? `\n<skill-args>\n${args}\n</skill-args>` : "",
|
|
192
|
+
`</skill>`,
|
|
193
|
+
].join("\n");
|
|
194
|
+
}
|
|
195
|
+
export function summarizeSkill(skill) {
|
|
196
|
+
return {
|
|
197
|
+
name: skill.name,
|
|
198
|
+
title: skill.title,
|
|
199
|
+
description: skill.description,
|
|
200
|
+
version: skill.version,
|
|
201
|
+
execution: skill.execution,
|
|
202
|
+
tags: skill.tags,
|
|
203
|
+
allowedTools: skill.allowedTools,
|
|
204
|
+
model: skill.model,
|
|
205
|
+
effort: skill.effort,
|
|
206
|
+
enabled: skill.enabled !== false,
|
|
207
|
+
trustLevel: skill.trustLevel,
|
|
208
|
+
source: skill.source,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
export function createSkillAwareCanUseTool(catalog, delegate, options = {}) {
|
|
212
|
+
return async (toolUse, context) => {
|
|
213
|
+
const delegated = delegate ? await delegate(toolUse, context) : { allowed: true };
|
|
214
|
+
const delegatedAllowed = typeof delegated === "boolean" ? delegated : delegated.allowed;
|
|
215
|
+
if (!delegatedAllowed)
|
|
216
|
+
return delegated;
|
|
217
|
+
const activeSkill = context.options?.activeSkill;
|
|
218
|
+
if (!activeSkill || options.enforceAllowedTools === false)
|
|
219
|
+
return delegated;
|
|
220
|
+
const descriptor = await catalog.get(activeSkill.name);
|
|
221
|
+
const allowedTools = descriptor?.allowedTools ?? activeSkill.allowedTools;
|
|
222
|
+
if (!allowedTools?.length || allowedTools.includes("*"))
|
|
223
|
+
return delegated;
|
|
224
|
+
const tool = context.tools.get(toolUse.name) ?? context.tools.getByAlias?.(toolUse.name);
|
|
225
|
+
const canonicalName = tool?.name ?? toolUse.name;
|
|
226
|
+
if (canonicalName === "skill" || allowedTools.includes(canonicalName) || allowedTools.includes(toolUse.name))
|
|
227
|
+
return delegated;
|
|
228
|
+
return { allowed: false, reason: `Tool ${canonicalName} is not allowed while skill ${activeSkill.name} is active` };
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
function buildSkillToolDescription(options) {
|
|
232
|
+
const hint = options.exposeCatalogHint === false ? "" : " Use skill_list to discover available skills and skill_read to inspect details.";
|
|
233
|
+
return `Load a reusable prompt workflow. Inline skills inject prompt messages into the next model turn; fork skills request child-agent execution.${hint}`;
|
|
234
|
+
}
|
|
235
|
+
function validateSkillDescriptorShallow(skill, options) {
|
|
236
|
+
const issues = [];
|
|
237
|
+
const name = normalizeSkillName(skill.name);
|
|
238
|
+
if (!name)
|
|
239
|
+
issues.push({ path: "name", message: "Skill name is required" });
|
|
240
|
+
else if (!isValidSkillName(name))
|
|
241
|
+
issues.push({ path: "name", message: "Skill name may contain letters, numbers, dot, underscore, or dash only" });
|
|
242
|
+
if (!skill.description?.trim())
|
|
243
|
+
issues.push({ path: "description", message: "Skill description is required" });
|
|
244
|
+
if (options.requireEntrypoint !== false && !skill.entrypoint?.trim())
|
|
245
|
+
issues.push({ path: "entrypoint", message: "Skill entrypoint is required" });
|
|
246
|
+
if (skill.execution && skill.execution !== "inline" && skill.execution !== "fork")
|
|
247
|
+
issues.push({ path: "execution", message: "Skill execution must be inline or fork" });
|
|
248
|
+
if (skill.effort && !["minimal", "low", "medium", "high"].includes(skill.effort))
|
|
249
|
+
issues.push({ path: "effort", message: "Skill effort is invalid" });
|
|
250
|
+
return issues;
|
|
251
|
+
}
|
|
252
|
+
function normalizeStringList(values) {
|
|
253
|
+
if (!values)
|
|
254
|
+
return undefined;
|
|
255
|
+
const normalized = [...new Set(values.map((value) => value.trim()).filter(Boolean))];
|
|
256
|
+
return normalized.length ? normalized : undefined;
|
|
257
|
+
}
|
|
99
258
|
function renderSkillArgs(value) {
|
|
100
259
|
if (value === undefined || value === null)
|
|
101
260
|
return "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-tool.js","sourceRoot":"","sources":["../../src/skills/skill-tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skill-tool.js","sourceRoot":"","sources":["../../src/skills/skill-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
1
4
|
import { InMemoryAppState } from "../app/app-state.js";
|
|
2
5
|
import { ToolRegistry } from "../tools/registry.js";
|
|
3
6
|
import { runToolUse } from "../tools/run-tool-use.js";
|
|
4
|
-
import {
|
|
7
|
+
import { FileSystemSkillCatalog, parseSkillMarkdown } from "./skill-filesystem.js";
|
|
8
|
+
import { createSkillCreateTool, createSkillListTool, createSkillReadTool, createSkillValidateTool } from "./skill-management-tools.js";
|
|
9
|
+
import { createSkillAwareCanUseTool, createSkillTool, InMemorySkillCatalog } from "./skill-tool.js";
|
|
5
10
|
async function main() {
|
|
6
11
|
const catalog = new InMemorySkillCatalog([
|
|
7
12
|
{
|
|
@@ -22,6 +27,9 @@ async function main() {
|
|
|
22
27
|
]);
|
|
23
28
|
const tools = new ToolRegistry();
|
|
24
29
|
tools.register(createSkillTool(catalog));
|
|
30
|
+
tools.register(createSkillListTool(catalog));
|
|
31
|
+
tools.register(createSkillReadTool(catalog));
|
|
32
|
+
tools.register(createSkillValidateTool());
|
|
25
33
|
const context = {
|
|
26
34
|
agentId: "main",
|
|
27
35
|
tools,
|
|
@@ -43,13 +51,54 @@ async function main() {
|
|
|
43
51
|
name: "skill",
|
|
44
52
|
input: { skill: "missing" },
|
|
45
53
|
}, context);
|
|
54
|
+
const listed = await runToolUse({ id: "skill_list", name: "skill_list", input: {} }, context);
|
|
55
|
+
const read = await runToolUse({ id: "skill_read", name: "skill_read", input: { name: "review-plan", includeEntrypoint: true } }, context);
|
|
56
|
+
const root = await fs.mkdtemp(path.join(os.tmpdir(), "neo-skills-"));
|
|
57
|
+
await fs.mkdir(path.join(root, "summarize"), { recursive: true });
|
|
58
|
+
await fs.writeFile(path.join(root, "summarize", "SKILL.md"), `---\nname: summarize\ndescription: Summarize text\nallowed-tools:\n - read\ntags:\n - writing\n---\n\nSummarize the provided text into crisp bullets.\n`, "utf8");
|
|
59
|
+
const fsCatalog = new FileSystemSkillCatalog([root]);
|
|
60
|
+
const parsed = parseSkillMarkdown(`---\ndescription: Demo\n---\n\nDo demo work.\n`, "demo");
|
|
61
|
+
const fsSkill = await fsCatalog.get("summarize");
|
|
62
|
+
const createTool = createSkillCreateTool(fsCatalog, { requireApproval: false });
|
|
63
|
+
const fsTools = new ToolRegistry();
|
|
64
|
+
fsTools.register(createTool);
|
|
65
|
+
const fsContext = { agentId: "main", tools: fsTools, appState: new InMemoryAppState("main"), emit: () => undefined };
|
|
66
|
+
const created = await runToolUse({
|
|
67
|
+
id: "skill_create",
|
|
68
|
+
name: "skill_create",
|
|
69
|
+
input: {
|
|
70
|
+
skill: {
|
|
71
|
+
name: "generated-review",
|
|
72
|
+
description: "Generated review workflow",
|
|
73
|
+
entrypoint: "Review generated output and list risks.",
|
|
74
|
+
execution: "inline",
|
|
75
|
+
allowedTools: ["read"],
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
}, fsContext);
|
|
79
|
+
const createdSkill = await fsCatalog.get("generated-review");
|
|
80
|
+
const guard = createSkillAwareCanUseTool(catalog);
|
|
81
|
+
const allowedDecision = await guard({ id: "allowed", name: "plan", input: {} }, {
|
|
82
|
+
...context,
|
|
83
|
+
options: { activeSkill: { name: "review-plan", allowedTools: ["plan"] } },
|
|
84
|
+
});
|
|
85
|
+
const deniedDecision = await guard({ id: "denied", name: "exec", input: {} }, {
|
|
86
|
+
...context,
|
|
87
|
+
options: { activeSkill: { name: "review-plan", allowedTools: ["plan"] } },
|
|
88
|
+
});
|
|
46
89
|
const inlineResult = inline.find((update) => update.message.blocks.some((block) => block.type === "tool_result"));
|
|
47
90
|
const injected = inline.some((update) => update.message.metadata?.skill === "review-plan");
|
|
48
|
-
const contextUpdated = inline.some((update) => update.context?.options?.mainLoopModel === "gpt-5.5");
|
|
91
|
+
const contextUpdated = inline.some((update) => update.context?.options?.mainLoopModel === "gpt-5.5" && update.context.options.activeSkill?.name === "review-plan");
|
|
49
92
|
const forkRejected = fork.some((update) => update.message.blocks.some((block) => block.type === "tool_result" && !block.ok));
|
|
50
93
|
const missingRejected = missing.some((update) => update.message.blocks.some((block) => block.type === "tool_result" && !block.ok));
|
|
51
|
-
const
|
|
52
|
-
|
|
94
|
+
const listWorked = listed.some((update) => update.message.blocks.some((block) => block.type === "tool_result" && block.ok));
|
|
95
|
+
const readWorked = read.some((update) => update.message.blocks.some((block) => block.type === "tool_result" && block.ok));
|
|
96
|
+
const filesystemWorked = fsSkill?.name === "summarize" && parsed.name === "demo";
|
|
97
|
+
const createWorked = createdSkill?.name === "generated-review" && created.some((update) => update.message.metadata?.skillManagement === "created");
|
|
98
|
+
const guardWorked = (typeof allowedDecision === "boolean" ? allowedDecision : allowedDecision.allowed) === true &&
|
|
99
|
+
typeof deniedDecision !== "boolean" && deniedDecision.allowed === false;
|
|
100
|
+
const ok = Boolean(inlineResult && injected && contextUpdated && forkRejected && missingRejected && listWorked && readWorked && filesystemWorked && createWorked && guardWorked);
|
|
101
|
+
console.log(JSON.stringify({ ok, injected, contextUpdated, forkRejected, missingRejected, listWorked, readWorked, filesystemWorked, createWorked, guardWorked }, null, 2));
|
|
53
102
|
if (!ok)
|
|
54
103
|
process.exitCode = 1;
|
|
55
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smoke-skills.js","sourceRoot":"","sources":["../../src/skills/smoke-skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"smoke-skills.js","sourceRoot":"","sources":["../../src/skills/smoke-skills.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/tool.d.ts
CHANGED
|
@@ -58,12 +58,20 @@ export interface ToolRegistryLike {
|
|
|
58
58
|
get(name: string): Tool | undefined;
|
|
59
59
|
getByAlias?(name: string): Tool | undefined;
|
|
60
60
|
}
|
|
61
|
+
export interface ActiveSkillRuntimeState {
|
|
62
|
+
name: string;
|
|
63
|
+
allowedTools?: readonly string[];
|
|
64
|
+
model?: string;
|
|
65
|
+
effort?: string;
|
|
66
|
+
source?: unknown;
|
|
67
|
+
}
|
|
61
68
|
export interface ToolRuntimeOptions {
|
|
62
69
|
debug?: boolean;
|
|
63
70
|
verbose?: boolean;
|
|
64
71
|
mainLoopModel?: string;
|
|
65
72
|
tools?: ToolRegistryLike;
|
|
66
73
|
thinkingConfig?: unknown;
|
|
74
|
+
activeSkill?: ActiveSkillRuntimeState;
|
|
67
75
|
isNonInteractiveSession?: boolean;
|
|
68
76
|
refreshTools?: () => Promise<void> | void;
|
|
69
77
|
}
|
package/dist/tools/tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/tools/tool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/tools/tool.ts"],"names":[],"mappings":"AAgJA,MAAM,UAAU,sBAAsB,CAAC,IAAU,EAAE,OAAwB;IACzE,OAAO,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1G,CAAC"}
|
package/dist/web/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import fs from "node:fs/promises";
|
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { existsSync, readFileSync } from "node:fs";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
|
+
import { createRequire } from "node:module";
|
|
7
8
|
import { QueryEngine } from "../core/query-engine.js";
|
|
8
9
|
import { InMemoryAppState } from "../app/app-state.js";
|
|
9
10
|
import { loadDefaultDotEnvFiles } from "../model/env.js";
|
|
@@ -26,6 +27,12 @@ import { writeSessionMarkdownExport } from "../session/session-export.js";
|
|
|
26
27
|
import { WEB_HTML } from "./html.js";
|
|
27
28
|
import { appTips, formatTipLine, initialTipIndex, tipAt } from "../tips.js";
|
|
28
29
|
import { openDirectory } from "../open-directory.js";
|
|
30
|
+
const require = createRequire(import.meta.url);
|
|
31
|
+
const markedPackageDir = path.dirname(require.resolve("marked/package.json"));
|
|
32
|
+
const highlightPackageDir = path.dirname(require.resolve("@highlightjs/cdn-assets/package.json"));
|
|
33
|
+
const markedAssetPath = path.join(markedPackageDir, "lib", "marked.esm.js");
|
|
34
|
+
const highlightAssetPath = path.join(highlightPackageDir, "highlight.min.js");
|
|
35
|
+
const highlightThemeAssetPath = path.join(highlightPackageDir, "styles", "atom-one-dark.min.css");
|
|
29
36
|
class SessionUsageTracker {
|
|
30
37
|
totals = emptyUsageTotals();
|
|
31
38
|
lastUsage;
|
|
@@ -780,11 +787,11 @@ async function route(req, res, repl) {
|
|
|
780
787
|
if (req.method === "GET" && url.pathname === "/")
|
|
781
788
|
return sendHtml(res, WEB_HTML);
|
|
782
789
|
if (req.method === "GET" && url.pathname === "/vendor/marked.esm.js")
|
|
783
|
-
return sendFile(res,
|
|
790
|
+
return sendFile(res, markedAssetPath, "text/javascript; charset=utf-8");
|
|
784
791
|
if (req.method === "GET" && url.pathname === "/vendor/highlight.min.js")
|
|
785
|
-
return sendFile(res,
|
|
792
|
+
return sendFile(res, highlightAssetPath, "text/javascript; charset=utf-8");
|
|
786
793
|
if (req.method === "GET" && url.pathname === "/vendor/highlight-theme.css")
|
|
787
|
-
return sendFile(res,
|
|
794
|
+
return sendFile(res, highlightThemeAssetPath, "text/css; charset=utf-8");
|
|
788
795
|
if (req.method === "GET" && url.pathname === "/events")
|
|
789
796
|
return repl.subscribe(res);
|
|
790
797
|
if (req.method === "GET" && url.pathname === "/api/state")
|