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,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.onboardingCommand = 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
|
+
function buildQuery(params) {
|
|
8
|
+
const query = new URLSearchParams();
|
|
9
|
+
for (const [key, value] of Object.entries(params)) {
|
|
10
|
+
if (value)
|
|
11
|
+
query.set(key, value);
|
|
12
|
+
}
|
|
13
|
+
const suffix = query.toString();
|
|
14
|
+
return suffix ? `?${suffix}` : "";
|
|
15
|
+
}
|
|
16
|
+
function printSection(title, lines) {
|
|
17
|
+
if (lines.length === 0)
|
|
18
|
+
return;
|
|
19
|
+
console.log(`\n${title}:`);
|
|
20
|
+
for (const line of lines) {
|
|
21
|
+
console.log(` ${line}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.onboardingCommand = new commander_1.Command("onboarding")
|
|
25
|
+
.description("Lightweight studio onboarding for a new or returning agent");
|
|
26
|
+
exports.onboardingCommand
|
|
27
|
+
.command("start")
|
|
28
|
+
.description("Load the current world model, must-read evidence, and first commands")
|
|
29
|
+
.option("-g, --game <gameId>", "Focus a specific game")
|
|
30
|
+
.option("--agent-id <id>", "Override the configured agent ID")
|
|
31
|
+
.option("--claim", "Claim the recommended starter task if one is ready")
|
|
32
|
+
.action(async (opts) => {
|
|
33
|
+
try {
|
|
34
|
+
const config = (0, config_js_1.resolveConfig)();
|
|
35
|
+
const agentId = opts.agentId || config.agentId;
|
|
36
|
+
const suffix = buildQuery({
|
|
37
|
+
gameId: opts.game,
|
|
38
|
+
agentId,
|
|
39
|
+
});
|
|
40
|
+
const [onboarding, gaps] = await Promise.all([
|
|
41
|
+
(0, api_js_1.apiCall)(`/context/onboarding-start${suffix}`),
|
|
42
|
+
(0, api_js_1.apiCall)(`/maintenance/gaps${buildQuery({ gameId: opts.game })}`),
|
|
43
|
+
]);
|
|
44
|
+
let claimedBranch = null;
|
|
45
|
+
if (opts.claim) {
|
|
46
|
+
if (!agentId) {
|
|
47
|
+
throw new Error("Claiming a starter task requires an agentId. Run `rlcreate agent register` first.");
|
|
48
|
+
}
|
|
49
|
+
if (onboarding.starterTask.mode !== "ready" || !onboarding.starterTask.task) {
|
|
50
|
+
throw new Error("No ready starter task is available to claim.");
|
|
51
|
+
}
|
|
52
|
+
const claim = await (0, api_js_1.apiCall)("/tasks/claim", {
|
|
53
|
+
body: {
|
|
54
|
+
taskId: onboarding.starterTask.task.id,
|
|
55
|
+
agentId,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
claimedBranch = claim.branchName;
|
|
59
|
+
}
|
|
60
|
+
console.log(`Workspace: ${onboarding.workspaceId}`);
|
|
61
|
+
console.log(`Agent: ${onboarding.agent ? `${onboarding.agent.name} (${onboarding.agent.id})` : "(not registered yet)"}`);
|
|
62
|
+
if (onboarding.selectedGame) {
|
|
63
|
+
console.log(`Game: ${onboarding.selectedGame.name} (${onboarding.selectedGame.id})`);
|
|
64
|
+
console.log(`Phase: ${onboarding.selectedGame.phase || "-"} | Status: ${onboarding.selectedGame.status || "-"} | Engine: ${onboarding.selectedGame.engine || "-"}`);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
console.log("Game: (none selected)");
|
|
68
|
+
}
|
|
69
|
+
if (claimedBranch) {
|
|
70
|
+
console.log(`Claimed branch: ${claimedBranch}`);
|
|
71
|
+
}
|
|
72
|
+
if (onboarding.gameContext?.taskCounts) {
|
|
73
|
+
console.log(`Task counts: total ${onboarding.gameContext.taskCounts.total}, ready ${onboarding.gameContext.taskCounts.ready}, working ${onboarding.gameContext.taskCounts.working}, completed ${onboarding.gameContext.taskCounts.completed}`);
|
|
74
|
+
}
|
|
75
|
+
printSection("Active games", onboarding.activeGames.map((game) => `${game.name} (${game.id}) phase=${game.phase || "-"} status=${game.status || "-"} engine=${game.engine || "-"}`));
|
|
76
|
+
printSection("Priority gaps", gaps.gaps.slice(0, 5).map((gap) => `[${gap.severity}] ${gap.title} -> ${gap.nextAction}`));
|
|
77
|
+
if (onboarding.starterTask.task) {
|
|
78
|
+
console.log(`\nStarter task: ${onboarding.starterTask.task.id}`);
|
|
79
|
+
console.log(`Title: ${onboarding.starterTask.task.title}`);
|
|
80
|
+
console.log(`Mode: ${onboarding.starterTask.mode}`);
|
|
81
|
+
console.log(`Suggested action: ${onboarding.starterTask.suggestedAction}`);
|
|
82
|
+
printSection("Starter task reasons", onboarding.starterTask.reasons);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
console.log(`\nStarter task: (${onboarding.starterTask.mode}) ${onboarding.starterTask.suggestedAction}`);
|
|
86
|
+
}
|
|
87
|
+
printSection("Must-read artifacts", onboarding.readingList.artifacts.slice(0, 5).map((artifact) => `${artifact.title} [${artifact.artifactType}/${artifact.role}/${artifact.status}]`));
|
|
88
|
+
printSection("Open handoffs", onboarding.readingList.handoffs.slice(0, 5).map((handoff) => `${handoff.summary} -> ${handoff.nextAction || "(no next action)"}`));
|
|
89
|
+
printSection("Open control risks", onboarding.readingList.controlRisks.slice(0, 5).map((risk) => `[${risk.severity}] ${risk.title}: ${risk.hazard}`));
|
|
90
|
+
printSection("Recent failures", onboarding.readingList.recentFailures.slice(0, 3).map((failure) => `${failure.key}: ${failure.value.slice(0, 120)}`));
|
|
91
|
+
printSection("Architecture decisions", onboarding.readingList.architectureDecisions.slice(0, 3).map((decision) => `${decision.key}: ${decision.value.slice(0, 120)}`));
|
|
92
|
+
printSection("Commands", onboarding.commands);
|
|
93
|
+
printSection("Notes", onboarding.notes);
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
console.error(`Failed: ${err.message}`);
|
|
97
|
+
process.exitCode = 1;
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=onboarding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/commands/onboarding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ops.d.ts","sourceRoot":"","sources":["../../src/commands/ops.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,eAAO,MAAM,UAAU,SAC6C,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.opsCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const api_js_1 = require("../lib/api.js");
|
|
6
|
+
async function loadSchema() {
|
|
7
|
+
return (0, api_js_1.apiCall)("/discover/schema");
|
|
8
|
+
}
|
|
9
|
+
exports.opsCommand = new commander_1.Command("ops")
|
|
10
|
+
.description("List and inspect runtime-discovered API operations");
|
|
11
|
+
exports.opsCommand
|
|
12
|
+
.command("list")
|
|
13
|
+
.description("List operations from the live API schema")
|
|
14
|
+
.option("-g, --group <group>", "Filter by group")
|
|
15
|
+
.action(async (opts) => {
|
|
16
|
+
try {
|
|
17
|
+
const schema = await loadSchema();
|
|
18
|
+
const operations = opts.group
|
|
19
|
+
? schema.operations.filter((operation) => operation.group === opts.group)
|
|
20
|
+
: schema.operations;
|
|
21
|
+
for (const operation of operations) {
|
|
22
|
+
console.log(`${operation.group.padEnd(10)} ${operation.operationId.padEnd(24)} ${operation.method.padEnd(6)} ${operation.path}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
console.error(`Failed: ${err.message}`);
|
|
27
|
+
process.exitCode = 1;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
exports.opsCommand
|
|
31
|
+
.command("show <operation>")
|
|
32
|
+
.description("Show one operation from the live API schema")
|
|
33
|
+
.action(async (operationId) => {
|
|
34
|
+
try {
|
|
35
|
+
const schema = await loadSchema();
|
|
36
|
+
const operation = schema.operations.find((candidate) => candidate.operationId === operationId
|
|
37
|
+
|| candidate.path === operationId
|
|
38
|
+
|| `${candidate.method} ${candidate.path}` === operationId);
|
|
39
|
+
if (!operation) {
|
|
40
|
+
console.error(`Operation not found: ${operationId}`);
|
|
41
|
+
process.exitCode = 1;
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
console.log(`Operation: ${operation.operationId}`);
|
|
45
|
+
console.log(`Group: ${operation.group}`);
|
|
46
|
+
console.log(`Method: ${operation.method}`);
|
|
47
|
+
console.log(`Path: ${operation.path}`);
|
|
48
|
+
console.log(`Auth: ${operation.auth}`);
|
|
49
|
+
console.log(`Summary: ${operation.summary}`);
|
|
50
|
+
if (operation.example) {
|
|
51
|
+
console.log(`Example: ${operation.example}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
console.error(`Failed: ${err.message}`);
|
|
56
|
+
process.exitCode = 1;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
exports.opsCommand
|
|
60
|
+
.command("search <query>")
|
|
61
|
+
.description("Search live API operations by name, path, or summary")
|
|
62
|
+
.action(async (query) => {
|
|
63
|
+
try {
|
|
64
|
+
const result = await (0, api_js_1.apiCall)(`/discover/search?q=${encodeURIComponent(query)}`);
|
|
65
|
+
if (result.results.length === 0) {
|
|
66
|
+
console.log("No matching operations.");
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
console.log(`Matches: ${result.total}`);
|
|
70
|
+
for (const operation of result.results) {
|
|
71
|
+
console.log(`${operation.group.padEnd(10)} ${operation.method.padEnd(6)} ${operation.path}`);
|
|
72
|
+
console.log(` ${operation.summary}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
console.error(`Failed: ${err.message}`);
|
|
77
|
+
process.exitCode = 1;
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=ops.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ops.js","sourceRoot":"","sources":["../../src/commands/ops.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrate.d.ts","sourceRoot":"","sources":["../../src/commands/orchestrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,kBAAkB,SACe,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.orchestrateCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const api_js_1 = require("../lib/api.js");
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
exports.orchestrateCommand = new commander_1.Command("orchestrate")
|
|
8
|
+
.description("Orchestration and auto-pilot");
|
|
9
|
+
exports.orchestrateCommand
|
|
10
|
+
.command("decompose <gddFile>")
|
|
11
|
+
.description("Auto-decompose a GDD file into tasks")
|
|
12
|
+
.requiredOption("-g, --game <gameId>", "Game ID")
|
|
13
|
+
.action(async (gddFile, opts) => {
|
|
14
|
+
try {
|
|
15
|
+
const gddContent = (0, fs_1.readFileSync)(gddFile, "utf-8");
|
|
16
|
+
const result = await (0, api_js_1.apiCall)("/orchestrate/decompose", {
|
|
17
|
+
body: {
|
|
18
|
+
gameId: opts.game,
|
|
19
|
+
gddContent,
|
|
20
|
+
agentId: "cli-orchestrator",
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
console.log(`Decomposed: ${result.tasksCreated} tasks created`);
|
|
24
|
+
for (const t of result.tasks) {
|
|
25
|
+
console.log(` [P${t.priority}] ${t.id}: ${t.title}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
console.error(`Failed: ${err.message}`);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
exports.orchestrateCommand
|
|
33
|
+
.command("auto-assign")
|
|
34
|
+
.description("Auto-assign available tasks to idle agents")
|
|
35
|
+
.action(async () => {
|
|
36
|
+
try {
|
|
37
|
+
const result = await (0, api_js_1.apiCall)("/orchestrate/auto-assign", { body: {} });
|
|
38
|
+
if (result.assignments.length === 0) {
|
|
39
|
+
console.log("No assignments made (no idle agents or no available tasks)");
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
console.log(`Assigned ${result.assignments.length} tasks:`);
|
|
43
|
+
for (const a of result.assignments) {
|
|
44
|
+
console.log(` ${a.agentId} → ${a.title}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
console.error(`Failed: ${err.message}`);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
exports.orchestrateCommand
|
|
52
|
+
.command("tick")
|
|
53
|
+
.description("Run one orchestration cycle")
|
|
54
|
+
.action(async () => {
|
|
55
|
+
try {
|
|
56
|
+
const result = await (0, api_js_1.apiCall)("/orchestrate/tick", { body: {} });
|
|
57
|
+
console.log("Orchestration tick complete:");
|
|
58
|
+
console.log(` Agents marked offline: ${result.agentsMarkedOffline}`);
|
|
59
|
+
console.log(` Tasks reclaimed: ${result.tasksReclaimed}`);
|
|
60
|
+
console.log(` Tasks unblocked: ${result.tasksUnblocked}`);
|
|
61
|
+
const summary = result.taskSummary;
|
|
62
|
+
if (summary) {
|
|
63
|
+
console.log(` Task summary:`);
|
|
64
|
+
for (const s of summary) {
|
|
65
|
+
console.log(` ${s.status}: ${s.count}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
console.log(` Active agents: ${result.activeAgents}`);
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
console.error(`Failed: ${err.message}`);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
exports.orchestrateCommand
|
|
75
|
+
.command("health")
|
|
76
|
+
.description("Show system health")
|
|
77
|
+
.action(async () => {
|
|
78
|
+
try {
|
|
79
|
+
const h = await (0, api_js_1.apiCall)("/maintenance/health");
|
|
80
|
+
console.log("System Health:");
|
|
81
|
+
console.log(` Agents: ${h.agents.total} total, ${h.agents.active} active, ${h.agents.working} working`);
|
|
82
|
+
console.log(` Tasks: ${h.tasks.total} total, ${h.tasks.available} available, ${h.tasks.completed} completed`);
|
|
83
|
+
console.log(` Games: ${h.games.total}`);
|
|
84
|
+
console.log(` Events: ${h.events.total}`);
|
|
85
|
+
console.log(` Memory: ${h.memory.total} entries`);
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
console.error(`Failed: ${err.message}`);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=orchestrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrate.js","sourceRoot":"","sources":["../../src/commands/orchestrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,eAAO,MAAM,WAAW,SAC+B,CAAC"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.planCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const api_js_1 = require("../lib/api.js");
|
|
6
|
+
exports.planCommand = new commander_1.Command("plan")
|
|
7
|
+
.description("Dynamic workflow plans and DAG status");
|
|
8
|
+
exports.planCommand
|
|
9
|
+
.command("list")
|
|
10
|
+
.description("List plans for the current workspace")
|
|
11
|
+
.option("-g, --game <gameId>", "Filter by game ID")
|
|
12
|
+
.option("-s, --status <status>", "Filter by plan status")
|
|
13
|
+
.action(async (opts) => {
|
|
14
|
+
try {
|
|
15
|
+
const params = new URLSearchParams();
|
|
16
|
+
if (opts.game)
|
|
17
|
+
params.set("gameId", opts.game);
|
|
18
|
+
if (opts.status)
|
|
19
|
+
params.set("status", opts.status);
|
|
20
|
+
const suffix = params.toString() ? `?${params.toString()}` : "";
|
|
21
|
+
const plans = await (0, api_js_1.apiCall)(`/plans${suffix}`);
|
|
22
|
+
if (plans.length === 0) {
|
|
23
|
+
console.log("No plans found.");
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
for (const plan of plans) {
|
|
27
|
+
console.log(`${plan.status.padEnd(10)} ${plan.id} ${plan.title}${plan.gameId ? ` [${plan.gameId}]` : ""}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
console.error(`Failed: ${err.message}`);
|
|
32
|
+
process.exitCode = 1;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
exports.planCommand
|
|
36
|
+
.command("show <planId>")
|
|
37
|
+
.description("Show plan progress, ready nodes, and task counts")
|
|
38
|
+
.action(async (planId) => {
|
|
39
|
+
try {
|
|
40
|
+
const plan = await (0, api_js_1.apiCall)(`/plans/${planId}`);
|
|
41
|
+
const progress = plan.progress;
|
|
42
|
+
const readyNodes = plan.readyNodes || [];
|
|
43
|
+
const tasks = plan.tasks || [];
|
|
44
|
+
console.log(`Plan: ${plan.title}`);
|
|
45
|
+
console.log(`ID: ${plan.id}`);
|
|
46
|
+
console.log(`Status: ${plan.status}`);
|
|
47
|
+
console.log(`Game: ${plan.gameId || "-"}`);
|
|
48
|
+
if (progress) {
|
|
49
|
+
console.log(`Progress: ${progress.completed || 0}/${progress.total || 0} completed (${progress.percent || 0}%)`);
|
|
50
|
+
console.log(`Working: ${progress.working || 0} | Submitted: ${progress.submitted || 0} | Failed: ${progress.failed || 0}`);
|
|
51
|
+
}
|
|
52
|
+
console.log(`Ready tasks: ${readyNodes.length > 0 ? readyNodes.join(", ") : "none"}`);
|
|
53
|
+
console.log(`Suggested action: ${plan.suggestedAction || "-"}`);
|
|
54
|
+
if (tasks.length > 0) {
|
|
55
|
+
console.log("\nTasks:");
|
|
56
|
+
for (const task of tasks) {
|
|
57
|
+
console.log(` ${String(task.status).padEnd(10)} ${task.id} ${task.title}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
console.error(`Failed: ${err.message}`);
|
|
63
|
+
process.exitCode = 1;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
exports.planCommand
|
|
67
|
+
.command("create")
|
|
68
|
+
.description("Create a plan from a goal")
|
|
69
|
+
.requiredOption("-g, --goal <goal>", "Goal statement")
|
|
70
|
+
.option("-t, --title <title>", "Plan title")
|
|
71
|
+
.option("--game <gameId>", "Game ID")
|
|
72
|
+
.option("--strategy <strategy>", "Strategy note")
|
|
73
|
+
.action(async (opts) => {
|
|
74
|
+
try {
|
|
75
|
+
const result = await (0, api_js_1.apiCall)("/plans", {
|
|
76
|
+
body: {
|
|
77
|
+
goal: opts.goal,
|
|
78
|
+
title: opts.title,
|
|
79
|
+
gameId: opts.game,
|
|
80
|
+
strategy: opts.strategy,
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
console.log(`Plan created: ${result.id}`);
|
|
84
|
+
console.log(`Status: ${result.status}`);
|
|
85
|
+
console.log(`Next: ${result.nextStep}`);
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
console.error(`Failed: ${err.message}`);
|
|
89
|
+
process.exitCode = 1;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
exports.planCommand
|
|
93
|
+
.command("activate <planId>")
|
|
94
|
+
.description("Activate a plan")
|
|
95
|
+
.action(async (planId) => {
|
|
96
|
+
try {
|
|
97
|
+
const result = await (0, api_js_1.apiCall)(`/plans/${planId}/activate`, { body: {} });
|
|
98
|
+
console.log(`Plan ${planId} -> ${result.status}`);
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
console.error(`Failed: ${err.message}`);
|
|
102
|
+
process.exitCode = 1;
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
exports.planCommand
|
|
106
|
+
.command("pause <planId>")
|
|
107
|
+
.description("Pause a plan")
|
|
108
|
+
.action(async (planId) => {
|
|
109
|
+
try {
|
|
110
|
+
const result = await (0, api_js_1.apiCall)(`/plans/${planId}/pause`, { body: {} });
|
|
111
|
+
console.log(`Plan ${planId} -> ${result.status}`);
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
console.error(`Failed: ${err.message}`);
|
|
115
|
+
process.exitCode = 1;
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
exports.planCommand
|
|
119
|
+
.command("complete <planId>")
|
|
120
|
+
.description("Mark a plan as completed")
|
|
121
|
+
.action(async (planId) => {
|
|
122
|
+
try {
|
|
123
|
+
const result = await (0, api_js_1.apiCall)(`/plans/${planId}/complete`, { body: {} });
|
|
124
|
+
console.log(`Plan ${planId} -> ${result.status}`);
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
console.error(`Failed: ${err.message}`);
|
|
128
|
+
process.exitCode = 1;
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
exports.planCommand
|
|
132
|
+
.command("suggest-replan <planId>")
|
|
133
|
+
.description("Show replanning suggestions for failed plan tasks")
|
|
134
|
+
.action(async (planId) => {
|
|
135
|
+
try {
|
|
136
|
+
const result = await (0, api_js_1.apiCall)(`/plans/${planId}/suggest-replan`);
|
|
137
|
+
const suggestions = result.suggestions || [];
|
|
138
|
+
if (!result.needsReplan) {
|
|
139
|
+
console.log("This plan does not currently need replanning.");
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
console.log(`Failed tasks: ${result.failedCount}`);
|
|
143
|
+
console.log(`Blocked tasks: ${result.blockedCount}`);
|
|
144
|
+
console.log(`Hint: ${result.hint}`);
|
|
145
|
+
for (const suggestion of suggestions) {
|
|
146
|
+
const failedTask = suggestion.failedTask;
|
|
147
|
+
console.log(`\n- ${failedTask.id} ${failedTask.title}`);
|
|
148
|
+
console.log(` Suggestion: ${suggestion.suggestion}`);
|
|
149
|
+
console.log(` Blocked downstream: ${suggestion.blockedDownstream}`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch (err) {
|
|
153
|
+
console.error(`Failed: ${err.message}`);
|
|
154
|
+
process.exitCode = 1;
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../src/commands/signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,aAAa,SACgB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.signalCommand = 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.signalCommand = new commander_1.Command("signal")
|
|
8
|
+
.description("Agent-to-agent signaling");
|
|
9
|
+
exports.signalCommand
|
|
10
|
+
.command("emit <type> [payload]")
|
|
11
|
+
.description("Emit a signal to all agents")
|
|
12
|
+
.action(async (type, payload) => {
|
|
13
|
+
const config = (0, config_js_1.loadConfig)();
|
|
14
|
+
try {
|
|
15
|
+
await (0, api_js_1.apiCall)("/events/emit", {
|
|
16
|
+
body: {
|
|
17
|
+
type,
|
|
18
|
+
agentId: config.agentId,
|
|
19
|
+
payload: payload ? JSON.parse(payload) : {},
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
console.log(`Signal emitted: ${type}`);
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
console.error(`Failed: ${err.message}`);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
exports.signalCommand
|
|
29
|
+
.command("poll")
|
|
30
|
+
.description("Poll for recent events")
|
|
31
|
+
.option("-s, --since <cursor>", "Event cursor (last seen ID)", "0")
|
|
32
|
+
.action(async (opts) => {
|
|
33
|
+
try {
|
|
34
|
+
const result = await (0, api_js_1.apiCall)(`/events/poll?since=${opts.since}`);
|
|
35
|
+
// apiCall already unwraps .data, but poll returns nested data
|
|
36
|
+
const events = Array.isArray(result) ? result : [];
|
|
37
|
+
if (events.length === 0) {
|
|
38
|
+
console.log("No new events");
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
for (const e of events) {
|
|
42
|
+
const time = new Date(e.created_at * 1000).toISOString();
|
|
43
|
+
console.log(` [${time}] ${e.type} | agent: ${e.agent_id || "-"} | task: ${e.task_id || "-"}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
console.error(`Failed: ${err.message}`);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=signal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal.js","sourceRoot":"","sources":["../../src/commands/signal.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,0CAAwC;AACxC,gDAA8C;AAEjC,QAAA,aAAa,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,0BAA0B,CAAC,CAAC;AAE3C,qBAAa;KACV,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAC9B,MAAM,MAAM,GAAG,IAAA,sBAAU,GAAE,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,IAAA,gBAAO,EAAC,cAAc,EAAE;YAC5B,IAAI,EAAE;gBACJ,IAAI;gBACJ,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;aAC5C;SACF,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,WAAY,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,qBAAa;KACV,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,sBAAsB,EAAE,6BAA6B,EAAE,GAAG,CAAC;KAClE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,gBAAO,EAGzB,sBAAsB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAEvC,8DAA8D;QAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAE,CAAC,CAAC,UAAqB,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,QAAQ,IAAI,GAAG,YAAY,CAAC,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,WAAY,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/commands/system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,eAAO,MAAM,aAAa,SACiD,CAAC"}
|