strikethroo 3.3.1 → 3.4.1
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 +113 -64
- package/dist/serve/archive.d.ts +9 -4
- package/dist/serve/archive.d.ts.map +1 -1
- package/dist/serve/archive.js +17 -12
- package/dist/serve/archive.js.map +1 -1
- package/dist/serve/self-review.d.ts +2 -1
- package/dist/serve/self-review.d.ts.map +1 -1
- package/dist/serve/self-review.js +28 -12
- package/dist/serve/self-review.js.map +1 -1
- package/dist/serve/server.d.ts.map +1 -1
- package/dist/serve/server.js +41 -13
- package/dist/serve/server.js.map +1 -1
- package/dist/serve/workspace-model.d.ts +8 -2
- package/dist/serve/workspace-model.d.ts.map +1 -1
- package/dist/serve/workspace-model.js +9 -3
- package/dist/serve/workspace-model.js.map +1 -1
- package/dist-web/assets/{arc-DRCx-gMC.js → arc-C-ogtLIm.js} +1 -1
- package/dist-web/assets/{architectureDiagram-3BPJPVTR-DW0V99nE.js → architectureDiagram-3BPJPVTR-nkGdEvf1.js} +1 -1
- package/dist-web/assets/{blockDiagram-GPEHLZMM-xb1rkbmJ.js → blockDiagram-GPEHLZMM-CNrRwqHp.js} +1 -1
- package/dist-web/assets/{c4Diagram-AAUBKEIU-Cq3lwY7p.js → c4Diagram-AAUBKEIU-BRjzDARB.js} +1 -1
- package/dist-web/assets/channel-BzlX77M7.js +1 -0
- package/dist-web/assets/{chunk-2J33WTMH-CeEqChWf.js → chunk-2J33WTMH-Bp_pvfLw.js} +1 -1
- package/dist-web/assets/{chunk-4BX2VUAB-9GSgOsjJ.js → chunk-4BX2VUAB-DeyvfLRg.js} +1 -1
- package/dist-web/assets/{chunk-55IACEB6-CLiRmzyS.js → chunk-55IACEB6-BxMm0LXy.js} +1 -1
- package/dist-web/assets/{chunk-727SXJPM-DG--W0no.js → chunk-727SXJPM-DyxKyD45.js} +1 -1
- package/dist-web/assets/{chunk-AQP2D5EJ-DZNmAPhJ.js → chunk-AQP2D5EJ-DQSRQuh9.js} +1 -1
- package/dist-web/assets/{chunk-FMBD7UC4-BTwbVjWx.js → chunk-FMBD7UC4-6yMs702R.js} +1 -1
- package/dist-web/assets/{chunk-ND2GUHAM-D6KQAdgq.js → chunk-ND2GUHAM-SEp7Y1t8.js} +1 -1
- package/dist-web/assets/{chunk-QZHKN3VN-BoYHG-jM.js → chunk-QZHKN3VN-BR7SKT8Z.js} +1 -1
- package/dist-web/assets/classDiagram-4FO5ZUOK-CTPQzIqG.js +1 -0
- package/dist-web/assets/classDiagram-v2-Q7XG4LA2-CTPQzIqG.js +1 -0
- package/dist-web/assets/{cose-bilkent-S5V4N54A-BzH81LP_.js → cose-bilkent-S5V4N54A-SrVFpopi.js} +1 -1
- package/dist-web/assets/{dagre-BM42HDAG-DQy6vdYM.js → dagre-BM42HDAG-DArHiSrA.js} +1 -1
- package/dist-web/assets/{diagram-2AECGRRQ-COZgtw1I.js → diagram-2AECGRRQ-zBRwfMFZ.js} +1 -1
- package/dist-web/assets/{diagram-5GNKFQAL-D2elLr4I.js → diagram-5GNKFQAL-CCphlrYy.js} +1 -1
- package/dist-web/assets/{diagram-KO2AKTUF-Cfqj8T7H.js → diagram-KO2AKTUF-DQfFXOUI.js} +1 -1
- package/dist-web/assets/{diagram-LMA3HP47-H0JdehEY.js → diagram-LMA3HP47-Cnm7C_co.js} +1 -1
- package/dist-web/assets/{diagram-OG6HWLK6-Dsr3unCt.js → diagram-OG6HWLK6-CUd_FHkt.js} +1 -1
- package/dist-web/assets/{erDiagram-TEJ5UH35-CP2km11i.js → erDiagram-TEJ5UH35-9qJKoD2K.js} +1 -1
- package/dist-web/assets/{flowDiagram-I6XJVG4X-C9LIScxa.js → flowDiagram-I6XJVG4X-T9QzEEWo.js} +1 -1
- package/dist-web/assets/{ganttDiagram-6RSMTGT7-4OVvsCuF.js → ganttDiagram-6RSMTGT7-lxVUAWYF.js} +1 -1
- package/dist-web/assets/{gitGraphDiagram-PVQCEYII-Dyn9WfHs.js → gitGraphDiagram-PVQCEYII-B--KTqnR.js} +1 -1
- package/dist-web/assets/index-4mY7Bck6.js +125 -0
- package/dist-web/assets/{index-xfGOanX1.js → index-BHy7Tp36.js} +1 -1
- package/dist-web/assets/index-BJUf2P-C.css +1 -0
- package/dist-web/assets/{index-Cv0uINTV.js → index-Fg3ZnLv0.js} +1 -1
- package/dist-web/assets/{infoDiagram-5YYISTIA-tJ1NXblL.js → infoDiagram-5YYISTIA-BBW9G-gg.js} +1 -1
- package/dist-web/assets/{ishikawaDiagram-YF4QCWOH-Co8fZXwS.js → ishikawaDiagram-YF4QCWOH-DIljDGWl.js} +1 -1
- package/dist-web/assets/{journeyDiagram-JHISSGLW-DRm3g5d2.js → journeyDiagram-JHISSGLW-CNJ5ZFBE.js} +1 -1
- package/dist-web/assets/{kanban-definition-UN3LZRKU-gowMEF43.js → kanban-definition-UN3LZRKU-DeJi9Lfy.js} +1 -1
- package/dist-web/assets/{linear-DJg92vhl.js → linear-BZQvCrMH.js} +1 -1
- package/dist-web/assets/{mermaid.core-lz1ixJtG.js → mermaid.core-D53rcRfU.js} +4 -4
- package/dist-web/assets/{mindmap-definition-RKZ34NQL-BojOlQzn.js → mindmap-definition-RKZ34NQL-Bh_OT2hJ.js} +1 -1
- package/dist-web/assets/{pieDiagram-4H26LBE5-BGz-0QbQ.js → pieDiagram-4H26LBE5-C69UM-AU.js} +1 -1
- package/dist-web/assets/{quadrantDiagram-W4KKPZXB-Cq1XiSF5.js → quadrantDiagram-W4KKPZXB-BbxGy6ea.js} +1 -1
- package/dist-web/assets/{requirementDiagram-4Y6WPE33-fx3FuipE.js → requirementDiagram-4Y6WPE33-Bd_sO3gW.js} +1 -1
- package/dist-web/assets/{sankeyDiagram-5OEKKPKP-BhBbTnuT.js → sankeyDiagram-5OEKKPKP-DeVwBmTq.js} +1 -1
- package/dist-web/assets/{sequenceDiagram-3UESZ5HK-DM6eAWX-.js → sequenceDiagram-3UESZ5HK-BLTklXWQ.js} +1 -1
- package/dist-web/assets/{stateDiagram-AJRCARHV-DEyR3m9A.js → stateDiagram-AJRCARHV-BNbQPkTO.js} +1 -1
- package/dist-web/assets/stateDiagram-v2-BHNVJYJU-CwsdWtI6.js +1 -0
- package/dist-web/assets/{timeline-definition-PNZ67QCA-bOE-T0FW.js → timeline-definition-PNZ67QCA-COPGrW-W.js} +1 -1
- package/dist-web/assets/{vennDiagram-CIIHVFJN-BsUEmu46.js → vennDiagram-CIIHVFJN-CZOYJanq.js} +1 -1
- package/dist-web/assets/{wardley-L42UT6IY-CjCi71_H.js → wardley-L42UT6IY-uW94lG5H.js} +1 -1
- package/dist-web/assets/{wardleyDiagram-YWT4CUSO-B4J4vjgs.js → wardleyDiagram-YWT4CUSO-H9ycljUp.js} +1 -1
- package/dist-web/assets/{xychartDiagram-2RQKCTM6-V6J5Ls6X.js → xychartDiagram-2RQKCTM6-A7RWpHKl.js} +1 -1
- package/dist-web/index.html +2 -2
- package/package.json +1 -1
- package/dist-web/assets/channel-C773KYJ9.js +0 -1
- package/dist-web/assets/classDiagram-4FO5ZUOK-BkTU4dUT.js +0 -1
- package/dist-web/assets/classDiagram-v2-Q7XG4LA2-BkTU4dUT.js +0 -1
- package/dist-web/assets/index-SsGK1uIl.js +0 -126
- package/dist-web/assets/index-TM-f3qoB.css +0 -1
- package/dist-web/assets/stateDiagram-v2-BHNVJYJU-CdIFraHn.js +0 -1
package/README.md
CHANGED
|
@@ -1,100 +1,149 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="docs/assets/strikethroo-hero.png" alt="Strikethroo: complex programming requests become atomic, validated tasks through staged, spec-driven refinement" width="100%">
|
|
3
|
+
</p>
|
|
2
4
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
+
<p align="center">
|
|
6
|
+
<strong>Spec-driven development that fits each codebase like a glove.</strong><br>
|
|
7
|
+
Plain-Markdown hooks teach the agent your conventions, so every plan, task, and run inherits them. No API keys, no extra tools to run.
|
|
8
|
+
</p>
|
|
5
9
|
|
|
6
|
-
|
|
10
|
+
<p align="center">
|
|
11
|
+
<a href="https://www.npmjs.com/package/strikethroo"><img src="https://img.shields.io/npm/v/strikethroo?style=flat-square&label=npm&color=BE376F&labelColor=2b2230" alt="npm version"></a>
|
|
12
|
+
<a href="https://github.com/e0ipso/strikethroo/actions/workflows/test.yml"><img src="https://img.shields.io/github/actions/workflow/status/e0ipso/strikethroo/test.yml?style=flat-square&label=tests&color=BE376F&labelColor=2b2230" alt="tests"></a>
|
|
13
|
+
<a href="package.json"><img src="https://img.shields.io/node/v/strikethroo?style=flat-square&color=BE376F&labelColor=2b2230" alt="node version"></a>
|
|
14
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-BE376F?style=flat-square&labelColor=2b2230" alt="MIT license"></a>
|
|
15
|
+
</p>
|
|
7
16
|
|
|
8
|
-
|
|
17
|
+
<p align="center">
|
|
18
|
+
<a href="https://mateuaguilo.com/strikethroo/workflow.html">Workflow</a> ·
|
|
19
|
+
<a href="https://mateuaguilo.com/strikethroo/customization.html">Customization</a> ·
|
|
20
|
+
<a href="https://mateuaguilo.com/strikethroo/visualizations.html">Visualizations</a> ·
|
|
21
|
+
<a href="https://mateuaguilo.com/strikethroo/faq.html">FAQ</a>
|
|
22
|
+
</p>
|
|
9
23
|
|
|
10
|
-
##
|
|
24
|
+
## Why Strikethroo?
|
|
11
25
|
|
|
12
|
-
|
|
26
|
+
<table>
|
|
27
|
+
<tr>
|
|
28
|
+
<td width="50%" valign="top">
|
|
13
29
|
|
|
14
|
-
|
|
15
|
-
# 1. Install the Strikethroo skills for your assistant
|
|
16
|
-
npx skills add e0ipso/strikethroo
|
|
30
|
+
<img src="docs/assets/icons/sliders-horizontal.svg" width="28" height="28" alt="" />
|
|
17
31
|
|
|
18
|
-
|
|
19
|
-
npx strikethroo init --harnesses claude --destination-directory .
|
|
20
|
-
```
|
|
32
|
+
### Bends to your conventions
|
|
21
33
|
|
|
22
|
-
|
|
34
|
+
Plain-Markdown hooks fire at nine points across the workflow; inject your test commands, standards, and domain rules so every plan, task, and run inherits them. No plugins, no code.
|
|
23
35
|
|
|
24
|
-
|
|
36
|
+
</td>
|
|
37
|
+
<td width="50%" valign="top">
|
|
25
38
|
|
|
26
|
-
|
|
39
|
+
<img src="docs/assets/icons/focus.svg" width="28" height="28" alt="" />
|
|
27
40
|
|
|
28
|
-
|
|
41
|
+
### Clean context per agent
|
|
29
42
|
|
|
30
|
-
|
|
43
|
+
Every step runs with a fresh, focused context: the planner sees only your work order, the task generator only the approved plan, each execution sub-agent only its single task. No context bleed, no drift.
|
|
31
44
|
|
|
32
|
-
|
|
45
|
+
</td>
|
|
46
|
+
</tr>
|
|
47
|
+
<tr>
|
|
48
|
+
<td width="50%" valign="top">
|
|
33
49
|
|
|
34
|
-
|
|
35
|
-
npx strikethroo serve
|
|
36
|
-
```
|
|
50
|
+
<img src="docs/assets/icons/scissors.svg" width="28" height="28" alt="" />
|
|
37
51
|
|
|
38
|
-
|
|
52
|
+
### No API keys
|
|
39
53
|
|
|
40
|
-
|
|
54
|
+
Runs inside the assistant you already use -- Claude Code, Codex, Cursor, OpenCode, or Copilot -- on the subscription you already pay for. Nothing to provision, host, or rotate.
|
|
41
55
|
|
|
42
|
-
|
|
56
|
+
</td>
|
|
57
|
+
<td>
|
|
43
58
|
|
|
44
|
-
|
|
59
|
+
<img src="docs/assets/icons/puzzle.svg" width="28" height="28" alt="" />
|
|
45
60
|
|
|
46
|
-
-
|
|
47
|
-
- `--no-open` — do not open the browser on start.
|
|
48
|
-
- `--workspace <path>` — override workspace root discovery.
|
|
61
|
+
### Harness-agnostic skills
|
|
49
62
|
|
|
50
|
-
|
|
63
|
+
The workflow ships as Agent Skills: one `SKILL.md` works on any harness supporting the format. Install once; the right skill auto-loads when you describe what you need.
|
|
51
64
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
- **💰 Works Within Subscriptions**: No additional API keys or costs required
|
|
65
|
+
</td>
|
|
66
|
+
<td width="50%" valign="top"></td>
|
|
67
|
+
</tr>
|
|
68
|
+
</table>
|
|
57
69
|
|
|
58
|
-
##
|
|
70
|
+
## Adapts to every codebase
|
|
59
71
|
|
|
60
|
-
|
|
72
|
+
Every codebase has its own conventions, and Strikethroo bends to them instead of imposing its own. Three plain-Markdown surfaces -- no plugins, no code:
|
|
61
73
|
|
|
62
|
-
|
|
63
|
-
- Installation and configuration
|
|
64
|
-
- Customization with hooks and templates
|
|
65
|
-
- Workflow patterns and best practices
|
|
66
|
-
- Architecture and design principles
|
|
74
|
+
[](docs/assets/strikethroo-customization.png)
|
|
67
75
|
|
|
68
|
-
|
|
76
|
+
### <img src="docs/assets/icons/waypoints.svg" width="28" height="28" alt="" /> Hooks
|
|
69
77
|
|
|
70
|
-
|
|
78
|
+
Fire at nine points across the workflow (before planning, after each phase, on errors, and more). Drop in your test commands, coding standards, and domain rules; every plan, task, and execution run inherits them.
|
|
71
79
|
|
|
72
|
-
|
|
80
|
+
### <img src="docs/assets/icons/file-text.svg" width="28" height="28" alt="" /> Templates
|
|
73
81
|
|
|
74
|
-
|
|
82
|
+
Define the shape of plans and tasks -- add your own sections and checklists.
|
|
75
83
|
|
|
76
|
-
|
|
84
|
+
### <img src="docs/assets/icons/book-open.svg" width="28" height="28" alt="" /> Project context
|
|
77
85
|
|
|
78
|
-
|
|
86
|
+
One file of domain knowledge every step reads.
|
|
79
87
|
|
|
80
|
-
|
|
81
|
-
2. **🔍 Refine the plan** → "Refine plan 1" (`st-refine-plan` skill — useful when a second assistant should red-team the plan)
|
|
82
|
-
3. **📋 Generate tasks** → "Generate tasks for plan 1" (`st-generate-tasks` skill)
|
|
83
|
-
4. **🚀 Execute blueprint** → "Execute the blueprint for plan 1" (`st-execute-blueprint` skill)
|
|
88
|
+
Hooks, templates, and a project-context file are all plain Markdown -- nothing to compile, no plugin API to learn. See the [Customization Guide](https://mateuaguilo.com/strikethroo/customization.html) for examples.
|
|
84
89
|
|
|
85
|
-
|
|
90
|
+
## Quick Start
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# 1. Bootstrap the shared workspace
|
|
94
|
+
npx strikethroo init --harnesses claude
|
|
95
|
+
|
|
96
|
+
# 2. Install the workflow skills
|
|
97
|
+
npx skills add e0ipso/strikethroo
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Requires Node.js 22+ and an assistant that supports the Agent Skills format.
|
|
101
|
+
|
|
102
|
+
## In your coding assistant
|
|
103
|
+
|
|
104
|
+
```mermaid
|
|
105
|
+
flowchart LR
|
|
106
|
+
A[Work Order] --> B[Plan]
|
|
107
|
+
B --> C{Review}
|
|
108
|
+
C -->|Edit| B
|
|
109
|
+
C -->|Approve| D[Tasks]
|
|
110
|
+
D --> E{Verify}
|
|
111
|
+
E --> G[Execute]
|
|
112
|
+
G --> H{Review}
|
|
113
|
+
H -->|Edit| G
|
|
114
|
+
H -->|Approve| J[Done]
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Three steps, each delivered as an Agent Skill that loads when you describe what you need:
|
|
118
|
+
|
|
119
|
+
| Step | Skill | Output |
|
|
120
|
+
|-------------|---------------------------------|---------------------------------------------------|
|
|
121
|
+
| **Plan** | `/st-create-plan <your prompt>` | `.ai/strikethroo/plans/64--auth/plan-64--auth.md` |
|
|
122
|
+
| **Tasks** | `/st-generate-tasks 64` | `.ai/strikethroo/plans/64--auth/tasks/*.md` |
|
|
123
|
+
| **Execute** | `/st-execute-blueprint 64` | Working code, one commit per phase |
|
|
124
|
+
|
|
125
|
+
Human review gates between steps catch scope creep before any code is written. Each step runs with clean context -- the planning agent sees only the work order, the task agent sees only the approved plan, and each execution sub-agent receives only its specific task.
|
|
126
|
+
|
|
127
|
+
See the [Workflow Guide](https://mateuaguilo.com/strikethroo/workflow.html) for the full step-by-step with advanced patterns. Once a plan exists, visualize its plans, tasks, and dependency graph in [Visualizations](https://mateuaguilo.com/strikethroo/visualizations.html).
|
|
128
|
+
|
|
129
|
+
## Visualize the data
|
|
130
|
+
Strikethroo comes with an optional **web application** to help you visualize your plans, tasks, and progress. No installation necessary, just execute the following command in a project using Strikethroo:
|
|
131
|
+
|
|
132
|
+
```shell
|
|
133
|
+
npx strikethroo serve
|
|
134
|
+
```
|
|
86
135
|
|
|
87
|
-
|
|
136
|
+
This will open a web page that will help you navigate your plans and their tasks, present or archived.
|
|
88
137
|
|
|
89
|
-
|
|
|
90
|
-
|
|
91
|
-
|
|
|
92
|
-
| 🖱️ **Cursor** | Cursor IDE | < 30 seconds |
|
|
93
|
-
| 💎 **Gemini** | Gemini CLI | < 30 seconds |
|
|
94
|
-
| 📝 **Open Code** | Open source | < 30 seconds |
|
|
95
|
-
| 🔮 **Codex** | Codex CLI | < 30 seconds |
|
|
96
|
-
| 🐙 **GitHub Copilot** | VS Code / JetBrains IDEs | < 30 seconds |
|
|
138
|
+
| Plans board | Plan detail page | Archive |
|
|
139
|
+
|-------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------|
|
|
140
|
+
| [](docs/assets/plans-board.png) | [](docs/assets/plan-detail-graph.png) | [](docs/assets/archive-all.png) |
|
|
97
141
|
|
|
98
|
-
##
|
|
142
|
+
## Documentation
|
|
99
143
|
|
|
100
|
-
|
|
144
|
+
- [Workflow Guide](https://mateuaguilo.com/strikethroo/workflow.html) -- Step-by-step workflow with visual guides
|
|
145
|
+
- [Customization Guide](https://mateuaguilo.com/strikethroo/customization.html) -- Hooks, templates, and project context
|
|
146
|
+
- [Reference](https://mateuaguilo.com/strikethroo/reference.html) -- Glossary and CLI reference
|
|
147
|
+
- [FAQ](https://mateuaguilo.com/strikethroo/faq.html) -- Answers to common questions
|
|
148
|
+
- [Visualizations](https://mateuaguilo.com/strikethroo/visualizations.html) -- See plans, tasks, and the dependency graph
|
|
149
|
+
- [Migrating from 1.x](https://mateuaguilo.com/strikethroo/migration.html) -- Upgrade from slash commands to Agent Skills
|
package/dist/serve/archive.d.ts
CHANGED
|
@@ -30,14 +30,19 @@ export type ArchiveResult = {
|
|
|
30
30
|
message: string;
|
|
31
31
|
};
|
|
32
32
|
/**
|
|
33
|
-
* Validates the archive preconditions for plan
|
|
34
|
-
*
|
|
35
|
-
* its directory from `plans/`
|
|
33
|
+
* Validates the archive preconditions for the plan whose composite directory
|
|
34
|
+
* `name` (`{id}--{slug}`) is given, under `root` (the absolute `.ai/strikethroo`
|
|
35
|
+
* directory) and, if they pass, atomically renames its directory from `plans/`
|
|
36
|
+
* into `archive/`, returning the refreshed model.
|
|
36
37
|
*
|
|
37
38
|
* On any precondition failure it performs zero filesystem changes and returns a
|
|
38
39
|
* typed failure with an actionable message. The only write it performs beyond
|
|
39
40
|
* the rename is creating the `archive/` directory if it does not yet exist,
|
|
40
41
|
* which is required for the rename's destination parent to resolve.
|
|
42
|
+
*
|
|
43
|
+
* Resolution is by composite `name` via {@link getPlanDetail}; the source and
|
|
44
|
+
* destination paths derive from the RESOLVED entry's `dir`/`name`, never from
|
|
45
|
+
* the raw request segment.
|
|
41
46
|
*/
|
|
42
|
-
export declare const archivePlan: (root: string,
|
|
47
|
+
export declare const archivePlan: (root: string, name: string) => Promise<ArchiveResult>;
|
|
43
48
|
//# sourceMappingURL=archive.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/serve/archive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAAiB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC9B;IACE,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,WAAW,GAAG,kBAAkB,GAAG,UAAU,GAAG,oBAAoB,GAAG,UAAU,CAAC;IAC1F,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN
|
|
1
|
+
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/serve/archive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAAiB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC9B;IACE,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,WAAW,GAAG,kBAAkB,GAAG,UAAU,GAAG,oBAAoB,GAAG,UAAU,CAAC;IAC1F,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW,GAAU,MAAM,MAAM,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,aAAa,CA6DnF,CAAC"}
|
package/dist/serve/archive.js
CHANGED
|
@@ -55,36 +55,41 @@ const fs = __importStar(require("fs"));
|
|
|
55
55
|
const path = __importStar(require("path"));
|
|
56
56
|
const workspace_model_1 = require("./workspace-model");
|
|
57
57
|
/**
|
|
58
|
-
* Validates the archive preconditions for plan
|
|
59
|
-
*
|
|
60
|
-
* its directory from `plans/`
|
|
58
|
+
* Validates the archive preconditions for the plan whose composite directory
|
|
59
|
+
* `name` (`{id}--{slug}`) is given, under `root` (the absolute `.ai/strikethroo`
|
|
60
|
+
* directory) and, if they pass, atomically renames its directory from `plans/`
|
|
61
|
+
* into `archive/`, returning the refreshed model.
|
|
61
62
|
*
|
|
62
63
|
* On any precondition failure it performs zero filesystem changes and returns a
|
|
63
64
|
* typed failure with an actionable message. The only write it performs beyond
|
|
64
65
|
* the rename is creating the `archive/` directory if it does not yet exist,
|
|
65
66
|
* which is required for the rename's destination parent to resolve.
|
|
67
|
+
*
|
|
68
|
+
* Resolution is by composite `name` via {@link getPlanDetail}; the source and
|
|
69
|
+
* destination paths derive from the RESOLVED entry's `dir`/`name`, never from
|
|
70
|
+
* the raw request segment.
|
|
66
71
|
*/
|
|
67
|
-
const archivePlan = async (root,
|
|
68
|
-
const detail = (0, workspace_model_1.getPlanDetail)(root,
|
|
72
|
+
const archivePlan = async (root, name) => {
|
|
73
|
+
const detail = (0, workspace_model_1.getPlanDetail)(root, name);
|
|
69
74
|
if (!detail) {
|
|
70
75
|
return {
|
|
71
76
|
ok: false,
|
|
72
77
|
reason: 'not-found',
|
|
73
|
-
message: `Plan ${
|
|
78
|
+
message: `Plan ${name} was not found.`,
|
|
74
79
|
};
|
|
75
80
|
}
|
|
76
81
|
if (detail.archived) {
|
|
77
82
|
return {
|
|
78
83
|
ok: false,
|
|
79
84
|
reason: 'already-archived',
|
|
80
|
-
message: `Plan ${
|
|
85
|
+
message: `Plan ${name} is already archived.`,
|
|
81
86
|
};
|
|
82
87
|
}
|
|
83
88
|
if (detail.state !== 'done') {
|
|
84
89
|
return {
|
|
85
90
|
ok: false,
|
|
86
91
|
reason: 'not-done',
|
|
87
|
-
message: `Plan ${
|
|
92
|
+
message: `Plan ${name} is not in the done state and cannot be archived.`,
|
|
88
93
|
};
|
|
89
94
|
}
|
|
90
95
|
const src = detail.dir;
|
|
@@ -93,7 +98,7 @@ const archivePlan = async (root, planId) => {
|
|
|
93
98
|
return {
|
|
94
99
|
ok: false,
|
|
95
100
|
reason: 'destination-exists',
|
|
96
|
-
message: `Plan ${
|
|
101
|
+
message: `Plan ${name} cannot be archived: a directory already exists at its archive location.`,
|
|
97
102
|
};
|
|
98
103
|
}
|
|
99
104
|
try {
|
|
@@ -106,16 +111,16 @@ const archivePlan = async (root, planId) => {
|
|
|
106
111
|
return {
|
|
107
112
|
ok: false,
|
|
108
113
|
reason: 'fs-error',
|
|
109
|
-
message: `Plan ${
|
|
114
|
+
message: `Plan ${name} could not be archived due to a filesystem error.`,
|
|
110
115
|
};
|
|
111
116
|
}
|
|
112
117
|
// Re-resolve so the returned model reflects the new archive/ location.
|
|
113
|
-
const moved = (0, workspace_model_1.getPlanDetail)(root,
|
|
118
|
+
const moved = (0, workspace_model_1.getPlanDetail)(root, name);
|
|
114
119
|
if (!moved) {
|
|
115
120
|
return {
|
|
116
121
|
ok: false,
|
|
117
122
|
reason: 'fs-error',
|
|
118
|
-
message: `Plan ${
|
|
123
|
+
message: `Plan ${name} was moved but could not be re-read.`,
|
|
119
124
|
};
|
|
120
125
|
}
|
|
121
126
|
return { ok: true, plan: moved };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/serve/archive.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,uDAA8D;AAe9D
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/serve/archive.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,uDAA8D;AAe9D;;;;;;;;;;;;;;GAcG;AACI,MAAM,WAAW,GAAG,KAAK,EAAE,IAAY,EAAE,IAAY,EAA0B,EAAE;IACtF,MAAM,MAAM,GAAG,IAAA,+BAAa,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,QAAQ,IAAI,iBAAiB;SACvC,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,kBAAkB;YAC1B,OAAO,EAAE,QAAQ,IAAI,uBAAuB;SAC7C,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,QAAQ,IAAI,mDAAmD;SACzE,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAErD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,oBAAoB;YAC5B,OAAO,EAAE,QAAQ,IAAI,0EAA0E;SAChG,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,2EAA2E;QAC3E,yDAAyD;QACzD,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,QAAQ,IAAI,mDAAmD;SACzE,CAAC;IACJ,CAAC;IAED,uEAAuE;IACvE,MAAM,KAAK,GAAG,IAAA,+BAAa,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,QAAQ,IAAI,sCAAsC;SAC5D,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACnC,CAAC,CAAC;AA7DW,QAAA,WAAW,eA6DtB"}
|
|
@@ -25,7 +25,8 @@ export declare const SELF_REVIEW_URL = "https://github.com/e0ipso/self-review";
|
|
|
25
25
|
* A presence check, matching the literal "binary is in path" contract: each
|
|
26
26
|
* `PATH` entry is probed for a regular file named `self-review` (plus the
|
|
27
27
|
* `PATHEXT` variants on Windows). It deliberately does not execute the binary,
|
|
28
|
-
* so it cannot hang and has no side effects.
|
|
28
|
+
* so it cannot hang and has no side effects. The result is cached in-memory
|
|
29
|
+
* keyed by the relevant environment inputs.
|
|
29
30
|
*/
|
|
30
31
|
export declare const isSelfReviewAvailable: (env?: Record<string, string | undefined>) => boolean;
|
|
31
32
|
/** Outcome of resolving and launching a self-review request. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-review.d.ts","sourceRoot":"","sources":["../../src/serve/self-review.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,qDAAqD;AACrD,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAEhD,iFAAiF;AACjF,eAAO,MAAM,eAAe,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"self-review.d.ts","sourceRoot":"","sources":["../../src/serve/self-review.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,qDAAqD;AACrD,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAEhD,iFAAiF;AACjF,eAAO,MAAM,eAAe,0CAA0C,CAAC;AAmCvE;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAK,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,KACpD,OAQF,CAAC;AAEF,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC3B,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,IAAI,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAED,oEAAoE;AACpE,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAC3D;AAWD;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,EACZ,YAAY,MAAM,KACjB;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CA4BvD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,YAAY,MAAM,EAClB,OAAM,UAAe,KACpB,YAwBF,CAAC"}
|
|
@@ -58,21 +58,19 @@ const child_process_1 = require("child_process");
|
|
|
58
58
|
exports.SELF_REVIEW_BINARY = 'self-review';
|
|
59
59
|
/** Where to obtain self-review; surfaced by the SPA when it is not installed. */
|
|
60
60
|
exports.SELF_REVIEW_URL = 'https://github.com/e0ipso/self-review';
|
|
61
|
-
/**
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
const
|
|
61
|
+
/** Cache key derived from the environment inputs that affect the PATH scan. */
|
|
62
|
+
const availabilityCacheKey = (env) => {
|
|
63
|
+
const pathVar = env.PATH ?? env.Path ?? '';
|
|
64
|
+
const pathext = process.platform === 'win32' ? (env.PATHEXT ?? '') : '';
|
|
65
|
+
return `${process.platform}:${pathVar}:${pathext}`;
|
|
66
|
+
};
|
|
67
|
+
/** In-memory cache so repeated `/api/capabilities` calls avoid re-scanning PATH. */
|
|
68
|
+
const availabilityCache = new Map();
|
|
69
|
+
const computeSelfReviewAvailable = (env, platform) => {
|
|
70
70
|
const pathVar = env.PATH ?? env.Path ?? '';
|
|
71
71
|
if (!pathVar)
|
|
72
72
|
return false;
|
|
73
|
-
const exts =
|
|
74
|
-
? (env.PATHEXT ?? '.EXE;.CMD;.BAT;.COM').split(';').filter(Boolean)
|
|
75
|
-
: [''];
|
|
73
|
+
const exts = platform === 'win32' ? (env.PATHEXT ?? '.EXE;.CMD;.BAT;.COM').split(';').filter(Boolean) : [''];
|
|
76
74
|
for (const dir of pathVar.split(path.delimiter).filter(Boolean)) {
|
|
77
75
|
for (const ext of exts) {
|
|
78
76
|
const candidate = path.join(dir, exports.SELF_REVIEW_BINARY + ext);
|
|
@@ -87,6 +85,24 @@ const isSelfReviewAvailable = (env = process.env) => {
|
|
|
87
85
|
}
|
|
88
86
|
return false;
|
|
89
87
|
};
|
|
88
|
+
/**
|
|
89
|
+
* Returns `true` when the `self-review` binary is found on the process `PATH`.
|
|
90
|
+
*
|
|
91
|
+
* A presence check, matching the literal "binary is in path" contract: each
|
|
92
|
+
* `PATH` entry is probed for a regular file named `self-review` (plus the
|
|
93
|
+
* `PATHEXT` variants on Windows). It deliberately does not execute the binary,
|
|
94
|
+
* so it cannot hang and has no side effects. The result is cached in-memory
|
|
95
|
+
* keyed by the relevant environment inputs.
|
|
96
|
+
*/
|
|
97
|
+
const isSelfReviewAvailable = (env = process.env) => {
|
|
98
|
+
const key = availabilityCacheKey(env);
|
|
99
|
+
const cached = availabilityCache.get(key);
|
|
100
|
+
if (cached !== undefined)
|
|
101
|
+
return cached;
|
|
102
|
+
const result = computeSelfReviewAvailable(env, process.platform);
|
|
103
|
+
availabilityCache.set(key, result);
|
|
104
|
+
return result;
|
|
105
|
+
};
|
|
90
106
|
exports.isSelfReviewAvailable = isSelfReviewAvailable;
|
|
91
107
|
/** Spawns the binary detached and unref'd so it outlives the request. */
|
|
92
108
|
const spawnDetached = (command, args) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-review.js","sourceRoot":"","sources":["../../src/serve/self-review.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAsC;AAEtC,qDAAqD;AACxC,QAAA,kBAAkB,GAAG,aAAa,CAAC;AAEhD,iFAAiF;AACpE,QAAA,eAAe,GAAG,uCAAuC,CAAC;AAEvE
|
|
1
|
+
{"version":3,"file":"self-review.js","sourceRoot":"","sources":["../../src/serve/self-review.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/serve/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAM7B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAKrC,uCAAuC;AACvC,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,EAAE,OAAO,CAAC;IACd,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,8EAA8E;AAC9E,MAAM,MAAM,UAAU,GAAG,CACvB,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,GAAG,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KACpC,OAAO,CAAC;AAEb,uDAAuD;AACvD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,MAAM,EAAE,SAAS,CAAC;CACnB;AA0CD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,QAAO,MAAyD,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/serve/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAM7B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAKrC,uCAAuC;AACvC,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,EAAE,OAAO,CAAC;IACd,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,8EAA8E;AAC9E,MAAM,MAAM,UAAU,GAAG,CACvB,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,GAAG,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KACpC,OAAO,CAAC;AAEb,uDAAuD;AACvD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,MAAM,EAAE,SAAS,CAAC;CACnB;AA0CD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,QAAO,MAAyD,CAAC;AA0U9F;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,YAAY,KAAG,OAAO,CAAC,WAAW,CAgDnE,CAAC"}
|
package/dist/serve/server.js
CHANGED
|
@@ -116,21 +116,49 @@ const sendJson = (res, status, body) => {
|
|
|
116
116
|
});
|
|
117
117
|
res.end(payload);
|
|
118
118
|
};
|
|
119
|
-
/**
|
|
119
|
+
/** The composite plan key grammar: `{id}--{slug}`, e.g. `28--plan-name`. */
|
|
120
|
+
const COMPOSITE_KEY = /^[0-9]+--[a-z0-9-]+$/;
|
|
121
|
+
/**
|
|
122
|
+
* Validates a captured route segment as a composite plan key (`{id}--{slug}`).
|
|
123
|
+
* URL-decodes exactly once, then accepts the result only if it is non-empty,
|
|
124
|
+
* carries no path separator (`/`, `\`), no `..`, no NUL byte, no leading `.`,
|
|
125
|
+
* and matches the composite grammar. The grammar already excludes separators
|
|
126
|
+
* and dots; the explicit checks are defense-in-depth. Returns the validated key
|
|
127
|
+
* string, or `null`. No path is ever constructed from the segment.
|
|
128
|
+
*/
|
|
129
|
+
const validateCompositeKey = (segment) => {
|
|
130
|
+
let decoded;
|
|
131
|
+
try {
|
|
132
|
+
decoded = decodeURIComponent(segment);
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
if (decoded === '')
|
|
138
|
+
return null;
|
|
139
|
+
if (decoded.includes('/') || decoded.includes('\\') || decoded.includes('..'))
|
|
140
|
+
return null;
|
|
141
|
+
if (decoded.includes('\0'))
|
|
142
|
+
return null;
|
|
143
|
+
if (decoded.startsWith('.'))
|
|
144
|
+
return null;
|
|
145
|
+
if (!COMPOSITE_KEY.test(decoded))
|
|
146
|
+
return null;
|
|
147
|
+
return decoded;
|
|
148
|
+
};
|
|
149
|
+
/** Parses `/api/plans/:key` -> composite key, or `null` if it fails validation. */
|
|
120
150
|
const parsePlanId = (pathname) => {
|
|
121
151
|
const match = /^\/api\/plans\/([^/]+)\/?$/.exec(pathname);
|
|
122
152
|
if (!match || match[1] === undefined)
|
|
123
153
|
return null;
|
|
124
|
-
|
|
125
|
-
return Number.isInteger(id) && id >= 0 ? id : null;
|
|
154
|
+
return validateCompositeKey(match[1]);
|
|
126
155
|
};
|
|
127
|
-
/** Parses `/api/plans/:
|
|
156
|
+
/** Parses `/api/plans/:key/archive` -> composite key, or `null` if it fails validation. */
|
|
128
157
|
const parseArchivePlanId = (pathname) => {
|
|
129
158
|
const match = /^\/api\/plans\/([^/]+)\/archive\/?$/.exec(pathname);
|
|
130
159
|
if (!match || match[1] === undefined)
|
|
131
160
|
return null;
|
|
132
|
-
|
|
133
|
-
return Number.isInteger(id) && id >= 0 ? id : null;
|
|
161
|
+
return validateCompositeKey(match[1]);
|
|
134
162
|
};
|
|
135
163
|
/**
|
|
136
164
|
* Handles `POST /api/plans/:id/archive`: delegates entirely to the {@link
|
|
@@ -138,12 +166,12 @@ const parseArchivePlanId = (pathname) => {
|
|
|
138
166
|
* without duplicating validation. Returns `true` once it owns the response.
|
|
139
167
|
*/
|
|
140
168
|
const handleArchive = (res, root, pathname) => {
|
|
141
|
-
const
|
|
142
|
-
if (
|
|
169
|
+
const key = parseArchivePlanId(pathname);
|
|
170
|
+
if (key === null) {
|
|
143
171
|
sendJson(res, 400, { error: 'Invalid plan id.' });
|
|
144
172
|
return true;
|
|
145
173
|
}
|
|
146
|
-
(0, archive_1.archivePlan)(root,
|
|
174
|
+
(0, archive_1.archivePlan)(root, key)
|
|
147
175
|
.then(result => {
|
|
148
176
|
if (result.ok) {
|
|
149
177
|
sendJson(res, 200, result.plan);
|
|
@@ -184,14 +212,14 @@ const handleApi = (res, root, pathname) => {
|
|
|
184
212
|
return true;
|
|
185
213
|
}
|
|
186
214
|
if (/^\/api\/plans\/[^/]+\/?$/.test(pathname)) {
|
|
187
|
-
const
|
|
188
|
-
if (
|
|
215
|
+
const key = parsePlanId(pathname);
|
|
216
|
+
if (key === null) {
|
|
189
217
|
sendJson(res, 404, { error: 'Invalid plan id' });
|
|
190
218
|
return true;
|
|
191
219
|
}
|
|
192
|
-
const detail = (0, workspace_model_1.getPlanDetail)(root,
|
|
220
|
+
const detail = (0, workspace_model_1.getPlanDetail)(root, key);
|
|
193
221
|
if (!detail) {
|
|
194
|
-
sendJson(res, 404, { error: `Plan ${
|
|
222
|
+
sendJson(res, 404, { error: `Plan ${key} not found` });
|
|
195
223
|
return true;
|
|
196
224
|
}
|
|
197
225
|
sendJson(res, 200, detail);
|
package/dist/serve/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/serve/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/serve/server.ts"],"names":[],"mappings":"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"}
|