@zenobius/opencode-skillful 1.2.1-next.1 → 1.2.1-next.2
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/dist/index.js +206 -28
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -22994,14 +22994,13 @@ async function getPluginConfig(ctx) {
|
|
|
22994
22994
|
|
|
22995
22995
|
// src/lib/renderers/JsonPromptRenderer.ts
|
|
22996
22996
|
var createJsonPromptRenderer = () => {
|
|
22997
|
-
const
|
|
22998
|
-
|
|
22999
|
-
|
|
23000
|
-
|
|
23001
|
-
|
|
23002
|
-
format,
|
|
23003
|
-
render
|
|
22997
|
+
const renderer = {
|
|
22998
|
+
format: "json",
|
|
22999
|
+
render(args) {
|
|
23000
|
+
return JSON.stringify({ [args.type]: args.data }, null, 2);
|
|
23001
|
+
}
|
|
23004
23002
|
};
|
|
23003
|
+
return renderer;
|
|
23005
23004
|
};
|
|
23006
23005
|
|
|
23007
23006
|
// src/lib/xml.ts
|
|
@@ -23042,21 +23041,174 @@ function jsonToXml(json2, rootElement = "root") {
|
|
|
23042
23041
|
return xml;
|
|
23043
23042
|
}
|
|
23044
23043
|
|
|
23044
|
+
// src/lib/renderers/resourceMapToArray.ts
|
|
23045
|
+
var resourceMapToArray = (resources) => {
|
|
23046
|
+
return Array.from(resources.entries()).map(([relativePath, data]) => ({
|
|
23047
|
+
relativePath,
|
|
23048
|
+
...data
|
|
23049
|
+
}));
|
|
23050
|
+
};
|
|
23051
|
+
|
|
23045
23052
|
// src/lib/renderers/XmlPromptRenderer.ts
|
|
23046
23053
|
var createXmlPromptRenderer = () => {
|
|
23047
|
-
const
|
|
23048
|
-
|
|
23049
|
-
|
|
23054
|
+
const prepareSkill = (skill) => {
|
|
23055
|
+
return {
|
|
23056
|
+
...skill,
|
|
23057
|
+
references: resourceMapToArray(skill.references),
|
|
23058
|
+
scripts: resourceMapToArray(skill.scripts),
|
|
23059
|
+
assets: resourceMapToArray(skill.assets)
|
|
23060
|
+
};
|
|
23050
23061
|
};
|
|
23051
|
-
|
|
23052
|
-
|
|
23053
|
-
|
|
23062
|
+
const prepareResource = (resource) => {
|
|
23063
|
+
return resource;
|
|
23064
|
+
};
|
|
23065
|
+
const prepareSearchResult = (result) => {
|
|
23066
|
+
return result;
|
|
23054
23067
|
};
|
|
23068
|
+
const renderer = {
|
|
23069
|
+
format: "xml",
|
|
23070
|
+
render(args) {
|
|
23071
|
+
const rootElement = args.type || "root";
|
|
23072
|
+
if (args.type === "Skill") {
|
|
23073
|
+
return jsonToXml(prepareSkill(args.data), rootElement);
|
|
23074
|
+
}
|
|
23075
|
+
if (args.type === "SkillResource") {
|
|
23076
|
+
return jsonToXml(prepareResource(args.data), rootElement);
|
|
23077
|
+
}
|
|
23078
|
+
if (args.type === "SkillSearchResults") {
|
|
23079
|
+
return jsonToXml(prepareSearchResult(args.data), rootElement);
|
|
23080
|
+
}
|
|
23081
|
+
return jsonToXml({}, rootElement);
|
|
23082
|
+
}
|
|
23083
|
+
};
|
|
23084
|
+
return renderer;
|
|
23055
23085
|
};
|
|
23056
23086
|
|
|
23087
|
+
// node_modules/dedent/dist/dedent.mjs
|
|
23088
|
+
function ownKeys(object2, enumerableOnly) {
|
|
23089
|
+
var keys = Object.keys(object2);
|
|
23090
|
+
if (Object.getOwnPropertySymbols) {
|
|
23091
|
+
var symbols = Object.getOwnPropertySymbols(object2);
|
|
23092
|
+
enumerableOnly && (symbols = symbols.filter(function(sym) {
|
|
23093
|
+
return Object.getOwnPropertyDescriptor(object2, sym).enumerable;
|
|
23094
|
+
})), keys.push.apply(keys, symbols);
|
|
23095
|
+
}
|
|
23096
|
+
return keys;
|
|
23097
|
+
}
|
|
23098
|
+
function _objectSpread(target) {
|
|
23099
|
+
for (var i = 1;i < arguments.length; i++) {
|
|
23100
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
23101
|
+
i % 2 ? ownKeys(Object(source), true).forEach(function(key) {
|
|
23102
|
+
_defineProperty(target, key, source[key]);
|
|
23103
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {
|
|
23104
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
23105
|
+
});
|
|
23106
|
+
}
|
|
23107
|
+
return target;
|
|
23108
|
+
}
|
|
23109
|
+
function _defineProperty(obj, key, value) {
|
|
23110
|
+
key = _toPropertyKey(key);
|
|
23111
|
+
if (key in obj) {
|
|
23112
|
+
Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true });
|
|
23113
|
+
} else {
|
|
23114
|
+
obj[key] = value;
|
|
23115
|
+
}
|
|
23116
|
+
return obj;
|
|
23117
|
+
}
|
|
23118
|
+
function _toPropertyKey(arg) {
|
|
23119
|
+
var key = _toPrimitive(arg, "string");
|
|
23120
|
+
return typeof key === "symbol" ? key : String(key);
|
|
23121
|
+
}
|
|
23122
|
+
function _toPrimitive(input, hint) {
|
|
23123
|
+
if (typeof input !== "object" || input === null)
|
|
23124
|
+
return input;
|
|
23125
|
+
var prim = input[Symbol.toPrimitive];
|
|
23126
|
+
if (prim !== undefined) {
|
|
23127
|
+
var res = prim.call(input, hint || "default");
|
|
23128
|
+
if (typeof res !== "object")
|
|
23129
|
+
return res;
|
|
23130
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
23131
|
+
}
|
|
23132
|
+
return (hint === "string" ? String : Number)(input);
|
|
23133
|
+
}
|
|
23134
|
+
var dedent = createDedent({});
|
|
23135
|
+
var dedent_default = dedent;
|
|
23136
|
+
function createDedent(options3) {
|
|
23137
|
+
dedent2.withOptions = (newOptions) => createDedent(_objectSpread(_objectSpread({}, options3), newOptions));
|
|
23138
|
+
return dedent2;
|
|
23139
|
+
function dedent2(strings, ...values) {
|
|
23140
|
+
const raw = typeof strings === "string" ? [strings] : strings.raw;
|
|
23141
|
+
const {
|
|
23142
|
+
alignValues = false,
|
|
23143
|
+
escapeSpecialCharacters = Array.isArray(strings),
|
|
23144
|
+
trimWhitespace = true
|
|
23145
|
+
} = options3;
|
|
23146
|
+
let result = "";
|
|
23147
|
+
for (let i = 0;i < raw.length; i++) {
|
|
23148
|
+
let next = raw[i];
|
|
23149
|
+
if (escapeSpecialCharacters) {
|
|
23150
|
+
next = next.replace(/\\\n[ \t]*/g, "").replace(/\\`/g, "`").replace(/\\\$/g, "$").replace(/\\\{/g, "{");
|
|
23151
|
+
}
|
|
23152
|
+
result += next;
|
|
23153
|
+
if (i < values.length) {
|
|
23154
|
+
const value = alignValues ? alignValue(values[i], result) : values[i];
|
|
23155
|
+
result += value;
|
|
23156
|
+
}
|
|
23157
|
+
}
|
|
23158
|
+
const lines = result.split(`
|
|
23159
|
+
`);
|
|
23160
|
+
let mindent = null;
|
|
23161
|
+
for (const l of lines) {
|
|
23162
|
+
const m = l.match(/^(\s+)\S+/);
|
|
23163
|
+
if (m) {
|
|
23164
|
+
const indent = m[1].length;
|
|
23165
|
+
if (!mindent) {
|
|
23166
|
+
mindent = indent;
|
|
23167
|
+
} else {
|
|
23168
|
+
mindent = Math.min(mindent, indent);
|
|
23169
|
+
}
|
|
23170
|
+
}
|
|
23171
|
+
}
|
|
23172
|
+
if (mindent !== null) {
|
|
23173
|
+
const m = mindent;
|
|
23174
|
+
result = lines.map((l) => l[0] === " " || l[0] === "\t" ? l.slice(m) : l).join(`
|
|
23175
|
+
`);
|
|
23176
|
+
}
|
|
23177
|
+
if (trimWhitespace) {
|
|
23178
|
+
result = result.trim();
|
|
23179
|
+
}
|
|
23180
|
+
if (escapeSpecialCharacters) {
|
|
23181
|
+
result = result.replace(/\\n/g, `
|
|
23182
|
+
`);
|
|
23183
|
+
}
|
|
23184
|
+
if (typeof Bun !== "undefined") {
|
|
23185
|
+
result = result.replace(/\\u(?:\{([\da-fA-F]{1,6})\}|([\da-fA-F]{4}))/g, (_, braced, unbraced) => {
|
|
23186
|
+
var _ref;
|
|
23187
|
+
const hex3 = (_ref = braced !== null && braced !== undefined ? braced : unbraced) !== null && _ref !== undefined ? _ref : "";
|
|
23188
|
+
return String.fromCodePoint(parseInt(hex3, 16));
|
|
23189
|
+
});
|
|
23190
|
+
}
|
|
23191
|
+
return result;
|
|
23192
|
+
}
|
|
23193
|
+
}
|
|
23194
|
+
function alignValue(value, precedingText) {
|
|
23195
|
+
if (typeof value !== "string" || !value.includes(`
|
|
23196
|
+
`)) {
|
|
23197
|
+
return value;
|
|
23198
|
+
}
|
|
23199
|
+
const currentLine = precedingText.slice(precedingText.lastIndexOf(`
|
|
23200
|
+
`) + 1);
|
|
23201
|
+
const indentMatch = currentLine.match(/^(\s+)/);
|
|
23202
|
+
if (indentMatch) {
|
|
23203
|
+
const indent = indentMatch[1];
|
|
23204
|
+
return value.replace(/\n/g, `
|
|
23205
|
+
${indent}`);
|
|
23206
|
+
}
|
|
23207
|
+
return value;
|
|
23208
|
+
}
|
|
23209
|
+
|
|
23057
23210
|
// src/lib/renderers/MdPromptRenderer.ts
|
|
23058
23211
|
var createMdPromptRenderer = () => {
|
|
23059
|
-
const format = "md";
|
|
23060
23212
|
const renderObject = (obj, headingLevel, indentLevel = 0) => {
|
|
23061
23213
|
const entries = Object.entries(obj);
|
|
23062
23214
|
let output = "";
|
|
@@ -23122,25 +23274,51 @@ var createMdPromptRenderer = () => {
|
|
|
23122
23274
|
const htmlEscape = (value) => {
|
|
23123
23275
|
return value.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
23124
23276
|
};
|
|
23125
|
-
const
|
|
23126
|
-
|
|
23127
|
-
|
|
23277
|
+
const renderSkill = (skill) => {
|
|
23278
|
+
return dedent_default`
|
|
23279
|
+
# ${skill.name}
|
|
23280
|
+
|
|
23281
|
+
${skill.content}
|
|
23128
23282
|
|
|
23129
|
-
|
|
23283
|
+
## Metadata
|
|
23130
23284
|
|
|
23131
|
-
${
|
|
23285
|
+
${skill.metadata ? renderObject(skill.metadata, 3) : ""}
|
|
23286
|
+
|
|
23287
|
+
## References
|
|
23132
23288
|
|
|
23133
|
-
|
|
23289
|
+
${skill.references ? renderArray(resourceMapToArray(skill.references), 1) : ""}
|
|
23134
23290
|
|
|
23135
|
-
|
|
23291
|
+
## Scripts
|
|
23136
23292
|
|
|
23137
|
-
|
|
23293
|
+
${skill.scripts ? renderArray(resourceMapToArray(skill.scripts), 1) : ""}
|
|
23294
|
+
|
|
23295
|
+
## Assets
|
|
23296
|
+
|
|
23297
|
+
${skill.assets ? renderArray(resourceMapToArray(skill.assets), 1) : ""}
|
|
23138
23298
|
`;
|
|
23139
23299
|
};
|
|
23140
|
-
|
|
23141
|
-
|
|
23142
|
-
|
|
23300
|
+
const renderResource = (resource) => {
|
|
23301
|
+
return renderObject(resource, 3);
|
|
23302
|
+
};
|
|
23303
|
+
const renderSearchResult = (result) => {
|
|
23304
|
+
return renderObject(result, 3);
|
|
23305
|
+
};
|
|
23306
|
+
const renderer = {
|
|
23307
|
+
format: "md",
|
|
23308
|
+
render(args) {
|
|
23309
|
+
if (args.type === "Skill") {
|
|
23310
|
+
return renderSkill(args.data);
|
|
23311
|
+
}
|
|
23312
|
+
if (args.type === "SkillResource") {
|
|
23313
|
+
return renderResource(args.data);
|
|
23314
|
+
}
|
|
23315
|
+
if (args.type === "SkillSearchResults") {
|
|
23316
|
+
return renderSearchResult(args.data);
|
|
23317
|
+
}
|
|
23318
|
+
return renderObject({}, 3);
|
|
23319
|
+
}
|
|
23143
23320
|
};
|
|
23321
|
+
return renderer;
|
|
23144
23322
|
};
|
|
23145
23323
|
|
|
23146
23324
|
// src/lib/createPromptRenderer.ts
|
|
@@ -23272,7 +23450,7 @@ var SkillsPlugin = async (ctx) => {
|
|
|
23272
23450
|
const renderer = promptRenderer.getFormatter(format);
|
|
23273
23451
|
const results = await api2.loadSkill(args.skill_names);
|
|
23274
23452
|
for await (const skill of results.loaded) {
|
|
23275
|
-
await sendPrompt(renderer(skill, "Skill"), {
|
|
23453
|
+
await sendPrompt(renderer({ data: skill, type: "Skill" }), {
|
|
23276
23454
|
sessionId: toolCtx.sessionID
|
|
23277
23455
|
});
|
|
23278
23456
|
}
|
|
@@ -23298,7 +23476,7 @@ var SkillsPlugin = async (ctx) => {
|
|
|
23298
23476
|
});
|
|
23299
23477
|
const renderer = promptRenderer.getFormatter(format);
|
|
23300
23478
|
const results = await api2.findSkills(args);
|
|
23301
|
-
const output = renderer(results, "SkillSearchResults");
|
|
23479
|
+
const output = renderer({ data: results, type: "SkillSearchResults" });
|
|
23302
23480
|
return output;
|
|
23303
23481
|
}
|
|
23304
23482
|
}),
|
|
@@ -23322,7 +23500,7 @@ var SkillsPlugin = async (ctx) => {
|
|
|
23322
23500
|
if (!result.injection) {
|
|
23323
23501
|
throw new Error("Failed to read resource");
|
|
23324
23502
|
}
|
|
23325
|
-
await sendPrompt(renderer(result.injection, "
|
|
23503
|
+
await sendPrompt(renderer({ data: result.injection, type: "SkillResource" }), {
|
|
23326
23504
|
sessionId: toolCtx.sessionID
|
|
23327
23505
|
});
|
|
23328
23506
|
return JSON.stringify({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zenobius/opencode-skillful",
|
|
3
|
-
"version": "1.2.1-next.
|
|
3
|
+
"version": "1.2.1-next.2",
|
|
4
4
|
"description": "OpenCode Skills Plugin - Anthropic Agent Skills Specification implementation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "src/index.ts",
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@opencode-ai/plugin": "1.0.85",
|
|
23
23
|
"bunfig": "^0.15.6",
|
|
24
|
+
"dedent": "^1.7.1",
|
|
24
25
|
"env-paths": "^3.0.0",
|
|
25
26
|
"gray-matter": "^4.0.3",
|
|
26
27
|
"mime": "^4.1.0",
|