ai-jue-adapter-hermes 0.2.0 → 0.2.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/capabilities/layout.d.ts +13 -6
- package/dist/capabilities/layout.js +23 -1
- package/dist/capabilities/layout.js.map +1 -1
- package/dist/capabilities/skill-plugin.d.ts +12 -0
- package/dist/capabilities/skill-plugin.js +135 -0
- package/dist/capabilities/skill-plugin.js.map +1 -0
- package/dist/confirm.d.ts +5 -6
- package/dist/confirm.js +42 -6
- package/dist/confirm.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/write.d.ts +11 -4
- package/dist/write.js +16 -4
- package/dist/write.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* targets). Three-level skills shape (`<workspace>/skills/<cat>/<name>/SKILL.md`)
|
|
6
|
-
* confirmed by reading the real cwr:/d/devuser/.hermes/skills tree.
|
|
2
|
+
* Hermes Artifact kinds (RFC-0002):
|
|
3
|
+
* - `workspace`: MEMORY.md / skills/<cat>/<name> / config.yaml / cron — JUE-303
|
|
4
|
+
* - `skill-plugin`: thin plugin.yaml + register_skill initializer + flat skills
|
|
7
5
|
*/
|
|
8
|
-
export type HermesArtifactKind = "workspace";
|
|
6
|
+
export type HermesArtifactKind = "workspace" | "skill-plugin";
|
|
9
7
|
export declare function isWorkspaceLayout(root: string): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Generated skill-plugin marker: the `__init__.py` we write is a fixed
|
|
10
|
+
* template whose docstring carries this fingerprint. A plain Python package
|
|
11
|
+
* (`__init__.py` is a near-universal file) with a coincidental
|
|
12
|
+
* `plugin.yaml` must never be claimed as managed.
|
|
13
|
+
*/
|
|
14
|
+
export declare const MANAGED_INIT_MARKER = "Auto-generated by ai-jue";
|
|
15
|
+
/** Return a managed layout only when its marker is present. */
|
|
16
|
+
export declare function detectArtifactKind(root: string): HermesArtifactKind | undefined;
|
|
@@ -3,12 +3,34 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MANAGED_INIT_MARKER = void 0;
|
|
6
7
|
exports.isWorkspaceLayout = isWorkspaceLayout;
|
|
8
|
+
exports.detectArtifactKind = detectArtifactKind;
|
|
7
9
|
const fs_1 = __importDefault(require("fs"));
|
|
8
10
|
const path_1 = __importDefault(require("path"));
|
|
9
11
|
function isWorkspaceLayout(root) {
|
|
10
12
|
return (fs_1.default.existsSync(path_1.default.join(root, "config.yaml")) ||
|
|
11
13
|
fs_1.default.existsSync(path_1.default.join(root, "skills")) ||
|
|
12
|
-
fs_1.default.existsSync(path_1.default.join(root, "cron"))
|
|
14
|
+
fs_1.default.existsSync(path_1.default.join(root, "cron")) ||
|
|
15
|
+
fs_1.default.existsSync(path_1.default.join(root, "MEMORY.md")));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Generated skill-plugin marker: the `__init__.py` we write is a fixed
|
|
19
|
+
* template whose docstring carries this fingerprint. A plain Python package
|
|
20
|
+
* (`__init__.py` is a near-universal file) with a coincidental
|
|
21
|
+
* `plugin.yaml` must never be claimed as managed.
|
|
22
|
+
*/
|
|
23
|
+
exports.MANAGED_INIT_MARKER = "Auto-generated by ai-jue";
|
|
24
|
+
/** Return a managed layout only when its marker is present. */
|
|
25
|
+
function detectArtifactKind(root) {
|
|
26
|
+
const initPath = path_1.default.join(root, "__init__.py");
|
|
27
|
+
if (fs_1.default.existsSync(path_1.default.join(root, "plugin.yaml")) &&
|
|
28
|
+
fs_1.default.existsSync(initPath) &&
|
|
29
|
+
fs_1.default.readFileSync(initPath, "utf8").includes(exports.MANAGED_INIT_MARKER)) {
|
|
30
|
+
return "skill-plugin";
|
|
31
|
+
}
|
|
32
|
+
if (isWorkspaceLayout(root))
|
|
33
|
+
return "workspace";
|
|
34
|
+
return undefined;
|
|
13
35
|
}
|
|
14
36
|
//# sourceMappingURL=layout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/capabilities/layout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/capabilities/layout.ts"],"names":[],"mappings":";;;;;;AAUA,8CAOC;AAWD,gDAWC;AAvCD,4CAAoB;AACpB,gDAAwB;AASxB,SAAgB,iBAAiB,CAAC,IAAY;IAC5C,OAAO,CACL,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC7C,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxC,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAC5C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACU,QAAA,mBAAmB,GAAG,0BAA0B,CAAC;AAE9D,+DAA+D;AAC/D,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAChD,IACE,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC7C,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QACvB,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,2BAAmB,CAAC,EAC/D,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAO,WAAW,CAAC;IAChD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ArtifactChange, CanonicalDocument } from "ai-jue-core";
|
|
2
|
+
/**
|
|
3
|
+
* Thin Hermes skill-plugin (RFC-0002 Phase B):
|
|
4
|
+
* plugin.yaml + __init__.py (register_skill only) + flat skills/<name>/
|
|
5
|
+
*
|
|
6
|
+
* MCP / context stay on workspace apply — not packed here.
|
|
7
|
+
*/
|
|
8
|
+
export declare function writeSkillPlugin(canonical: CanonicalDocument, root: string, pluginManifest?: {
|
|
9
|
+
name: string;
|
|
10
|
+
version: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
}): ArtifactChange[];
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.writeSkillPlugin = writeSkillPlugin;
|
|
40
|
+
const fs_1 = __importDefault(require("fs"));
|
|
41
|
+
const path_1 = __importDefault(require("path"));
|
|
42
|
+
const yaml = __importStar(require("js-yaml"));
|
|
43
|
+
const ai_jue_core_1 = require("ai-jue-core");
|
|
44
|
+
const layout_1 = require("./layout");
|
|
45
|
+
const TARGET = "hermes";
|
|
46
|
+
const SAFE_SKILL_NAME = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;
|
|
47
|
+
function assertSafeSkillName(name) {
|
|
48
|
+
if (!SAFE_SKILL_NAME.test(name)) {
|
|
49
|
+
throw new Error(`Hermes skill-plugin name must be a safe single path segment: ${name}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const INIT_PY = `"""Auto-generated by ai-jue — registers bundled skills only (no tools)."""
|
|
53
|
+
from pathlib import Path
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def register(ctx):
|
|
57
|
+
skills_dir = Path(__file__).parent / "skills"
|
|
58
|
+
if not skills_dir.is_dir():
|
|
59
|
+
return
|
|
60
|
+
for child in sorted(skills_dir.iterdir()):
|
|
61
|
+
skill_md = child / "SKILL.md"
|
|
62
|
+
if child.is_dir() and skill_md.is_file():
|
|
63
|
+
ctx.register_skill(child.name, skill_md)
|
|
64
|
+
`;
|
|
65
|
+
function textChange(root, absolutePath, newContent) {
|
|
66
|
+
const exists = fs_1.default.existsSync(absolutePath);
|
|
67
|
+
const existing = exists ? fs_1.default.readFileSync(absolutePath, "utf8") : undefined;
|
|
68
|
+
if (existing === newContent)
|
|
69
|
+
return null;
|
|
70
|
+
return {
|
|
71
|
+
target: TARGET,
|
|
72
|
+
kind: exists ? "update" : "create",
|
|
73
|
+
ownership: "full",
|
|
74
|
+
scope: "project",
|
|
75
|
+
path: path_1.default.relative(root, absolutePath).split(path_1.default.sep).join("/"),
|
|
76
|
+
beforeHash: exists ? (0, ai_jue_core_1.hashArtifactContent)(existing) : null,
|
|
77
|
+
afterHash: (0, ai_jue_core_1.hashArtifactContent)(newContent),
|
|
78
|
+
content: newContent,
|
|
79
|
+
risk: "low",
|
|
80
|
+
requiresApproval: false,
|
|
81
|
+
atomicState: "planned",
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Thin Hermes skill-plugin (RFC-0002 Phase B):
|
|
86
|
+
* plugin.yaml + __init__.py (register_skill only) + flat skills/<name>/
|
|
87
|
+
*
|
|
88
|
+
* MCP / context stay on workspace apply — not packed here.
|
|
89
|
+
*/
|
|
90
|
+
function writeSkillPlugin(canonical, root, pluginManifest) {
|
|
91
|
+
const changes = [];
|
|
92
|
+
// `__init__.py` is user Python code; only ever touch it when it is ours.
|
|
93
|
+
// Refuse (fail explicit) rather than overwrite a hand-authored package.
|
|
94
|
+
const initPath = path_1.default.join(root, "__init__.py");
|
|
95
|
+
if (fs_1.default.existsSync(initPath) &&
|
|
96
|
+
!fs_1.default.readFileSync(initPath, "utf8").includes(layout_1.MANAGED_INIT_MARKER)) {
|
|
97
|
+
throw new Error("Hermes skill-plugin refuses to overwrite a hand-authored __init__.py; " +
|
|
98
|
+
"remove it or point the plugin at an empty directory.");
|
|
99
|
+
}
|
|
100
|
+
const name = pluginManifest?.name?.trim() || "jue-skills";
|
|
101
|
+
const version = pluginManifest?.version?.trim() || "0.1.0";
|
|
102
|
+
const description = pluginManifest?.description?.trim() ||
|
|
103
|
+
"Skill pack generated by ai-jue from Canonical skills.";
|
|
104
|
+
const manifestYaml = yaml.dump({ name, version, description }, { lineWidth: -1, noRefs: true });
|
|
105
|
+
const manifestChange = textChange(root, path_1.default.join(root, "plugin.yaml"), manifestYaml);
|
|
106
|
+
if (manifestChange)
|
|
107
|
+
changes.push(manifestChange);
|
|
108
|
+
const initChange = textChange(root, path_1.default.join(root, "__init__.py"), INIT_PY);
|
|
109
|
+
if (initChange)
|
|
110
|
+
changes.push(initChange);
|
|
111
|
+
if (canonical.skills && Object.keys(canonical.skills).length > 0) {
|
|
112
|
+
// Flatten "<category>/<name>" keys to a single path segment for plugin layout.
|
|
113
|
+
const flatSkills = Object.create(null);
|
|
114
|
+
const seenNames = new Set();
|
|
115
|
+
for (const [key, skill] of Object.entries(canonical.skills)) {
|
|
116
|
+
const base = key.includes("/") ? key.split("/").pop() : key;
|
|
117
|
+
assertSafeSkillName(base);
|
|
118
|
+
if (seenNames.has(base)) {
|
|
119
|
+
throw new Error(`Hermes skill-plugin cannot flatten multiple Canonical skills to "${base}"; ` +
|
|
120
|
+
`rename the colliding category/name entries before writing.`);
|
|
121
|
+
}
|
|
122
|
+
seenNames.add(base);
|
|
123
|
+
flatSkills[base] = skill;
|
|
124
|
+
}
|
|
125
|
+
const mapping = (0, ai_jue_core_1.directoryPerItem)({
|
|
126
|
+
dirPath: (r) => path_1.default.join(r, "skills"),
|
|
127
|
+
mainFileName: "SKILL.md",
|
|
128
|
+
// Preserve ai-assets sidecars; Hermes loads SKILL.md and can follow relative refs.
|
|
129
|
+
bundleKeys: ["references", "scripts", "assets"],
|
|
130
|
+
});
|
|
131
|
+
changes.push(...mapping.write(root, flatSkills, TARGET));
|
|
132
|
+
}
|
|
133
|
+
return changes;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=skill-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-plugin.js","sourceRoot":"","sources":["../../src/capabilities/skill-plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/confirm.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { ArtifactResult, Confirmation } from "ai-jue-core";
|
|
2
|
+
import { type HermesArtifactKind } from "./capabilities/layout";
|
|
2
3
|
export interface ConfirmContext {
|
|
3
4
|
projectRoot: string;
|
|
5
|
+
artifactKind?: HermesArtifactKind;
|
|
4
6
|
}
|
|
5
7
|
/**
|
|
6
8
|
* Hermes v0.18.0 has no per-file validate command analogous to
|
|
@@ -17,11 +19,8 @@ export interface ConfirmContext {
|
|
|
17
19
|
* machine, even though in this contract test we use a freshly-built
|
|
18
20
|
* workspace).
|
|
19
21
|
*
|
|
20
|
-
* For
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* the config tree; that path is exercised in the
|
|
24
|
-
* `cwr-real-config` round-trip test (out of in-suite scope per
|
|
25
|
-
* JUE-301/JUE-302's openclaw-spawnSync quirk discovery).
|
|
22
|
+
* For workspace scope, `tirith` validates the config tree. For the thin
|
|
23
|
+
* skill-plugin Artifact, the generated plugin surface provides structural
|
|
24
|
+
* confirmation without executing generated Python.
|
|
26
25
|
*/
|
|
27
26
|
export declare function confirm(_results: ArtifactResult[], context: ConfirmContext): Promise<Confirmation>;
|
package/dist/confirm.js
CHANGED
|
@@ -8,6 +8,7 @@ const child_process_1 = require("child_process");
|
|
|
8
8
|
const fs_1 = require("fs");
|
|
9
9
|
const os_1 = __importDefault(require("os"));
|
|
10
10
|
const path_1 = __importDefault(require("path"));
|
|
11
|
+
const layout_1 = require("./capabilities/layout");
|
|
11
12
|
const TARGET = "hermes";
|
|
12
13
|
/**
|
|
13
14
|
* Hermes v0.18.0 has no per-file validate command analogous to
|
|
@@ -24,14 +25,49 @@ const TARGET = "hermes";
|
|
|
24
25
|
* machine, even though in this contract test we use a freshly-built
|
|
25
26
|
* workspace).
|
|
26
27
|
*
|
|
27
|
-
* For
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* the config tree; that path is exercised in the
|
|
31
|
-
* `cwr-real-config` round-trip test (out of in-suite scope per
|
|
32
|
-
* JUE-301/JUE-302's openclaw-spawnSync quirk discovery).
|
|
28
|
+
* For workspace scope, `tirith` validates the config tree. For the thin
|
|
29
|
+
* skill-plugin Artifact, the generated plugin surface provides structural
|
|
30
|
+
* confirmation without executing generated Python.
|
|
33
31
|
*/
|
|
34
32
|
async function confirm(_results, context) {
|
|
33
|
+
if ((context.artifactKind ?? (0, layout_1.detectArtifactKind)(context.projectRoot)) === "skill-plugin") {
|
|
34
|
+
const manifest = path_1.default.join(context.projectRoot, "plugin.yaml");
|
|
35
|
+
const initializer = path_1.default.join(context.projectRoot, "__init__.py");
|
|
36
|
+
if (!(0, fs_1.existsSync)(manifest) || !(0, fs_1.existsSync)(initializer)) {
|
|
37
|
+
return {
|
|
38
|
+
target: TARGET,
|
|
39
|
+
status: "failed",
|
|
40
|
+
evidence: "skill-plugin requires plugin.yaml and __init__.py",
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const initSource = (0, fs_1.readFileSync)(initializer, "utf8");
|
|
44
|
+
if (!initSource.includes("register_skill")) {
|
|
45
|
+
return {
|
|
46
|
+
target: TARGET,
|
|
47
|
+
status: "failed",
|
|
48
|
+
evidence: "skill-plugin __init__.py does not register skills",
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const skillsRoot = path_1.default.join(context.projectRoot, "skills");
|
|
52
|
+
if ((0, fs_1.existsSync)(skillsRoot)) {
|
|
53
|
+
for (const entry of (0, fs_1.readdirSync)(skillsRoot, { withFileTypes: true })) {
|
|
54
|
+
if (!entry.isDirectory())
|
|
55
|
+
continue;
|
|
56
|
+
if (!(0, fs_1.existsSync)(path_1.default.join(skillsRoot, entry.name, "SKILL.md"))) {
|
|
57
|
+
return {
|
|
58
|
+
target: TARGET,
|
|
59
|
+
status: "failed",
|
|
60
|
+
evidence: `skill-plugin skill ${entry.name} is missing SKILL.md`,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
target: TARGET,
|
|
67
|
+
status: "confirmed",
|
|
68
|
+
evidence: "Hermes skill-plugin structure validated: plugin.yaml, register_skill initializer, and skill roots",
|
|
69
|
+
};
|
|
70
|
+
}
|
|
35
71
|
if (!(0, fs_1.existsSync)(context.projectRoot)) {
|
|
36
72
|
return { target: TARGET, status: "failed", evidence: "projectRoot does not exist" };
|
|
37
73
|
}
|
package/dist/confirm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm.js","sourceRoot":"","sources":["../src/confirm.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"confirm.js","sourceRoot":"","sources":["../src/confirm.ts"],"names":[],"mappings":";;;;;AAiCA,0BAuFC;AAxHD,iDAA6C;AAC7C,2BAAgF;AAChF,4CAAoB;AACpB,gDAAwB;AAExB,kDAAoF;AAOpF,MAAM,MAAM,GAAG,QAAQ,CAAC;AAExB;;;;;;;;;;;;;;;;;;GAkBG;AACI,KAAK,UAAU,OAAO,CAC3B,QAA0B,EAC1B,OAAuB;IAEvB,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAA,2BAAkB,EAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,cAAc,EAAE,CAAC;QACzF,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAClE,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC,IAAI,CAAC,IAAA,eAAU,EAAC,WAAW,CAAC,EAAE,CAAC;YACtD,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,mDAAmD;aAC9D,CAAC;QACJ,CAAC;QACD,MAAM,UAAU,GAAG,IAAA,iBAAY,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC3C,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,mDAAmD;aAC9D,CAAC;QACJ,CAAC;QACD,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC5D,IAAI,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,KAAK,MAAM,KAAK,IAAI,IAAA,gBAAW,EAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBACrE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;oBAAE,SAAS;gBACnC,IAAI,CAAC,IAAA,eAAU,EAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;oBAC/D,OAAO;wBACL,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,QAAQ;wBAChB,QAAQ,EAAE,sBAAsB,KAAK,CAAC,IAAI,sBAAsB;qBACjE,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO;YACL,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,mGAAmG;SAC9G,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAA,eAAU,EAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,4BAA4B,EAAE,CAAC;IACtF,CAAC;IACD,qEAAqE;IACrE,oDAAoD;IACpD,MAAM,QAAQ,GAAG,IAAA,gBAAW,EAAC,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACzE,IAAI,CAAC;QACH,gEAAgE;QAChE,oEAAoE;QACpE,iEAAiE;QACjE,mEAAmE;QACnE,wBAAwB;QACxB,MAAM,MAAM,GAAG,IAAA,4BAAY,EAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE;YACjF,QAAQ,EAAE,MAAM;YAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;YAC9D,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,OAAO,EAAE,KAAM;SAChB,CAAC,CAAC;QACH,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,8CAA8C,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;aAC/E,CAAC;QACJ,CAAC;QACD,OAAO;YACL,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,8CAA8C,OAAO,CAAC,WAAW,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;SACvG,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK;YACpE,CAAC,CAAC,MAAM,CAAE,KAA6B,CAAC,MAAM,CAAC;YAC/C,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,MAAM,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK;YACpE,CAAC,CAAC,MAAM,CAAE,KAA6B,CAAC,MAAM,CAAC;YAC/C,CAAC,CAAC,EAAE,CAAC;QACP,OAAO;YACL,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,uCAAwC,KAA6B,CAAC,MAAM,WAAW,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;SACvJ,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,IAAA,WAAM,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export { write } from "./write";
|
|
|
4
4
|
export type { WriteContext } from "./write";
|
|
5
5
|
export { confirm } from "./confirm";
|
|
6
6
|
export type { ConfirmContext } from "./confirm";
|
|
7
|
+
export { detectArtifactKind } from "./capabilities/layout";
|
|
7
8
|
/**
|
|
8
9
|
* `jue apply`'s Hermes entry point: thin wrapper, parallel to Claude
|
|
9
10
|
* and Codex. Kept for the legacy `jue apply --all` path while the
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.confirm = exports.write = exports.read = void 0;
|
|
3
|
+
exports.detectArtifactKind = exports.confirm = exports.write = exports.read = void 0;
|
|
4
4
|
exports.generate = generate;
|
|
5
5
|
const ai_jue_core_1 = require("ai-jue-core");
|
|
6
6
|
const confirm_1 = require("./confirm");
|
|
@@ -12,6 +12,8 @@ var write_2 = require("./write");
|
|
|
12
12
|
Object.defineProperty(exports, "write", { enumerable: true, get: function () { return write_2.write; } });
|
|
13
13
|
var confirm_2 = require("./confirm");
|
|
14
14
|
Object.defineProperty(exports, "confirm", { enumerable: true, get: function () { return confirm_2.confirm; } });
|
|
15
|
+
var layout_1 = require("./capabilities/layout");
|
|
16
|
+
Object.defineProperty(exports, "detectArtifactKind", { enumerable: true, get: function () { return layout_1.detectArtifactKind; } });
|
|
15
17
|
/**
|
|
16
18
|
* `jue apply`'s Hermes entry point: thin wrapper, parallel to Claude
|
|
17
19
|
* and Codex. Kept for the legacy `jue apply --all` path while the
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAmBA,4BAIC;AAvBD,6CAAwF;AAExF,uCAAoC;AACpC,iCAA8B;AAC9B,mCAAgC;AAEhC,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AAEb,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AAEd,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAEhB,gDAA2D;AAAlD,4GAAA,kBAAkB,OAAA;AAE3B;;;;GAIG;AACI,KAAK,UAAU,QAAQ,CAAC,MAAW,EAAE,SAAiB;IAC3D,MAAM,SAAS,GAAG,IAAA,iCAAmB,EAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,IAAA,aAAK,EAAC,SAAS,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;IACnE,IAAA,iCAAmB,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,aAAa,GAAY;IAC7B,EAAE,EAAE,QAAQ;IACZ,YAAY,EAAE;QACZ,uEAAuE;QACvE,qEAAqE;QACrE,KAAK,EAAE,aAAa;QACpB,mEAAmE;QACnE,gEAAgE;QAChE,oEAAoE;QACpE,QAAQ,EAAE,UAAU;QACpB,+DAA+D;QAC/D,sCAAsC;QACtC,MAAM,EAAE,WAAW;QACnB,kEAAkE;QAClE,8CAA8C;QAC9C,MAAM,EAAE,UAAU;QAClB,+DAA+D;QAC/D,6DAA6D;QAC7D,kCAAkC;QAClC,KAAK,EAAE,aAAa;QACpB,6DAA6D;QAC7D,+DAA+D;QAC/D,GAAG,EAAE,WAAW;KACjB;IACD,IAAI,EAAJ,WAAI;IACJ,KAAK,EAAL,aAAK;IACL,OAAO,EAAP,iBAAO;CACR,CAAC;AAEF,kBAAe,IAAA,6BAAe,EAAC,EAAE,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC"}
|
package/dist/write.d.ts
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import type { ArtifactChange, CanonicalDocument } from "ai-jue-core";
|
|
2
2
|
export interface WriteContext {
|
|
3
3
|
projectRoot: string;
|
|
4
|
+
/** Defaults to `"workspace"`. `skill-plugin` emits a thin installable skill pack. */
|
|
5
|
+
artifactKind?: string;
|
|
6
|
+
toolsConfig?: Record<string, unknown>;
|
|
7
|
+
pluginManifest?: {
|
|
8
|
+
name: string;
|
|
9
|
+
version: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
};
|
|
4
12
|
}
|
|
5
13
|
/**
|
|
6
|
-
* Hermes Adapter
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* Same honest-stance map as read.
|
|
14
|
+
* Hermes Adapter write (RFC-0002):
|
|
15
|
+
* - workspace: MEMORY.md / skills/<cat>/<name> / config.yaml mcp / cron
|
|
16
|
+
* - skill-plugin: plugin.yaml + __init__.py + flat skills/ (skills only)
|
|
10
17
|
*/
|
|
11
18
|
export declare function write(canonical: CanonicalDocument, writeContext: WriteContext): Promise<ArtifactChange[]>;
|
package/dist/write.js
CHANGED
|
@@ -5,15 +5,27 @@ const ai_jue_core_1 = require("ai-jue-core");
|
|
|
5
5
|
const context_1 = require("./capabilities/context");
|
|
6
6
|
const cron_1 = require("./capabilities/cron");
|
|
7
7
|
const mcp_1 = require("./capabilities/mcp");
|
|
8
|
+
const skill_plugin_1 = require("./capabilities/skill-plugin");
|
|
8
9
|
const skills_1 = require("./capabilities/skills");
|
|
9
10
|
const TARGET = "hermes";
|
|
10
11
|
/**
|
|
11
|
-
* Hermes Adapter
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* Same honest-stance map as read.
|
|
12
|
+
* Hermes Adapter write (RFC-0002):
|
|
13
|
+
* - workspace: MEMORY.md / skills/<cat>/<name> / config.yaml mcp / cron
|
|
14
|
+
* - skill-plugin: plugin.yaml + __init__.py + flat skills/ (skills only)
|
|
15
15
|
*/
|
|
16
16
|
async function write(canonical, writeContext) {
|
|
17
|
+
const kind = writeContext.artifactKind ?? "workspace";
|
|
18
|
+
if (kind === "skill-plugin" || kind === "plugin") {
|
|
19
|
+
return (0, skill_plugin_1.writeSkillPlugin)(canonical, writeContext.projectRoot, writeContext.pluginManifest);
|
|
20
|
+
}
|
|
21
|
+
if (kind === "compatible-bundle") {
|
|
22
|
+
throw new Error('Hermes does not use OpenClaw-style "compatible-bundle". ' +
|
|
23
|
+
"Use --artifact skill-plugin (or plugin) for a thin skill pack, " +
|
|
24
|
+
"or omit --artifact for workspace apply (skills + mcp).");
|
|
25
|
+
}
|
|
26
|
+
if (kind !== "workspace" && kind !== "project") {
|
|
27
|
+
throw new Error(`Hermes adapter does not support artifact kind "${kind}". Supported: workspace, skill-plugin.`);
|
|
28
|
+
}
|
|
17
29
|
const result = (0, ai_jue_core_1.writeCapabilities)({
|
|
18
30
|
hooks: { read: () => undefined, write: () => [] },
|
|
19
31
|
commands: { read: () => undefined, write: () => [] },
|
package/dist/write.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.js","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":";;AAuBA,sBA+CC;AAtED,6CAAgD;AAEhD,oDAAiD;AACjD,8CAA2C;AAC3C,4CAAyC;AACzC,8DAA+D;AAC/D,kDAA+C;AAU/C,MAAM,MAAM,GAAG,QAAQ,CAAC;AAExB;;;;GAIG;AACI,KAAK,UAAU,KAAK,CACzB,SAA4B,EAC5B,YAA0B;IAE1B,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,IAAI,WAAW,CAAC;IAEtD,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjD,OAAO,IAAA,+BAAgB,EAAC,SAAS,EAAE,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,0DAA0D;YACxD,iEAAiE;YACjE,wDAAwD,CAC3D,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,kDAAkD,IAAI,wCAAwC,CAC/F,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,+BAAiB,EAC9B;QACE,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;QACjD,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;QACpD,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;QAClD,GAAG,EAAE,IAAA,SAAG,GAAE;QACV,MAAM,EAAE,IAAA,eAAM,GAAE;QAChB,IAAI,EAAE,IAAA,WAAI,GAAE;KACb,EACD,SAA+C,EAC/C,YAAY,CAAC,WAAW,EACxB,MAAM,CACP,CAAC;IAEF,IAAI,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CACT,GAAG,IAAA,iBAAO,GAAE,CAAC,KAAK,CAChB,YAAY,CAAC,WAAW,EACxB,EAAE,MAAM,EAAG,SAAS,CAAC,OAA+B,CAAC,MAAM,IAAI,EAAE,EAAE,EACnE,MAAM,CACP,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ai-jue-adapter-hermes",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Adapter for generating Hermes configurations.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"ai-jue-core": "*",
|
|
12
|
-
"js-yaml": "^4.1
|
|
12
|
+
"js-yaml": "^4.3.1"
|
|
13
13
|
},
|
|
14
14
|
"peerDependencies": {
|
|
15
15
|
"ai-jue-core": "*"
|