@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.
Files changed (46) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +182 -0
  3. package/bin/pi-67.mjs +13 -0
  4. package/package.json +47 -0
  5. package/schemas/pi67-distro-manifest.schema.json +130 -0
  6. package/schemas/pi67-extension-registry.schema.json +110 -0
  7. package/schemas/pi67-publish-check.schema.json +122 -0
  8. package/schemas/pi67-state.schema.json +31 -0
  9. package/schemas/pi67-update-plan.schema.json +141 -0
  10. package/scripts/check.mjs +401 -0
  11. package/src/cli.mjs +108 -0
  12. package/src/commands/backups.mjs +124 -0
  13. package/src/commands/doctor.mjs +21 -0
  14. package/src/commands/extensions.mjs +184 -0
  15. package/src/commands/external.mjs +63 -0
  16. package/src/commands/install.mjs +48 -0
  17. package/src/commands/manifest.mjs +74 -0
  18. package/src/commands/publish-check.mjs +366 -0
  19. package/src/commands/report.mjs +20 -0
  20. package/src/commands/self-update.mjs +16 -0
  21. package/src/commands/skills.mjs +49 -0
  22. package/src/commands/smoke.mjs +18 -0
  23. package/src/commands/status.mjs +21 -0
  24. package/src/commands/themes.mjs +69 -0
  25. package/src/commands/update.mjs +138 -0
  26. package/src/commands/version.mjs +51 -0
  27. package/src/commands/xtalpi.mjs +69 -0
  28. package/src/data/distro-manifest.json +85 -0
  29. package/src/data/extension-registry.json +147 -0
  30. package/src/lib/args.mjs +87 -0
  31. package/src/lib/config-json.mjs +20 -0
  32. package/src/lib/distro-manifest.mjs +131 -0
  33. package/src/lib/distro-scripts.mjs +27 -0
  34. package/src/lib/extension-registry.mjs +250 -0
  35. package/src/lib/external-repos.mjs +71 -0
  36. package/src/lib/git.mjs +55 -0
  37. package/src/lib/npm-registry.mjs +288 -0
  38. package/src/lib/output.mjs +35 -0
  39. package/src/lib/paths.mjs +79 -0
  40. package/src/lib/platform.mjs +27 -0
  41. package/src/lib/shell-runner.mjs +40 -0
  42. package/src/lib/skill-policy.mjs +85 -0
  43. package/src/lib/state-store.mjs +31 -0
  44. package/src/lib/theme-policy.mjs +34 -0
  45. package/src/lib/update-plan.mjs +312 -0
  46. 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
+ }