@delexec/ops 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/README.zh-CN.md +6 -0
- package/node_modules/@delexec/caller-controller/README.md +3 -0
- package/node_modules/@delexec/caller-controller/README.zh-CN.md +6 -0
- package/node_modules/@delexec/caller-controller/package.json +53 -0
- package/node_modules/@delexec/caller-controller/src/server.js +127 -0
- package/node_modules/@delexec/caller-controller-core/README.md +3 -0
- package/node_modules/@delexec/caller-controller-core/README.zh-CN.md +6 -0
- package/node_modules/@delexec/caller-controller-core/package.json +26 -0
- package/node_modules/@delexec/caller-controller-core/src/index.js +1612 -0
- package/node_modules/@delexec/caller-skill-adapter/package.json +12 -0
- package/node_modules/@delexec/caller-skill-adapter/src/server.js +1042 -0
- package/node_modules/@delexec/caller-skill-mcp-adapter/README.md +65 -0
- package/node_modules/@delexec/caller-skill-mcp-adapter/package.json +16 -0
- package/node_modules/@delexec/caller-skill-mcp-adapter/src/server.js +527 -0
- package/node_modules/@delexec/responder-controller/README.md +3 -0
- package/node_modules/@delexec/responder-controller/README.zh-CN.md +6 -0
- package/node_modules/@delexec/responder-controller/package.json +53 -0
- package/node_modules/@delexec/responder-controller/src/server.js +254 -0
- package/node_modules/@delexec/responder-runtime-core/README.md +3 -0
- package/node_modules/@delexec/responder-runtime-core/README.zh-CN.md +6 -0
- package/node_modules/@delexec/responder-runtime-core/package.json +26 -0
- package/node_modules/@delexec/responder-runtime-core/src/executors.js +326 -0
- package/node_modules/@delexec/responder-runtime-core/src/index.js +1202 -0
- package/node_modules/@delexec/runtime-utils/README.md +3 -0
- package/node_modules/@delexec/runtime-utils/README.zh-CN.md +6 -0
- package/node_modules/@delexec/runtime-utils/package.json +23 -0
- package/node_modules/@delexec/runtime-utils/src/index.js +338 -0
- package/node_modules/@delexec/sqlite-store/README.md +3 -0
- package/node_modules/@delexec/sqlite-store/README.zh-CN.md +6 -0
- package/node_modules/@delexec/sqlite-store/package.json +26 -0
- package/node_modules/@delexec/sqlite-store/src/index.js +68 -0
- package/node_modules/@delexec/transport-email/README.md +3 -0
- package/node_modules/@delexec/transport-email/README.zh-CN.md +6 -0
- package/node_modules/@delexec/transport-email/package.json +23 -0
- package/node_modules/@delexec/transport-email/src/index.js +185 -0
- package/node_modules/@delexec/transport-emailengine/README.md +3 -0
- package/node_modules/@delexec/transport-emailengine/README.zh-CN.md +6 -0
- package/node_modules/@delexec/transport-emailengine/package.json +26 -0
- package/node_modules/@delexec/transport-emailengine/src/index.js +210 -0
- package/node_modules/@delexec/transport-gmail/README.md +3 -0
- package/node_modules/@delexec/transport-gmail/README.zh-CN.md +6 -0
- package/node_modules/@delexec/transport-gmail/package.json +26 -0
- package/node_modules/@delexec/transport-gmail/src/index.js +295 -0
- package/node_modules/@delexec/transport-relay-http/README.md +3 -0
- package/node_modules/@delexec/transport-relay-http/README.zh-CN.md +6 -0
- package/node_modules/@delexec/transport-relay-http/package.json +23 -0
- package/node_modules/@delexec/transport-relay-http/src/index.js +124 -0
- package/package.json +64 -0
- package/src/cli.js +1571 -0
- package/src/config.js +1180 -0
- package/src/example-hotline-worker.js +65 -0
- package/src/example-hotline.js +196 -0
- package/src/logging.js +56 -0
- package/src/supervisor.js +3070 -0
package/README.md
ADDED
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@delexec/caller-controller",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Caller controller service for delegated execution clients",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"delexec-caller-controller": "src/server.js",
|
|
8
|
+
"croc-caller-controller": "src/server.js"
|
|
9
|
+
},
|
|
10
|
+
"bundleDependencies": [
|
|
11
|
+
"@delexec/caller-controller-core",
|
|
12
|
+
"@delexec/runtime-utils",
|
|
13
|
+
"@delexec/sqlite-store",
|
|
14
|
+
"@delexec/transport-email",
|
|
15
|
+
"@delexec/transport-emailengine",
|
|
16
|
+
"@delexec/transport-gmail",
|
|
17
|
+
"@delexec/transport-relay-http"
|
|
18
|
+
],
|
|
19
|
+
"main": "src/server.js",
|
|
20
|
+
"exports": {
|
|
21
|
+
".": "./src/server.js",
|
|
22
|
+
"./package.json": "./package.json"
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"src",
|
|
26
|
+
"README.md"
|
|
27
|
+
],
|
|
28
|
+
"scripts": {
|
|
29
|
+
"prepack": "node ../../scripts/bundle-workspace-deps.mjs stage apps/caller-controller",
|
|
30
|
+
"postpack": "node ../../scripts/bundle-workspace-deps.mjs cleanup apps/caller-controller",
|
|
31
|
+
"start": "node src/server.js",
|
|
32
|
+
"dev": "node --watch src/server.js"
|
|
33
|
+
},
|
|
34
|
+
"publishConfig": {
|
|
35
|
+
"access": "public"
|
|
36
|
+
},
|
|
37
|
+
"keywords": [
|
|
38
|
+
"delegated-execution",
|
|
39
|
+
"caller",
|
|
40
|
+
"controller"
|
|
41
|
+
],
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@delexec/caller-controller-core": "0.1.0",
|
|
44
|
+
"@delexec/contracts": "^0.1.0",
|
|
45
|
+
"@delexec/runtime-utils": "0.1.0",
|
|
46
|
+
"@delexec/sqlite-store": "0.1.0",
|
|
47
|
+
"@delexec/transport-email": "0.1.0",
|
|
48
|
+
"@delexec/transport-emailengine": "0.1.0",
|
|
49
|
+
"@delexec/transport-gmail": "0.1.0",
|
|
50
|
+
"@delexec/transport-relay-http": "0.1.0",
|
|
51
|
+
"better-sqlite3": "^12.6.2"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
|
|
5
|
+
import { createCallerControllerServer, createCallerState, hydrateCallerState, serializeCallerState } from "@delexec/caller-controller-core";
|
|
6
|
+
import { createSqliteSnapshotStore } from "@delexec/sqlite-store";
|
|
7
|
+
import { createEmailEngineTransportAdapter } from "@delexec/transport-emailengine";
|
|
8
|
+
import { createGmailTransportAdapter } from "@delexec/transport-gmail";
|
|
9
|
+
import { createRelayHttpTransportAdapter } from "@delexec/transport-relay-http";
|
|
10
|
+
import { buildOpsEnvSearchPaths, loadEnvFiles } from "@delexec/runtime-utils";
|
|
11
|
+
|
|
12
|
+
export * from "@delexec/caller-controller-core";
|
|
13
|
+
|
|
14
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
15
|
+
const __dirname = path.dirname(__filename);
|
|
16
|
+
const ROOT_DIR = path.resolve(__dirname, "../../..");
|
|
17
|
+
|
|
18
|
+
loadEnvFiles(buildOpsEnvSearchPaths(ROOT_DIR, "caller"));
|
|
19
|
+
|
|
20
|
+
function isDirectRun() {
|
|
21
|
+
if (!process.argv[1]) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
return fs.realpathSync.native(path.resolve(process.argv[1])) === fs.realpathSync.native(__filename);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function loadPlatformConfigFromEnv() {
|
|
28
|
+
if (String(process.env.PLATFORM_ENABLED || "true") !== "true") {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const baseUrl = process.env.PLATFORM_API_BASE_URL || null;
|
|
32
|
+
if (!baseUrl) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return {
|
|
37
|
+
baseUrl,
|
|
38
|
+
apiKey: process.env.CALLER_PLATFORM_API_KEY || process.env.PLATFORM_API_KEY || null
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function loadTransportConfigFromEnv(serviceName) {
|
|
43
|
+
const transportType = process.env.TRANSPORT_TYPE || (process.env.TRANSPORT_BASE_URL ? "relay_http" : null);
|
|
44
|
+
if (transportType === "email") {
|
|
45
|
+
const provider = process.env.TRANSPORT_EMAIL_PROVIDER || process.env.TRANSPORT_PROVIDER || "unknown";
|
|
46
|
+
if (provider === "emailengine") {
|
|
47
|
+
return createEmailEngineTransportAdapter({
|
|
48
|
+
baseUrl: process.env.TRANSPORT_EMAILENGINE_BASE_URL,
|
|
49
|
+
account: process.env.TRANSPORT_EMAILENGINE_ACCOUNT,
|
|
50
|
+
accessToken: process.env.TRANSPORT_EMAILENGINE_ACCESS_TOKEN,
|
|
51
|
+
sender: process.env.TRANSPORT_EMAIL_SENDER || process.env.CALLER_CONTACT_EMAIL || null,
|
|
52
|
+
receiver: process.env.TRANSPORT_EMAIL_RECEIVER || null
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
if (provider === "gmail") {
|
|
56
|
+
return createGmailTransportAdapter({
|
|
57
|
+
clientId: process.env.TRANSPORT_GMAIL_CLIENT_ID,
|
|
58
|
+
clientSecret: process.env.TRANSPORT_GMAIL_CLIENT_SECRET,
|
|
59
|
+
refreshToken: process.env.TRANSPORT_GMAIL_REFRESH_TOKEN,
|
|
60
|
+
user: process.env.TRANSPORT_GMAIL_USER,
|
|
61
|
+
sender: process.env.TRANSPORT_EMAIL_SENDER || process.env.TRANSPORT_GMAIL_USER || null,
|
|
62
|
+
receiver: process.env.TRANSPORT_EMAIL_RECEIVER || null
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
throw new Error(`TRANSPORT_NOT_IMPLEMENTED: email transport provider ${provider} is not implemented yet`);
|
|
66
|
+
}
|
|
67
|
+
const baseUrl = process.env.TRANSPORT_BASE_URL || null;
|
|
68
|
+
if (!baseUrl || !transportType) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return createRelayHttpTransportAdapter({
|
|
73
|
+
baseUrl,
|
|
74
|
+
receiver: process.env.TRANSPORT_RECEIVER || serviceName
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
async function createOptionalPersistence(serviceName) {
|
|
79
|
+
const sqlitePath = process.env.SQLITE_DATABASE_PATH || null;
|
|
80
|
+
if (!sqlitePath) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const store = await createSqliteSnapshotStore({
|
|
85
|
+
databasePath: sqlitePath,
|
|
86
|
+
serviceName
|
|
87
|
+
});
|
|
88
|
+
await store.migrate();
|
|
89
|
+
return store;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (isDirectRun()) {
|
|
93
|
+
const port = Number(process.env.PORT || 8081);
|
|
94
|
+
const serviceName = process.env.SERVICE_NAME || "caller-controller";
|
|
95
|
+
const state = createCallerState();
|
|
96
|
+
const transport = loadTransportConfigFromEnv(serviceName);
|
|
97
|
+
const persistence = await createOptionalPersistence(serviceName);
|
|
98
|
+
if (persistence) {
|
|
99
|
+
hydrateCallerState(state, await persistence.loadSnapshot());
|
|
100
|
+
}
|
|
101
|
+
const server = createCallerControllerServer({
|
|
102
|
+
serviceName,
|
|
103
|
+
state,
|
|
104
|
+
transport,
|
|
105
|
+
platform: loadPlatformConfigFromEnv(),
|
|
106
|
+
background: {
|
|
107
|
+
enabled: Boolean(transport),
|
|
108
|
+
receiver: process.env.TRANSPORT_RECEIVER || serviceName,
|
|
109
|
+
inboxPollIntervalMs: Number(process.env.CALLER_CONTROLLER_INBOX_POLL_INTERVAL_MS || 250),
|
|
110
|
+
eventsSyncIntervalMs: Number(process.env.CALLER_CONTROLLER_EVENTS_SYNC_INTERVAL_MS || 250)
|
|
111
|
+
},
|
|
112
|
+
onStateChanged: persistence
|
|
113
|
+
? async (currentState) => {
|
|
114
|
+
await persistence.saveSnapshot(serializeCallerState(currentState));
|
|
115
|
+
}
|
|
116
|
+
: null
|
|
117
|
+
});
|
|
118
|
+
server.listen(port, "0.0.0.0", () => {
|
|
119
|
+
console.log(`[${serviceName}] listening on ${port}`);
|
|
120
|
+
});
|
|
121
|
+
server.on("close", () => {
|
|
122
|
+
if (persistence) {
|
|
123
|
+
void persistence.saveSnapshot(serializeCallerState(state));
|
|
124
|
+
void persistence.close();
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@delexec/caller-controller-core",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Caller controller core logic for delegated execution",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "src/index.js",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./src/index.js",
|
|
9
|
+
"./package.json": "./package.json"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"src",
|
|
13
|
+
"README.md"
|
|
14
|
+
],
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"delegated-execution",
|
|
20
|
+
"caller",
|
|
21
|
+
"core"
|
|
22
|
+
],
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@delexec/contracts": "^0.1.0"
|
|
25
|
+
}
|
|
26
|
+
}
|