memo-grafter 0.2.8 → 0.3.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 (192) hide show
  1. package/README.md +26 -0
  2. package/USER_GUIDE.md +109 -9
  3. package/dist/MemoGrafter.d.ts +1 -0
  4. package/dist/MemoGrafter.d.ts.map +1 -1
  5. package/dist/MemoGrafter.js +18 -4
  6. package/dist/MemoGrafter.js.map +1 -1
  7. package/dist/adapters/AnthropicAdapter.d.ts +1 -1
  8. package/dist/adapters/AnthropicAdapter.d.ts.map +1 -1
  9. package/dist/adapters/GeminiAdapter.d.ts +1 -1
  10. package/dist/adapters/GeminiAdapter.d.ts.map +1 -1
  11. package/dist/adapters/OpenAIAdapter.d.ts +1 -1
  12. package/dist/adapters/OpenAIAdapter.d.ts.map +1 -1
  13. package/dist/adapters/types.d.ts +1 -1
  14. package/dist/adapters/types.d.ts.map +1 -1
  15. package/dist/agents/MemoGrafterAgent.d.ts +45 -0
  16. package/dist/agents/MemoGrafterAgent.d.ts.map +1 -0
  17. package/dist/agents/MemoGrafterAgent.js +278 -0
  18. package/dist/agents/MemoGrafterAgent.js.map +1 -0
  19. package/dist/agents/fleet/ConductorAgent.d.ts +15 -0
  20. package/dist/agents/fleet/ConductorAgent.d.ts.map +1 -0
  21. package/dist/agents/fleet/ConductorAgent.js +41 -0
  22. package/dist/agents/fleet/ConductorAgent.js.map +1 -0
  23. package/dist/agents/fleet/FleetStore.d.ts +12 -0
  24. package/dist/agents/fleet/FleetStore.d.ts.map +1 -0
  25. package/dist/agents/fleet/FleetStore.js +30 -0
  26. package/dist/agents/fleet/FleetStore.js.map +1 -0
  27. package/dist/agents/fleet/MemoGrafterFleet.d.ts +27 -0
  28. package/dist/agents/fleet/MemoGrafterFleet.d.ts.map +1 -0
  29. package/dist/agents/fleet/MemoGrafterFleet.js +87 -0
  30. package/dist/agents/fleet/MemoGrafterFleet.js.map +1 -0
  31. package/dist/agents/fleet/WorkerAgent.d.ts +36 -0
  32. package/dist/agents/fleet/WorkerAgent.d.ts.map +1 -0
  33. package/dist/agents/fleet/WorkerAgent.js +140 -0
  34. package/dist/agents/fleet/WorkerAgent.js.map +1 -0
  35. package/dist/agents/fleet/types.d.ts +58 -0
  36. package/dist/agents/fleet/types.d.ts.map +1 -0
  37. package/dist/agents/fleet/types.js +2 -0
  38. package/dist/agents/fleet/types.js.map +1 -0
  39. package/dist/cli/commands/init.d.ts +8 -0
  40. package/dist/cli/commands/init.d.ts.map +1 -0
  41. package/dist/cli/commands/init.js +124 -0
  42. package/dist/cli/commands/init.js.map +1 -0
  43. package/dist/cli/commands/migrate.d.ts +6 -0
  44. package/dist/cli/commands/migrate.d.ts.map +1 -0
  45. package/dist/cli/commands/migrate.js +34 -0
  46. package/dist/cli/commands/migrate.js.map +1 -0
  47. package/dist/cli/index.d.ts +3 -0
  48. package/dist/cli/index.d.ts.map +1 -0
  49. package/dist/cli/index.js +39 -0
  50. package/dist/cli/index.js.map +1 -0
  51. package/dist/cli/utils/config.d.ts +11 -0
  52. package/dist/cli/utils/config.d.ts.map +1 -0
  53. package/dist/cli/utils/config.js +92 -0
  54. package/dist/cli/utils/config.js.map +1 -0
  55. package/dist/cli/utils/logger.d.ts +7 -0
  56. package/dist/cli/utils/logger.d.ts.map +1 -0
  57. package/dist/cli/utils/logger.js +15 -0
  58. package/dist/cli/utils/logger.js.map +1 -0
  59. package/dist/core/MemoGrafter.d.ts +46 -0
  60. package/dist/core/MemoGrafter.d.ts.map +1 -0
  61. package/dist/core/MemoGrafter.js +236 -0
  62. package/dist/core/MemoGrafter.js.map +1 -0
  63. package/dist/core/types.d.ts +319 -0
  64. package/dist/core/types.d.ts.map +1 -0
  65. package/dist/core/types.js +2 -0
  66. package/dist/core/types.js.map +1 -0
  67. package/dist/fleet/MemoGrafterFleet.d.ts +9 -2
  68. package/dist/fleet/MemoGrafterFleet.d.ts.map +1 -1
  69. package/dist/fleet/MemoGrafterFleet.js +39 -1
  70. package/dist/fleet/MemoGrafterFleet.js.map +1 -1
  71. package/dist/fleet/WorkerAgent.d.ts +9 -4
  72. package/dist/fleet/WorkerAgent.d.ts.map +1 -1
  73. package/dist/fleet/WorkerAgent.js +45 -3
  74. package/dist/fleet/WorkerAgent.js.map +1 -1
  75. package/dist/fleet/types.d.ts +21 -2
  76. package/dist/fleet/types.d.ts.map +1 -1
  77. package/dist/index.d.ts +13 -12
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +9 -9
  80. package/dist/index.js.map +1 -1
  81. package/dist/ingestion/IngestQueue.d.ts +17 -0
  82. package/dist/ingestion/IngestQueue.d.ts.map +1 -0
  83. package/dist/ingestion/IngestQueue.js +123 -0
  84. package/dist/ingestion/IngestQueue.js.map +1 -0
  85. package/dist/ingestion/conversation/IngestPipeline.d.ts +41 -0
  86. package/dist/ingestion/conversation/IngestPipeline.d.ts.map +1 -0
  87. package/dist/ingestion/conversation/IngestPipeline.js +189 -0
  88. package/dist/ingestion/conversation/IngestPipeline.js.map +1 -0
  89. package/dist/ingestion/conversation/SegmentProcessor.d.ts +20 -0
  90. package/dist/ingestion/conversation/SegmentProcessor.d.ts.map +1 -0
  91. package/dist/ingestion/conversation/SegmentProcessor.js +110 -0
  92. package/dist/ingestion/conversation/SegmentProcessor.js.map +1 -0
  93. package/dist/ingestion/conversation/TopicDriftDetector.d.ts +40 -0
  94. package/dist/ingestion/conversation/TopicDriftDetector.d.ts.map +1 -0
  95. package/dist/ingestion/conversation/TopicDriftDetector.js +222 -0
  96. package/dist/ingestion/conversation/TopicDriftDetector.js.map +1 -0
  97. package/dist/maintenance/ConflictDetectionPass.d.ts +6 -0
  98. package/dist/maintenance/ConflictDetectionPass.d.ts.map +1 -0
  99. package/dist/maintenance/ConflictDetectionPass.js +46 -0
  100. package/dist/maintenance/ConflictDetectionPass.js.map +1 -0
  101. package/dist/maintenance/DecayScoringPass.d.ts +17 -0
  102. package/dist/maintenance/DecayScoringPass.d.ts.map +1 -0
  103. package/dist/maintenance/DecayScoringPass.js +79 -0
  104. package/dist/maintenance/DecayScoringPass.js.map +1 -0
  105. package/dist/maintenance/MemoGrafterCrawler.d.ts +14 -0
  106. package/dist/maintenance/MemoGrafterCrawler.d.ts.map +1 -0
  107. package/dist/maintenance/MemoGrafterCrawler.js +108 -0
  108. package/dist/maintenance/MemoGrafterCrawler.js.map +1 -0
  109. package/dist/maintenance/VersioningPass.d.ts +6 -0
  110. package/dist/maintenance/VersioningPass.d.ts.map +1 -0
  111. package/dist/maintenance/VersioningPass.js +40 -0
  112. package/dist/maintenance/VersioningPass.js.map +1 -0
  113. package/dist/maintenance/decayScoring.d.ts +7 -0
  114. package/dist/maintenance/decayScoring.d.ts.map +1 -0
  115. package/dist/maintenance/decayScoring.js +9 -0
  116. package/dist/maintenance/decayScoring.js.map +1 -0
  117. package/dist/maintenance/index.d.ts +7 -0
  118. package/dist/maintenance/index.d.ts.map +1 -0
  119. package/dist/maintenance/index.js +5 -0
  120. package/dist/maintenance/index.js.map +1 -0
  121. package/dist/maintenance/memoryMaintenance.d.ts +23 -0
  122. package/dist/maintenance/memoryMaintenance.d.ts.map +1 -0
  123. package/dist/maintenance/memoryMaintenance.js +141 -0
  124. package/dist/maintenance/memoryMaintenance.js.map +1 -0
  125. package/dist/maintenance/types.d.ts +65 -0
  126. package/dist/maintenance/types.d.ts.map +1 -0
  127. package/dist/maintenance/types.js +2 -0
  128. package/dist/maintenance/types.js.map +1 -0
  129. package/dist/pipeline/GrafterPipeline.d.ts +2 -0
  130. package/dist/pipeline/GrafterPipeline.d.ts.map +1 -1
  131. package/dist/pipeline/GrafterPipeline.js +31 -10
  132. package/dist/pipeline/GrafterPipeline.js.map +1 -1
  133. package/dist/pipeline/RetrieverPipeline.d.ts +1 -0
  134. package/dist/pipeline/RetrieverPipeline.d.ts.map +1 -1
  135. package/dist/pipeline/RetrieverPipeline.js +14 -3
  136. package/dist/pipeline/RetrieverPipeline.js.map +1 -1
  137. package/dist/prompts/factRetrievalPrompt.d.ts +1 -1
  138. package/dist/prompts/factRetrievalPrompt.d.ts.map +1 -1
  139. package/dist/prompts/historyCompressionPrompt.d.ts +1 -1
  140. package/dist/prompts/historyCompressionPrompt.d.ts.map +1 -1
  141. package/dist/prompts/intentShiftPrompt.d.ts +1 -1
  142. package/dist/prompts/intentShiftPrompt.d.ts.map +1 -1
  143. package/dist/prompts/memoryInjectionPrompt.d.ts +1 -1
  144. package/dist/prompts/memoryInjectionPrompt.d.ts.map +1 -1
  145. package/dist/prompts/segmentExtractionPrompt.d.ts +1 -1
  146. package/dist/prompts/segmentExtractionPrompt.d.ts.map +1 -1
  147. package/dist/retrieval/GrafterPipeline.d.ts +26 -0
  148. package/dist/retrieval/GrafterPipeline.d.ts.map +1 -0
  149. package/dist/retrieval/GrafterPipeline.js +117 -0
  150. package/dist/retrieval/GrafterPipeline.js.map +1 -0
  151. package/dist/retrieval/RetrieverPipeline.d.ts +28 -0
  152. package/dist/retrieval/RetrieverPipeline.d.ts.map +1 -0
  153. package/dist/retrieval/RetrieverPipeline.js +160 -0
  154. package/dist/retrieval/RetrieverPipeline.js.map +1 -0
  155. package/dist/schema/builders.d.ts +40 -0
  156. package/dist/schema/builders.d.ts.map +1 -0
  157. package/dist/schema/builders.js +10 -0
  158. package/dist/schema/builders.js.map +1 -0
  159. package/dist/schema/index.d.ts +3 -0
  160. package/dist/schema/index.d.ts.map +1 -0
  161. package/dist/schema/index.js +3 -0
  162. package/dist/schema/index.js.map +1 -0
  163. package/dist/schema/mg-tables.d.ts +7 -0
  164. package/dist/schema/mg-tables.d.ts.map +1 -0
  165. package/dist/schema/mg-tables.js +180 -0
  166. package/dist/schema/mg-tables.js.map +1 -0
  167. package/dist/store/GraphStore.d.ts +12 -1
  168. package/dist/store/GraphStore.d.ts.map +1 -1
  169. package/dist/store/postgres-pgvector/GraphStore.d.ts +15 -1
  170. package/dist/store/postgres-pgvector/GraphStore.d.ts.map +1 -1
  171. package/dist/store/postgres-pgvector/GraphStore.js +120 -0
  172. package/dist/store/postgres-pgvector/GraphStore.js.map +1 -1
  173. package/dist/tsconfig.cli.tsbuildinfo +1 -0
  174. package/dist/types.d.ts +4 -0
  175. package/dist/types.d.ts.map +1 -1
  176. package/dist/utils/drift/adaptiveDriftSensitivity.d.ts +1 -1
  177. package/dist/utils/drift/adaptiveDriftSensitivity.d.ts.map +1 -1
  178. package/dist/utils/drift/driftScore.d.ts +1 -1
  179. package/dist/utils/drift/driftScore.d.ts.map +1 -1
  180. package/dist/utils/drift/driftThreshold.d.ts +1 -1
  181. package/dist/utils/drift/driftThreshold.d.ts.map +1 -1
  182. package/dist/utils/drift/reentryMatch.d.ts +1 -1
  183. package/dist/utils/drift/reentryMatch.d.ts.map +1 -1
  184. package/dist/utils/extraction/segmentExtraction.d.ts +1 -1
  185. package/dist/utils/extraction/segmentExtraction.d.ts.map +1 -1
  186. package/dist/utils/reentry/reentryEdges.d.ts +1 -1
  187. package/dist/utils/reentry/reentryEdges.d.ts.map +1 -1
  188. package/dist/utils/reentry/reentrySimilarity.d.ts +1 -1
  189. package/dist/utils/reentry/reentrySimilarity.d.ts.map +1 -1
  190. package/dist/utils/reentry/reentryText.d.ts +1 -1
  191. package/dist/utils/reentry/reentryText.d.ts.map +1 -1
  192. package/package.json +14 -1
