@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.
- package/dist/change-proposal.d.ts +71 -0
- package/dist/change-proposal.d.ts.map +1 -0
- package/dist/change-proposal.js +205 -0
- package/dist/change-proposal.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown-storage.d.ts +34 -0
- package/dist/markdown-storage.d.ts.map +1 -0
- package/dist/markdown-storage.js +356 -0
- package/dist/markdown-storage.js.map +1 -0
- package/dist/migration.d.ts +57 -0
- package/dist/migration.d.ts.map +1 -0
- package/dist/migration.js +250 -0
- package/dist/migration.js.map +1 -0
- package/dist/storage.d.ts +57 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +403 -0
- package/dist/storage.js.map +1 -0
- package/dist/unified-storage.d.ts +59 -0
- package/dist/unified-storage.d.ts.map +1 -0
- package/dist/unified-storage.js +199 -0
- package/dist/unified-storage.js.map +1 -0
- package/dist/validation.d.ts +62 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +500 -0
- package/dist/validation.js.map +1 -0
- package/package.json +45 -0
|
@@ -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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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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 @@
|
|
|
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"}
|