@lovelybunch/core 1.0.3

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.
@@ -0,0 +1,71 @@
1
+ import type { ChangeProposal, CPStatus, Author, PlanStep, Evidence, AIInteraction } from '@lovelybunch/types';
2
+ export declare class ChangeProposalManager {
3
+ private proposals;
4
+ /**
5
+ * Create a new Change Proposal
6
+ */
7
+ create(params: {
8
+ intent: string;
9
+ author: Author;
10
+ productSpecRef?: string;
11
+ }): ChangeProposal;
12
+ /**
13
+ * Get a Change Proposal by ID
14
+ */
15
+ get(id: string): ChangeProposal | undefined;
16
+ /**
17
+ * List all Change Proposals with optional filtering
18
+ */
19
+ list(options?: {
20
+ status?: CPStatus;
21
+ author?: string;
22
+ limit?: number;
23
+ offset?: number;
24
+ }): ChangeProposal[];
25
+ /**
26
+ * Update a Change Proposal
27
+ */
28
+ update(id: string, updates: Partial<ChangeProposal>): ChangeProposal | undefined;
29
+ /**
30
+ * Update the status of a Change Proposal
31
+ */
32
+ updateStatus(id: string, status: CPStatus): ChangeProposal | undefined;
33
+ /**
34
+ * Add a plan step to a Change Proposal
35
+ */
36
+ addPlanStep(cpId: string, step: Omit<PlanStep, 'id'>): PlanStep | undefined;
37
+ /**
38
+ * Execute a plan step
39
+ */
40
+ executePlanStep(cpId: string, stepId: string, result: {
41
+ output?: string;
42
+ error?: string;
43
+ status: 'completed' | 'failed';
44
+ }): boolean;
45
+ /**
46
+ * Add evidence to a Change Proposal
47
+ */
48
+ addEvidence(cpId: string, evidence: Omit<Evidence, 'timestamp'>): Evidence | undefined;
49
+ /**
50
+ * Add an AI interaction to a Change Proposal
51
+ */
52
+ addAIInteraction(cpId: string, interaction: AIInteraction): boolean;
53
+ /**
54
+ * Delete a Change Proposal
55
+ */
56
+ delete(id: string): boolean;
57
+ /**
58
+ * Generate a unique ID for a Change Proposal
59
+ */
60
+ private generateId;
61
+ /**
62
+ * Export all proposals (for persistence)
63
+ */
64
+ export(): ChangeProposal[];
65
+ /**
66
+ * Import proposals (for loading from storage)
67
+ */
68
+ import(proposals: ChangeProposal[]): void;
69
+ }
70
+ export declare const cpManager: ChangeProposalManager;
71
+ //# sourceMappingURL=change-proposal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-proposal.d.ts","sourceRoot":"","sources":["../src/change-proposal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,aAAa,EACd,MAAM,oBAAoB,CAAC;AAE5B,qBAAa,qBAAqB;IAChC,OAAO,CAAC,SAAS,CAA0C;IAE3D;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,cAAc;IA+BlB;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI3C;;OAEG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE;QACb,MAAM,CAAC,EAAE,QAAQ,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,cAAc,EAAE;IA2BpB;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,GAAG,SAAS;IAqBhF;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,cAAc,GAAG,SAAS;IAItE;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,QAAQ,GAAG,SAAS;IAkB3E;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;QACpD,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;KAChC,GAAG,OAAO;IAsBX;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,GAAG,SAAS;IAiBtF;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,GAAG,OAAO;IAiBnE;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI3B;;OAEG;IACH,OAAO,CAAC,UAAU;IAKlB;;OAEG;IACH,MAAM,IAAI,cAAc,EAAE;IAI1B;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,IAAI;CAyB1C;AAGD,eAAO,MAAM,SAAS,uBAA8B,CAAC"}
@@ -0,0 +1,205 @@
1
+ import { nanoid } from 'nanoid';
2
+ export class ChangeProposalManager {
3
+ proposals = new Map();
4
+ /**
5
+ * Create a new Change Proposal
6
+ */
7
+ create(params) {
8
+ const id = this.generateId();
9
+ const now = new Date();
10
+ const proposal = {
11
+ id,
12
+ intent: params.intent,
13
+ author: params.author,
14
+ productSpecRef: params.productSpecRef,
15
+ planSteps: [],
16
+ evidence: [],
17
+ policies: [],
18
+ featureFlags: [],
19
+ experiments: [],
20
+ telemetryContracts: [],
21
+ releasePlan: {
22
+ strategy: 'immediate'
23
+ },
24
+ status: 'draft',
25
+ metadata: {
26
+ createdAt: now,
27
+ updatedAt: now,
28
+ reviewers: [],
29
+ aiInteractions: []
30
+ }
31
+ };
32
+ this.proposals.set(id, proposal);
33
+ return proposal;
34
+ }
35
+ /**
36
+ * Get a Change Proposal by ID
37
+ */
38
+ get(id) {
39
+ return this.proposals.get(id);
40
+ }
41
+ /**
42
+ * List all Change Proposals with optional filtering
43
+ */
44
+ list(options) {
45
+ let proposals = Array.from(this.proposals.values());
46
+ if (options?.status) {
47
+ proposals = proposals.filter(p => p.status === options.status);
48
+ }
49
+ if (options?.author) {
50
+ proposals = proposals.filter(p => p.author.id === options.author ||
51
+ p.author.name === options.author ||
52
+ p.author.email === options.author);
53
+ }
54
+ // Sort by creation date (newest first)
55
+ proposals.sort((a, b) => b.metadata.createdAt.getTime() - a.metadata.createdAt.getTime());
56
+ // Apply pagination
57
+ const offset = options?.offset || 0;
58
+ const limit = options?.limit || proposals.length;
59
+ return proposals.slice(offset, offset + limit);
60
+ }
61
+ /**
62
+ * Update a Change Proposal
63
+ */
64
+ update(id, updates) {
65
+ const proposal = this.proposals.get(id);
66
+ if (!proposal) {
67
+ return undefined;
68
+ }
69
+ const updated = {
70
+ ...proposal,
71
+ ...updates,
72
+ id: proposal.id, // Ensure ID cannot be changed
73
+ metadata: {
74
+ ...proposal.metadata,
75
+ ...updates.metadata,
76
+ updatedAt: new Date()
77
+ }
78
+ };
79
+ this.proposals.set(id, updated);
80
+ return updated;
81
+ }
82
+ /**
83
+ * Update the status of a Change Proposal
84
+ */
85
+ updateStatus(id, status) {
86
+ return this.update(id, { status });
87
+ }
88
+ /**
89
+ * Add a plan step to a Change Proposal
90
+ */
91
+ addPlanStep(cpId, step) {
92
+ const proposal = this.get(cpId);
93
+ if (!proposal) {
94
+ return undefined;
95
+ }
96
+ const planStep = {
97
+ ...step,
98
+ id: nanoid(8),
99
+ status: step.status || 'pending'
100
+ };
101
+ const updatedSteps = [...proposal.planSteps, planStep];
102
+ this.update(cpId, { planSteps: updatedSteps });
103
+ return planStep;
104
+ }
105
+ /**
106
+ * Execute a plan step
107
+ */
108
+ executePlanStep(cpId, stepId, result) {
109
+ const proposal = this.get(cpId);
110
+ if (!proposal) {
111
+ return false;
112
+ }
113
+ const stepIndex = proposal.planSteps.findIndex(s => s.id === stepId);
114
+ if (stepIndex === -1) {
115
+ return false;
116
+ }
117
+ const updatedSteps = [...proposal.planSteps];
118
+ updatedSteps[stepIndex] = {
119
+ ...updatedSteps[stepIndex],
120
+ ...result,
121
+ executedAt: new Date()
122
+ };
123
+ this.update(cpId, { planSteps: updatedSteps });
124
+ return true;
125
+ }
126
+ /**
127
+ * Add evidence to a Change Proposal
128
+ */
129
+ addEvidence(cpId, evidence) {
130
+ const proposal = this.get(cpId);
131
+ if (!proposal) {
132
+ return undefined;
133
+ }
134
+ const newEvidence = {
135
+ ...evidence,
136
+ timestamp: new Date()
137
+ };
138
+ const updatedEvidence = [...proposal.evidence, newEvidence];
139
+ this.update(cpId, { evidence: updatedEvidence });
140
+ return newEvidence;
141
+ }
142
+ /**
143
+ * Add an AI interaction to a Change Proposal
144
+ */
145
+ addAIInteraction(cpId, interaction) {
146
+ const proposal = this.get(cpId);
147
+ if (!proposal) {
148
+ return false;
149
+ }
150
+ const updatedInteractions = [...proposal.metadata.aiInteractions, interaction];
151
+ this.update(cpId, {
152
+ metadata: {
153
+ ...proposal.metadata,
154
+ aiInteractions: updatedInteractions
155
+ }
156
+ });
157
+ return true;
158
+ }
159
+ /**
160
+ * Delete a Change Proposal
161
+ */
162
+ delete(id) {
163
+ return this.proposals.delete(id);
164
+ }
165
+ /**
166
+ * Generate a unique ID for a Change Proposal
167
+ */
168
+ generateId() {
169
+ const counter = this.proposals.size + 1;
170
+ return `cp-${counter.toString().padStart(3, '0')}`;
171
+ }
172
+ /**
173
+ * Export all proposals (for persistence)
174
+ */
175
+ export() {
176
+ return Array.from(this.proposals.values());
177
+ }
178
+ /**
179
+ * Import proposals (for loading from storage)
180
+ */
181
+ import(proposals) {
182
+ this.proposals.clear();
183
+ for (const proposal of proposals) {
184
+ // Convert date strings back to Date objects
185
+ proposal.metadata.createdAt = new Date(proposal.metadata.createdAt);
186
+ proposal.metadata.updatedAt = new Date(proposal.metadata.updatedAt);
187
+ // Convert other date fields
188
+ proposal.planSteps.forEach(step => {
189
+ if (step.executedAt) {
190
+ step.executedAt = new Date(step.executedAt);
191
+ }
192
+ });
193
+ proposal.evidence.forEach(e => {
194
+ e.timestamp = new Date(e.timestamp);
195
+ });
196
+ proposal.metadata.aiInteractions.forEach(ai => {
197
+ ai.timestamp = new Date(ai.timestamp);
198
+ });
199
+ this.proposals.set(proposal.id, proposal);
200
+ }
201
+ }
202
+ }
203
+ // Export a singleton instance
204
+ export const cpManager = new ChangeProposalManager();
205
+ //# sourceMappingURL=change-proposal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-proposal.js","sourceRoot":"","sources":["../src/change-proposal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './change-proposal.js';
2
+ export * from './storage.js';
3
+ export * from './markdown-storage.js';
4
+ export type * from '@lovelybunch/types';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,mBAAmB,oBAAoB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from './change-proposal.js';
2
+ export * from './storage.js';
3
+ export * from './markdown-storage.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { ChangeProposal, GaitConfig, Agent } from '@lovelybunch/types';
2
+ import type { StorageAdapter } from './storage.js';
3
+ export declare class MarkdownStorageAdapter implements StorageAdapter {
4
+ private basePath;
5
+ private proposalsPath;
6
+ private configPath;
7
+ private agentsPath;
8
+ constructor(basePath?: string);
9
+ init(): Promise<void>;
10
+ saveProposal(proposal: ChangeProposal): Promise<void>;
11
+ loadProposal(id: string): Promise<ChangeProposal | null>;
12
+ loadAllProposals(): Promise<ChangeProposal[]>;
13
+ deleteProposal(id: string): Promise<boolean>;
14
+ saveConfig(config: GaitConfig): Promise<void>;
15
+ loadConfig(): Promise<GaitConfig | null>;
16
+ private fileExists;
17
+ private getAuthorRole;
18
+ private generateMarkdownContent;
19
+ private parseMarkdownContent;
20
+ /**
21
+ * Check if GAIT is initialized in the current directory
22
+ */
23
+ isInitialized(): Promise<boolean>;
24
+ /**
25
+ * Get the base path for storage
26
+ */
27
+ getBasePath(): string;
28
+ saveAgent(agent: Agent): Promise<void>;
29
+ loadAgent(id: string): Promise<Agent | null>;
30
+ loadAllAgents(): Promise<Agent[]>;
31
+ deleteAgent(id: string): Promise<boolean>;
32
+ }
33
+ export declare const markdownStorage: MarkdownStorageAdapter;
34
+ //# sourceMappingURL=markdown-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-storage.d.ts","sourceRoot":"","sources":["../src/markdown-storage.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAoG,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC9K,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAsBnD,qBAAa,sBAAuB,YAAW,cAAc;IAC3D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;gBAEf,QAAQ,GAAE,MAAgB;IAOhC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BrB,YAAY,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAuDrD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IA6CxD,gBAAgB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAiB7C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW5C,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,UAAU,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;YAShC,UAAU;IASxB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,uBAAuB;IAqF/B,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAIvC;;OAEG;IACH,WAAW,IAAI,MAAM;IAKf,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BtC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IA4B5C,aAAa,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAiBjC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAUhD;AAGD,eAAO,MAAM,eAAe,wBAA+B,CAAC"}