@mriekki/project-forge 1.0.0 → 2.0.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/README.md +135 -135
- package/assets/components.json +33 -33
- package/assets/core/distribution.json +66 -66
- package/assets/deployment/distribution.json +54 -54
- package/assets/generated/ASSEMBLY.json +11 -11
- package/assets/generated/core/core/process/PROJECT_FORGE_ENGINEERING_GUIDE.md +3 -3
- package/assets/generated/core/core/skills/deploy/SKILL.md +1 -1
- package/assets/generated/core/core/skills/deployment-readiness/SKILL.md +1 -1
- package/assets/generated/core/core/skills/developer-env-mode/SKILL.md +1 -1
- package/assets/generated/core/core/skills/progress/SKILL.md +2 -2
- package/assets/generated/core/core/skills/project-forge-update/SKILL.md +10 -10
- package/assets/generated/core/core/skills/setup/SKILL.md +3 -3
- package/assets/generated/core/core/skills/tear-down/SKILL.md +1 -1
- package/bin/project-forge.mjs +9 -9
- package/package.json +33 -33
- package/src/cli.mjs +150 -150
- package/src/engine.mjs +243 -243
- package/src/package-data.mjs +18 -18
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"package": "@mriekki/project-forge",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "2.0.0",
|
|
5
5
|
"components": {
|
|
6
6
|
"core": {
|
|
7
7
|
"repository": "mriekki/project-forge-core",
|
|
8
|
-
"commit": "
|
|
9
|
-
"version": "
|
|
8
|
+
"commit": "80ff581ec89533f5a22bd05c65c7b67bb314c715",
|
|
9
|
+
"version": "3.0.0",
|
|
10
10
|
"distribution": "greenfield-workspace",
|
|
11
11
|
"files": [
|
|
12
12
|
{
|
|
@@ -62,12 +62,12 @@
|
|
|
62
62
|
{
|
|
63
63
|
"source": "core/skills/setup/SKILL.md",
|
|
64
64
|
"destination": ".github/skills/setup/SKILL.md",
|
|
65
|
-
"sha256": "
|
|
65
|
+
"sha256": "e700e914afc291ffb1153bb796a8ef150c624c5b54032e29d3abda221260285f"
|
|
66
66
|
},
|
|
67
67
|
{
|
|
68
68
|
"source": "core/skills/progress/SKILL.md",
|
|
69
69
|
"destination": ".github/skills/progress/SKILL.md",
|
|
70
|
-
"sha256": "
|
|
70
|
+
"sha256": "7c9524859f4683feee2e8fac33ef3aa24f2b7b38099a37c3b65eb746aaba7391"
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
73
|
"source": "core/skills/next-step/SKILL.md",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
{
|
|
93
93
|
"source": "core/skills/project-forge-update/SKILL.md",
|
|
94
94
|
"destination": ".github/skills/project-forge-update/SKILL.md",
|
|
95
|
-
"sha256": "
|
|
95
|
+
"sha256": "70170e57a77f143c719a8c349161c580e339397e782d28133d9f3734f6625847"
|
|
96
96
|
},
|
|
97
97
|
{
|
|
98
98
|
"source": "core/skills/core-sync/SKILL.md",
|
|
@@ -112,22 +112,22 @@
|
|
|
112
112
|
{
|
|
113
113
|
"source": "core/skills/developer-env-mode/SKILL.md",
|
|
114
114
|
"destination": ".github/skills/developer-env-mode/SKILL.md",
|
|
115
|
-
"sha256": "
|
|
115
|
+
"sha256": "2e45e00e30f17edda5b259bd24852233d2bcace46f7e095d3b28faf9ce35cedb"
|
|
116
116
|
},
|
|
117
117
|
{
|
|
118
118
|
"source": "core/skills/deployment-readiness/SKILL.md",
|
|
119
119
|
"destination": ".github/skills/deployment-readiness/SKILL.md",
|
|
120
|
-
"sha256": "
|
|
120
|
+
"sha256": "846ddacc3f9acaecfce3ba62a6c1eb01149f1afd1013e307a81dc65e1351cbc4"
|
|
121
121
|
},
|
|
122
122
|
{
|
|
123
123
|
"source": "core/skills/deploy/SKILL.md",
|
|
124
124
|
"destination": ".github/skills/deploy/SKILL.md",
|
|
125
|
-
"sha256": "
|
|
125
|
+
"sha256": "7bacd366014bf8c890328ec2b78412a39a0abff2f6b44dd53ca129102a7a30c8"
|
|
126
126
|
},
|
|
127
127
|
{
|
|
128
128
|
"source": "core/skills/tear-down/SKILL.md",
|
|
129
129
|
"destination": ".github/skills/tear-down/SKILL.md",
|
|
130
|
-
"sha256": "
|
|
130
|
+
"sha256": "5fcda93f4a0d1eca76a8a753f340fcb1799bddfe515324493e7d910f1c2253a3"
|
|
131
131
|
},
|
|
132
132
|
{
|
|
133
133
|
"source": "core/skills/coach/SKILL.md",
|
|
@@ -212,7 +212,7 @@
|
|
|
212
212
|
{
|
|
213
213
|
"source": "core/process/PROJECT_FORGE_ENGINEERING_GUIDE.md",
|
|
214
214
|
"destination": "docs/project-forge/PROJECT_FORGE_ENGINEERING_GUIDE.md",
|
|
215
|
-
"sha256": "
|
|
215
|
+
"sha256": "431eb3af7593f5f79f74ffdd306f56b5249a632c480fd6c3e5f0223161d376d9"
|
|
216
216
|
},
|
|
217
217
|
{
|
|
218
218
|
"source": "core/process/SETUP_ACCEPTANCE_CHECKLIST.md",
|
|
@@ -74,7 +74,7 @@ flowchart TB
|
|
|
74
74
|
|
|
75
75
|
| Layer | Responsibility |
|
|
76
76
|
| --- | --- |
|
|
77
|
-
| POC Bootstrap | Discovery protocol, catalog/support states, approved `
|
|
77
|
+
| POC Bootstrap | Discovery protocol, catalog/support states, approved `PROJECT_BOOTSTRAP.json`, deployment topology intent, deterministic generation, setup/readiness helpers, work-item materialization. |
|
|
78
78
|
| Agentic Core | Reusable workflow behavior, agents/skills, Human-in-the-Loop gates, review/delivery semantics, learning flows, topology-aware deployment orchestration. |
|
|
79
79
|
| Project Forge Platform | Consumer-facing `@mriekki/project-forge` package that assembles exact accepted reusable components and records provenance. |
|
|
80
80
|
| Control Plane | GitHub App orchestration for target validation, short-lived scoped credentials, deterministic generation, and safe publication. |
|
|
@@ -130,7 +130,7 @@ flowchart LR
|
|
|
130
130
|
DELIVER --> MERGE[Merge gate]
|
|
131
131
|
```
|
|
132
132
|
|
|
133
|
-
1. Human approves schema-v2 `
|
|
133
|
+
1. Human approves schema-v2 `PROJECT_BOOTSTRAP.json` with initial work items and an exact `@mriekki/project-forge` package version/profile/integrity.
|
|
134
134
|
2. The private target repository is seeded with only the approved manifest; a public Control Plane request identifies only the repository.
|
|
135
135
|
3. The Control Plane validates the private seed, uses short-lived scoped credentials, obtains the exact package artifact, and verifies integrity before reusable target mutation.
|
|
136
136
|
4. Bootstrap materializes project-owned content; the exact Project Forge package applies its reusable profile only after drift/collision preflight.
|
|
@@ -155,7 +155,7 @@ A project can be generated, set up, and accepted as an engineering workspace eve
|
|
|
155
155
|
| Project definition | Materialized product scope, roadmap, approved work items, architecture/design context, deployment topology, and implementation/learning guidance. |
|
|
156
156
|
| Setup + doctor | Workstation setup and readiness checks stay distinct from human editor/workspace acceptance. A deferred deployment target is not a failed development workspace. |
|
|
157
157
|
| CI baseline | CI exists before substantive implementation and becomes reusable evidence throughout delivery. |
|
|
158
|
-
| Provenance | `
|
|
158
|
+
| Provenance | `PROJECT_BOOTSTRAP.json`, `PROJECT_FORGE_BASELINE.json`, component baselines, `DEV_ENVIRONMENT.json`, and `SCAFFOLD_PLAN.json` make generated state inspectable. |
|
|
159
159
|
|
|
160
160
|
**Important distinction:** machine success is evidence, not human acceptance. Setup and doctor checks can prove tools are ready; the human still decides whether the checkout is actually usable.
|
|
161
161
|
|
|
@@ -27,7 +27,7 @@ Prefer:
|
|
|
27
27
|
DEPLOYMENT_TOPOLOGY.json
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
Use `
|
|
30
|
+
Use `PROJECT_BOOTSTRAP.json` deployment topology only as the initial topology fallback.
|
|
31
31
|
|
|
32
32
|
Resolve exact configured name, purpose/Production classification, placement, isolation, exposure, binding, adapter, target/provider, and failure domain.
|
|
33
33
|
|
|
@@ -29,7 +29,7 @@ Prefer the project-owned mutable topology:
|
|
|
29
29
|
DEPLOYMENT_TOPOLOGY.json
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
Use `
|
|
32
|
+
Use `PROJECT_BOOTSTRAP.json` deployment topology only as the initial topology fallback. Do not rewrite Bootstrap provenance merely because a later environment changes.
|
|
33
33
|
|
|
34
34
|
Resolve the exact configured environment name plus, when present:
|
|
35
35
|
|
|
@@ -31,7 +31,7 @@ Never record a requested mode as ready until its readiness contract passes. If c
|
|
|
31
31
|
|
|
32
32
|
From the repository root inspect, when present:
|
|
33
33
|
|
|
34
|
-
- `
|
|
34
|
+
- `PROJECT_BOOTSTRAP.json`;
|
|
35
35
|
- `PROJECT_FORGE_BASELINE.json` and component baselines;
|
|
36
36
|
- `DEV_ENVIRONMENT.json`;
|
|
37
37
|
- application setup/build/test commands and project-owned persistence configuration;
|
|
@@ -16,7 +16,7 @@ Invocation is read-only. `/progress` is a navigation/status surface, not a secon
|
|
|
16
16
|
|
|
17
17
|
Inspect only the evidence needed for the current lifecycle position. Useful sources include:
|
|
18
18
|
|
|
19
|
-
- `
|
|
19
|
+
- `PROJECT_BOOTSTRAP.json`, generated baselines, and repository history for project creation/provenance;
|
|
20
20
|
- `DEPLOYMENT_TOPOLOGY.json` as preferred project-owned mutable environment topology when present;
|
|
21
21
|
- `DEV_ENVIRONMENT.json`, generated setup scripts, workstation-local setup/developer-mode evidence, and safe setup checks for local readiness;
|
|
22
22
|
- observed OS/platform and machine-local evidence for **this workspace instance**;
|
|
@@ -24,7 +24,7 @@ Inspect only the evidence needed for the current lifecycle position. Useful sour
|
|
|
24
24
|
- work-item docs, Reviewer evidence, PR/CI state, and default-branch evidence;
|
|
25
25
|
- environment proof/readiness/deployment evidence for exact project-defined environments.
|
|
26
26
|
|
|
27
|
-
If `DEPLOYMENT_TOPOLOGY.json` does not exist, use `
|
|
27
|
+
If `DEPLOYMENT_TOPOLOGY.json` does not exist, use `PROJECT_BOOTSTRAP.json` deployment topology only as the initial topology fallback.
|
|
28
28
|
|
|
29
29
|
Never invent completion because a prior step normally happens. Prefer `UNKNOWN`/`NOT EVIDENCED` over false green state.
|
|
30
30
|
|
|
@@ -30,7 +30,7 @@ From the consumer root read:
|
|
|
30
30
|
- `PROJECT_FORGE_BASELINE.json`;
|
|
31
31
|
- `CORE_BASELINE.json` when present;
|
|
32
32
|
- `DEPLOYMENT_BASELINE.json` when present;
|
|
33
|
-
- `
|
|
33
|
+
- `PROJECT_BOOTSTRAP.json` when present;
|
|
34
34
|
- current Git status, branch, remotes, and default branch when observable.
|
|
35
35
|
|
|
36
36
|
Require `PROJECT_FORGE_BASELINE.json` to identify:
|
|
@@ -47,13 +47,13 @@ Do not synthesize or repair missing umbrella provenance by hand.
|
|
|
47
47
|
|
|
48
48
|
### Bootstrap-generated consumers
|
|
49
49
|
|
|
50
|
-
If `
|
|
50
|
+
If `PROJECT_BOOTSTRAP.json` exists, treat it as approved generated-consumer provenance, not unrelated product data.
|
|
51
51
|
|
|
52
52
|
Before planning an update, require `generation.projectForge.package`, `generation.projectForge.version`, and `generation.projectForge.profile` to agree exactly with the installed `PROJECT_FORGE_BASELINE.json`. Require `generation.projectForge.integrity` to be a non-empty exact registry integrity value for that installed package/version. Verify that integrity read-only from the registry when registry access is available.
|
|
53
53
|
|
|
54
54
|
If those values disagree before the update, report `GENERATED PROJECT FORGE METADATA DRIFT` and stop. Do not use `/project-forge-update` to silently reconcile an already-incoherent generated consumer.
|
|
55
55
|
|
|
56
|
-
Also inspect generated package-verification surfaces such as `.github/workflows/ci.yml` when present. If they duplicate the approved package version/integrity literally, record that current shape as companion generated metadata that must remain coherent with `
|
|
56
|
+
Also inspect generated package-verification surfaces such as `.github/workflows/ci.yml` when present. If they duplicate the approved package version/integrity literally, record that current shape as companion generated metadata that must remain coherent with `PROJECT_BOOTSTRAP.json` during the update. Do not rewrite locally customized or unrecognized generated surfaces by guesswork.
|
|
57
57
|
|
|
58
58
|
## 2. Verify the installed package baseline first
|
|
59
59
|
|
|
@@ -117,8 +117,8 @@ A modified retired Core path is different: never auto-add `--accept-retired core
|
|
|
117
117
|
|
|
118
118
|
For a Bootstrap-generated consumer, also preview the companion generated-consumer changes:
|
|
119
119
|
|
|
120
|
-
- `
|
|
121
|
-
- generated package-verification surfaces should consume `
|
|
120
|
+
- `PROJECT_BOOTSTRAP.json` keeps the same package/profile but changes `generation.projectForge.version` and `generation.projectForge.integrity` to the exact reviewed target;
|
|
121
|
+
- generated package-verification surfaces should consume `PROJECT_BOOTSTRAP.json` dynamically when the accepted Bootstrap contract supports that form;
|
|
122
122
|
- a recognized older Bootstrap-generated verification block may be migrated only when its embedded old package/version/integrity exactly match the currently approved manifest metadata;
|
|
123
123
|
- an unrecognized or locally modified generated verification surface is a stop condition, not permission to reconstruct Bootstrap output by hand.
|
|
124
124
|
|
|
@@ -148,7 +148,7 @@ Choosing option 1 authorizes only:
|
|
|
148
148
|
- creation/switch to one repository-appropriate short-lived update branch when needed;
|
|
149
149
|
- exact target package apply;
|
|
150
150
|
- removal of unchanged retired package-managed files that the reviewed preview classified as `REMOVE`;
|
|
151
|
-
- when `
|
|
151
|
+
- when `PROJECT_BOOTSTRAP.json` is present, update of its exact `generation.projectForge.version` and `generation.projectForge.integrity` to the reviewed target while preserving package/profile;
|
|
152
152
|
- migration of a recognized Bootstrap-generated package-verification block from duplicated current literals to the accepted manifest-driven form, only when the existing block still exactly matches the current approved metadata;
|
|
153
153
|
- package/baseline/generated-consumer verification;
|
|
154
154
|
- inspection of the resulting meaningful diff.
|
|
@@ -173,7 +173,7 @@ npx --yes @mriekki/project-forge@<target-version> update --apply
|
|
|
173
173
|
|
|
174
174
|
If explicit Core retired-path ownership transfer was separately approved, pass only the exact reviewed modified paths using the package's `--accept-retired core:<path>` contract. Never widen that set implicitly. Unchanged retired managed paths do not need this flag; the package updater removes them according to the reviewed `REMOVE` plan.
|
|
175
175
|
|
|
176
|
-
For a Bootstrap-generated consumer, complete the reviewed companion metadata changes in the same bounded update before declaring success. Preserve every unrelated `
|
|
176
|
+
For a Bootstrap-generated consumer, complete the reviewed companion metadata changes in the same bounded update before declaring success. Preserve every unrelated `PROJECT_BOOTSTRAP.json` field. Never change package identity or profile as an incidental version update.
|
|
177
177
|
|
|
178
178
|
Do not run direct `tools/package/sync.py`, Deployment Kit sync, or a remote `[sync-core]` request as part of a package-managed update.
|
|
179
179
|
|
|
@@ -190,7 +190,7 @@ Then inspect:
|
|
|
190
190
|
```text
|
|
191
191
|
git status --short --branch
|
|
192
192
|
git diff --stat
|
|
193
|
-
git diff -- PROJECT_FORGE_BASELINE.json CORE_BASELINE.json DEPLOYMENT_BASELINE.json
|
|
193
|
+
git diff -- PROJECT_FORGE_BASELINE.json CORE_BASELINE.json DEPLOYMENT_BASELINE.json PROJECT_BOOTSTRAP.json .github/workflows/ci.yml
|
|
194
194
|
```
|
|
195
195
|
|
|
196
196
|
Confirm:
|
|
@@ -199,7 +199,7 @@ Confirm:
|
|
|
199
199
|
- component baseline commits/distributions match the umbrella baseline;
|
|
200
200
|
- package check passes for the whole profile;
|
|
201
201
|
- unchanged retired managed files shown as `REMOVE` in the preview are actually absent after apply, while any explicitly transferred modified retired Core file remains present and is no longer Core-managed;
|
|
202
|
-
- when `
|
|
202
|
+
- when `PROJECT_BOOTSTRAP.json` exists, its package/version/profile agree with `PROJECT_FORGE_BASELINE.json` and its integrity equals the exact reviewed target registry integrity;
|
|
203
203
|
- when the repository contains `tools/project-forge-package/check-managed-baselines.py`, that generated baseline checker passes after all companion metadata changes;
|
|
204
204
|
- generated package-verification surfaces no longer contradict the approved manifest metadata;
|
|
205
205
|
- consumer-owned content was not overwritten;
|
|
@@ -218,7 +218,7 @@ Present the meaningful diff for human review. After acceptance, recommend `/deli
|
|
|
218
218
|
- performs a downgrade/rollback as an ordinary update;
|
|
219
219
|
- overwrites unexplained managed drift;
|
|
220
220
|
- auto-accepts Core retired-path ownership transfer for a modified retired file;
|
|
221
|
-
- silently repairs a pre-existing mismatch between `
|
|
221
|
+
- silently repairs a pre-existing mismatch between `PROJECT_BOOTSTRAP.json` and `PROJECT_FORGE_BASELINE.json`;
|
|
222
222
|
- changes a generated consumer's package identity/profile or regenerates the repository as an incidental version update;
|
|
223
223
|
- guesses at locally modified/unrecognized Bootstrap-generated verification logic;
|
|
224
224
|
- publishes npm/Core/Deployment/Bootstrap releases or tags;
|
|
@@ -24,7 +24,7 @@ From the repository root inspect only what is needed:
|
|
|
24
24
|
|
|
25
25
|
- `DEV_ENVIRONMENT.json`;
|
|
26
26
|
- `DEPLOYMENT_TOPOLOGY.json` when present;
|
|
27
|
-
- `
|
|
27
|
+
- `PROJECT_BOOTSTRAP.json` as generation/provenance and initial topology fallback;
|
|
28
28
|
- `SCAFFOLD_PLAN.json` when present;
|
|
29
29
|
- `.github/project-forge-workspace.json` and Project Forge/component baselines when present;
|
|
30
30
|
- `scripts/setup.ps1` on Windows or `scripts/setup.sh` on macOS;
|
|
@@ -167,9 +167,9 @@ Prefer project-owned mutable deployment topology:
|
|
|
167
167
|
DEPLOYMENT_TOPOLOGY.json
|
|
168
168
|
```
|
|
169
169
|
|
|
170
|
-
Use `
|
|
170
|
+
Use `PROJECT_BOOTSTRAP.json` deployment topology only as the initial topology fallback.
|
|
171
171
|
|
|
172
|
-
`
|
|
172
|
+
`PROJECT_BOOTSTRAP.json` is generation/provenance evidence and should not be casually rewritten merely because a developer adds an environment later.
|
|
173
173
|
|
|
174
174
|
If an older POC has no `DEPLOYMENT_TOPOLOGY.json` and the developer chooses to add/change a logical environment, first materialize the currently approved deployment topology into the project-owned file, then make the scoped project configuration change there. Preserve the original Bootstrap provenance file.
|
|
175
175
|
|
|
@@ -29,7 +29,7 @@ Prefer:
|
|
|
29
29
|
DEPLOYMENT_TOPOLOGY.json
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
Use `
|
|
32
|
+
Use `PROJECT_BOOTSTRAP.json` deployment topology only as the initial topology fallback.
|
|
33
33
|
|
|
34
34
|
Resolve only configured logical environments and their current purpose/Production classification, placement/target binding, repository/application identity, and ownership evidence.
|
|
35
35
|
|
package/bin/project-forge.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { run } from '../src/cli.mjs';
|
|
3
|
-
|
|
4
|
-
try {
|
|
5
|
-
process.exitCode = await run();
|
|
6
|
-
} catch (error) {
|
|
7
|
-
console.error(`Project Forge error: ${error.message}`);
|
|
8
|
-
process.exitCode = 2;
|
|
9
|
-
}
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { run } from '../src/cli.mjs';
|
|
3
|
+
|
|
4
|
+
try {
|
|
5
|
+
process.exitCode = await run();
|
|
6
|
+
} catch (error) {
|
|
7
|
+
console.error(`Project Forge error: ${error.message}`);
|
|
8
|
+
process.exitCode = 2;
|
|
9
|
+
}
|
package/package.json
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@mriekki/project-forge",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Public consumer distribution and updater for Project Forge engineering assets.",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"bin": {
|
|
7
|
-
"project-forge": "bin/project-forge.mjs"
|
|
8
|
-
},
|
|
9
|
-
"files": [
|
|
10
|
-
"bin/",
|
|
11
|
-
"src/",
|
|
12
|
-
"assets/",
|
|
13
|
-
"README.md"
|
|
14
|
-
],
|
|
15
|
-
"scripts": {
|
|
16
|
-
"test": "node --test",
|
|
17
|
-
"assemble:assets": "node scripts/assemble-assets.mjs",
|
|
18
|
-
"verify:assets": "node scripts/verify-assets.mjs",
|
|
19
|
-
"release:prepare": "node scripts/prepare-release.mjs",
|
|
20
|
-
"prepack": "npm run verify:assets"
|
|
21
|
-
},
|
|
22
|
-
"engines": {
|
|
23
|
-
"node": ">=20"
|
|
24
|
-
},
|
|
25
|
-
"repository": {
|
|
26
|
-
"type": "git",
|
|
27
|
-
"url": "git+https://github.com/mriekki/project-forge-platform.git"
|
|
28
|
-
},
|
|
29
|
-
"publishConfig": {
|
|
30
|
-
"access": "public",
|
|
31
|
-
"provenance": true
|
|
32
|
-
}
|
|
33
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@mriekki/project-forge",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Public consumer distribution and updater for Project Forge engineering assets.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"project-forge": "bin/project-forge.mjs"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"bin/",
|
|
11
|
+
"src/",
|
|
12
|
+
"assets/",
|
|
13
|
+
"README.md"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"test": "node --test",
|
|
17
|
+
"assemble:assets": "node scripts/assemble-assets.mjs",
|
|
18
|
+
"verify:assets": "node scripts/verify-assets.mjs",
|
|
19
|
+
"release:prepare": "node scripts/prepare-release.mjs",
|
|
20
|
+
"prepack": "npm run verify:assets"
|
|
21
|
+
},
|
|
22
|
+
"engines": {
|
|
23
|
+
"node": ">=20"
|
|
24
|
+
},
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "git+https://github.com/mriekki/project-forge-platform.git"
|
|
28
|
+
},
|
|
29
|
+
"publishConfig": {
|
|
30
|
+
"access": "public",
|
|
31
|
+
"provenance": true
|
|
32
|
+
}
|
|
33
|
+
}
|