@agents-uni/core 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 (186) hide show
  1. package/DESIGN.md +283 -0
  2. package/LICENSE +21 -0
  3. package/README.en.md +589 -0
  4. package/README.md +589 -0
  5. package/dist/bridge/config-sync.d.ts +24 -0
  6. package/dist/bridge/config-sync.d.ts.map +1 -0
  7. package/dist/bridge/config-sync.js +39 -0
  8. package/dist/bridge/config-sync.js.map +1 -0
  9. package/dist/bridge/index.d.ts +7 -0
  10. package/dist/bridge/index.d.ts.map +1 -0
  11. package/dist/bridge/index.js +7 -0
  12. package/dist/bridge/index.js.map +1 -0
  13. package/dist/bridge/openclaw-adapter.d.ts +49 -0
  14. package/dist/bridge/openclaw-adapter.d.ts.map +1 -0
  15. package/dist/bridge/openclaw-adapter.js +151 -0
  16. package/dist/bridge/openclaw-adapter.js.map +1 -0
  17. package/dist/bridge/soul-generator.d.ts +34 -0
  18. package/dist/bridge/soul-generator.d.ts.map +1 -0
  19. package/dist/bridge/soul-generator.js +149 -0
  20. package/dist/bridge/soul-generator.js.map +1 -0
  21. package/dist/bridge/task-dispatcher.d.ts +107 -0
  22. package/dist/bridge/task-dispatcher.d.ts.map +1 -0
  23. package/dist/bridge/task-dispatcher.js +217 -0
  24. package/dist/bridge/task-dispatcher.js.map +1 -0
  25. package/dist/bridge/uni-registry.d.ts +82 -0
  26. package/dist/bridge/uni-registry.d.ts.map +1 -0
  27. package/dist/bridge/uni-registry.js +261 -0
  28. package/dist/bridge/uni-registry.js.map +1 -0
  29. package/dist/bridge/workspace-io.d.ts +64 -0
  30. package/dist/bridge/workspace-io.d.ts.map +1 -0
  31. package/dist/bridge/workspace-io.js +99 -0
  32. package/dist/bridge/workspace-io.js.map +1 -0
  33. package/dist/cli/commands/deploy.d.ts +6 -0
  34. package/dist/cli/commands/deploy.d.ts.map +1 -0
  35. package/dist/cli/commands/deploy.js +48 -0
  36. package/dist/cli/commands/deploy.js.map +1 -0
  37. package/dist/cli/commands/init.d.ts +2 -0
  38. package/dist/cli/commands/init.d.ts.map +1 -0
  39. package/dist/cli/commands/init.js +137 -0
  40. package/dist/cli/commands/init.js.map +1 -0
  41. package/dist/cli/commands/inspect.d.ts +4 -0
  42. package/dist/cli/commands/inspect.d.ts.map +1 -0
  43. package/dist/cli/commands/inspect.js +77 -0
  44. package/dist/cli/commands/inspect.js.map +1 -0
  45. package/dist/cli/commands/validate.d.ts +2 -0
  46. package/dist/cli/commands/validate.d.ts.map +1 -0
  47. package/dist/cli/commands/validate.js +30 -0
  48. package/dist/cli/commands/validate.js.map +1 -0
  49. package/dist/cli/commands/visualize.d.ts +2 -0
  50. package/dist/cli/commands/visualize.d.ts.map +1 -0
  51. package/dist/cli/commands/visualize.js +69 -0
  52. package/dist/cli/commands/visualize.js.map +1 -0
  53. package/dist/cli/index.d.ts +6 -0
  54. package/dist/cli/index.d.ts.map +1 -0
  55. package/dist/cli/index.js +132 -0
  56. package/dist/cli/index.js.map +1 -0
  57. package/dist/core/agent-registry.d.ts +37 -0
  58. package/dist/core/agent-registry.d.ts.map +1 -0
  59. package/dist/core/agent-registry.js +97 -0
  60. package/dist/core/agent-registry.js.map +1 -0
  61. package/dist/core/event-bus.d.ts +34 -0
  62. package/dist/core/event-bus.d.ts.map +1 -0
  63. package/dist/core/event-bus.js +96 -0
  64. package/dist/core/event-bus.js.map +1 -0
  65. package/dist/core/index.d.ts +8 -0
  66. package/dist/core/index.d.ts.map +1 -0
  67. package/dist/core/index.js +8 -0
  68. package/dist/core/index.js.map +1 -0
  69. package/dist/core/permission-matrix.d.ts +35 -0
  70. package/dist/core/permission-matrix.d.ts.map +1 -0
  71. package/dist/core/permission-matrix.js +95 -0
  72. package/dist/core/permission-matrix.js.map +1 -0
  73. package/dist/core/relationship-graph.d.ts +50 -0
  74. package/dist/core/relationship-graph.d.ts.map +1 -0
  75. package/dist/core/relationship-graph.js +150 -0
  76. package/dist/core/relationship-graph.js.map +1 -0
  77. package/dist/core/resource-pool.d.ts +48 -0
  78. package/dist/core/resource-pool.d.ts.map +1 -0
  79. package/dist/core/resource-pool.js +205 -0
  80. package/dist/core/resource-pool.js.map +1 -0
  81. package/dist/core/state-machine.d.ts +47 -0
  82. package/dist/core/state-machine.d.ts.map +1 -0
  83. package/dist/core/state-machine.js +110 -0
  84. package/dist/core/state-machine.js.map +1 -0
  85. package/dist/core/universe.d.ts +38 -0
  86. package/dist/core/universe.d.ts.map +1 -0
  87. package/dist/core/universe.js +101 -0
  88. package/dist/core/universe.js.map +1 -0
  89. package/dist/dashboard/api.d.ts +10 -0
  90. package/dist/dashboard/api.d.ts.map +1 -0
  91. package/dist/dashboard/api.js +237 -0
  92. package/dist/dashboard/api.js.map +1 -0
  93. package/dist/dashboard/index.d.ts +3 -0
  94. package/dist/dashboard/index.d.ts.map +1 -0
  95. package/dist/dashboard/index.js +3 -0
  96. package/dist/dashboard/index.js.map +1 -0
  97. package/dist/dashboard/server.d.ts +31 -0
  98. package/dist/dashboard/server.d.ts.map +1 -0
  99. package/dist/dashboard/server.js +44 -0
  100. package/dist/dashboard/server.js.map +1 -0
  101. package/dist/dashboard/templates.d.ts +47 -0
  102. package/dist/dashboard/templates.d.ts.map +1 -0
  103. package/dist/dashboard/templates.js +1481 -0
  104. package/dist/dashboard/templates.js.map +1 -0
  105. package/dist/evolution/index.d.ts +5 -0
  106. package/dist/evolution/index.d.ts.map +1 -0
  107. package/dist/evolution/index.js +5 -0
  108. package/dist/evolution/index.js.map +1 -0
  109. package/dist/evolution/memory-consolidator.d.ts +28 -0
  110. package/dist/evolution/memory-consolidator.d.ts.map +1 -0
  111. package/dist/evolution/memory-consolidator.js +84 -0
  112. package/dist/evolution/memory-consolidator.js.map +1 -0
  113. package/dist/evolution/performance-tracker.d.ts +29 -0
  114. package/dist/evolution/performance-tracker.d.ts.map +1 -0
  115. package/dist/evolution/performance-tracker.js +90 -0
  116. package/dist/evolution/performance-tracker.js.map +1 -0
  117. package/dist/evolution/promotion-engine.d.ts +32 -0
  118. package/dist/evolution/promotion-engine.d.ts.map +1 -0
  119. package/dist/evolution/promotion-engine.js +117 -0
  120. package/dist/evolution/promotion-engine.js.map +1 -0
  121. package/dist/evolution/relationship-evolver.d.ts +40 -0
  122. package/dist/evolution/relationship-evolver.d.ts.map +1 -0
  123. package/dist/evolution/relationship-evolver.js +105 -0
  124. package/dist/evolution/relationship-evolver.js.map +1 -0
  125. package/dist/index.d.ts +20 -0
  126. package/dist/index.d.ts.map +1 -0
  127. package/dist/index.js +23 -0
  128. package/dist/index.js.map +1 -0
  129. package/dist/schema/index.d.ts +13 -0
  130. package/dist/schema/index.d.ts.map +1 -0
  131. package/dist/schema/index.js +18 -0
  132. package/dist/schema/index.js.map +1 -0
  133. package/dist/schema/universe.schema.json +214 -0
  134. package/dist/spec/compiler.d.ts +16 -0
  135. package/dist/spec/compiler.d.ts.map +1 -0
  136. package/dist/spec/compiler.js +26 -0
  137. package/dist/spec/compiler.js.map +1 -0
  138. package/dist/spec/index.d.ts +4 -0
  139. package/dist/spec/index.d.ts.map +1 -0
  140. package/dist/spec/index.js +4 -0
  141. package/dist/spec/index.js.map +1 -0
  142. package/dist/spec/parser.d.ts +11 -0
  143. package/dist/spec/parser.d.ts.map +1 -0
  144. package/dist/spec/parser.js +89 -0
  145. package/dist/spec/parser.js.map +1 -0
  146. package/dist/spec/validator.d.ts +9 -0
  147. package/dist/spec/validator.d.ts.map +1 -0
  148. package/dist/spec/validator.js +105 -0
  149. package/dist/spec/validator.js.map +1 -0
  150. package/dist/types/agent.d.ts +56 -0
  151. package/dist/types/agent.d.ts.map +1 -0
  152. package/dist/types/agent.js +8 -0
  153. package/dist/types/agent.js.map +1 -0
  154. package/dist/types/event.d.ts +34 -0
  155. package/dist/types/event.d.ts.map +1 -0
  156. package/dist/types/event.js +11 -0
  157. package/dist/types/event.js.map +1 -0
  158. package/dist/types/governance.d.ts +48 -0
  159. package/dist/types/governance.d.ts.map +1 -0
  160. package/dist/types/governance.js +9 -0
  161. package/dist/types/governance.js.map +1 -0
  162. package/dist/types/index.d.ts +9 -0
  163. package/dist/types/index.d.ts.map +1 -0
  164. package/dist/types/index.js +9 -0
  165. package/dist/types/index.js.map +1 -0
  166. package/dist/types/memory.d.ts +73 -0
  167. package/dist/types/memory.d.ts.map +1 -0
  168. package/dist/types/memory.js +9 -0
  169. package/dist/types/memory.js.map +1 -0
  170. package/dist/types/protocol.d.ts +48 -0
  171. package/dist/types/protocol.d.ts.map +1 -0
  172. package/dist/types/protocol.js +9 -0
  173. package/dist/types/protocol.js.map +1 -0
  174. package/dist/types/relationship.d.ts +40 -0
  175. package/dist/types/relationship.d.ts.map +1 -0
  176. package/dist/types/relationship.js +9 -0
  177. package/dist/types/relationship.js.map +1 -0
  178. package/dist/types/resource.d.ts +52 -0
  179. package/dist/types/resource.d.ts.map +1 -0
  180. package/dist/types/resource.js +9 -0
  181. package/dist/types/resource.js.map +1 -0
  182. package/dist/types/universe.d.ts +71 -0
  183. package/dist/types/universe.d.ts.map +1 -0
  184. package/dist/types/universe.js +9 -0
  185. package/dist/types/universe.js.map +1 -0
  186. package/package.json +68 -0
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Universe — the top-level runtime container.
3
+ *
4
+ * A Universe holds all the moving parts: agents, relationships, protocols,
5
+ * resources, and events. It is the "world" in which agents operate.
6
+ */
7
+ import type { UniverseConfig, UniverseSnapshot } from '../types/index.js';
8
+ import { AgentRegistry } from './agent-registry.js';
9
+ import { RelationshipGraph } from './relationship-graph.js';
10
+ import { PermissionMatrix } from './permission-matrix.js';
11
+ import { ResourcePool } from './resource-pool.js';
12
+ import { EventBus } from './event-bus.js';
13
+ import { StateMachine } from './state-machine.js';
14
+ export declare class Universe {
15
+ readonly config: UniverseConfig;
16
+ readonly agents: AgentRegistry;
17
+ readonly graph: RelationshipGraph;
18
+ readonly permissions: PermissionMatrix;
19
+ readonly resources: ResourcePool;
20
+ readonly events: EventBus;
21
+ readonly protocols: Map<string, StateMachine>;
22
+ private tick;
23
+ private initialized;
24
+ constructor(config: UniverseConfig);
25
+ /** Initialize the universe — distribute initial resources, emit birth event */
26
+ initialize(): Promise<void>;
27
+ /** Advance the universe by one tick (for evolution) */
28
+ advanceTick(): Promise<void>;
29
+ /** Get a protocol by name */
30
+ getProtocol(name: string): StateMachine | undefined;
31
+ /** Take a snapshot of the current state */
32
+ snapshot(): UniverseSnapshot;
33
+ /** Get current tick */
34
+ getTick(): number;
35
+ /** Check if initialized */
36
+ isInitialized(): boolean;
37
+ }
38
+ //# sourceMappingURL=universe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"universe.d.ts","sourceRoot":"","sources":["../../src/core/universe.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,qBAAa,QAAQ;IACnB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAE9C,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,cAAc;IAclC,+EAA+E;IACzE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BjC,uDAAuD;IACjD,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlC,6BAA6B;IAC7B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAInD,2CAA2C;IAC3C,QAAQ,IAAI,gBAAgB;IAqB5B,uBAAuB;IACvB,OAAO,IAAI,MAAM;IAIjB,2BAA2B;IAC3B,aAAa,IAAI,OAAO;CAGzB"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Universe — the top-level runtime container.
3
+ *
4
+ * A Universe holds all the moving parts: agents, relationships, protocols,
5
+ * resources, and events. It is the "world" in which agents operate.
6
+ */
7
+ import { AgentRegistry } from './agent-registry.js';
8
+ import { RelationshipGraph } from './relationship-graph.js';
9
+ import { PermissionMatrix } from './permission-matrix.js';
10
+ import { ResourcePool } from './resource-pool.js';
11
+ import { EventBus } from './event-bus.js';
12
+ import { StateMachine } from './state-machine.js';
13
+ export class Universe {
14
+ config;
15
+ agents;
16
+ graph;
17
+ permissions;
18
+ resources;
19
+ events;
20
+ protocols;
21
+ tick = 0;
22
+ initialized = false;
23
+ constructor(config) {
24
+ this.config = config;
25
+ this.agents = new AgentRegistry(config.agents);
26
+ this.graph = new RelationshipGraph(config.relationships);
27
+ this.permissions = new PermissionMatrix(config.governance, config.agents);
28
+ this.resources = new ResourcePool(config.resources ?? []);
29
+ this.events = new EventBus(config.evolution?.memoryRetention ?? 1000);
30
+ this.protocols = new Map();
31
+ for (const proto of config.protocols) {
32
+ this.protocols.set(proto.name, new StateMachine(proto));
33
+ }
34
+ }
35
+ /** Initialize the universe — distribute initial resources, emit birth event */
36
+ async initialize() {
37
+ if (this.initialized)
38
+ return;
39
+ // Distribute initial resources based on strategy
40
+ const agentIds = this.agents.getAllIds();
41
+ const rankMap = {};
42
+ for (const citizen of this.agents.getAll()) {
43
+ rankMap[citizen.definition.id] = citizen.definition.rank ?? 0;
44
+ }
45
+ for (const resDef of this.resources.getAllDefinitions()) {
46
+ this.resources.distribute(resDef.name, agentIds, resDef.distribution, rankMap);
47
+ }
48
+ // Set all agents to idle
49
+ for (const id of agentIds) {
50
+ this.agents.setStatus(id, 'idle');
51
+ }
52
+ await this.events.emitSimple('custom', [], `Universe "${this.config.name}" initialized with ${agentIds.length} agents`, { agentCount: agentIds.length, type: this.config.type });
53
+ this.initialized = true;
54
+ }
55
+ /** Advance the universe by one tick (for evolution) */
56
+ async advanceTick() {
57
+ this.tick++;
58
+ // Apply resource decay
59
+ for (const resDef of this.resources.getAllDefinitions()) {
60
+ if (resDef.decayRate && resDef.decayRate > 0) {
61
+ const transfers = this.resources.applyDecay(resDef.name);
62
+ for (const t of transfers) {
63
+ await this.events.emitSimple('resource.decayed', [t.from], `${t.from} lost ${t.amount} ${t.resource} to decay`, { resource: t.resource, amount: t.amount });
64
+ }
65
+ }
66
+ }
67
+ }
68
+ /** Get a protocol by name */
69
+ getProtocol(name) {
70
+ return this.protocols.get(name);
71
+ }
72
+ /** Take a snapshot of the current state */
73
+ snapshot() {
74
+ const agentStates = {};
75
+ for (const citizen of this.agents.getAll()) {
76
+ agentStates[citizen.definition.id] = {
77
+ status: citizen.status,
78
+ performanceScore: citizen.performanceScore,
79
+ ...citizen.state,
80
+ };
81
+ }
82
+ return {
83
+ config: this.config,
84
+ tick: this.tick,
85
+ timestamp: new Date().toISOString(),
86
+ agentStates,
87
+ resourceAllocations: this.resources.snapshot(),
88
+ protocolStates: {},
89
+ relationshipWeights: [],
90
+ };
91
+ }
92
+ /** Get current tick */
93
+ getTick() {
94
+ return this.tick;
95
+ }
96
+ /** Check if initialized */
97
+ isInitialized() {
98
+ return this.initialized;
99
+ }
100
+ }
101
+ //# sourceMappingURL=universe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"universe.js","sourceRoot":"","sources":["../../src/core/universe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Dashboard API + Page Routes
3
+ *
4
+ * JSON API endpoints for programmatic access,
5
+ * HTML page routes for browser-based dashboard.
6
+ */
7
+ import { Hono } from 'hono';
8
+ import type { DashboardConfig } from './server.js';
9
+ export declare function createDashboardRoutes(config: DashboardConfig): Hono;
10
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/dashboard/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAmB5B,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,aAAa,CAAC;AAEvE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAsOnE"}
@@ -0,0 +1,237 @@
1
+ /**
2
+ * Dashboard API + Page Routes
3
+ *
4
+ * JSON API endpoints for programmatic access,
5
+ * HTML page routes for browser-based dashboard.
6
+ */
7
+ import { Hono } from 'hono';
8
+ import { existsSync } from 'node:fs';
9
+ import { join } from 'node:path';
10
+ import { listUnis, getUni, cleanupUni, resetUni, } from '../bridge/uni-registry.js';
11
+ import { readOpenClawConfig } from '../bridge/config-sync.js';
12
+ import { parseSpecFile } from '../spec/parser.js';
13
+ import { renderHomePage, renderUniDetailPage, renderAgentDetailPage, renderManagePage, renderGuidePage, } from './templates.js';
14
+ export function createDashboardRoutes(config) {
15
+ const app = new Hono();
16
+ const openclawDir = config.openclawDir ?? join(process.env.HOME ?? process.env.USERPROFILE ?? '.', '.openclaw');
17
+ // ─── JSON API ─────────────────────────────────
18
+ /** List all unis */
19
+ app.get('/api/unis', (c) => {
20
+ const unis = listUnis(openclawDir);
21
+ return c.json(unis);
22
+ });
23
+ /** Get uni detail */
24
+ app.get('/api/unis/:id', (c) => {
25
+ const id = c.req.param('id');
26
+ const uni = getUni(id, openclawDir);
27
+ if (!uni)
28
+ return c.json({ error: 'Uni not found' }, 404);
29
+ const config = loadUniverseConfig(uni.specPath);
30
+ return c.json({
31
+ entry: uni,
32
+ config: config ? {
33
+ name: config.name,
34
+ type: config.type,
35
+ agents: config.agents.map(a => ({
36
+ id: a.id,
37
+ name: a.name,
38
+ role: a.role.title,
39
+ rank: a.rank,
40
+ })),
41
+ relationships: config.relationships,
42
+ } : null,
43
+ });
44
+ });
45
+ /** Get agent detail */
46
+ app.get('/api/unis/:id/agents/:agentId', (c) => {
47
+ const id = c.req.param('id');
48
+ const agentId = c.req.param('agentId');
49
+ const uni = getUni(id, openclawDir);
50
+ if (!uni)
51
+ return c.json({ error: 'Uni not found' }, 404);
52
+ const uniConfig = loadUniverseConfig(uni.specPath);
53
+ const agent = uniConfig?.agents.find(a => a.id === agentId);
54
+ if (!agent)
55
+ return c.json({ error: 'Agent not found' }, 404);
56
+ const relationships = uniConfig?.relationships.filter(r => r.from === agentId || r.to === agentId) ?? [];
57
+ return c.json({
58
+ agent,
59
+ relationships,
60
+ workspace: getWorkspaceStatus(openclawDir, agentId),
61
+ });
62
+ });
63
+ /** Get relationships for a uni */
64
+ app.get('/api/unis/:id/relationships', (c) => {
65
+ const id = c.req.param('id');
66
+ const uni = getUni(id, openclawDir);
67
+ if (!uni)
68
+ return c.json({ error: 'Uni not found' }, 404);
69
+ const uniConfig = loadUniverseConfig(uni.specPath);
70
+ if (!uniConfig)
71
+ return c.json({ error: 'Cannot load spec' }, 500);
72
+ const nodes = uniConfig.agents.map(a => ({
73
+ id: a.id,
74
+ name: a.name,
75
+ role: a.role.title,
76
+ rank: a.rank,
77
+ }));
78
+ const edges = uniConfig.relationships.map(r => ({
79
+ from: r.from,
80
+ to: r.to,
81
+ type: r.type,
82
+ weight: r.weight,
83
+ }));
84
+ return c.json({ nodes, edges });
85
+ });
86
+ /** Reset uni */
87
+ app.post('/api/unis/:id/reset', (c) => {
88
+ const id = c.req.param('id');
89
+ const uni = getUni(id, openclawDir);
90
+ if (!uni)
91
+ return c.json({ error: `Uni "${id}" not found` }, 404);
92
+ try {
93
+ const result = resetUni(id, openclawDir);
94
+ return c.json({ ok: true, ...result });
95
+ }
96
+ catch (err) {
97
+ return c.json({ error: err instanceof Error ? err.message : 'Reset failed' }, 500);
98
+ }
99
+ });
100
+ /** Cleanup (delete) uni */
101
+ app.post('/api/unis/:id/cleanup', (c) => {
102
+ const id = c.req.param('id');
103
+ const uni = getUni(id, openclawDir);
104
+ if (!uni)
105
+ return c.json({ error: `Uni "${id}" not found` }, 404);
106
+ try {
107
+ const result = cleanupUni(id, openclawDir);
108
+ return c.json({ ok: true, ...result });
109
+ }
110
+ catch (err) {
111
+ return c.json({ error: err instanceof Error ? err.message : 'Cleanup failed' }, 500);
112
+ }
113
+ });
114
+ /** Health check */
115
+ app.get('/api/health', (c) => {
116
+ const configExists = existsSync(join(openclawDir, 'openclaw.json'));
117
+ const registryExists = existsSync(join(openclawDir, 'uni-registry.json'));
118
+ const openclawConfig = readOpenClawConfig(openclawDir);
119
+ const agentsList = openclawConfig?.agents?.list;
120
+ const totalAgentsInConfig = Array.isArray(agentsList) ? agentsList.length : 0;
121
+ return c.json({
122
+ status: 'ok',
123
+ openclawDir,
124
+ configExists,
125
+ registryExists,
126
+ totalAgentsInConfig,
127
+ unis: listUnis(openclawDir).length,
128
+ });
129
+ });
130
+ // ─── HTML Pages ───────────────────────────────
131
+ /** Home page */
132
+ app.get('/', (c) => {
133
+ const unis = listUnis(openclawDir);
134
+ const stats = {
135
+ totalUnis: unis.length,
136
+ totalAgents: unis.reduce((sum, u) => sum + u.agentIds.length, 0),
137
+ uniTypes: {},
138
+ };
139
+ for (const uni of unis) {
140
+ stats.uniTypes[uni.type] = (stats.uniTypes[uni.type] ?? 0) + 1;
141
+ }
142
+ // Collect extension panels from all registered extensions
143
+ const extensionPanels = [];
144
+ if (config.extensions) {
145
+ for (const ext of config.extensions) {
146
+ if (ext.panels) {
147
+ for (const panel of ext.panels) {
148
+ try {
149
+ extensionPanels.push({ title: panel.title, html: panel.renderHtml() });
150
+ }
151
+ catch (err) {
152
+ console.warn(`[Dashboard] Extension panel "${panel.title}" render failed:`, err);
153
+ extensionPanels.push({
154
+ title: panel.title,
155
+ html: '<p class="text-red-400 text-sm">面板渲染失败</p>',
156
+ });
157
+ }
158
+ }
159
+ }
160
+ }
161
+ }
162
+ return c.html(renderHomePage(unis, stats, extensionPanels.length > 0 ? extensionPanels : undefined));
163
+ });
164
+ /** Uni detail page */
165
+ app.get('/uni/:id', (c) => {
166
+ const id = c.req.param('id');
167
+ const entry = getUni(id, openclawDir);
168
+ if (!entry) {
169
+ return c.html(renderHomePage(listUnis(openclawDir), {
170
+ totalUnis: 0, totalAgents: 0, uniTypes: {},
171
+ }), 404);
172
+ }
173
+ const uniConfig = loadUniverseConfig(entry.specPath);
174
+ const workspaceStatus = {};
175
+ for (const agentId of entry.agentIds) {
176
+ workspaceStatus[agentId] = getWorkspaceStatus(openclawDir, agentId);
177
+ }
178
+ return c.html(renderUniDetailPage({ entry, config: uniConfig, workspaceStatus }));
179
+ });
180
+ /** Agent detail page */
181
+ app.get('/uni/:id/agent/:agentId', (c) => {
182
+ const uniId = c.req.param('id');
183
+ const agentId = c.req.param('agentId');
184
+ const entry = getUni(uniId, openclawDir);
185
+ if (!entry)
186
+ return c.notFound();
187
+ const uniConfig = loadUniverseConfig(entry.specPath);
188
+ const workspace = getWorkspaceStatus(openclawDir, agentId);
189
+ return c.html(renderAgentDetailPage({ uniId, agentId, config: uniConfig, workspace }));
190
+ });
191
+ /** Manage page */
192
+ app.get('/manage', (c) => {
193
+ const unis = listUnis(openclawDir);
194
+ const configExists = existsSync(join(openclawDir, 'openclaw.json'));
195
+ const registryExists = existsSync(join(openclawDir, 'uni-registry.json'));
196
+ const openclawConfig = readOpenClawConfig(openclawDir);
197
+ const agentsList = openclawConfig?.agents?.list;
198
+ const totalAgentsInConfig = Array.isArray(agentsList) ? agentsList.length : 0;
199
+ return c.html(renderManagePage(unis, {
200
+ openclawDir,
201
+ configExists,
202
+ registryExists,
203
+ totalAgentsInConfig,
204
+ }));
205
+ });
206
+ /** User guide page */
207
+ app.get('/guide', (c) => {
208
+ return c.html(renderGuidePage());
209
+ });
210
+ // ─── Extension Routes ─────────────────────────
211
+ if (config.extensions) {
212
+ for (const ext of config.extensions) {
213
+ app.route(`/ext/${ext.uniId}`, ext.routes);
214
+ }
215
+ }
216
+ return app;
217
+ }
218
+ // ─── Helpers ──────────────────────────────────────
219
+ function loadUniverseConfig(specPath) {
220
+ if (!existsSync(specPath))
221
+ return null;
222
+ try {
223
+ return parseSpecFile(specPath);
224
+ }
225
+ catch {
226
+ return null;
227
+ }
228
+ }
229
+ function getWorkspaceStatus(openclawDir, agentId) {
230
+ const workspacePath = join(openclawDir, `workspace-${agentId}`);
231
+ return {
232
+ hasSoul: existsSync(join(workspacePath, 'SOUL.md')),
233
+ hasTask: existsSync(join(workspacePath, 'TASK.md')),
234
+ hasSubmission: existsSync(join(workspacePath, 'SUBMISSION.md')),
235
+ };
236
+ }
237
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/dashboard/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { startDashboard, type DashboardConfig, type DashboardExtension, type PanelDefinition } from './server.js';
2
+ export { createDashboardRoutes } from './api.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAClH,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { startDashboard } from './server.js';
2
+ export { createDashboardRoutes } from './api.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAuE,MAAM,aAAa,CAAC;AAClH,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Dashboard Server — universal web UI for managing agent universes.
3
+ *
4
+ * Provides a browser-based dashboard that works with ANY type of uni.
5
+ * Specific unis (like zhenhuan-uni) can inject extension panels.
6
+ */
7
+ import { Hono } from 'hono';
8
+ export interface DashboardConfig {
9
+ /** Server port (default: 8089) */
10
+ port: number;
11
+ /** OpenClaw base directory (default: ~/.openclaw) */
12
+ openclawDir?: string;
13
+ /** Extension panels from specific unis */
14
+ extensions?: DashboardExtension[];
15
+ }
16
+ export interface DashboardExtension {
17
+ /** Universe ID this extension belongs to */
18
+ uniId: string;
19
+ /** Hono routes mounted at /ext/:uniId/ */
20
+ routes: Hono;
21
+ /** Extra panels displayed on the home page */
22
+ panels?: PanelDefinition[];
23
+ }
24
+ export interface PanelDefinition {
25
+ /** Panel title */
26
+ title: string;
27
+ /** Returns HTML fragment for the panel */
28
+ renderHtml: () => string;
29
+ }
30
+ export declare function startDashboard(config: DashboardConfig): Promise<void>;
31
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAQ5B,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,MAAM,EAAE,IAAI,CAAC;IACb,8CAA8C;IAC9C,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,UAAU,EAAE,MAAM,MAAM,CAAC;CAC1B;AAID,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC3E"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Dashboard Server — universal web UI for managing agent universes.
3
+ *
4
+ * Provides a browser-based dashboard that works with ANY type of uni.
5
+ * Specific unis (like zhenhuan-uni) can inject extension panels.
6
+ */
7
+ import { serve } from '@hono/node-server';
8
+ import { Hono } from 'hono';
9
+ import { cors } from 'hono/cors';
10
+ import { logger } from 'hono/logger';
11
+ import { createDashboardRoutes } from './api.js';
12
+ import { join } from 'node:path';
13
+ // ─── Server ───────────────────────────────────────
14
+ export async function startDashboard(config) {
15
+ const { port } = config;
16
+ const app = new Hono();
17
+ // Middleware
18
+ app.use('*', cors());
19
+ app.use('*', logger());
20
+ // Mount dashboard routes
21
+ const dashboard = createDashboardRoutes(config);
22
+ app.route('/', dashboard);
23
+ const openclawDir = config.openclawDir ?? join(process.env.HOME ?? process.env.USERPROFILE ?? '.', '.openclaw');
24
+ const url = `http://localhost:${port}`;
25
+ const extCount = config.extensions?.length ?? 0;
26
+ console.log('');
27
+ console.log(' \x1b[36m╔══════════════════════════════════════╗\x1b[0m');
28
+ console.log(' \x1b[36m║\x1b[0m \x1b[1m🌌 Uni Dashboard\x1b[0m \x1b[36m║\x1b[0m');
29
+ console.log(' \x1b[36m╚══════════════════════════════════════╝\x1b[0m');
30
+ console.log('');
31
+ console.log(` \x1b[36m首页:\x1b[0m ${url}`);
32
+ console.log(` \x1b[36m管理:\x1b[0m ${url}/manage`);
33
+ console.log(` \x1b[36m手册:\x1b[0m ${url}/guide`);
34
+ console.log(` \x1b[36mAPI:\x1b[0m ${url}/api/unis`);
35
+ console.log(` \x1b[36mOpenClaw:\x1b[0m ${openclawDir}`);
36
+ if (extCount > 0) {
37
+ console.log(` \x1b[36m扩展:\x1b[0m ${extCount} 个已加载`);
38
+ }
39
+ console.log('');
40
+ console.log(' \x1b[90m按 Ctrl+C 停止服务\x1b[0m');
41
+ console.log('');
42
+ serve({ fetch: app.fetch, port });
43
+ }
44
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AA6BjC,qDAAqD;AAErD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAuB;IAC1D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAExB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,aAAa;IACb,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACrB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IAEvB,yBAAyB;IACzB,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAChD,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAE1B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,IAAI,CAC5C,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,EAClD,WAAW,CACZ,CAAC;IAEF,MAAM,GAAG,GAAG,oBAAoB,IAAI,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,CAAC;IAEhD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC;IACvG,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,SAAS,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,QAAQ,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,WAAW,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,+BAA+B,WAAW,EAAE,CAAC,CAAC;IAC1D,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,6BAA6B,QAAQ,OAAO,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Dashboard HTML Templates — server-side rendered pages.
3
+ *
4
+ * Uses Tailwind CDN for styling. No frontend framework needed.
5
+ * All functions return HTML strings.
6
+ */
7
+ import type { UniRegistryEntry } from '../bridge/uni-registry.js';
8
+ import type { UniverseConfig } from '../types/index.js';
9
+ export declare function renderLayout(title: string, bodyHtml: string, activeNav?: string): string;
10
+ export interface HomeStats {
11
+ totalUnis: number;
12
+ totalAgents: number;
13
+ uniTypes: Record<string, number>;
14
+ }
15
+ export declare function renderHomePage(unis: UniRegistryEntry[], stats: HomeStats, extensionPanels?: Array<{
16
+ title: string;
17
+ html: string;
18
+ }>): string;
19
+ export declare function renderGuidePage(): string;
20
+ export interface UniDetailData {
21
+ entry: UniRegistryEntry;
22
+ config: UniverseConfig | null;
23
+ workspaceStatus: Record<string, {
24
+ hasSoul: boolean;
25
+ hasTask: boolean;
26
+ hasSubmission: boolean;
27
+ }>;
28
+ }
29
+ export declare function renderUniDetailPage(data: UniDetailData): string;
30
+ export interface AgentDetailData {
31
+ uniId: string;
32
+ agentId: string;
33
+ config: UniverseConfig | null;
34
+ workspace: {
35
+ hasSoul: boolean;
36
+ hasTask: boolean;
37
+ hasSubmission: boolean;
38
+ };
39
+ }
40
+ export declare function renderAgentDetailPage(data: AgentDetailData): string;
41
+ export declare function renderManagePage(unis: UniRegistryEntry[], healthStatus: {
42
+ openclawDir: string;
43
+ configExists: boolean;
44
+ registryExists: boolean;
45
+ totalAgentsInConfig: number;
46
+ }): string;
47
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/dashboard/templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CA+DxF;AAID,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CA2J3I;AAID,wBAAgB,eAAe,IAAI,MAAM,CAq6BxC;AAID,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACjG;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAoI/D;AAID,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3E;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CA0GnE;AAID,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,YAAY,EAAE;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,GAAG,MAAM,CAmFT"}