@@ -0,0 +1,140 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { RetrieverPipeline } from "../../retrieval/RetrieverPipeline.js";
3
+ export class WorkerAgent {
4
+ core;
5
+ fleetId;
6
+ sharedSessionId;
7
+ agentId;
8
+ sessionId;
9
+ memory;
10
+ history = [];
11
+ color;
12
+ constructor(core, fleetId, sharedSessionId, config) {
13
+ this.core = core;
14
+ this.fleetId = fleetId;
15
+ this.sharedSessionId = sharedSessionId;
16
+ if (config.color === "conductor") {
17
+ throw new Error("Worker color 'conductor' is reserved.");
18
+ }
19
+ this.color = config.color;
20
+ this.agentId = config.id ?? randomUUID();
21
+ this.sessionId = config.sessionId ?? randomUUID();
22
+ this.memory = config.memory ?? "local";
23
+ }
24
+ getAgentId() {
25
+ return this.agentId;
26
+ }
27
+ getSessionId() {
28
+ return this.sessionId;
29
+ }
30
+ getColor() {
31
+ return this.color;
32
+ }
33
+ async invoke(userMessage) {
34
+ this.history.push({ role: "user", content: userMessage });
35
+ const { nodes } = await this.core.getTopics(this.sessionId);
36
+ const topicIds = nodes.map((node) => node.id);
37
+ const { systemPrompt } = await this.core.inject(this.sessionId, topicIds);
38
+ const memoryPrompt = await this.buildFleetMemoryContext(userMessage);
39
+ const combinedPrompt = [systemPrompt, memoryPrompt].filter(Boolean).join("\n\n");
40
+ const response = await this.core.llm.complete(this.history, combinedPrompt);
41
+ this.history.push({ role: "assistant", content: response });
42
+ await this.core.ingestNow(this.history, this.sessionId).catch((error) => {
43
+ console.warn("MemoGrafter worker ingest warning:", error);
44
+ });
45
+ await this.tagNodes().catch((error) => {
46
+ console.warn("MemoGrafter worker node tagging warning:", error);
47
+ });
48
+ return response;
49
+ }
50
+ getHistory() {
51
+ return [...this.history];
52
+ }
53
+ async getActiveNodes() {
54
+ const { nodes } = await this.core.getTopics(this.sessionId);
55
+ return nodes;
56
+ }
57
+ async getActiveSegments() {
58
+ const { segments } = await this.core.getTopics(this.sessionId);
59
+ return segments;
60
+ }
61
+ async graft(topicIds) {
62
+ const { nodes } = await this.core.getTopics(this.sessionId);
63
+ const selectedTopicIds = topicIds ?? nodes.map((node) => node.id);
64
+ return this.core.inject(this.sessionId, selectedTopicIds);
65
+ }
66
+ graftByRelevance(query, options = {}) {
67
+ const { memory: mode, ...graftOptions } = options;
68
+ return this.core.graftByRelevance(this.sessionId, query, {
69
+ ...graftOptions,
70
+ sessionIds: this.resolveMemorySessionIds(mode),
71
+ });
72
+ }
73
+ recall(query, options = {}) {
74
+ const { memory: mode, ...retrievalOptions } = options;
75
+ const pipeline = new RetrieverPipeline(this.core.store, this.core.embedder, {
76
+ ...retrievalOptions,
77
+ sessionIds: this.resolveMemorySessionIds(mode),
78
+ }, this.core.recallCache);
79
+ return pipeline.run(query, this.sessionId);
80
+ }
81
+ async ingestGraftedNodes(nodes) {
82
+ const copiedNodes = await this.core.store.absorbNodes(nodes, this.sessionId, {
83
+ fleetId: this.fleetId,
84
+ agentId: this.agentId,
85
+ agentColor: this.color,
86
+ });
87
+ await this.core.store.rebuildEdgesForSession(this.sessionId);
88
+ return copiedNodes;
89
+ }
90
+ async absorbFromWorker(sourceWorker, options = {}) {
91
+ const nodes = await this.selectNodesFromWorker(sourceWorker, options);
92
+ return this.ingestGraftedNodes(nodes);
93
+ }
94
+ async tagNodes() {
95
+ await this.core.store.tagSessionNodes(this.sessionId, {
96
+ fleetId: this.fleetId,
97
+ agentId: this.agentId,
98
+ agentColor: this.color,
99
+ });
100
+ }
101
+ async selectNodesFromWorker(sourceWorker, options) {
102
+ const sourceNodes = await sourceWorker.getActiveNodes();
103
+ if (options.topicIds && options.topicIds.length > 0) {
104
+ const topicIds = new Set(options.topicIds);
105
+ return sourceNodes.filter((node) => topicIds.has(node.id));
106
+ }
107
+ if (options.prompt) {
108
+ const embedding = await this.core.embedder.embed(options.prompt);
109
+ return this.core.store.getSimilarNodes(embedding, sourceWorker.getSessionId(), {
110
+ k: options.limit ?? 5,
111
+ minSimilarity: options.minSimilarity ?? 0.6,
112
+ });
113
+ }
114
+ return sourceNodes;
115
+ }
116
+ resolveMemorySessionIds(mode = this.memory) {
117
+ if (mode === "fleet")
118
+ return [this.sharedSessionId];
119
+ if (mode === "both")
120
+ return [this.sessionId, this.sharedSessionId];
121
+ return [this.sessionId];
122
+ }
123
+ async buildFleetMemoryContext(query) {
124
+ if (this.memory === "local")
125
+ return "";
126
+ try {
127
+ const result = await this.recall(query, {
128
+ memory: this.memory,
129
+ limit: 6,
130
+ minSimilarity: 0.55,
131
+ });
132
+ return result.facts.length > 0 ? result.systemPrompt : "";
133
+ }
134
+ catch (error) {
135
+ console.warn("MemoGrafter worker fleet recall warning:", error);
136
+ return "";
137
+ }
138
+ }
139
+ }
140
+ //# sourceMappingURL=WorkerAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerAgent.js","sourceRoot":"","sources":["../../../src/agents/fleet/WorkerAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type { AbsorbFromAgentOptions, GraftByRelevanceOptions, FleetMemoryMode, InjectionResult, IngestTextOptions, MemoryNode, MemoGrafterConfig, Message, RetrievalResult, RetrieverConfig, TopicNode, TopicSegment } from "../../core/types.js";
2
+ export interface FleetGraph {
3
+ id: string;
4
+ name?: string;
5
+ agents: FleetAgentInfo[];
6
+ }
7
+ export interface FleetAgentInfo {
8
+ id: string;
9
+ sessionId: string;
10
+ color: string;
11
+ }
12
+ export interface MemoGrafterFleetOptions {
13
+ id?: string;
14
+ name?: string;
15
+ defaultWorkerMemory?: FleetMemoryMode;
16
+ }
17
+ export interface WorkerAgentConfig {
18
+ color: string;
19
+ sessionId?: string;
20
+ id?: string;
21
+ memory?: FleetMemoryMode;
22
+ }
23
+ export interface FleetMemoryOptions extends IngestTextOptions {
24
+ tags?: string[];
25
+ replace?: boolean;
26
+ }
27
+ export interface SharedMemorySnapshot {
28
+ sessionId: string;
29
+ nodes: TopicNode[];
30
+ segments: TopicSegment[];
31
+ memories: MemoryNode[];
32
+ }
33
+ export interface FleetRetrievalOptions extends RetrieverConfig {
34
+ memory?: FleetMemoryMode;
35
+ }
36
+ export interface FleetGraftByRelevanceOptions extends GraftByRelevanceOptions {
37
+ memory?: FleetMemoryMode;
38
+ }
39
+ export interface ConductorGraftOptions {
40
+ topicIds?: string[];
41
+ prompt?: string;
42
+ minSimilarity?: number;
43
+ limit?: number;
44
+ }
45
+ export type FleetAbsorbOptions = AbsorbFromAgentOptions;
46
+ export interface FleetWorker {
47
+ getAgentId(): string;
48
+ getSessionId(): string;
49
+ getColor(): string;
50
+ invoke(userMessage: string): Promise<string>;
51
+ getHistory(): Message[];
52
+ getActiveNodes(): Promise<TopicNode[]>;
53
+ graft(topicIds?: string[]): Promise<InjectionResult>;
54
+ graftByRelevance(query: string, options?: FleetGraftByRelevanceOptions): Promise<InjectionResult>;
55
+ recall(query: string, options?: FleetRetrievalOptions): Promise<RetrievalResult>;
56
+ }
57
+ export type { MemoGrafterConfig };
58
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agents/fleet/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,OAAO,EACP,eAAe,EACf,eAAe,EACf,SAAS,EACT,YAAY,EACb,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,eAAe,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAC5D,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA6B,SAAQ,uBAAuB;IAC3E,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,UAAU,IAAI,MAAM,CAAC;IACrB,YAAY,IAAI,MAAM,CAAC;IACvB,QAAQ,IAAI,MAAM,CAAC;IACnB,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,UAAU,IAAI,OAAO,EAAE,CAAC;IACxB,cAAc,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACvC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACrD,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAClG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAClF;AAED,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/agents/fleet/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ export interface InitResult {
2
+ generated: string[];
3
+ created: string[];
4
+ skipped: string[];
5
+ updated: string[];
6
+ }
7
+ export declare function runInit(cwd?: string): Promise<InitResult>;
8
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../cli/commands/init.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,OAAO,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAyBtE"}
@@ -0,0 +1,124 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { logger } from "../utils/logger.js";
4
+ export async function runInit(cwd = process.cwd()) {
5
+ const result = {
6
+ generated: [],
7
+ created: [],
8
+ skipped: [],
9
+ updated: [],
10
+ };
11
+ const memoGrafterDir = path.join(cwd, "src", "memo-grafter");
12
+ mkdirSync(memoGrafterDir, { recursive: true });
13
+ writeFileSync(path.join(memoGrafterDir, "mg-schema.ts"), await renderMgSchema(), "utf8");
14
+ result.generated.push("src/memo-grafter/mg-schema.ts");
15
+ writeIfMissing(path.join(memoGrafterDir, "schema.ts"), renderSchemaTs(), "src/memo-grafter/schema.ts", result);
16
+ writeIfMissing(path.join(memoGrafterDir, "mg.config.ts"), renderConfigTs(), "src/memo-grafter/mg.config.ts", result);
17
+ ensureEnvExample(cwd, result);
18
+ logger.info("MemoGrafter project files initialized");
19
+ for (const file of result.generated)
20
+ logger.success(`${file} regenerated`);
21
+ for (const file of result.created)
22
+ logger.success(`${file} created`);
23
+ for (const file of result.updated)
24
+ logger.success(`${file} updated`);
25
+ for (const file of result.skipped)
26
+ logger.info(`- ${file} already exists, skipped`);
27
+ return result;
28
+ }
29
+ function writeIfMissing(filePath, content, label, result) {
30
+ if (existsSync(filePath)) {
31
+ result.skipped.push(label);
32
+ return;
33
+ }
34
+ writeFileSync(filePath, content, "utf8");
35
+ result.created.push(label);
36
+ }
37
+ function ensureEnvExample(cwd, result) {
38
+ const envExamplePath = path.join(cwd, ".env.example");
39
+ const databaseLine = "DATABASE_URL=postgres://user:password@localhost:5432/memo_grafter";
40
+ if (!existsSync(envExamplePath)) {
41
+ writeFileSync(envExamplePath, `${databaseLine}\n`, "utf8");
42
+ result.created.push(".env.example");
43
+ return;
44
+ }
45
+ const existing = readFileSync(envExamplePath, "utf8");
46
+ if (/^DATABASE_URL=/m.test(existing)) {
47
+ result.skipped.push(".env.example DATABASE_URL");
48
+ return;
49
+ }
50
+ const next = existing.endsWith("\n")
51
+ ? `${existing}${databaseLine}\n`
52
+ : `${existing}\n${databaseLine}\n`;
53
+ writeFileSync(envExamplePath, next, "utf8");
54
+ result.updated.push(".env.example");
55
+ }
56
+ async function renderMgSchema() {
57
+ const schema = await loadSchemaModule();
58
+ const tableBlocks = schema.memoGrafterTables.map((table) => {
59
+ const columns = table.columns.map((column) => ` ${column.name}: ${JSON.stringify(column)},`).join("\n");
60
+ const constraints = table.constraints
61
+ ? `,\n constraints: ${JSON.stringify(table.constraints)}`
62
+ : "";
63
+ return ` ${table.name}: {
64
+ name: "${table.name}",
65
+ description: "${table.description}",
66
+ columns: {
67
+ ${columns}
68
+ }${constraints}
69
+ },`;
70
+ }).join("\n");
71
+ return `// Auto-generated by memo-grafter init.
72
+ // Do not edit this file manually. Re-run \`npx memo-grafter init\` to regenerate it.
73
+
74
+ export const memoGrafterExtensions = ${JSON.stringify(schema.memoGrafterExtensions, null, 2)} as const;
75
+
76
+ export const memoGrafterTables = {
77
+ ${tableBlocks}
78
+ } as const;
79
+
80
+ export const memoGrafterIndexes = ${JSON.stringify(schema.memoGrafterIndexes, null, 2)} as const;
81
+ `;
82
+ }
83
+ async function loadSchemaModule() {
84
+ const packageName = "memo-grafter/schema";
85
+ return await import(packageName);
86
+ }
87
+ function renderSchemaTs() {
88
+ return `// Your application schema entrypoint.
89
+ //
90
+ // MemoGrafter owns and regenerates mg-schema.ts.
91
+ // This file is user-owned and will not be overwritten.
92
+ //
93
+ // Today, \`memo-grafter migrate\` manages only MemoGrafter \`mg_*\` tables.
94
+ // If you use Prisma, keep app models in prisma/schema.prisma.
95
+ // If you use another migration tool, keep using it for app tables.
96
+
97
+ export * from "./mg-schema.js";
98
+
99
+ /*
100
+ Example app table SQL for your own migration tool:
101
+
102
+ CREATE TABLE users (
103
+ id TEXT PRIMARY KEY,
104
+ email TEXT NOT NULL UNIQUE,
105
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
106
+ );
107
+ */
108
+ `;
109
+ }
110
+ function renderConfigTs() {
111
+ return `declare const process: {
112
+ env: {
113
+ DATABASE_URL?: string;
114
+ };
115
+ };
116
+
117
+ export default {
118
+ db: {
119
+ connectionString: process.env.DATABASE_URL,
120
+ },
121
+ };
122
+ `;
123
+ }
124
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface MigrateOptions {
2
+ cwd?: string;
3
+ db?: string;
4
+ }
5
+ export declare function runMigrate(options?: MigrateOptions): Promise<void>;
6
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../cli/commands/migrate.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,UAAU,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB5E"}
@@ -0,0 +1,34 @@
1
+ import { resolveConnectionString } from "../utils/config.js";
2
+ import { logger } from "../utils/logger.js";
3
+ export async function runMigrate(options = {}) {
4
+ const cwd = options.cwd ?? process.cwd();
5
+ const connectionString = await resolveConnectionString({
6
+ cwd,
7
+ ...(options.db ? { db: options.db } : {}),
8
+ });
9
+ const { PostgresGraphStore } = await loadMemoGrafterModule();
10
+ const store = new PostgresGraphStore(connectionString);
11
+ try {
12
+ logger.info("MemoGrafter migration started");
13
+ const report = await store.migrate();
14
+ printGroup("Extensions", report.extensions);
15
+ printGroup("Tables", report.tables);
16
+ printGroup("Indexes", report.indexes);
17
+ logger.info("Migration complete");
18
+ }
19
+ finally {
20
+ await store.close();
21
+ }
22
+ }
23
+ async function loadMemoGrafterModule() {
24
+ const packageName = "memo-grafter";
25
+ return await import(packageName);
26
+ }
27
+ function printGroup(title, items) {
28
+ logger.info("");
29
+ logger.info(title);
30
+ for (const item of items) {
31
+ logger.success(`${item.name} ${item.status}`);
32
+ }
33
+ }
34
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../cli/commands/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAsB5C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAA0B,EAAE;IAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,gBAAgB,GAAG,MAAM,uBAAuB,CAAC;QACrD,GAAG;QACH,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC,CAAC;IACH,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAC7D,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAEvD,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAErC,UAAU,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5C,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAEtC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACpC,CAAC;YAAS,CAAC;QACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB;IAClC,MAAM,WAAW,GAAG,cAAc,CAAC;IACnC,OAAO,MAAM,MAAM,CAAC,WAAW,CAAsB,CAAC;AACxD,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,KAA8C;IAC/E,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../cli/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env node
2
+ import { runInit } from "./commands/init.js";
3
+ import { runMigrate } from "./commands/migrate.js";
4
+ import { logger } from "./utils/logger.js";
5
+ const [, , command, ...args] = process.argv;
6
+ try {
7
+ if (command === "init") {
8
+ await runInit();
9
+ }
10
+ else if (command === "migrate") {
11
+ await runMigrate({ db: readFlag(args, "--db") });
12
+ }
13
+ else {
14
+ printHelp();
15
+ process.exitCode = command ? 1 : 0;
16
+ }
17
+ }
18
+ catch (error) {
19
+ logger.error(error instanceof Error ? error.message : String(error));
20
+ process.exitCode = 1;
21
+ }
22
+ function readFlag(args, flag) {
23
+ const equalsValue = args.find((arg) => arg.startsWith(`${flag}=`));
24
+ if (equalsValue)
25
+ return equalsValue.slice(flag.length + 1);
26
+ const index = args.indexOf(flag);
27
+ if (index >= 0)
28
+ return args[index + 1];
29
+ return undefined;
30
+ }
31
+ function printHelp() {
32
+ logger.info(`MemoGrafter CLI
33
+
34
+ Usage:
35
+ memo-grafter init
36
+ memo-grafter migrate [--db <connection-string>]
37
+ `);
38
+ }
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,CAAC,EAAE,AAAD,EAAG,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAE5C,IAAI,CAAC;IACH,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC;SAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,UAAU,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,QAAQ,CAAC,IAAc,EAAE,IAAY;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;IACnE,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE3D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAEvC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,CAAC,IAAI,CAAC;;;;;CAKb,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface MemoGrafterCliConfig {
2
+ db?: {
3
+ connectionString?: string;
4
+ };
5
+ }
6
+ export declare function loadConfig(cwd: string): Promise<MemoGrafterCliConfig | null>;
7
+ export declare function resolveConnectionString(options: {
8
+ cwd: string;
9
+ db?: string;
10
+ }): Promise<string>;
11
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../cli/utils/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACnC,EAAE,CAAC,EAAE;QACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAYlF;AAsBD,wBAAsB,uBAAuB,CAAC,OAAO,EAAE;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,OAAO,CAAC,MAAM,CAAC,CAYlB"}
@@ -0,0 +1,92 @@
1
+ import { pathToFileURL } from "node:url";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import path from "node:path";
4
+ export async function loadConfig(cwd) {
5
+ const configBasePaths = [
6
+ path.join(cwd, "src", "memo-grafter", "mg.config"),
7
+ path.join(cwd, "mg.config"),
8
+ ];
9
+ for (const configBasePath of configBasePaths) {
10
+ const config = await tryLoadConfig(configBasePath);
11
+ if (config)
12
+ return config;
13
+ }
14
+ return null;
15
+ }
16
+ async function tryLoadConfig(configBasePath) {
17
+ const jsConfigPath = `${configBasePath}.js`;
18
+ if (existsSync(jsConfigPath)) {
19
+ try {
20
+ const module = await import(pathToFileURL(jsConfigPath).href);
21
+ return (module.default ?? module);
22
+ }
23
+ catch (error) {
24
+ throw new Error(`Failed to load ${path.basename(jsConfigPath)}. ${error instanceof Error ? error.message : String(error)}`, { cause: error });
25
+ }
26
+ }
27
+ const tsConfigPath = `${configBasePath}.ts`;
28
+ if (!existsSync(tsConfigPath))
29
+ return null;
30
+ return parseTypeScriptConfig(readFileSync(tsConfigPath, "utf8"));
31
+ }
32
+ export async function resolveConnectionString(options) {
33
+ if (options.db)
34
+ return options.db;
35
+ loadEnvFile(options.cwd);
36
+ if (process.env.DATABASE_URL)
37
+ return process.env.DATABASE_URL;
38
+ const config = await loadConfig(options.cwd);
39
+ const configured = config?.db?.connectionString;
40
+ if (configured)
41
+ return configured;
42
+ throw new Error("No database connection string found. Pass --db, set DATABASE_URL, or configure db.connectionString in src/memo-grafter/mg.config.ts.");
43
+ }
44
+ function loadEnvFile(cwd) {
45
+ const envPath = path.join(cwd, ".env");
46
+ if (!existsSync(envPath))
47
+ return;
48
+ const lines = readFileSync(envPath, "utf8").split(/\r?\n/);
49
+ for (const line of lines) {
50
+ const trimmed = line.trim();
51
+ if (!trimmed || trimmed.startsWith("#"))
52
+ continue;
53
+ const equalsIndex = trimmed.indexOf("=");
54
+ if (equalsIndex < 1)
55
+ continue;
56
+ const key = trimmed.slice(0, equalsIndex).trim();
57
+ const rawValue = trimmed.slice(equalsIndex + 1).trim();
58
+ if (!key || process.env[key] !== undefined)
59
+ continue;
60
+ process.env[key] = stripEnvQuotes(rawValue);
61
+ }
62
+ }
63
+ function stripEnvQuotes(value) {
64
+ if ((value.startsWith('"') && value.endsWith('"'))
65
+ || (value.startsWith("'") && value.endsWith("'"))) {
66
+ return value.slice(1, -1);
67
+ }
68
+ return value;
69
+ }
70
+ function parseTypeScriptConfig(source) {
71
+ const envMatch = source.match(/connectionString\s*:\s*process\.env\.([A-Z0-9_]+)/);
72
+ if (envMatch?.[1]) {
73
+ const connectionString = process.env[envMatch[1]];
74
+ if (!connectionString)
75
+ return {};
76
+ return {
77
+ db: {
78
+ connectionString,
79
+ },
80
+ };
81
+ }
82
+ const literalMatch = source.match(/connectionString\s*:\s*["'`]([^"'`]+)["'`]/);
83
+ if (literalMatch?.[1]) {
84
+ return {
85
+ db: {
86
+ connectionString: literalMatch[1],
87
+ },
88
+ };
89
+ }
90
+ return {};
91
+ }
92
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../cli/utils/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare const logger: {
2
+ info(message: string): void;
3
+ success(message: string): void;
4
+ warn(message: string): void;
5
+ error(message: string): void;
6
+ };
7
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../cli/utils/logger.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;kBACH,MAAM,GAAG,IAAI;qBAGV,MAAM,GAAG,IAAI;kBAGhB,MAAM,GAAG,IAAI;mBAGZ,MAAM,GAAG,IAAI;CAG7B,CAAC"}
@@ -0,0 +1,15 @@
1
+ export const logger = {
2
+ info(message) {
3
+ console.log(message);
4
+ },
5
+ success(message) {
6
+ console.log(`✓ ${message}`);
7
+ },
8
+ warn(message) {
9
+ console.warn(`! ${message}`);
10
+ },
11
+ error(message) {
12
+ console.error(`Error: ${message}`);
13
+ },
14
+ };
15
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../cli/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,CAAC,OAAe;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAC/B,CAAC;IACD,KAAK,CAAC,OAAe;QACnB,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IACrC,CAAC;CACF,CAAC"}