arggon-harness 0.1.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.
- package/README.md +229 -0
- package/config/default-opencode.json +21 -0
- package/dist/init.d.ts +3 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +406 -0
- package/dist/init.js.map +1 -0
- package/dist/plugin/engine/artifact-graph.d.ts +38 -0
- package/dist/plugin/engine/artifact-graph.d.ts.map +1 -0
- package/dist/plugin/engine/artifact-graph.js +137 -0
- package/dist/plugin/engine/artifact-graph.js.map +1 -0
- package/dist/plugin/engine/config.d.ts +21 -0
- package/dist/plugin/engine/config.d.ts.map +1 -0
- package/dist/plugin/engine/config.js +146 -0
- package/dist/plugin/engine/config.js.map +1 -0
- package/dist/plugin/engine/delta-apply.d.ts +23 -0
- package/dist/plugin/engine/delta-apply.d.ts.map +1 -0
- package/dist/plugin/engine/delta-apply.js +153 -0
- package/dist/plugin/engine/delta-apply.js.map +1 -0
- package/dist/plugin/engine/git.d.ts +32 -0
- package/dist/plugin/engine/git.d.ts.map +1 -0
- package/dist/plugin/engine/git.js +61 -0
- package/dist/plugin/engine/git.js.map +1 -0
- package/dist/plugin/engine/integrity.d.ts +45 -0
- package/dist/plugin/engine/integrity.d.ts.map +1 -0
- package/dist/plugin/engine/integrity.js +98 -0
- package/dist/plugin/engine/integrity.js.map +1 -0
- package/dist/plugin/engine/registry.d.ts +39 -0
- package/dist/plugin/engine/registry.d.ts.map +1 -0
- package/dist/plugin/engine/registry.js +191 -0
- package/dist/plugin/engine/registry.js.map +1 -0
- package/dist/plugin/engine/state.d.ts +31 -0
- package/dist/plugin/engine/state.d.ts.map +1 -0
- package/dist/plugin/engine/state.js +116 -0
- package/dist/plugin/engine/state.js.map +1 -0
- package/dist/plugin/engine/task-tracker.d.ts +66 -0
- package/dist/plugin/engine/task-tracker.d.ts.map +1 -0
- package/dist/plugin/engine/task-tracker.js +124 -0
- package/dist/plugin/engine/task-tracker.js.map +1 -0
- package/dist/plugin/engine/types.d.ts +349 -0
- package/dist/plugin/engine/types.d.ts.map +1 -0
- package/dist/plugin/engine/types.js +3 -0
- package/dist/plugin/engine/types.js.map +1 -0
- package/dist/plugin/engine/validator.d.ts +52 -0
- package/dist/plugin/engine/validator.d.ts.map +1 -0
- package/dist/plugin/engine/validator.js +457 -0
- package/dist/plugin/engine/validator.js.map +1 -0
- package/dist/plugin/engine/verifier.d.ts +61 -0
- package/dist/plugin/engine/verifier.d.ts.map +1 -0
- package/dist/plugin/engine/verifier.js +441 -0
- package/dist/plugin/engine/verifier.js.map +1 -0
- package/dist/plugin/hooks/context-injection.d.ts +11 -0
- package/dist/plugin/hooks/context-injection.d.ts.map +1 -0
- package/dist/plugin/hooks/context-injection.js +88 -0
- package/dist/plugin/hooks/context-injection.js.map +1 -0
- package/dist/plugin/hooks/event-handlers.d.ts +9 -0
- package/dist/plugin/hooks/event-handlers.d.ts.map +1 -0
- package/dist/plugin/hooks/event-handlers.js +10 -0
- package/dist/plugin/hooks/event-handlers.js.map +1 -0
- package/dist/plugin/hooks/workflow-gate.d.ts +24 -0
- package/dist/plugin/hooks/workflow-gate.d.ts.map +1 -0
- package/dist/plugin/hooks/workflow-gate.js +78 -0
- package/dist/plugin/hooks/workflow-gate.js.map +1 -0
- package/dist/plugin/index.d.ts +423 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +253 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/plugin/tools/spec-artifact-instr.d.ts +7 -0
- package/dist/plugin/tools/spec-artifact-instr.d.ts.map +1 -0
- package/dist/plugin/tools/spec-artifact-instr.js +73 -0
- package/dist/plugin/tools/spec-artifact-instr.js.map +1 -0
- package/dist/plugin/tools/spec-change-archive.d.ts +6 -0
- package/dist/plugin/tools/spec-change-archive.d.ts.map +1 -0
- package/dist/plugin/tools/spec-change-archive.js +62 -0
- package/dist/plugin/tools/spec-change-archive.js.map +1 -0
- package/dist/plugin/tools/spec-change-list.d.ts +3 -0
- package/dist/plugin/tools/spec-change-list.d.ts.map +1 -0
- package/dist/plugin/tools/spec-change-list.js +38 -0
- package/dist/plugin/tools/spec-change-list.js.map +1 -0
- package/dist/plugin/tools/spec-change-new.d.ts +7 -0
- package/dist/plugin/tools/spec-change-new.d.ts.map +1 -0
- package/dist/plugin/tools/spec-change-new.js +47 -0
- package/dist/plugin/tools/spec-change-new.js.map +1 -0
- package/dist/plugin/tools/spec-change-status.d.ts +6 -0
- package/dist/plugin/tools/spec-change-status.d.ts.map +1 -0
- package/dist/plugin/tools/spec-change-status.js +43 -0
- package/dist/plugin/tools/spec-change-status.js.map +1 -0
- package/dist/plugin/tools/spec-design-critique.d.ts +20 -0
- package/dist/plugin/tools/spec-design-critique.d.ts.map +1 -0
- package/dist/plugin/tools/spec-design-critique.js +412 -0
- package/dist/plugin/tools/spec-design-critique.js.map +1 -0
- package/dist/plugin/tools/spec-design-hifi.d.ts +119 -0
- package/dist/plugin/tools/spec-design-hifi.d.ts.map +1 -0
- package/dist/plugin/tools/spec-design-hifi.js +653 -0
- package/dist/plugin/tools/spec-design-hifi.js.map +1 -0
- package/dist/plugin/tools/spec-design-wireframe.d.ts +91 -0
- package/dist/plugin/tools/spec-design-wireframe.d.ts.map +1 -0
- package/dist/plugin/tools/spec-design-wireframe.js +357 -0
- package/dist/plugin/tools/spec-design-wireframe.js.map +1 -0
- package/dist/plugin/tools/spec-init.d.ts +9 -0
- package/dist/plugin/tools/spec-init.d.ts.map +1 -0
- package/dist/plugin/tools/spec-init.js +58 -0
- package/dist/plugin/tools/spec-init.js.map +1 -0
- package/dist/plugin/tools/spec-integrity-check.d.ts +6 -0
- package/dist/plugin/tools/spec-integrity-check.d.ts.map +1 -0
- package/dist/plugin/tools/spec-integrity-check.js +19 -0
- package/dist/plugin/tools/spec-integrity-check.js.map +1 -0
- package/dist/plugin/tools/spec-registry-update.d.ts +3 -0
- package/dist/plugin/tools/spec-registry-update.d.ts.map +1 -0
- package/dist/plugin/tools/spec-registry-update.js +34 -0
- package/dist/plugin/tools/spec-registry-update.js.map +1 -0
- package/dist/plugin/tools/spec-schema-list.d.ts +3 -0
- package/dist/plugin/tools/spec-schema-list.d.ts.map +1 -0
- package/dist/plugin/tools/spec-schema-list.js +28 -0
- package/dist/plugin/tools/spec-schema-list.js.map +1 -0
- package/dist/plugin/tools/spec-specs-apply.d.ts +7 -0
- package/dist/plugin/tools/spec-specs-apply.d.ts.map +1 -0
- package/dist/plugin/tools/spec-specs-apply.js +49 -0
- package/dist/plugin/tools/spec-specs-apply.js.map +1 -0
- package/dist/plugin/tools/spec-task-progress.d.ts +8 -0
- package/dist/plugin/tools/spec-task-progress.d.ts.map +1 -0
- package/dist/plugin/tools/spec-task-progress.js +96 -0
- package/dist/plugin/tools/spec-task-progress.js.map +1 -0
- package/dist/plugin/tools/spec-validate.d.ts +21 -0
- package/dist/plugin/tools/spec-validate.d.ts.map +1 -0
- package/dist/plugin/tools/spec-validate.js +182 -0
- package/dist/plugin/tools/spec-validate.js.map +1 -0
- package/dist/plugin/tools/spec-verify.d.ts +7 -0
- package/dist/plugin/tools/spec-verify.d.ts.map +1 -0
- package/dist/plugin/tools/spec-verify.js +50 -0
- package/dist/plugin/tools/spec-verify.js.map +1 -0
- package/dist/plugin/tools/util.d.ts +25 -0
- package/dist/plugin/tools/util.d.ts.map +1 -0
- package/dist/plugin/tools/util.js +33 -0
- package/dist/plugin/tools/util.js.map +1 -0
- package/package.json +61 -0
- package/src/agents/orchestrator.md +158 -0
- package/src/agents/spec-apply.md +114 -0
- package/src/agents/spec-archive.md +103 -0
- package/src/agents/spec-propose.md +120 -0
- package/src/agents/spec-verify.md +103 -0
- package/src/commands/spec-init.md +6 -0
- package/src/commands/spec-onboard.md +6 -0
- package/src/commands/spec-status.md +6 -0
- package/src/commands/spec-sync.md +6 -0
- package/src/schemas/hybrid.yaml +144 -0
- package/src/schemas/spec-driven.yaml +155 -0
- package/src/schemas/tdd.yaml +203 -0
- package/src/skills/playwright-cli/SKILL.md +388 -0
- package/src/skills/playwright-cli/references/element-attributes.md +23 -0
- package/src/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/src/skills/playwright-cli/references/request-mocking.md +87 -0
- package/src/skills/playwright-cli/references/running-code.md +241 -0
- package/src/skills/playwright-cli/references/session-management.md +225 -0
- package/src/skills/playwright-cli/references/spec-driven-testing.md +305 -0
- package/src/skills/playwright-cli/references/storage-state.md +275 -0
- package/src/skills/playwright-cli/references/test-generation.md +134 -0
- package/src/skills/playwright-cli/references/tracing.md +139 -0
- package/src/skills/playwright-cli/references/video-recording.md +143 -0
- package/src/skills/spec-init/SKILL.md +61 -0
- package/src/skills/spec-onboard/SKILL.md +178 -0
- package/src/skills/spec-status/SKILL.md +72 -0
- package/src/skills/spec-sync/SKILL.md +63 -0
- package/src/templates/config.yaml +14 -0
- package/src/templates/design-hifi.yaml +580 -0
- package/src/templates/design-tech.yaml +42 -0
- package/src/templates/design-wireframe.yaml +114 -0
- package/src/templates/proposal.yaml +43 -0
- package/src/templates/registry.yaml +3 -0
- package/src/templates/spec.yaml +56 -0
- package/src/templates/tasks.yaml +58 -0
package/dist/init.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ArtifactId, ArtifactGraph, CompletedSet, Schema } from './types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Builds a directed acyclic graph from schema artifact definitions.
|
|
4
|
+
* @param schema - The schema containing artifact definitions
|
|
5
|
+
* @returns The artifact graph with nodes and edges
|
|
6
|
+
* @throws Error if a cycle is detected in the dependency graph
|
|
7
|
+
*/
|
|
8
|
+
export declare function buildGraph(schema: Schema): ArtifactGraph;
|
|
9
|
+
/**
|
|
10
|
+
* Returns artifacts in topological order using Kahn's algorithm.
|
|
11
|
+
* @param graph - The artifact graph
|
|
12
|
+
* @returns Array of artifact IDs in build order
|
|
13
|
+
*/
|
|
14
|
+
export declare function getBuildOrder(graph: ArtifactGraph): ArtifactId[];
|
|
15
|
+
/**
|
|
16
|
+
* Gets the next artifacts that can be built given completed set.
|
|
17
|
+
* @param graph - The artifact graph
|
|
18
|
+
* @param completed - Set of completed artifact IDs
|
|
19
|
+
* @returns Array of artifact IDs ready to be built
|
|
20
|
+
*/
|
|
21
|
+
export declare function getNextArtifacts(graph: ArtifactGraph, completed: CompletedSet, skipped?: CompletedSet): ArtifactId[];
|
|
22
|
+
/**
|
|
23
|
+
* Checks if all artifacts in the graph are complete.
|
|
24
|
+
* @param graph - The artifact graph
|
|
25
|
+
* @param completed - Set of completed artifact IDs
|
|
26
|
+
* @returns True if all artifacts are complete
|
|
27
|
+
*/
|
|
28
|
+
export declare function isComplete(graph: ArtifactGraph, completed: CompletedSet, skipped?: CompletedSet): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Gets blocked artifacts and their missing dependencies.
|
|
31
|
+
* @param graph - The artifact graph
|
|
32
|
+
* @param completed - Set of completed artifact IDs
|
|
33
|
+
* @returns Object mapping artifact IDs to their missing dependencies
|
|
34
|
+
*/
|
|
35
|
+
export declare function getBlocked(graph: ArtifactGraph, completed: CompletedSet, skipped?: CompletedSet): {
|
|
36
|
+
[id: string]: ArtifactId[];
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=artifact-graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-graph.d.ts","sourceRoot":"","sources":["../../../src/plugin/engine/artifact-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEjF;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAyBxD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,EAAE,CA0BhE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,YAAY,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,UAAU,EAAE,CAiBd;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,YAAY,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAGT;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,YAAY,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB;IAAE,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,EAAE,CAAA;CAAE,CAiBhC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds a directed acyclic graph from schema artifact definitions.
|
|
3
|
+
* @param schema - The schema containing artifact definitions
|
|
4
|
+
* @returns The artifact graph with nodes and edges
|
|
5
|
+
* @throws Error if a cycle is detected in the dependency graph
|
|
6
|
+
*/
|
|
7
|
+
export function buildGraph(schema) {
|
|
8
|
+
const nodes = schema.artifacts.map(a => a.id);
|
|
9
|
+
const edges = new Map();
|
|
10
|
+
const reverseEdges = new Map();
|
|
11
|
+
for (const node of nodes) {
|
|
12
|
+
edges.set(node, []);
|
|
13
|
+
reverseEdges.set(node, []);
|
|
14
|
+
}
|
|
15
|
+
for (const artifact of schema.artifacts) {
|
|
16
|
+
for (const req of artifact.requires) {
|
|
17
|
+
if (!nodes.includes(req)) {
|
|
18
|
+
throw new Error(`Unknown dependency: ${req} required by ${artifact.id}`);
|
|
19
|
+
}
|
|
20
|
+
edges.get(req).push(artifact.id);
|
|
21
|
+
reverseEdges.get(artifact.id).push(req);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (hasCycle(nodes, edges)) {
|
|
25
|
+
throw new Error('Cycle detected in artifact dependency graph');
|
|
26
|
+
}
|
|
27
|
+
return { nodes, edges, reverseEdges };
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Returns artifacts in topological order using Kahn's algorithm.
|
|
31
|
+
* @param graph - The artifact graph
|
|
32
|
+
* @returns Array of artifact IDs in build order
|
|
33
|
+
*/
|
|
34
|
+
export function getBuildOrder(graph) {
|
|
35
|
+
const inDegree = new Map();
|
|
36
|
+
const queue = [];
|
|
37
|
+
const result = [];
|
|
38
|
+
for (const node of graph.nodes) {
|
|
39
|
+
inDegree.set(node, graph.reverseEdges.get(node).length);
|
|
40
|
+
if (inDegree.get(node) === 0) {
|
|
41
|
+
queue.push(node);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
while (queue.length > 0) {
|
|
45
|
+
const current = queue.shift();
|
|
46
|
+
result.push(current);
|
|
47
|
+
for (const neighbor of graph.edges.get(current)) {
|
|
48
|
+
const newDegree = inDegree.get(neighbor) - 1;
|
|
49
|
+
inDegree.set(neighbor, newDegree);
|
|
50
|
+
if (newDegree === 0) {
|
|
51
|
+
queue.push(neighbor);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Gets the next artifacts that can be built given completed set.
|
|
59
|
+
* @param graph - The artifact graph
|
|
60
|
+
* @param completed - Set of completed artifact IDs
|
|
61
|
+
* @returns Array of artifact IDs ready to be built
|
|
62
|
+
*/
|
|
63
|
+
export function getNextArtifacts(graph, completed, skipped) {
|
|
64
|
+
const skippedSet = skipped ?? new Set();
|
|
65
|
+
const next = [];
|
|
66
|
+
for (const node of graph.nodes) {
|
|
67
|
+
if (completed.has(node))
|
|
68
|
+
continue;
|
|
69
|
+
if (skippedSet.has(node))
|
|
70
|
+
continue;
|
|
71
|
+
const deps = graph.reverseEdges.get(node);
|
|
72
|
+
const allDepsSatisfied = deps.every(dep => completed.has(dep) || skippedSet.has(dep));
|
|
73
|
+
if (allDepsSatisfied) {
|
|
74
|
+
next.push(node);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return next;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Checks if all artifacts in the graph are complete.
|
|
81
|
+
* @param graph - The artifact graph
|
|
82
|
+
* @param completed - Set of completed artifact IDs
|
|
83
|
+
* @returns True if all artifacts are complete
|
|
84
|
+
*/
|
|
85
|
+
export function isComplete(graph, completed, skipped) {
|
|
86
|
+
const skippedSet = skipped ?? new Set();
|
|
87
|
+
return graph.nodes.every(node => completed.has(node) || skippedSet.has(node));
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Gets blocked artifacts and their missing dependencies.
|
|
91
|
+
* @param graph - The artifact graph
|
|
92
|
+
* @param completed - Set of completed artifact IDs
|
|
93
|
+
* @returns Object mapping artifact IDs to their missing dependencies
|
|
94
|
+
*/
|
|
95
|
+
export function getBlocked(graph, completed, skipped) {
|
|
96
|
+
const skippedSet = skipped ?? new Set();
|
|
97
|
+
const blocked = {};
|
|
98
|
+
for (const node of graph.nodes) {
|
|
99
|
+
if (completed.has(node))
|
|
100
|
+
continue;
|
|
101
|
+
if (skippedSet.has(node))
|
|
102
|
+
continue;
|
|
103
|
+
const deps = graph.reverseEdges.get(node);
|
|
104
|
+
const missing = deps.filter(dep => !completed.has(dep) && !skippedSet.has(dep));
|
|
105
|
+
if (missing.length > 0) {
|
|
106
|
+
blocked[node] = missing;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return blocked;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Detects cycles in the graph using DFS.
|
|
113
|
+
*/
|
|
114
|
+
function hasCycle(nodes, edges) {
|
|
115
|
+
const visited = new Set();
|
|
116
|
+
const recursionStack = new Set();
|
|
117
|
+
function dfs(node) {
|
|
118
|
+
if (recursionStack.has(node))
|
|
119
|
+
return true;
|
|
120
|
+
if (visited.has(node))
|
|
121
|
+
return false;
|
|
122
|
+
visited.add(node);
|
|
123
|
+
recursionStack.add(node);
|
|
124
|
+
for (const neighbor of edges.get(node)) {
|
|
125
|
+
if (dfs(neighbor))
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
recursionStack.delete(node);
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
for (const node of nodes) {
|
|
132
|
+
if (dfs(node))
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=artifact-graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-graph.js","sourceRoot":"","sources":["../../../src/plugin/engine/artifact-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ProjectConfig, ValidationResult } from './types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Reads the project configuration from spec/config.yaml.
|
|
4
|
+
* @param projectRoot - Path to the project root
|
|
5
|
+
* @returns The parsed project configuration
|
|
6
|
+
* @throws Error if config file doesn't exist or is invalid
|
|
7
|
+
*/
|
|
8
|
+
export declare function readProjectConfig(projectRoot: string): Promise<ProjectConfig>;
|
|
9
|
+
/**
|
|
10
|
+
* Validates a project config object.
|
|
11
|
+
* @param config - The config data to validate
|
|
12
|
+
* @returns Validation result with errors and warnings
|
|
13
|
+
*/
|
|
14
|
+
export declare function validateConfig(config: any): ValidationResult;
|
|
15
|
+
/**
|
|
16
|
+
* Checks if a project config exists.
|
|
17
|
+
* @param projectRoot - Path to the project root
|
|
18
|
+
* @returns True if config file exists
|
|
19
|
+
*/
|
|
20
|
+
export declare function hasProjectConfig(projectRoot: string): Promise<boolean>;
|
|
21
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/plugin/engine/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEjE;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAmBnF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,gBAAgB,CAuC5D;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ5E"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import * as fs from 'fs/promises';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
/**
|
|
4
|
+
* Reads the project configuration from spec/config.yaml.
|
|
5
|
+
* @param projectRoot - Path to the project root
|
|
6
|
+
* @returns The parsed project configuration
|
|
7
|
+
* @throws Error if config file doesn't exist or is invalid
|
|
8
|
+
*/
|
|
9
|
+
export async function readProjectConfig(projectRoot) {
|
|
10
|
+
const configPath = path.join(projectRoot, 'spec', 'config.yaml');
|
|
11
|
+
try {
|
|
12
|
+
const content = await fs.readFile(configPath, 'utf8');
|
|
13
|
+
const parsed = parseConfigYaml(content);
|
|
14
|
+
const validation = validateConfig(parsed);
|
|
15
|
+
if (!validation.valid) {
|
|
16
|
+
throw new Error(`Invalid config: ${validation.errors.join(', ')}`);
|
|
17
|
+
}
|
|
18
|
+
return parsed;
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
if (err.code === 'ENOENT') {
|
|
22
|
+
throw new Error(`Config file not found: ${configPath}`);
|
|
23
|
+
}
|
|
24
|
+
throw err;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Validates a project config object.
|
|
29
|
+
* @param config - The config data to validate
|
|
30
|
+
* @returns Validation result with errors and warnings
|
|
31
|
+
*/
|
|
32
|
+
export function validateConfig(config) {
|
|
33
|
+
const errors = [];
|
|
34
|
+
const warnings = [];
|
|
35
|
+
if (!config || typeof config !== 'object') {
|
|
36
|
+
return { valid: false, errors: ['Config must be an object'], warnings: [] };
|
|
37
|
+
}
|
|
38
|
+
if (!config.schema || typeof config.schema !== 'string') {
|
|
39
|
+
errors.push('Config must have a string schema field');
|
|
40
|
+
}
|
|
41
|
+
if (config.context !== undefined && typeof config.context !== 'string') {
|
|
42
|
+
errors.push('Config context must be a string if provided');
|
|
43
|
+
}
|
|
44
|
+
if (config.rules !== undefined) {
|
|
45
|
+
if (typeof config.rules !== 'object' || Array.isArray(config.rules)) {
|
|
46
|
+
errors.push('Config rules must be an object');
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
for (const [key, value] of Object.entries(config.rules)) {
|
|
50
|
+
if (!Array.isArray(value)) {
|
|
51
|
+
errors.push(`Config rules.${key} must be an array`);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
for (let i = 0; i < value.length; i++) {
|
|
55
|
+
if (typeof value[i] !== 'string') {
|
|
56
|
+
errors.push(`Config rules.${key}[${i}] must be a string`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (config.auto_commit !== undefined && typeof config.auto_commit !== 'boolean') {
|
|
64
|
+
errors.push('Config auto_commit must be a boolean if provided');
|
|
65
|
+
}
|
|
66
|
+
return { valid: errors.length === 0, errors, warnings };
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Checks if a project config exists.
|
|
70
|
+
* @param projectRoot - Path to the project root
|
|
71
|
+
* @returns True if config file exists
|
|
72
|
+
*/
|
|
73
|
+
export async function hasProjectConfig(projectRoot) {
|
|
74
|
+
const configPath = path.join(projectRoot, 'spec', 'config.yaml');
|
|
75
|
+
try {
|
|
76
|
+
await fs.access(configPath);
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Simple YAML parser for config files.
|
|
85
|
+
*/
|
|
86
|
+
function parseConfigYaml(content) {
|
|
87
|
+
const result = {};
|
|
88
|
+
const lines = content.split('\n');
|
|
89
|
+
let currentKey = '';
|
|
90
|
+
let inRules = false;
|
|
91
|
+
for (const line of lines) {
|
|
92
|
+
const trimmed = line.trim();
|
|
93
|
+
if (trimmed === '' || trimmed.startsWith('#'))
|
|
94
|
+
continue;
|
|
95
|
+
const indent = line.length - line.trimStart().length;
|
|
96
|
+
if (indent === 0 && trimmed.includes(':')) {
|
|
97
|
+
const colonIdx = trimmed.indexOf(':');
|
|
98
|
+
const key = trimmed.substring(0, colonIdx).trim();
|
|
99
|
+
const value = trimmed.substring(colonIdx + 1).trim();
|
|
100
|
+
currentKey = key;
|
|
101
|
+
inRules = false;
|
|
102
|
+
if (key === 'rules') {
|
|
103
|
+
result.rules = {};
|
|
104
|
+
inRules = true;
|
|
105
|
+
}
|
|
106
|
+
else if (value) {
|
|
107
|
+
result[key] = parseValue(value);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else if (inRules && trimmed.startsWith('- ') === false && trimmed.includes(':')) {
|
|
111
|
+
const colonIdx = trimmed.indexOf(':');
|
|
112
|
+
const key = trimmed.substring(0, colonIdx).trim();
|
|
113
|
+
const value = trimmed.substring(colonIdx + 1).trim();
|
|
114
|
+
if (value === '') {
|
|
115
|
+
result.rules[key] = [];
|
|
116
|
+
currentKey = key;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
result.rules[key] = [parseValue(value)];
|
|
120
|
+
currentKey = key;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else if (inRules && trimmed.startsWith('- ')) {
|
|
124
|
+
if (!result.rules[currentKey]) {
|
|
125
|
+
result.rules[currentKey] = [];
|
|
126
|
+
}
|
|
127
|
+
result.rules[currentKey].push(parseValue(trimmed.substring(2).trim()));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return result;
|
|
131
|
+
}
|
|
132
|
+
function parseValue(value) {
|
|
133
|
+
if (value === 'true')
|
|
134
|
+
return true;
|
|
135
|
+
if (value === 'false')
|
|
136
|
+
return false;
|
|
137
|
+
if (value === 'null' || value === '~')
|
|
138
|
+
return null;
|
|
139
|
+
if (/^-?\d+$/.test(value))
|
|
140
|
+
return parseInt(value, 10);
|
|
141
|
+
if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
|
|
142
|
+
return value.slice(1, -1);
|
|
143
|
+
}
|
|
144
|
+
return value;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/plugin/engine/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAG5B;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,WAAmB;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,CAAA;IAEhE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QACrD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;QAEvC,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;QACzC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,mBAAmB,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACpE,CAAC;QAED,OAAO,MAAuB,CAAA;IAChC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAA;QACzD,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,MAAW;IACxC,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,0BAA0B,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;IAC7E,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;IACvD,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAA;IAC5D,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;QAC/C,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1B,MAAM,CAAC,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,CAAA;gBACrD,CAAC;qBAAM,CAAC;oBACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAI,KAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACjD,IAAI,OAAQ,KAAe,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;4BAC5C,MAAM,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAA;wBAC3D,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAChF,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAA;IACjE,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,WAAmB;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,CAAA;IAChE,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAC3B,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,MAAM,GAAQ,EAAE,CAAA;IACtB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,UAAU,GAAG,EAAE,CAAA;IACnB,IAAI,OAAO,GAAG,KAAK,CAAA;IAEnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAE3B,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAQ;QAEvD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAA;QAEpD,IAAI,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACrC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAA;YACjD,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YAEpD,UAAU,GAAG,GAAG,CAAA;YAChB,OAAO,GAAG,KAAK,CAAA;YAEf,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,KAAK,GAAG,EAAE,CAAA;gBACjB,OAAO,GAAG,IAAI,CAAA;YAChB,CAAC;iBAAM,IAAI,KAAK,EAAE,CAAC;gBACjB,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;YACjC,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClF,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACrC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAA;YACjD,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YAEpD,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBACjB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;gBACtB,UAAU,GAAG,GAAG,CAAA;YAClB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;gBACvC,UAAU,GAAG,GAAG,CAAA;YAClB,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAAA;YAC/B,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QACxE,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IACjC,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,KAAK,CAAA;IACnC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,IAAI,CAAA;IAClD,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACrD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACrG,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC3B,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { DeltaSpec, Requirement } from './types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Applies a delta spec to a main spec, producing the updated main spec.
|
|
4
|
+
* @param delta - The delta spec containing operations
|
|
5
|
+
* @param main - The main spec to update (null if creating new)
|
|
6
|
+
* @returns The updated main spec
|
|
7
|
+
* @throws Error if operations reference non-existent requirements
|
|
8
|
+
*/
|
|
9
|
+
export declare function applyDelta(delta: DeltaSpec, main: DeltaSpec | null): DeltaSpec;
|
|
10
|
+
/**
|
|
11
|
+
* Applies multiple delta specs to their corresponding main specs.
|
|
12
|
+
* @param deltas - Array of delta specs to apply
|
|
13
|
+
* @param mains - Map of capability names to main specs
|
|
14
|
+
* @returns Updated map of capability names to main specs
|
|
15
|
+
*/
|
|
16
|
+
export declare function applyDeltas(deltas: DeltaSpec[], mains: Map<string, DeltaSpec>): Map<string, DeltaSpec>;
|
|
17
|
+
/**
|
|
18
|
+
* Gets all requirements from a spec.
|
|
19
|
+
* @param spec - The spec to extract requirements from
|
|
20
|
+
* @returns Array of requirements
|
|
21
|
+
*/
|
|
22
|
+
export declare function getRequirements(spec: DeltaSpec): Requirement[];
|
|
23
|
+
//# sourceMappingURL=delta-apply.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delta-apply.d.ts","sourceRoot":"","sources":["../../../src/plugin/engine/delta-apply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAkB,WAAW,EAAE,MAAM,YAAY,CAAA;AAExE;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,CAS9E;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,EAAE,EACnB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAC5B,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CASxB;AAsJD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,EAAE,CAI9D"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Applies a delta spec to a main spec, producing the updated main spec.
|
|
3
|
+
* @param delta - The delta spec containing operations
|
|
4
|
+
* @param main - The main spec to update (null if creating new)
|
|
5
|
+
* @returns The updated main spec
|
|
6
|
+
* @throws Error if operations reference non-existent requirements
|
|
7
|
+
*/
|
|
8
|
+
export function applyDelta(delta, main) {
|
|
9
|
+
let result = main ? deepClone(main) : createEmptySpec(delta.capability);
|
|
10
|
+
result.version = delta.version;
|
|
11
|
+
for (const op of delta.operations) {
|
|
12
|
+
result = applyOperation(result, op);
|
|
13
|
+
}
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Applies multiple delta specs to their corresponding main specs.
|
|
18
|
+
* @param deltas - Array of delta specs to apply
|
|
19
|
+
* @param mains - Map of capability names to main specs
|
|
20
|
+
* @returns Updated map of capability names to main specs
|
|
21
|
+
*/
|
|
22
|
+
export function applyDeltas(deltas, mains) {
|
|
23
|
+
const result = new Map(mains);
|
|
24
|
+
for (const delta of deltas) {
|
|
25
|
+
const main = result.get(delta.capability) || null;
|
|
26
|
+
result.set(delta.capability, applyDelta(delta, main));
|
|
27
|
+
}
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Applies a single operation to a spec.
|
|
32
|
+
*/
|
|
33
|
+
function applyOperation(spec, operation) {
|
|
34
|
+
switch (operation.op) {
|
|
35
|
+
case 'add':
|
|
36
|
+
return applyAdd(spec, operation);
|
|
37
|
+
case 'modify':
|
|
38
|
+
return applyModify(spec, operation);
|
|
39
|
+
case 'remove':
|
|
40
|
+
return applyRemove(spec, operation);
|
|
41
|
+
case 'rename':
|
|
42
|
+
return applyRename(spec, operation);
|
|
43
|
+
default:
|
|
44
|
+
throw new Error(`Unknown operation: ${operation.op}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Adds a requirement to the spec.
|
|
49
|
+
*/
|
|
50
|
+
function applyAdd(spec, operation) {
|
|
51
|
+
if (!operation.requirement) {
|
|
52
|
+
throw new Error('Add operation requires a requirement');
|
|
53
|
+
}
|
|
54
|
+
const existing = spec.operations.find(op => op.requirement?.id === operation.requirement.id);
|
|
55
|
+
if (existing) {
|
|
56
|
+
throw new Error(`Requirement already exists: ${operation.requirement.id}`);
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
...spec,
|
|
60
|
+
operations: [...spec.operations, { op: 'add', requirement: operation.requirement }]
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Modifies an existing requirement in the spec.
|
|
65
|
+
*/
|
|
66
|
+
function applyModify(spec, operation) {
|
|
67
|
+
if (!operation.requirement) {
|
|
68
|
+
throw new Error('Modify operation requires a requirement');
|
|
69
|
+
}
|
|
70
|
+
const existingIndex = spec.operations.findIndex(op => op.requirement?.id === operation.requirement.id);
|
|
71
|
+
if (existingIndex === -1) {
|
|
72
|
+
throw new Error(`Requirement not found: ${operation.requirement.id}`);
|
|
73
|
+
}
|
|
74
|
+
const newOperations = [...spec.operations];
|
|
75
|
+
newOperations[existingIndex] = { op: 'modify', requirement: operation.requirement };
|
|
76
|
+
return {
|
|
77
|
+
...spec,
|
|
78
|
+
operations: newOperations
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Removes a requirement from the spec.
|
|
83
|
+
*/
|
|
84
|
+
function applyRemove(spec, operation) {
|
|
85
|
+
if (!operation.requirement) {
|
|
86
|
+
throw new Error('Remove operation requires a requirement');
|
|
87
|
+
}
|
|
88
|
+
const existingIndex = spec.operations.findIndex(op => op.requirement?.id === operation.requirement.id);
|
|
89
|
+
if (existingIndex === -1) {
|
|
90
|
+
throw new Error(`Requirement not found: ${operation.requirement.id}`);
|
|
91
|
+
}
|
|
92
|
+
const newOperations = spec.operations.filter((_, i) => i !== existingIndex);
|
|
93
|
+
return {
|
|
94
|
+
...spec,
|
|
95
|
+
operations: newOperations
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Renames a requirement in the spec.
|
|
100
|
+
*/
|
|
101
|
+
function applyRename(spec, operation) {
|
|
102
|
+
if (!operation.from || !operation.to) {
|
|
103
|
+
throw new Error('Rename operation requires from and to');
|
|
104
|
+
}
|
|
105
|
+
const existingIndex = spec.operations.findIndex(op => op.requirement?.id === operation.from);
|
|
106
|
+
if (existingIndex === -1) {
|
|
107
|
+
throw new Error(`Requirement not found: ${operation.from}`);
|
|
108
|
+
}
|
|
109
|
+
const targetExists = spec.operations.some(op => op.requirement?.id === operation.to);
|
|
110
|
+
if (targetExists) {
|
|
111
|
+
throw new Error(`Requirement already exists: ${operation.to}`);
|
|
112
|
+
}
|
|
113
|
+
const newOperations = [...spec.operations];
|
|
114
|
+
const existing = newOperations[existingIndex];
|
|
115
|
+
if (existing.requirement) {
|
|
116
|
+
newOperations[existingIndex] = {
|
|
117
|
+
...existing,
|
|
118
|
+
requirement: { ...existing.requirement, id: operation.to }
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
...spec,
|
|
123
|
+
operations: newOperations
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Creates an empty spec with the given capability name.
|
|
128
|
+
*/
|
|
129
|
+
function createEmptySpec(capability) {
|
|
130
|
+
return {
|
|
131
|
+
capability,
|
|
132
|
+
version: 1,
|
|
133
|
+
agent: {},
|
|
134
|
+
operations: []
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Deep clones a delta spec.
|
|
139
|
+
*/
|
|
140
|
+
function deepClone(spec) {
|
|
141
|
+
return JSON.parse(JSON.stringify(spec));
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Gets all requirements from a spec.
|
|
145
|
+
* @param spec - The spec to extract requirements from
|
|
146
|
+
* @returns Array of requirements
|
|
147
|
+
*/
|
|
148
|
+
export function getRequirements(spec) {
|
|
149
|
+
return spec.operations
|
|
150
|
+
.filter(op => op.requirement)
|
|
151
|
+
.map(op => op.requirement);
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=delta-apply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delta-apply.js","sourceRoot":"","sources":["../../../src/plugin/engine/delta-apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface GitCommitResult {
|
|
2
|
+
success: boolean;
|
|
3
|
+
hash: string | null;
|
|
4
|
+
error: string | null;
|
|
5
|
+
}
|
|
6
|
+
export interface GitRepoResult {
|
|
7
|
+
success: boolean;
|
|
8
|
+
isRepo: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface GitChangesResult {
|
|
11
|
+
success: boolean;
|
|
12
|
+
hasChanges: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Checks whether the given directory is inside a git repository.
|
|
16
|
+
* Runs `git rev-parse --is-inside-work-tree` in projectRoot.
|
|
17
|
+
* Never throws — errors are captured in the return value.
|
|
18
|
+
*/
|
|
19
|
+
export declare function isGitRepo(projectRoot: string): Promise<GitRepoResult>;
|
|
20
|
+
/**
|
|
21
|
+
* Checks whether there are uncommitted changes (staged or unstaged).
|
|
22
|
+
* Runs `git status --porcelain` in projectRoot.
|
|
23
|
+
* Never throws — errors are captured in the return value.
|
|
24
|
+
*/
|
|
25
|
+
export declare function hasChanges(projectRoot: string): Promise<GitChangesResult>;
|
|
26
|
+
/**
|
|
27
|
+
* Stages all changes with `git add -A` and creates a commit with the given message.
|
|
28
|
+
* Returns the full 40-character commit hash on success.
|
|
29
|
+
* Never throws — all errors are captured in the return value.
|
|
30
|
+
*/
|
|
31
|
+
export declare function gitCommit(projectRoot: string, message: string): Promise<GitCommitResult>;
|
|
32
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/plugin/engine/git.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;CACpB;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAO3E;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAO/E;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAuB9F"}
|