@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.
Files changed (55) hide show
  1. package/README.md +3 -0
  2. package/README.zh-CN.md +6 -0
  3. package/node_modules/@delexec/caller-controller/README.md +3 -0
  4. package/node_modules/@delexec/caller-controller/README.zh-CN.md +6 -0
  5. package/node_modules/@delexec/caller-controller/package.json +53 -0
  6. package/node_modules/@delexec/caller-controller/src/server.js +127 -0
  7. package/node_modules/@delexec/caller-controller-core/README.md +3 -0
  8. package/node_modules/@delexec/caller-controller-core/README.zh-CN.md +6 -0
  9. package/node_modules/@delexec/caller-controller-core/package.json +26 -0
  10. package/node_modules/@delexec/caller-controller-core/src/index.js +1612 -0
  11. package/node_modules/@delexec/caller-skill-adapter/package.json +12 -0
  12. package/node_modules/@delexec/caller-skill-adapter/src/server.js +1042 -0
  13. package/node_modules/@delexec/caller-skill-mcp-adapter/README.md +65 -0
  14. package/node_modules/@delexec/caller-skill-mcp-adapter/package.json +16 -0
  15. package/node_modules/@delexec/caller-skill-mcp-adapter/src/server.js +527 -0
  16. package/node_modules/@delexec/responder-controller/README.md +3 -0
  17. package/node_modules/@delexec/responder-controller/README.zh-CN.md +6 -0
  18. package/node_modules/@delexec/responder-controller/package.json +53 -0
  19. package/node_modules/@delexec/responder-controller/src/server.js +254 -0
  20. package/node_modules/@delexec/responder-runtime-core/README.md +3 -0
  21. package/node_modules/@delexec/responder-runtime-core/README.zh-CN.md +6 -0
  22. package/node_modules/@delexec/responder-runtime-core/package.json +26 -0
  23. package/node_modules/@delexec/responder-runtime-core/src/executors.js +326 -0
  24. package/node_modules/@delexec/responder-runtime-core/src/index.js +1202 -0
  25. package/node_modules/@delexec/runtime-utils/README.md +3 -0
  26. package/node_modules/@delexec/runtime-utils/README.zh-CN.md +6 -0
  27. package/node_modules/@delexec/runtime-utils/package.json +23 -0
  28. package/node_modules/@delexec/runtime-utils/src/index.js +338 -0
  29. package/node_modules/@delexec/sqlite-store/README.md +3 -0
  30. package/node_modules/@delexec/sqlite-store/README.zh-CN.md +6 -0
  31. package/node_modules/@delexec/sqlite-store/package.json +26 -0
  32. package/node_modules/@delexec/sqlite-store/src/index.js +68 -0
  33. package/node_modules/@delexec/transport-email/README.md +3 -0
  34. package/node_modules/@delexec/transport-email/README.zh-CN.md +6 -0
  35. package/node_modules/@delexec/transport-email/package.json +23 -0
  36. package/node_modules/@delexec/transport-email/src/index.js +185 -0
  37. package/node_modules/@delexec/transport-emailengine/README.md +3 -0
  38. package/node_modules/@delexec/transport-emailengine/README.zh-CN.md +6 -0
  39. package/node_modules/@delexec/transport-emailengine/package.json +26 -0
  40. package/node_modules/@delexec/transport-emailengine/src/index.js +210 -0
  41. package/node_modules/@delexec/transport-gmail/README.md +3 -0
  42. package/node_modules/@delexec/transport-gmail/README.zh-CN.md +6 -0
  43. package/node_modules/@delexec/transport-gmail/package.json +26 -0
  44. package/node_modules/@delexec/transport-gmail/src/index.js +295 -0
  45. package/node_modules/@delexec/transport-relay-http/README.md +3 -0
  46. package/node_modules/@delexec/transport-relay-http/README.zh-CN.md +6 -0
  47. package/node_modules/@delexec/transport-relay-http/package.json +23 -0
  48. package/node_modules/@delexec/transport-relay-http/src/index.js +124 -0
  49. package/package.json +64 -0
  50. package/src/cli.js +1571 -0
  51. package/src/config.js +1180 -0
  52. package/src/example-hotline-worker.js +65 -0
  53. package/src/example-hotline.js +196 -0
  54. package/src/logging.js +56 -0
  55. package/src/supervisor.js +3070 -0
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # @delexec/ops
2
+
3
+ Unified operator CLI for delegated execution clients.
@@ -0,0 +1,6 @@
1
+ # @delexec/ops
2
+
3
+ > 英文版:README.md
4
+ > 说明:中文文档为准。
5
+
6
+ 面向委托执行客户端的统一运维 CLI。
@@ -0,0 +1,3 @@
1
+ # @delexec/caller-controller
2
+
3
+ Caller controller service for delegated execution clients.
@@ -0,0 +1,6 @@
1
+ # @delexec/caller-controller
2
+
3
+ > 英文版:README.md
4
+ > 说明:中文文档为准。
5
+
6
+ 委托执行客户端的 caller 控制器服务。
@@ -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,3 @@
1
+ # @delexec/caller-controller-core
2
+
3
+ Core caller-side logic for delegated execution clients.
@@ -0,0 +1,6 @@
1
+ # @delexec/caller-controller-core
2
+
3
+ > 英文版:README.md
4
+ > 说明:中文文档为准。
5
+
6
+ 委托执行客户端的 caller 侧核心逻辑。
@@ -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
+ }