@hazeljs/organism 2.0.6

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 (170) hide show
  1. package/README.md +205 -0
  2. package/dist/__tests__/organism.embedding.test.d.ts +2 -0
  3. package/dist/__tests__/organism.embedding.test.d.ts.map +1 -0
  4. package/dist/__tests__/organism.embedding.test.js +166 -0
  5. package/dist/__tests__/organism.embedding.test.js.map +1 -0
  6. package/dist/__tests__/organism.phase1.test.d.ts +2 -0
  7. package/dist/__tests__/organism.phase1.test.d.ts.map +1 -0
  8. package/dist/__tests__/organism.phase1.test.js +375 -0
  9. package/dist/__tests__/organism.phase1.test.js.map +1 -0
  10. package/dist/__tests__/organism.phase2-3.test.d.ts +2 -0
  11. package/dist/__tests__/organism.phase2-3.test.d.ts.map +1 -0
  12. package/dist/__tests__/organism.phase2-3.test.js +320 -0
  13. package/dist/__tests__/organism.phase2-3.test.js.map +1 -0
  14. package/dist/__tests__/organism.phase4.test.d.ts +2 -0
  15. package/dist/__tests__/organism.phase4.test.d.ts.map +1 -0
  16. package/dist/__tests__/organism.phase4.test.js +217 -0
  17. package/dist/__tests__/organism.phase4.test.js.map +1 -0
  18. package/dist/bridge/signal-bridge.d.ts +46 -0
  19. package/dist/bridge/signal-bridge.d.ts.map +1 -0
  20. package/dist/bridge/signal-bridge.js +75 -0
  21. package/dist/bridge/signal-bridge.js.map +1 -0
  22. package/dist/core/capability-registry.d.ts +16 -0
  23. package/dist/core/capability-registry.d.ts.map +1 -0
  24. package/dist/core/capability-registry.js +71 -0
  25. package/dist/core/capability-registry.js.map +1 -0
  26. package/dist/core/clock.d.ts +17 -0
  27. package/dist/core/clock.d.ts.map +1 -0
  28. package/dist/core/clock.js +63 -0
  29. package/dist/core/clock.js.map +1 -0
  30. package/dist/core/mission.d.ts +4 -0
  31. package/dist/core/mission.d.ts.map +1 -0
  32. package/dist/core/mission.js +74 -0
  33. package/dist/core/mission.js.map +1 -0
  34. package/dist/core/organism-context.d.ts +139 -0
  35. package/dist/core/organism-context.d.ts.map +1 -0
  36. package/dist/core/organism-context.js +62 -0
  37. package/dist/core/organism-context.js.map +1 -0
  38. package/dist/core/organism-runtime.d.ts +199 -0
  39. package/dist/core/organism-runtime.d.ts.map +1 -0
  40. package/dist/core/organism-runtime.js +1016 -0
  41. package/dist/core/organism-runtime.js.map +1 -0
  42. package/dist/decorators/index.d.ts +39 -0
  43. package/dist/decorators/index.d.ts.map +1 -0
  44. package/dist/decorators/index.js +165 -0
  45. package/dist/decorators/index.js.map +1 -0
  46. package/dist/economy/market-engine.d.ts +57 -0
  47. package/dist/economy/market-engine.d.ts.map +1 -0
  48. package/dist/economy/market-engine.js +258 -0
  49. package/dist/economy/market-engine.js.map +1 -0
  50. package/dist/economy/resource-allocator.d.ts +39 -0
  51. package/dist/economy/resource-allocator.d.ts.map +1 -0
  52. package/dist/economy/resource-allocator.js +153 -0
  53. package/dist/economy/resource-allocator.js.map +1 -0
  54. package/dist/economy/utility-engine.d.ts +16 -0
  55. package/dist/economy/utility-engine.d.ts.map +1 -0
  56. package/dist/economy/utility-engine.js +80 -0
  57. package/dist/economy/utility-engine.js.map +1 -0
  58. package/dist/economy/utility-forecaster.d.ts +24 -0
  59. package/dist/economy/utility-forecaster.d.ts.map +1 -0
  60. package/dist/economy/utility-forecaster.js +60 -0
  61. package/dist/economy/utility-forecaster.js.map +1 -0
  62. package/dist/errors/organism.errors.d.ts +23 -0
  63. package/dist/errors/organism.errors.d.ts.map +1 -0
  64. package/dist/errors/organism.errors.js +50 -0
  65. package/dist/errors/organism.errors.js.map +1 -0
  66. package/dist/events/organism-events.d.ts +61 -0
  67. package/dist/events/organism-events.d.ts.map +1 -0
  68. package/dist/events/organism-events.js +95 -0
  69. package/dist/events/organism-events.js.map +1 -0
  70. package/dist/evolution/evolution-engine.d.ts +41 -0
  71. package/dist/evolution/evolution-engine.d.ts.map +1 -0
  72. package/dist/evolution/evolution-engine.js +135 -0
  73. package/dist/evolution/evolution-engine.js.map +1 -0
  74. package/dist/evolution/mutation-engine.d.ts +21 -0
  75. package/dist/evolution/mutation-engine.d.ts.map +1 -0
  76. package/dist/evolution/mutation-engine.js +84 -0
  77. package/dist/evolution/mutation-engine.js.map +1 -0
  78. package/dist/genealogy/genealogy-manager.d.ts +18 -0
  79. package/dist/genealogy/genealogy-manager.d.ts.map +1 -0
  80. package/dist/genealogy/genealogy-manager.js +64 -0
  81. package/dist/genealogy/genealogy-manager.js.map +1 -0
  82. package/dist/governance/constitution.d.ts +20 -0
  83. package/dist/governance/constitution.d.ts.map +1 -0
  84. package/dist/governance/constitution.js +109 -0
  85. package/dist/governance/constitution.js.map +1 -0
  86. package/dist/host/organism-host-registry.d.ts +24 -0
  87. package/dist/host/organism-host-registry.d.ts.map +1 -0
  88. package/dist/host/organism-host-registry.js +65 -0
  89. package/dist/host/organism-host-registry.js.map +1 -0
  90. package/dist/host/organism-host.d.ts +32 -0
  91. package/dist/host/organism-host.d.ts.map +1 -0
  92. package/dist/host/organism-host.js +64 -0
  93. package/dist/host/organism-host.js.map +1 -0
  94. package/dist/index.d.ts +43 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +117 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/integration/create-ops-organism.d.ts +34 -0
  99. package/dist/integration/create-ops-organism.d.ts.map +1 -0
  100. package/dist/integration/create-ops-organism.js +43 -0
  101. package/dist/integration/create-ops-organism.js.map +1 -0
  102. package/dist/lifecycle/birth-engine.d.ts +41 -0
  103. package/dist/lifecycle/birth-engine.d.ts.map +1 -0
  104. package/dist/lifecycle/birth-engine.js +182 -0
  105. package/dist/lifecycle/birth-engine.js.map +1 -0
  106. package/dist/lifecycle/decision-engine.d.ts +19 -0
  107. package/dist/lifecycle/decision-engine.d.ts.map +1 -0
  108. package/dist/lifecycle/decision-engine.js +137 -0
  109. package/dist/lifecycle/decision-engine.js.map +1 -0
  110. package/dist/lifecycle/reproduction-engine.d.ts +58 -0
  111. package/dist/lifecycle/reproduction-engine.d.ts.map +1 -0
  112. package/dist/lifecycle/reproduction-engine.js +207 -0
  113. package/dist/lifecycle/reproduction-engine.js.map +1 -0
  114. package/dist/lifecycle/survival-engine.d.ts +17 -0
  115. package/dist/lifecycle/survival-engine.d.ts.map +1 -0
  116. package/dist/lifecycle/survival-engine.js +83 -0
  117. package/dist/lifecycle/survival-engine.js.map +1 -0
  118. package/dist/observability/metrics.d.ts +37 -0
  119. package/dist/observability/metrics.d.ts.map +1 -0
  120. package/dist/observability/metrics.js +80 -0
  121. package/dist/observability/metrics.js.map +1 -0
  122. package/dist/perception/perception-engine.d.ts +40 -0
  123. package/dist/perception/perception-engine.d.ts.map +1 -0
  124. package/dist/perception/perception-engine.js +126 -0
  125. package/dist/perception/perception-engine.js.map +1 -0
  126. package/dist/persistence/in-memory-organism-repository.d.ts +2 -0
  127. package/dist/persistence/in-memory-organism-repository.d.ts.map +1 -0
  128. package/dist/persistence/in-memory-organism-repository.js +18 -0
  129. package/dist/persistence/in-memory-organism-repository.js.map +1 -0
  130. package/dist/persistence/organism-repository.d.ts +42 -0
  131. package/dist/persistence/organism-repository.d.ts.map +1 -0
  132. package/dist/persistence/organism-repository.js +105 -0
  133. package/dist/persistence/organism-repository.js.map +1 -0
  134. package/dist/types/organism.types.d.ts +482 -0
  135. package/dist/types/organism.types.d.ts.map +1 -0
  136. package/dist/types/organism.types.js +45 -0
  137. package/dist/types/organism.types.js.map +1 -0
  138. package/examples/ecommerce-organism/run.ts +245 -0
  139. package/package.json +73 -0
  140. package/src/bridge/signal-bridge.ts +116 -0
  141. package/src/core/capability-registry.ts +72 -0
  142. package/src/core/clock.ts +58 -0
  143. package/src/core/mission.ts +83 -0
  144. package/src/core/organism-context.ts +176 -0
  145. package/src/core/organism-runtime.ts +1369 -0
  146. package/src/decorators/index.ts +180 -0
  147. package/src/economy/market-engine.ts +324 -0
  148. package/src/economy/resource-allocator.ts +188 -0
  149. package/src/economy/utility-engine.ts +103 -0
  150. package/src/economy/utility-forecaster.ts +88 -0
  151. package/src/errors/organism.errors.ts +47 -0
  152. package/src/events/organism-events.ts +122 -0
  153. package/src/evolution/evolution-engine.ts +167 -0
  154. package/src/evolution/mutation-engine.ts +110 -0
  155. package/src/genealogy/genealogy-manager.ts +70 -0
  156. package/src/governance/constitution.ts +120 -0
  157. package/src/host/organism-host-registry.ts +72 -0
  158. package/src/host/organism-host.ts +103 -0
  159. package/src/index.ts +78 -0
  160. package/src/integration/create-ops-organism.ts +80 -0
  161. package/src/lifecycle/birth-engine.ts +225 -0
  162. package/src/lifecycle/decision-engine.ts +158 -0
  163. package/src/lifecycle/reproduction-engine.ts +289 -0
  164. package/src/lifecycle/survival-engine.ts +95 -0
  165. package/src/observability/metrics.ts +120 -0
  166. package/src/perception/perception-engine.ts +140 -0
  167. package/src/persistence/in-memory-organism-repository.ts +1 -0
  168. package/src/persistence/organism-repository.ts +134 -0
  169. package/src/types/organism.types.ts +591 -0
  170. package/tsconfig.jest.json +8 -0
