mindsystem-cc 3.2.1 → 3.2.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/commands/ms/help.md +3 -22
- package/commands/ms/new-project.md +5 -14
- package/commands/ms/whats-new.md +3 -3
- package/mindsystem/templates/config.json +0 -11
- package/mindsystem/workflows/complete-milestone.md +0 -18
- package/mindsystem/workflows/execute-plan.md +1 -53
- package/mindsystem/workflows/plan-phase.md +0 -39
- package/mindsystem/workflows/transition.md +0 -74
- package/package.json +1 -1
- package/scripts/ms-linear/ms_linear/__pycache__/config.cpython-314.pyc +0 -0
- package/scripts/ms-linear/ms_linear/config.py +4 -2
- package/scripts/ms-linear-wrapper.sh +3 -2
package/commands/ms/help.md
CHANGED
|
@@ -82,10 +82,9 @@ Common deviations:
|
|
|
82
82
|
**`/ms:new-project`**
|
|
83
83
|
Initialize new project with brief and configuration.
|
|
84
84
|
|
|
85
|
-
- Use when: you want Mindsystem to set up `.planning/` and capture intent (new repo, or an existing repo where you
|
|
85
|
+
- Use when: you want Mindsystem to set up `.planning/` and capture intent (new repo, or an existing repo where you're adding/changing work).
|
|
86
86
|
- Creates `.planning/PROJECT.md` (vision and requirements)
|
|
87
|
-
- Creates `.planning/config.json` (workflow
|
|
88
|
-
- Asks for workflow mode (interactive/yolo) upfront
|
|
87
|
+
- Creates `.planning/config.json` (workflow settings)
|
|
89
88
|
- Commits initialization files to git
|
|
90
89
|
|
|
91
90
|
Usage: `/ms:new-project`
|
|
@@ -427,7 +426,7 @@ Usage: `/ms:update`
|
|
|
427
426
|
├── REQUIREMENTS.md # Scoped v1/v2 requirements
|
|
428
427
|
├── ROADMAP.md # Current phase breakdown
|
|
429
428
|
├── STATE.md # Project memory & context
|
|
430
|
-
├── config.json # Workflow
|
|
429
|
+
├── config.json # Workflow settings
|
|
431
430
|
├── research/ # Domain ecosystem research
|
|
432
431
|
├── todos/ # Captured ideas and tasks
|
|
433
432
|
│ ├── pending/ # Todos waiting to be worked on
|
|
@@ -457,24 +456,6 @@ Usage: `/ms:update`
|
|
|
457
456
|
└── 02-01-SUMMARY.md
|
|
458
457
|
```
|
|
459
458
|
|
|
460
|
-
## Workflow Modes
|
|
461
|
-
|
|
462
|
-
Set during `/ms:new-project`:
|
|
463
|
-
|
|
464
|
-
**Interactive Mode**
|
|
465
|
-
|
|
466
|
-
- Confirms each major decision
|
|
467
|
-
- Pauses at checkpoints for approval
|
|
468
|
-
- More guidance throughout
|
|
469
|
-
|
|
470
|
-
**YOLO Mode**
|
|
471
|
-
|
|
472
|
-
- Auto-approves most decisions
|
|
473
|
-
- Executes plans without confirmation
|
|
474
|
-
- Only stops for critical checkpoints
|
|
475
|
-
|
|
476
|
-
Change anytime by editing `.planning/config.json`
|
|
477
|
-
|
|
478
459
|
## Common Workflows
|
|
479
460
|
|
|
480
461
|
**Starting a new project (greenfield):**
|
|
@@ -217,28 +217,19 @@ Do not compress. Capture everything gathered.
|
|
|
217
217
|
|
|
218
218
|
<step name="workflow_preferences">
|
|
219
219
|
|
|
220
|
-
Ask
|
|
220
|
+
Ask workflow preferences in a single AskUserQuestion call (2 questions):
|
|
221
221
|
|
|
222
222
|
Use AskUserQuestion with questions array:
|
|
223
223
|
|
|
224
224
|
```
|
|
225
225
|
questions: [
|
|
226
|
-
{
|
|
227
|
-
header: "Mode",
|
|
228
|
-
question: "How do you want to work?",
|
|
229
|
-
multiSelect: false,
|
|
230
|
-
options: [
|
|
231
|
-
{ label: "YOLO (Recommended)", description: "Auto-approve, just execute" },
|
|
232
|
-
{ label: "Interactive", description: "Confirm at each step" }
|
|
233
|
-
]
|
|
234
|
-
},
|
|
235
226
|
{
|
|
236
227
|
header: "Depth",
|
|
237
228
|
question: "How thorough should planning be?",
|
|
238
229
|
multiSelect: false,
|
|
239
230
|
options: [
|
|
240
231
|
{ label: "Quick", description: "Ship fast (3-5 phases, 1-3 plans each)" },
|
|
241
|
-
{ label: "Standard", description: "Balanced scope and speed (5-8 phases, 3-5 plans each)" },
|
|
232
|
+
{ label: "Standard (Recommended)", description: "Balanced scope and speed (5-8 phases, 3-5 plans each)" },
|
|
242
233
|
{ label: "Comprehensive", description: "Thorough coverage (8-12 phases, 5-10 plans each)" }
|
|
243
234
|
]
|
|
244
235
|
},
|
|
@@ -263,7 +254,7 @@ questions: [
|
|
|
263
254
|
|
|
264
255
|
<step name="config">
|
|
265
256
|
|
|
266
|
-
Create `.planning/config.json` with chosen
|
|
257
|
+
Create `.planning/config.json` with chosen depth and parallelization using `templates/config.json` structure.
|
|
267
258
|
|
|
268
259
|
</step>
|
|
269
260
|
|
|
@@ -291,7 +282,7 @@ Present completion with next steps (see ~/.claude/mindsystem/references/continua
|
|
|
291
282
|
Project initialized:
|
|
292
283
|
|
|
293
284
|
- Project: .planning/PROJECT.md
|
|
294
|
-
- Config: .planning/config.json
|
|
285
|
+
- Config: .planning/config.json
|
|
295
286
|
[If .planning/codebase/ exists:] - Codebase: .planning/codebase/ (7 documents)
|
|
296
287
|
|
|
297
288
|
---
|
|
@@ -332,7 +323,7 @@ Skip research, define requirements from what you know, then create roadmap.
|
|
|
332
323
|
- [ ] PROJECT.md captures full context with evolutionary structure
|
|
333
324
|
- [ ] Requirements initialized as hypotheses (greenfield) or with inferred Validated (brownfield)
|
|
334
325
|
- [ ] Key Decisions table initialized
|
|
335
|
-
- [ ] config.json has
|
|
326
|
+
- [ ] config.json has depth and parallelization settings
|
|
336
327
|
- [ ] All committed to git
|
|
337
328
|
|
|
338
329
|
</success_criteria>
|
package/commands/ms/whats-new.md
CHANGED
|
@@ -38,7 +38,7 @@ STOP here if no VERSION file.
|
|
|
38
38
|
Fetch latest CHANGELOG.md from GitHub:
|
|
39
39
|
|
|
40
40
|
Use WebFetch tool with:
|
|
41
|
-
- URL: `https://raw.githubusercontent.com/rolandtolnay/
|
|
41
|
+
- URL: `https://raw.githubusercontent.com/rolandtolnay/mindsystem/main/CHANGELOG.md`
|
|
42
42
|
- Prompt: "Extract all version entries with their dates and changes. Return in Keep-a-Changelog format."
|
|
43
43
|
|
|
44
44
|
**If fetch fails:**
|
|
@@ -75,7 +75,7 @@ Format output clearly:
|
|
|
75
75
|
|
|
76
76
|
You're on the latest version.
|
|
77
77
|
|
|
78
|
-
[View full changelog](https://github.com/rolandtolnay/
|
|
78
|
+
[View full changelog](https://github.com/rolandtolnay/mindsystem/blob/main/CHANGELOG.md)
|
|
79
79
|
```
|
|
80
80
|
|
|
81
81
|
**If updates available:**
|
|
@@ -105,7 +105,7 @@ You're on the latest version.
|
|
|
105
105
|
|
|
106
106
|
---
|
|
107
107
|
|
|
108
|
-
[View full changelog](https://github.com/rolandtolnay/
|
|
108
|
+
[View full changelog](https://github.com/rolandtolnay/mindsystem/blob/main/CHANGELOG.md)
|
|
109
109
|
|
|
110
110
|
**To update:** `npx mindsystem-cc --global`
|
|
111
111
|
```
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
{
|
|
2
|
-
"mode": "interactive",
|
|
3
2
|
"depth": "standard",
|
|
4
3
|
"parallelization": {
|
|
5
4
|
"enabled": true,
|
|
@@ -9,16 +8,6 @@
|
|
|
9
8
|
"max_concurrent_agents": 3,
|
|
10
9
|
"min_plans_for_parallel": 2
|
|
11
10
|
},
|
|
12
|
-
"gates": {
|
|
13
|
-
"confirm_project": true,
|
|
14
|
-
"confirm_phases": true,
|
|
15
|
-
"confirm_roadmap": true,
|
|
16
|
-
"confirm_breakdown": true,
|
|
17
|
-
"confirm_plan": true,
|
|
18
|
-
"execute_next_plan": true,
|
|
19
|
-
"issues_review": true,
|
|
20
|
-
"confirm_transition": true
|
|
21
|
-
},
|
|
22
11
|
"safety": {
|
|
23
12
|
"always_confirm_destructive": true,
|
|
24
13
|
"always_confirm_external_services": true
|
|
@@ -90,8 +90,6 @@ cat .planning/config.json 2>/dev/null
|
|
|
90
90
|
|
|
91
91
|
</config-check>
|
|
92
92
|
|
|
93
|
-
<if mode="yolo">
|
|
94
|
-
|
|
95
93
|
```
|
|
96
94
|
⚡ Auto-approved: Milestone scope verification
|
|
97
95
|
|
|
@@ -102,22 +100,6 @@ Proceeding to stats gathering...
|
|
|
102
100
|
|
|
103
101
|
Proceed directly to gather_stats step.
|
|
104
102
|
|
|
105
|
-
</if>
|
|
106
|
-
|
|
107
|
-
<if mode="interactive" OR="custom with gates.confirm_milestone_scope true">
|
|
108
|
-
|
|
109
|
-
```
|
|
110
|
-
Ready to mark this milestone as shipped?
|
|
111
|
-
(yes / wait / adjust scope)
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
Wait for confirmation.
|
|
115
|
-
|
|
116
|
-
If "adjust scope": Ask which phases should be included.
|
|
117
|
-
If "wait": Stop, user will return when ready.
|
|
118
|
-
|
|
119
|
-
</if>
|
|
120
|
-
|
|
121
103
|
</step>
|
|
122
104
|
|
|
123
105
|
<step name="gather_stats">
|
|
@@ -83,7 +83,6 @@ cat .planning/config.json 2>/dev/null
|
|
|
83
83
|
```
|
|
84
84
|
</config-check>
|
|
85
85
|
|
|
86
|
-
<if mode="yolo">
|
|
87
86
|
```
|
|
88
87
|
⚡ Auto-approved: Execute {phase}-{plan}-PLAN.md
|
|
89
88
|
[Plan X of Y for Phase Z]
|
|
@@ -92,20 +91,6 @@ Starting execution...
|
|
|
92
91
|
```
|
|
93
92
|
|
|
94
93
|
Proceed directly to parse_segments step.
|
|
95
|
-
</if>
|
|
96
|
-
|
|
97
|
-
<if mode="interactive" OR="custom with gates.execute_next_plan true">
|
|
98
|
-
Present:
|
|
99
|
-
|
|
100
|
-
```
|
|
101
|
-
Found plan to execute: {phase}-{plan}-PLAN.md
|
|
102
|
-
[Plan X of Y for Phase Z]
|
|
103
|
-
|
|
104
|
-
Proceed with execution?
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
Wait for confirmation before proceeding.
|
|
108
|
-
</if>
|
|
109
94
|
</step>
|
|
110
95
|
|
|
111
96
|
<step name="record_start_time">
|
|
@@ -1465,21 +1450,15 @@ Before proceeding, check SUMMARY.md content.
|
|
|
1465
1450
|
|
|
1466
1451
|
If "Issues Encountered" is NOT "None":
|
|
1467
1452
|
|
|
1468
|
-
<if mode="yolo">
|
|
1469
1453
|
```
|
|
1470
1454
|
⚡ Auto-approved: Issues acknowledgment
|
|
1471
1455
|
⚠️ Note: Issues were encountered during execution:
|
|
1472
1456
|
- [Issue 1]
|
|
1473
1457
|
- [Issue 2]
|
|
1474
|
-
(Logged - continuing
|
|
1458
|
+
(Logged - continuing)
|
|
1475
1459
|
```
|
|
1476
1460
|
|
|
1477
1461
|
Continue without waiting.
|
|
1478
|
-
</if>
|
|
1479
|
-
|
|
1480
|
-
<if mode="interactive" OR="custom with gates.issues_review true">
|
|
1481
|
-
Present issues and wait for acknowledgment before proceeding.
|
|
1482
|
-
</if>
|
|
1483
1462
|
</step>
|
|
1484
1463
|
|
|
1485
1464
|
<step name="update_roadmap">
|
|
@@ -1670,7 +1649,6 @@ Identify the next unexecuted plan:
|
|
|
1670
1649
|
- Find the first PLAN.md file that has no matching SUMMARY.md
|
|
1671
1650
|
- Read its `<objective>` section
|
|
1672
1651
|
|
|
1673
|
-
<if mode="yolo">
|
|
1674
1652
|
```
|
|
1675
1653
|
Plan {phase}-{plan} complete.
|
|
1676
1654
|
Summary: .planning/phases/{phase-dir}/{phase}-{plan}-SUMMARY.md
|
|
@@ -1681,36 +1659,6 @@ Summary: .planning/phases/{phase-dir}/{phase}-{plan}-SUMMARY.md
|
|
|
1681
1659
|
```
|
|
1682
1660
|
|
|
1683
1661
|
Loop back to identify_plan step automatically.
|
|
1684
|
-
</if>
|
|
1685
|
-
|
|
1686
|
-
<if mode="interactive" OR="custom with gates.execute_next_plan true">
|
|
1687
|
-
```
|
|
1688
|
-
Plan {phase}-{plan} complete.
|
|
1689
|
-
Summary: .planning/phases/{phase-dir}/{phase}-{plan}-SUMMARY.md
|
|
1690
|
-
|
|
1691
|
-
{Y} of {X} plans complete for Phase {Z}.
|
|
1692
|
-
|
|
1693
|
-
---
|
|
1694
|
-
|
|
1695
|
-
## ▶ Next Up
|
|
1696
|
-
|
|
1697
|
-
**Phase {X}: [Phase Name]** — [goal from ROADMAP.md]
|
|
1698
|
-
|
|
1699
|
-
`/ms:execute-phase {phase-number}`
|
|
1700
|
-
|
|
1701
|
-
<sub>`/clear` first → fresh context window</sub>
|
|
1702
|
-
|
|
1703
|
-
---
|
|
1704
|
-
|
|
1705
|
-
**Also available:**
|
|
1706
|
-
- `/ms:verify-work {phase}` — manual acceptance testing before continuing
|
|
1707
|
-
- Review what was built before continuing
|
|
1708
|
-
|
|
1709
|
-
---
|
|
1710
|
-
```
|
|
1711
|
-
|
|
1712
|
-
Wait for user to clear and run next command.
|
|
1713
|
-
</if>
|
|
1714
1662
|
|
|
1715
1663
|
**STOP here if Route A applies. Do not continue to Step 3.**
|
|
1716
1664
|
|
|
@@ -629,46 +629,7 @@ See ~/.claude/mindsystem/references/scope-estimation.md for complete guidance.
|
|
|
629
629
|
</step>
|
|
630
630
|
|
|
631
631
|
<step name="confirm_breakdown">
|
|
632
|
-
<if mode="yolo">
|
|
633
632
|
Auto-approve and proceed to write_phase_prompt.
|
|
634
|
-
</if>
|
|
635
|
-
|
|
636
|
-
<if mode="interactive">
|
|
637
|
-
Present breakdown with wave structure:
|
|
638
|
-
|
|
639
|
-
```
|
|
640
|
-
Phase [X] breakdown:
|
|
641
|
-
|
|
642
|
-
## Execution Waves
|
|
643
|
-
|
|
644
|
-
**Wave 1 (parallel):**
|
|
645
|
-
{phase}-01: [Plan Name] [autonomous]
|
|
646
|
-
- Task: [brief]
|
|
647
|
-
- Task: [brief]
|
|
648
|
-
|
|
649
|
-
{phase}-02: [Plan Name] [autonomous]
|
|
650
|
-
- Task: [brief]
|
|
651
|
-
- Task: [brief]
|
|
652
|
-
|
|
653
|
-
**Wave 2 (parallel):**
|
|
654
|
-
{phase}-03: [Plan Name] (depends: 01, 02) [autonomous]
|
|
655
|
-
- Task: [brief]
|
|
656
|
-
|
|
657
|
-
**Wave 3:**
|
|
658
|
-
{phase}-04: [Plan Name] (depends: 03) [has checkpoint]
|
|
659
|
-
- Task: [brief]
|
|
660
|
-
- Checkpoint: [type]
|
|
661
|
-
|
|
662
|
-
---
|
|
663
|
-
Total: [N] plans in [M] waves
|
|
664
|
-
Parallel plans: [X]
|
|
665
|
-
Sequential plans: [Y]
|
|
666
|
-
|
|
667
|
-
Does this look right? (yes / adjust / start over)
|
|
668
|
-
```
|
|
669
|
-
|
|
670
|
-
Wait for confirmation. If "adjust": revise. If "start over": return to gather_phase_context.
|
|
671
|
-
</if>
|
|
672
633
|
</step>
|
|
673
634
|
|
|
674
635
|
<step name="write_phase_prompt">
|
|
@@ -60,8 +60,6 @@ cat .planning/config.json 2>/dev/null
|
|
|
60
60
|
|
|
61
61
|
**If all plans complete:**
|
|
62
62
|
|
|
63
|
-
<if mode="yolo">
|
|
64
|
-
|
|
65
63
|
```
|
|
66
64
|
⚡ Auto-approved: Transition Phase [X] → Phase [X+1]
|
|
67
65
|
Phase [X] complete — all [Y] plans finished.
|
|
@@ -71,16 +69,6 @@ Proceeding to mark done and advance...
|
|
|
71
69
|
|
|
72
70
|
Proceed directly to cleanup_handoff step.
|
|
73
71
|
|
|
74
|
-
</if>
|
|
75
|
-
|
|
76
|
-
<if mode="interactive" OR="custom with gates.confirm_transition true">
|
|
77
|
-
|
|
78
|
-
Ask: "Phase [X] complete — all [Y] plans finished. Ready to mark done and move to Phase [X+1]?"
|
|
79
|
-
|
|
80
|
-
Wait for confirmation before proceeding.
|
|
81
|
-
|
|
82
|
-
</if>
|
|
83
|
-
|
|
84
72
|
**If plans incomplete:**
|
|
85
73
|
|
|
86
74
|
**SAFETY RAIL: always_confirm_destructive applies here.**
|
|
@@ -409,8 +397,6 @@ Read ROADMAP.md to get the next phase's name and goal.
|
|
|
409
397
|
|
|
410
398
|
**If next phase exists:**
|
|
411
399
|
|
|
412
|
-
<if mode="yolo">
|
|
413
|
-
|
|
414
400
|
```
|
|
415
401
|
Phase [X] marked complete.
|
|
416
402
|
|
|
@@ -421,41 +407,10 @@ Next: Phase [X+1] — [Name]
|
|
|
421
407
|
|
|
422
408
|
Exit skill and invoke SlashCommand("/ms:plan-phase [X+1]")
|
|
423
409
|
|
|
424
|
-
</if>
|
|
425
|
-
|
|
426
|
-
<if mode="interactive" OR="custom with gates.confirm_transition true">
|
|
427
|
-
|
|
428
|
-
```
|
|
429
|
-
## ✓ Phase [X] Complete
|
|
430
|
-
|
|
431
|
-
---
|
|
432
|
-
|
|
433
|
-
## ▶ Next Up
|
|
434
|
-
|
|
435
|
-
**Phase [X+1]: [Name]** — [Goal from ROADMAP.md]
|
|
436
|
-
|
|
437
|
-
`/ms:plan-phase [X+1]`
|
|
438
|
-
|
|
439
|
-
<sub>`/clear` first → fresh context window</sub>
|
|
440
|
-
|
|
441
|
-
---
|
|
442
|
-
|
|
443
|
-
**Also available:**
|
|
444
|
-
- `/ms:discuss-phase [X+1]` — gather context first
|
|
445
|
-
- `/ms:research-phase [X+1]` — investigate unknowns
|
|
446
|
-
- Review roadmap
|
|
447
|
-
|
|
448
|
-
---
|
|
449
|
-
```
|
|
450
|
-
|
|
451
|
-
</if>
|
|
452
|
-
|
|
453
410
|
---
|
|
454
411
|
|
|
455
412
|
**Route B: Milestone complete (all phases done)**
|
|
456
413
|
|
|
457
|
-
<if mode="yolo">
|
|
458
|
-
|
|
459
414
|
```
|
|
460
415
|
Phase {X} marked complete.
|
|
461
416
|
|
|
@@ -466,35 +421,6 @@ Phase {X} marked complete.
|
|
|
466
421
|
|
|
467
422
|
Exit skill and invoke SlashCommand("/ms:complete-milestone {version}")
|
|
468
423
|
|
|
469
|
-
</if>
|
|
470
|
-
|
|
471
|
-
<if mode="interactive" OR="custom with gates.confirm_transition true">
|
|
472
|
-
|
|
473
|
-
```
|
|
474
|
-
## ✓ Phase {X}: {Phase Name} Complete
|
|
475
|
-
|
|
476
|
-
🎉 Milestone {version} is 100% complete — all {N} phases finished!
|
|
477
|
-
|
|
478
|
-
---
|
|
479
|
-
|
|
480
|
-
## ▶ Next Up
|
|
481
|
-
|
|
482
|
-
**Complete Milestone {version}** — archive and prepare for next
|
|
483
|
-
|
|
484
|
-
`/ms:complete-milestone {version}`
|
|
485
|
-
|
|
486
|
-
<sub>`/clear` first → fresh context window</sub>
|
|
487
|
-
|
|
488
|
-
---
|
|
489
|
-
|
|
490
|
-
**Also available:**
|
|
491
|
-
- Review accomplishments before archiving
|
|
492
|
-
|
|
493
|
-
---
|
|
494
|
-
```
|
|
495
|
-
|
|
496
|
-
</if>
|
|
497
|
-
|
|
498
424
|
</step>
|
|
499
425
|
|
|
500
426
|
</process>
|
package/package.json
CHANGED
|
Binary file
|
|
@@ -85,8 +85,10 @@ def load_config(config_path: Path | None = None) -> LinearConfig:
|
|
|
85
85
|
|
|
86
86
|
|
|
87
87
|
def find_config_file() -> Path | None:
|
|
88
|
-
"""Find .linear.json by searching upward from
|
|
89
|
-
|
|
88
|
+
"""Find .linear.json by searching upward from original working directory."""
|
|
89
|
+
# Use MS_LINEAR_CWD if set (passed from wrapper script), otherwise fall back to cwd
|
|
90
|
+
start_dir = os.environ.get("MS_LINEAR_CWD")
|
|
91
|
+
current = Path(start_dir) if start_dir else Path.cwd()
|
|
90
92
|
|
|
91
93
|
while current != current.parent:
|
|
92
94
|
config_path = current / ".linear.json"
|
|
@@ -8,14 +8,15 @@ if [ -f "$HOME/.local/bin/env" ]; then
|
|
|
8
8
|
fi
|
|
9
9
|
|
|
10
10
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
11
|
+
ORIGINAL_CWD="$(pwd)"
|
|
11
12
|
cd "$SCRIPT_DIR/ms-linear"
|
|
12
13
|
|
|
13
14
|
if command -v uv &> /dev/null; then
|
|
14
15
|
# Prefer uv if available (faster)
|
|
15
16
|
uv sync --quiet 2>/dev/null
|
|
16
|
-
uv run python -m ms_linear "$@"
|
|
17
|
+
MS_LINEAR_CWD="$ORIGINAL_CWD" uv run python -m ms_linear "$@"
|
|
17
18
|
else
|
|
18
19
|
# Fall back to pip
|
|
19
20
|
pip install -q -e . 2>/dev/null
|
|
20
|
-
python3 -m ms_linear "$@"
|
|
21
|
+
MS_LINEAR_CWD="$ORIGINAL_CWD" python3 -m ms_linear "$@"
|
|
21
22
|
fi
|