@mneme-ai/core 2.19.25 → 2.19.27

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 (69) hide show
  1. package/dist/cosmic/aurelian_v1925.test.js +1 -1
  2. package/dist/cosmic/aurelian_v1925.test.js.map +1 -1
  3. package/dist/cosmic/aurelian_v1926.test.d.ts +2 -0
  4. package/dist/cosmic/aurelian_v1926.test.d.ts.map +1 -0
  5. package/dist/cosmic/aurelian_v1926.test.js +48 -0
  6. package/dist/cosmic/aurelian_v1926.test.js.map +1 -0
  7. package/dist/cosmic/aurelian_v1927.test.d.ts +2 -0
  8. package/dist/cosmic/aurelian_v1927.test.d.ts.map +1 -0
  9. package/dist/cosmic/aurelian_v1927.test.js +73 -0
  10. package/dist/cosmic/aurelian_v1927.test.js.map +1 -0
  11. package/dist/dreamspace_cartographer/dreamspace_cartographer.test.d.ts +2 -0
  12. package/dist/dreamspace_cartographer/dreamspace_cartographer.test.d.ts.map +1 -0
  13. package/dist/dreamspace_cartographer/dreamspace_cartographer.test.js +153 -0
  14. package/dist/dreamspace_cartographer/dreamspace_cartographer.test.js.map +1 -0
  15. package/dist/dreamspace_cartographer/index.d.ts +110 -0
  16. package/dist/dreamspace_cartographer/index.d.ts.map +1 -0
  17. package/dist/dreamspace_cartographer/index.js +175 -0
  18. package/dist/dreamspace_cartographer/index.js.map +1 -0
  19. package/dist/dreamspace_evolution/dreamspace_evolution.test.d.ts +2 -0
  20. package/dist/dreamspace_evolution/dreamspace_evolution.test.d.ts.map +1 -0
  21. package/dist/dreamspace_evolution/dreamspace_evolution.test.js +199 -0
  22. package/dist/dreamspace_evolution/dreamspace_evolution.test.js.map +1 -0
  23. package/dist/dreamspace_evolution/index.d.ts +140 -0
  24. package/dist/dreamspace_evolution/index.d.ts.map +1 -0
  25. package/dist/dreamspace_evolution/index.js +210 -0
  26. package/dist/dreamspace_evolution/index.js.map +1 -0
  27. package/dist/dreamspace_federate/dreamspace_federate.test.d.ts +2 -0
  28. package/dist/dreamspace_federate/dreamspace_federate.test.d.ts.map +1 -0
  29. package/dist/dreamspace_federate/dreamspace_federate.test.js +199 -0
  30. package/dist/dreamspace_federate/dreamspace_federate.test.js.map +1 -0
  31. package/dist/dreamspace_federate/index.d.ts +131 -0
  32. package/dist/dreamspace_federate/index.d.ts.map +1 -0
  33. package/dist/dreamspace_federate/index.js +209 -0
  34. package/dist/dreamspace_federate/index.js.map +1 -0
  35. package/dist/dreamspace_gestation/dreamspace_gestation.test.d.ts +2 -0
  36. package/dist/dreamspace_gestation/dreamspace_gestation.test.d.ts.map +1 -0
  37. package/dist/dreamspace_gestation/dreamspace_gestation.test.js +160 -0
  38. package/dist/dreamspace_gestation/dreamspace_gestation.test.js.map +1 -0
  39. package/dist/dreamspace_gestation/index.d.ts +136 -0
  40. package/dist/dreamspace_gestation/index.d.ts.map +1 -0
  41. package/dist/dreamspace_gestation/index.js +186 -0
  42. package/dist/dreamspace_gestation/index.js.map +1 -0
  43. package/dist/dreamspace_pair/dreamspace_pair.test.d.ts +2 -0
  44. package/dist/dreamspace_pair/dreamspace_pair.test.d.ts.map +1 -0
  45. package/dist/dreamspace_pair/dreamspace_pair.test.js +175 -0
  46. package/dist/dreamspace_pair/dreamspace_pair.test.js.map +1 -0
  47. package/dist/dreamspace_pair/index.d.ts +99 -0
  48. package/dist/dreamspace_pair/index.d.ts.map +1 -0
  49. package/dist/dreamspace_pair/index.js +161 -0
  50. package/dist/dreamspace_pair/index.js.map +1 -0
  51. package/dist/dreamspace_probe/dreamspace_probe.test.d.ts +2 -0
  52. package/dist/dreamspace_probe/dreamspace_probe.test.d.ts.map +1 -0
  53. package/dist/dreamspace_probe/dreamspace_probe.test.js +179 -0
  54. package/dist/dreamspace_probe/dreamspace_probe.test.js.map +1 -0
  55. package/dist/dreamspace_probe/index.d.ts +125 -0
  56. package/dist/dreamspace_probe/index.d.ts.map +1 -0
  57. package/dist/dreamspace_probe/index.js +226 -0
  58. package/dist/dreamspace_probe/index.js.map +1 -0
  59. package/dist/index.d.ts +6 -0
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +8 -0
  62. package/dist/index.js.map +1 -1
  63. package/dist/whats_new.d.ts.map +1 -1
  64. package/dist/whats_new.js +16 -0
  65. package/dist/whats_new.js.map +1 -1
  66. package/dist/wrapper_genesis/index.d.ts.map +1 -1
  67. package/dist/wrapper_genesis/index.js +37 -0
  68. package/dist/wrapper_genesis/index.js.map +1 -1
  69. package/package.json +1 -1