@@ -0,0 +1,320 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("../index");
4
+ async function createOrg(overrides = {}) {
5
+ return (0, index_1.createOrganism)({
6
+ mission: {
7
+ id: 'm',
8
+ objective: 'Operate with adaptive specialists',
9
+ },
10
+ genes: [
11
+ {
12
+ id: 'commerce-generalist',
13
+ capabilities: ['commerce', 'customer-support', 'analytics'],
14
+ reproduction: { enabled: true, maxChildren: 3 },
15
+ mutation: { enabled: true },
16
+ initialPrompt: 'You are a commerce generalist.',
17
+ },
18
+ {
19
+ id: 'no-repro',
20
+ capabilities: ['research'],
21
+ reproduction: { enabled: false },
22
+ mutation: { enabled: false },
23
+ },
24
+ ],
25
+ resources: {
26
+ tokenBudget: 500000,
27
+ monthlyBudget: { amount: 200, currency: 'USD' },
28
+ },
29
+ limits: {
30
+ maxAgents: 10,
31
+ maxGenerationDepth: 3,
32
+ maxChildrenPerAgent: 2,
33
+ maxSpawnRatePerMinute: 20,
34
+ maxTotalCostPerHour: 50,
35
+ },
36
+ reproduction: { cooldownMs: 0 },
37
+ simulation: true,
38
+ debug: false,
39
+ ...overrides,
40
+ });
41
+ }
42
+ describe('phase 2 reproduction', () => {
43
+ beforeEach(() => {
44
+ (0, index_1.resetAgentSeqForTests)();
45
+ });
46
+ it('reproduces a specialized child with parent lineage', async () => {
47
+ const organism = await createOrg();
48
+ await organism.start();
49
+ const parent = await organism.spawnAgent({
50
+ reason: 'seed',
51
+ objective: 'Handle commerce',
52
+ needId: 'commerce',
53
+ requiredCapabilities: ['commerce', 'analytics'],
54
+ geneId: 'commerce-generalist',
55
+ tokens: 100000,
56
+ });
57
+ const child = await organism.reproduceAgent(parent.id, {
58
+ reason: 'Need Swedish VAT expertise',
59
+ specialization: ['swedish-tax', 'vat'],
60
+ tokens: 20000,
61
+ });
62
+ expect(child.parentAgentId).toBe(parent.id);
63
+ expect(child.generation).toBe(2);
64
+ expect(child.capabilities).toEqual(expect.arrayContaining(['commerce', 'analytics', 'swedish-tax', 'vat']));
65
+ expect(child.permissions.every((p) => parent.permissions.includes(p))).toBe(true);
66
+ const tree = await organism.formatGenealogy();
67
+ expect(tree).toContain(parent.id);
68
+ expect(tree).toContain(child.id);
69
+ const gene = await organism.getGenealogy();
70
+ const parentGene = gene.find((g) => g.agentId === parent.id);
71
+ expect(parentGene?.children).toContain(child.id);
72
+ await organism.terminate();
73
+ });
74
+ it('enforces maxChildrenPerAgent', async () => {
75
+ const organism = await createOrg({
76
+ limits: {
77
+ maxAgents: 10,
78
+ maxGenerationDepth: 5,
79
+ maxChildrenPerAgent: 1,
80
+ maxSpawnRatePerMinute: 20,
81
+ maxTotalCostPerHour: 50,
82
+ },
83
+ });
84
+ await organism.start();
85
+ const parent = await organism.spawnAgent({
86
+ reason: 'seed',
87
+ objective: 'parent',
88
+ needId: 'p',
89
+ requiredCapabilities: ['commerce'],
90
+ geneId: 'commerce-generalist',
91
+ tokens: 80000,
92
+ });
93
+ await organism.reproduceAgent(parent.id, {
94
+ reason: 'first child',
95
+ specialization: ['returns'],
96
+ });
97
+ await expect(organism.reproduceAgent(parent.id, {
98
+ reason: 'second child',
99
+ specialization: ['vat'],
100
+ })).rejects.toThrow(/maxChildrenPerAgent/);
101
+ await organism.terminate();
102
+ });
103
+ it('enforces maxGenerationDepth', async () => {
104
+ const organism = await createOrg({
105
+ limits: {
106
+ maxAgents: 10,
107
+ maxGenerationDepth: 2,
108
+ maxChildrenPerAgent: 3,
109
+ maxSpawnRatePerMinute: 20,
110
+ maxTotalCostPerHour: 50,
111
+ },
112
+ reproduction: { cooldownMs: 0 },
113
+ });
114
+ await organism.start();
115
+ const a1 = await organism.spawnAgent({
116
+ reason: 'seed',
117
+ objective: 'g1',
118
+ needId: 'g1',
119
+ requiredCapabilities: ['commerce'],
120
+ geneId: 'commerce-generalist',
121
+ tokens: 100000,
122
+ });
123
+ const a2 = await organism.reproduceAgent(a1.id, {
124
+ reason: 'g2',
125
+ specialization: ['vat'],
126
+ });
127
+ await expect(organism.reproduceAgent(a2.id, {
128
+ reason: 'g3',
129
+ specialization: ['deep'],
130
+ })).rejects.toThrow(/maxGenerationDepth/);
131
+ await organism.terminate();
132
+ });
133
+ it('blocks reproduction when gene disables it', async () => {
134
+ const organism = await createOrg();
135
+ await organism.start();
136
+ const parent = await organism.spawnAgent({
137
+ reason: 'seed',
138
+ objective: 'research',
139
+ needId: 'r',
140
+ requiredCapabilities: ['research'],
141
+ geneId: 'no-repro',
142
+ tokens: 10000,
143
+ });
144
+ await expect(organism.reproduceAgent(parent.id, { reason: 'should fail', specialization: ['x'] })).rejects.toThrow(index_1.OrganismLimitError);
145
+ await organism.terminate();
146
+ });
147
+ it('inherits resource fraction from parent wallet', async () => {
148
+ const organism = await createOrg();
149
+ await organism.start();
150
+ const parent = await organism.spawnAgent({
151
+ reason: 'seed',
152
+ objective: 'commerce',
153
+ needId: 'c',
154
+ requiredCapabilities: ['commerce'],
155
+ geneId: 'commerce-generalist',
156
+ tokens: 100000,
157
+ });
158
+ // Force parent-wallet transfer path (no request.tokens and parent has tokens)
159
+ const child = await organism.reproduceAgent(parent.id, {
160
+ reason: 'split budget',
161
+ specialization: ['pricing'],
162
+ inheritance: {
163
+ ...index_1.DEFAULT_INHERITANCE_POLICY,
164
+ resources: { transferFraction: 0.5 },
165
+ },
166
+ });
167
+ const refreshedParent = (await organism.listAgents()).find((a) => a.id === parent.id);
168
+ // When poolWallet is used because request.tokens undefined but we still may allocate...
169
+ // Reproduce without tokens uses parent transfer when parentTokens > 0 and !request.tokens
170
+ expect(child.wallet.tokensRemaining ?? 0).toBeGreaterThan(0);
171
+ expect((refreshedParent.wallet.tokensRemaining ?? 0) + (child.wallet.tokensRemaining ?? 0)).toBeLessThanOrEqual(100000 + 25000);
172
+ await organism.terminate();
173
+ });
174
+ it('exposes reproduce on agent context', async () => {
175
+ const organism = await createOrg();
176
+ await organism.start();
177
+ const parent = await organism.spawnAgent({
178
+ reason: 'seed',
179
+ objective: 'commerce',
180
+ needId: 'c',
181
+ requiredCapabilities: ['commerce'],
182
+ geneId: 'commerce-generalist',
183
+ tokens: 80000,
184
+ });
185
+ const ctx = organism.createAgentContext(parent.id);
186
+ const child = await ctx.reproduce({
187
+ reason: 'Need sizing expertise',
188
+ specialization: ['sizing'],
189
+ });
190
+ expect(child.parentAgentId).toBe(parent.id);
191
+ await organism.terminate();
192
+ });
193
+ });
194
+ describe('phase 3 evolution', () => {
195
+ beforeEach(() => {
196
+ (0, index_1.resetAgentSeqForTests)();
197
+ });
198
+ it('mutates strategy config and records audit history', async () => {
199
+ const organism = await createOrg();
200
+ await organism.start();
201
+ const agent = await organism.spawnAgent({
202
+ reason: 'seed',
203
+ objective: 'pricing',
204
+ needId: 'pricing',
205
+ requiredCapabilities: ['commerce'],
206
+ geneId: 'commerce-generalist',
207
+ });
208
+ const mutated = await organism.mutateAgent(agent.id, {
209
+ reason: 'Try lower temperature planning',
210
+ mutation: {
211
+ modelConfig: { temperature: 0.2 },
212
+ strategyConfig: { planning: 'decompose-first' },
213
+ promptChanges: ['Prefer stepwise plans'],
214
+ addedCapabilities: ['experimentation'],
215
+ },
216
+ });
217
+ expect(mutated.modelConfig.temperature).toBe(0.2);
218
+ expect(mutated.strategyConfig.planning).toBe('decompose-first');
219
+ expect(mutated.capabilities).toContain('experimentation');
220
+ expect(mutated.mutations).toHaveLength(1);
221
+ expect(mutated.systemPrompt).toContain('Prefer stepwise plans');
222
+ await organism.terminate();
223
+ });
224
+ it('rejects mutation when gene disables it', async () => {
225
+ const organism = await createOrg();
226
+ await organism.start();
227
+ const agent = await organism.spawnAgent({
228
+ reason: 'seed',
229
+ objective: 'research',
230
+ needId: 'r',
231
+ requiredCapabilities: ['research'],
232
+ geneId: 'no-repro',
233
+ });
234
+ await expect(organism.mutateAgent(agent.id, {
235
+ reason: 'x',
236
+ mutation: { promptChanges: ['nope'] },
237
+ })).rejects.toThrow(/mutation disabled/);
238
+ await organism.terminate();
239
+ });
240
+ it('evaluates a generation and selects a winner', async () => {
241
+ const organism = await createOrg();
242
+ await organism.start();
243
+ const v1 = await organism.spawnAgent({
244
+ reason: 'v1',
245
+ objective: 'pricing-v1',
246
+ needId: 'pricing-v1',
247
+ requiredCapabilities: ['commerce'],
248
+ geneId: 'commerce-generalist',
249
+ });
250
+ const v2 = await organism.spawnAgent({
251
+ reason: 'v2',
252
+ objective: 'pricing-v2',
253
+ needId: 'pricing-v2',
254
+ requiredCapabilities: ['commerce'],
255
+ geneId: 'commerce-generalist',
256
+ });
257
+ const v3 = await organism.spawnAgent({
258
+ reason: 'v3',
259
+ objective: 'pricing-v3',
260
+ needId: 'pricing-v3',
261
+ requiredCapabilities: ['commerce'],
262
+ geneId: 'commerce-generalist',
263
+ });
264
+ await organism.reportOutcome(v1.id, {
265
+ result: 'ok',
266
+ metrics: { valueGenerated: 100, cost: 10, confidence: 0.5 },
267
+ });
268
+ await organism.reportOutcome(v2.id, {
269
+ result: 'great',
270
+ metrics: { valueGenerated: 2000, cost: 5, confidence: 0.95 },
271
+ });
272
+ await organism.reportOutcome(v3.id, {
273
+ result: 'meh',
274
+ metrics: { valueGenerated: 50, cost: 20, confidence: 0.4 },
275
+ });
276
+ const result = await organism.evaluateGeneration({
277
+ population: [v1.id, v2.id, v3.id],
278
+ populationId: 'pricing',
279
+ });
280
+ expect(result.winner).toBe(v2.id);
281
+ expect(result.scores[v2.id]).toBeGreaterThan(result.scores[v1.id]);
282
+ expect(organism.getEvolutionaryHistory()).toHaveLength(1);
283
+ await organism.terminate();
284
+ });
285
+ it('promotes winning strategy into losers when requested', async () => {
286
+ const organism = await createOrg();
287
+ await organism.start();
288
+ const a = await organism.spawnAgent({
289
+ reason: 'a',
290
+ objective: 'a',
291
+ needId: 'a',
292
+ requiredCapabilities: ['commerce'],
293
+ geneId: 'commerce-generalist',
294
+ });
295
+ const b = await organism.spawnAgent({
296
+ reason: 'b',
297
+ objective: 'b',
298
+ needId: 'b',
299
+ requiredCapabilities: ['commerce'],
300
+ geneId: 'commerce-generalist',
301
+ });
302
+ await organism.reportOutcome(a.id, {
303
+ result: 'win',
304
+ metrics: { valueGenerated: 5000, cost: 1, confidence: 0.99 },
305
+ });
306
+ await organism.reportOutcome(b.id, {
307
+ result: 'lose',
308
+ metrics: { valueGenerated: 1, cost: 10, confidence: 0.2 },
309
+ });
310
+ await organism.evaluateGeneration({
311
+ population: [a.id, b.id],
312
+ promoteToLosers: true,
313
+ });
314
+ const loser = (await organism.listAgents()).find((x) => x.id === b.id);
315
+ expect(loser.mutations.length).toBeGreaterThan(0);
316
+ expect(String(loser.strategyConfig.promotedFrom)).toBe(a.id);
317
+ await organism.terminate();
318
+ });
319
+ });
320
+ //# sourceMappingURL=organism.phase2-3.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organism.phase2-3.test.js","sourceRoot":"","sources":["../../src/__tests__/organism.phase2-3.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=organism.phase4.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organism.phase4.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/organism.phase4.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("../index");
4
+ async function createOrg(overrides = {}) {
5
+ return (0, index_1.createOrganism)({
6
+ mission: { id: 'econ', objective: 'Allocate scarce resources efficiently' },
7
+ genes: [
8
+ {
9
+ id: 'ops',
10
+ capabilities: ['operations', 'analytics'],
11
+ reproduction: { enabled: true },
12
+ mutation: { enabled: true },
13
+ },
14
+ ],
15
+ resources: {
16
+ tokenBudget: 100000,
17
+ monthlyBudget: { amount: 100, currency: 'USD' },
18
+ },
19
+ limits: {
20
+ maxAgents: 10,
21
+ maxGenerationDepth: 3,
22
+ maxChildrenPerAgent: 2,
23
+ maxSpawnRatePerMinute: 20,
24
+ maxTotalCostPerHour: 50,
25
+ },
26
+ market: { minNetExpectedValue: 0, priceWeight: 0.2 },
27
+ simulation: true,
28
+ debug: false,
29
+ ...overrides,
30
+ });
31
+ }
32
+ describe('phase 4 agent economy', () => {
33
+ beforeEach(() => {
34
+ (0, index_1.resetAgentSeqForTests)();
35
+ (0, index_1.resetBidSeqForTests)();
36
+ });
37
+ it('forecasts utility with opportunity cost under scarcity', async () => {
38
+ const organism = await createOrg({
39
+ resources: {
40
+ tokenBudget: 100000,
41
+ monthlyBudget: { amount: 100, currency: 'USD' },
42
+ },
43
+ });
44
+ await organism.start();
45
+ // Drain most of the pool to raise scarcity
46
+ const agent = await organism.spawnAgent({
47
+ reason: 'seed',
48
+ objective: 'ops',
49
+ needId: 'ops',
50
+ requiredCapabilities: ['operations'],
51
+ tokens: 90000,
52
+ });
53
+ const forecast = await organism.forecastUtility({
54
+ agentId: agent.id,
55
+ requested: { tokens: 5000 },
56
+ expectedValue: 50,
57
+ confidence: 0.8,
58
+ });
59
+ expect(forecast.opportunityCost).toBeGreaterThan(0);
60
+ expect(forecast.reasoningSummary).toContain('scarcity=');
61
+ await organism.terminate();
62
+ });
63
+ it('clears a market and awards the higher-value bid', async () => {
64
+ const organism = await createOrg();
65
+ await organism.start();
66
+ const a = await organism.spawnAgent({
67
+ reason: 'a',
68
+ objective: 'a',
69
+ needId: 'a',
70
+ requiredCapabilities: ['operations'],
71
+ tokens: 1000,
72
+ });
73
+ const b = await organism.spawnAgent({
74
+ reason: 'b',
75
+ objective: 'b',
76
+ needId: 'b',
77
+ requiredCapabilities: ['analytics'],
78
+ tokens: 1000,
79
+ });
80
+ organism.placeBid({
81
+ agentId: a.id,
82
+ reason: 'low value sim',
83
+ requested: { tokens: 40000 },
84
+ expectedValue: 10,
85
+ confidence: 0.4,
86
+ urgency: 0.2,
87
+ });
88
+ organism.placeBid({
89
+ agentId: b.id,
90
+ reason: 'high value analysis',
91
+ requested: { tokens: 40000 },
92
+ expectedValue: 5000,
93
+ confidence: 0.9,
94
+ urgency: 0.8,
95
+ });
96
+ const cleared = await organism.clearMarket();
97
+ expect(cleared.awarded.some((w) => w.agentId === b.id)).toBe(true);
98
+ const winner = (await organism.listAgents()).find((x) => x.id === b.id);
99
+ expect(winner.wallet.tokensRemaining ?? 0).toBeGreaterThan(1000);
100
+ await organism.terminate();
101
+ });
102
+ it('denies low-forecast direct resource requests', async () => {
103
+ const organism = await createOrg({
104
+ resources: {
105
+ tokenBudget: 50000,
106
+ monthlyBudget: { amount: 10, currency: 'USD' },
107
+ },
108
+ });
109
+ await organism.start();
110
+ const agent = await organism.spawnAgent({
111
+ reason: 'seed',
112
+ objective: 'ops',
113
+ needId: 'ops',
114
+ requiredCapabilities: ['operations'],
115
+ tokens: 40000,
116
+ });
117
+ const result = await organism.requestResourcesForAgent(agent.id, {
118
+ reason: 'wasteful',
119
+ requested: { tokens: 5000 },
120
+ expectedValue: 0.01,
121
+ confidence: 0.1,
122
+ });
123
+ expect(result.approved).toBe(false);
124
+ expect(result.forecast).toBeDefined();
125
+ await organism.terminate();
126
+ });
127
+ it('negotiates peer resource transfer when forecast is positive', async () => {
128
+ const organism = await createOrg();
129
+ await organism.start();
130
+ const donor = await organism.spawnAgent({
131
+ reason: 'donor',
132
+ objective: 'donor',
133
+ needId: 'd',
134
+ requiredCapabilities: ['operations'],
135
+ tokens: 50000,
136
+ });
137
+ const receiver = await organism.spawnAgent({
138
+ reason: 'receiver',
139
+ objective: 'receiver',
140
+ needId: 'r',
141
+ requiredCapabilities: ['analytics'],
142
+ tokens: 1000,
143
+ });
144
+ const result = await organism.negotiate({
145
+ fromAgentId: donor.id,
146
+ toAgentId: receiver.id,
147
+ reason: 'Fund analytics burst',
148
+ transfer: { tokens: 10000 },
149
+ expectedValue: 2000,
150
+ confidence: 0.85,
151
+ });
152
+ expect(result.approved).toBe(true);
153
+ const agents = await organism.listAgents();
154
+ const d = agents.find((x) => x.id === donor.id);
155
+ const r = agents.find((x) => x.id === receiver.id);
156
+ expect(d.wallet.tokensRemaining).toBe(40000);
157
+ expect(r.wallet.tokensRemaining).toBe(11000);
158
+ await organism.terminate();
159
+ });
160
+ it('exposes bidding and negotiation on agent context', async () => {
161
+ const organism = await createOrg();
162
+ await organism.start();
163
+ const a = await organism.spawnAgent({
164
+ reason: 'a',
165
+ objective: 'a',
166
+ needId: 'a',
167
+ requiredCapabilities: ['operations'],
168
+ tokens: 20000,
169
+ });
170
+ const b = await organism.spawnAgent({
171
+ reason: 'b',
172
+ objective: 'b',
173
+ needId: 'b',
174
+ requiredCapabilities: ['analytics'],
175
+ tokens: 1000,
176
+ });
177
+ const ctx = organism.createAgentContext(a.id);
178
+ ctx.placeBid({
179
+ reason: 'need burst',
180
+ requested: { tokens: 5000 },
181
+ expectedValue: 800,
182
+ confidence: 0.7,
183
+ });
184
+ expect(organism.listOpenBids().length).toBe(1);
185
+ const nego = await ctx.negotiate({
186
+ toAgentId: b.id,
187
+ reason: 'share tokens',
188
+ transfer: { tokens: 2000 },
189
+ expectedValue: 500,
190
+ confidence: 0.8,
191
+ });
192
+ expect(nego.approved).toBe(true);
193
+ await organism.terminate();
194
+ });
195
+ it('requestResources with useMarket clears bids', async () => {
196
+ const organism = await createOrg();
197
+ await organism.start();
198
+ const agent = await organism.spawnAgent({
199
+ reason: 'seed',
200
+ objective: 'ops',
201
+ needId: 'ops',
202
+ requiredCapabilities: ['operations'],
203
+ tokens: 1000,
204
+ });
205
+ const result = await organism.requestResourcesForAgent(agent.id, {
206
+ reason: 'market path',
207
+ requested: { tokens: 10000 },
208
+ expectedValue: 3000,
209
+ confidence: 0.9,
210
+ useMarket: true,
211
+ });
212
+ expect(result.approved).toBe(true);
213
+ expect(result.reason).toMatch(/market/i);
214
+ await organism.terminate();
215
+ });
216
+ });
217
+ //# sourceMappingURL=organism.phase4.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organism.phase4.test.js","sourceRoot":"","sources":["../../src/__tests__/organism.phase4.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Signal / outcome bridge helpers for embedding organism in product platforms.
3
+ * Keep organism generic — callers map industry payloads into these shapes.
4
+ */
5
+ import type { AgentOutcomeReport, EnvironmentSignal, SignalNeedMapping } from '../types/organism.types';
6
+ export type ExternalSignalLike = {
7
+ id?: string;
8
+ type: string;
9
+ source: string;
10
+ timestamp?: Date | string | number;
11
+ severity?: number;
12
+ confidence?: number;
13
+ relevance?: number;
14
+ data?: unknown;
15
+ };
16
+ /**
17
+ * Normalize an external/product signal into an EnvironmentSignal.
18
+ * Strips tenancy / vertical fields — those belong outside organism.
19
+ */
20
+ export declare function toEnvironmentSignal(input: ExternalSignalLike): EnvironmentSignal;
21
+ /** Observe-ready signal when an incident is opened by an outer detection layer. */
22
+ export declare function toIncidentEnvironmentSignal(input: {
23
+ incidentType: string;
24
+ source?: string;
25
+ severity?: number;
26
+ data?: Record<string, unknown>;
27
+ id?: string;
28
+ }): EnvironmentSignal;
29
+ /**
30
+ * Build SignalNeedMapping entries that route incident.<type> into investigation needs.
31
+ * Domain detectors stay outside organism; this only wires need→capability after detection.
32
+ */
33
+ export declare function incidentNeedMappings(incidentTypes: string[], requiredCapabilities: string[], opts?: {
34
+ urgency?: number;
35
+ confidence?: number;
36
+ }): SignalNeedMapping[];
37
+ export type OutcomeVerdictLike = 'successful' | 'partially_successful' | 'neutral' | 'unsuccessful' | string;
38
+ /** Map an outer outcome evaluation into AgentOutcomeReport for utility/reputation. */
39
+ export declare function toAgentOutcomeReport(input: {
40
+ verdict: OutcomeVerdictLike;
41
+ confidence?: number;
42
+ cost?: number;
43
+ summary?: string;
44
+ missionMetricUpdates?: Record<string, number>;
45
+ }): AgentOutcomeReport;
46
+ //# sourceMappingURL=signal-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-bridge.d.ts","sourceRoot":"","sources":["../../src/bridge/signal-bridge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,iBAAiB,CAiBhF;AAED,mFAAmF;AACnF,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,iBAAiB,CAQpB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,MAAM,EAAE,EACvB,oBAAoB,EAAE,MAAM,EAAE,EAC9B,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C,iBAAiB,EAAE,CAQrB;AAED,MAAM,MAAM,kBAAkB,GAC1B,YAAY,GACZ,sBAAsB,GACtB,SAAS,GACT,cAAc,GACd,MAAM,CAAC;AAEX,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,OAAO,EAAE,kBAAkB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/C,GAAG,kBAAkB,CAqBrB"}