frontend-project-context 1.0.0 → 1.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/CHANGELOG.md +27 -2
- package/README.md +359 -94
- package/UPGRADING.md +35 -1
- package/docs/00-PRODUCT-CONSTITUTION.md +42 -10
- package/docs/04-PROGRAM-DESIGN.md +76 -2
- package/docs/05-ACCEPTANCE-CONTRACT.md +35 -3
- package/docs/08-INSTALLATION-AND-DISTRIBUTION.md +32 -18
- package/docs/14-FORMAL-RELEASE-READINESS.md +11 -5
- package/docs/15-SOURCE-LIFECYCLE-CLOSURE-DESIGN.md +1 -1
- package/docs/16-GUIDED-ONBOARDING-AND-AI-RECONCILIATION-DESIGN.md +469 -0
- package/docs/17-AI-EXCHANGE-BOUNDARY-DESIGN.md +268 -0
- package/docs/README.md +13 -5
- package/examples/README.md +15 -2
- package/examples/package.json +6 -2
- package/package.json +11 -8
- package/schemas/action-plan.schema.json +250 -0
- package/schemas/assist-bundle.schema.json +75 -0
- package/schemas/capabilities.schema.json +123 -0
- package/schemas/review-bundle.schema.json +109 -0
- package/src/project-context/assist.mjs +422 -0
- package/src/project-context/cli.mjs +143 -13
- package/src/project-context/exchange-schema.mjs +528 -0
- package/src/project-context/exchange.mjs +623 -0
- package/src/project-context/project-store.mjs +22 -0
- package/PROJECT_STATE.json +0 -176
- package/RTK.md +0 -13
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "urn:frontend-project-context:schema:assist-bundle:1",
|
|
4
|
+
"title": "Frontend Project Context Assist Bundle",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schemaVersion",
|
|
9
|
+
"mode",
|
|
10
|
+
"project",
|
|
11
|
+
"snapshots",
|
|
12
|
+
"summary",
|
|
13
|
+
"sourceChanges",
|
|
14
|
+
"affectedItems",
|
|
15
|
+
"pendingItems",
|
|
16
|
+
"pathSignals",
|
|
17
|
+
"projectionPaths",
|
|
18
|
+
"findings",
|
|
19
|
+
"readTargets",
|
|
20
|
+
"workUnits",
|
|
21
|
+
"proposal",
|
|
22
|
+
"artifacts"
|
|
23
|
+
],
|
|
24
|
+
"properties": {
|
|
25
|
+
"schemaVersion": { "const": 1 },
|
|
26
|
+
"mode": { "enum": ["setup", "sync"] },
|
|
27
|
+
"project": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"additionalProperties": false,
|
|
30
|
+
"required": ["id", "name", "initialized"],
|
|
31
|
+
"properties": {
|
|
32
|
+
"id": { "type": "string" },
|
|
33
|
+
"name": { "type": "string" },
|
|
34
|
+
"initialized": { "type": "boolean" }
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"snapshots": {
|
|
38
|
+
"type": "object",
|
|
39
|
+
"additionalProperties": false,
|
|
40
|
+
"required": ["contract", "sourcesLock", "projectionsLock"],
|
|
41
|
+
"properties": {
|
|
42
|
+
"contract": { "$ref": "#/$defs/digest" },
|
|
43
|
+
"sourcesLock": { "$ref": "#/$defs/digest" },
|
|
44
|
+
"projectionsLock": { "$ref": "#/$defs/digest" }
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"summary": {
|
|
48
|
+
"type": "object",
|
|
49
|
+
"additionalProperties": false,
|
|
50
|
+
"required": ["candidateSources", "candidateItems", "changedSources", "affectedItems", "pendingItems", "affectedProjections"],
|
|
51
|
+
"properties": {
|
|
52
|
+
"candidateSources": { "type": "integer", "minimum": 0 },
|
|
53
|
+
"candidateItems": { "type": "integer", "minimum": 0 },
|
|
54
|
+
"changedSources": { "type": "integer", "minimum": 0 },
|
|
55
|
+
"affectedItems": { "type": "integer", "minimum": 0 },
|
|
56
|
+
"pendingItems": { "type": "integer", "minimum": 0 },
|
|
57
|
+
"affectedProjections": { "type": "integer", "minimum": 0 }
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"sourceChanges": { "type": "array", "items": { "type": "object" } },
|
|
61
|
+
"affectedItems": { "type": "array", "items": { "type": "object" } },
|
|
62
|
+
"pendingItems": { "type": "array", "items": { "type": "object" } },
|
|
63
|
+
"pathSignals": { "type": "array", "items": { "type": "object" } },
|
|
64
|
+
"projectionPaths": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/path" } },
|
|
65
|
+
"findings": { "type": "array", "items": { "type": "object" } },
|
|
66
|
+
"readTargets": { "type": "array", "items": { "type": "object" } },
|
|
67
|
+
"workUnits": { "type": "array", "items": { "type": "object" } },
|
|
68
|
+
"proposal": { "anyOf": [{ "type": "null" }, { "type": "object" }] },
|
|
69
|
+
"artifacts": { "type": "array", "items": { "type": "object" } }
|
|
70
|
+
},
|
|
71
|
+
"$defs": {
|
|
72
|
+
"digest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
|
|
73
|
+
"path": { "type": "string", "minLength": 1 }
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "urn:frontend-project-context:schema:capabilities:1",
|
|
4
|
+
"title": "Frontend Project Context Capabilities",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schemaVersion",
|
|
9
|
+
"package",
|
|
10
|
+
"exchangeProtocolVersion",
|
|
11
|
+
"schemas",
|
|
12
|
+
"commands",
|
|
13
|
+
"actionKinds",
|
|
14
|
+
"initialization",
|
|
15
|
+
"initialized",
|
|
16
|
+
"project",
|
|
17
|
+
"boundaries"
|
|
18
|
+
],
|
|
19
|
+
"properties": {
|
|
20
|
+
"schemaVersion": { "const": 1 },
|
|
21
|
+
"package": {
|
|
22
|
+
"type": "object",
|
|
23
|
+
"additionalProperties": false,
|
|
24
|
+
"required": ["name", "version"],
|
|
25
|
+
"properties": {
|
|
26
|
+
"name": { "const": "frontend-project-context" },
|
|
27
|
+
"version": { "type": "string" }
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"exchangeProtocolVersion": { "const": 1 },
|
|
31
|
+
"schemas": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"additionalProperties": false,
|
|
34
|
+
"required": [
|
|
35
|
+
"actionPlan",
|
|
36
|
+
"assistBundle",
|
|
37
|
+
"capabilities",
|
|
38
|
+
"contract",
|
|
39
|
+
"dashboardViewModel",
|
|
40
|
+
"projectionLock",
|
|
41
|
+
"projectionRenderer",
|
|
42
|
+
"proposal",
|
|
43
|
+
"reviewBundle",
|
|
44
|
+
"sourceLock"
|
|
45
|
+
],
|
|
46
|
+
"properties": {
|
|
47
|
+
"actionPlan": { "const": 1 },
|
|
48
|
+
"assistBundle": { "const": 1 },
|
|
49
|
+
"capabilities": { "const": 1 },
|
|
50
|
+
"contract": { "type": "integer" },
|
|
51
|
+
"dashboardViewModel": { "type": "integer" },
|
|
52
|
+
"projectionLock": { "type": "integer" },
|
|
53
|
+
"projectionRenderer": { "type": "integer" },
|
|
54
|
+
"proposal": { "type": "integer" },
|
|
55
|
+
"reviewBundle": { "const": 1 },
|
|
56
|
+
"sourceLock": { "type": "integer" }
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"commands": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string" } },
|
|
60
|
+
"actionKinds": {
|
|
61
|
+
"type": "array",
|
|
62
|
+
"minItems": 8,
|
|
63
|
+
"maxItems": 8,
|
|
64
|
+
"uniqueItems": true,
|
|
65
|
+
"items": {
|
|
66
|
+
"enum": [
|
|
67
|
+
"accept-source-change",
|
|
68
|
+
"deprecate-item",
|
|
69
|
+
"deprecate-source",
|
|
70
|
+
"propose-item",
|
|
71
|
+
"publish-projection",
|
|
72
|
+
"register-source",
|
|
73
|
+
"request-item-approval",
|
|
74
|
+
"revise-item"
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"initialization": { "enum": ["uninitialized", "partial", "initialized"] },
|
|
79
|
+
"initialized": { "type": "boolean" },
|
|
80
|
+
"project": {
|
|
81
|
+
"anyOf": [
|
|
82
|
+
{ "type": "null" },
|
|
83
|
+
{
|
|
84
|
+
"type": "object",
|
|
85
|
+
"additionalProperties": false,
|
|
86
|
+
"required": ["id", "name"],
|
|
87
|
+
"properties": {
|
|
88
|
+
"id": { "type": "string" },
|
|
89
|
+
"name": { "type": "string" }
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
"boundaries": {
|
|
95
|
+
"type": "object",
|
|
96
|
+
"additionalProperties": false,
|
|
97
|
+
"required": [
|
|
98
|
+
"provider",
|
|
99
|
+
"agentRuntime",
|
|
100
|
+
"git",
|
|
101
|
+
"network",
|
|
102
|
+
"dependencyInstallation",
|
|
103
|
+
"automaticApproval",
|
|
104
|
+
"businessCodeWrites",
|
|
105
|
+
"applyPlan",
|
|
106
|
+
"scheduler",
|
|
107
|
+
"daemon"
|
|
108
|
+
],
|
|
109
|
+
"properties": {
|
|
110
|
+
"provider": { "const": false },
|
|
111
|
+
"agentRuntime": { "const": false },
|
|
112
|
+
"git": { "const": false },
|
|
113
|
+
"network": { "const": false },
|
|
114
|
+
"dependencyInstallation": { "const": false },
|
|
115
|
+
"automaticApproval": { "const": false },
|
|
116
|
+
"businessCodeWrites": { "const": false },
|
|
117
|
+
"applyPlan": { "const": false },
|
|
118
|
+
"scheduler": { "const": false },
|
|
119
|
+
"daemon": { "const": false }
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "urn:frontend-project-context:schema:review-bundle:1",
|
|
4
|
+
"title": "Frontend Project Context Review Bundle",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schemaVersion", "projectId", "planDigest", "baselines", "status", "summary", "actions", "groups", "findings", "invocations"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schemaVersion": { "const": 1 },
|
|
10
|
+
"projectId": { "$ref": "#/$defs/id" },
|
|
11
|
+
"planDigest": { "$ref": "#/$defs/digest" },
|
|
12
|
+
"baselines": { "$ref": "#/$defs/baselines" },
|
|
13
|
+
"status": { "enum": ["reviewable", "blocked"] },
|
|
14
|
+
"summary": {
|
|
15
|
+
"type": "object",
|
|
16
|
+
"additionalProperties": false,
|
|
17
|
+
"required": ["actions", "reviewable", "blocked", "groups"],
|
|
18
|
+
"properties": {
|
|
19
|
+
"actions": { "type": "integer", "minimum": 1 },
|
|
20
|
+
"reviewable": { "type": "integer", "minimum": 0 },
|
|
21
|
+
"blocked": { "type": "integer", "minimum": 0 },
|
|
22
|
+
"groups": { "type": "integer", "minimum": 1 }
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"actions": {
|
|
26
|
+
"type": "array",
|
|
27
|
+
"minItems": 1,
|
|
28
|
+
"items": {
|
|
29
|
+
"type": "object",
|
|
30
|
+
"additionalProperties": false,
|
|
31
|
+
"required": ["id", "kind", "status", "current", "proposed", "baselines", "impact", "blockers", "humanApprovalRequired"],
|
|
32
|
+
"properties": {
|
|
33
|
+
"id": { "$ref": "#/$defs/id" },
|
|
34
|
+
"kind": { "$ref": "#/$defs/actionKind" },
|
|
35
|
+
"status": { "enum": ["reviewable", "blocked"] },
|
|
36
|
+
"current": {},
|
|
37
|
+
"proposed": {},
|
|
38
|
+
"baselines": { "type": "object" },
|
|
39
|
+
"impact": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"required": ["itemIds", "sourceIds", "paths", "projectionPaths"],
|
|
42
|
+
"properties": {
|
|
43
|
+
"itemIds": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
|
|
44
|
+
"sourceIds": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
|
|
45
|
+
"paths": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
|
|
46
|
+
"projectionPaths": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
|
|
47
|
+
"directProjectionPaths": { "type": "array", "uniqueItems": true, "items": { "type": "string" } }
|
|
48
|
+
},
|
|
49
|
+
"additionalProperties": false
|
|
50
|
+
},
|
|
51
|
+
"blockers": { "type": "array", "items": { "type": "object" } },
|
|
52
|
+
"humanApprovalRequired": { "const": true },
|
|
53
|
+
"invocation": { "$ref": "#/$defs/invocation" }
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"groups": {
|
|
58
|
+
"type": "array",
|
|
59
|
+
"minItems": 1,
|
|
60
|
+
"items": {
|
|
61
|
+
"type": "object",
|
|
62
|
+
"additionalProperties": false,
|
|
63
|
+
"required": ["kind", "actionIds"],
|
|
64
|
+
"properties": {
|
|
65
|
+
"kind": { "enum": ["source-change", "new-or-revised-knowledge", "deprecation", "approval-request", "projection", "blocker"] },
|
|
66
|
+
"actionIds": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/id" } }
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"findings": { "type": "array", "items": { "type": "object" } },
|
|
71
|
+
"invocations": { "type": "array", "items": { "$ref": "#/$defs/invocationWithAction" } }
|
|
72
|
+
},
|
|
73
|
+
"$defs": {
|
|
74
|
+
"id": { "type": "string", "pattern": "^[a-z0-9]+(?:[.-][a-z0-9]+)*$" },
|
|
75
|
+
"digest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
|
|
76
|
+
"baselines": {
|
|
77
|
+
"type": "object",
|
|
78
|
+
"additionalProperties": false,
|
|
79
|
+
"required": ["contract", "sourcesLock", "projectionsLock"],
|
|
80
|
+
"properties": {
|
|
81
|
+
"contract": { "$ref": "#/$defs/digest" },
|
|
82
|
+
"sourcesLock": { "$ref": "#/$defs/digest" },
|
|
83
|
+
"projectionsLock": { "$ref": "#/$defs/digest" }
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"actionKind": {
|
|
87
|
+
"enum": ["accept-source-change", "deprecate-item", "deprecate-source", "propose-item", "publish-projection", "register-source", "request-item-approval", "revise-item"]
|
|
88
|
+
},
|
|
89
|
+
"invocation": {
|
|
90
|
+
"type": "object",
|
|
91
|
+
"additionalProperties": false,
|
|
92
|
+
"required": ["command", "args"],
|
|
93
|
+
"properties": {
|
|
94
|
+
"command": { "type": "string" },
|
|
95
|
+
"args": { "type": "array", "items": { "type": "string" } }
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"invocationWithAction": {
|
|
99
|
+
"type": "object",
|
|
100
|
+
"additionalProperties": false,
|
|
101
|
+
"required": ["actionId", "command", "args"],
|
|
102
|
+
"properties": {
|
|
103
|
+
"actionId": { "$ref": "#/$defs/id" },
|
|
104
|
+
"command": { "type": "string" },
|
|
105
|
+
"args": { "type": "array", "items": { "type": "string" } }
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|