real-link-ai 1.6.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/README.md +79 -0
- package/dist/commands/agent.d.ts +3 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +120 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/asset.d.ts +3 -0
- package/dist/commands/asset.d.ts.map +1 -0
- package/dist/commands/asset.js +53 -0
- package/dist/commands/asset.js.map +1 -0
- package/dist/commands/bug.d.ts +3 -0
- package/dist/commands/bug.d.ts.map +1 -0
- package/dist/commands/bug.js +179 -0
- package/dist/commands/bug.js.map +1 -0
- package/dist/commands/call.d.ts +3 -0
- package/dist/commands/call.d.ts.map +1 -0
- package/dist/commands/call.js +116 -0
- package/dist/commands/call.js.map +1 -0
- package/dist/commands/game.d.ts +3 -0
- package/dist/commands/game.d.ts.map +1 -0
- package/dist/commands/game.js +291 -0
- package/dist/commands/game.js.map +1 -0
- package/dist/commands/learning.d.ts +3 -0
- package/dist/commands/learning.d.ts.map +1 -0
- package/dist/commands/learning.js +83 -0
- package/dist/commands/learning.js.map +1 -0
- package/dist/commands/login.d.ts +5 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +102 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/loop.d.ts +3 -0
- package/dist/commands/loop.d.ts.map +1 -0
- package/dist/commands/loop.js +382 -0
- package/dist/commands/loop.js.map +1 -0
- package/dist/commands/memory.d.ts +3 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +80 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/message.d.ts +3 -0
- package/dist/commands/message.d.ts.map +1 -0
- package/dist/commands/message.js +80 -0
- package/dist/commands/message.js.map +1 -0
- package/dist/commands/onboarding.d.ts +3 -0
- package/dist/commands/onboarding.d.ts.map +1 -0
- package/dist/commands/onboarding.js +100 -0
- package/dist/commands/onboarding.js.map +1 -0
- package/dist/commands/ops.d.ts +3 -0
- package/dist/commands/ops.d.ts.map +1 -0
- package/dist/commands/ops.js +80 -0
- package/dist/commands/ops.js.map +1 -0
- package/dist/commands/orchestrate.d.ts +3 -0
- package/dist/commands/orchestrate.d.ts.map +1 -0
- package/dist/commands/orchestrate.js +91 -0
- package/dist/commands/orchestrate.js.map +1 -0
- package/dist/commands/plan.d.ts +3 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +157 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/signal.d.ts +3 -0
- package/dist/commands/signal.d.ts.map +1 -0
- package/dist/commands/signal.js +50 -0
- package/dist/commands/signal.js.map +1 -0
- package/dist/commands/system.d.ts +3 -0
- package/dist/commands/system.d.ts.map +1 -0
- package/dist/commands/system.js +110 -0
- package/dist/commands/system.js.map +1 -0
- package/dist/commands/task.d.ts +3 -0
- package/dist/commands/task.d.ts.map +1 -0
- package/dist/commands/task.js +222 -0
- package/dist/commands/task.js.map +1 -0
- package/dist/commands/wish.d.ts +3 -0
- package/dist/commands/wish.d.ts.map +1 -0
- package/dist/commands/wish.js +133 -0
- package/dist/commands/wish.js.map +1 -0
- package/dist/commands/work.d.ts +3 -0
- package/dist/commands/work.d.ts.map +1 -0
- package/dist/commands/work.js +533 -0
- package/dist/commands/work.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api.d.ts +11 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +74 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/config.d.ts +23 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +50 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/doc-sync.d.ts +31 -0
- package/dist/lib/doc-sync.d.ts.map +1 -0
- package/dist/lib/doc-sync.js +145 -0
- package/dist/lib/doc-sync.js.map +1 -0
- package/dist/lib/production-pack.d.ts +73 -0
- package/dist/lib/production-pack.d.ts.map +1 -0
- package/dist/lib/production-pack.js +282 -0
- package/dist/lib/production-pack.js.map +1 -0
- package/dist/lib/storyworld-sync.d.ts +30 -0
- package/dist/lib/storyworld-sync.d.ts.map +1 -0
- package/dist/lib/storyworld-sync.js +437 -0
- package/dist/lib/storyworld-sync.js.map +1 -0
- package/dist/lib/thriller-vn.d.ts +38 -0
- package/dist/lib/thriller-vn.d.ts.map +1 -0
- package/dist/lib/thriller-vn.js +1106 -0
- package/dist/lib/thriller-vn.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.gameCommand = void 0;
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
5
|
+
const commander_1 = require("commander");
|
|
6
|
+
const api_js_1 = require("../lib/api.js");
|
|
7
|
+
const doc_sync_js_1 = require("../lib/doc-sync.js");
|
|
8
|
+
const production_pack_js_1 = require("../lib/production-pack.js");
|
|
9
|
+
const storyworld_sync_js_1 = require("../lib/storyworld-sync.js");
|
|
10
|
+
const thriller_vn_js_1 = require("../lib/thriller-vn.js");
|
|
11
|
+
exports.gameCommand = new commander_1.Command("game")
|
|
12
|
+
.description("Game project management");
|
|
13
|
+
function printSyncedDocs(results) {
|
|
14
|
+
for (const result of results) {
|
|
15
|
+
console.log(result.relativePath);
|
|
16
|
+
console.log(` memory: ${result.memoryKey || "(skipped)"}`);
|
|
17
|
+
console.log(` artifact: ${result.artifactId || "(skipped)"}`);
|
|
18
|
+
console.log(` lines: ${result.lineCount}`);
|
|
19
|
+
console.log(` sha256: ${result.sha256.slice(0, 16)}...`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.gameCommand
|
|
23
|
+
.command("create")
|
|
24
|
+
.description("Create a new game project")
|
|
25
|
+
.requiredOption("-n, --name <name>", "Game name")
|
|
26
|
+
.option("-d, --description <desc>", "Game description")
|
|
27
|
+
.option("-e, --engine <engine>", "Engine (phaser|three|playcanvas)", "phaser")
|
|
28
|
+
.option("--path <path>", "Repo path")
|
|
29
|
+
.action(async (opts) => {
|
|
30
|
+
try {
|
|
31
|
+
const repoPath = opts.path || `games/${opts.name.toLowerCase().replace(/\s+/g, "-")}`;
|
|
32
|
+
const result = await (0, api_js_1.apiCall)("/games/create", {
|
|
33
|
+
body: {
|
|
34
|
+
name: opts.name,
|
|
35
|
+
description: opts.description || "",
|
|
36
|
+
engine: opts.engine,
|
|
37
|
+
repoPath,
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
console.log(`Game created: ${result.id}`);
|
|
41
|
+
console.log(`Name: ${opts.name}`);
|
|
42
|
+
console.log(`Engine: ${opts.engine}`);
|
|
43
|
+
console.log(`Path: ${repoPath}`);
|
|
44
|
+
console.log(`\nNext: copy template and write a GDD`);
|
|
45
|
+
console.log(` cp -r templates/${opts.engine === "three" ? "three-3d" : opts.engine === "playcanvas" ? "playcanvas" : "phaser-2d"}/ ${repoPath}/`);
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
console.error(`Failed: ${err.message}`);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
exports.gameCommand
|
|
52
|
+
.command("list")
|
|
53
|
+
.description("List all game projects")
|
|
54
|
+
.action(async () => {
|
|
55
|
+
try {
|
|
56
|
+
const games = await (0, api_js_1.apiCall)("/games");
|
|
57
|
+
if (games.length === 0) {
|
|
58
|
+
console.log("No games. Create one: rlcreate game create -n 'My Game'");
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
for (const g of games) {
|
|
62
|
+
console.log(` ${g.status.padEnd(10)} ${g.name} (${g.engine}) — ${g.id}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
console.error(`Failed: ${err.message}`);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
exports.gameCommand
|
|
70
|
+
.command("status <gameId>")
|
|
71
|
+
.description("Show game status with task summary")
|
|
72
|
+
.action(async (gameId) => {
|
|
73
|
+
try {
|
|
74
|
+
const game = await (0, api_js_1.apiCall)(`/games/${gameId}`);
|
|
75
|
+
console.log(`Game: ${game.name}`);
|
|
76
|
+
console.log(`Status: ${game.status}`);
|
|
77
|
+
console.log(`Engine: ${game.engine}`);
|
|
78
|
+
const summary = game.taskSummary;
|
|
79
|
+
if (summary && summary.length > 0) {
|
|
80
|
+
console.log(`\nTasks:`);
|
|
81
|
+
for (const s of summary) {
|
|
82
|
+
console.log(` ${s.status}: ${s.count}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
console.error(`Failed: ${err.message}`);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
exports.gameCommand
|
|
91
|
+
.command("apply-pack")
|
|
92
|
+
.description("Compile a repo production pack into a game, plan, tasks, and artifacts")
|
|
93
|
+
.requiredOption("--pack <path>", "Path to production-pack.json")
|
|
94
|
+
.option("--game-id <id>", "Attach the pack to an existing game")
|
|
95
|
+
.option("--plan-id <id>", "Sync the pack into an existing plan instead of creating a new one")
|
|
96
|
+
.option("--dry-run", "Validate and summarize the pack without hitting the API")
|
|
97
|
+
.action(async (opts) => {
|
|
98
|
+
try {
|
|
99
|
+
const result = await (0, production_pack_js_1.applyProductionPack)({
|
|
100
|
+
packPath: opts.pack,
|
|
101
|
+
gameId: opts.gameId,
|
|
102
|
+
planId: opts.planId,
|
|
103
|
+
dryRun: !!opts.dryRun,
|
|
104
|
+
});
|
|
105
|
+
console.log(`Pack: ${result.packPath}`);
|
|
106
|
+
console.log(`Title: ${result.title}`);
|
|
107
|
+
console.log(`Game: ${result.gameId || "(planned)"}`);
|
|
108
|
+
console.log(`Game created: ${result.gameCreated ? "yes" : "no"}`);
|
|
109
|
+
if (result.planId)
|
|
110
|
+
console.log(`Plan: ${result.planId}`);
|
|
111
|
+
console.log(`Tasks created: ${result.tasksCreated}`);
|
|
112
|
+
console.log(`Tasks synced: ${result.tasksSynced}`);
|
|
113
|
+
console.log(`Artifacts linked: ${result.artifactsLinked}`);
|
|
114
|
+
console.log(`Task keys: ${result.taskKeys.join(", ")}`);
|
|
115
|
+
if (opts.dryRun) {
|
|
116
|
+
console.log("Dry run only. No studio mutation was sent.");
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
console.error(`Failed: ${err.message}`);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
exports.gameCommand
|
|
124
|
+
.command("sync-doc <files...>")
|
|
125
|
+
.description("Sync local markdown/docs into shared memory and optional task artifacts")
|
|
126
|
+
.option("--task-id <id>", "Attach or update artifacts on a task")
|
|
127
|
+
.option("--game-id <id>", "Game context for memory key metadata")
|
|
128
|
+
.option("--namespace <ns>", "Memory namespace", "shared")
|
|
129
|
+
.option("--memory-key-prefix <prefix>", "Override the default memory key prefix")
|
|
130
|
+
.option("--artifact-type <type>", "Artifact type", "doc")
|
|
131
|
+
.option("--role <role>", "Artifact role", "context")
|
|
132
|
+
.option("--status <status>", "Artifact status", "delivered")
|
|
133
|
+
.option("--title <title>", "Override the artifact title for a single file")
|
|
134
|
+
.option("--summary <text>", "Override the artifact summary")
|
|
135
|
+
.option("--layer <layer>", "Memory layer (episodic|semantic|procedural|working)", "semantic")
|
|
136
|
+
.option("--agent-id <id>", "Override the configured agent ID")
|
|
137
|
+
.option("--memory-only", "Only sync to shared memory")
|
|
138
|
+
.option("--artifact-only", "Only sync to task artifacts")
|
|
139
|
+
.option("--watch", "Keep watching the files and resync on change")
|
|
140
|
+
.action(async (files, opts) => {
|
|
141
|
+
const runSync = async (targetFiles) => {
|
|
142
|
+
const results = await (0, doc_sync_js_1.syncDocs)({
|
|
143
|
+
files: targetFiles,
|
|
144
|
+
taskId: opts.taskId,
|
|
145
|
+
gameId: opts.gameId,
|
|
146
|
+
namespace: opts.namespace,
|
|
147
|
+
memoryKeyPrefix: opts.memoryKeyPrefix,
|
|
148
|
+
artifactType: opts.artifactType,
|
|
149
|
+
role: opts.role,
|
|
150
|
+
status: opts.status,
|
|
151
|
+
title: opts.title,
|
|
152
|
+
summary: opts.summary,
|
|
153
|
+
layer: opts.layer,
|
|
154
|
+
agentId: opts.agentId,
|
|
155
|
+
memoryOnly: !!opts.memoryOnly,
|
|
156
|
+
artifactOnly: !!opts.artifactOnly,
|
|
157
|
+
});
|
|
158
|
+
printSyncedDocs(results);
|
|
159
|
+
};
|
|
160
|
+
try {
|
|
161
|
+
await runSync(files);
|
|
162
|
+
}
|
|
163
|
+
catch (err) {
|
|
164
|
+
console.error(`Failed: ${err.message}`);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
if (!opts.watch) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
console.log("Watching for changes. Press Ctrl+C to stop.");
|
|
171
|
+
const timers = new Map();
|
|
172
|
+
for (const file of files) {
|
|
173
|
+
(0, node_fs_1.watch)(file, { persistent: true }, () => {
|
|
174
|
+
const existing = timers.get(file);
|
|
175
|
+
if (existing)
|
|
176
|
+
clearTimeout(existing);
|
|
177
|
+
timers.set(file, setTimeout(async () => {
|
|
178
|
+
try {
|
|
179
|
+
console.log(`\nResyncing ${file}...`);
|
|
180
|
+
await runSync([file]);
|
|
181
|
+
}
|
|
182
|
+
catch (err) {
|
|
183
|
+
console.error(`Resync failed for ${file}: ${err.message}`);
|
|
184
|
+
}
|
|
185
|
+
}, 250));
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
await new Promise(() => { });
|
|
189
|
+
});
|
|
190
|
+
exports.gameCommand
|
|
191
|
+
.command("sync-storyworld")
|
|
192
|
+
.description("Project a repo storyworld package into the studio content model")
|
|
193
|
+
.requiredOption("--game-id <id>", "Target game ID")
|
|
194
|
+
.requiredOption("--source <path>", "Path to compiled storyworld package JSON")
|
|
195
|
+
.option("--style-name <name>", "Default style name to upsert")
|
|
196
|
+
.option("--style-description <text>", "Default style description")
|
|
197
|
+
.option("--style-prompt <text>", "Default style prompt")
|
|
198
|
+
.option("--style-negative <text>", "Default style negative prompt")
|
|
199
|
+
.option("--generate-assets", "Generate portraits for characters and backgrounds for locations")
|
|
200
|
+
.action(async (opts) => {
|
|
201
|
+
try {
|
|
202
|
+
const result = await (0, storyworld_sync_js_1.syncStoryworldPackage)({
|
|
203
|
+
gameId: opts.gameId,
|
|
204
|
+
sourcePath: opts.source,
|
|
205
|
+
style: opts.stylePrompt
|
|
206
|
+
? {
|
|
207
|
+
name: opts.styleName,
|
|
208
|
+
description: opts.styleDescription,
|
|
209
|
+
prompt: opts.stylePrompt,
|
|
210
|
+
negativePrompt: opts.styleNegative,
|
|
211
|
+
}
|
|
212
|
+
: undefined,
|
|
213
|
+
generateAssets: !!opts.generateAssets,
|
|
214
|
+
});
|
|
215
|
+
console.log(`Game: ${result.gameId}`);
|
|
216
|
+
console.log(`Source: ${result.sourcePath}`);
|
|
217
|
+
console.log(`Style: ${result.styleId || "(unchanged)"}`);
|
|
218
|
+
console.log(`Projected: ${result.counts.characters} characters, ${result.counts.locations} locations, ${result.counts.variables} variables, ${result.counts.clues} clues, ${result.counts.nodes} nodes`);
|
|
219
|
+
console.log(`Generated: ${result.counts.generatedPortraits} portraits, ${result.counts.generatedBackgrounds} backgrounds`);
|
|
220
|
+
}
|
|
221
|
+
catch (err) {
|
|
222
|
+
console.error(`Failed: ${err.message}`);
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
exports.gameCommand
|
|
226
|
+
.command("thriller-vn")
|
|
227
|
+
.description("Bootstrap a thriller VN story world into real-link.ai")
|
|
228
|
+
.option("-n, --name <name>", "Game name override")
|
|
229
|
+
.option("-d, --description <desc>", "Game description override")
|
|
230
|
+
.option("-e, --engine <engine>", "Engine label for the created game", "storyworld-vn")
|
|
231
|
+
.option("--api <url>", "Studio API base URL", "https://api.real-link.ai")
|
|
232
|
+
.option("--template <path>", "Path to compiled thriller story.json")
|
|
233
|
+
.option("--workspace <id>", "Override workspace ID")
|
|
234
|
+
.option("--workspace-name <name>", "Create a new workspace first (requires bearer token)")
|
|
235
|
+
.option("--workspace-description <desc>", "Description for the new workspace")
|
|
236
|
+
.option("--bearer-token <token>", "Signed-in real-link.ai bearer token for workspace creation")
|
|
237
|
+
.option("--save-config", "Save the minted studio API key and workspace into ~/.reallink-agent.json")
|
|
238
|
+
.option("--plan-only", "Create the game, plan, and task DAG without executing the workflow")
|
|
239
|
+
.option("--publish", "Upload a lightweight VN shell and finalize publish")
|
|
240
|
+
.option("--generate-assets", "Generate portraits and backgrounds through the studio workflow")
|
|
241
|
+
.option("--no-generate-assets", "Skip studio asset generation tasks during execution")
|
|
242
|
+
.option("--version <version>", "Publish version", "0.1.0")
|
|
243
|
+
.option("--dry-run", "Plan the bootstrap without hitting the API")
|
|
244
|
+
.action(async (opts) => {
|
|
245
|
+
try {
|
|
246
|
+
const result = await (0, thriller_vn_js_1.bootstrapThrillerVN)({
|
|
247
|
+
api: opts.api,
|
|
248
|
+
name: opts.name,
|
|
249
|
+
description: opts.description,
|
|
250
|
+
engine: opts.engine,
|
|
251
|
+
template: opts.template,
|
|
252
|
+
workspace: opts.workspace,
|
|
253
|
+
workspaceName: opts.workspaceName,
|
|
254
|
+
workspaceDescription: opts.workspaceDescription,
|
|
255
|
+
bearerToken: opts.bearerToken,
|
|
256
|
+
saveConfig: !!opts.saveConfig,
|
|
257
|
+
planOnly: !!opts.planOnly,
|
|
258
|
+
generateAssets: typeof opts.generateAssets === "boolean" ? opts.generateAssets : undefined,
|
|
259
|
+
publish: !!opts.publish,
|
|
260
|
+
version: opts.version,
|
|
261
|
+
dryRun: !!opts.dryRun,
|
|
262
|
+
});
|
|
263
|
+
console.log(`Starter: ${result.starterTitle}`);
|
|
264
|
+
console.log(`Workspace: ${result.workspaceId || "(planned)"}`);
|
|
265
|
+
console.log(`Game: ${result.gameId || "(planned)"}`);
|
|
266
|
+
if (result.planId)
|
|
267
|
+
console.log(`Plan: ${result.planId}`);
|
|
268
|
+
if (result.agentId)
|
|
269
|
+
console.log(`Agent: ${result.agentId}`);
|
|
270
|
+
console.log(`Created workspace: ${result.createdWorkspace ? "yes" : "no"}`);
|
|
271
|
+
console.log(`Published: ${result.published ? "yes" : "no"}`);
|
|
272
|
+
if (typeof result.tasksCreated === "number") {
|
|
273
|
+
console.log(`Plan tasks: ${result.tasksCreated}`);
|
|
274
|
+
}
|
|
275
|
+
console.log(`Seeded: ${result.counts.characters} characters, ${result.counts.locations} locations, ${result.counts.variables} variables, ${result.counts.clues} clues, ${result.counts.nodes} nodes`);
|
|
276
|
+
console.log(`Published shell files: ${result.counts.files}`);
|
|
277
|
+
if (result.publishUrl) {
|
|
278
|
+
console.log(`Play URL: ${result.publishUrl}`);
|
|
279
|
+
}
|
|
280
|
+
if (opts.dryRun) {
|
|
281
|
+
console.log("Dry run only. No workspace, game, or publish mutation was sent.");
|
|
282
|
+
}
|
|
283
|
+
if (opts.planOnly) {
|
|
284
|
+
console.log("Plan-only mode. The game scaffold exists, but the studio task DAG was not executed.");
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
catch (err) {
|
|
288
|
+
console.error(`Failed: ${err.message}`);
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
//# sourceMappingURL=game.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"game.js","sourceRoot":"","sources":["../../src/commands/game.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learning.d.ts","sourceRoot":"","sources":["../../src/commands/learning.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,eAAe,SACsC,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.learningCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const api_js_1 = require("../lib/api.js");
|
|
6
|
+
const config_js_1 = require("../lib/config.js");
|
|
7
|
+
exports.learningCommand = new commander_1.Command("learning")
|
|
8
|
+
.description("Record and search learnings from completed tasks");
|
|
9
|
+
exports.learningCommand
|
|
10
|
+
.command("create")
|
|
11
|
+
.description("Record a learning")
|
|
12
|
+
.requiredOption("-c, --category <cat>", "Category: pattern|gotcha|decision|balance|bug")
|
|
13
|
+
.requiredOption("-t, --title <title>", "Short title")
|
|
14
|
+
.requiredOption("--content <content>", "Full learning content")
|
|
15
|
+
.option("--task <taskId>", "Related task ID")
|
|
16
|
+
.option("-g, --game <gameId>", "Related game ID")
|
|
17
|
+
.option("--tags <tags>", "Comma-separated tags")
|
|
18
|
+
.action(async (opts) => {
|
|
19
|
+
const config = (0, config_js_1.loadConfig)();
|
|
20
|
+
try {
|
|
21
|
+
const result = await (0, api_js_1.apiCall)("/learnings/create", {
|
|
22
|
+
body: {
|
|
23
|
+
agentId: config.agentId,
|
|
24
|
+
taskId: opts.task,
|
|
25
|
+
gameId: opts.game,
|
|
26
|
+
category: opts.category,
|
|
27
|
+
title: opts.title,
|
|
28
|
+
content: opts.content,
|
|
29
|
+
tags: opts.tags ? opts.tags.split(",") : [],
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
console.log(`Learning recorded: ${result.id}`);
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
console.error(`Failed: ${err.message}`);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
exports.learningCommand
|
|
39
|
+
.command("list")
|
|
40
|
+
.description("List recent learnings")
|
|
41
|
+
.option("-c, --category <cat>", "Filter by category")
|
|
42
|
+
.option("-g, --game <gameId>", "Filter by game")
|
|
43
|
+
.action(async (opts) => {
|
|
44
|
+
try {
|
|
45
|
+
let path = "/learnings/list?limit=20";
|
|
46
|
+
if (opts.category)
|
|
47
|
+
path += `&category=${opts.category}`;
|
|
48
|
+
if (opts.game)
|
|
49
|
+
path += `&gameId=${opts.game}`;
|
|
50
|
+
const learnings = await (0, api_js_1.apiCall)(path);
|
|
51
|
+
if (learnings.length === 0) {
|
|
52
|
+
console.log("No learnings recorded yet.");
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
for (const l of learnings) {
|
|
56
|
+
console.log(`\n [${l.category}] ${l.title}`);
|
|
57
|
+
console.log(` ${l.content.slice(0, 100)}`);
|
|
58
|
+
console.log(` by: ${l.agent_id} | tags: ${l.tags.join(", ") || "none"}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
console.error(`Failed: ${err.message}`);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
exports.learningCommand
|
|
66
|
+
.command("search <query>")
|
|
67
|
+
.description("Search learnings by keyword")
|
|
68
|
+
.action(async (query) => {
|
|
69
|
+
try {
|
|
70
|
+
const learnings = await (0, api_js_1.apiCall)(`/learnings/search?q=${encodeURIComponent(query)}`);
|
|
71
|
+
if (learnings.length === 0) {
|
|
72
|
+
console.log("No results.");
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
for (const l of learnings) {
|
|
76
|
+
console.log(` [${l.category}] ${l.title}: ${l.content.slice(0, 80)}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
console.error(`Failed: ${err.message}`);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=learning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learning.js","sourceRoot":"","sources":["../../src/commands/learning.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,eAAO,MAAM,YAAY,SA8DrB,CAAC;AAEL,eAAO,MAAM,aAAa,SAYtB,CAAC;AAEL,eAAO,MAAM,aAAa,SAwBtB,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.whoamiCommand = exports.logoutCommand = exports.loginCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const config_js_1 = require("../lib/config.js");
|
|
6
|
+
const api_js_1 = require("../lib/api.js");
|
|
7
|
+
exports.loginCommand = new commander_1.Command("login")
|
|
8
|
+
.description("Connect to a workspace using an API key")
|
|
9
|
+
.requiredOption("-k, --key <apiKey>", "API key (rl_live_...)")
|
|
10
|
+
.option("-w, --workspace <id>", "Workspace ID (optional if the key is already workspace-bound)")
|
|
11
|
+
.option("--api <url>", "API base URL", "https://api.real-link.ai")
|
|
12
|
+
.action(async (opts) => {
|
|
13
|
+
const config = (0, config_js_1.loadConfig)();
|
|
14
|
+
config.apiUrl = opts.api;
|
|
15
|
+
try {
|
|
16
|
+
const headers = { "x-api-key": opts.key };
|
|
17
|
+
if (opts.workspace)
|
|
18
|
+
headers["x-workspace-id"] = opts.workspace;
|
|
19
|
+
const balanceRes = await fetch((0, api_js_1.buildApiUrl)("/credits/balance", opts.api), { headers });
|
|
20
|
+
const balanceJson = (await balanceRes.json());
|
|
21
|
+
if (!balanceRes.ok || !balanceJson.ok) {
|
|
22
|
+
console.error(`API key validation failed${balanceJson.error ? `: ${balanceJson.error}` : ""}`);
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
let workspaceId = opts.workspace;
|
|
26
|
+
try {
|
|
27
|
+
const gapsRes = await fetch((0, api_js_1.buildApiUrl)("/maintenance/gaps", opts.api), { headers });
|
|
28
|
+
if (gapsRes.ok) {
|
|
29
|
+
const gapsJson = (await gapsRes.json());
|
|
30
|
+
workspaceId = workspaceId || gapsJson.data?.workspaceId;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
// Non-fatal. The API key is still valid even if workspace metadata could not be fetched.
|
|
35
|
+
}
|
|
36
|
+
config.apiKey = opts.key;
|
|
37
|
+
config.workspaceId = workspaceId;
|
|
38
|
+
(0, config_js_1.saveConfig)(config);
|
|
39
|
+
console.log("Logged in successfully!");
|
|
40
|
+
console.log(`API: ${opts.api}`);
|
|
41
|
+
if (workspaceId) {
|
|
42
|
+
console.log(`Workspace: ${workspaceId}`);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
console.log("Workspace: inferred from API key at request time");
|
|
46
|
+
}
|
|
47
|
+
console.log(`Config saved to: ${config_js_1.CONFIG_PATH_DISPLAY}`);
|
|
48
|
+
console.log(`System: ${(0, api_js_1.buildApiUrl)("/maintenance/system", opts.api)}`);
|
|
49
|
+
console.log(`Onboarding: ${opts.api.replace("api.", "").replace(/\/$/, "")}/onboarding`);
|
|
50
|
+
console.log("\nAgent-friendly next steps:");
|
|
51
|
+
console.log(" rlcreate onboarding start");
|
|
52
|
+
console.log(" rlcreate system guide");
|
|
53
|
+
console.log(" rlcreate system gaps");
|
|
54
|
+
console.log(" rlcreate call GET /maintenance/system");
|
|
55
|
+
if (!config.agentId) {
|
|
56
|
+
console.log(`\nNext: register as an agent:`);
|
|
57
|
+
console.log(` rlcreate agent register --name "my-agent" --engine claude-code`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
console.error(`Login failed: ${err.message}`);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
exports.logoutCommand = new commander_1.Command("logout")
|
|
65
|
+
.description("Disconnect from workspace")
|
|
66
|
+
.action(async () => {
|
|
67
|
+
if (!(0, config_js_1.configExists)()) {
|
|
68
|
+
console.log("Not logged in.");
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const config = (0, config_js_1.loadConfig)();
|
|
72
|
+
config.apiKey = undefined;
|
|
73
|
+
config.workspaceId = undefined;
|
|
74
|
+
(0, config_js_1.saveConfig)(config);
|
|
75
|
+
console.log("Logged out. API key removed from config.");
|
|
76
|
+
});
|
|
77
|
+
exports.whoamiCommand = new commander_1.Command("whoami")
|
|
78
|
+
.description("Show current identity and workspace")
|
|
79
|
+
.action(async () => {
|
|
80
|
+
const config = (0, config_js_1.resolveConfig)();
|
|
81
|
+
console.log(`Agent: ${config.agentId || "(not registered)"}`);
|
|
82
|
+
console.log(`Name: ${config.name || "(none)"}`);
|
|
83
|
+
console.log(`Engine: ${config.engine}`);
|
|
84
|
+
console.log(`API: ${config.apiUrl}`);
|
|
85
|
+
console.log(`Workspace: ${config.workspaceId || "(inferred from key)"}`);
|
|
86
|
+
console.log(`API Key: ${config.apiKey ? "set" : "not set"}`);
|
|
87
|
+
try {
|
|
88
|
+
if (config.agentId) {
|
|
89
|
+
const agent = await (0, api_js_1.apiCall)(`/agents/${config.agentId}`);
|
|
90
|
+
console.log(`\nRemote status: ${agent.status}`);
|
|
91
|
+
console.log(`Task: ${agent.current_task_id || "none"}`);
|
|
92
|
+
console.log(`Workspace: ${agent.workspace_id || "default"}`);
|
|
93
|
+
}
|
|
94
|
+
const system = await (0, api_js_1.apiRequest)("/maintenance/system", { skipAuth: true });
|
|
95
|
+
const systemJson = (await system.json());
|
|
96
|
+
console.log(`System commit: ${systemJson.data?.runtime?.gitSha || "-"}`);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
console.log(`\nRemote: unreachable`);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/commands/loop.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+OpC,eAAO,MAAM,WAAW,SACyD,CAAC"}
|