@stellar-agent/codex-plugin 0.4.0

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 stellar-agent-bridge contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,19 @@
1
+ # @stellar-agent/codex-plugin
2
+
3
+ Validation, manifest, and release tooling for the bundled Codex plugin under `plugins/codex`.
4
+
5
+ ```bash
6
+ pnpm build
7
+ node packages/codex-plugin/dist/cli.js validate plugins/codex
8
+ node packages/codex-plugin/dist/cli.js manifest plugins/codex plugins/codex/plugin-manifest.json
9
+ ```
10
+
11
+ The validator checks `plugin.yaml`, referenced skill directories, `SKILL.md` files, and agent routing YAML. The manifest command writes a normalized JSON manifest that packaging or installation scripts can consume.
12
+
13
+ Release packaging is handled by the repository-level release gate:
14
+
15
+ ```bash
16
+ pnpm release:preflight
17
+ ```
18
+
19
+ That command builds this package, stages `plugins/codex`, writes `plugin-manifest.json`, creates the versioned `stellar-agent-codex-plugin-v*.tgz` artifact, then verifies the artifact through the installed `stellar-agent-codex-plugin` binary from the generated npm tarball.
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+ import { validateCodexPlugin, writeCodexPluginManifest } from "./index.js";
3
+ const [, , command = "validate", pluginRoot = "plugins/codex", outputPath = "plugins/codex/plugin-manifest.json"] = process.argv;
4
+ try {
5
+ if (command === "validate") {
6
+ const result = await validateCodexPlugin(pluginRoot);
7
+ process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
8
+ process.exitCode = result.valid ? 0 : 3;
9
+ }
10
+ else if (command === "manifest") {
11
+ const manifest = await writeCodexPluginManifest(pluginRoot, outputPath);
12
+ process.stdout.write(`${JSON.stringify({ ok: true, manifestPath: outputPath, manifest }, null, 2)}\n`);
13
+ }
14
+ else {
15
+ process.stderr.write("Usage: stellar-agent-codex-plugin [validate|manifest] [pluginRoot] [outputPath]\n");
16
+ process.exitCode = 2;
17
+ }
18
+ }
19
+ catch (error) {
20
+ process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
21
+ process.exitCode = 1;
22
+ }
23
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3E,MAAM,CAAC,EAAE,AAAD,EAAG,OAAO,GAAG,UAAU,EAAE,UAAU,GAAG,eAAe,EAAE,UAAU,GAAG,oCAAoC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAEjI,IAAI,CAAC;IACH,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;SAAM,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACxE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACzG,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mFAAmF,CAAC,CAAC;QAC1G,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,30 @@
1
+ export interface CodexPluginYaml {
2
+ name: string;
3
+ version: string;
4
+ description: string;
5
+ skills: string[];
6
+ }
7
+ export interface CodexSkillManifest {
8
+ path: string;
9
+ skillFile: string;
10
+ title: string;
11
+ agents: string[];
12
+ }
13
+ export interface CodexPluginManifest {
14
+ schemaVersion: "stellar-agent.codex-plugin.v1";
15
+ name: string;
16
+ version: string;
17
+ description: string;
18
+ pluginRoot: string;
19
+ skills: CodexSkillManifest[];
20
+ }
21
+ export interface CodexPluginValidation {
22
+ valid: boolean;
23
+ errors: string[];
24
+ warnings: string[];
25
+ manifest?: CodexPluginManifest;
26
+ }
27
+ export declare function validateCodexPlugin(pluginRoot: string): Promise<CodexPluginValidation>;
28
+ export declare function writeCodexPluginManifest(pluginRoot: string, outputPath: string): Promise<CodexPluginManifest>;
29
+ export declare function pluginYamlToString(plugin: CodexPluginYaml): string;
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,+BAA+B,CAAC;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC;AAED,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAgD5F;AAED,wBAAsB,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CASnH;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAElE"}
package/dist/index.js ADDED
@@ -0,0 +1,137 @@
1
+ import { access, mkdir, readFile, readdir, writeFile } from "node:fs/promises";
2
+ import { dirname, join, relative, resolve } from "node:path";
3
+ import { parse, stringify } from "yaml";
4
+ export async function validateCodexPlugin(pluginRoot) {
5
+ const root = resolve(pluginRoot);
6
+ const errors = [];
7
+ const warnings = [];
8
+ const pluginYaml = await readPluginYaml(root, errors);
9
+ if (!pluginYaml)
10
+ return { valid: false, errors, warnings };
11
+ const skills = [];
12
+ for (const skillPath of pluginYaml.skills) {
13
+ const fullSkillPath = resolve(root, skillPath);
14
+ if (!isWithin(root, fullSkillPath)) {
15
+ errors.push(`Skill path escapes plugin root: ${skillPath}`);
16
+ continue;
17
+ }
18
+ const skillFile = join(fullSkillPath, "SKILL.md");
19
+ const skillBody = await readOptional(skillFile);
20
+ if (!skillBody?.trim()) {
21
+ errors.push(`Missing or empty skill file: ${skillPath}/SKILL.md`);
22
+ continue;
23
+ }
24
+ const agentsDir = join(fullSkillPath, "agents");
25
+ const agents = await listYamlFiles(agentsDir);
26
+ if (agents.length === 0)
27
+ warnings.push(`No agent routing files found for skill: ${skillPath}`);
28
+ for (const agent of agents) {
29
+ const raw = await readOptional(join(agentsDir, agent));
30
+ try {
31
+ parse(raw ?? "");
32
+ }
33
+ catch (error) {
34
+ errors.push(`Invalid YAML in ${skillPath}/agents/${agent}: ${error instanceof Error ? error.message : String(error)}`);
35
+ }
36
+ }
37
+ skills.push({
38
+ path: normalizePath(skillPath),
39
+ skillFile: normalizePath(relative(root, skillFile)),
40
+ title: firstMarkdownHeading(skillBody) ?? skillPath.split("/").pop() ?? skillPath,
41
+ agents: agents.map((agent) => normalizePath(join(skillPath, "agents", agent)))
42
+ });
43
+ }
44
+ const manifest = {
45
+ schemaVersion: "stellar-agent.codex-plugin.v1",
46
+ name: pluginYaml.name,
47
+ version: pluginYaml.version,
48
+ description: pluginYaml.description,
49
+ pluginRoot: root,
50
+ skills
51
+ };
52
+ return { valid: errors.length === 0, errors, warnings, ...(errors.length === 0 ? { manifest } : {}) };
53
+ }
54
+ export async function writeCodexPluginManifest(pluginRoot, outputPath) {
55
+ const validation = await validateCodexPlugin(pluginRoot);
56
+ if (!validation.valid || !validation.manifest) {
57
+ throw new Error(`Codex plugin is invalid: ${validation.errors.join("; ")}`);
58
+ }
59
+ const target = resolve(outputPath);
60
+ await mkdir(dirname(target), { recursive: true });
61
+ await writeFile(target, `${JSON.stringify(validation.manifest, null, 2)}\n`, { mode: 0o644 });
62
+ return validation.manifest;
63
+ }
64
+ export function pluginYamlToString(plugin) {
65
+ return stringify(plugin);
66
+ }
67
+ async function readPluginYaml(root, errors) {
68
+ const pluginYamlPath = join(root, "plugin.yaml");
69
+ const raw = await readOptional(pluginYamlPath);
70
+ if (!raw) {
71
+ errors.push("Missing plugin.yaml.");
72
+ return undefined;
73
+ }
74
+ let parsed;
75
+ try {
76
+ parsed = parse(raw);
77
+ }
78
+ catch (error) {
79
+ errors.push(`Invalid plugin.yaml: ${error instanceof Error ? error.message : String(error)}`);
80
+ return undefined;
81
+ }
82
+ if (!parsed || typeof parsed !== "object") {
83
+ errors.push("plugin.yaml must be a YAML object.");
84
+ return undefined;
85
+ }
86
+ const plugin = parsed;
87
+ if (!plugin.name || typeof plugin.name !== "string")
88
+ errors.push("plugin.yaml must include string field: name.");
89
+ if (!plugin.version || typeof plugin.version !== "string")
90
+ errors.push("plugin.yaml must include string field: version.");
91
+ if (!plugin.description || typeof plugin.description !== "string") {
92
+ errors.push("plugin.yaml must include string field: description.");
93
+ }
94
+ if (!Array.isArray(plugin.skills) || plugin.skills.length === 0 || plugin.skills.some((skill) => typeof skill !== "string")) {
95
+ errors.push("plugin.yaml must include a non-empty skills string array.");
96
+ }
97
+ if (errors.length > 0)
98
+ return undefined;
99
+ return plugin;
100
+ }
101
+ async function readOptional(path) {
102
+ try {
103
+ return await readFile(path, "utf8");
104
+ }
105
+ catch (error) {
106
+ if (error?.code === "ENOENT")
107
+ return undefined;
108
+ throw error;
109
+ }
110
+ }
111
+ async function listYamlFiles(path) {
112
+ try {
113
+ await access(path);
114
+ return (await readdir(path)).filter((entry) => entry.endsWith(".yaml") || entry.endsWith(".yml")).sort();
115
+ }
116
+ catch (error) {
117
+ if (error?.code === "ENOENT")
118
+ return [];
119
+ throw error;
120
+ }
121
+ }
122
+ function firstMarkdownHeading(markdown) {
123
+ for (const line of markdown.split(/\r?\n/)) {
124
+ const match = /^#\s+(.+)$/.exec(line);
125
+ if (match?.[1])
126
+ return match[1].trim();
127
+ }
128
+ return undefined;
129
+ }
130
+ function isWithin(root, target) {
131
+ const relativePath = relative(root, target);
132
+ return relativePath === "" || (!relativePath.startsWith("..") && !relativePath.startsWith("/"));
133
+ }
134
+ function normalizePath(path) {
135
+ return path.split("\\").join("/");
136
+ }
137
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@stellar-agent/codex-plugin",
3
+ "version": "0.4.0",
4
+ "description": "Validation and manifest tooling for the Stellar Agent Bridge Codex plugin artifact.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+ssh://git@github.com/someone-in-texas/Stellar-Agent.git",
10
+ "directory": "packages/codex-plugin"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/someone-in-texas/Stellar-Agent/issues"
14
+ },
15
+ "homepage": "https://github.com/someone-in-texas/Stellar-Agent#readme",
16
+ "engines": {
17
+ "node": ">=22"
18
+ },
19
+ "bin": {
20
+ "stellar-agent-codex-plugin": "./dist/cli.js"
21
+ },
22
+ "main": "./dist/index.js",
23
+ "types": "./dist/index.d.ts",
24
+ "exports": {
25
+ ".": {
26
+ "types": "./dist/index.d.ts",
27
+ "import": "./dist/index.js"
28
+ }
29
+ },
30
+ "files": [
31
+ "dist"
32
+ ],
33
+ "scripts": {
34
+ "build": "tsc -b",
35
+ "test": "vitest run"
36
+ },
37
+ "dependencies": {
38
+ "yaml": "^2.7.1"
39
+ },
40
+ "devDependencies": {
41
+ "@types/node": "^22.15.24"
42
+ }
43
+ }