@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,132 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * uni CLI — command-line tools for managing agent universes.
4
+ */
5
+ import { Command } from 'commander';
6
+ import chalk from 'chalk';
7
+ import { validateCommand } from './commands/validate.js';
8
+ import { visualizeCommand } from './commands/visualize.js';
9
+ import { deployCommand } from './commands/deploy.js';
10
+ import { initCommand } from './commands/init.js';
11
+ import { inspectCommand } from './commands/inspect.js';
12
+ import { listUnis, getUni, cleanupUni, resetUni } from '../bridge/uni-registry.js';
13
+ import { startDashboard } from '../dashboard/server.js';
14
+ const program = new Command();
15
+ program
16
+ .name('uni')
17
+ .description('Agent Universe management CLI — define, validate, visualize, and deploy agent organizations')
18
+ .version('0.1.0');
19
+ program
20
+ .command('validate <file>')
21
+ .description('Validate a universe YAML spec against the schema')
22
+ .action(validateCommand);
23
+ program
24
+ .command('visualize <file>')
25
+ .description('Render an ASCII relationship graph of the universe')
26
+ .action(visualizeCommand);
27
+ program
28
+ .command('deploy <file>')
29
+ .description('Deploy universe spec to OpenClaw workspaces (generate SOUL.md files)')
30
+ .option('--dry-run', 'Show what would be generated without writing files')
31
+ .option('--dir <path>', 'OpenClaw base directory')
32
+ .option('--lang <lang>', 'SOUL.md language (zh|en)', 'zh')
33
+ .action(deployCommand);
34
+ program
35
+ .command('init [name]')
36
+ .description('Initialize a new universe project interactively')
37
+ .action(initCommand);
38
+ program
39
+ .command('inspect <file>')
40
+ .description('Inspect a universe spec')
41
+ .option('--agent <id>', 'Show details for a specific agent')
42
+ .action(inspectCommand);
43
+ // ─── Dashboard ────────────────────────────────────
44
+ program
45
+ .command('dashboard')
46
+ .description('Start the Uni Dashboard web UI')
47
+ .option('-p, --port <port>', 'Server port', '8089')
48
+ .option('--dir <path>', 'OpenClaw base directory')
49
+ .action(async (opts) => {
50
+ await startDashboard({
51
+ port: parseInt(opts.port, 10),
52
+ openclawDir: opts.dir,
53
+ });
54
+ });
55
+ // ─── Multi-Uni Management ─────────────────────────
56
+ program
57
+ .command('list')
58
+ .description('List all registered universes')
59
+ .option('--dir <path>', 'OpenClaw base directory')
60
+ .action((opts) => {
61
+ const unis = listUnis(opts.dir);
62
+ if (unis.length === 0) {
63
+ console.log(chalk.gray('No universes registered. Run `uni deploy <file>` to deploy one.'));
64
+ return;
65
+ }
66
+ console.log(chalk.bold('\n🌌 Registered Universes\n'));
67
+ console.log(chalk.gray(' ID Type Agents Version Deployed'));
68
+ console.log(chalk.gray(' ' + '─'.repeat(75)));
69
+ for (const uni of unis) {
70
+ const id = uni.id.padEnd(24);
71
+ const type = uni.type.padEnd(14);
72
+ const agents = String(uni.agentIds.length).padEnd(8);
73
+ const version = ('v' + uni.version).padEnd(9);
74
+ const date = new Date(uni.deployedAt).toLocaleDateString();
75
+ console.log(` ${chalk.cyan(id)} ${chalk.gray(type)} ${chalk.white(agents)} ${chalk.gray(version)} ${chalk.gray(date)}`);
76
+ }
77
+ console.log('');
78
+ });
79
+ program
80
+ .command('status')
81
+ .description('Show deployment overview')
82
+ .option('--dir <path>', 'OpenClaw base directory')
83
+ .action((opts) => {
84
+ const unis = listUnis(opts.dir);
85
+ const totalAgents = unis.reduce((s, u) => s + u.agentIds.length, 0);
86
+ const types = new Map();
87
+ for (const u of unis) {
88
+ types.set(u.type, (types.get(u.type) ?? 0) + 1);
89
+ }
90
+ console.log(chalk.bold('\n🌌 Uni Status\n'));
91
+ console.log(` Universes: ${chalk.cyan(String(unis.length))}`);
92
+ console.log(` Agents: ${chalk.cyan(String(totalAgents))}`);
93
+ if (types.size > 0) {
94
+ console.log(` Types: ${[...types.entries()].map(([t, c]) => `${t}(${c})`).join(', ')}`);
95
+ }
96
+ console.log('');
97
+ });
98
+ program
99
+ .command('cleanup <id>')
100
+ .description('Remove a universe and all its workspaces/agent directories')
101
+ .option('--dir <path>', 'OpenClaw base directory')
102
+ .action((id, opts) => {
103
+ const uni = getUni(id, opts.dir);
104
+ if (!uni) {
105
+ console.error(chalk.red(`Universe "${id}" not found.`));
106
+ process.exit(1);
107
+ }
108
+ console.log(chalk.yellow(`Cleaning up "${id}" (${uni.agentIds.length} agents)...`));
109
+ const result = cleanupUni(id, opts.dir);
110
+ console.log(chalk.green(`\n✓ Cleanup complete:`));
111
+ console.log(chalk.gray(` Removed ${result.removedWorkspaces.length} workspaces`));
112
+ console.log(chalk.gray(` Removed ${result.removedAgentDirs.length} agent directories`));
113
+ console.log(chalk.gray(` Removed ${result.removedFromConfig.length} agents from openclaw.json`));
114
+ });
115
+ program
116
+ .command('reset <id>')
117
+ .description('Reset a universe: clear sessions and runtime files, keep SOUL.md')
118
+ .option('--dir <path>', 'OpenClaw base directory')
119
+ .action((id, opts) => {
120
+ const uni = getUni(id, opts.dir);
121
+ if (!uni) {
122
+ console.error(chalk.red(`Universe "${id}" not found.`));
123
+ process.exit(1);
124
+ }
125
+ console.log(chalk.yellow(`Resetting "${id}"...`));
126
+ const result = resetUni(id, opts.dir);
127
+ console.log(chalk.green(`\n✓ Reset complete:`));
128
+ console.log(chalk.gray(` Cleared sessions for ${result.clearedSessions.length} agents`));
129
+ console.log(chalk.gray(` Cleared ${result.clearedTasks.length} runtime files`));
130
+ });
131
+ program.parse();
132
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,6FAA6F,CAAC;KAC1G,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE5B,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,sEAAsE,CAAC;KACnF,MAAM,CAAC,WAAW,EAAE,oDAAoD,CAAC;KACzE,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC;KACjD,MAAM,CAAC,eAAe,EAAE,0BAA0B,EAAE,IAAI,CAAC;KACzD,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,cAAc,EAAE,mCAAmC,CAAC;KAC3D,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,qDAAqD;AAErD,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,mBAAmB,EAAE,aAAa,EAAE,MAAM,CAAC;KAClD,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC;KACjD,MAAM,CAAC,KAAK,EAAE,IAAoC,EAAE,EAAE;IACrD,MAAM,cAAc,CAAC;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7B,WAAW,EAAE,IAAI,CAAC,GAAG;KACtB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,qDAAqD;AAErD,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC;KACjD,MAAM,CAAC,CAAC,IAAsB,EAAE,EAAE;IACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC,CAAC;QAC3F,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3H,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC;KACjD,MAAM,CAAC,CAAC,IAAsB,EAAE,EAAE;IACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/D,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,4DAA4D,CAAC;KACzE,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC;KACjD,MAAM,CAAC,CAAC,EAAU,EAAE,IAAsB,EAAE,EAAE;IAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAExC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,iBAAiB,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,gBAAgB,CAAC,MAAM,oBAAoB,CAAC,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,iBAAiB,CAAC,MAAM,4BAA4B,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,kEAAkE,CAAC;KAC/E,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC;KACjD,MAAM,CAAC,CAAC,EAAU,EAAE,IAAsB,EAAE,EAAE;IAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAEtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,eAAe,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,YAAY,CAAC,MAAM,gBAAgB,CAAC,CAAC,CAAC;AACnF,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Agent Registry — manages agent lifecycle within a Universe.
3
+ */
4
+ import type { AgentDefinition, Citizen, CitizenStatus } from '../types/index.js';
5
+ export declare class AgentRegistry {
6
+ private citizens;
7
+ constructor(agents: AgentDefinition[]);
8
+ /** Register a new agent as a citizen */
9
+ register(definition: AgentDefinition): Citizen;
10
+ /** Remove an agent from the registry */
11
+ unregister(agentId: string): boolean;
12
+ /** Get a citizen by ID */
13
+ get(agentId: string): Citizen | undefined;
14
+ /** Get a citizen or throw */
15
+ getOrThrow(agentId: string): Citizen;
16
+ /** Get all citizens */
17
+ getAll(): Citizen[];
18
+ /** Get agents filtered by status */
19
+ getByStatus(status: CitizenStatus): Citizen[];
20
+ /** Get agents filtered by role title */
21
+ getByRole(roleTitle: string): Citizen[];
22
+ /** Get agents filtered by department */
23
+ getByDepartment(department: string): Citizen[];
24
+ /** Get agents sorted by rank (descending) */
25
+ getByRank(): Citizen[];
26
+ /** Update citizen status */
27
+ setStatus(agentId: string, status: CitizenStatus): void;
28
+ /** Update performance score */
29
+ setPerformanceScore(agentId: string, score: number): void;
30
+ /** Update agent state */
31
+ setState(agentId: string, key: string, value: unknown): void;
32
+ /** Get all agent IDs */
33
+ getAllIds(): string[];
34
+ /** Count agents by status */
35
+ countByStatus(): Record<CitizenStatus, number>;
36
+ }
37
+ //# sourceMappingURL=agent-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-registry.d.ts","sourceRoot":"","sources":["../../src/core/agent-registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEjF,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAuB;gBAE3B,MAAM,EAAE,eAAe,EAAE;IAOrC,wCAAwC;IACxC,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO;IAkB9C,wCAAwC;IACxC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIpC,0BAA0B;IAC1B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIzC,6BAA6B;IAC7B,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAMpC,uBAAuB;IACvB,MAAM,IAAI,OAAO,EAAE;IAInB,oCAAoC;IACpC,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,EAAE;IAI7C,wCAAwC;IACxC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE;IAIvC,wCAAwC;IACxC,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,EAAE;IAI9C,6CAA6C;IAC7C,SAAS,IAAI,OAAO,EAAE;IAItB,4BAA4B;IAC5B,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAKvD,+BAA+B;IAC/B,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzD,yBAAyB;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAK5D,wBAAwB;IACxB,SAAS,IAAI,MAAM,EAAE;IAIrB,6BAA6B;IAC7B,aAAa,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC;CAa/C"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Agent Registry — manages agent lifecycle within a Universe.
3
+ */
4
+ export class AgentRegistry {
5
+ citizens;
6
+ constructor(agents) {
7
+ this.citizens = new Map();
8
+ for (const agent of agents) {
9
+ this.register(agent);
10
+ }
11
+ }
12
+ /** Register a new agent as a citizen */
13
+ register(definition) {
14
+ if (this.citizens.has(definition.id)) {
15
+ throw new Error(`Agent "${definition.id}" is already registered`);
16
+ }
17
+ const citizen = {
18
+ definition,
19
+ status: 'idle',
20
+ performanceScore: 50,
21
+ resources: {},
22
+ joinedAt: new Date().toISOString(),
23
+ state: {},
24
+ };
25
+ this.citizens.set(definition.id, citizen);
26
+ return citizen;
27
+ }
28
+ /** Remove an agent from the registry */
29
+ unregister(agentId) {
30
+ return this.citizens.delete(agentId);
31
+ }
32
+ /** Get a citizen by ID */
33
+ get(agentId) {
34
+ return this.citizens.get(agentId);
35
+ }
36
+ /** Get a citizen or throw */
37
+ getOrThrow(agentId) {
38
+ const citizen = this.citizens.get(agentId);
39
+ if (!citizen)
40
+ throw new Error(`Agent "${agentId}" not found`);
41
+ return citizen;
42
+ }
43
+ /** Get all citizens */
44
+ getAll() {
45
+ return [...this.citizens.values()];
46
+ }
47
+ /** Get agents filtered by status */
48
+ getByStatus(status) {
49
+ return this.getAll().filter(c => c.status === status);
50
+ }
51
+ /** Get agents filtered by role title */
52
+ getByRole(roleTitle) {
53
+ return this.getAll().filter(c => c.definition.role.title === roleTitle);
54
+ }
55
+ /** Get agents filtered by department */
56
+ getByDepartment(department) {
57
+ return this.getAll().filter(c => c.definition.role.department === department);
58
+ }
59
+ /** Get agents sorted by rank (descending) */
60
+ getByRank() {
61
+ return this.getAll().sort((a, b) => (b.definition.rank ?? 0) - (a.definition.rank ?? 0));
62
+ }
63
+ /** Update citizen status */
64
+ setStatus(agentId, status) {
65
+ const citizen = this.getOrThrow(agentId);
66
+ citizen.status = status;
67
+ }
68
+ /** Update performance score */
69
+ setPerformanceScore(agentId, score) {
70
+ const citizen = this.getOrThrow(agentId);
71
+ citizen.performanceScore = Math.max(0, Math.min(100, score));
72
+ }
73
+ /** Update agent state */
74
+ setState(agentId, key, value) {
75
+ const citizen = this.getOrThrow(agentId);
76
+ citizen.state[key] = value;
77
+ }
78
+ /** Get all agent IDs */
79
+ getAllIds() {
80
+ return [...this.citizens.keys()];
81
+ }
82
+ /** Count agents by status */
83
+ countByStatus() {
84
+ const counts = {
85
+ active: 0,
86
+ idle: 0,
87
+ suspended: 0,
88
+ eliminated: 0,
89
+ probation: 0,
90
+ };
91
+ for (const citizen of this.citizens.values()) {
92
+ counts[citizen.status]++;
93
+ }
94
+ return counts;
95
+ }
96
+ }
97
+ //# sourceMappingURL=agent-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-registry.js","sourceRoot":"","sources":["../../src/core/agent-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Event Bus — the nervous system of an organization.
3
+ *
4
+ * Every meaningful change emits an event. This enables audit trails,
5
+ * reactive evolution, and narrative generation.
6
+ */
7
+ import type { OrganizationEvent, OrganizationEventType, EventHandler } from '../types/index.js';
8
+ export declare class EventBus {
9
+ private subscriptions;
10
+ private eventLog;
11
+ private maxRetention;
12
+ constructor(maxRetention?: number);
13
+ /** Subscribe to events */
14
+ subscribe(types: OrganizationEventType[], handler: EventHandler): string;
15
+ /** Unsubscribe */
16
+ unsubscribe(subscriptionId: string): boolean;
17
+ /** Emit an event */
18
+ emit(event: Omit<OrganizationEvent, 'id' | 'timestamp'>): Promise<OrganizationEvent>;
19
+ /** Quick emit helper */
20
+ emitSimple(type: OrganizationEventType, actors: string[], narrative: string, data?: Record<string, unknown>): Promise<OrganizationEvent>;
21
+ /** Get event log */
22
+ getLog(limit?: number): OrganizationEvent[];
23
+ /** Get events by type */
24
+ getByType(type: OrganizationEventType, limit?: number): OrganizationEvent[];
25
+ /** Get events involving a specific agent */
26
+ getByAgent(agentId: string, limit?: number): OrganizationEvent[];
27
+ /** Get events in a time range */
28
+ getByTimeRange(start: string, end: string): OrganizationEvent[];
29
+ /** Clear all events */
30
+ clear(): void;
31
+ /** Get event count */
32
+ count(): number;
33
+ }
34
+ //# sourceMappingURL=event-bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/core/event-bus.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EAEb,MAAM,mBAAmB,CAAC;AAQ3B,qBAAa,QAAQ;IACnB,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,YAAY,CAAS;gBAEjB,YAAY,SAAO;IAM/B,0BAA0B;IAC1B,SAAS,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM;IAMxE,kBAAkB;IAClB,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAO5C,oBAAoB;IACd,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA2B1F,wBAAwB;IAClB,UAAU,CACd,IAAI,EAAE,qBAAqB,EAC3B,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACjC,OAAO,CAAC,iBAAiB,CAAC;IAI7B,oBAAoB;IACpB,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAK3C,yBAAyB;IACzB,SAAS,CAAC,IAAI,EAAE,qBAAqB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAM3E,4CAA4C;IAC5C,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAMhE,iCAAiC;IACjC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAI/D,uBAAuB;IACvB,KAAK,IAAI,IAAI;IAIb,sBAAsB;IACtB,KAAK,IAAI,MAAM;CAGhB"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Event Bus — the nervous system of an organization.
3
+ *
4
+ * Every meaningful change emits an event. This enables audit trails,
5
+ * reactive evolution, and narrative generation.
6
+ */
7
+ let eventCounter = 0;
8
+ function generateEventId() {
9
+ return `evt-${Date.now()}-${++eventCounter}`;
10
+ }
11
+ export class EventBus {
12
+ subscriptions;
13
+ eventLog;
14
+ maxRetention;
15
+ constructor(maxRetention = 1000) {
16
+ this.subscriptions = [];
17
+ this.eventLog = [];
18
+ this.maxRetention = maxRetention;
19
+ }
20
+ /** Subscribe to events */
21
+ subscribe(types, handler) {
22
+ const id = `sub-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
23
+ this.subscriptions.push({ types, handler, id });
24
+ return id;
25
+ }
26
+ /** Unsubscribe */
27
+ unsubscribe(subscriptionId) {
28
+ const idx = this.subscriptions.findIndex(s => s.id === subscriptionId);
29
+ if (idx === -1)
30
+ return false;
31
+ this.subscriptions.splice(idx, 1);
32
+ return true;
33
+ }
34
+ /** Emit an event */
35
+ async emit(event) {
36
+ const fullEvent = {
37
+ ...event,
38
+ id: generateEventId(),
39
+ timestamp: new Date().toISOString(),
40
+ };
41
+ // Store in log
42
+ this.eventLog.push(fullEvent);
43
+ if (this.eventLog.length > this.maxRetention) {
44
+ this.eventLog = this.eventLog.slice(-this.maxRetention);
45
+ }
46
+ // Notify subscribers
47
+ for (const sub of this.subscriptions) {
48
+ if (sub.types.length === 0 || sub.types.includes(fullEvent.type)) {
49
+ try {
50
+ await sub.handler(fullEvent);
51
+ }
52
+ catch (err) {
53
+ console.error(`Event handler error (sub: ${sub.id}):`, err);
54
+ }
55
+ }
56
+ }
57
+ return fullEvent;
58
+ }
59
+ /** Quick emit helper */
60
+ async emitSimple(type, actors, narrative, data = {}) {
61
+ return this.emit({ type, actors, narrative, data });
62
+ }
63
+ /** Get event log */
64
+ getLog(limit) {
65
+ if (limit)
66
+ return this.eventLog.slice(-limit);
67
+ return [...this.eventLog];
68
+ }
69
+ /** Get events by type */
70
+ getByType(type, limit) {
71
+ const filtered = this.eventLog.filter(e => e.type === type);
72
+ if (limit)
73
+ return filtered.slice(-limit);
74
+ return filtered;
75
+ }
76
+ /** Get events involving a specific agent */
77
+ getByAgent(agentId, limit) {
78
+ const filtered = this.eventLog.filter(e => e.actors.includes(agentId));
79
+ if (limit)
80
+ return filtered.slice(-limit);
81
+ return filtered;
82
+ }
83
+ /** Get events in a time range */
84
+ getByTimeRange(start, end) {
85
+ return this.eventLog.filter(e => e.timestamp >= start && e.timestamp <= end);
86
+ }
87
+ /** Clear all events */
88
+ clear() {
89
+ this.eventLog = [];
90
+ }
91
+ /** Get event count */
92
+ count() {
93
+ return this.eventLog.length;
94
+ }
95
+ }
96
+ //# sourceMappingURL=event-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/core/event-bus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { Universe } from './universe.js';
2
+ export { AgentRegistry } from './agent-registry.js';
3
+ export { RelationshipGraph } from './relationship-graph.js';
4
+ export { StateMachine, type StateMachineInstance, type TransitionRecord } from './state-machine.js';
5
+ export { PermissionMatrix } from './permission-matrix.js';
6
+ export { ResourcePool } from './resource-pool.js';
7
+ export { EventBus } from './event-bus.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,KAAK,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { Universe } from './universe.js';
2
+ export { AgentRegistry } from './agent-registry.js';
3
+ export { RelationshipGraph } from './relationship-graph.js';
4
+ export { StateMachine } from './state-machine.js';
5
+ export { PermissionMatrix } from './permission-matrix.js';
6
+ export { ResourcePool } from './resource-pool.js';
7
+ export { EventBus } from './event-bus.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAoD,MAAM,oBAAoB,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Permission Matrix — the social contract of an agent organization.
3
+ *
4
+ * Explicit permissions prevent agent chaos: no agent can arbitrarily
5
+ * escalate privileges or bypass another agent.
6
+ */
7
+ import type { PermissionAction, GovernanceConfig } from '../types/index.js';
8
+ import type { AgentDefinition } from '../types/index.js';
9
+ export declare class PermissionMatrix {
10
+ /** Map: "actor:target" → Set of allowed actions */
11
+ private entries;
12
+ /** Map: agentId → role title for role-based lookups */
13
+ private roleMap;
14
+ constructor(governance: GovernanceConfig, agents: AgentDefinition[]);
15
+ /** Check if actor can perform action on target */
16
+ isAllowed(actorId: string, targetId: string, action: PermissionAction): boolean;
17
+ /** Get all actions actor can perform on target */
18
+ getAllowedActions(actorId: string, targetId: string): PermissionAction[];
19
+ /** Get all agents that actor can perform a specific action on */
20
+ getTargetsForAction(actorId: string, action: PermissionAction, allAgentIds: string[]): string[];
21
+ /** Add a runtime permission (for mutable governance) */
22
+ grant(actor: string, target: string, action: PermissionAction): void;
23
+ /** Remove a runtime permission */
24
+ revoke(actor: string, target: string, action: PermissionAction): void;
25
+ /** Export as a printable matrix for visualization */
26
+ toMatrix(agentIds: string[]): {
27
+ headers: string[];
28
+ rows: Array<{
29
+ agent: string;
30
+ permissions: string[];
31
+ }>;
32
+ };
33
+ private makeKey;
34
+ }
35
+ //# sourceMappingURL=permission-matrix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-matrix.d.ts","sourceRoot":"","sources":["../../src/core/permission-matrix.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAmB,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,qBAAa,gBAAgB;IAC3B,mDAAmD;IACnD,OAAO,CAAC,OAAO,CAAqC;IACpD,uDAAuD;IACvD,OAAO,CAAC,OAAO,CAAsB;gBAEzB,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,eAAe,EAAE;IAoBnE,kDAAkD;IAClD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO;IA2B/E,kDAAkD;IAClD,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAQxE,iEAAiE;IACjE,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAI/F,wDAAwD;IACxD,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAOpE,kCAAkC;IAClC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAKrE,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE;IAY1G,OAAO,CAAC,OAAO;CAGhB"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Permission Matrix — the social contract of an agent organization.
3
+ *
4
+ * Explicit permissions prevent agent chaos: no agent can arbitrarily
5
+ * escalate privileges or bypass another agent.
6
+ */
7
+ export class PermissionMatrix {
8
+ /** Map: "actor:target" → Set of allowed actions */
9
+ entries;
10
+ /** Map: agentId → role title for role-based lookups */
11
+ roleMap;
12
+ constructor(governance, agents) {
13
+ this.entries = new Map();
14
+ this.roleMap = new Map();
15
+ // Build role map
16
+ for (const agent of agents) {
17
+ this.roleMap.set(agent.id, agent.role.title);
18
+ }
19
+ // Index permissions
20
+ for (const entry of governance.permissionMatrix) {
21
+ const key = this.makeKey(entry.actor, entry.target);
22
+ const existing = this.entries.get(key) ?? new Set();
23
+ for (const action of entry.actions) {
24
+ existing.add(action);
25
+ }
26
+ this.entries.set(key, existing);
27
+ }
28
+ }
29
+ /** Check if actor can perform action on target */
30
+ isAllowed(actorId, targetId, action) {
31
+ // Direct ID-based check
32
+ const directKey = this.makeKey(actorId, targetId);
33
+ if (this.entries.get(directKey)?.has(action))
34
+ return true;
35
+ // Role-based check (actor ID → role, target ID → role)
36
+ const actorRole = this.roleMap.get(actorId);
37
+ const targetRole = this.roleMap.get(targetId);
38
+ if (actorRole) {
39
+ const roleKey = this.makeKey(actorRole, targetId);
40
+ if (this.entries.get(roleKey)?.has(action))
41
+ return true;
42
+ }
43
+ if (targetRole) {
44
+ const targetRoleKey = this.makeKey(actorId, targetRole);
45
+ if (this.entries.get(targetRoleKey)?.has(action))
46
+ return true;
47
+ }
48
+ if (actorRole && targetRole) {
49
+ const bothRoleKey = this.makeKey(actorRole, targetRole);
50
+ if (this.entries.get(bothRoleKey)?.has(action))
51
+ return true;
52
+ }
53
+ return false;
54
+ }
55
+ /** Get all actions actor can perform on target */
56
+ getAllowedActions(actorId, targetId) {
57
+ const allActions = [
58
+ 'call', 'assign', 'review', 'approve', 'reject',
59
+ 'promote', 'demote', 'suspend', 'eliminate', 'allocate',
60
+ ];
61
+ return allActions.filter(action => this.isAllowed(actorId, targetId, action));
62
+ }
63
+ /** Get all agents that actor can perform a specific action on */
64
+ getTargetsForAction(actorId, action, allAgentIds) {
65
+ return allAgentIds.filter(targetId => this.isAllowed(actorId, targetId, action));
66
+ }
67
+ /** Add a runtime permission (for mutable governance) */
68
+ grant(actor, target, action) {
69
+ const key = this.makeKey(actor, target);
70
+ const existing = this.entries.get(key) ?? new Set();
71
+ existing.add(action);
72
+ this.entries.set(key, existing);
73
+ }
74
+ /** Remove a runtime permission */
75
+ revoke(actor, target, action) {
76
+ const key = this.makeKey(actor, target);
77
+ this.entries.get(key)?.delete(action);
78
+ }
79
+ /** Export as a printable matrix for visualization */
80
+ toMatrix(agentIds) {
81
+ const headers = agentIds;
82
+ const rows = agentIds.map(actorId => ({
83
+ agent: actorId,
84
+ permissions: agentIds.map(targetId => {
85
+ const actions = this.getAllowedActions(actorId, targetId);
86
+ return actions.length > 0 ? actions.join(',') : '-';
87
+ }),
88
+ }));
89
+ return { headers, rows };
90
+ }
91
+ makeKey(actor, target) {
92
+ return `${actor}:${target}`;
93
+ }
94
+ }
95
+ //# sourceMappingURL=permission-matrix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-matrix.js","sourceRoot":"","sources":["../../src/core/permission-matrix.ts"],"names":[],"mappings":"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"}