@@ -0,0 +1,209 @@
1
+ /**
2
+ * v2.19.27 — MNEME DREAMSPACE · FEDERATE (stage 6 of 6)
3
+ *
4
+ * "tools ที่ elite ใน 100+ instances → 'blessed'
5
+ * shared via cosmic.mneme-ai.space/dreamspace
6
+ * ผู้ใช้ใหม่ download starter pack จาก top 100 dreamt-born tools
7
+ * ⇒ Mneme network effect ที่ไม่มี framework ไหนมี"
8
+ * — user audit, 2026-05-17
9
+ *
10
+ * Diagnosis: GESTATION proposes; EVOLUTION selects; PROBE measures;
11
+ * CARTOGRAPHER maps; PAIR scores complementarity. All locally. The
12
+ * network effect kicks in when ELITE tools spread across instances.
13
+ *
14
+ * FEDERATE composes onto v2.19.16 FEDERATED TRUTH GRAVITY. Each
15
+ * instance HMAC-signs an EliteAttestation for tools whose local
16
+ * fitness >= threshold. Quorum across instances → "blessed" tag.
17
+ * Starter pack export = top-N blessed tools, downloadable by new
18
+ * users.
19
+ *
20
+ * Composes onto:
21
+ * - v2.19.16 FEDERATED TRUTH GRAVITY (cross-attestation pattern)
22
+ * - v2.19.27 PROBE (local fitness source)
23
+ * - v2.19.26 EVOLUTION (lifecycle bands; only MATURE eligible)
24
+ * - v2.19.9 WRAPPER_GENESPLICING (blessed tools = composer recipes
25
+ * that any instance can apply)
26
+ *
27
+ * Honest scope:
28
+ * - PURE FUNCTION attestation + quorum. Caller does the actual
29
+ * network sync via v2.19.16 mesh/nexus transport.
30
+ * - Eligibility gate: only MATURE tools (v2.19.26 EVOLUTION) with
31
+ * local fitness >= threshold get attested.
32
+ * - HMAC-signed attestations; forged attestations dropped on verify.
33
+ * - Quorum bands match v2.19.16: unanimous / supermajority / majority
34
+ * / minority / conflict / orphan.
35
+ */
36
+ import { createHmac, timingSafeEqual } from "node:crypto";
37
+ const PROTOCOL_VERSION = 1;
38
+ const DEFAULT_MIN_FITNESS = 0.7;
39
+ function canon(v) {
40
+ if (v === null || typeof v !== "object")
41
+ return JSON.stringify(v);
42
+ if (Array.isArray(v))
43
+ return "[" + v.map(canon).join(",") + "]";
44
+ const keys = Object.keys(v).sort();
45
+ return "{" + keys.map((k) => JSON.stringify(k) + ":" + canon(v[k])).join(",") + "}";
46
+ }
47
+ function defaultSecret() {
48
+ return process.env["MNEME_DREAMSPACE_FEDERATE_SECRET"] || `mneme-dreamspace-federate-v${PROTOCOL_VERSION}`;
49
+ }
50
+ function hmacHex(body, secret) {
51
+ return createHmac("sha256", secret).update(canon(body)).digest("hex");
52
+ }
53
+ function safeEqHex(a, b) {
54
+ try {
55
+ return timingSafeEqual(Buffer.from(a, "hex"), Buffer.from(b, "hex"));
56
+ }
57
+ catch {
58
+ return false;
59
+ }
60
+ }
61
+ /**
62
+ * Issue an EliteAttestation for a tool. Refuses if fitness < threshold
63
+ * (we never attest mediocre tools). Caller-supplied instanceId from
64
+ * v2.19.16 FEDERATED identity.
65
+ */
66
+ export function attestElite(input) {
67
+ const min = input.minFitness ?? DEFAULT_MIN_FITNESS;
68
+ if (input.localFitness < min)
69
+ return null;
70
+ const body = {
71
+ v: PROTOCOL_VERSION,
72
+ instanceId: input.instanceId,
73
+ toolName: input.toolName,
74
+ localFitness: input.localFitness,
75
+ localUseCount: input.localUseCount,
76
+ ts: input.ts ?? Date.now(),
77
+ };
78
+ const sig = hmacHex(body, input.secret ?? defaultSecret());
79
+ return { ...body, sig };
80
+ }
81
+ export function verifyAttestation(a, secret) {
82
+ const { sig, ...body } = a;
83
+ return safeEqHex(hmacHex(body, secret ?? defaultSecret()), sig);
84
+ }
85
+ /**
86
+ * Aggregate N attestations for a single tool into a BlessingQuorum.
87
+ *
88
+ * Bands (proportions of validAttestations / totalInstances):
89
+ * unanimous : >= 0.95
90
+ * supermajority : >= 0.67
91
+ * majority : >= 0.51
92
+ * minority : >= 0.10
93
+ * conflict : > 0 and < 0.10
94
+ * orphan : 0 attestations
95
+ *
96
+ * Forged attestations (failed HMAC verify) are dropped silently and
97
+ * counted in `forgedDropped`. One-vote-per-instance: duplicates from
98
+ * same instanceId keep the latest by ts.
99
+ */
100
+ export function aggregateBlessing(input) {
101
+ const sec = input.secret ?? defaultSecret();
102
+ // Drop forged
103
+ const valid = [];
104
+ let forgedDropped = 0;
105
+ for (const a of input.attestations) {
106
+ if (a.toolName !== input.toolName)
107
+ continue;
108
+ if (!verifyAttestation(a, sec)) {
109
+ forgedDropped++;
110
+ continue;
111
+ }
112
+ valid.push(a);
113
+ }
114
+ // One-vote-per-instance: keep latest ts
115
+ const byInstance = new Map();
116
+ for (const a of valid) {
117
+ const prev = byInstance.get(a.instanceId);
118
+ if (!prev || a.ts > prev.ts)
119
+ byInstance.set(a.instanceId, a);
120
+ }
121
+ const deduped = Array.from(byInstance.values());
122
+ const totalUseCount = deduped.reduce((s, a) => s + a.localUseCount, 0);
123
+ const meanFitness = deduped.length === 0
124
+ ? 0
125
+ : deduped.reduce((s, a) => s + a.localFitness, 0) / deduped.length;
126
+ const proportion = input.totalInstancesKnown === 0
127
+ ? 0
128
+ : deduped.length / input.totalInstancesKnown;
129
+ let band;
130
+ if (deduped.length === 0)
131
+ band = "orphan";
132
+ else if (proportion >= 0.95)
133
+ band = "unanimous";
134
+ else if (proportion >= 0.67)
135
+ band = "supermajority";
136
+ else if (proportion >= 0.51)
137
+ band = "majority";
138
+ else if (proportion >= 0.10)
139
+ band = "minority";
140
+ else
141
+ band = "conflict";
142
+ const isBlessed = band === "unanimous" || band === "supermajority";
143
+ const body = {
144
+ v: PROTOCOL_VERSION,
145
+ toolName: input.toolName,
146
+ totalAttestations: input.attestations.length,
147
+ validAttestations: deduped.length,
148
+ forgedDropped,
149
+ meanFitness,
150
+ totalUseCount,
151
+ band,
152
+ isBlessed,
153
+ };
154
+ const sig = hmacHex(body, sec);
155
+ return { ...body, sig };
156
+ }
157
+ export function verifyBlessingQuorum(q, secret) {
158
+ const { sig, ...body } = q;
159
+ return safeEqHex(hmacHex(body, secret ?? defaultSecret()), sig);
160
+ }
161
+ /**
162
+ * Export a starter pack of top-N blessed tools — downloaded by new
163
+ * users on first install. Sorted by isBlessed first, then meanFitness
164
+ * desc, then validAttestations desc.
165
+ */
166
+ export function exportStarterPack(input) {
167
+ const topN = input.topN ?? 100;
168
+ const sorted = [...input.quorums].sort((a, b) => {
169
+ if (a.isBlessed !== b.isBlessed)
170
+ return a.isBlessed ? -1 : 1;
171
+ if (b.meanFitness !== a.meanFitness)
172
+ return b.meanFitness - a.meanFitness;
173
+ return b.validAttestations - a.validAttestations;
174
+ });
175
+ const entries = sorted.slice(0, topN).map((q) => ({
176
+ toolName: q.toolName,
177
+ band: q.band,
178
+ meanFitness: q.meanFitness,
179
+ attestationCount: q.validAttestations,
180
+ }));
181
+ const body = {
182
+ v: PROTOCOL_VERSION,
183
+ entries,
184
+ topN,
185
+ builtAt: input.builtAt ?? Date.now(),
186
+ };
187
+ const sig = hmacHex(body, input.secret ?? defaultSecret());
188
+ return { ...body, sig };
189
+ }
190
+ export function verifyStarterPack(p, secret) {
191
+ const { sig, ...body } = p;
192
+ return safeEqHex(hmacHex(body, secret ?? defaultSecret()), sig);
193
+ }
194
+ export const BLESSING_EMOJI = {
195
+ unanimous: "🏆",
196
+ supermajority: "🥇",
197
+ majority: "🥈",
198
+ minority: "🥉",
199
+ conflict: "⚖",
200
+ orphan: "🌌",
201
+ };
202
+ export function formatQuorumLine(q) {
203
+ return `${BLESSING_EMOJI[q.band]} FEDERATE ${q.toolName} · ${q.band} (${q.validAttestations}/${q.validAttestations + q.forgedDropped} valid · meanFit=${(q.meanFitness * 100).toFixed(0)}%)`;
204
+ }
205
+ export function formatStarterPackLine(p) {
206
+ const blessed = p.entries.filter((e) => e.band === "unanimous" || e.band === "supermajority").length;
207
+ return `🌍 STARTER-PACK · top-${p.topN} · ${p.entries.length} total · ${blessed} blessed`;
208
+ }
209
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dreamspace_federate/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dreamspace_gestation.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dreamspace_gestation.test.d.ts","sourceRoot":"","sources":["../../src/dreamspace_gestation/dreamspace_gestation.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,160 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { detectToolGaps, proposeToolSpec, verifyProposal, runGestationCycle, verifyGestationReport, formatProposalLine, } from "./index.js";
3
+ const SECRET = "gestation-test-secret-997744";
4
+ function sig(kind, label, relatedTools, count, ts = 1) {
5
+ return { v: 1, kind, label, relatedTools, count, ts };
6
+ }
7
+ describe("v2.19.26 GESTATION · detectToolGaps", () => {
8
+ it("filters below-threshold signals (default minGapCount=3)", () => {
9
+ const out = detectToolGaps({
10
+ signals: [
11
+ sig("reflex_cache_miss", "x", [], 2), // below threshold
12
+ sig("reflex_cache_miss", "y", [], 5), // above
13
+ ],
14
+ });
15
+ expect(out.length).toBe(1);
16
+ expect(out[0].label).toBe("y");
17
+ });
18
+ it("co-occurrence has higher threshold (default minCoOccurCount=4)", () => {
19
+ const out = detectToolGaps({
20
+ signals: [
21
+ sig("pattern_co_occurrence", "x", ["a", "b"], 3), // below co-threshold
22
+ sig("pattern_co_occurrence", "y", ["a", "b"], 5), // above
23
+ ],
24
+ });
25
+ expect(out.length).toBe(1);
26
+ expect(out[0].label).toBe("y");
27
+ });
28
+ it("sorts by count desc, then label asc", () => {
29
+ const out = detectToolGaps({
30
+ signals: [
31
+ sig("reflex_cache_miss", "b", [], 5),
32
+ sig("reflex_cache_miss", "a", [], 5),
33
+ sig("reflex_cache_miss", "c", [], 10),
34
+ ],
35
+ });
36
+ expect(out.map((g) => g.label)).toEqual(["c", "a", "b"]);
37
+ });
38
+ });
39
+ describe("v2.19.26 GESTATION · proposeToolSpec (3 gap kinds)", () => {
40
+ it("pattern_co_occurrence -> mneme.auto.X_then_Y chimera", () => {
41
+ const spec = proposeToolSpec({
42
+ gap: sig("pattern_co_occurrence", "git_commit:fix-prefix", ["mneme.ask", "mneme.why"], 6),
43
+ secret: SECRET,
44
+ });
45
+ expect(spec.proposedName).toBe("mneme.auto.ask_then_why");
46
+ expect(spec.composerKind).toBe("sequential");
47
+ expect(spec.composerRecipe.length).toBe(2);
48
+ expect(spec.composerRecipe[0].toolName).toBe("mneme.ask");
49
+ expect(spec.composerRecipe[1].toolName).toBe("mneme.why");
50
+ });
51
+ it("reflex_cache_miss with related tools -> handler chimera", () => {
52
+ const spec = proposeToolSpec({
53
+ gap: sig("reflex_cache_miss", "user_chat:thai-refresh", ["mneme.status", "mneme.whats_new"], 4),
54
+ secret: SECRET,
55
+ });
56
+ expect(spec.proposedName).toContain("mneme.auto.handle_");
57
+ expect(spec.composerRecipe.length).toBe(2);
58
+ });
59
+ it("reflex_cache_miss with NO related tools -> smart_do fallback", () => {
60
+ const spec = proposeToolSpec({
61
+ gap: sig("reflex_cache_miss", "unknown:x", [], 4),
62
+ secret: SECRET,
63
+ });
64
+ expect(spec.composerRecipe[0].toolName).toBe("mneme.smart_do");
65
+ });
66
+ it("user_chat_no_match -> intent handler with query schema", () => {
67
+ const spec = proposeToolSpec({
68
+ gap: sig("user_chat_no_match", "compress yesterday's commits", [], 5),
69
+ secret: SECRET,
70
+ });
71
+ expect(spec.proposedName).toContain("mneme.auto.intent_");
72
+ expect(spec.proposedInputSchema.required).toContain("query");
73
+ });
74
+ it("confidence scales with gap count (capped at 1.0)", () => {
75
+ const low = proposeToolSpec({ gap: sig("reflex_cache_miss", "x", [], 3), secret: SECRET, minGapCount: 3 });
76
+ const high = proposeToolSpec({ gap: sig("reflex_cache_miss", "x", [], 30), secret: SECRET, minGapCount: 3 });
77
+ expect(high.confidence).toBeGreaterThan(low.confidence);
78
+ expect(high.confidence).toBeLessThanOrEqual(1);
79
+ });
80
+ it("HMAC sig verifies untampered; rejects tamper", () => {
81
+ const spec = proposeToolSpec({ gap: sig("reflex_cache_miss", "x", [], 5), secret: SECRET });
82
+ expect(verifyProposal(spec, SECRET)).toBe(true);
83
+ expect(verifyProposal({ ...spec, confidence: 0.99 }, SECRET)).toBe(false);
84
+ });
85
+ it("MEASURED 100% determinism: same gap -> same proposal sig (30 trials)", () => {
86
+ const gap = sig("pattern_co_occurrence", "stable", ["mneme.ask", "mneme.why"], 8, 1_000_000);
87
+ const firstSig = proposeToolSpec({ gap, secret: SECRET }).sig;
88
+ let allEqual = true;
89
+ for (let i = 0; i < 30; i++) {
90
+ if (proposeToolSpec({ gap, secret: SECRET }).sig !== firstSig) {
91
+ allEqual = false;
92
+ break;
93
+ }
94
+ }
95
+ expect(allEqual).toBe(true);
96
+ });
97
+ });
98
+ describe("v2.19.26 GESTATION · runGestationCycle (full loop)", () => {
99
+ it("empty signals -> empty proposals", () => {
100
+ const r = runGestationCycle({ signals: [], cycleAt: 0, secret: SECRET });
101
+ expect(r.qualifyingGaps).toBe(0);
102
+ expect(r.proposals).toEqual([]);
103
+ });
104
+ it("mixed signals: only above-threshold yield proposals", () => {
105
+ const r = runGestationCycle({
106
+ signals: [
107
+ sig("reflex_cache_miss", "x", [], 2), // below
108
+ sig("reflex_cache_miss", "y", [], 5), // qualifies
109
+ sig("pattern_co_occurrence", "z", ["mneme.a", "mneme.b"], 4), // qualifies (co threshold 4)
110
+ sig("user_chat_no_match", "?", [], 1), // below
111
+ ],
112
+ cycleAt: 0,
113
+ secret: SECRET,
114
+ });
115
+ expect(r.totalSignals).toBe(4);
116
+ expect(r.qualifyingGaps).toBe(2);
117
+ expect(r.proposals.length).toBe(2);
118
+ });
119
+ it("HMAC sig verifies untampered; rejects tamper", () => {
120
+ const r = runGestationCycle({
121
+ signals: [sig("reflex_cache_miss", "x", [], 5)],
122
+ cycleAt: 0,
123
+ secret: SECRET,
124
+ });
125
+ expect(verifyGestationReport(r, SECRET)).toBe(true);
126
+ expect(verifyGestationReport({ ...r, totalSignals: 999 }, SECRET)).toBe(false);
127
+ });
128
+ it("MEASURED 100% determinism: same signals -> same report sig (30 trials)", () => {
129
+ const input = {
130
+ signals: [
131
+ sig("reflex_cache_miss", "x", [], 5, 1),
132
+ sig("pattern_co_occurrence", "y", ["mneme.a", "mneme.b"], 6, 2),
133
+ ],
134
+ cycleAt: 1_000_000,
135
+ secret: SECRET,
136
+ };
137
+ const first = runGestationCycle(input).sig;
138
+ let allEqual = true;
139
+ for (let i = 0; i < 30; i++) {
140
+ if (runGestationCycle(input).sig !== first) {
141
+ allEqual = false;
142
+ break;
143
+ }
144
+ }
145
+ expect(allEqual).toBe(true);
146
+ });
147
+ });
148
+ describe("v2.19.26 GESTATION · formatter", () => {
149
+ it("formatProposalLine includes name + step count + confidence + gap kind", () => {
150
+ const spec = proposeToolSpec({
151
+ gap: sig("pattern_co_occurrence", "x", ["mneme.a", "mneme.b"], 10),
152
+ secret: SECRET,
153
+ });
154
+ const line = formatProposalLine(spec);
155
+ expect(line).toContain("mneme.auto");
156
+ expect(line).toContain("2-step");
157
+ expect(line).toContain("sequential");
158
+ });
159
+ });
160
+ //# sourceMappingURL=dreamspace_gestation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dreamspace_gestation.test.js","sourceRoot":"","sources":["../../src/dreamspace_gestation/dreamspace_gestation.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,GAEnB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,GAAG,8BAA8B,CAAC;AAE9C,SAAS,GAAG,CAAC,IAAuB,EAAE,KAAa,EAAE,YAAsB,EAAE,KAAa,EAAE,EAAE,GAAG,CAAC;IAChG,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACxD,CAAC;AAED,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,GAAG,GAAG,cAAc,CAAC;YACzB,OAAO,EAAE;gBACP,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAG,kBAAkB;gBACzD,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAG,QAAQ;aAChD;SACF,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,GAAG,GAAG,cAAc,CAAC;YACzB,OAAO,EAAE;gBACP,GAAG,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAG,qBAAqB;gBACxE,GAAG,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAG,QAAQ;aAC5D;SACF,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,GAAG,GAAG,cAAc,CAAC;YACzB,OAAO,EAAE;gBACP,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;gBACpC,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;gBACpC,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;aACtC;SACF,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAClE,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,GAAG,EAAE,GAAG,CAAC,uBAAuB,EAAE,uBAAuB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;YACzF,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,GAAG,EAAE,GAAG,CAAC,mBAAmB,EAAE,wBAAwB,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAC/F,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,GAAG,EAAE,GAAG,CAAC,mBAAmB,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;YACjD,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,GAAG,EAAE,GAAG,CAAC,oBAAoB,EAAE,8BAA8B,EAAE,EAAE,EAAE,CAAC,CAAC;YACrE,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,GAAG,GAAG,eAAe,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3G,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7G,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5F,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,GAAG,GAAG,GAAG,CAAC,uBAAuB,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QAC7F,MAAM,QAAQ,GAAG,eAAe,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC;QAC9D,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAAC,QAAQ,GAAG,KAAK,CAAC;gBAAC,MAAM;YAAC,CAAC;QAC7F,CAAC;QACD,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAClE,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACzE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,GAAG,iBAAiB,CAAC;YAC1B,OAAO,EAAE;gBACP,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAA+B,QAAQ;gBAC3E,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAA+B,YAAY;gBAC/E,GAAG,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,EAAO,6BAA6B;gBAChG,GAAG,CAAC,oBAAoB,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAA8B,QAAQ;aAC5E;YACD,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,GAAG,iBAAiB,CAAC;YAC1B,OAAO,EAAE,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC/C,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,MAAM,CAAC,qBAAqB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,qBAAqB,CAAC,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,KAAK,GAAG;YACZ,OAAO,EAAE;gBACP,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;gBACvC,GAAG,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;aAChE;YACD,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,MAAM;SACf,CAAC;QACF,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;QAC3C,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;gBAAC,QAAQ,GAAG,KAAK,CAAC;gBAAC,MAAM;YAAC,CAAC;QAC1E,CAAC;QACD,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,GAAG,EAAE,GAAG,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC;YAClE,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * v2.19.26 — MNEME DREAMSPACE · GESTATION (self-authoring MCP catalog · phase 1 of 2)
3
+ *
4
+ * "Catalog ตัวมัน static — ไม่งอก ไม่ตาย ไม่จับคู่ ไม่เรียนรู้ที่จะ
5
+ * author tool ใหม่. นั่นคือ gap ของกระบวนการ 'ของเดิม + ของใหม่ +
6
+ * การเลือก' — ที่ DREAMS ปัจจุบันยังตอบไม่ได้"
7
+ * — user audit, 2026-05-17
8
+ *
9
+ * Diagnosis: every prior dreams primitive (vaccine_cycle, dream.run,
10
+ * dreams.enqueue/resolve) is a PRODUCT factory — it manufactures
11
+ * one specific artifact (vaccine / claim / verdict). GESTATION is
12
+ * a TOOL factory — it watches for catalog gaps + proposes the
13
+ * composer recipe for a brand-new MCP tool that closes the gap.
14
+ *
15
+ * Three gap classes detected from caller-supplied signals:
16
+ * 1. REFLEX cache miss — user (or AI) tried an event that
17
+ * had no cached prediction; nothing fired. Gap = no pattern
18
+ * matched this event signature.
19
+ * 2. user_chat no-match — user typed a request; EVENT PATTERN
20
+ * MATCH returned zero predictions. Gap = no semantic rule
21
+ * recognised this phrase.
22
+ * 3. pattern co-occurrence — two tools always fire together in
23
+ * sequence (e.g., mneme.ask then mneme.why). Gap = no single
24
+ * composed tool does both — opportunity for chimera.
25
+ *
26
+ * For each gap, propose a ProposedToolSpec with deterministic name,
27
+ * description (from the originating signal), composer recipe (list
28
+ * of existing tools to chain), and a JSON inputSchema derived as the
29
+ * intersection of the composed tools' input schemas. Caller (daemon)
30
+ * feeds the spec to v2.19.9 WRAPPER_GENESPLICING `splice` to actually
31
+ * create the runtime chimera; this module is the PROPOSER, not the
32
+ * executor.
33
+ *
34
+ * Composes onto:
35
+ * - v2.19.9 WRAPPER_GENESPLICING (real splice surface)
36
+ * - v2.19.11 MORTAL (TTL for proposed tools)
37
+ * - v2.19.22 REFLEX (cache miss signal)
38
+ * - v2.19.24 EVENT PATTERN MATCH (no-match signal)
39
+ * - v2.19.25 SLEEP TRAINING (fitness gradient feeds promotion)
40
+ *
41
+ * Honest scope:
42
+ * - PURE FUNCTION proposer; HMAC-signed proposals so daemon can
43
+ * audit forged specs.
44
+ * - Composer recipes are SEQUENCES (Tool_A then Tool_B); we don't
45
+ * synthesise parallelisable or conditional graphs. v2.19.9 supports
46
+ * sequential/fan_out/first_success — we emit "sequential" only.
47
+ * - Names use deterministic snake_case to avoid collisions:
48
+ * `mneme.auto.<tool1>_then_<tool2>`. Caller can rename on promote.
49
+ * - We do NOT execute or load code. Daemon picks specs to promote
50
+ * based on usage telemetry from v2.19.26 EVOLUTION.
51
+ */
52
+ declare const PROTOCOL_VERSION: 1;
53
+ export type GapKind = "reflex_cache_miss" | "user_chat_no_match" | "pattern_co_occurrence";
54
+ export interface GapSignal {
55
+ v: typeof PROTOCOL_VERSION;
56
+ kind: GapKind;
57
+ /** Human label (e.g., "git_commit:fix-prefix" / "user_chat:thai-รีเฟรช"). */
58
+ label: string;
59
+ /** Tool names already known to be relevant (empty for no_match). */
60
+ relatedTools: string[];
61
+ /** How many times this gap was observed yesterday. */
62
+ count: number;
63
+ ts: number;
64
+ }
65
+ export interface ProposedToolSpec {
66
+ v: typeof PROTOCOL_VERSION;
67
+ /** Deterministic name; daemon can rename on promote. */
68
+ proposedName: string;
69
+ /** Why this tool exists; derived from the originating signal. */
70
+ description: string;
71
+ /** Ordered list of EXISTING tools the chimera invokes. */
72
+ composerRecipe: Array<{
73
+ toolName: string;
74
+ argsPassthrough?: boolean;
75
+ }>;
76
+ /** Composer kind for v2.19.9 splice (always "sequential" for now). */
77
+ composerKind: "sequential" | "fan_out" | "first_success";
78
+ /** JSON Schema of the chimera's input (union of component inputs). */
79
+ proposedInputSchema: {
80
+ type: "object";
81
+ properties: Record<string, unknown>;
82
+ required: string[];
83
+ };
84
+ /** Source gap signal that triggered this proposal. */
85
+ sourceGap: GapSignal;
86
+ /** Confidence 0..1 — based on signal count vs threshold. */
87
+ confidence: number;
88
+ sig: string;
89
+ }
90
+ /**
91
+ * Filter gap signals down to those above the minimum-count threshold.
92
+ * Below-threshold signals are noise; above-threshold signals are real
93
+ * gaps worth proposing a tool for.
94
+ */
95
+ export declare function detectToolGaps(input: {
96
+ signals: GapSignal[];
97
+ minGapCount?: number;
98
+ minCoOccurCount?: number;
99
+ }): GapSignal[];
100
+ /**
101
+ * Propose a tool spec from a single gap signal. Pure function;
102
+ * deterministic over (signal + secret). The composer recipe defaults
103
+ * to sequential chaining of the related tools; for no-match gaps with
104
+ * empty relatedTools, the recipe is just `mneme.smart_do` as a fallback
105
+ * so caller has SOMETHING to splice.
106
+ */
107
+ export declare function proposeToolSpec(input: {
108
+ gap: GapSignal;
109
+ secret?: string;
110
+ minGapCount?: number;
111
+ }): ProposedToolSpec;
112
+ export declare function verifyProposal(spec: ProposedToolSpec, secret?: string): boolean;
113
+ export interface GestationReport {
114
+ v: typeof PROTOCOL_VERSION;
115
+ totalSignals: number;
116
+ qualifyingGaps: number;
117
+ proposals: ProposedToolSpec[];
118
+ cycleAt: number;
119
+ sig: string;
120
+ }
121
+ /**
122
+ * One-shot gestation cycle: filter signals → propose specs → HMAC-sign
123
+ * the whole report. Caller runs this during the daemon's idle/dream
124
+ * window (composes onto v2.19.23 THALAMUS dream tier).
125
+ */
126
+ export declare function runGestationCycle(input: {
127
+ signals: GapSignal[];
128
+ cycleAt?: number;
129
+ minGapCount?: number;
130
+ minCoOccurCount?: number;
131
+ secret?: string;
132
+ }): GestationReport;
133
+ export declare function verifyGestationReport(r: GestationReport, secret?: string): boolean;
134
+ export declare function formatProposalLine(p: ProposedToolSpec): string;
135
+ export {};
136
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dreamspace_gestation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAIH,QAAA,MAAM,gBAAgB,EAAG,CAAU,CAAC;AAIpC,MAAM,MAAM,OAAO,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,uBAAuB,CAAC;AAE3F,MAAM,WAAW,SAAS;IACxB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3B,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,cAAc,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACvE,sEAAsE;IACtE,YAAY,EAAE,YAAY,GAAG,SAAS,GAAG,eAAe,CAAC;IACzD,sEAAsE;IACtE,mBAAmB,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACjG,sDAAsD;IACtD,SAAS,EAAE,SAAS,CAAC;IACrB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AA0BD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,SAAS,EAAE,CAUd;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,gBAAgB,CAgDlH;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAG/E;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,eAAe,CAgBlB;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAGlF;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAG9D"}