saypsst 0.0.0-stage → 0.2.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/package.json CHANGED
@@ -1,6 +1,47 @@
1
1
  {
2
2
  "name": "saypsst",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.2.0",
4
+ "description": "Install PSST on your site (npx saypsst init) and check it in production (npx saypsst doctor).",
5
+ "license": "UNLICENSED",
6
+ "type": "module",
7
+ "bin": {
8
+ "saypsst": "dist/bin.mjs"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "skills",
13
+ "schemas",
14
+ "README.md"
15
+ ],
16
+ "scripts": {
17
+ "typecheck": "tsc --noEmit",
18
+ "lint": "eslint src test scripts",
19
+ "test": "vitest run",
20
+ "test:next-build": "PSST_NEXT_BUILD=1 vitest run test/next-build.test.ts",
21
+ "build": "tsup && node scripts/check-dist.mjs",
22
+ "test:install": "PSST_INSTALL=1 vitest run test/e2e/install-matrix.test.ts"
23
+ },
24
+ "publishConfig": {
25
+ "access": "public",
26
+ "provenance": true
27
+ },
28
+ "engines": {
29
+ "node": ">=20"
30
+ },
31
+ "devDependencies": {
32
+ "@psst/content": "workspace:*",
33
+ "@psst/db": "workspace:*",
34
+ "@types/node": "20.19.43",
35
+ "@types/react": "19.3.0",
36
+ "@types/react-dom": "19.3.0",
37
+ "eslint": "^9",
38
+ "next": "16.4.3",
39
+ "playwright": "1.64.1",
40
+ "react": "19.3.0",
41
+ "react-dom": "19.3.0",
42
+ "tsup": "8.5.1",
43
+ "typescript": "5.9.3",
44
+ "typescript-eslint": "^8",
45
+ "zod": "4.6.7"
46
+ }
47
+ }
@@ -0,0 +1,158 @@
1
+ {
2
+ "title": "saypsst doctor --json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "type": "object",
5
+ "properties": {
6
+ "contract": {
7
+ "type": "string",
8
+ "pattern": "^1\\.(?:0|[1-9][0-9]{0,3})$",
9
+ "description": "The contract version; additions bump the minor"
10
+ },
11
+ "site": {
12
+ "anyOf": [
13
+ {
14
+ "type": "string",
15
+ "pattern": "^site_[a-z2-7]{16}$"
16
+ },
17
+ {
18
+ "type": "null"
19
+ }
20
+ ],
21
+ "description": "The public site id; null when the command failed before knowing it"
22
+ },
23
+ "command": {
24
+ "type": "string",
25
+ "const": "doctor"
26
+ },
27
+ "exit": {
28
+ "anyOf": [
29
+ {
30
+ "type": "number",
31
+ "const": 0
32
+ },
33
+ {
34
+ "type": "number",
35
+ "const": 1
36
+ },
37
+ {
38
+ "type": "number",
39
+ "const": 3
40
+ },
41
+ {
42
+ "type": "number",
43
+ "const": 4
44
+ }
45
+ ]
46
+ },
47
+ "base": {
48
+ "type": "string",
49
+ "description": "The origin probed: --url, or https://{domain}"
50
+ },
51
+ "checks": {
52
+ "type": "array",
53
+ "items": {
54
+ "type": "object",
55
+ "properties": {
56
+ "check": {
57
+ "type": "string",
58
+ "pattern": "^[a-z0-9_:/.-]{1,120}$"
59
+ },
60
+ "status": {
61
+ "type": "string",
62
+ "enum": [
63
+ "passed",
64
+ "failed",
65
+ "waiting",
66
+ "information"
67
+ ]
68
+ },
69
+ "detail": {
70
+ "type": "string"
71
+ },
72
+ "message": {
73
+ "type": "object",
74
+ "properties": {
75
+ "id": {
76
+ "type": "string",
77
+ "enum": [
78
+ "P01",
79
+ "P02",
80
+ "P03",
81
+ "P04",
82
+ "P05",
83
+ "P06",
84
+ "P07",
85
+ "P08",
86
+ "P09",
87
+ "P10",
88
+ "P11",
89
+ "P12",
90
+ "P13",
91
+ "P14",
92
+ "P15",
93
+ "P16",
94
+ "P20",
95
+ "P21",
96
+ "P22",
97
+ "P23",
98
+ "P24",
99
+ "P25",
100
+ "P26",
101
+ "P27",
102
+ "P28",
103
+ "P29",
104
+ "P30",
105
+ "P31",
106
+ "P32",
107
+ "P33",
108
+ "P34",
109
+ "P35",
110
+ "P36",
111
+ "P37",
112
+ "P38",
113
+ "P39",
114
+ "P40",
115
+ "P41",
116
+ "P42",
117
+ "P43",
118
+ "P44"
119
+ ]
120
+ },
121
+ "code": {
122
+ "type": "string",
123
+ "pattern": "^[a-z][a-z0-9_]{0,63}$"
124
+ },
125
+ "message": {
126
+ "type": "string",
127
+ "minLength": 1
128
+ }
129
+ },
130
+ "required": [
131
+ "id",
132
+ "code",
133
+ "message"
134
+ ],
135
+ "additionalProperties": false,
136
+ "description": "A message with its id; troubleshooting.md in the skill has one entry per id"
137
+ }
138
+ },
139
+ "required": [
140
+ "check",
141
+ "status",
142
+ "detail"
143
+ ],
144
+ "additionalProperties": false
145
+ }
146
+ }
147
+ },
148
+ "required": [
149
+ "contract",
150
+ "site",
151
+ "command",
152
+ "exit",
153
+ "base",
154
+ "checks"
155
+ ],
156
+ "additionalProperties": false,
157
+ "description": "npx saypsst doctor --json: every check; exit 1 when one failed, 3 when one is still waiting"
158
+ }
@@ -0,0 +1,135 @@
1
+ {
2
+ "title": "saypsst failure --json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "type": "object",
5
+ "properties": {
6
+ "contract": {
7
+ "type": "string",
8
+ "pattern": "^1\\.(?:0|[1-9][0-9]{0,3})$",
9
+ "description": "The contract version; additions bump the minor"
10
+ },
11
+ "site": {
12
+ "anyOf": [
13
+ {
14
+ "type": "string",
15
+ "pattern": "^site_[a-z2-7]{16}$"
16
+ },
17
+ {
18
+ "type": "null"
19
+ }
20
+ ],
21
+ "description": "The public site id; null when the command failed before knowing it"
22
+ },
23
+ "command": {
24
+ "anyOf": [
25
+ {
26
+ "type": "string",
27
+ "enum": [
28
+ "init",
29
+ "doctor",
30
+ "status"
31
+ ]
32
+ },
33
+ {
34
+ "type": "null"
35
+ }
36
+ ],
37
+ "description": "null for a usage failure of no known command"
38
+ },
39
+ "exit": {
40
+ "anyOf": [
41
+ {
42
+ "type": "number",
43
+ "const": 1
44
+ },
45
+ {
46
+ "type": "number",
47
+ "const": 2
48
+ },
49
+ {
50
+ "type": "number",
51
+ "const": 3
52
+ },
53
+ {
54
+ "type": "number",
55
+ "const": 4
56
+ }
57
+ ]
58
+ },
59
+ "error": {
60
+ "type": "object",
61
+ "properties": {
62
+ "id": {
63
+ "type": "string",
64
+ "enum": [
65
+ "P01",
66
+ "P02",
67
+ "P03",
68
+ "P04",
69
+ "P05",
70
+ "P06",
71
+ "P07",
72
+ "P08",
73
+ "P09",
74
+ "P10",
75
+ "P11",
76
+ "P12",
77
+ "P13",
78
+ "P14",
79
+ "P15",
80
+ "P16",
81
+ "P20",
82
+ "P21",
83
+ "P22",
84
+ "P23",
85
+ "P24",
86
+ "P25",
87
+ "P26",
88
+ "P27",
89
+ "P28",
90
+ "P29",
91
+ "P30",
92
+ "P31",
93
+ "P32",
94
+ "P33",
95
+ "P34",
96
+ "P35",
97
+ "P36",
98
+ "P37",
99
+ "P38",
100
+ "P39",
101
+ "P40",
102
+ "P41",
103
+ "P42",
104
+ "P43",
105
+ "P44"
106
+ ]
107
+ },
108
+ "code": {
109
+ "type": "string",
110
+ "pattern": "^[a-z][a-z0-9_]{0,63}$"
111
+ },
112
+ "message": {
113
+ "type": "string",
114
+ "minLength": 1
115
+ }
116
+ },
117
+ "required": [
118
+ "id",
119
+ "code",
120
+ "message"
121
+ ],
122
+ "additionalProperties": false,
123
+ "description": "A message with its id; troubleshooting.md in the skill has one entry per id"
124
+ }
125
+ },
126
+ "required": [
127
+ "contract",
128
+ "site",
129
+ "command",
130
+ "exit",
131
+ "error"
132
+ ],
133
+ "additionalProperties": false,
134
+ "description": "What every command prints with --json when it stops on a failure"
135
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "format": "psst.schemas/1",
3
+ "version": "0.2.0",
4
+ "contract": "1.0",
5
+ "commands": {
6
+ "init": "init.schema.json",
7
+ "doctor": "doctor.schema.json",
8
+ "status": "status.schema.json",
9
+ "failure": "failure.schema.json"
10
+ }
11
+ }
@@ -0,0 +1,174 @@
1
+ {
2
+ "title": "saypsst init --json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "type": "object",
5
+ "properties": {
6
+ "contract": {
7
+ "type": "string",
8
+ "pattern": "^1\\.(?:0|[1-9][0-9]{0,3})$",
9
+ "description": "The contract version; additions bump the minor"
10
+ },
11
+ "site": {
12
+ "anyOf": [
13
+ {
14
+ "type": "string",
15
+ "pattern": "^site_[a-z2-7]{16}$"
16
+ },
17
+ {
18
+ "type": "null"
19
+ }
20
+ ],
21
+ "description": "The public site id; null when the command failed before knowing it"
22
+ },
23
+ "command": {
24
+ "type": "string",
25
+ "const": "init"
26
+ },
27
+ "exit": {
28
+ "type": "number",
29
+ "const": 0
30
+ },
31
+ "mode": {
32
+ "type": "string",
33
+ "enum": [
34
+ "next",
35
+ "vercel_static",
36
+ "proxy"
37
+ ]
38
+ },
39
+ "domain": {
40
+ "type": "string"
41
+ },
42
+ "prefix": {
43
+ "type": "string"
44
+ },
45
+ "dryRun": {
46
+ "type": "boolean"
47
+ },
48
+ "steps": {
49
+ "type": "array",
50
+ "items": {
51
+ "type": "object",
52
+ "properties": {
53
+ "item": {
54
+ "type": "string",
55
+ "minLength": 1,
56
+ "description": "What the step is about: a file path, a dependency, the skill"
57
+ },
58
+ "status": {
59
+ "type": "string",
60
+ "enum": [
61
+ "written",
62
+ "updated",
63
+ "unchanged",
64
+ "edit",
65
+ "skipped",
66
+ "information"
67
+ ],
68
+ "description": "written/updated: init changed it; unchanged: already in place (✓); edit: init left the file alone, make the printed edit; skipped: not needed here; information: nothing to do"
69
+ },
70
+ "detail": {
71
+ "type": "string"
72
+ },
73
+ "edit": {
74
+ "description": "The exact edit to make by hand, for status edit",
75
+ "type": "string"
76
+ },
77
+ "message": {
78
+ "type": "object",
79
+ "properties": {
80
+ "id": {
81
+ "type": "string",
82
+ "enum": [
83
+ "P01",
84
+ "P02",
85
+ "P03",
86
+ "P04",
87
+ "P05",
88
+ "P06",
89
+ "P07",
90
+ "P08",
91
+ "P09",
92
+ "P10",
93
+ "P11",
94
+ "P12",
95
+ "P13",
96
+ "P14",
97
+ "P15",
98
+ "P16",
99
+ "P20",
100
+ "P21",
101
+ "P22",
102
+ "P23",
103
+ "P24",
104
+ "P25",
105
+ "P26",
106
+ "P27",
107
+ "P28",
108
+ "P29",
109
+ "P30",
110
+ "P31",
111
+ "P32",
112
+ "P33",
113
+ "P34",
114
+ "P35",
115
+ "P36",
116
+ "P37",
117
+ "P38",
118
+ "P39",
119
+ "P40",
120
+ "P41",
121
+ "P42",
122
+ "P43",
123
+ "P44"
124
+ ]
125
+ },
126
+ "code": {
127
+ "type": "string",
128
+ "pattern": "^[a-z][a-z0-9_]{0,63}$"
129
+ },
130
+ "message": {
131
+ "type": "string",
132
+ "minLength": 1
133
+ }
134
+ },
135
+ "required": [
136
+ "id",
137
+ "code",
138
+ "message"
139
+ ],
140
+ "additionalProperties": false,
141
+ "description": "A message with its id; troubleshooting.md in the skill has one entry per id"
142
+ }
143
+ },
144
+ "required": [
145
+ "item",
146
+ "status",
147
+ "detail"
148
+ ],
149
+ "additionalProperties": false
150
+ }
151
+ },
152
+ "next": {
153
+ "type": "array",
154
+ "items": {
155
+ "type": "string"
156
+ },
157
+ "description": "What to do next, in order"
158
+ }
159
+ },
160
+ "required": [
161
+ "contract",
162
+ "site",
163
+ "command",
164
+ "exit",
165
+ "mode",
166
+ "domain",
167
+ "prefix",
168
+ "dryRun",
169
+ "steps",
170
+ "next"
171
+ ],
172
+ "additionalProperties": false,
173
+ "description": "npx saypsst init --json, succeeded"
174
+ }
@@ -0,0 +1,127 @@
1
+ {
2
+ "title": "saypsst status --json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "type": "object",
5
+ "properties": {
6
+ "contract": {
7
+ "type": "string",
8
+ "pattern": "^1\\.(?:0|[1-9][0-9]{0,3})$",
9
+ "description": "The contract version; additions bump the minor"
10
+ },
11
+ "site": {
12
+ "anyOf": [
13
+ {
14
+ "type": "string",
15
+ "pattern": "^site_[a-z2-7]{16}$"
16
+ },
17
+ {
18
+ "type": "null"
19
+ }
20
+ ],
21
+ "description": "The public site id; null when the command failed before knowing it"
22
+ },
23
+ "command": {
24
+ "type": "string",
25
+ "const": "status"
26
+ },
27
+ "exit": {
28
+ "type": "number",
29
+ "const": 0
30
+ },
31
+ "domain": {
32
+ "type": "string"
33
+ },
34
+ "mode": {
35
+ "type": "string",
36
+ "enum": [
37
+ "next",
38
+ "vercel_static",
39
+ "proxy"
40
+ ]
41
+ },
42
+ "prefix": {
43
+ "type": "string"
44
+ },
45
+ "claimedRootPaths": {
46
+ "type": "array",
47
+ "items": {
48
+ "type": "string"
49
+ }
50
+ },
51
+ "pages": {
52
+ "type": "array",
53
+ "items": {
54
+ "type": "object",
55
+ "properties": {
56
+ "path": {
57
+ "type": "string"
58
+ },
59
+ "kind": {
60
+ "type": "string"
61
+ },
62
+ "title": {
63
+ "type": "string"
64
+ },
65
+ "state": {
66
+ "type": "string"
67
+ },
68
+ "version": {
69
+ "type": "string",
70
+ "description": "12-character version hash, as pages embed it in psst-version"
71
+ },
72
+ "updatedAt": {
73
+ "type": "string"
74
+ }
75
+ },
76
+ "required": [
77
+ "path",
78
+ "kind",
79
+ "title",
80
+ "state",
81
+ "version",
82
+ "updatedAt"
83
+ ],
84
+ "additionalProperties": false
85
+ }
86
+ },
87
+ "withdrawn": {
88
+ "type": "array",
89
+ "items": {
90
+ "type": "string"
91
+ }
92
+ },
93
+ "crawlerHits": {
94
+ "type": "object",
95
+ "properties": {
96
+ "status": {
97
+ "type": "string",
98
+ "const": "not_available"
99
+ },
100
+ "reason": {
101
+ "type": "string"
102
+ }
103
+ },
104
+ "required": [
105
+ "status",
106
+ "reason"
107
+ ],
108
+ "additionalProperties": false,
109
+ "description": "Crawler hits over 7 days; not exposed by the edge yet"
110
+ }
111
+ },
112
+ "required": [
113
+ "contract",
114
+ "site",
115
+ "command",
116
+ "exit",
117
+ "domain",
118
+ "mode",
119
+ "prefix",
120
+ "claimedRootPaths",
121
+ "pages",
122
+ "withdrawn",
123
+ "crawlerHits"
124
+ ],
125
+ "additionalProperties": false,
126
+ "description": "npx saypsst status --json"
127
+ }