@jstn-sdk/ma 0.1.8 → 0.1.9
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 +8 -5
- package/bin/ma.js +2 -2
- package/docs/README.md +1 -1
- package/docs/getting-started.md +2 -1
- package/docs/qa/{release-readiness-0.1.8.md → release-readiness-0.1.9.md} +8 -8
- package/docs/release-spec.md +6 -6
- package/package.json +1 -1
- package/plugins/meta-architect/.app.json +1 -1
- package/plugins/meta-architect/.codex-plugin/plugin.json +1 -1
- package/plugins/meta-architect/.mcp.json +1 -1
- package/plugins/meta-architect/README.md +1 -1
- package/src/bootstrap.js +37 -8
- package/src/mcp-live-client.js +1 -1
- package/src/skills.js +2 -2
package/README.md
CHANGED
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
</div>
|
|
19
19
|
|
|
20
20
|
> [!IMPORTANT]
|
|
21
|
-
> Meta-Architect `v0.1.
|
|
21
|
+
> Meta-Architect `v0.1.9` is a production-grade skills line.
|
|
22
22
|
> It is not a lightweight demo branch.
|
|
23
|
-
> From `v0.1.
|
|
23
|
+
> From `v0.1.9` onward, the package is expected to ship with stable skill contracts, deterministic packaging, explicit release gates, and honest install and publish surfaces.
|
|
24
24
|
|
|
25
25
|
## Overview
|
|
26
26
|
|
|
@@ -57,7 +57,7 @@ It adds:
|
|
|
57
57
|
</tr>
|
|
58
58
|
<tr>
|
|
59
59
|
<td><strong>Release line</strong></td>
|
|
60
|
-
<td><code>v0.1.
|
|
60
|
+
<td><code>v0.1.9</code></td>
|
|
61
61
|
</tr>
|
|
62
62
|
<tr>
|
|
63
63
|
<td><strong>License</strong></td>
|
|
@@ -230,7 +230,7 @@ Required output:
|
|
|
230
230
|
5. Data model and storage choices
|
|
231
231
|
6. Auth/security considerations
|
|
232
232
|
7. DX/UX considerations
|
|
233
|
-
8. Delivery plan for v0.1.
|
|
233
|
+
8. Delivery plan for v0.1.9
|
|
234
234
|
9. Risks and trade-offs
|
|
235
235
|
10. Decision log
|
|
236
236
|
11. Exact next trigger to run after this
|
|
@@ -257,6 +257,7 @@ If you are working from a repository directly and need scaffolded local support
|
|
|
257
257
|
|
|
258
258
|
```bash
|
|
259
259
|
ma bootstrap
|
|
260
|
+
ma bootstrap --init-mcp
|
|
260
261
|
ma doctor
|
|
261
262
|
ma setup
|
|
262
263
|
ma
|
|
@@ -264,6 +265,7 @@ ma
|
|
|
264
265
|
|
|
265
266
|
Recommended lazy-user path:
|
|
266
267
|
- run `ma bootstrap` first to repair packaged assets, scaffold local runtime files, and verify the environment
|
|
268
|
+
- add `--init-mcp` if you want starter GitMCP source files written into the local `mcp/` folder when it is empty or invalid
|
|
267
269
|
- use `ma doctor` later when you want a check-only readiness report without changing files
|
|
268
270
|
|
|
269
271
|
Expected output for `ma setup`:
|
|
@@ -418,6 +420,7 @@ What `ma bootstrap` does:
|
|
|
418
420
|
- checks whether `codex` is callable
|
|
419
421
|
- repairs installed skills and support-bundle assets when possible
|
|
420
422
|
- runs local scaffold setup
|
|
423
|
+
- can seed starter MCP files with `--init-mcp` when the local MCP config is empty or invalid
|
|
421
424
|
- reports `READY`, `READY_WITH_WARNINGS`, or `BLOCKED`
|
|
422
425
|
|
|
423
426
|
What `ma doctor` does:
|
|
@@ -605,7 +608,7 @@ Release automation:
|
|
|
605
608
|
| [Plugin README](./plugins/meta-architect/README.md) | plugin distribution surface |
|
|
606
609
|
| [Collaborative Whiteboard Mission](./missions/collaborative-whiteboard/mission.md) | concrete scenario walkthrough |
|
|
607
610
|
| [Release Spec](./docs/release-spec.md) | release and gate policy |
|
|
608
|
-
| [Release Readiness](./docs/qa/release-readiness-0.1.
|
|
611
|
+
| [Release Readiness](./docs/qa/release-readiness-0.1.9.md) | QA evidence for the `v0.1.9` line |
|
|
609
612
|
|
|
610
613
|
## Release Hygiene
|
|
611
614
|
|
package/bin/ma.js
CHANGED
|
@@ -37,7 +37,7 @@ import { syncStatusUpdates } from "../src/state-sync.js";
|
|
|
37
37
|
function printUsage() {
|
|
38
38
|
console.error("Secondary helper commands:");
|
|
39
39
|
console.error(" ma");
|
|
40
|
-
console.error(" ma bootstrap");
|
|
40
|
+
console.error(" ma bootstrap [--init-mcp]");
|
|
41
41
|
console.error(" ma doctor");
|
|
42
42
|
console.error(" ma setup");
|
|
43
43
|
console.error(" ma init");
|
|
@@ -224,7 +224,7 @@ async function main() {
|
|
|
224
224
|
}
|
|
225
225
|
|
|
226
226
|
if (command === "bootstrap") {
|
|
227
|
-
const outcome = await runBootstrap();
|
|
227
|
+
const outcome = await runBootstrap({ initMcp: rest.includes("--init-mcp") });
|
|
228
228
|
process.exitCode = outcome.result === "BLOCKED" ? 1 : 0;
|
|
229
229
|
return;
|
|
230
230
|
}
|
package/docs/README.md
CHANGED
package/docs/getting-started.md
CHANGED
|
@@ -74,7 +74,7 @@ Required output:
|
|
|
74
74
|
5. Data model and storage choices
|
|
75
75
|
6. Auth/security considerations
|
|
76
76
|
7. DX/UX considerations
|
|
77
|
-
8. Delivery plan for v0.1.
|
|
77
|
+
8. Delivery plan for v0.1.9
|
|
78
78
|
9. Risks and trade-offs
|
|
79
79
|
10. Decision log
|
|
80
80
|
11. Exact next trigger to run after this
|
|
@@ -185,6 +185,7 @@ Easy rule:
|
|
|
185
185
|
- it checks whether `codex` is callable
|
|
186
186
|
- it repairs installed skills and support-bundle assets when possible
|
|
187
187
|
- it runs local scaffold setup
|
|
188
|
+
- it can seed starter MCP files with `--init-mcp` when the local MCP config is empty or invalid
|
|
188
189
|
- it reports `READY`, `READY_WITH_WARNINGS`, or `BLOCKED`
|
|
189
190
|
|
|
190
191
|
`ma doctor` is the check-only path:
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
# Release Readiness 0.1.
|
|
1
|
+
# Release Readiness 0.1.9
|
|
2
2
|
|
|
3
3
|
## Production bar
|
|
4
4
|
|
|
5
|
-
`v0.1.
|
|
5
|
+
`v0.1.9` is treated as production only when:
|
|
6
6
|
- the package installs cleanly from the canonical public install command
|
|
7
7
|
- the Codex-hosted runtime path works end to end
|
|
8
8
|
- the helper flow remains valid for scripted verification
|
|
9
|
-
- release docs, package metadata, and workflows all agree on `0.1.
|
|
9
|
+
- release docs, package metadata, and workflows all agree on `0.1.9`
|
|
10
10
|
|
|
11
11
|
Target release state:
|
|
12
|
-
- npm package: `@jstn-sdk/ma@0.1.
|
|
12
|
+
- npm package: `@jstn-sdk/ma@0.1.9`
|
|
13
13
|
- npm registry state: pending publish
|
|
14
|
-
- publishability note: `0.1.
|
|
15
|
-
- git tag: `v0.1.
|
|
16
|
-
- GitHub release: pending publish for `v0.1.
|
|
14
|
+
- publishability note: `0.1.8` is already published, so `0.1.9` is the next publishable package line
|
|
15
|
+
- git tag: `v0.1.9`
|
|
16
|
+
- GitHub release: pending publish for `v0.1.9`
|
|
17
17
|
|
|
18
18
|
## Production checklist
|
|
19
19
|
|
|
20
20
|
- skills-first product identity: PASS
|
|
21
21
|
- package/plugin identity aligned to `@jstn-sdk/ma`: PASS
|
|
22
|
-
- version/tag alignment `0.1.
|
|
22
|
+
- version/tag alignment `0.1.9` / `v0.1.9`: PASS
|
|
23
23
|
- install/uninstall docs aligned: PASS
|
|
24
24
|
- onboarding is concise and sequential: PASS
|
|
25
25
|
- helper command documented as secondary: PASS
|
package/docs/release-spec.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
# v0.1.
|
|
1
|
+
# v0.1.9 Requirements & Rules
|
|
2
2
|
|
|
3
3
|
## Production definition
|
|
4
4
|
|
|
5
|
-
Meta-Architect `v0.1.
|
|
5
|
+
Meta-Architect `v0.1.9` is production only when:
|
|
6
6
|
1. the package/install surface works
|
|
7
7
|
2. the in-session skill workflow from `$arch` through `$build` works
|
|
8
8
|
3. the release evidence matches the actual package and git tag
|
|
9
9
|
|
|
10
|
-
## What `v0.1.
|
|
10
|
+
## What `v0.1.9` must have
|
|
11
11
|
|
|
12
12
|
### 1. Canonical package/runtime path
|
|
13
13
|
|
|
@@ -49,11 +49,11 @@ Canonical state files:
|
|
|
49
49
|
|
|
50
50
|
### 4. Required release evidence
|
|
51
51
|
|
|
52
|
-
- `package.json` version `0.1.
|
|
53
|
-
- git tag `v0.1.
|
|
52
|
+
- `package.json` version `0.1.9`
|
|
53
|
+
- git tag `v0.1.9`
|
|
54
54
|
- `RELEASE.md`
|
|
55
55
|
- `CHANGELOG.md`
|
|
56
|
-
- `docs/qa/release-readiness-0.1.
|
|
56
|
+
- `docs/qa/release-readiness-0.1.9.md`
|
|
57
57
|
- green `npm run release:check`
|
|
58
58
|
|
|
59
59
|
### 5. Dist-tag discipline
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "meta-architect",
|
|
3
3
|
"displayName": "Meta-Architect",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.9",
|
|
5
5
|
"description": "Programmatic architecture and verified engineering skills for Codex-native workflows.",
|
|
6
6
|
"entry": "./README.md",
|
|
7
7
|
"skillsDir": "./skills"
|
|
@@ -105,7 +105,7 @@ When consuming the plugin:
|
|
|
105
105
|
The plugin version should track the release scope of the core repo.
|
|
106
106
|
|
|
107
107
|
For this repository:
|
|
108
|
-
- plugin scope is aligned to Meta-Architect `v0.1.
|
|
108
|
+
- plugin scope is aligned to Meta-Architect `v0.1.9`
|
|
109
109
|
- any breaking contract change should be versioned intentionally
|
|
110
110
|
|
|
111
111
|
The plugin is one distribution surface of the same product, not a separate product line.
|
package/src/bootstrap.js
CHANGED
|
@@ -3,7 +3,7 @@ import fs from "node:fs/promises";
|
|
|
3
3
|
import os from "node:os";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { loadMcpServers } from "./mcp-config.js";
|
|
6
|
-
import { getRepoRoot, getRuntimeWritePath } from "./paths.js";
|
|
6
|
+
import { getRepoRoot, getRuntimeWritePath, packageRoot } from "./paths.js";
|
|
7
7
|
import {
|
|
8
8
|
areSkillsInstalled,
|
|
9
9
|
ensureSkillsInstalled,
|
|
@@ -155,14 +155,33 @@ async function inspectLocalScaffold() {
|
|
|
155
155
|
return true;
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
-
async function
|
|
158
|
+
async function seedStarterMcpConfig() {
|
|
159
|
+
const files = ["servers.json", "collections.json", "fallback.json"];
|
|
160
|
+
for (const file of files) {
|
|
161
|
+
await fs.copyFile(path.join(packageRoot, "mcp", file), path.join(getRepoRoot(), "mcp", file));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
async function inspectMcpState({ fix, initMcp }) {
|
|
159
166
|
try {
|
|
160
167
|
const servers = await loadMcpServers();
|
|
161
168
|
if (servers.servers.length === 0) {
|
|
169
|
+
if (fix && initMcp) {
|
|
170
|
+
await seedStarterMcpConfig();
|
|
171
|
+
const seededServers = await loadMcpServers();
|
|
172
|
+
return makeStatus(
|
|
173
|
+
"FIXED",
|
|
174
|
+
"starter MCP sources were seeded into mcp/servers.json",
|
|
175
|
+
`${seededServers.servers.length} configured source(s)`,
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
|
|
162
179
|
return makeStatus(
|
|
163
180
|
"WARN",
|
|
164
181
|
"mcp/servers.json exists but contains no approved repo-backed sources",
|
|
165
|
-
|
|
182
|
+
initMcp
|
|
183
|
+
? "Run `ma bootstrap --init-mcp` to seed starter sources, or add exact upstream GitMCP repo endpoints manually."
|
|
184
|
+
: "Add exact upstream GitMCP repo endpoints before claiming VERIFIED evidence.",
|
|
166
185
|
);
|
|
167
186
|
}
|
|
168
187
|
|
|
@@ -172,11 +191,21 @@ async function inspectMcpState() {
|
|
|
172
191
|
`${servers.servers.length} configured source(s)`,
|
|
173
192
|
);
|
|
174
193
|
} catch (error) {
|
|
194
|
+
if (fix && initMcp) {
|
|
195
|
+
await seedStarterMcpConfig();
|
|
196
|
+
const seededServers = await loadMcpServers();
|
|
197
|
+
return makeStatus(
|
|
198
|
+
"FIXED",
|
|
199
|
+
"starter MCP sources replaced an invalid MCP configuration",
|
|
200
|
+
`${seededServers.servers.length} configured source(s)`,
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
|
|
175
204
|
return makeStatus("WARN", "mcp/servers.json is not ready for evidence binding", error.message);
|
|
176
205
|
}
|
|
177
206
|
}
|
|
178
207
|
|
|
179
|
-
async function runEnvironmentFlow({ fix }) {
|
|
208
|
+
async function runEnvironmentFlow({ fix, initMcp }) {
|
|
180
209
|
const statuses = [];
|
|
181
210
|
|
|
182
211
|
const codexResolution = await inspectCodexResolution({ fix });
|
|
@@ -256,7 +285,7 @@ async function runEnvironmentFlow({ fix }) {
|
|
|
256
285
|
);
|
|
257
286
|
}
|
|
258
287
|
|
|
259
|
-
statuses.push(await inspectMcpState());
|
|
288
|
+
statuses.push(await inspectMcpState({ fix, initMcp }));
|
|
260
289
|
return statuses;
|
|
261
290
|
}
|
|
262
291
|
|
|
@@ -297,15 +326,15 @@ function printStatuses(title, statuses) {
|
|
|
297
326
|
}
|
|
298
327
|
|
|
299
328
|
export async function runDoctor() {
|
|
300
|
-
const statuses = await runEnvironmentFlow({ fix: false });
|
|
329
|
+
const statuses = await runEnvironmentFlow({ fix: false, initMcp: false });
|
|
301
330
|
return {
|
|
302
331
|
statuses,
|
|
303
332
|
result: printStatuses("Meta-Architect Doctor", statuses),
|
|
304
333
|
};
|
|
305
334
|
}
|
|
306
335
|
|
|
307
|
-
export async function runBootstrap() {
|
|
308
|
-
const statuses = await runEnvironmentFlow({ fix: true });
|
|
336
|
+
export async function runBootstrap({ initMcp = false } = {}) {
|
|
337
|
+
const statuses = await runEnvironmentFlow({ fix: true, initMcp });
|
|
309
338
|
return {
|
|
310
339
|
statuses,
|
|
311
340
|
result: printStatuses("Meta-Architect Bootstrap", statuses),
|
package/src/mcp-live-client.js
CHANGED
package/src/skills.js
CHANGED
|
@@ -508,8 +508,8 @@ export async function runInit() {
|
|
|
508
508
|
path.join(getRepoRoot(), "docs", "release-spec.md"),
|
|
509
509
|
],
|
|
510
510
|
[
|
|
511
|
-
path.join(packageRoot, "docs", "qa", "release-readiness-0.1.
|
|
512
|
-
path.join(getRepoRoot(), "docs", "qa", "release-readiness-0.1.
|
|
511
|
+
path.join(packageRoot, "docs", "qa", "release-readiness-0.1.9.md"),
|
|
512
|
+
path.join(getRepoRoot(), "docs", "qa", "release-readiness-0.1.9.md"),
|
|
513
513
|
],
|
|
514
514
|
];
|
|
515
515
|
|