@iqai/adk-cli 0.2.8 → 0.3.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/CHANGELOG.md +20 -0
- package/README.md +1 -0
- package/dist/app.module.d.ts +3 -0
- package/dist/app.module.d.ts.map +1 -0
- package/dist/app.module.js +24 -0
- package/dist/app.module.js.map +1 -0
- package/dist/cli/cli.module.d.ts +3 -0
- package/dist/cli/cli.module.d.ts.map +1 -0
- package/dist/cli/cli.module.js +25 -0
- package/dist/cli/cli.module.js.map +1 -0
- package/dist/cli/new.command.d.ts +10 -0
- package/dist/cli/new.command.d.ts.map +1 -0
- package/dist/cli/new.command.js +273 -0
- package/dist/cli/new.command.js.map +1 -0
- package/dist/cli/run.command.d.ts +20 -0
- package/dist/cli/run.command.d.ts.map +1 -0
- package/dist/cli/run.command.js +342 -0
- package/dist/cli/run.command.js.map +1 -0
- package/dist/cli/serve.command.d.ts +20 -0
- package/dist/cli/serve.command.d.ts.map +1 -0
- package/dist/cli/serve.command.js +137 -0
- package/dist/cli/serve.command.js.map +1 -0
- package/dist/cli/web.command.d.ts +20 -0
- package/dist/cli/web.command.d.ts.map +1 -0
- package/dist/cli/web.command.js +146 -0
- package/dist/cli/web.command.js.map +1 -0
- package/dist/common/tokens.d.ts +5 -0
- package/dist/common/tokens.d.ts.map +1 -0
- package/dist/common/tokens.js +8 -0
- package/dist/common/tokens.js.map +1 -0
- package/dist/common/types.d.ts +91 -0
- package/dist/common/types.d.ts.map +1 -0
- package/dist/common/types.js +3 -0
- package/dist/common/types.js.map +1 -0
- package/dist/http/bootstrap.d.ts +17 -0
- package/dist/http/bootstrap.d.ts.map +1 -0
- package/dist/http/bootstrap.js +221 -0
- package/dist/http/bootstrap.js.map +1 -0
- package/dist/http/config/config.module.d.ts +6 -0
- package/dist/http/config/config.module.d.ts.map +1 -0
- package/dist/http/config/config.module.js +32 -0
- package/dist/http/config/config.module.js.map +1 -0
- package/dist/http/discovery/agents.controller.d.ts +13 -0
- package/dist/http/discovery/agents.controller.d.ts.map +1 -0
- package/dist/http/discovery/agents.controller.js +73 -0
- package/dist/http/discovery/agents.controller.js.map +1 -0
- package/dist/http/discovery/discovery.module.d.ts +3 -0
- package/dist/http/discovery/discovery.module.d.ts.map +1 -0
- package/dist/http/discovery/discovery.module.js +22 -0
- package/dist/http/discovery/discovery.module.js.map +1 -0
- package/dist/http/dto/api.dto.d.ts +70 -0
- package/dist/http/dto/api.dto.d.ts.map +1 -0
- package/dist/http/dto/api.dto.js +268 -0
- package/dist/http/dto/api.dto.js.map +1 -0
- package/dist/http/events/events.controller.d.ts +8 -0
- package/dist/http/events/events.controller.d.ts.map +1 -0
- package/dist/http/events/events.controller.js +55 -0
- package/dist/http/events/events.controller.js.map +1 -0
- package/dist/http/events/events.module.d.ts +3 -0
- package/dist/http/events/events.module.d.ts.map +1 -0
- package/dist/http/events/events.module.js +25 -0
- package/dist/http/events/events.module.js.map +1 -0
- package/dist/http/events/events.service.d.ts +8 -0
- package/dist/http/events/events.service.d.ts.map +1 -0
- package/dist/http/events/events.service.js +37 -0
- package/dist/http/events/events.service.js.map +1 -0
- package/dist/http/health/health.controller.d.ts +6 -0
- package/dist/http/health/health.controller.d.ts.map +1 -0
- package/dist/http/health/health.controller.js +37 -0
- package/dist/http/health/health.controller.js.map +1 -0
- package/dist/http/health/health.module.d.ts +3 -0
- package/dist/http/health/health.module.d.ts.map +1 -0
- package/dist/http/health/health.module.js +20 -0
- package/dist/http/health/health.module.js.map +1 -0
- package/dist/http/http.module.d.ts +6 -0
- package/dist/http/http.module.d.ts.map +1 -0
- package/dist/http/http.module.js +43 -0
- package/dist/http/http.module.js.map +1 -0
- package/dist/http/messaging/messaging.controller.d.ts +9 -0
- package/dist/http/messaging/messaging.controller.d.ts.map +1 -0
- package/dist/http/messaging/messaging.controller.js +83 -0
- package/dist/http/messaging/messaging.controller.js.map +1 -0
- package/dist/http/messaging/messaging.module.d.ts +3 -0
- package/dist/http/messaging/messaging.module.d.ts.map +1 -0
- package/dist/http/messaging/messaging.module.js +25 -0
- package/dist/http/messaging/messaging.module.js.map +1 -0
- package/dist/http/messaging/messaging.service.d.ts +11 -0
- package/dist/http/messaging/messaging.service.d.ts.map +1 -0
- package/dist/http/messaging/messaging.service.js +48 -0
- package/dist/http/messaging/messaging.service.js.map +1 -0
- package/dist/http/providers/agent-loader.service.d.ts +49 -0
- package/dist/http/providers/agent-loader.service.d.ts.map +1 -0
- package/dist/http/providers/agent-loader.service.js +416 -0
- package/dist/http/providers/agent-loader.service.js.map +1 -0
- package/dist/http/providers/agent-manager.service.d.ts +24 -0
- package/dist/http/providers/agent-manager.service.d.ts.map +1 -0
- package/dist/http/providers/agent-manager.service.js +222 -0
- package/dist/http/providers/agent-manager.service.js.map +1 -0
- package/dist/http/providers/agent-scanner.service.d.ts +9 -0
- package/dist/http/providers/agent-scanner.service.d.ts.map +1 -0
- package/dist/http/providers/agent-scanner.service.js +108 -0
- package/dist/http/providers/agent-scanner.service.js.map +1 -0
- package/dist/http/providers/providers.module.d.ts +3 -0
- package/dist/http/providers/providers.module.d.ts.map +1 -0
- package/dist/http/providers/providers.module.js +47 -0
- package/dist/http/providers/providers.module.js.map +1 -0
- package/dist/http/reload/hot-reload.service.d.ts +16 -0
- package/dist/http/reload/hot-reload.service.d.ts.map +1 -0
- package/dist/http/reload/hot-reload.service.js +79 -0
- package/dist/http/reload/hot-reload.service.js.map +1 -0
- package/dist/http/reload/reload.controller.d.ts +14 -0
- package/dist/http/reload/reload.controller.d.ts.map +1 -0
- package/dist/http/reload/reload.controller.js +50 -0
- package/dist/http/reload/reload.controller.js.map +1 -0
- package/dist/http/reload/reload.module.d.ts +3 -0
- package/dist/http/reload/reload.module.d.ts.map +1 -0
- package/dist/http/reload/reload.module.js +23 -0
- package/dist/http/reload/reload.module.js.map +1 -0
- package/dist/http/runtime-config.d.ts +22 -0
- package/dist/http/runtime-config.d.ts.map +1 -0
- package/dist/http/runtime-config.js +5 -0
- package/dist/http/runtime-config.js.map +1 -0
- package/dist/http/sessions/sessions.controller.d.ts +11 -0
- package/dist/http/sessions/sessions.controller.d.ts.map +1 -0
- package/dist/http/sessions/sessions.controller.js +116 -0
- package/dist/http/sessions/sessions.controller.js.map +1 -0
- package/dist/http/sessions/sessions.module.d.ts +3 -0
- package/dist/http/sessions/sessions.module.d.ts.map +1 -0
- package/dist/http/sessions/sessions.module.js +25 -0
- package/dist/http/sessions/sessions.module.js.map +1 -0
- package/dist/http/sessions/sessions.service.d.ts +54 -0
- package/dist/http/sessions/sessions.service.d.ts.map +1 -0
- package/dist/http/sessions/sessions.service.js +353 -0
- package/dist/http/sessions/sessions.service.js.map +1 -0
- package/dist/http/state/state.controller.d.ts +9 -0
- package/dist/http/state/state.controller.d.ts.map +1 -0
- package/dist/http/state/state.controller.js +76 -0
- package/dist/http/state/state.controller.js.map +1 -0
- package/dist/http/state/state.module.d.ts +3 -0
- package/dist/http/state/state.module.d.ts.map +1 -0
- package/dist/http/state/state.module.js +25 -0
- package/dist/http/state/state.module.js.map +1 -0
- package/dist/http/state/state.service.d.ts +9 -0
- package/dist/http/state/state.service.d.ts.map +1 -0
- package/dist/http/state/state.service.js +55 -0
- package/dist/http/state/state.service.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +25 -0
- package/dist/main.js.map +1 -0
- package/package.json +18 -12
- package/dist/index.d.mts +0 -2
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -1187
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -1171
- package/dist/index.mjs.map +0 -1
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.AgentManager = void 0;
|
|
46
|
+
const node_fs_1 = require("node:fs");
|
|
47
|
+
const node_path_1 = require("node:path");
|
|
48
|
+
const node_url_1 = require("node:url");
|
|
49
|
+
const node_util_1 = require("node:util");
|
|
50
|
+
const adk_1 = require("@iqai/adk");
|
|
51
|
+
const common_1 = require("@nestjs/common");
|
|
52
|
+
const agent_loader_service_1 = require("./agent-loader.service");
|
|
53
|
+
const agent_scanner_service_1 = require("./agent-scanner.service");
|
|
54
|
+
const DEFAULT_APP_NAME = "adk-server";
|
|
55
|
+
const USER_ID_PREFIX = "user_";
|
|
56
|
+
let AgentManager = class AgentManager {
|
|
57
|
+
sessionService;
|
|
58
|
+
agents = new Map();
|
|
59
|
+
loadedAgents = new Map();
|
|
60
|
+
scanner;
|
|
61
|
+
loader;
|
|
62
|
+
logger;
|
|
63
|
+
constructor(sessionService, quiet = false) {
|
|
64
|
+
this.sessionService = sessionService;
|
|
65
|
+
this.scanner = new agent_scanner_service_1.AgentScanner(quiet);
|
|
66
|
+
this.loader = new agent_loader_service_1.AgentLoader(quiet);
|
|
67
|
+
this.logger = new common_1.Logger("agent-manager");
|
|
68
|
+
}
|
|
69
|
+
getAgents() {
|
|
70
|
+
return this.agents;
|
|
71
|
+
}
|
|
72
|
+
getLoadedAgents() {
|
|
73
|
+
return this.loadedAgents;
|
|
74
|
+
}
|
|
75
|
+
scanAgents(agentsDir) {
|
|
76
|
+
this.logger.log((0, node_util_1.format)("Scanning agents in directory: %s", agentsDir));
|
|
77
|
+
this.agents = this.scanner.scanAgents(agentsDir, this.loadedAgents);
|
|
78
|
+
this.logger.log((0, node_util_1.format)("Found agents: %o", Array.from(this.agents.keys())));
|
|
79
|
+
}
|
|
80
|
+
async startAgent(agentPath) {
|
|
81
|
+
this.logger.log((0, node_util_1.format)("Starting agent: %s", agentPath));
|
|
82
|
+
const agent = this.agents.get(agentPath);
|
|
83
|
+
if (!agent) {
|
|
84
|
+
this.logger.error("Agent not found in agents map: %s", agentPath);
|
|
85
|
+
this.logger.debug((0, node_util_1.format)("Available agents: %o", Array.from(this.agents.keys())));
|
|
86
|
+
throw new Error(`Agent not found: ${agentPath}`);
|
|
87
|
+
}
|
|
88
|
+
this.logger.log("Agent found, proceeding to load...");
|
|
89
|
+
if (this.loadedAgents.has(agentPath)) {
|
|
90
|
+
return; // Already running
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
// Load the agent module dynamically
|
|
94
|
+
// Try both .js and .ts files, prioritizing .js if it exists
|
|
95
|
+
let agentFilePath = (0, node_path_1.join)(agent.absolutePath, "agent.js");
|
|
96
|
+
if (!(0, node_fs_1.existsSync)(agentFilePath)) {
|
|
97
|
+
agentFilePath = (0, node_path_1.join)(agent.absolutePath, "agent.ts");
|
|
98
|
+
}
|
|
99
|
+
if (!(0, node_fs_1.existsSync)(agentFilePath)) {
|
|
100
|
+
throw new Error(`No agent.js or agent.ts file found in ${agent.absolutePath}`);
|
|
101
|
+
}
|
|
102
|
+
// Load environment variables from the project directory before importing
|
|
103
|
+
this.loader.loadEnvironmentVariables(agentFilePath);
|
|
104
|
+
const agentFileUrl = (0, node_url_1.pathToFileURL)(agentFilePath).href;
|
|
105
|
+
// Use dynamic import to load the agent (TS path uses esbuild wrapper returning { agent })
|
|
106
|
+
const agentModule = agentFilePath.endsWith(".ts")
|
|
107
|
+
? await this.loader.importTypeScriptFile(agentFilePath)
|
|
108
|
+
: (await Promise.resolve(`${agentFileUrl}`).then(s => __importStar(require(s))));
|
|
109
|
+
const exportedAgent = await this.loader.resolveAgentExport(agentModule);
|
|
110
|
+
// Validate basic shape
|
|
111
|
+
if (!exportedAgent?.name) {
|
|
112
|
+
throw new Error(`Invalid agent export in ${agentFilePath}. Expected a BaseAgent instance with a name property.`);
|
|
113
|
+
}
|
|
114
|
+
// Soft validation of optional fields (model/instruction not strictly required for all custom agents)
|
|
115
|
+
// Always use the session created by the agent builder; ignore any session from the exported agent.
|
|
116
|
+
const agentBuilder = adk_1.AgentBuilder.create(exportedAgent.name).withAgent(exportedAgent);
|
|
117
|
+
agentBuilder.withSessionService(this.sessionService, {
|
|
118
|
+
userId: `${USER_ID_PREFIX}${agentPath}`,
|
|
119
|
+
appName: DEFAULT_APP_NAME,
|
|
120
|
+
state: undefined,
|
|
121
|
+
});
|
|
122
|
+
const { runner, session } = await agentBuilder.build();
|
|
123
|
+
this.logger.log((0, node_util_1.format)("Agent started with session: %o", {
|
|
124
|
+
sessionId: session.id,
|
|
125
|
+
hasState: !!session.state,
|
|
126
|
+
stateKeys: session.state ? Object.keys(session.state) : [],
|
|
127
|
+
stateContent: session.state,
|
|
128
|
+
}));
|
|
129
|
+
// Store the loaded agent with its runner and the session from the builder only
|
|
130
|
+
const loadedAgent = {
|
|
131
|
+
agent: exportedAgent,
|
|
132
|
+
runner: runner,
|
|
133
|
+
sessionId: session.id,
|
|
134
|
+
userId: `${USER_ID_PREFIX}${agentPath}`,
|
|
135
|
+
appName: DEFAULT_APP_NAME,
|
|
136
|
+
};
|
|
137
|
+
this.loadedAgents.set(agentPath, loadedAgent);
|
|
138
|
+
agent.instance = exportedAgent;
|
|
139
|
+
agent.name = exportedAgent.name;
|
|
140
|
+
// Ensure the session is stored in the session service
|
|
141
|
+
try {
|
|
142
|
+
const existingSession = await this.sessionService.getSession(loadedAgent.appName, loadedAgent.userId, session.id);
|
|
143
|
+
if (!existingSession) {
|
|
144
|
+
this.logger.log((0, node_util_1.format)("Creating session in sessionService: %s", session.id));
|
|
145
|
+
await this.sessionService.createSession(loadedAgent.appName, loadedAgent.userId, session.state, session.id);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
this.logger.log((0, node_util_1.format)("Session already exists in sessionService: %s", session.id));
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
this.logger.error("Error ensuring session exists: %o", error);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
// agent might be undefined if lookup failed earlier
|
|
157
|
+
const agentName = agent?.name ?? agentPath;
|
|
158
|
+
this.logger.error(`Failed to load agent "${agentName}": ${error instanceof Error ? error.message : String(error)}`);
|
|
159
|
+
throw new Error(`Failed to load agent: ${error instanceof Error ? error.message : String(error)}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
async stopAgent(agentPath) {
|
|
163
|
+
// Deprecated: explicit stop not needed; keep method no-op for backward compatibility
|
|
164
|
+
this.loadedAgents.delete(agentPath);
|
|
165
|
+
const agent = this.agents.get(agentPath);
|
|
166
|
+
if (agent) {
|
|
167
|
+
agent.instance = undefined;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
async sendMessageToAgent(agentPath, message, attachments) {
|
|
171
|
+
// Auto-start the agent if it's not already running
|
|
172
|
+
if (!this.loadedAgents.has(agentPath)) {
|
|
173
|
+
await this.startAgent(agentPath);
|
|
174
|
+
}
|
|
175
|
+
const loadedAgent = this.loadedAgents.get(agentPath);
|
|
176
|
+
if (!loadedAgent) {
|
|
177
|
+
throw new Error("Agent failed to start");
|
|
178
|
+
}
|
|
179
|
+
try {
|
|
180
|
+
// Build FullMessage (text + optional attachments)
|
|
181
|
+
const fullMessage = {
|
|
182
|
+
parts: [
|
|
183
|
+
{ text: message },
|
|
184
|
+
...(attachments || []).map((file) => ({
|
|
185
|
+
inlineData: { mimeType: file.mimeType, data: file.data },
|
|
186
|
+
})),
|
|
187
|
+
],
|
|
188
|
+
};
|
|
189
|
+
// Always run against the CURRENT loadedAgent.sessionId (switchable)
|
|
190
|
+
let accumulated = "";
|
|
191
|
+
for await (const event of loadedAgent.runner.runAsync({
|
|
192
|
+
userId: loadedAgent.userId,
|
|
193
|
+
sessionId: loadedAgent.sessionId,
|
|
194
|
+
newMessage: fullMessage,
|
|
195
|
+
})) {
|
|
196
|
+
const parts = event?.content?.parts;
|
|
197
|
+
if (Array.isArray(parts)) {
|
|
198
|
+
accumulated += parts
|
|
199
|
+
.map((p) => p && typeof p === "object" && "text" in p ? p.text : "")
|
|
200
|
+
.join("");
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return accumulated.trim();
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
207
|
+
this.logger.error(`Error sending message to agent ${agentPath}: ${errorMessage}`);
|
|
208
|
+
throw new Error(`Failed to send message to agent: ${errorMessage}`);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
stopAllAgents() {
|
|
212
|
+
for (const [agentPath] of Array.from(this.loadedAgents.entries())) {
|
|
213
|
+
this.stopAgent(agentPath);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
exports.AgentManager = AgentManager;
|
|
218
|
+
exports.AgentManager = AgentManager = __decorate([
|
|
219
|
+
(0, common_1.Injectable)(),
|
|
220
|
+
__metadata("design:paramtypes", [Function, Object])
|
|
221
|
+
], AgentManager);
|
|
222
|
+
//# sourceMappingURL=agent-manager.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-manager.service.js","sourceRoot":"","sources":["../../../src/http/providers/agent-manager.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Agent, LoadedAgent } from "../../common/types";
|
|
2
|
+
export declare class AgentScanner {
|
|
3
|
+
private quiet;
|
|
4
|
+
private logger;
|
|
5
|
+
constructor(quiet?: boolean);
|
|
6
|
+
scanAgents(agentsDir: string, loadedAgents: Map<string, LoadedAgent>): Map<string, Agent>;
|
|
7
|
+
private extractAgentNameFromFile;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=agent-scanner.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-scanner.service.d.ts","sourceRoot":"","sources":["../../../src/http/providers/agent-scanner.service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAgB7D,qBACa,YAAY;IAGZ,OAAO,CAAC,KAAK;IAFzB,OAAO,CAAC,MAAM,CAAS;gBAEH,KAAK,UAAQ;IAIjC,UAAU,CACT,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GACpC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;IAiErB,OAAO,CAAC,wBAAwB;CAgBhC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AgentScanner = void 0;
|
|
13
|
+
const node_fs_1 = require("node:fs");
|
|
14
|
+
const node_path_1 = require("node:path");
|
|
15
|
+
const node_util_1 = require("node:util");
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const DIRECTORIES_TO_SKIP = [
|
|
18
|
+
"node_modules",
|
|
19
|
+
".git",
|
|
20
|
+
".next",
|
|
21
|
+
"dist",
|
|
22
|
+
"build",
|
|
23
|
+
".turbo",
|
|
24
|
+
"coverage",
|
|
25
|
+
".vscode",
|
|
26
|
+
".idea",
|
|
27
|
+
];
|
|
28
|
+
const AGENT_FILENAMES = ["agent.ts", "agent.js"];
|
|
29
|
+
let AgentScanner = class AgentScanner {
|
|
30
|
+
quiet;
|
|
31
|
+
logger;
|
|
32
|
+
constructor(quiet = false) {
|
|
33
|
+
this.quiet = quiet;
|
|
34
|
+
this.logger = new common_1.Logger("agent-scanner");
|
|
35
|
+
}
|
|
36
|
+
scanAgents(agentsDir, loadedAgents) {
|
|
37
|
+
const agents = new Map();
|
|
38
|
+
// Use current directory if agentsDir doesn't exist or is empty
|
|
39
|
+
const scanDir = !agentsDir || !(0, node_fs_1.existsSync)(agentsDir) ? process.cwd() : agentsDir;
|
|
40
|
+
const shouldSkipDirectory = (dirName) => {
|
|
41
|
+
return DIRECTORIES_TO_SKIP.includes(dirName);
|
|
42
|
+
};
|
|
43
|
+
const scanDirectory = (dir) => {
|
|
44
|
+
const items = (0, node_fs_1.readdirSync)(dir);
|
|
45
|
+
for (const item of items) {
|
|
46
|
+
const fullPath = (0, node_path_1.join)(dir, item);
|
|
47
|
+
const stat = (0, node_fs_1.statSync)(fullPath);
|
|
48
|
+
if (stat.isDirectory()) {
|
|
49
|
+
// Skip common build/dependency directories
|
|
50
|
+
if (!shouldSkipDirectory(item)) {
|
|
51
|
+
scanDirectory(fullPath);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else if (AGENT_FILENAMES.includes(item)) {
|
|
55
|
+
const relativePath = (0, node_path_1.relative)(scanDir, dir);
|
|
56
|
+
// Try to get the actual agent name if it's already loaded
|
|
57
|
+
const loadedAgent = loadedAgents.get(relativePath);
|
|
58
|
+
let agentName = relativePath.split("/").pop() || "unknown";
|
|
59
|
+
// If agent is loaded, use its actual name
|
|
60
|
+
if (loadedAgent?.agent?.name) {
|
|
61
|
+
agentName = loadedAgent.agent.name;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
// Try to quickly extract name from agent file if not loaded
|
|
65
|
+
try {
|
|
66
|
+
const agentFilePath = (0, node_path_1.join)(dir, item);
|
|
67
|
+
agentName =
|
|
68
|
+
this.extractAgentNameFromFile(agentFilePath) || agentName;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// Fallback to directory name if extraction fails
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
agents.set(relativePath, {
|
|
75
|
+
relativePath,
|
|
76
|
+
name: agentName,
|
|
77
|
+
absolutePath: dir,
|
|
78
|
+
instance: loadedAgent?.agent,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
scanDirectory(scanDir);
|
|
84
|
+
this.logger.log((0, node_util_1.format)(`Agent scan complete. Found ${agents.size} agents. ✨`));
|
|
85
|
+
return agents;
|
|
86
|
+
}
|
|
87
|
+
extractAgentNameFromFile(filePath) {
|
|
88
|
+
try {
|
|
89
|
+
const content = (0, node_fs_1.readFileSync)(filePath, "utf-8");
|
|
90
|
+
// Look for agent name in export statements
|
|
91
|
+
// Match patterns like: name: "agent_name" or name:"agent_name"
|
|
92
|
+
const nameMatch = content.match(/name\s*:\s*["']([^"']+)["']/);
|
|
93
|
+
if (nameMatch?.[1]) {
|
|
94
|
+
return nameMatch[1];
|
|
95
|
+
}
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
exports.AgentScanner = AgentScanner;
|
|
104
|
+
exports.AgentScanner = AgentScanner = __decorate([
|
|
105
|
+
(0, common_1.Injectable)(),
|
|
106
|
+
__metadata("design:paramtypes", [Object])
|
|
107
|
+
], AgentScanner);
|
|
108
|
+
//# sourceMappingURL=agent-scanner.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-scanner.service.js","sourceRoot":"","sources":["../../../src/http/providers/agent-scanner.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.module.d.ts","sourceRoot":"","sources":["../../../src/http/providers/providers.module.ts"],"names":[],"mappings":"AAOA,qBA4Ba,eAAe;CAAG"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ProvidersModule = void 0;
|
|
10
|
+
const adk_1 = require("@iqai/adk");
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const tokens_1 = require("../../common/tokens");
|
|
13
|
+
const agent_loader_service_1 = require("./agent-loader.service");
|
|
14
|
+
const agent_manager_service_1 = require("./agent-manager.service");
|
|
15
|
+
const agent_scanner_service_1 = require("./agent-scanner.service");
|
|
16
|
+
let ProvidersModule = class ProvidersModule {
|
|
17
|
+
};
|
|
18
|
+
exports.ProvidersModule = ProvidersModule;
|
|
19
|
+
exports.ProvidersModule = ProvidersModule = __decorate([
|
|
20
|
+
(0, common_1.Module)({
|
|
21
|
+
providers: [
|
|
22
|
+
// Core session service from @iqai/adk
|
|
23
|
+
{
|
|
24
|
+
provide: adk_1.InMemorySessionService,
|
|
25
|
+
useFactory: () => new adk_1.InMemorySessionService(),
|
|
26
|
+
},
|
|
27
|
+
// Core services wired through DI, passing quiet flag and session service
|
|
28
|
+
{
|
|
29
|
+
provide: agent_scanner_service_1.AgentScanner,
|
|
30
|
+
inject: [tokens_1.TOKENS.QUIET],
|
|
31
|
+
useFactory: (quiet) => new agent_scanner_service_1.AgentScanner(quiet),
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
provide: agent_loader_service_1.AgentLoader,
|
|
35
|
+
inject: [tokens_1.TOKENS.QUIET],
|
|
36
|
+
useFactory: (quiet) => new agent_loader_service_1.AgentLoader(quiet),
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
provide: agent_manager_service_1.AgentManager,
|
|
40
|
+
inject: [adk_1.InMemorySessionService, tokens_1.TOKENS.QUIET],
|
|
41
|
+
useFactory: (sessionService, quiet) => new agent_manager_service_1.AgentManager(sessionService, quiet),
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
exports: [adk_1.InMemorySessionService, agent_scanner_service_1.AgentScanner, agent_loader_service_1.AgentLoader, agent_manager_service_1.AgentManager],
|
|
45
|
+
})
|
|
46
|
+
], ProvidersModule);
|
|
47
|
+
//# sourceMappingURL=providers.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.module.js","sourceRoot":"","sources":["../../../src/http/providers/providers.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,mCAAmD;AACnD,2CAAwC;AACxC,gDAA6C;AAC7C,iEAAqD;AACrD,mEAAuD;AACvD,mEAAuD;AA8BhD,IAAM,eAAe,GAArB,MAAM,eAAe;CAAG,CAAA;AAAlB,0CAAe;0BAAf,eAAe;IA5B3B,IAAA,eAAM,EAAC;QACP,SAAS,EAAE;YACV,sCAAsC;YACtC;gBACC,OAAO,EAAE,4BAAsB;gBAC/B,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,4BAAsB,EAAE;aAC9C;YAED,yEAAyE;YACzE;gBACC,OAAO,EAAE,oCAAY;gBACrB,MAAM,EAAE,CAAC,eAAM,CAAC,KAAK,CAAC;gBACtB,UAAU,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,oCAAY,CAAC,KAAK,CAAC;aACvD;YACD;gBACC,OAAO,EAAE,kCAAW;gBACpB,MAAM,EAAE,CAAC,eAAM,CAAC,KAAK,CAAC;gBACtB,UAAU,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,kCAAW,CAAC,KAAK,CAAC;aACtD;YACD;gBACC,OAAO,EAAE,oCAAY;gBACrB,MAAM,EAAE,CAAC,4BAAsB,EAAE,eAAM,CAAC,KAAK,CAAC;gBAC9C,UAAU,EAAE,CAAC,cAAsC,EAAE,KAAc,EAAE,EAAE,CACtE,IAAI,oCAAY,CAAC,cAAc,EAAE,KAAK,CAAC;aACxC;SACD;QACD,OAAO,EAAE,CAAC,4BAAsB,EAAE,oCAAY,EAAE,kCAAW,EAAE,oCAAY,CAAC;KAC1E,CAAC;GACW,eAAe,CAAG"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
type SseResponse = {
|
|
2
|
+
write: (chunk: any) => boolean;
|
|
3
|
+
end: () => void;
|
|
4
|
+
on: (event: string, listener: (...args: any[]) => void) => any;
|
|
5
|
+
setHeader?: (name: string, value: string) => void;
|
|
6
|
+
};
|
|
7
|
+
export declare class HotReloadService {
|
|
8
|
+
private clients;
|
|
9
|
+
private keepAliveTimers;
|
|
10
|
+
addClient(res: SseResponse): void;
|
|
11
|
+
removeClient(res: SseResponse): void;
|
|
12
|
+
broadcast(filename?: string | null): void;
|
|
13
|
+
closeAll(): void;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=hot-reload.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hot-reload.service.d.ts","sourceRoot":"","sources":["../../../src/http/reload/hot-reload.service.ts"],"names":[],"mappings":"AAEA,KAAK,WAAW,GAAG;IAClB,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC;IAC/B,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC;IAC/D,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD,CAAC;AAQF,qBACa,gBAAgB;IAC5B,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,eAAe,CAA0C;IAEjE,SAAS,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IA0BjC,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAepC,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAgBzC,QAAQ,IAAI,IAAI;CAKhB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.HotReloadService = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
let HotReloadService = class HotReloadService {
|
|
12
|
+
clients = new Set();
|
|
13
|
+
keepAliveTimers = new Map();
|
|
14
|
+
addClient(res) {
|
|
15
|
+
this.clients.add(res);
|
|
16
|
+
// Remove on close
|
|
17
|
+
res.on("close", () => {
|
|
18
|
+
this.removeClient(res);
|
|
19
|
+
});
|
|
20
|
+
// Initial comment to open stream
|
|
21
|
+
try {
|
|
22
|
+
res.write(": connected\n\n");
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// ignore
|
|
26
|
+
}
|
|
27
|
+
// Keepalive to prevent proxies from closing the connection
|
|
28
|
+
const timer = setInterval(() => {
|
|
29
|
+
try {
|
|
30
|
+
res.write(`: ping ${Date.now()}\n\n`);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
this.removeClient(res);
|
|
34
|
+
}
|
|
35
|
+
}, 25000);
|
|
36
|
+
this.keepAliveTimers.set(res, timer);
|
|
37
|
+
}
|
|
38
|
+
removeClient(res) {
|
|
39
|
+
if (this.keepAliveTimers.has(res)) {
|
|
40
|
+
clearInterval(this.keepAliveTimers.get(res));
|
|
41
|
+
this.keepAliveTimers.delete(res);
|
|
42
|
+
}
|
|
43
|
+
if (this.clients.has(res)) {
|
|
44
|
+
try {
|
|
45
|
+
res.end();
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// ignore
|
|
49
|
+
}
|
|
50
|
+
this.clients.delete(res);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
broadcast(filename) {
|
|
54
|
+
const payload = {
|
|
55
|
+
type: "reload",
|
|
56
|
+
filename: filename ?? null,
|
|
57
|
+
timestamp: Date.now(),
|
|
58
|
+
};
|
|
59
|
+
const data = `data: ${JSON.stringify(payload)}\n\n`;
|
|
60
|
+
for (const res of Array.from(this.clients)) {
|
|
61
|
+
try {
|
|
62
|
+
res.write(data);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
this.removeClient(res);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
closeAll() {
|
|
70
|
+
for (const res of Array.from(this.clients)) {
|
|
71
|
+
this.removeClient(res);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
exports.HotReloadService = HotReloadService;
|
|
76
|
+
exports.HotReloadService = HotReloadService = __decorate([
|
|
77
|
+
(0, common_1.Injectable)()
|
|
78
|
+
], HotReloadService);
|
|
79
|
+
//# sourceMappingURL=hot-reload.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hot-reload.service.js","sourceRoot":"","sources":["../../../src/http/reload/hot-reload.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAgBrC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IACpB,OAAO,GAAG,IAAI,GAAG,EAAe,CAAC;IACjC,eAAe,GAAG,IAAI,GAAG,EAA+B,CAAC;IAEjE,SAAS,CAAC,GAAgB;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEtB,kBAAkB;QAClB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACpB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,iCAAiC;QACjC,IAAI,CAAC;YACJ,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACR,SAAS;QACV,CAAC;QAED,2DAA2D;QAC3D,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC9B,IAAI,CAAC;gBACJ,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACR,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;QACF,CAAC,EAAE,KAAK,CAAC,CAAC;QACV,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,YAAY,CAAC,GAAgB;QAC5B,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACJ,GAAG,CAAC,GAAG,EAAE,CAAC;YACX,CAAC;YAAC,MAAM,CAAC;gBACR,SAAS;YACV,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACF,CAAC;IAED,SAAS,CAAC,QAAwB;QACjC,MAAM,OAAO,GAAgB;YAC5B,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,QAAQ,IAAI,IAAI;YAC1B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC;QACF,MAAM,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;QACpD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACJ,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;YAAC,MAAM,CAAC;gBACR,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;QACF,CAAC;IACF,CAAC;IAED,QAAQ;QACP,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACF,CAAC;CACD,CAAA;AAlEY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;GACA,gBAAgB,CAkE5B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { HotReloadService } from "./hot-reload.service";
|
|
2
|
+
type SseWritable = {
|
|
3
|
+
setHeader?: (name: string, value: string) => void;
|
|
4
|
+
write: (chunk: any) => boolean;
|
|
5
|
+
end: () => void;
|
|
6
|
+
on: (event: string, listener: (...args: any[]) => void) => any;
|
|
7
|
+
};
|
|
8
|
+
export declare class ReloadController {
|
|
9
|
+
private readonly hotReload;
|
|
10
|
+
constructor(hotReload: HotReloadService);
|
|
11
|
+
stream(res: SseWritable): void;
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=reload.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reload.controller.d.ts","sourceRoot":"","sources":["../../../src/http/reload/reload.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,KAAK,WAAW,GAAG;IAClB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC;IAC/B,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC;CAC/D,CAAC;AAEF,qBACa,gBAAgB;IAED,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,gBAAgB;IAIvE,MAAM,CAAQ,GAAG,EAAE,WAAW;CAc9B"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ReloadController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const hot_reload_service_1 = require("./hot-reload.service");
|
|
18
|
+
let ReloadController = class ReloadController {
|
|
19
|
+
hotReload;
|
|
20
|
+
constructor(hotReload) {
|
|
21
|
+
this.hotReload = hotReload;
|
|
22
|
+
}
|
|
23
|
+
stream(res) {
|
|
24
|
+
// Set SSE headers (compatible with Node's ServerResponse and Express)
|
|
25
|
+
res.setHeader?.("Content-Type", "text/event-stream; charset=utf-8");
|
|
26
|
+
res.setHeader?.("Cache-Control", "no-cache, no-transform");
|
|
27
|
+
res.setHeader?.("Connection", "keep-alive");
|
|
28
|
+
// Initial frame to establish stream
|
|
29
|
+
try {
|
|
30
|
+
res.write(": connected\n\n");
|
|
31
|
+
}
|
|
32
|
+
catch { }
|
|
33
|
+
// Register client with the broadcast service
|
|
34
|
+
this.hotReload.addClient(res);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
exports.ReloadController = ReloadController;
|
|
38
|
+
__decorate([
|
|
39
|
+
(0, common_1.Get)("stream"),
|
|
40
|
+
__param(0, (0, common_1.Res)()),
|
|
41
|
+
__metadata("design:type", Function),
|
|
42
|
+
__metadata("design:paramtypes", [Object]),
|
|
43
|
+
__metadata("design:returntype", void 0)
|
|
44
|
+
], ReloadController.prototype, "stream", null);
|
|
45
|
+
exports.ReloadController = ReloadController = __decorate([
|
|
46
|
+
(0, common_1.Controller)("reload"),
|
|
47
|
+
__param(0, (0, common_1.Inject)(hot_reload_service_1.HotReloadService)),
|
|
48
|
+
__metadata("design:paramtypes", [hot_reload_service_1.HotReloadService])
|
|
49
|
+
], ReloadController);
|
|
50
|
+
//# sourceMappingURL=reload.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reload.controller.js","sourceRoot":"","sources":["../../../src/http/reload/reload.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA8D;AAC9D,6DAAwD;AAWjD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAEgB;IAD5C,YAC4C,SAA2B;QAA3B,cAAS,GAAT,SAAS,CAAkB;IACpE,CAAC;IAGJ,MAAM,CAAQ,GAAgB;QAC7B,sEAAsE;QACtE,GAAG,CAAC,SAAS,EAAE,CAAC,cAAc,EAAE,kCAAkC,CAAC,CAAC;QACpE,GAAG,CAAC,SAAS,EAAE,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAC;QAC3D,GAAG,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAE5C,oCAAoC;QACpC,IAAI,CAAC;YACJ,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAEV,6CAA6C;QAC7C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAU,CAAC,CAAC;IACtC,CAAC;CACD,CAAA;AApBY,4CAAgB;AAM5B;IADC,IAAA,YAAG,EAAC,QAAQ,CAAC;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;;;8CAaZ;2BAnBW,gBAAgB;IAD5B,IAAA,mBAAU,EAAC,QAAQ,CAAC;IAGlB,WAAA,IAAA,eAAM,EAAC,qCAAgB,CAAC,CAAA;qCAA6B,qCAAgB;GAF3D,gBAAgB,CAoB5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reload.module.d.ts","sourceRoot":"","sources":["../../../src/http/reload/reload.module.ts"],"names":[],"mappings":"AAIA,qBAKa,YAAY;CAAG"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ReloadModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const hot_reload_service_1 = require("./hot-reload.service");
|
|
12
|
+
const reload_controller_1 = require("./reload.controller");
|
|
13
|
+
let ReloadModule = class ReloadModule {
|
|
14
|
+
};
|
|
15
|
+
exports.ReloadModule = ReloadModule;
|
|
16
|
+
exports.ReloadModule = ReloadModule = __decorate([
|
|
17
|
+
(0, common_1.Module)({
|
|
18
|
+
providers: [hot_reload_service_1.HotReloadService],
|
|
19
|
+
controllers: [reload_controller_1.ReloadController],
|
|
20
|
+
exports: [hot_reload_service_1.HotReloadService],
|
|
21
|
+
})
|
|
22
|
+
], ReloadModule);
|
|
23
|
+
//# sourceMappingURL=reload.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reload.module.js","sourceRoot":"","sources":["../../../src/http/reload/reload.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,6DAAwD;AACxD,2DAAuD;AAOhD,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IALxB,IAAA,eAAM,EAAC;QACP,SAAS,EAAE,CAAC,qCAAgB,CAAC;QAC7B,WAAW,EAAE,CAAC,oCAAgB,CAAC;QAC/B,OAAO,EAAE,CAAC,qCAAgB,CAAC;KAC3B,CAAC;GACW,YAAY,CAAG"}
|