@bigking67/pi-67 0.10.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/CHANGELOG.md +49 -0
- package/README.md +182 -0
- package/bin/pi-67.mjs +13 -0
- package/package.json +47 -0
- package/schemas/pi67-distro-manifest.schema.json +130 -0
- package/schemas/pi67-extension-registry.schema.json +110 -0
- package/schemas/pi67-publish-check.schema.json +122 -0
- package/schemas/pi67-state.schema.json +31 -0
- package/schemas/pi67-update-plan.schema.json +141 -0
- package/scripts/check.mjs +401 -0
- package/src/cli.mjs +108 -0
- package/src/commands/backups.mjs +124 -0
- package/src/commands/doctor.mjs +21 -0
- package/src/commands/extensions.mjs +184 -0
- package/src/commands/external.mjs +63 -0
- package/src/commands/install.mjs +48 -0
- package/src/commands/manifest.mjs +74 -0
- package/src/commands/publish-check.mjs +366 -0
- package/src/commands/report.mjs +20 -0
- package/src/commands/self-update.mjs +16 -0
- package/src/commands/skills.mjs +49 -0
- package/src/commands/smoke.mjs +18 -0
- package/src/commands/status.mjs +21 -0
- package/src/commands/themes.mjs +69 -0
- package/src/commands/update.mjs +138 -0
- package/src/commands/version.mjs +51 -0
- package/src/commands/xtalpi.mjs +69 -0
- package/src/data/distro-manifest.json +85 -0
- package/src/data/extension-registry.json +147 -0
- package/src/lib/args.mjs +87 -0
- package/src/lib/config-json.mjs +20 -0
- package/src/lib/distro-manifest.mjs +131 -0
- package/src/lib/distro-scripts.mjs +27 -0
- package/src/lib/extension-registry.mjs +250 -0
- package/src/lib/external-repos.mjs +71 -0
- package/src/lib/git.mjs +55 -0
- package/src/lib/npm-registry.mjs +288 -0
- package/src/lib/output.mjs +35 -0
- package/src/lib/paths.mjs +79 -0
- package/src/lib/platform.mjs +27 -0
- package/src/lib/shell-runner.mjs +40 -0
- package/src/lib/skill-policy.mjs +85 -0
- package/src/lib/state-store.mjs +31 -0
- package/src/lib/theme-policy.mjs +34 -0
- package/src/lib/update-plan.mjs +312 -0
- package/src/lib/update-safety.mjs +310 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.10.0]
|
|
4
|
+
|
|
5
|
+
- Initial npm manager CLI for pi-67.
|
|
6
|
+
- Adds cross-platform `pi-67` and `pi67` commands.
|
|
7
|
+
- Preserves user configuration and theme choices by default.
|
|
8
|
+
- Provides safe update, doctor, smoke, xtalpi, themes, skills, external, status,
|
|
9
|
+
report, extensions, backups, and version entrypoints.
|
|
10
|
+
- Reports npm manager update availability during `pi-67 update --check` and
|
|
11
|
+
exposes explicit `pi-67 self-update`.
|
|
12
|
+
- Adds `pi-67 publish-check` for npm publish readiness and Trusted Publishing
|
|
13
|
+
workflow validation.
|
|
14
|
+
- Adds `pi-67 manifest` for read-only package, extension, theme, shared skill,
|
|
15
|
+
external repo, and preserved runtime config ownership reporting.
|
|
16
|
+
- Adds `pi-67 manifest --validate` for standalone extension-registry policy
|
|
17
|
+
validation.
|
|
18
|
+
- Adds `pi-67 extensions list/doctor/inspect/plan` for registry-driven
|
|
19
|
+
extension ownership diagnostics without a generic overwrite update path.
|
|
20
|
+
- Adds `pi-67 backups list`, `pi-67 backups inspect`, and
|
|
21
|
+
`pi-67 backups restore` for repo-external runtime backup recovery.
|
|
22
|
+
- Adds `pi-67 update --strict-shared-skills` forwarding for Bash and Windows
|
|
23
|
+
PowerShell parity checks without changing the default preserve-user-skills
|
|
24
|
+
behavior.
|
|
25
|
+
- Adds explicit `actions`, `blocked`, and `warnings` fields to
|
|
26
|
+
`pi-67 update --check --json`, including planned writes, preserved paths,
|
|
27
|
+
strict shared-skill blockers, and dirty external-repo blockers.
|
|
28
|
+
- Adds `policy` metadata to `pi-67 update --check --json` and self-tests for
|
|
29
|
+
preserve-first update decisions across dirty runtime config, unsafe dirty
|
|
30
|
+
repo changes, theme assets, shared skills, external repos, and manager
|
|
31
|
+
self-update actions.
|
|
32
|
+
- Adds an update lifecycle guard that writes `~/.pi/pi67/locks/update.lock` and
|
|
33
|
+
snapshots preserved runtime files under `~/.pi/pi67/backups/` before real
|
|
34
|
+
update/repair execution.
|
|
35
|
+
- Restores backups only through the preserved runtime file allowlist and writes
|
|
36
|
+
a pre-restore backup before replacing current local config.
|
|
37
|
+
- Records missing preserved runtime slots in backup manifests, allowing restore
|
|
38
|
+
to remove a preserved file that was absent when the backup was created.
|
|
39
|
+
- Makes explicit theme changes safer by backing up runtime config before
|
|
40
|
+
`pi-67 themes set <name>` writes `settings.json`.
|
|
41
|
+
- Gates publish readiness on the ownership manifest so package, extension,
|
|
42
|
+
theme, shared-skill, external-repo, and runtime-config policies cannot drift
|
|
43
|
+
silently before npm publish.
|
|
44
|
+
- Centralizes extension-registry policy validation in a reusable library with
|
|
45
|
+
self-tests for duplicate ids, missing smoke gates, forbidden behavior,
|
|
46
|
+
unsupported patch modes, theme drift, shared-skill drift, dirty external-repo
|
|
47
|
+
drift, and unregistered managed extensions.
|
|
48
|
+
- Gates real publish readiness on npm scope visibility, so a missing package
|
|
49
|
+
namespace fails before the final `npm publish` step with a clear repair path.
|
package/README.md
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
# @bigking67/pi-67
|
|
2
|
+
|
|
3
|
+
`@bigking67/pi-67` provides the `pi-67` command for installing, updating,
|
|
4
|
+
diagnosing, and repairing the pi-67 Pi Coding Agent distribution.
|
|
5
|
+
|
|
6
|
+
## Install
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
npm install -g @bigking67/pi-67
|
|
10
|
+
pi-67 install
|
|
11
|
+
pi-67 update
|
|
12
|
+
pi-67 doctor
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Windows PowerShell uses the same public commands:
|
|
16
|
+
|
|
17
|
+
```powershell
|
|
18
|
+
npm install -g @bigking67/pi-67
|
|
19
|
+
pi-67 install
|
|
20
|
+
pi-67 update
|
|
21
|
+
pi-67 doctor
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Important update boundary
|
|
25
|
+
|
|
26
|
+
`pi update --extensions` is the upstream Pi command. It is not the pi-67
|
|
27
|
+
distribution updater.
|
|
28
|
+
|
|
29
|
+
Use this command for pi-67:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pi-67 update
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
If `pi update --extensions` was run manually, repair the pi-67 managed state:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pi-67 update --repair
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
`pi-67 update --check` reports whether the npm manager is outdated. Updating the
|
|
42
|
+
manager itself is explicit:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
pi-67 self-update
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
For automation, `pi-67 update --check --json` includes explicit `actions`,
|
|
49
|
+
`blocked`, and `warnings` arrays. Each action lists planned writes and preserved
|
|
50
|
+
paths, so update previews stay auditable instead of relying on prose output.
|
|
51
|
+
|
|
52
|
+
If the local manager may be stale, run the latest npm package for one repair:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npx -y @bigking67/pi-67@latest update --repair
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Safety defaults
|
|
59
|
+
|
|
60
|
+
`pi-67 update` preserves local runtime choices:
|
|
61
|
+
|
|
62
|
+
- existing `settings.json`
|
|
63
|
+
- existing `models.json`, `auth.json`, `mcp.json`, and `image-gen.json`
|
|
64
|
+
- the `theme` value inside `settings.json`
|
|
65
|
+
- user-added Pi packages
|
|
66
|
+
- user-added global skills
|
|
67
|
+
- dirty external repos such as browser67 or design-craft
|
|
68
|
+
|
|
69
|
+
Before a real `update` or `repair`, the npm manager acquires
|
|
70
|
+
`~/.pi/pi67/locks/update.lock` and snapshots preserved runtime files under
|
|
71
|
+
`~/.pi/pi67/backups/<timestamp>-update/`. This makes the public `npx -y
|
|
72
|
+
@bigking67/pi-67@latest update --repair` path safe even for in-place checkouts
|
|
73
|
+
where `settings.json` is tracked but user-owned.
|
|
74
|
+
|
|
75
|
+
Runtime backups are first-class CLI state:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
pi-67 backups list
|
|
79
|
+
pi-67 backups inspect <backup-id-or-path>
|
|
80
|
+
pi-67 backups restore --from <backup-id-or-path> --dry-run
|
|
81
|
+
pi-67 backups restore --from <backup-id-or-path> --yes
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
The restore command only restores preserved runtime files and writes a
|
|
85
|
+
pre-restore backup before overwriting current local config.
|
|
86
|
+
|
|
87
|
+
Theme changes are explicit only:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
pi-67 themes set gruvbox-dark
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
The explicit theme setter also writes a runtime backup before changing
|
|
94
|
+
`settings.json`; normal update never changes the selected theme.
|
|
95
|
+
|
|
96
|
+
The manager writes lightweight state outside the repo at `~/.pi/pi67/state.json`.
|
|
97
|
+
It records versions, paths, theme, provider/model, and commit information; it
|
|
98
|
+
does not store API keys.
|
|
99
|
+
|
|
100
|
+
## Main commands
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
pi-67 install
|
|
104
|
+
pi-67 update
|
|
105
|
+
pi-67 update --check
|
|
106
|
+
pi-67 update --repair
|
|
107
|
+
pi-67 self-update
|
|
108
|
+
pi-67 publish-check
|
|
109
|
+
pi-67 manifest
|
|
110
|
+
pi-67 manifest --validate
|
|
111
|
+
pi-67 extensions doctor
|
|
112
|
+
pi-67 extensions inspect xtalpi-pi-tools
|
|
113
|
+
pi-67 backups list
|
|
114
|
+
pi-67 backups inspect <backup-id-or-path>
|
|
115
|
+
pi-67 doctor
|
|
116
|
+
pi-67 smoke --quick
|
|
117
|
+
pi-67 status
|
|
118
|
+
pi-67 report
|
|
119
|
+
pi-67 version
|
|
120
|
+
pi-67 xtalpi health
|
|
121
|
+
pi-67 xtalpi smoke --quick
|
|
122
|
+
pi-67 themes current
|
|
123
|
+
pi-67 themes list
|
|
124
|
+
pi-67 skills inventory
|
|
125
|
+
pi-67 skills sync
|
|
126
|
+
pi-67 external list
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Ownership manifest
|
|
130
|
+
|
|
131
|
+
`pi-67 manifest` prints the distribution ownership boundary for npm packages,
|
|
132
|
+
runtime packages, local extensions, themes, shared skills, external repos, and
|
|
133
|
+
local runtime config files. It is read-only and documents what `pi-67 update`
|
|
134
|
+
may manage versus what it must only report.
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
pi-67 manifest
|
|
138
|
+
pi-67 manifest --json
|
|
139
|
+
pi-67 manifest --validate
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
`pi-67 update` preserves existing different global skills by default. Use
|
|
143
|
+
`pi-67 update --strict-shared-skills` only in CI/release parity checks when a
|
|
144
|
+
difference from the bundled `shared-skills/` baseline must block the update.
|
|
145
|
+
|
|
146
|
+
The manifest also embeds the extension registry from
|
|
147
|
+
`src/data/extension-registry.json`. New local providers, theme packages,
|
|
148
|
+
shared-skill packs, runtime packages, or external repos must declare owner,
|
|
149
|
+
install/update/repair strategy, config patch mode, and smoke gates there before
|
|
150
|
+
release. This keeps extension behavior explicit instead of scattering preserve
|
|
151
|
+
rules across scripts. `pi-67 extensions doctor` is the user-facing registry
|
|
152
|
+
diagnostic, and `pi-67 extensions inspect <id>` shows the exact owner/update
|
|
153
|
+
policy for one entry. `pi-67 manifest --validate`, `pi-67 publish-check`, and
|
|
154
|
+
release gates reuse the same registry validator so duplicate ids, missing smoke
|
|
155
|
+
gates, unsupported config patch modes, theme-selection drift, shared-skill
|
|
156
|
+
overwrite drift, and dirty external-repo update drift fail consistently.
|
|
157
|
+
|
|
158
|
+
## Publish readiness
|
|
159
|
+
|
|
160
|
+
`pi-67 publish-check` validates package metadata, npm namespace visibility,
|
|
161
|
+
first-publish confirmation, Trusted Publishing workflow drift,
|
|
162
|
+
`npm pack --dry-run`, and the ownership manifest release policy. Manifest
|
|
163
|
+
checks gate preserved runtime config files, required local extensions,
|
|
164
|
+
user-managed baseline packages, theme preservation, shared-skill preservation,
|
|
165
|
+
dirty external-repo blocking policy, and extension-registry policy.
|
|
166
|
+
|
|
167
|
+
Maintainers can verify the npm publish path before using GitHub Actions:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
pi-67 publish-check
|
|
171
|
+
pi-67 publish-check --json
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
The check validates version consistency, package metadata, npm scope readiness,
|
|
175
|
+
npm pack dry-run, and the Trusted Publishing workflow. Local `npm whoami` is
|
|
176
|
+
reported but is not required when publishing through GitHub Actions OIDC.
|
|
177
|
+
If it reports that `@bigking67` is missing, create or claim that npm user/org
|
|
178
|
+
scope first, or rename the package to a scope/name controlled by the maintainer.
|
|
179
|
+
For a package that has never been published, `publish-check --strict` blocks
|
|
180
|
+
until the maintainer explicitly passes `--allow-first-publish` after npm scope
|
|
181
|
+
and Trusted Publisher setup are complete. The GitHub workflow exposes this as
|
|
182
|
+
the `first_publish_confirm` input, which must equal `@bigking67/pi-67`.
|
package/bin/pi-67.mjs
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { main } from "../src/cli.mjs";
|
|
4
|
+
import { CliError } from "../src/lib/output.mjs";
|
|
5
|
+
|
|
6
|
+
main(process.argv.slice(2)).catch((error) => {
|
|
7
|
+
if (error instanceof CliError) {
|
|
8
|
+
console.error(`ERROR ${error.message}`);
|
|
9
|
+
process.exit(error.exitCode);
|
|
10
|
+
}
|
|
11
|
+
console.error(error?.stack || String(error));
|
|
12
|
+
process.exit(1);
|
|
13
|
+
});
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@bigking67/pi-67",
|
|
3
|
+
"version": "0.10.0",
|
|
4
|
+
"description": "Cross-platform manager CLI for the pi-67 Pi Coding Agent distribution.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"pi-67": "bin/pi-67.mjs",
|
|
8
|
+
"pi67": "bin/pi-67.mjs"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"bin/",
|
|
12
|
+
"src/",
|
|
13
|
+
"scripts/",
|
|
14
|
+
"schemas/",
|
|
15
|
+
"README.md",
|
|
16
|
+
"CHANGELOG.md"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"check": "node scripts/check.mjs",
|
|
20
|
+
"smoke": "node bin/pi-67.mjs --help && node bin/pi-67.mjs --agent-dir ../.. version --json && node bin/pi-67.mjs --agent-dir ../.. manifest --json && node bin/pi-67.mjs --agent-dir ../.. extensions doctor --json --no-remote && node bin/pi-67.mjs --agent-dir ../.. backups list --json && node bin/pi-67.mjs --agent-dir ../.. update --check --json --no-remote && node bin/pi-67.mjs --agent-dir ../.. update --check --json --no-remote --strict-shared-skills && node bin/pi-67.mjs --agent-dir ../.. --repo-root ../.. publish-check --json --no-remote && node bin/pi-67.mjs --dry-run self-update",
|
|
21
|
+
"prepublishOnly": "node scripts/check.mjs && node bin/pi-67.mjs --agent-dir ../.. --repo-root ../.. publish-check --quiet --strict --no-remote"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"pi",
|
|
25
|
+
"pi-67",
|
|
26
|
+
"coding-agent",
|
|
27
|
+
"agent",
|
|
28
|
+
"xtalpi"
|
|
29
|
+
],
|
|
30
|
+
"author": "bigKING67",
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "git+https://github.com/bigKING67/pi-67.git",
|
|
35
|
+
"directory": "packages/pi67-cli"
|
|
36
|
+
},
|
|
37
|
+
"bugs": {
|
|
38
|
+
"url": "https://github.com/bigKING67/pi-67/issues"
|
|
39
|
+
},
|
|
40
|
+
"homepage": "https://github.com/bigKING67/pi-67#readme",
|
|
41
|
+
"engines": {
|
|
42
|
+
"node": ">=20.0.0"
|
|
43
|
+
},
|
|
44
|
+
"publishConfig": {
|
|
45
|
+
"access": "public"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/bigKING67/pi-67/schemas/pi67-distro-manifest.schema.json",
|
|
4
|
+
"title": "pi-67 distro manifest",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": [
|
|
7
|
+
"schema",
|
|
8
|
+
"createdAt",
|
|
9
|
+
"ownership",
|
|
10
|
+
"commands",
|
|
11
|
+
"runtimeFiles",
|
|
12
|
+
"theme",
|
|
13
|
+
"sharedSkills",
|
|
14
|
+
"extensionRegistry",
|
|
15
|
+
"localExtensions",
|
|
16
|
+
"dependencyPackages",
|
|
17
|
+
"runtimePackages",
|
|
18
|
+
"externalRepos",
|
|
19
|
+
"summary"
|
|
20
|
+
],
|
|
21
|
+
"properties": {
|
|
22
|
+
"schema": {
|
|
23
|
+
"const": "pi67.distro-manifest.v1"
|
|
24
|
+
},
|
|
25
|
+
"createdAt": {
|
|
26
|
+
"type": "string"
|
|
27
|
+
},
|
|
28
|
+
"ownership": {
|
|
29
|
+
"type": "object"
|
|
30
|
+
},
|
|
31
|
+
"commands": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"required": ["update", "repair", "alwaysFreshRepair", "upstreamPiExtensions"]
|
|
34
|
+
},
|
|
35
|
+
"runtimeFiles": {
|
|
36
|
+
"type": "object",
|
|
37
|
+
"required": ["preserve", "templateOnly"]
|
|
38
|
+
},
|
|
39
|
+
"theme": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"required": ["packageName", "preserveSetting", "selection", "policy", "explicitCommands"],
|
|
42
|
+
"properties": {
|
|
43
|
+
"packageName": {
|
|
44
|
+
"type": "string"
|
|
45
|
+
},
|
|
46
|
+
"preserveSetting": {
|
|
47
|
+
"const": "settings.json:theme"
|
|
48
|
+
},
|
|
49
|
+
"selection": {
|
|
50
|
+
"type": "object",
|
|
51
|
+
"required": ["file", "path"],
|
|
52
|
+
"properties": {
|
|
53
|
+
"file": {
|
|
54
|
+
"const": "settings.json"
|
|
55
|
+
},
|
|
56
|
+
"path": {
|
|
57
|
+
"const": "theme"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"additionalProperties": true
|
|
61
|
+
},
|
|
62
|
+
"legacyPreserveFiles": {
|
|
63
|
+
"type": "array",
|
|
64
|
+
"items": {
|
|
65
|
+
"type": "string"
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"policy": {
|
|
69
|
+
"type": "string"
|
|
70
|
+
},
|
|
71
|
+
"explicitCommands": {
|
|
72
|
+
"type": "array",
|
|
73
|
+
"items": {
|
|
74
|
+
"type": "string"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"additionalProperties": true
|
|
79
|
+
},
|
|
80
|
+
"sharedSkills": {
|
|
81
|
+
"type": "object",
|
|
82
|
+
"required": ["sourceDir", "activeDirDefault", "policy", "activeDir"]
|
|
83
|
+
},
|
|
84
|
+
"extensionRegistry": {
|
|
85
|
+
"type": "object",
|
|
86
|
+
"required": ["schema", "governance", "extensions"],
|
|
87
|
+
"properties": {
|
|
88
|
+
"schema": {
|
|
89
|
+
"const": "pi67.extension-registry.v1"
|
|
90
|
+
},
|
|
91
|
+
"governance": {
|
|
92
|
+
"type": "object"
|
|
93
|
+
},
|
|
94
|
+
"extensions": {
|
|
95
|
+
"type": "array"
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
"localExtensions": {
|
|
100
|
+
"type": "array",
|
|
101
|
+
"items": {
|
|
102
|
+
"type": "object",
|
|
103
|
+
"required": ["name", "path", "required", "policy", "exists"]
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"dependencyPackages": {
|
|
107
|
+
"type": "array"
|
|
108
|
+
},
|
|
109
|
+
"runtimePackages": {
|
|
110
|
+
"type": "array"
|
|
111
|
+
},
|
|
112
|
+
"externalRepos": {
|
|
113
|
+
"type": "array"
|
|
114
|
+
},
|
|
115
|
+
"summary": {
|
|
116
|
+
"type": "object",
|
|
117
|
+
"required": [
|
|
118
|
+
"dependencies",
|
|
119
|
+
"runtimePackages",
|
|
120
|
+
"pi67ManagedRuntimePackages",
|
|
121
|
+
"userManagedRuntimePackages",
|
|
122
|
+
"localExtensions",
|
|
123
|
+
"missingLocalExtensions",
|
|
124
|
+
"externalRepos",
|
|
125
|
+
"runtimeFilesPreserved",
|
|
126
|
+
"registeredExtensions"
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/bigKING67/pi-67/schemas/pi67-extension-registry.schema.json",
|
|
4
|
+
"title": "pi-67 extension registry",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "governance", "extensions"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schema": {
|
|
9
|
+
"const": "pi67.extension-registry.v1"
|
|
10
|
+
},
|
|
11
|
+
"governance": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"required": ["defaultUserConfigPolicy", "forbiddenUpdateBehavior", "configPatchModes"],
|
|
14
|
+
"properties": {
|
|
15
|
+
"defaultUserConfigPolicy": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"minLength": 1
|
|
18
|
+
},
|
|
19
|
+
"forbiddenUpdateBehavior": {
|
|
20
|
+
"type": "array",
|
|
21
|
+
"minItems": 1,
|
|
22
|
+
"items": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"minLength": 1
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"configPatchModes": {
|
|
28
|
+
"type": "array",
|
|
29
|
+
"minItems": 1,
|
|
30
|
+
"items": {
|
|
31
|
+
"enum": ["merge-preserve", "template-only", "report-only"]
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"additionalProperties": false
|
|
36
|
+
},
|
|
37
|
+
"extensions": {
|
|
38
|
+
"type": "array",
|
|
39
|
+
"items": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"required": [
|
|
42
|
+
"id",
|
|
43
|
+
"kind",
|
|
44
|
+
"owner",
|
|
45
|
+
"installStrategy",
|
|
46
|
+
"updateStrategy",
|
|
47
|
+
"repairStrategy",
|
|
48
|
+
"configPatches",
|
|
49
|
+
"smoke"
|
|
50
|
+
],
|
|
51
|
+
"properties": {
|
|
52
|
+
"id": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"minLength": 1
|
|
55
|
+
},
|
|
56
|
+
"kind": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"minLength": 1
|
|
59
|
+
},
|
|
60
|
+
"owner": {
|
|
61
|
+
"enum": ["pi67-managed", "external", "user-managed"]
|
|
62
|
+
},
|
|
63
|
+
"installStrategy": {
|
|
64
|
+
"type": "string",
|
|
65
|
+
"minLength": 1
|
|
66
|
+
},
|
|
67
|
+
"updateStrategy": {
|
|
68
|
+
"type": "string",
|
|
69
|
+
"minLength": 1
|
|
70
|
+
},
|
|
71
|
+
"repairStrategy": {
|
|
72
|
+
"type": "string",
|
|
73
|
+
"minLength": 1
|
|
74
|
+
},
|
|
75
|
+
"configPatches": {
|
|
76
|
+
"type": "array",
|
|
77
|
+
"items": {
|
|
78
|
+
"type": "object",
|
|
79
|
+
"required": ["file", "path", "mode"],
|
|
80
|
+
"properties": {
|
|
81
|
+
"file": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"minLength": 1
|
|
84
|
+
},
|
|
85
|
+
"path": {
|
|
86
|
+
"type": "string",
|
|
87
|
+
"minLength": 1
|
|
88
|
+
},
|
|
89
|
+
"mode": {
|
|
90
|
+
"enum": ["merge-preserve", "template-only", "report-only"]
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"additionalProperties": false
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"smoke": {
|
|
97
|
+
"type": "array",
|
|
98
|
+
"minItems": 1,
|
|
99
|
+
"items": {
|
|
100
|
+
"type": "string",
|
|
101
|
+
"minLength": 1
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"additionalProperties": true
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
"additionalProperties": false
|
|
110
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/bigKING67/pi-67/schemas/pi67-publish-check.schema.json",
|
|
4
|
+
"title": "pi-67 npm publish check",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": [
|
|
7
|
+
"schema",
|
|
8
|
+
"createdAt",
|
|
9
|
+
"status",
|
|
10
|
+
"package",
|
|
11
|
+
"distro",
|
|
12
|
+
"paths",
|
|
13
|
+
"git",
|
|
14
|
+
"workflow",
|
|
15
|
+
"scope",
|
|
16
|
+
"target",
|
|
17
|
+
"manifest",
|
|
18
|
+
"registry",
|
|
19
|
+
"auth",
|
|
20
|
+
"pack",
|
|
21
|
+
"checks",
|
|
22
|
+
"blockers",
|
|
23
|
+
"warnings",
|
|
24
|
+
"nextSteps"
|
|
25
|
+
],
|
|
26
|
+
"properties": {
|
|
27
|
+
"schema": {
|
|
28
|
+
"const": "pi67.publish-check.v1"
|
|
29
|
+
},
|
|
30
|
+
"createdAt": {
|
|
31
|
+
"type": "string"
|
|
32
|
+
},
|
|
33
|
+
"status": {
|
|
34
|
+
"enum": ["ready", "ready_with_notes", "blocked"]
|
|
35
|
+
},
|
|
36
|
+
"package": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"required": ["name", "version", "root"]
|
|
39
|
+
},
|
|
40
|
+
"distro": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"required": ["version", "rootPackageVersion"]
|
|
43
|
+
},
|
|
44
|
+
"paths": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"required": ["repoRoot", "agentDir", "workflow"]
|
|
47
|
+
},
|
|
48
|
+
"git": {
|
|
49
|
+
"type": "object"
|
|
50
|
+
},
|
|
51
|
+
"workflow": {
|
|
52
|
+
"type": "object",
|
|
53
|
+
"required": ["ok", "file", "message"]
|
|
54
|
+
},
|
|
55
|
+
"scope": {
|
|
56
|
+
"type": "object",
|
|
57
|
+
"required": ["skipped", "ok", "blocking", "scoped", "scope", "message"]
|
|
58
|
+
},
|
|
59
|
+
"target": {
|
|
60
|
+
"type": "object",
|
|
61
|
+
"required": [
|
|
62
|
+
"skipped",
|
|
63
|
+
"ok",
|
|
64
|
+
"blocking",
|
|
65
|
+
"packageName",
|
|
66
|
+
"firstPublish",
|
|
67
|
+
"allowFirstPublish",
|
|
68
|
+
"code",
|
|
69
|
+
"message"
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
"manifest": {
|
|
73
|
+
"type": "object",
|
|
74
|
+
"required": ["summary", "release"],
|
|
75
|
+
"properties": {
|
|
76
|
+
"summary": {
|
|
77
|
+
"type": "object"
|
|
78
|
+
},
|
|
79
|
+
"release": {
|
|
80
|
+
"type": "object",
|
|
81
|
+
"required": ["ok", "message", "problems", "warnings"]
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"additionalProperties": true
|
|
85
|
+
},
|
|
86
|
+
"registry": {
|
|
87
|
+
"type": "object"
|
|
88
|
+
},
|
|
89
|
+
"auth": {
|
|
90
|
+
"type": "object"
|
|
91
|
+
},
|
|
92
|
+
"pack": {
|
|
93
|
+
"type": "object"
|
|
94
|
+
},
|
|
95
|
+
"checks": {
|
|
96
|
+
"type": "array",
|
|
97
|
+
"items": {
|
|
98
|
+
"type": "object",
|
|
99
|
+
"required": ["name", "ok", "message"]
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
"blockers": {
|
|
103
|
+
"type": "array",
|
|
104
|
+
"items": {
|
|
105
|
+
"type": "string"
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
"warnings": {
|
|
109
|
+
"type": "array",
|
|
110
|
+
"items": {
|
|
111
|
+
"type": "string"
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"nextSteps": {
|
|
115
|
+
"type": "array",
|
|
116
|
+
"items": {
|
|
117
|
+
"type": "string"
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"additionalProperties": true
|
|
122
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/bigKING67/pi-67/schemas/pi67-state.schema.json",
|
|
4
|
+
"title": "pi-67 local manager state",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "managerVersion", "agentDir"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schema": {
|
|
9
|
+
"const": "pi67.state.v1"
|
|
10
|
+
},
|
|
11
|
+
"managerVersion": {
|
|
12
|
+
"type": "string"
|
|
13
|
+
},
|
|
14
|
+
"agentDir": {
|
|
15
|
+
"type": "string"
|
|
16
|
+
},
|
|
17
|
+
"lastUpdateAt": {
|
|
18
|
+
"type": "string"
|
|
19
|
+
},
|
|
20
|
+
"lastKnownCommit": {
|
|
21
|
+
"type": "string"
|
|
22
|
+
},
|
|
23
|
+
"lastKnownVersion": {
|
|
24
|
+
"type": "string"
|
|
25
|
+
},
|
|
26
|
+
"lastTheme": {
|
|
27
|
+
"type": "string"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"additionalProperties": true
|
|
31
|
+
}
|