@wayai/cli 0.1.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/dist/commands/login.d.ts +4 -0
- package/dist/commands/login.js +123 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +4 -0
- package/dist/commands/logout.js +14 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/pull.d.ts +4 -0
- package/dist/commands/pull.js +73 -0
- package/dist/commands/pull.js.map +1 -0
- package/dist/commands/push.d.ts +4 -0
- package/dist/commands/push.js +90 -0
- package/dist/commands/push.js.map +1 -0
- package/dist/commands/status.d.ts +4 -0
- package/dist/commands/status.js +26 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +90 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-client.d.ts +18 -0
- package/dist/lib/api-client.js +50 -0
- package/dist/lib/api-client.js.map +1 -0
- package/dist/lib/auth.d.ts +59 -0
- package/dist/lib/auth.js +191 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/config.d.ts +14 -0
- package/dist/lib/config.js +37 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/diff-display.d.ts +8 -0
- package/dist/lib/diff-display.js +37 -0
- package/dist/lib/diff-display.js.map +1 -0
- package/dist/lib/parser.d.ts +11 -0
- package/dist/lib/parser.js +64 -0
- package/dist/lib/parser.js.map +1 -0
- package/dist/lib/types.d.ts +106 -0
- package/dist/lib/types.js +5 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utils.d.ts +16 -0
- package/dist/lib/utils.js +38 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/yaml-writer.d.ts +13 -0
- package/dist/lib/yaml-writer.js +101 -0
- package/dist/lib/yaml-writer.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YAML writer — converts HubAsCodePayload to wayai.yaml + agents/*.md files
|
|
3
|
+
* Reverse of parser.ts
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'node:fs';
|
|
6
|
+
import * as path from 'node:path';
|
|
7
|
+
import * as yaml from 'js-yaml';
|
|
8
|
+
import { slugify } from './utils.js';
|
|
9
|
+
/**
|
|
10
|
+
* Write a HubAsCodePayload to disk as wayai.yaml + agents/*.md files.
|
|
11
|
+
*
|
|
12
|
+
* - Creates `wayai.yaml` with `instructions:` referencing agent .md file paths
|
|
13
|
+
* - Creates `agents/<slug>.md` for each agent with instructions
|
|
14
|
+
* - Removes orphan .md files in agents/ that don't match any current agent
|
|
15
|
+
*/
|
|
16
|
+
export function writeHubFolder(hubFolder, payload) {
|
|
17
|
+
// Ensure directories exist
|
|
18
|
+
const agentsDir = path.join(hubFolder, 'agents');
|
|
19
|
+
if (!fs.existsSync(hubFolder)) {
|
|
20
|
+
fs.mkdirSync(hubFolder, { recursive: true });
|
|
21
|
+
}
|
|
22
|
+
if (!fs.existsSync(agentsDir)) {
|
|
23
|
+
fs.mkdirSync(agentsDir, { recursive: true });
|
|
24
|
+
}
|
|
25
|
+
// Build YAML-safe payload with file references instead of inline instructions
|
|
26
|
+
const yamlPayload = buildYamlPayload(payload);
|
|
27
|
+
const agentFiles = extractAgentFiles(payload);
|
|
28
|
+
// Write wayai.yaml
|
|
29
|
+
const yamlContent = yaml.dump(yamlPayload, {
|
|
30
|
+
lineWidth: -1, // don't wrap lines
|
|
31
|
+
noRefs: true, // don't use YAML anchors
|
|
32
|
+
quotingType: '"',
|
|
33
|
+
forceQuotes: false,
|
|
34
|
+
sortKeys: false,
|
|
35
|
+
});
|
|
36
|
+
fs.writeFileSync(path.join(hubFolder, 'wayai.yaml'), yamlContent, 'utf-8');
|
|
37
|
+
// Write agent instruction files
|
|
38
|
+
const currentSlugs = new Set();
|
|
39
|
+
for (const { slug, content } of agentFiles) {
|
|
40
|
+
currentSlugs.add(slug);
|
|
41
|
+
fs.writeFileSync(path.join(agentsDir, `${slug}.md`), content, 'utf-8');
|
|
42
|
+
}
|
|
43
|
+
// Remove orphan .md files
|
|
44
|
+
if (fs.existsSync(agentsDir)) {
|
|
45
|
+
const existingFiles = fs.readdirSync(agentsDir);
|
|
46
|
+
for (const file of existingFiles) {
|
|
47
|
+
if (file.endsWith('.md')) {
|
|
48
|
+
const slug = file.slice(0, -3);
|
|
49
|
+
if (!currentSlugs.has(slug)) {
|
|
50
|
+
fs.unlinkSync(path.join(agentsDir, file));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Build the YAML-safe version of the payload.
|
|
58
|
+
* Replaces inline instructions with file path references.
|
|
59
|
+
*/
|
|
60
|
+
function buildYamlPayload(payload) {
|
|
61
|
+
const result = {
|
|
62
|
+
version: payload.version,
|
|
63
|
+
hub_id: payload.hub_id,
|
|
64
|
+
hub_environment: payload.hub_environment,
|
|
65
|
+
hub: payload.hub,
|
|
66
|
+
};
|
|
67
|
+
if (payload.agents && payload.agents.length > 0) {
|
|
68
|
+
result.agents = payload.agents.map((agent) => {
|
|
69
|
+
const entry = { ...agent };
|
|
70
|
+
// Replace inline instructions with file reference
|
|
71
|
+
if (agent.instructions) {
|
|
72
|
+
const slug = slugify(agent.name);
|
|
73
|
+
entry.instructions = `agents/${slug}.md`;
|
|
74
|
+
}
|
|
75
|
+
return entry;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
if (payload.states && payload.states.length > 0) {
|
|
79
|
+
result.states = payload.states;
|
|
80
|
+
}
|
|
81
|
+
if (payload.connections && payload.connections.length > 0) {
|
|
82
|
+
result.connections = payload.connections;
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Extract agent instruction files from the payload.
|
|
88
|
+
*/
|
|
89
|
+
function extractAgentFiles(payload) {
|
|
90
|
+
const files = [];
|
|
91
|
+
for (const agent of payload.agents || []) {
|
|
92
|
+
if (agent.instructions) {
|
|
93
|
+
files.push({
|
|
94
|
+
slug: slugify(agent.name),
|
|
95
|
+
content: agent.instructions,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return files;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=yaml-writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yaml-writer.js","sourceRoot":"","sources":["../../src/lib/yaml-writer.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@wayai/cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "WayAI CLI — sync hub configuration between local files and the platform",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"wayai": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"prepublishOnly": "tsc",
|
|
12
|
+
"dev": "tsc --watch",
|
|
13
|
+
"test": "vitest run",
|
|
14
|
+
"test:watch": "vitest"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist"
|
|
18
|
+
],
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public"
|
|
21
|
+
},
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "https://github.com/wayai-pro/platform.git",
|
|
25
|
+
"directory": "cli"
|
|
26
|
+
},
|
|
27
|
+
"keywords": ["wayai", "cli", "hub", "ai", "config"],
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"js-yaml": "^4.1.0"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@types/js-yaml": "^4.0.9",
|
|
34
|
+
"@types/node": "^20.11.0",
|
|
35
|
+
"typescript": "^5.5.0",
|
|
36
|
+
"vitest": "^3.2.0"
|
|
37
|
+
},
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=18.0.0"
|
|
40
|
+
}
|
|
41
|
+
}
|