@orchestrator-claude/definitions 3.5.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/agents/api-extractor.md +687 -0
- package/agents/business-rule-miner.md +754 -0
- package/agents/code-archaeologist.md +720 -0
- package/agents/docs-guardian.md +524 -0
- package/agents/implementer.md +512 -0
- package/agents/legacy-discoverer.md +583 -0
- package/agents/legacy-synthesizer.md +1101 -0
- package/agents/orchestrator.md +165 -0
- package/agents/planner.md +365 -0
- package/agents/researcher.md +447 -0
- package/agents/reviewer.md +514 -0
- package/agents/schema-extractor.md +781 -0
- package/agents/specifier.md +360 -0
- package/agents/task-generator.md +390 -0
- package/bin/orch-defs.js +2 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +172 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/DiffCommand.d.ts +13 -0
- package/dist/commands/DiffCommand.d.ts.map +1 -0
- package/dist/commands/DiffCommand.js +74 -0
- package/dist/commands/DiffCommand.js.map +1 -0
- package/dist/commands/SeedCommand.d.ts +19 -0
- package/dist/commands/SeedCommand.d.ts.map +1 -0
- package/dist/commands/SeedCommand.js +56 -0
- package/dist/commands/SeedCommand.js.map +1 -0
- package/dist/http/ApiClient.d.ts +50 -0
- package/dist/http/ApiClient.d.ts.map +1 -0
- package/dist/http/ApiClient.js +58 -0
- package/dist/http/ApiClient.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest/ManifestLoader.d.ts +34 -0
- package/dist/manifest/ManifestLoader.d.ts.map +1 -0
- package/dist/manifest/ManifestLoader.js +110 -0
- package/dist/manifest/ManifestLoader.js.map +1 -0
- package/dist/manifest/types.d.ts +59 -0
- package/dist/manifest/types.d.ts.map +1 -0
- package/dist/manifest/types.js +5 -0
- package/dist/manifest/types.js.map +1 -0
- package/dist/scripts/generate-manifest.d.ts +10 -0
- package/dist/scripts/generate-manifest.d.ts.map +1 -0
- package/dist/scripts/generate-manifest.js +114 -0
- package/dist/scripts/generate-manifest.js.map +1 -0
- package/hooks/post-agent-artifact-relay.sh +157 -0
- package/hooks/post-artifact-generate.sh +39 -0
- package/hooks/post-implement-validate.sh +139 -0
- package/hooks/post-phase-checkpoint.sh +322 -0
- package/hooks/pre-agent-invoke.sh +34 -0
- package/hooks/pre-phase-advance.sh +40 -0
- package/hooks/track-agent-invocation.sh +241 -0
- package/kb/auth-strategies.md +742 -0
- package/kb/docs-constitution.md +310 -0
- package/kb/error-handling.md +555 -0
- package/kb/rest-conventions.md +458 -0
- package/kb/validation-patterns.md +589 -0
- package/manifest.json +314 -0
- package/package.json +65 -0
- package/skills/artifact-validator/SKILL.md +226 -0
- package/skills/docs-guardian/SKILL.md +230 -0
- package/skills/kb-lookup/SKILL.md +257 -0
- package/skills/phase-gate-evaluator/SKILL.md +274 -0
- package/skills/release/SKILL.md +239 -0
- package/skills/release/release.sh +491 -0
- package/skills/smoke-test/SKILL.md +195 -0
- package/skills/workflow-status/SKILL.md +322 -0
- package/workflows/bug-fix.json +74 -0
- package/workflows/feature-development.json +88 -0
- package/workflows/legacy-analysis.json +304 -0
- package/workflows/refactoring.json +74 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { SeedPayload, SeedResult } from '../manifest/types.js';
|
|
2
|
+
export interface SeedCommandOptions {
|
|
3
|
+
apiUrl: string;
|
|
4
|
+
token?: string;
|
|
5
|
+
email?: string;
|
|
6
|
+
password?: string;
|
|
7
|
+
update?: boolean;
|
|
8
|
+
force?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare class SeedCommand {
|
|
11
|
+
private readonly loader;
|
|
12
|
+
constructor(packageRoot?: string);
|
|
13
|
+
execute(options: SeedCommandOptions): Promise<SeedResult>;
|
|
14
|
+
/**
|
|
15
|
+
* Builds the seed payload without executing (useful for testing).
|
|
16
|
+
*/
|
|
17
|
+
buildPayload(): SeedPayload;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=SeedCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SeedCommand.d.ts","sourceRoot":"","sources":["../../src/commands/SeedCommand.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEpE,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,WAAW,CAAC,EAAE,MAAM;IAI1B,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;IA2C/D;;OAEG;IACH,YAAY,IAAI,WAAW;CAW5B"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ManifestLoader } from '../manifest/ManifestLoader.js';
|
|
2
|
+
import { ApiClient } from '../http/ApiClient.js';
|
|
3
|
+
export class SeedCommand {
|
|
4
|
+
loader;
|
|
5
|
+
constructor(packageRoot) {
|
|
6
|
+
this.loader = new ManifestLoader(packageRoot);
|
|
7
|
+
}
|
|
8
|
+
async execute(options) {
|
|
9
|
+
const manifest = this.loader.load();
|
|
10
|
+
// Verify checksums before seeding
|
|
11
|
+
const { invalid } = this.loader.verifyChecksums();
|
|
12
|
+
if (invalid.length > 0) {
|
|
13
|
+
const names = invalid.map((e) => e.slug).join(', ');
|
|
14
|
+
throw new Error(`Checksum verification failed for: ${names}. Regenerate manifest.`);
|
|
15
|
+
}
|
|
16
|
+
// Build payload with file contents
|
|
17
|
+
const entries = this.loader.getAllEntries();
|
|
18
|
+
const contents = {};
|
|
19
|
+
for (const entry of entries) {
|
|
20
|
+
contents[entry.file] = this.loader.readDefinitionContent(entry);
|
|
21
|
+
}
|
|
22
|
+
const payload = { manifest, contents };
|
|
23
|
+
// Determine mode
|
|
24
|
+
let mode = 'skip-existing';
|
|
25
|
+
if (options.force) {
|
|
26
|
+
mode = 'force';
|
|
27
|
+
}
|
|
28
|
+
else if (options.update) {
|
|
29
|
+
mode = 'update';
|
|
30
|
+
}
|
|
31
|
+
// Connect to API
|
|
32
|
+
const client = new ApiClient({
|
|
33
|
+
baseUrl: options.apiUrl,
|
|
34
|
+
token: options.token,
|
|
35
|
+
});
|
|
36
|
+
// Login if credentials provided and no token
|
|
37
|
+
if (!options.token && options.email && options.password) {
|
|
38
|
+
await client.login(options.email, options.password);
|
|
39
|
+
}
|
|
40
|
+
// Execute seed
|
|
41
|
+
return await client.seed(payload, mode);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Builds the seed payload without executing (useful for testing).
|
|
45
|
+
*/
|
|
46
|
+
buildPayload() {
|
|
47
|
+
const manifest = this.loader.load();
|
|
48
|
+
const entries = this.loader.getAllEntries();
|
|
49
|
+
const contents = {};
|
|
50
|
+
for (const entry of entries) {
|
|
51
|
+
contents[entry.file] = this.loader.readDefinitionContent(entry);
|
|
52
|
+
}
|
|
53
|
+
return { manifest, contents };
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=SeedCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SeedCommand.js","sourceRoot":"","sources":["../../src/commands/SeedCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAYjD,MAAM,OAAO,WAAW;IACL,MAAM,CAAiB;IAExC,YAAY,WAAoB;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAEpC,kCAAkC;QAClC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QAClD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,wBAAwB,CAAC,CAAC;QACtF,CAAC;QAED,mCAAmC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAE5C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,OAAO,GAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAEpD,iBAAiB;QACjB,IAAI,IAAI,GAAyC,eAAe,CAAC;QACjE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,GAAG,OAAO,CAAC;QACjB,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAI,GAAG,QAAQ,CAAC;QAClB,CAAC;QAED,iBAAiB;QACjB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;YAC3B,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QAEH,6CAA6C;QAC7C,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACxD,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC;QAED,eAAe;QACf,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,YAAY;QACV,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAE5C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { SeedPayload, SeedResult } from '../manifest/types.js';
|
|
2
|
+
export interface ApiClientOptions {
|
|
3
|
+
baseUrl: string;
|
|
4
|
+
token?: string | undefined;
|
|
5
|
+
}
|
|
6
|
+
export declare class ApiClient {
|
|
7
|
+
private readonly baseUrl;
|
|
8
|
+
private token;
|
|
9
|
+
constructor(options: ApiClientOptions);
|
|
10
|
+
/**
|
|
11
|
+
* Authenticate with the API and store the JWT token.
|
|
12
|
+
*/
|
|
13
|
+
login(email: string, password: string): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Seed definitions via POST /api/v1/definitions/seed
|
|
16
|
+
*/
|
|
17
|
+
seed(payload: SeedPayload, mode: 'skip-existing' | 'update' | 'force'): Promise<SeedResult>;
|
|
18
|
+
/**
|
|
19
|
+
* Get current definitions metadata for diff comparison.
|
|
20
|
+
*/
|
|
21
|
+
getDefinitionsMetadata(): Promise<{
|
|
22
|
+
agents: Array<{
|
|
23
|
+
slug: string;
|
|
24
|
+
version: string;
|
|
25
|
+
origin: string;
|
|
26
|
+
}>;
|
|
27
|
+
skills: Array<{
|
|
28
|
+
slug: string;
|
|
29
|
+
version: string;
|
|
30
|
+
origin: string;
|
|
31
|
+
}>;
|
|
32
|
+
hooks: Array<{
|
|
33
|
+
slug: string;
|
|
34
|
+
version: string;
|
|
35
|
+
origin: string;
|
|
36
|
+
}>;
|
|
37
|
+
workflows: Array<{
|
|
38
|
+
slug: string;
|
|
39
|
+
version: string;
|
|
40
|
+
origin: string;
|
|
41
|
+
}>;
|
|
42
|
+
kb: Array<{
|
|
43
|
+
slug: string;
|
|
44
|
+
version: string;
|
|
45
|
+
origin: string;
|
|
46
|
+
}>;
|
|
47
|
+
}>;
|
|
48
|
+
private request;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=ApiClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiClient.d.ts","sourceRoot":"","sources":["../../src/http/ApiClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,KAAK,CAAgB;gBAEjB,OAAO,EAAE,gBAAgB;IAKrC;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3D;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IASjG;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC;QACtC,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACjE,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACjE,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAChE,SAAS,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACpE,EAAE,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC9D,CAAC;YAIY,OAAO;CAqBtB"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export class ApiClient {
|
|
2
|
+
baseUrl;
|
|
3
|
+
token;
|
|
4
|
+
constructor(options) {
|
|
5
|
+
this.baseUrl = options.baseUrl.replace(/\/$/, '');
|
|
6
|
+
this.token = options.token ?? null;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Authenticate with the API and store the JWT token.
|
|
10
|
+
*/
|
|
11
|
+
async login(email, password) {
|
|
12
|
+
const response = await fetch(`${this.baseUrl}/api/v1/auth/login`, {
|
|
13
|
+
method: 'POST',
|
|
14
|
+
headers: { 'Content-Type': 'application/json' },
|
|
15
|
+
body: JSON.stringify({ email, password }),
|
|
16
|
+
});
|
|
17
|
+
if (!response.ok) {
|
|
18
|
+
const text = await response.text();
|
|
19
|
+
throw new Error(`Login failed (${response.status}): ${text}`);
|
|
20
|
+
}
|
|
21
|
+
const data = (await response.json());
|
|
22
|
+
this.token = data.token;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Seed definitions via POST /api/v1/definitions/seed
|
|
26
|
+
*/
|
|
27
|
+
async seed(payload, mode) {
|
|
28
|
+
const response = await this.request('/api/v1/definitions/seed', {
|
|
29
|
+
method: 'POST',
|
|
30
|
+
body: JSON.stringify({ ...payload, mode }),
|
|
31
|
+
});
|
|
32
|
+
return response;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get current definitions metadata for diff comparison.
|
|
36
|
+
*/
|
|
37
|
+
async getDefinitionsMetadata() {
|
|
38
|
+
return await this.request('/api/v1/definitions/metadata', { method: 'GET' });
|
|
39
|
+
}
|
|
40
|
+
async request(path, init) {
|
|
41
|
+
const headers = {
|
|
42
|
+
'Content-Type': 'application/json',
|
|
43
|
+
};
|
|
44
|
+
if (this.token) {
|
|
45
|
+
headers['Authorization'] = `Bearer ${this.token}`;
|
|
46
|
+
}
|
|
47
|
+
const response = await fetch(`${this.baseUrl}${path}`, {
|
|
48
|
+
...init,
|
|
49
|
+
headers: { ...headers, ...init.headers },
|
|
50
|
+
});
|
|
51
|
+
if (!response.ok) {
|
|
52
|
+
const text = await response.text();
|
|
53
|
+
throw new Error(`API request failed (${response.status} ${path}): ${text}`);
|
|
54
|
+
}
|
|
55
|
+
return response.json();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=ApiClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiClient.js","sourceRoot":"","sources":["../../src/http/ApiClient.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,SAAS;IACH,OAAO,CAAS;IACzB,KAAK,CAAgB;IAE7B,YAAY,OAAyB;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,QAAgB;QACzC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,oBAAoB,EAAE;YAChE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;SAC1C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAsB,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,OAAoB,EAAE,IAA0C;QACzE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE;YAC9D,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC;SAC3C,CAAC,CAAC;QAEH,OAAO,QAAsB,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB;QAO1B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,8BAA8B,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAQ,CAAC;IACtF,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,IAAiB;QACnD,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;SACnC,CAAC;QAEF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;QACpD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YACrD,GAAG,IAAI;YACP,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAI,IAAI,CAAC,OAA8C,EAAE;SACjF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,IAAI,IAAI,MAAM,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @orchestrator-claude/definitions
|
|
3
|
+
*
|
|
4
|
+
* Built-in definitions (agents, skills, hooks, workflows, KB seeds)
|
|
5
|
+
* for the Orchestrator ecosystem.
|
|
6
|
+
*/
|
|
7
|
+
export { ManifestLoader } from './manifest/ManifestLoader.js';
|
|
8
|
+
export { SeedCommand } from './commands/SeedCommand.js';
|
|
9
|
+
export { DiffCommand } from './commands/DiffCommand.js';
|
|
10
|
+
export { ApiClient } from './http/ApiClient.js';
|
|
11
|
+
export type { ManifestSchema, DefinitionEntry, DefinitionCategory, SeedPayload, SeedResult, DiffEntry, DiffResult, } from './manifest/types.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,YAAY,EACV,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,SAAS,EACT,UAAU,GACX,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @orchestrator-claude/definitions
|
|
3
|
+
*
|
|
4
|
+
* Built-in definitions (agents, skills, hooks, workflows, KB seeds)
|
|
5
|
+
* for the Orchestrator ecosystem.
|
|
6
|
+
*/
|
|
7
|
+
export { ManifestLoader } from './manifest/ManifestLoader.js';
|
|
8
|
+
export { SeedCommand } from './commands/SeedCommand.js';
|
|
9
|
+
export { DiffCommand } from './commands/DiffCommand.js';
|
|
10
|
+
export { ApiClient } from './http/ApiClient.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ManifestSchema, DefinitionEntry, DefinitionCategory } from './types.js';
|
|
2
|
+
export declare class ManifestLoader {
|
|
3
|
+
private manifest;
|
|
4
|
+
private readonly packageRoot;
|
|
5
|
+
constructor(packageRoot?: string);
|
|
6
|
+
/**
|
|
7
|
+
* Loads and validates manifest.json from the package root.
|
|
8
|
+
*/
|
|
9
|
+
load(): ManifestSchema;
|
|
10
|
+
/**
|
|
11
|
+
* Validates manifest structure.
|
|
12
|
+
*/
|
|
13
|
+
validate(manifest: ManifestSchema): void;
|
|
14
|
+
/**
|
|
15
|
+
* Verifies file checksums match manifest entries.
|
|
16
|
+
* Returns list of mismatched entries.
|
|
17
|
+
*/
|
|
18
|
+
verifyChecksums(): {
|
|
19
|
+
valid: DefinitionEntry[];
|
|
20
|
+
invalid: DefinitionEntry[];
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Reads the content of a definition file.
|
|
24
|
+
*/
|
|
25
|
+
readDefinitionContent(entry: DefinitionEntry): string;
|
|
26
|
+
/**
|
|
27
|
+
* Returns all definition entries across all categories.
|
|
28
|
+
*/
|
|
29
|
+
getAllEntries(): Array<DefinitionEntry & {
|
|
30
|
+
category: DefinitionCategory;
|
|
31
|
+
}>;
|
|
32
|
+
getPackageRoot(): string;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=ManifestLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManifestLoader.d.ts","sourceRoot":"","sources":["../../src/manifest/ManifestLoader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAItF,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,WAAW,CAAC,EAAE,MAAM;IAKhC;;OAEG;IACH,IAAI,IAAI,cAAc;IAqBtB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAuBxC;;;OAGG;IACH,eAAe,IAAI;QAAE,KAAK,EAAE,eAAe,EAAE,CAAC;QAAC,OAAO,EAAE,eAAe,EAAE,CAAA;KAAE;IAiC3E;;OAEG;IACH,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM;IAQrD;;OAEG;IACH,aAAa,IAAI,KAAK,CAAC,eAAe,GAAG;QAAE,QAAQ,EAAE,kBAAkB,CAAA;KAAE,CAAC;IAc1E,cAAc,IAAI,MAAM;CAGzB"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
2
|
+
import { resolve, dirname } from 'node:path';
|
|
3
|
+
import { createHash } from 'node:crypto';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
6
|
+
export class ManifestLoader {
|
|
7
|
+
manifest = null;
|
|
8
|
+
packageRoot;
|
|
9
|
+
constructor(packageRoot) {
|
|
10
|
+
// Default to the definitions package root (two levels up from dist/manifest/)
|
|
11
|
+
this.packageRoot = packageRoot ?? resolve(__dirname, '../..');
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Loads and validates manifest.json from the package root.
|
|
15
|
+
*/
|
|
16
|
+
load() {
|
|
17
|
+
if (this.manifest) {
|
|
18
|
+
return this.manifest;
|
|
19
|
+
}
|
|
20
|
+
const manifestPath = resolve(this.packageRoot, 'manifest.json');
|
|
21
|
+
if (!existsSync(manifestPath)) {
|
|
22
|
+
throw new Error(`manifest.json not found at ${manifestPath}. Run 'npm run generate-manifest' first.`);
|
|
23
|
+
}
|
|
24
|
+
const raw = readFileSync(manifestPath, 'utf-8');
|
|
25
|
+
const parsed = JSON.parse(raw);
|
|
26
|
+
this.validate(parsed);
|
|
27
|
+
this.manifest = parsed;
|
|
28
|
+
return parsed;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Validates manifest structure.
|
|
32
|
+
*/
|
|
33
|
+
validate(manifest) {
|
|
34
|
+
if (manifest.schema !== 'orchestrator-definitions/v1') {
|
|
35
|
+
throw new Error(`Unsupported manifest schema: ${manifest.schema}. Expected 'orchestrator-definitions/v1'.`);
|
|
36
|
+
}
|
|
37
|
+
if (!manifest.namespace || typeof manifest.namespace !== 'string') {
|
|
38
|
+
throw new Error('Manifest must have a namespace string.');
|
|
39
|
+
}
|
|
40
|
+
if (!manifest.version || typeof manifest.version !== 'string') {
|
|
41
|
+
throw new Error('Manifest must have a version string.');
|
|
42
|
+
}
|
|
43
|
+
const categories = ['agents', 'skills', 'hooks', 'workflows', 'kb'];
|
|
44
|
+
for (const cat of categories) {
|
|
45
|
+
if (!Array.isArray(manifest.definitions[cat])) {
|
|
46
|
+
throw new Error(`Manifest definitions.${cat} must be an array.`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Verifies file checksums match manifest entries.
|
|
52
|
+
* Returns list of mismatched entries.
|
|
53
|
+
*/
|
|
54
|
+
verifyChecksums() {
|
|
55
|
+
const manifest = this.load();
|
|
56
|
+
const valid = [];
|
|
57
|
+
const invalid = [];
|
|
58
|
+
const allEntries = [
|
|
59
|
+
...manifest.definitions.agents,
|
|
60
|
+
...manifest.definitions.skills,
|
|
61
|
+
...manifest.definitions.hooks,
|
|
62
|
+
...manifest.definitions.workflows,
|
|
63
|
+
...manifest.definitions.kb,
|
|
64
|
+
];
|
|
65
|
+
for (const entry of allEntries) {
|
|
66
|
+
const filePath = resolve(this.packageRoot, entry.file);
|
|
67
|
+
if (!existsSync(filePath)) {
|
|
68
|
+
invalid.push(entry);
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
72
|
+
const computed = `sha256:${createHash('sha256').update(content).digest('hex')}`;
|
|
73
|
+
if (computed === entry.checksum) {
|
|
74
|
+
valid.push(entry);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
invalid.push(entry);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return { valid, invalid };
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Reads the content of a definition file.
|
|
84
|
+
*/
|
|
85
|
+
readDefinitionContent(entry) {
|
|
86
|
+
const filePath = resolve(this.packageRoot, entry.file);
|
|
87
|
+
if (!existsSync(filePath)) {
|
|
88
|
+
throw new Error(`Definition file not found: ${filePath}`);
|
|
89
|
+
}
|
|
90
|
+
return readFileSync(filePath, 'utf-8');
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Returns all definition entries across all categories.
|
|
94
|
+
*/
|
|
95
|
+
getAllEntries() {
|
|
96
|
+
const manifest = this.load();
|
|
97
|
+
const entries = [];
|
|
98
|
+
const categories = ['agents', 'skills', 'hooks', 'workflows', 'kb'];
|
|
99
|
+
for (const cat of categories) {
|
|
100
|
+
for (const entry of manifest.definitions[cat]) {
|
|
101
|
+
entries.push({ ...entry, category: cat });
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return entries;
|
|
105
|
+
}
|
|
106
|
+
getPackageRoot() {
|
|
107
|
+
return this.packageRoot;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=ManifestLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManifestLoader.js","sourceRoot":"","sources":["../../src/manifest/ManifestLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manifest schema types for orchestrator-definitions/v1
|
|
3
|
+
*/
|
|
4
|
+
export interface DefinitionEntry {
|
|
5
|
+
slug: string;
|
|
6
|
+
file: string;
|
|
7
|
+
version: string;
|
|
8
|
+
checksum: string;
|
|
9
|
+
supersedes: string | null;
|
|
10
|
+
metadata: Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
export interface ManifestSchema {
|
|
13
|
+
schema: 'orchestrator-definitions/v1';
|
|
14
|
+
namespace: string;
|
|
15
|
+
version: string;
|
|
16
|
+
generatedAt: string;
|
|
17
|
+
definitions: {
|
|
18
|
+
agents: DefinitionEntry[];
|
|
19
|
+
skills: DefinitionEntry[];
|
|
20
|
+
hooks: DefinitionEntry[];
|
|
21
|
+
workflows: DefinitionEntry[];
|
|
22
|
+
kb: DefinitionEntry[];
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export type DefinitionCategory = keyof ManifestSchema['definitions'];
|
|
26
|
+
export interface SeedPayload {
|
|
27
|
+
manifest: ManifestSchema;
|
|
28
|
+
contents: Record<string, string>;
|
|
29
|
+
}
|
|
30
|
+
export interface SeedResult {
|
|
31
|
+
success: boolean;
|
|
32
|
+
summary: {
|
|
33
|
+
agentsSeeded: number;
|
|
34
|
+
agentsFailed: number;
|
|
35
|
+
skillsSeeded: number;
|
|
36
|
+
skillsFailed: number;
|
|
37
|
+
hooksSeeded: number;
|
|
38
|
+
hooksFailed: number;
|
|
39
|
+
workflowsSeeded: number;
|
|
40
|
+
workflowsFailed: number;
|
|
41
|
+
kbSeeded: number;
|
|
42
|
+
kbFailed: number;
|
|
43
|
+
};
|
|
44
|
+
errors: string[];
|
|
45
|
+
warnings: string[];
|
|
46
|
+
}
|
|
47
|
+
export interface DiffEntry {
|
|
48
|
+
slug: string;
|
|
49
|
+
category: DefinitionCategory;
|
|
50
|
+
status: 'new' | 'updated' | 'unchanged' | 'user-modified';
|
|
51
|
+
localVersion: string;
|
|
52
|
+
remoteVersion: string | null;
|
|
53
|
+
remoteOrigin: string | null;
|
|
54
|
+
}
|
|
55
|
+
export interface DiffResult {
|
|
56
|
+
entries: DiffEntry[];
|
|
57
|
+
hasChanges: boolean;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/manifest/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,6BAA6B,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,MAAM,EAAE,eAAe,EAAE,CAAC;QAC1B,MAAM,EAAE,eAAe,EAAE,CAAC;QAC1B,KAAK,EAAE,eAAe,EAAE,CAAC;QACzB,SAAS,EAAE,eAAe,EAAE,CAAC;QAC7B,EAAE,EAAE,eAAe,EAAE,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,CAAC;AAErE,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,eAAe,CAAC;IAC1D,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/manifest/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Build-time script: generates manifest.json with SHA256 checksums
|
|
4
|
+
* for all definition files in the package.
|
|
5
|
+
*
|
|
6
|
+
* Usage: node --loader ts-node/esm src/scripts/generate-manifest.ts
|
|
7
|
+
* Or: npx tsx src/scripts/generate-manifest.ts
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=generate-manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-manifest.d.ts","sourceRoot":"","sources":["../../src/scripts/generate-manifest.ts"],"names":[],"mappings":";AACA;;;;;;GAMG"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Build-time script: generates manifest.json with SHA256 checksums
|
|
4
|
+
* for all definition files in the package.
|
|
5
|
+
*
|
|
6
|
+
* Usage: node --loader ts-node/esm src/scripts/generate-manifest.ts
|
|
7
|
+
* Or: npx tsx src/scripts/generate-manifest.ts
|
|
8
|
+
*/
|
|
9
|
+
import { readFileSync, writeFileSync, readdirSync, statSync, existsSync } from 'node:fs';
|
|
10
|
+
import { resolve, join, dirname } from 'node:path';
|
|
11
|
+
import { createHash } from 'node:crypto';
|
|
12
|
+
import { fileURLToPath } from 'node:url';
|
|
13
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
14
|
+
const PACKAGE_ROOT = resolve(__dirname, '../..');
|
|
15
|
+
function sha256(content) {
|
|
16
|
+
return `sha256:${createHash('sha256').update(content).digest('hex')}`;
|
|
17
|
+
}
|
|
18
|
+
function getPackageVersion() {
|
|
19
|
+
const pkg = JSON.parse(readFileSync(join(PACKAGE_ROOT, 'package.json'), 'utf-8'));
|
|
20
|
+
return pkg.version;
|
|
21
|
+
}
|
|
22
|
+
function scanDirectory(dir, extension) {
|
|
23
|
+
const fullDir = resolve(PACKAGE_ROOT, dir);
|
|
24
|
+
if (!existsSync(fullDir))
|
|
25
|
+
return [];
|
|
26
|
+
const files = [];
|
|
27
|
+
const entries = readdirSync(fullDir);
|
|
28
|
+
for (const entry of entries) {
|
|
29
|
+
const fullPath = join(fullDir, entry);
|
|
30
|
+
const stat = statSync(fullPath);
|
|
31
|
+
if (stat.isFile() && entry.endsWith(extension)) {
|
|
32
|
+
files.push(join(dir, entry));
|
|
33
|
+
}
|
|
34
|
+
else if (stat.isDirectory()) {
|
|
35
|
+
// Recurse into subdirectories (for skills/)
|
|
36
|
+
const subFiles = scanSubDirectory(fullPath, extension, join(dir, entry));
|
|
37
|
+
files.push(...subFiles);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return files.sort();
|
|
41
|
+
}
|
|
42
|
+
function scanSubDirectory(dirPath, extension, relativePath) {
|
|
43
|
+
const files = [];
|
|
44
|
+
const entries = readdirSync(dirPath);
|
|
45
|
+
for (const entry of entries) {
|
|
46
|
+
const fullPath = join(dirPath, entry);
|
|
47
|
+
const stat = statSync(fullPath);
|
|
48
|
+
if (stat.isFile() && entry.endsWith(extension)) {
|
|
49
|
+
files.push(join(relativePath, entry));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return files;
|
|
53
|
+
}
|
|
54
|
+
function slugFromFile(filePath) {
|
|
55
|
+
const parts = filePath.split('/');
|
|
56
|
+
const filename = parts[parts.length - 1] ?? '';
|
|
57
|
+
// For skills, use the directory name as slug (e.g., skills/release/SKILL.md -> release)
|
|
58
|
+
if (filePath.startsWith('skills/') && filename === 'SKILL.md') {
|
|
59
|
+
return parts[1] ?? filename.replace(/\.(md|json|sh)$/, '');
|
|
60
|
+
}
|
|
61
|
+
// For other files, strip extension
|
|
62
|
+
return filename.replace(/\.(md|json|sh)$/, '');
|
|
63
|
+
}
|
|
64
|
+
function buildEntry(filePath, version) {
|
|
65
|
+
const absolutePath = resolve(PACKAGE_ROOT, filePath);
|
|
66
|
+
const content = readFileSync(absolutePath, 'utf-8');
|
|
67
|
+
return {
|
|
68
|
+
slug: slugFromFile(filePath),
|
|
69
|
+
file: filePath,
|
|
70
|
+
version,
|
|
71
|
+
checksum: sha256(content),
|
|
72
|
+
supersedes: null,
|
|
73
|
+
metadata: {},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function generateManifest() {
|
|
77
|
+
const version = getPackageVersion();
|
|
78
|
+
// Scan all categories
|
|
79
|
+
const agentFiles = scanDirectory('agents', '.md');
|
|
80
|
+
const skillFiles = scanDirectory('skills', '.md');
|
|
81
|
+
const hookFiles = scanDirectory('hooks', '.sh');
|
|
82
|
+
const workflowFiles = scanDirectory('workflows', '.json');
|
|
83
|
+
const kbFiles = scanDirectory('kb', '.md');
|
|
84
|
+
const manifest = {
|
|
85
|
+
schema: 'orchestrator-definitions/v1',
|
|
86
|
+
namespace: 'orchestrator',
|
|
87
|
+
version,
|
|
88
|
+
generatedAt: new Date().toISOString(),
|
|
89
|
+
definitions: {
|
|
90
|
+
agents: agentFiles.map((f) => buildEntry(f, '1.0.0')),
|
|
91
|
+
skills: skillFiles.map((f) => buildEntry(f, '1.0.0')),
|
|
92
|
+
hooks: hookFiles.map((f) => buildEntry(f, '1.0.0')),
|
|
93
|
+
workflows: workflowFiles.map((f) => buildEntry(f, '1.0.0')),
|
|
94
|
+
kb: kbFiles.map((f) => buildEntry(f, '1.0.0')),
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
return manifest;
|
|
98
|
+
}
|
|
99
|
+
// Main
|
|
100
|
+
const manifest = generateManifest();
|
|
101
|
+
const outputPath = resolve(PACKAGE_ROOT, 'manifest.json');
|
|
102
|
+
writeFileSync(outputPath, JSON.stringify(manifest, null, 2) + '\n');
|
|
103
|
+
const totalDefs = manifest.definitions.agents.length +
|
|
104
|
+
manifest.definitions.skills.length +
|
|
105
|
+
manifest.definitions.hooks.length +
|
|
106
|
+
manifest.definitions.workflows.length +
|
|
107
|
+
manifest.definitions.kb.length;
|
|
108
|
+
console.log(`Generated manifest.json (${totalDefs} definitions, version ${manifest.version})`);
|
|
109
|
+
console.log(` agents: ${manifest.definitions.agents.length}`);
|
|
110
|
+
console.log(` skills: ${manifest.definitions.skills.length}`);
|
|
111
|
+
console.log(` hooks: ${manifest.definitions.hooks.length}`);
|
|
112
|
+
console.log(` workflows: ${manifest.definitions.workflows.length}`);
|
|
113
|
+
console.log(` kb: ${manifest.definitions.kb.length}`);
|
|
114
|
+
//# sourceMappingURL=generate-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-manifest.js","sourceRoot":"","sources":["../../src/scripts/generate-manifest.ts"],"names":[],"mappings":"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"}
|