aios-management-serivce 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 (162) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +114 -0
  3. package/dist/capabilities/agent/create.d.ts +2 -0
  4. package/dist/capabilities/agent/create.js +5 -0
  5. package/dist/capabilities/agent/create.js.map +1 -0
  6. package/dist/capabilities/agent/delete.d.ts +2 -0
  7. package/dist/capabilities/agent/delete.js +5 -0
  8. package/dist/capabilities/agent/delete.js.map +1 -0
  9. package/dist/capabilities/agent/disable.d.ts +2 -0
  10. package/dist/capabilities/agent/disable.js +5 -0
  11. package/dist/capabilities/agent/disable.js.map +1 -0
  12. package/dist/capabilities/agent/docs-update.d.ts +2 -0
  13. package/dist/capabilities/agent/docs-update.js +5 -0
  14. package/dist/capabilities/agent/docs-update.js.map +1 -0
  15. package/dist/capabilities/agent/enable.d.ts +2 -0
  16. package/dist/capabilities/agent/enable.js +5 -0
  17. package/dist/capabilities/agent/enable.js.map +1 -0
  18. package/dist/capabilities/agent/get.d.ts +2 -0
  19. package/dist/capabilities/agent/get.js +5 -0
  20. package/dist/capabilities/agent/get.js.map +1 -0
  21. package/dist/capabilities/agent/lifecycle-service.d.ts +31 -0
  22. package/dist/capabilities/agent/lifecycle-service.js +357 -0
  23. package/dist/capabilities/agent/lifecycle-service.js.map +1 -0
  24. package/dist/capabilities/agent/list.d.ts +2 -0
  25. package/dist/capabilities/agent/list.js +4 -0
  26. package/dist/capabilities/agent/list.js.map +1 -0
  27. package/dist/capabilities/agent/model-set.d.ts +2 -0
  28. package/dist/capabilities/agent/model-set.js +5 -0
  29. package/dist/capabilities/agent/model-set.js.map +1 -0
  30. package/dist/capabilities/agent/operations-service.d.ts +19 -0
  31. package/dist/capabilities/agent/operations-service.js +85 -0
  32. package/dist/capabilities/agent/operations-service.js.map +1 -0
  33. package/dist/capabilities/agent/service.d.ts +55 -0
  34. package/dist/capabilities/agent/service.js +138 -0
  35. package/dist/capabilities/agent/service.js.map +1 -0
  36. package/dist/capabilities/agent/skills-service.d.ts +22 -0
  37. package/dist/capabilities/agent/skills-service.js +106 -0
  38. package/dist/capabilities/agent/skills-service.js.map +1 -0
  39. package/dist/capabilities/agent/state-store.d.ts +11 -0
  40. package/dist/capabilities/agent/state-store.js +58 -0
  41. package/dist/capabilities/agent/state-store.js.map +1 -0
  42. package/dist/capabilities/agent/support.d.ts +26 -0
  43. package/dist/capabilities/agent/support.js +69 -0
  44. package/dist/capabilities/agent/support.js.map +1 -0
  45. package/dist/capabilities/agent/usage.d.ts +2 -0
  46. package/dist/capabilities/agent/usage.js +4 -0
  47. package/dist/capabilities/agent/usage.js.map +1 -0
  48. package/dist/capabilities/agent/workspace-service.d.ts +12 -0
  49. package/dist/capabilities/agent/workspace-service.js +75 -0
  50. package/dist/capabilities/agent/workspace-service.js.map +1 -0
  51. package/dist/capabilities/agent-template/create.d.ts +2 -0
  52. package/dist/capabilities/agent-template/create.js +5 -0
  53. package/dist/capabilities/agent-template/create.js.map +1 -0
  54. package/dist/capabilities/agent-template/delete.d.ts +2 -0
  55. package/dist/capabilities/agent-template/delete.js +5 -0
  56. package/dist/capabilities/agent-template/delete.js.map +1 -0
  57. package/dist/capabilities/agent-template/list.d.ts +2 -0
  58. package/dist/capabilities/agent-template/list.js +4 -0
  59. package/dist/capabilities/agent-template/list.js.map +1 -0
  60. package/dist/capabilities/agent-template/service.d.ts +24 -0
  61. package/dist/capabilities/agent-template/service.js +104 -0
  62. package/dist/capabilities/agent-template/service.js.map +1 -0
  63. package/dist/capabilities/apps/create.d.ts +2 -0
  64. package/dist/capabilities/apps/create.js +5 -0
  65. package/dist/capabilities/apps/create.js.map +1 -0
  66. package/dist/capabilities/apps/delete.d.ts +2 -0
  67. package/dist/capabilities/apps/delete.js +5 -0
  68. package/dist/capabilities/apps/delete.js.map +1 -0
  69. package/dist/capabilities/apps/disable.d.ts +2 -0
  70. package/dist/capabilities/apps/disable.js +5 -0
  71. package/dist/capabilities/apps/disable.js.map +1 -0
  72. package/dist/capabilities/apps/enable.d.ts +2 -0
  73. package/dist/capabilities/apps/enable.js +5 -0
  74. package/dist/capabilities/apps/enable.js.map +1 -0
  75. package/dist/capabilities/apps/list.d.ts +2 -0
  76. package/dist/capabilities/apps/list.js +4 -0
  77. package/dist/capabilities/apps/list.js.map +1 -0
  78. package/dist/capabilities/apps/log-record.d.ts +2 -0
  79. package/dist/capabilities/apps/log-record.js +5 -0
  80. package/dist/capabilities/apps/log-record.js.map +1 -0
  81. package/dist/capabilities/apps/logs-query.d.ts +2 -0
  82. package/dist/capabilities/apps/logs-query.js +4 -0
  83. package/dist/capabilities/apps/logs-query.js.map +1 -0
  84. package/dist/capabilities/apps/service.d.ts +43 -0
  85. package/dist/capabilities/apps/service.js +350 -0
  86. package/dist/capabilities/apps/service.js.map +1 -0
  87. package/dist/capabilities/apps/stats-query.d.ts +2 -0
  88. package/dist/capabilities/apps/stats-query.js +4 -0
  89. package/dist/capabilities/apps/stats-query.js.map +1 -0
  90. package/dist/capabilities/apps/update.d.ts +2 -0
  91. package/dist/capabilities/apps/update.js +5 -0
  92. package/dist/capabilities/apps/update.js.map +1 -0
  93. package/dist/capabilities/context.d.ts +102 -0
  94. package/dist/capabilities/context.js +4 -0
  95. package/dist/capabilities/context.js.map +1 -0
  96. package/dist/capabilities/ontology/create.d.ts +2 -0
  97. package/dist/capabilities/ontology/create.js +5 -0
  98. package/dist/capabilities/ontology/create.js.map +1 -0
  99. package/dist/capabilities/ontology/delete.d.ts +2 -0
  100. package/dist/capabilities/ontology/delete.js +5 -0
  101. package/dist/capabilities/ontology/delete.js.map +1 -0
  102. package/dist/capabilities/ontology/list.d.ts +2 -0
  103. package/dist/capabilities/ontology/list.js +4 -0
  104. package/dist/capabilities/ontology/list.js.map +1 -0
  105. package/dist/capabilities/ontology/service.d.ts +19 -0
  106. package/dist/capabilities/ontology/service.js +53 -0
  107. package/dist/capabilities/ontology/service.js.map +1 -0
  108. package/dist/capabilities/operations/diagnostics-run.d.ts +2 -0
  109. package/dist/capabilities/operations/diagnostics-run.js +4 -0
  110. package/dist/capabilities/operations/diagnostics-run.js.map +1 -0
  111. package/dist/capabilities/operations/gateway-restart.d.ts +2 -0
  112. package/dist/capabilities/operations/gateway-restart.js +4 -0
  113. package/dist/capabilities/operations/gateway-restart.js.map +1 -0
  114. package/dist/capabilities/operations/gateway-status.d.ts +2 -0
  115. package/dist/capabilities/operations/gateway-status.js +4 -0
  116. package/dist/capabilities/operations/gateway-status.js.map +1 -0
  117. package/dist/capabilities/operations/logs-query.d.ts +2 -0
  118. package/dist/capabilities/operations/logs-query.js +4 -0
  119. package/dist/capabilities/operations/logs-query.js.map +1 -0
  120. package/dist/capabilities/registry.d.ts +2 -0
  121. package/dist/capabilities/registry.js +71 -0
  122. package/dist/capabilities/registry.js.map +1 -0
  123. package/dist/capabilities/service/ping.d.ts +2 -0
  124. package/dist/capabilities/service/ping.js +4 -0
  125. package/dist/capabilities/service/ping.js.map +1 -0
  126. package/dist/capabilities/service/status.d.ts +2 -0
  127. package/dist/capabilities/service/status.js +4 -0
  128. package/dist/capabilities/service/status.js.map +1 -0
  129. package/dist/capabilities/skills-global/delete.d.ts +2 -0
  130. package/dist/capabilities/skills-global/delete.js +5 -0
  131. package/dist/capabilities/skills-global/delete.js.map +1 -0
  132. package/dist/capabilities/skills-global/install.d.ts +2 -0
  133. package/dist/capabilities/skills-global/install.js +5 -0
  134. package/dist/capabilities/skills-global/install.js.map +1 -0
  135. package/dist/capabilities/skills-global/list.d.ts +2 -0
  136. package/dist/capabilities/skills-global/list.js +4 -0
  137. package/dist/capabilities/skills-global/list.js.map +1 -0
  138. package/dist/capabilities/skills-global/update.d.ts +2 -0
  139. package/dist/capabilities/skills-global/update.js +5 -0
  140. package/dist/capabilities/skills-global/update.js.map +1 -0
  141. package/dist/cli.d.ts +2 -0
  142. package/dist/cli.js +19 -0
  143. package/dist/cli.js.map +1 -0
  144. package/dist/env.d.ts +3 -0
  145. package/dist/env.js +146 -0
  146. package/dist/env.js.map +1 -0
  147. package/dist/index.d.ts +4 -0
  148. package/dist/index.js +4 -0
  149. package/dist/index.js.map +1 -0
  150. package/dist/service.d.ts +52 -0
  151. package/dist/service.js +302 -0
  152. package/dist/service.js.map +1 -0
  153. package/dist/tools/cli-runner.d.ts +22 -0
  154. package/dist/tools/cli-runner.js +57 -0
  155. package/dist/tools/cli-runner.js.map +1 -0
  156. package/dist/tools/s3-archive.d.ts +6 -0
  157. package/dist/tools/s3-archive.js +81 -0
  158. package/dist/tools/s3-archive.js.map +1 -0
  159. package/dist/types.d.ts +231 -0
  160. package/dist/types.js +2 -0
  161. package/dist/types.js.map +1 -0
  162. package/package.json +70 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 low-code-dev-lab
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,114 @@
1
+ # aios-management-serivce
2
+
3
+ `aios-management-serivce` 是一个面向 AIOS / OpenClaw 网关的 MQTT 管理服务。它监听管理主题接收 JSON 请求,把常见运维动作统一封装为可调用接口,避免直接登录网关执行命令。
4
+
5
+ ## 功能
6
+
7
+ - 通过 MQTT 接收管理请求,并返回统一 JSON 响应
8
+ - 管理 OpenClaw Agent 生命周期,包括创建、启用、停用、删除、模型更新和 `AGENTS.md` 更新
9
+ - 管理业务系统元数据与调用审计,动作前缀为 `apps.*`
10
+ - 管理全局 Skills,包括查询、安装、升级和删除
11
+ - 管理 Ontology,包括从 S3 兼容存储导入和删除
12
+ - 提供日志查询、诊断执行、网关状态查询和重启能力
13
+
14
+ ## 安装
15
+
16
+ 要求:
17
+
18
+ - Node.js `>= 20`
19
+ - 运行环境中可直接调用 `openclaw`
20
+
21
+ 安装:
22
+
23
+ ```bash
24
+ npm install aios-management-serivce
25
+ ```
26
+
27
+ 全局安装:
28
+
29
+ ```bash
30
+ npm install -g aios-management-serivce
31
+ ```
32
+
33
+ ## 用法
34
+
35
+ ### 1. 配置环境变量
36
+
37
+ 最小必需环境变量:
38
+
39
+ ```bash
40
+ AIOS_DATA_DIR="/var/aios/data"
41
+ AIOS_ONTOLOGY_DIR="/var/aios/ontology"
42
+ AIOS_OPENCLAW_HOME="/var/aios/.openclaw"
43
+ AIOS_RUN_MODE="container"
44
+ AIOS_WORKSPACE_TEMPLATES_DIR="/var/aios/workspace-templates"
45
+ AIOS_MQTT_CHANNEL_BROKER="mqtt://172.16.12.2:1883"
46
+ AIOS_MQTT_CHANNEL_USERNAME="user"
47
+ AIOS_MQTT_CHANNEL_PASSWORD="pass"
48
+ AIOS_ADMIN_INBOUND_TOPIC="aios/admin/inbound"
49
+ AIOS_ADMIN_OUTBOUND_TOPIC="aios/admin/outbound"
50
+ AIOS_AGENT_CHANNEL_INBOUND_TOPIC_TEMPLATE="aios/agent/{agentId}/inbound"
51
+ AIOS_AGENT_CHANNEL_OUTBOUND_TOPIC_TEMPLATE="aios/agent/{agentId}/outbound"
52
+ ```
53
+
54
+ 标准 Docker 部署下,这些拓扑变量通常由 `docker-image` 入口脚本固定提供,不需要再从 `env.json` 回传给 CLI。
55
+ `agent.create` 支持 `templateName` 参数,默认值为 `default`。创建时会从 `AIOS_WORKSPACE_TEMPLATES_DIR/<templateName>` 复制整个模板目录到目标 workspace,然后再调用 `openclaw agents add` 补齐其余 bootstrap 文件,并把 workspace 下的 `AGENTS.md` 权限收敛为 `agents` 只读、`agents-admin` 可写。
56
+
57
+ 如果需要使用 `ontology.create`,还需要配置 S3 兼容存储:
58
+
59
+ ```bash
60
+ AIOS_S3_ENDPOINT="http://172.16.12.2:9000"
61
+ AIOS_S3_REGION="local"
62
+ AIOS_S3_ACCESS_KEY_ID="minioadmin"
63
+ AIOS_S3_SECRET_ACCESS_KEY="minioadmin"
64
+ AIOS_S3_FORCE_PATH_STYLE="true"
65
+ ```
66
+
67
+ ### 2. 启动服务
68
+
69
+ 全局安装后可直接启动:
70
+
71
+ ```bash
72
+ aios-management-serivce
73
+ ```
74
+
75
+ 或者在项目内通过 Node.js 启动:
76
+
77
+ ```bash
78
+ node ./node_modules/aios-management-serivce/dist/cli.js
79
+ ```
80
+
81
+ 启动成功后,服务会监听:
82
+
83
+ - MQTT 请求主题:默认 `aios/admin/inbound`
84
+ - MQTT 响应主题:默认 `aios/admin/outbound`
85
+
86
+ ### 3. 发送管理请求
87
+
88
+ 请求消息格式:
89
+
90
+ ```json
91
+ {
92
+ "requestId": "req-001",
93
+ "action": "service.ping",
94
+ "params": {}
95
+ }
96
+ ```
97
+
98
+ 管理响应主题由服务直接从环境变量 `AIOS_ADMIN_OUTBOUND_TOPIC` 读取并发布。
99
+
100
+ 响应消息格式:
101
+
102
+ ```json
103
+ {
104
+ "requestId": "req-001",
105
+ "action": "service.ping",
106
+ "ok": true,
107
+ "result": {
108
+ "pong": true
109
+ },
110
+ "timestamp": "2026-05-15T00:00:00.000Z"
111
+ }
112
+ ```
113
+
114
+ 完整动作清单和请求示例见 [docs/capacity-list.md](./docs/capacity-list.md)。
@@ -0,0 +1,2 @@
1
+ import { type CapabilityHandler } from "../context.js";
2
+ export declare const agentCreate: CapabilityHandler;
@@ -0,0 +1,5 @@
1
+ import { readCapabilityParams } from "../context.js";
2
+ export const agentCreate = async (request, context) => {
3
+ return await context.agentManager.createAgent(readCapabilityParams(request));
4
+ };
5
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/capabilities/agent/create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAA0B,MAAM,eAAe,CAAC;AAE7E,MAAM,CAAC,MAAM,WAAW,GAAsB,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IACvE,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,oBAAoB,CAAoB,OAAO,CAAC,CAAC,CAAC;AAClG,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { type CapabilityHandler } from "../context.js";
2
+ export declare const agentDelete: CapabilityHandler;
@@ -0,0 +1,5 @@
1
+ import { readCapabilityParams } from "../context.js";
2
+ export const agentDelete = async (request, context) => {
3
+ return await context.agentManager.deleteAgent(readCapabilityParams(request));
4
+ };
5
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/capabilities/agent/delete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAA0B,MAAM,eAAe,CAAC;AAE7E,MAAM,CAAC,MAAM,WAAW,GAAsB,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IACvE,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,oBAAoB,CAAsB,OAAO,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { type CapabilityHandler } from "../context.js";
2
+ export declare const agentDisable: CapabilityHandler;
@@ -0,0 +1,5 @@
1
+ import { readCapabilityParams } from "../context.js";
2
+ export const agentDisable = async (request, context) => {
3
+ return await context.agentManager.disableAgent(readCapabilityParams(request));
4
+ };
5
+ //# sourceMappingURL=disable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disable.js","sourceRoot":"","sources":["../../../src/capabilities/agent/disable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAA0B,MAAM,eAAe,CAAC;AAE7E,MAAM,CAAC,MAAM,YAAY,GAAsB,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IACxE,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,oBAAoB,CAAsB,OAAO,CAAC,CAAC,CAAC;AACrG,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { type CapabilityHandler } from "../context.js";
2
+ export declare const agentDocsUpdate: CapabilityHandler;
@@ -0,0 +1,5 @@
1
+ import { readCapabilityParams } from "../context.js";
2
+ export const agentDocsUpdate = async (request, context) => {
3
+ return await context.agentManager.updateAgentDocs(readCapabilityParams(request));
4
+ };
5
+ //# sourceMappingURL=docs-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-update.js","sourceRoot":"","sources":["../../../src/capabilities/agent/docs-update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAA0B,MAAM,eAAe,CAAC;AAE7E,MAAM,CAAC,MAAM,eAAe,GAAsB,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IAC3E,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,oBAAoB,CAAwB,OAAO,CAAC,CAAC,CAAC;AAC1G,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { type CapabilityHandler } from "../context.js";
2
+ export declare const agentEnable: CapabilityHandler;
@@ -0,0 +1,5 @@
1
+ import { readCapabilityParams } from "../context.js";
2
+ export const agentEnable = async (request, context) => {
3
+ return await context.agentManager.enableAgent(readCapabilityParams(request));
4
+ };
5
+ //# sourceMappingURL=enable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enable.js","sourceRoot":"","sources":["../../../src/capabilities/agent/enable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAA0B,MAAM,eAAe,CAAC;AAE7E,MAAM,CAAC,MAAM,WAAW,GAAsB,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IACvE,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,oBAAoB,CAAsB,OAAO,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { type CapabilityHandler } from "../context.js";
2
+ export declare const agentGet: CapabilityHandler;
@@ -0,0 +1,5 @@
1
+ import { readCapabilityParams } from "../context.js";
2
+ export const agentGet = async (request, context) => {
3
+ return await context.agentManager.getAgent(readCapabilityParams(request));
4
+ };
5
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/capabilities/agent/get.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAA0B,MAAM,eAAe,CAAC;AAE7E,MAAM,CAAC,MAAM,QAAQ,GAAsB,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IACpE,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,oBAAoB,CAAiB,OAAO,CAAC,CAAC,CAAC;AAC5F,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { CliRunner } from "../../tools/cli-runner.js";
2
+ import type { AgentModelSetParams, EnvironmentConfig, ManagedAgentRecord } from "../../types.js";
3
+ import { type ResolvedAgentCreateOptions } from "./support.js";
4
+ export declare class AgentLifecycleService {
5
+ private readonly cli;
6
+ private readonly env;
7
+ constructor(cli: CliRunner, env: EnvironmentConfig);
8
+ listAgents(managedAgents: ManagedAgentRecord[]): Promise<unknown>;
9
+ agentExists(agentId: string): Promise<boolean>;
10
+ ensureManagedTopologyBase(): Promise<void>;
11
+ createManagedTopology(params: ResolvedAgentCreateOptions): Promise<void>;
12
+ enableManagedTopology(record: ManagedAgentRecord): Promise<void>;
13
+ disableManagedTopology(record: ManagedAgentRecord): Promise<void>;
14
+ deleteManagedTopology(record: ManagedAgentRecord): Promise<void>;
15
+ setAgentModel(params: AgentModelSetParams): Promise<unknown>;
16
+ queryUsage(agentId: string): Promise<unknown>;
17
+ private listConfiguredAgents;
18
+ private findAgentConfigIndex;
19
+ private requireAgentConfigIndex;
20
+ private createAgentByConfigMutation;
21
+ private configureMqttAccount;
22
+ private safeJson;
23
+ private readOpenClawConfig;
24
+ private buildManagedAccountPayload;
25
+ private upsertManagedAccountInConfig;
26
+ private removeManagedAccountFromConfig;
27
+ private upsertManagedBindingInConfig;
28
+ private removeManagedBindingFromConfig;
29
+ private ensureMode;
30
+ private writeOpenClawConfig;
31
+ }
@@ -0,0 +1,357 @@
1
+ import { chmod, mkdir, readFile, rename, writeFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { DEFAULT_DM_SCOPE, MQTT_CHANNEL_ID, SHARED_DIRECTORY_MODE, SHARED_FILE_MODE, mqttAccountPath, normalizeModelConfig, quoteConfigKey } from "./support.js";
4
+ export class AgentLifecycleService {
5
+ cli;
6
+ env;
7
+ constructor(cli, env) {
8
+ this.cli = cli;
9
+ this.env = env;
10
+ }
11
+ async listAgents(managedAgents) {
12
+ const configuredAgents = await this.listConfiguredAgents();
13
+ const byId = new Map(managedAgents.map((agent) => [agent.id, agent]));
14
+ const items = configuredAgents.map((agent) => {
15
+ const managed = agent.id ? byId.get(agent.id) : undefined;
16
+ const enabled = managed?.enabled ?? true;
17
+ return {
18
+ agentId: agent.id ?? "",
19
+ name: agent.name ?? agent.id ?? "",
20
+ workspace: managed?.workspace ?? agent.workspace ?? "",
21
+ workspaces: managed?.workspace ?? agent.workspace ?? "",
22
+ templateName: managed?.templateName,
23
+ status: enabled ? "active" : "disabled",
24
+ health: enabled ? "normal" : "disabled",
25
+ usage: {
26
+ daily: 0,
27
+ weekly: 0,
28
+ monthly: 0,
29
+ total: 0
30
+ },
31
+ lastInteractionAt: null,
32
+ lastInteractionUser: null,
33
+ inboundTopic: managed?.inboundTopic,
34
+ "inbound-topic": managed?.inboundTopic,
35
+ outboundTopic: managed?.outboundTopic,
36
+ "outbound-topic": managed?.outboundTopic
37
+ };
38
+ });
39
+ return {
40
+ managedAgents,
41
+ configuredAgents,
42
+ items
43
+ };
44
+ }
45
+ async agentExists(agentId) {
46
+ return (await this.findAgentConfigIndex(agentId)) >= 0;
47
+ }
48
+ async ensureManagedTopologyBase() {
49
+ if (this.env.gatewayRestartMode === "container") {
50
+ const config = await this.readOpenClawConfig();
51
+ config.plugins ??= {};
52
+ config.plugins.entries ??= {};
53
+ config.plugins.entries[MQTT_CHANNEL_ID] = {
54
+ ...(config.plugins.entries[MQTT_CHANNEL_ID] ?? {}),
55
+ enabled: true
56
+ };
57
+ config.session ??= {};
58
+ config.session.dmScope = DEFAULT_DM_SCOPE;
59
+ await this.writeOpenClawConfig(config);
60
+ return;
61
+ }
62
+ await this.cli.run([
63
+ "config",
64
+ "set",
65
+ `plugins.entries${quoteConfigKey(MQTT_CHANNEL_ID)}.enabled`,
66
+ "true",
67
+ "--strict-json"
68
+ ]);
69
+ await this.cli.run([
70
+ "config",
71
+ "set",
72
+ "session.dmScope",
73
+ `"${DEFAULT_DM_SCOPE}"`,
74
+ "--strict-json"
75
+ ]);
76
+ }
77
+ async createManagedTopology(params) {
78
+ if (this.env.gatewayRestartMode === "container") {
79
+ await this.createAgentByConfigMutation(params);
80
+ return;
81
+ }
82
+ await this.cli.run([
83
+ "agents",
84
+ "add",
85
+ params.agentId,
86
+ "--workspace",
87
+ params.workspace,
88
+ "--non-interactive",
89
+ "--json"
90
+ ]);
91
+ if (params.model) {
92
+ await this.setAgentModel({
93
+ agentId: params.agentId,
94
+ model: params.model
95
+ });
96
+ }
97
+ await this.configureMqttAccount({
98
+ accountId: params.accountId,
99
+ brokerUrl: this.env.managedMqttBrokerUrl,
100
+ username: this.env.managedMqttUsername,
101
+ password: this.env.managedMqttPassword,
102
+ inboundTopic: params.inboundTopic,
103
+ outboundTopic: params.outboundTopic,
104
+ enabled: true
105
+ });
106
+ await this.cli.run([
107
+ "agents",
108
+ "bind",
109
+ "--agent",
110
+ params.agentId,
111
+ "--bind",
112
+ `${MQTT_CHANNEL_ID}:${params.accountId}`,
113
+ "--json"
114
+ ], { allowFailure: true });
115
+ }
116
+ async enableManagedTopology(record) {
117
+ if (this.env.gatewayRestartMode === "container") {
118
+ const config = await this.readOpenClawConfig();
119
+ this.upsertManagedAccountInConfig(config, record.accountId, record.inboundTopic, record.outboundTopic, true);
120
+ this.upsertManagedBindingInConfig(config, record.id, record.accountId);
121
+ await this.writeOpenClawConfig(config);
122
+ return;
123
+ }
124
+ await this.cli.run([
125
+ "config",
126
+ "set",
127
+ `${mqttAccountPath(record.accountId)}.enabled`,
128
+ "true",
129
+ "--strict-json"
130
+ ]);
131
+ await this.cli.run([
132
+ "agents",
133
+ "bind",
134
+ "--agent",
135
+ record.id,
136
+ "--bind",
137
+ `${MQTT_CHANNEL_ID}:${record.accountId}`,
138
+ "--json"
139
+ ], { allowFailure: true });
140
+ }
141
+ async disableManagedTopology(record) {
142
+ if (this.env.gatewayRestartMode === "container") {
143
+ const config = await this.readOpenClawConfig();
144
+ this.upsertManagedAccountInConfig(config, record.accountId, record.inboundTopic, record.outboundTopic, false);
145
+ await this.writeOpenClawConfig(config);
146
+ return;
147
+ }
148
+ await this.cli.run([
149
+ "config",
150
+ "set",
151
+ `${mqttAccountPath(record.accountId)}.enabled`,
152
+ "false",
153
+ "--strict-json"
154
+ ]);
155
+ }
156
+ async deleteManagedTopology(record) {
157
+ if (this.env.gatewayRestartMode === "container") {
158
+ const config = await this.readOpenClawConfig();
159
+ const agents = Array.isArray(config.agents?.list) ? config.agents.list : [];
160
+ config.agents ??= {};
161
+ config.agents.list = agents.filter((entry) => entry?.id !== record.id);
162
+ this.removeManagedAccountFromConfig(config, record.accountId);
163
+ this.removeManagedBindingFromConfig(config, record.id, record.accountId);
164
+ await this.writeOpenClawConfig(config);
165
+ return;
166
+ }
167
+ await this.cli.run([
168
+ "agents",
169
+ "unbind",
170
+ "--agent",
171
+ record.id,
172
+ "--bind",
173
+ `${MQTT_CHANNEL_ID}:${record.accountId}`,
174
+ "--json"
175
+ ], { allowFailure: true });
176
+ await this.cli.run([
177
+ "config",
178
+ "unset",
179
+ mqttAccountPath(record.accountId)
180
+ ], { allowFailure: true });
181
+ await this.cli.run([
182
+ "agents",
183
+ "delete",
184
+ record.id,
185
+ "--force",
186
+ "--json"
187
+ ]);
188
+ }
189
+ async setAgentModel(params) {
190
+ const model = normalizeModelConfig(params.model);
191
+ if (this.env.gatewayRestartMode === "container") {
192
+ const config = await this.readOpenClawConfig();
193
+ const agents = Array.isArray(config.agents?.list) ? config.agents.list : [];
194
+ const agent = agents.find((entry) => entry?.id === params.agentId);
195
+ if (!agent) {
196
+ throw new Error(`Agent config not found: ${params.agentId}`);
197
+ }
198
+ agent.model = model;
199
+ await this.writeOpenClawConfig(config);
200
+ }
201
+ else {
202
+ const index = await this.requireAgentConfigIndex(params.agentId);
203
+ await this.cli.run([
204
+ "config",
205
+ "set",
206
+ `agents.list[${index}].model`,
207
+ JSON.stringify(model),
208
+ "--strict-json"
209
+ ]);
210
+ }
211
+ return {
212
+ agentId: params.agentId,
213
+ model
214
+ };
215
+ }
216
+ async queryUsage(agentId) {
217
+ return await this.safeJson([
218
+ "models",
219
+ "status",
220
+ "--agent",
221
+ agentId,
222
+ "--json"
223
+ ]);
224
+ }
225
+ async listConfiguredAgents() {
226
+ if (this.env.gatewayRestartMode !== "container") {
227
+ return await this.safeJson(["agents", "list", "--json", "--bindings"]);
228
+ }
229
+ const config = await this.readOpenClawConfig();
230
+ const agents = Array.isArray(config.agents?.list) ? config.agents.list : [];
231
+ return agents.map((agent) => ({
232
+ id: agent.id,
233
+ name: agent.name,
234
+ workspace: agent.workspace
235
+ }));
236
+ }
237
+ async findAgentConfigIndex(agentId) {
238
+ const agents = await this.listConfiguredAgents();
239
+ return agents.findIndex((agent) => agent.id === agentId);
240
+ }
241
+ async requireAgentConfigIndex(agentId) {
242
+ const index = await this.findAgentConfigIndex(agentId);
243
+ if (index < 0) {
244
+ throw new Error(`Agent config not found: ${agentId}`);
245
+ }
246
+ return index;
247
+ }
248
+ async createAgentByConfigMutation(params) {
249
+ const config = await this.readOpenClawConfig();
250
+ const agentDir = path.join(this.env.openclawHome, "agents", params.agentId, "agent");
251
+ const model = params.model ? normalizeModelConfig(params.model) : undefined;
252
+ config.agents ??= {};
253
+ const existingAgents = Array.isArray(config.agents.list) ? config.agents.list : [];
254
+ config.agents.list = existingAgents.filter((entry) => entry?.id !== params.agentId);
255
+ config.agents.list.push({
256
+ id: params.agentId,
257
+ name: params.agentId,
258
+ workspace: params.workspace,
259
+ agentDir,
260
+ ...(model ? { model } : {})
261
+ });
262
+ this.upsertManagedAccountInConfig(config, params.accountId, params.inboundTopic, params.outboundTopic, true);
263
+ this.upsertManagedBindingInConfig(config, params.agentId, params.accountId);
264
+ await mkdir(agentDir, { recursive: true, mode: SHARED_DIRECTORY_MODE });
265
+ await this.ensureMode(path.dirname(agentDir), SHARED_DIRECTORY_MODE);
266
+ await this.ensureMode(agentDir, SHARED_DIRECTORY_MODE);
267
+ await this.writeOpenClawConfig(config);
268
+ }
269
+ async configureMqttAccount(config) {
270
+ const payload = {
271
+ ...this.buildManagedAccountPayload(config.inboundTopic, config.outboundTopic, config.enabled),
272
+ brokerUrl: config.brokerUrl,
273
+ username: config.username,
274
+ password: config.password
275
+ };
276
+ await this.cli.run([
277
+ "config",
278
+ "set",
279
+ mqttAccountPath(config.accountId),
280
+ JSON.stringify(payload),
281
+ "--strict-json"
282
+ ]);
283
+ }
284
+ async safeJson(args) {
285
+ return await this.cli.runJson(args);
286
+ }
287
+ async readOpenClawConfig() {
288
+ const raw = await readFile(this.env.openclawConfigPath, "utf8");
289
+ return JSON.parse(raw);
290
+ }
291
+ buildManagedAccountPayload(inboundTopic, outboundTopic, enabled) {
292
+ return {
293
+ enabled,
294
+ brokerUrl: this.env.managedMqttBrokerUrl,
295
+ username: this.env.managedMqttUsername,
296
+ password: this.env.managedMqttPassword,
297
+ topics: {
298
+ inbound: inboundTopic,
299
+ outbound: outboundTopic
300
+ },
301
+ qos: 1,
302
+ disableBlockStreaming: false
303
+ };
304
+ }
305
+ upsertManagedAccountInConfig(config, accountId, inboundTopic, outboundTopic, enabled) {
306
+ config.channels ??= {};
307
+ config.channels[MQTT_CHANNEL_ID] ??= {};
308
+ config.channels[MQTT_CHANNEL_ID].accounts ??= {};
309
+ config.channels[MQTT_CHANNEL_ID].accounts[accountId] = this.buildManagedAccountPayload(inboundTopic, outboundTopic, enabled);
310
+ }
311
+ removeManagedAccountFromConfig(config, accountId) {
312
+ if (config.channels?.[MQTT_CHANNEL_ID]?.accounts) {
313
+ delete config.channels[MQTT_CHANNEL_ID].accounts[accountId];
314
+ }
315
+ }
316
+ upsertManagedBindingInConfig(config, agentId, accountId) {
317
+ const existingBindings = Array.isArray(config.bindings) ? config.bindings : [];
318
+ config.bindings = existingBindings.filter((binding) => {
319
+ return !(binding?.type === "route" && binding?.agentId === agentId && binding?.match?.channel === MQTT_CHANNEL_ID);
320
+ });
321
+ config.bindings.push({
322
+ type: "route",
323
+ agentId,
324
+ match: {
325
+ channel: MQTT_CHANNEL_ID,
326
+ accountId
327
+ }
328
+ });
329
+ }
330
+ removeManagedBindingFromConfig(config, agentId, accountId) {
331
+ const existingBindings = Array.isArray(config.bindings) ? config.bindings : [];
332
+ config.bindings = existingBindings.filter((binding) => {
333
+ return !(binding?.type === "route"
334
+ && binding?.agentId === agentId
335
+ && binding?.match?.channel === MQTT_CHANNEL_ID
336
+ && binding?.match?.accountId === accountId);
337
+ });
338
+ }
339
+ async ensureMode(targetPath, mode) {
340
+ try {
341
+ await chmod(targetPath, mode);
342
+ }
343
+ catch (error) {
344
+ if (error?.code !== "ENOENT") {
345
+ throw error;
346
+ }
347
+ }
348
+ }
349
+ async writeOpenClawConfig(config) {
350
+ const targetPath = this.env.openclawConfigPath;
351
+ const tempPath = `${targetPath}.tmp-${process.pid}`;
352
+ await writeFile(tempPath, `${JSON.stringify(config, null, 2)}\n`, "utf8");
353
+ await rename(tempPath, targetPath);
354
+ await this.ensureMode(targetPath, SHARED_FILE_MODE);
355
+ }
356
+ }
357
+ //# sourceMappingURL=lifecycle-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-service.js","sourceRoot":"","sources":["../../../src/capabilities/agent/lifecycle-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,IAAI,MAAM,WAAW,CAAC;AAQ7B,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,cAAc,EAEf,MAAM,cAAc,CAAC;AAEtB,MAAM,OAAO,qBAAqB;IAEb;IACA;IAFnB,YACmB,GAAc,EACd,GAAsB;QADtB,QAAG,GAAH,GAAG,CAAW;QACd,QAAG,GAAH,GAAG,CAAmB;IACtC,CAAC;IAEJ,KAAK,CAAC,UAAU,CAAC,aAAmC;QAClD,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1D,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;YACzC,OAAO;gBACL,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE;gBACvB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE;gBAClC,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,EAAE;gBACtD,UAAU,EAAE,OAAO,EAAE,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,EAAE;gBACvD,YAAY,EAAE,OAAO,EAAE,YAAY;gBACnC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;gBACvC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;gBACvC,KAAK,EAAE;oBACL,KAAK,EAAE,CAAC;oBACR,MAAM,EAAE,CAAC;oBACT,OAAO,EAAE,CAAC;oBACV,KAAK,EAAE,CAAC;iBACT;gBACD,iBAAiB,EAAE,IAAI;gBACvB,mBAAmB,EAAE,IAAI;gBACzB,YAAY,EAAE,OAAO,EAAE,YAAY;gBACnC,eAAe,EAAE,OAAO,EAAE,YAAY;gBACtC,aAAa,EAAE,OAAO,EAAE,aAAa;gBACrC,gBAAgB,EAAE,OAAO,EAAE,aAAa;aACzC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,aAAa;YACb,gBAAgB;YAChB,KAAK;SACN,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,OAAO,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,yBAAyB;QAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,kBAAkB,KAAK,WAAW,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC/C,MAAM,CAAC,OAAO,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,EAAE,CAAC;YAC9B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG;gBACxC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;gBAClD,OAAO,EAAE,IAAI;aACd,CAAC;YACF,MAAM,CAAC,OAAO,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,gBAAgB,CAAC;YAC1C,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACjB,QAAQ;YACR,KAAK;YACL,kBAAkB,cAAc,CAAC,eAAe,CAAC,UAAU;YAC3D,MAAM;YACN,eAAe;SAChB,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACjB,QAAQ;YACR,KAAK;YACL,iBAAiB;YACjB,IAAI,gBAAgB,GAAG;YACvB,eAAe;SAChB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,MAAkC;QAC5D,IAAI,IAAI,CAAC,GAAG,CAAC,kBAAkB,KAAK,WAAW,EAAE,CAAC;YAChD,MAAM,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACjB,QAAQ;YACR,KAAK;YACL,MAAM,CAAC,OAAO;YACd,aAAa;YACb,MAAM,CAAC,SAAS;YAChB,mBAAmB;YACnB,QAAQ;SACT,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,aAAa,CAAC;gBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,CAAC,oBAAoB,CAAC;YAC9B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB;YACxC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB;YACtC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB;YACtC,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACjB,QAAQ;YACR,MAAM;YACN,SAAS;YACT,MAAM,CAAC,OAAO;YACd,QAAQ;YACR,GAAG,eAAe,IAAI,MAAM,CAAC,SAAS,EAAE;YACxC,QAAQ;SACT,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,MAA0B;QACpD,IAAI,IAAI,CAAC,GAAG,CAAC,kBAAkB,KAAK,WAAW,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC/C,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC7G,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YACvE,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACjB,QAAQ;YACR,KAAK;YACL,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU;YAC9C,MAAM;YACN,eAAe;SAChB,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACjB,QAAQ;YACR,MAAM;YACN,SAAS;YACT,MAAM,CAAC,EAAE;YACT,QAAQ;YACR,GAAG,eAAe,IAAI,MAAM,CAAC,SAAS,EAAE;YACxC,QAAQ;SACT,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,MAA0B;QACrD,IAAI,IAAI,CAAC,GAAG,CAAC,kBAAkB,KAAK,WAAW,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC/C,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAC9G,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACjB,QAAQ;YACR,KAAK;YACL,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU;YAC9C,OAAO;YACP,eAAe;SAChB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,MAA0B;QACpD,IAAI,IAAI,CAAC,GAAG,CAAC,kBAAkB,KAAK,WAAW,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC;YACrB,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAsB,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;YACxF,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAC9D,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YACzE,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACjB,QAAQ;YACR,QAAQ;YACR,SAAS;YACT,MAAM,CAAC,EAAE;YACT,QAAQ;YACR,GAAG,eAAe,IAAI,MAAM,CAAC,SAAS,EAAE;YACxC,QAAQ;SACT,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACjB,QAAQ;YACR,OAAO;YACP,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC;SAClC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACjB,QAAQ;YACR,QAAQ;YACR,MAAM,CAAC,EAAE;YACT,SAAS;YACT,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAA2B;QAC7C,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,GAAG,CAAC,kBAAkB,KAAK,WAAW,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAsB,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC;YACpF,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,CAAC;YAED,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjE,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBACjB,QAAQ;gBACR,KAAK;gBACL,eAAe,KAAK,SAAS;gBAC7B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBACrB,eAAe;aAChB,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK;SACN,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAU;YAClC,QAAQ;YACR,QAAQ;YACR,SAAS;YACT,OAAO;YACP,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,oBAAoB;QAKhC,IAAI,IAAI,CAAC,GAAG,CAAC,kBAAkB,KAAK,WAAW,EAAE,CAAC;YAChD,OAAO,MAAM,IAAI,CAAC,QAAQ,CAItB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAyD,EAAE,EAAE,CAAC,CAAC;YAChF,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,OAAe;QAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IAC3D,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,OAAe;QACnD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,2BAA2B,CAAC,MAAkC;QAC1E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE5E,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC;QACrB,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,KAAsB,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC;QACrG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB,EAAE,EAAE,MAAM,CAAC,OAAO;YAClB,IAAI,EAAE,MAAM,CAAC,OAAO;YACpB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,QAAQ;YACR,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5B,CAAC,CAAC;QAEH,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC7G,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAE5E,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACxE,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC,CAAC;QACrE,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;QACvD,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,MAQlC;QACC,MAAM,OAAO,GAAG;YACd,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC;YAC7F,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;QAEF,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACjB,QAAQ;YACR,KAAK;YACL,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YACvB,eAAe;SAChB,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAI,IAAc;QACtC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAI,IAAI,CAAC,CAAC;IACzC,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAwB,CAAC;IAChD,CAAC;IAEO,0BAA0B,CAChC,YAAoB,EACpB,aAAqB,EACrB,OAAgB;QAEhB,OAAO;YACL,OAAO;YACP,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB;YACxC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB;YACtC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB;YACtC,MAAM,EAAE;gBACN,OAAO,EAAE,YAAY;gBACrB,QAAQ,EAAE,aAAa;aACxB;YACD,GAAG,EAAE,CAAC;YACN,qBAAqB,EAAE,KAAK;SAC7B,CAAC;IACJ,CAAC;IAEO,4BAA4B,CAClC,MAA2B,EAC3B,SAAiB,EACjB,YAAoB,EACpB,aAAqB,EACrB,OAAgB;QAEhB,MAAM,CAAC,QAAQ,KAAK,EAAE,CAAC;QACvB,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC;QACjD,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,0BAA0B,CACpF,YAAY,EACZ,aAAa,EACb,OAAO,CACR,CAAC;IACJ,CAAC;IAEO,8BAA8B,CAAC,MAA2B,EAAE,SAAiB;QACnF,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC;YACjD,OAAO,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAEO,4BAA4B,CAClC,MAA2B,EAC3B,OAAe,EACf,SAAiB;QAEjB,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,MAAM,CAAC,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,OAA8F,EAAE,EAAE;YAC3I,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,KAAK,OAAO,IAAI,OAAO,EAAE,OAAO,KAAK,OAAO,IAAI,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,eAAe,CAAC,CAAC;QACrH,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,OAAO;YACb,OAAO;YACP,KAAK,EAAE;gBACL,OAAO,EAAE,eAAe;gBACxB,SAAS;aACV;SACF,CAAC,CAAC;IACL,CAAC;IAEO,8BAA8B,CACpC,MAA2B,EAC3B,OAAe,EACf,SAAiB;QAEjB,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,MAAM,CAAC,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,OAA8F,EAAE,EAAE;YAC3I,OAAO,CAAC,CACN,OAAO,EAAE,IAAI,KAAK,OAAO;mBACtB,OAAO,EAAE,OAAO,KAAK,OAAO;mBAC5B,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,eAAe;mBAC3C,OAAO,EAAE,KAAK,EAAE,SAAS,KAAK,SAAS,CAC3C,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,UAAkB,EAAE,IAAY;QACvD,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAK,KAA+B,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,MAA2B;QAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAC/C,MAAM,QAAQ,GAAG,GAAG,UAAU,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC;QACpD,MAAM,SAAS,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1E,MAAM,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IACtD,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ import type { CapabilityHandler } from "../context.js";
2
+ export declare const agentList: CapabilityHandler;
@@ -0,0 +1,4 @@
1
+ export const agentList = async (_request, context) => {
2
+ return await context.agentManager.listAgents();
3
+ };
4
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/capabilities/agent/list.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAsB,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;IACtE,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;AACjD,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { type CapabilityHandler } from "../context.js";
2
+ export declare const agentModelSet: CapabilityHandler;