@emiliosp/pi-maestro 0.5.2 → 0.6.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 +38 -41
- package/agents/builder.md +16 -18
- package/agents/verifier.md +24 -21
- package/docs/configuration.md +16 -24
- package/docs/subagent-integration.md +18 -40
- package/docs/workflow.md +106 -169
- package/package.json +1 -2
- package/src/MaestroPaths.ts +111 -47
- package/src/artifacts/builder-handoff/assertBuilderHandoff.ts +2 -15
- package/src/artifacts/builder-handoff/readBuilderHandoff.ts +0 -3
- package/src/artifacts/builder-handoff/schema.ts +1 -1
- package/src/artifacts/builder-handoff/writeBuilderHandoff.ts +3 -5
- package/src/artifacts/escalation/createEscalation.ts +7 -7
- package/src/artifacts/escalation/getNextEscalationId.ts +0 -3
- package/src/artifacts/escalation/readEscalation.ts +1 -11
- package/src/artifacts/escalation/readEscalationHistory.ts +0 -3
- package/src/artifacts/escalation/resolveEscalation.ts +2 -12
- package/src/artifacts/escalation/schema.ts +0 -1
- package/src/artifacts/verifier-handoff/assertVerifierHandoff.ts +2 -9
- package/src/artifacts/verifier-handoff/readVerifierHandoff.ts +0 -3
- package/src/artifacts/verifier-handoff/schema.ts +20 -6
- package/src/artifacts/verifier-handoff/writeVerifierHandoff.ts +7 -7
- package/src/config/loadConfiguration.ts +18 -18
- package/src/maestro/checks/assertEnvironment.ts +13 -17
- package/src/maestro/instructions/getMaestroInstructions.ts +33 -24
- package/src/specs/create.ts +0 -2
- package/src/tools/child/open-escalation.ts +3 -4
- package/src/tools/child/record-builder-handoff.ts +4 -4
- package/src/tools/child/record-verifier-handoff.ts +13 -26
- package/src/tools/child/utils/resolveWorkflowContext.ts +3 -3
- package/src/tools/main/mark-spec-ready.ts +2 -2
- package/src/tools/main/resolve-escalation.ts +2 -4
- package/src/tools/main/resolve-findings.ts +17 -15
- package/src/tools/main/run-builder.ts +10 -38
- package/src/tools/main/run-verifier.ts +6 -33
- package/src/tools/utils/resolveToolRunContext.ts +8 -8
- package/src/utils/path-strictly-within.ts +4 -4
- package/src/utils/write-json.ts +24 -0
- package/src/workflow/builder/completeBuilderPass.ts +6 -15
- package/src/workflow/builder/prepareBuilderRun.ts +3 -34
- package/src/workflow/escalation/openBuilderEscalation.ts +2 -10
- package/src/workflow/escalation/resolveBuilderEscalation.ts +9 -14
- package/src/workflow/findings/resolveFindings.ts +25 -135
- package/src/workflow/spec/markSpecReady.ts +0 -1
- package/src/workflow/state/readWorkflowState.ts +2 -2
- package/src/workflow/state/schema.ts +0 -1
- package/src/workflow/state/writeWorkflowState.ts +7 -63
- package/src/workflow/transitions.ts +2 -2
- package/src/workflow/verifier/completeVerifierPass.ts +8 -14
- package/src/workflow/verifier/prepareVerifierRun.ts +4 -41
- package/src/artifacts/verifier-handoff/rejectVerifierFinding.ts +0 -54
- package/src/git/command.ts +0 -172
- package/src/git/commits/createCommit.ts +0 -76
- package/src/git/commits/createWorkflowCheckpointCommit.ts +0 -24
- package/src/git/commits/findCommitByMessage.ts +0 -39
- package/src/git/commits/getStagedPaths.ts +0 -23
- package/src/git/history/getParentCommit.ts +0 -25
- package/src/git/repository/assertRepositoryTrusted.ts +0 -16
- package/src/git/repository/findRepositoryRoot.ts +0 -19
- package/src/git/repository/getCurrentBranch.ts +0 -18
- package/src/git/repository/getHeadCommit.ts +0 -18
- package/src/git/repository/getRepositoryStatus.ts +0 -74
- package/src/git/utils/hasGitExitCode.ts +0 -19
- package/src/utils/write-atomically.ts +0 -41
- package/src/utils/write-json-atomically.ts +0 -28
package/docs/workflow.md
CHANGED
|
@@ -1,250 +1,187 @@
|
|
|
1
1
|
# Workflow
|
|
2
2
|
|
|
3
|
-
Maestro manages one spec-driven
|
|
3
|
+
Maestro manages one spec-driven workflow in the current Pi session. The owner works directly with Maestro.
|
|
4
4
|
|
|
5
|
-
The approved `spec.md` is the contract
|
|
5
|
+
The approved `spec.md` is the contract for the change. It defines behavior, scope, constraints, technical decisions, and acceptance criteria.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
An acceptance criterion contains a probe, an expected result and an example. The probe checks an acceptance criterion against its expected result.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
An agent run result is a handoff.
|
|
10
|
+
The handoff can contain:
|
|
11
|
+
- Escalations: the owner have to decide implementation questions.
|
|
12
|
+
- Findings: technical issues on the implementation
|
|
13
|
+
- Evidences: work executed by agents
|
|
10
14
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
Builder and verifier runs are foreground operations, and communicate with Maestro through repository handoffs.
|
|
14
|
-
|
|
15
|
-
Pi waits for each run before the owner continues. Maestro's Pi status shows the current phase, and pi-subagents FleetView shows the live activity and transcript.
|
|
15
|
+
The workflow uses files in the [project root](configuration.md#project-root).
|
|
16
16
|
|
|
17
17
|
## Roles
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
- Requirements
|
|
26
|
-
- Scope
|
|
27
|
-
- Technical decisions recorded in the spec
|
|
28
|
-
- Escalation answers
|
|
29
|
-
- Finding decisions
|
|
30
|
-
- Spec approval
|
|
31
|
-
- Git flow after the candidate is ready
|
|
32
|
-
- Final Pull Request and merge
|
|
33
|
-
|
|
34
|
-
### Maestro
|
|
35
|
-
|
|
36
|
-
- Discusses the change with the owner
|
|
37
|
-
- Writes and reviews the spec with the owner
|
|
38
|
-
- Creates workflow artifacts on the current branch
|
|
39
|
-
- Starts the builder and verifier
|
|
40
|
-
- Reads their handoffs
|
|
41
|
-
- Presents escalations and findings to the owner
|
|
42
|
-
- Records explicit owner decisions
|
|
43
|
-
- Summarizes the results and facts for a Pull Request when the candidate is ready
|
|
44
|
-
|
|
45
|
-
### Builder
|
|
46
|
-
|
|
47
|
-
The builder works on the current branch with a fresh context.
|
|
48
|
-
|
|
49
|
-
It reads the active spec, implements the approved change, and runs every probe against its expected result.
|
|
50
|
-
|
|
51
|
-
The builder ends a run with one of these outcomes:
|
|
52
|
-
|
|
53
|
-
- `done`
|
|
54
|
-
- `failed`
|
|
55
|
-
- An `escalation`
|
|
56
|
-
|
|
57
|
-
### Verifier
|
|
58
|
-
|
|
59
|
-
The verifier works on the current branch with a fresh context.
|
|
60
|
-
|
|
61
|
-
It reads the active spec and available artifacts. Historical artifacts provide context, not proof.
|
|
19
|
+
| Role | Responsibility |
|
|
20
|
+
|---|---|
|
|
21
|
+
| Owner | Decides requirements, scope, technical decisions, spec approval, escalation answers, and finding decisions. Performs the final review. |
|
|
22
|
+
| Maestro | Prepares the spec with the owner, records workflow progress, runs agents, presents issues, and saves owner decisions. |
|
|
23
|
+
| Builder | Implements the approved spec and runs every probe. Reports completion, an escalation, or a technical failure. |
|
|
24
|
+
| Verifier | Independently runs every probe against the live project files. Reports findings without repairing product code. |
|
|
62
25
|
|
|
63
|
-
|
|
26
|
+
Builder and verifier runs are sequential foreground operations. Each starts with a fresh conversation and reads the spec and saved artifacts.
|
|
64
27
|
|
|
65
|
-
|
|
28
|
+
Maestro's Pi status shows the current phase. `pi-subagents` FleetView and `/subagents-fleet` show live agent activity and transcripts.
|
|
66
29
|
|
|
67
30
|
## Main flow
|
|
68
31
|
|
|
69
|
-
|
|
32
|
+
The green arrows and lines show the path without escalations or findings.
|
|
70
33
|
|
|
71
34
|
```mermaid
|
|
72
35
|
flowchart TD
|
|
73
|
-
spec[Owner and Maestro
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
36
|
+
spec[Owner and Maestro prepare one spec]
|
|
37
|
+
approval[Owner replies GREEN FLAG]
|
|
38
|
+
build[Builder implements the approved spec]
|
|
39
|
+
buildOutcome{Builder outcome}
|
|
40
|
+
verify[Verifier checks live project files]
|
|
41
|
+
findings{Findings?}
|
|
42
|
+
candidate[Candidate ready]
|
|
43
|
+
summary[Maestro summarizes results]
|
|
44
|
+
review[Owner performs the final review]
|
|
45
|
+
|
|
46
|
+
spec --> approval
|
|
81
47
|
approval --> build
|
|
82
48
|
build --> buildOutcome
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
49
|
+
buildOutcome -->|Done| verify
|
|
50
|
+
verify --> findings
|
|
51
|
+
findings -->|None| candidate
|
|
52
|
+
|
|
53
|
+
buildOutcome -->|Escalation| ownerEscalation{Owner decides}
|
|
54
|
+
ownerEscalation -->|Contract unchanged| recordEscalation[Maestro records the answer]
|
|
55
|
+
recordEscalation --> build
|
|
56
|
+
ownerEscalation -->|Contract changes| reviseSpec[Owner and Maestro revise the spec]
|
|
90
57
|
reviseSpec --> approval
|
|
91
58
|
|
|
92
|
-
buildOutcome -->|Failed|
|
|
93
|
-
builderFailed --> abandoned[Owner handles the failed workflow manually]
|
|
59
|
+
buildOutcome -->|Failed| stopped[Workflow stops for manual owner follow-up]
|
|
94
60
|
|
|
95
|
-
|
|
96
|
-
|
|
61
|
+
findings -->|One or more| ownerFindings[Owner decides every finding]
|
|
62
|
+
ownerFindings -->|Reject all with reasons| candidate
|
|
63
|
+
ownerFindings -->|Fix code| recordFixes[Maestro records the decisions]
|
|
64
|
+
recordFixes --> build
|
|
65
|
+
ownerFindings -->|Revise spec| reviseSpec
|
|
97
66
|
|
|
98
|
-
|
|
99
|
-
|
|
67
|
+
candidate --> summary
|
|
68
|
+
summary --> review
|
|
100
69
|
|
|
101
|
-
|
|
102
|
-
ownerFindings -->|Code must change| returnBuilder[Maestro records the decision]
|
|
103
|
-
returnBuilder --> build
|
|
104
|
-
ownerFindings -->|Spec must change| reviseSpec
|
|
105
|
-
|
|
106
|
-
candidate --> summary[Maestro summarizes results and Pull Request facts]
|
|
107
|
-
summary --> ownerReview[Owner reviews the candidate]
|
|
108
|
-
ownerReview -->|Changes needed| adjust[Owner changes code, spec, or acceptance criteria]
|
|
109
|
-
adjust --> ownerReview
|
|
110
|
-
ownerReview -->|Satisfied| pullRequest[Owner opens a Pull Request]
|
|
111
|
-
pullRequest --> merge[Owner merges the Pull Request]
|
|
112
|
-
|
|
113
|
-
linkStyle 0,1,2,3,13,14,15,21,22,23,24,25,26 stroke:#2e7d32,stroke-width:3px
|
|
70
|
+
linkStyle 0,1,2,3,4,5,17,18 stroke:#2e7d32,stroke-width:3px
|
|
114
71
|
```
|
|
115
72
|
|
|
116
73
|
## Workflow phases
|
|
117
74
|
|
|
118
|
-
Each spec has a `workflow.json` file that records its
|
|
75
|
+
Each spec has a `workflow.json` file that records its identity and current phase. The saved phase controls the next permitted workflow action. An agent's final message alone does not establish a completed action.
|
|
119
76
|
|
|
120
|
-
|
|
77
|
+
The default path is `.specs/<spec-id>/workflow.json`. The spec directory is [configurable](configuration.md).
|
|
121
78
|
|
|
122
79
|
| Phase | Meaning |
|
|
123
80
|
|---|---|
|
|
124
|
-
| `drafting-spec` |
|
|
125
|
-
| `ready-for-builder` | The
|
|
126
|
-
| `builder-running` | A builder run is active |
|
|
127
|
-
| `escalation-decision` | The owner must decide how to
|
|
128
|
-
| `builder-failed` | The builder
|
|
129
|
-
| `ready-for-verifier` |
|
|
130
|
-
| `verifier-running` | A verifier run is active |
|
|
131
|
-
| `findings-decision` | The owner must decide how to handle
|
|
132
|
-
| `candidate-ready` | The
|
|
133
|
-
|
|
134
|
-
Disabling Maestro, restarting Pi, or using `/resume` clears live session state. Maestro does not resume an incomplete workflow, the owner must clean it up manually.
|
|
81
|
+
| `drafting-spec` | The owner and Maestro are preparing the initial spec. |
|
|
82
|
+
| `ready-for-builder` | The approved spec or recorded owner decisions permit a builder run. |
|
|
83
|
+
| `builder-running` | A builder run is active. |
|
|
84
|
+
| `escalation-decision` | The owner must decide how to handle the current escalation. |
|
|
85
|
+
| `builder-failed` | The builder recorded a technical failure. The workflow stops. |
|
|
86
|
+
| `ready-for-verifier` | The builder completed the work and the verifier can start. |
|
|
87
|
+
| `verifier-running` | A verifier run is active. |
|
|
88
|
+
| `findings-decision` | The owner must decide how to handle every current finding. |
|
|
89
|
+
| `candidate-ready` | The verifier reported no findings, or the owner rejected every finding with a reason. The workflow is complete. |
|
|
135
90
|
|
|
136
91
|
## Spec approval
|
|
137
92
|
|
|
138
93
|
For the initial spec:
|
|
139
94
|
|
|
140
|
-
1. Maestro creates `spec.md` and `workflow.json` in `drafting-spec
|
|
141
|
-
2. The owner reviews and
|
|
142
|
-
3. `
|
|
143
|
-
4.
|
|
144
|
-
|
|
145
|
-
During `drafting-spec`, Maestro can use any available tool to edit the active `spec.md` with the owner. Maestro can also create and update visual prototypes in that spec's `prototypes/` directory with any available tool. During `escalation-decision` or `findings-decision`, the same permission applies to owner-directed contract revisions of the spec and its prototypes. This permission does not apply to other workflow artifacts or product files. Maestro cannot edit the spec or its prototypes in other phases.
|
|
95
|
+
1. Maestro creates `spec.md` and `workflow.json` in `drafting-spec` and prepares the spec with the owner.
|
|
96
|
+
2. The owner reviews the requirements, scope, technical decisions, and acceptance criteria.
|
|
97
|
+
3. Maestro asks the owner to inspect the current `spec.md` and reply `GREEN FLAG` to approve it and start the builder.
|
|
98
|
+
4. After that reply, Maestro saves `ready-for-builder` and starts the builder in the foreground.
|
|
146
99
|
|
|
147
|
-
|
|
100
|
+
Approval freezes the spec as the contract. The spec and its visual prototypes remain unchanged during builder and verifier execution. Contract revisions are limited to the decision phases described in [Spec revision](#spec-revision).
|
|
148
101
|
|
|
149
|
-
|
|
102
|
+
## Acceptance criteria
|
|
150
103
|
|
|
151
|
-
|
|
104
|
+
Each acceptance criterion has a unique ID and describes one observable result. It contains these parts:
|
|
152
105
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
Each acceptance criterion describes one observable result.
|
|
160
|
-
|
|
161
|
-
```text
|
|
162
|
-
Probe
|
|
163
|
-
How the behavior is verified.
|
|
164
|
-
|
|
165
|
-
Expected result
|
|
166
|
-
What the probe must observe.
|
|
167
|
-
|
|
168
|
-
Example
|
|
169
|
-
Specific starting conditions, input or action, and the exact expected result.
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
The builder and verifier each run every probe and compare the observed result with the expected result.
|
|
106
|
+
| Part | Content |
|
|
107
|
+
|---|---|
|
|
108
|
+
| Probe | Starting conditions and the action or observation that checks the behavior. |
|
|
109
|
+
| Expected result | The measurable result the probe observes. |
|
|
110
|
+
| Example | Concrete starting conditions, an input or action, and the exact expected result. |
|
|
173
111
|
|
|
174
112
|
## Escalations
|
|
175
113
|
|
|
176
|
-
An escalation
|
|
114
|
+
An escalation returns an implementation decision to the owner. It does not necessarily mean that a technical failure occurred. Examples include undefined behavior, a conflict with the spec, or a possible scope change.
|
|
177
115
|
|
|
178
|
-
|
|
116
|
+
Maestro presents the question, evidence, options, consequences, and next steps. The workflow pauses in `escalation-decision` until the owner decides.
|
|
179
117
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
- a possible scope change.
|
|
185
|
-
- a decision that affects verification or reversibility.
|
|
186
|
-
|
|
187
|
-
Each escalation presents a question, context and evidence, available options, consequences, next steps, and an optional recommendation.
|
|
188
|
-
|
|
189
|
-
While an escalation is unresolved, the workflow is paused in `escalation-decision` and the owner must decide how to proceed.
|
|
190
|
-
|
|
191
|
-
The owner can choose one of two paths:
|
|
192
|
-
|
|
193
|
-
- Continue with the current spec. Maestro records the decision and returns the workflow to `ready-for-builder` for another builder run.
|
|
194
|
-
- Change the approved spec. The owner revises and approves the spec, then the workflow returns to `ready-for-builder`.
|
|
118
|
+
| Owner choice | Result |
|
|
119
|
+
|---|---|
|
|
120
|
+
| Keep the current contract | Maestro records the answer and reason, returns to `ready-for-builder`, and starts another builder run. |
|
|
121
|
+
| Change the contract | The owner and Maestro revise the same spec and obtain renewed approval before another builder run. |
|
|
195
122
|
|
|
196
|
-
|
|
123
|
+
The escalation file remains available as history.
|
|
197
124
|
|
|
198
125
|
## Findings
|
|
199
126
|
|
|
200
|
-
|
|
127
|
+
Every current finding requires an owner decision, regardless of severity. Maestro explains the issue, evidence, practical effect, and available choices.
|
|
201
128
|
|
|
202
129
|
| Decision | Result |
|
|
203
130
|
|---|---|
|
|
204
|
-
| `reject` |
|
|
205
|
-
| `fix-code` | Keeps the current spec and returns
|
|
206
|
-
| Spec must change | The owner revises the spec from `findings-decision`; previous findings become historical. |
|
|
131
|
+
| `reject` | Records the owner's reason. If every finding is rejected, the workflow reaches `candidate-ready`. |
|
|
132
|
+
| `fix-code` | Keeps the current spec and returns to `ready-for-builder` for code fixes. |
|
|
207
133
|
|
|
208
|
-
|
|
134
|
+
Any `fix-code` decision requires another builder run, including when other findings are rejected. After the builder completes the fixes, the verifier checks the work again.
|
|
209
135
|
|
|
210
|
-
If
|
|
136
|
+
If the contract must change, the owner and Maestro use [Spec revision](#spec-revision) instead. Earlier findings then become historical context.
|
|
211
137
|
|
|
212
138
|
## Spec revision
|
|
213
139
|
|
|
214
|
-
|
|
140
|
+
Contract revisions are allowed only in `escalation-decision` or `findings-decision`. Maestro revises the same spec with the owner, including its prototypes when needed.
|
|
215
141
|
|
|
216
|
-
|
|
217
|
-
- `findings-decision`
|
|
142
|
+
After review and cleanup, Maestro asks the owner to inspect the revised spec and reply `GREEN FLAG` again. Maestro then records `ready-for-builder` and starts another builder run.
|
|
218
143
|
|
|
219
|
-
|
|
144
|
+
Previous escalations, findings, and handoffs remain as historical context. The revised spec is the contract for subsequent work.
|
|
220
145
|
|
|
221
|
-
|
|
146
|
+
## Verification boundary
|
|
147
|
+
|
|
148
|
+
The verifier can make temporary changes for probes. Before submitting its handoff, it restores the exact original contents of affected files and removes only files it created.
|
|
149
|
+
|
|
150
|
+
Cleanup relies on the verifier. If cleanup cannot finish safely, the verifier stops and reports the remaining changes.
|
|
222
151
|
|
|
223
152
|
## Workflow completion
|
|
224
153
|
|
|
225
|
-
The workflow ends at `candidate-ready
|
|
154
|
+
The workflow ends at `candidate-ready`. Maestro summarizes the changes, verification results, rejected findings and reasons, and relevant builder notes from the saved artifacts.
|
|
226
155
|
|
|
227
|
-
|
|
156
|
+
The owner performs the final review and controls any later Git use, pull request, or merge. Changes after completion are outside the completed verification.
|
|
228
157
|
|
|
229
158
|
## Stored artifacts
|
|
230
159
|
|
|
231
|
-
|
|
160
|
+
Maestro creates the spec directory with `spec.md`, `workflow.json`, and empty `handoffs/escalations/` and `prototypes/` directories. Builder and verifier handoff directories appear when those results are saved.
|
|
232
161
|
|
|
233
|
-
The default
|
|
162
|
+
The default layout after multiple runs is:
|
|
234
163
|
|
|
235
164
|
```text
|
|
236
165
|
.specs/<spec-id>/
|
|
237
166
|
├── spec.md
|
|
238
167
|
├── workflow.json
|
|
239
168
|
├── handoffs/
|
|
240
|
-
│ ├── builder
|
|
241
|
-
│ ├──
|
|
169
|
+
│ ├── builder/
|
|
170
|
+
│ │ ├── B1.json
|
|
171
|
+
│ │ └── B2.json
|
|
172
|
+
│ ├── verifier/
|
|
173
|
+
│ │ ├── V1.json
|
|
174
|
+
│ │ └── V2.json
|
|
242
175
|
│ └── escalations/
|
|
243
176
|
│ ├── E1.json
|
|
244
177
|
│ └── ...
|
|
245
178
|
└── prototypes/
|
|
246
179
|
```
|
|
247
180
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
181
|
+
Each new handoff gets the next number in its role's sequence. Maestro uses the latest handoff in each sequence as the active result, and earlier handoffs remain on the file system as references.
|
|
182
|
+
|
|
183
|
+
## Limitations
|
|
184
|
+
|
|
185
|
+
Maestro provides no automatic rollback, repair, or recovery for failed or interrupted workflows. The files that remain are available for owner inspection. The owner handles the workflow manually.
|
|
186
|
+
|
|
187
|
+
Disabling Maestro, restarting Pi, or using `/resume` clears live Maestro session state and leaves project files unchanged. Maestro starts disabled in a new or resumed session. Reactivating it does not reconstruct or resume a saved workflow.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@emiliosp/pi-maestro",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "A spec-driven multiagent development workflow for Pi.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -38,7 +38,6 @@
|
|
|
38
38
|
],
|
|
39
39
|
"imports": {
|
|
40
40
|
"#config/*": "./src/config/*",
|
|
41
|
-
"#git/*": "./src/git/*",
|
|
42
41
|
"#specs/*": "./src/specs/*",
|
|
43
42
|
"#artifacts/*": "./src/artifacts/*",
|
|
44
43
|
"#workflow/*": "./src/workflow/*",
|