gm-skill 2.0.2302 → 2.0.2304
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/AGENTS.md +1 -1
- package/gm-plugkit/package.json +1 -1
- package/gm.json +1 -1
- package/package.json +1 -1
- package/scripts/check-prose-bundle.mjs +9 -9
package/AGENTS.md
CHANGED
|
@@ -22,7 +22,7 @@ Skills encode environment-specific constraints that override general knowledge.
|
|
|
22
22
|
|
|
23
23
|
# Architecture & Philosophy
|
|
24
24
|
|
|
25
|
-
Repo root = package root = published `gm-skill` npm package; no factory, no separate build-output dir. Entry: `skills/gm/SKILL.md`. Orchestration lives in rs-plugkit, served on-demand via `instruction`. The
|
|
25
|
+
Repo root = package root = published `gm-skill` npm package; no factory, no separate build-output dir. Entry: `skills/gm/SKILL.md`. Orchestration lives in rs-plugkit, served on-demand via `instruction`. The 11 phase-prose files (entry/specify/prove/emit/state/conc/sec/res/decide/update_docs/browser) live single-sourced inside rs-plugkit itself (`crates/plugkit-core/src/orchestrator/instructions/prose/*.md`, `include_str!`'d at build) -- a prose edit there requires a Rust rebuild via the normal cascade, no cross-repo sync step. `prose.rs::resolve()` is the per-key three-tier override chain (project file -> source-repo cache -> compiled default) covering phase prose, gate-denial text, and residual copy alike; edit `gm-plugkit/instructions/` to change this repo's own provisioned defaults. Chain detail: the recall store (`recall: string-externalization project`).
|
|
26
26
|
|
|
27
27
|
## WASM guest, one native host (agentplug-runner is the sole loader)
|
|
28
28
|
|
package/gm-plugkit/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gm-plugkit",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2304",
|
|
4
4
|
"description": "Bootstrap and daemon-spawn tool for gm plugkit binary. Downloads the correct platform wasm, verifies SHA256, and launches agentplug-runner (the native wasm host) as the spool watcher daemon.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
package/gm.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gm-skill",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2304",
|
|
4
4
|
"description": "Canonical universal harness — AI-native software engineering via skill-driven orchestration; bootstraps plugkit for task execution and session isolation. Install in any AI coding agent host.",
|
|
5
5
|
"author": "AnEntrypoint",
|
|
6
6
|
"license": "MIT",
|
|
@@ -122,7 +122,7 @@ function resolveConformancePaths() {
|
|
|
122
122
|
return {
|
|
123
123
|
proseSourceDir,
|
|
124
124
|
browserMdPath: path.join(proseSourceDir, 'browser.md'),
|
|
125
|
-
|
|
125
|
+
execJsOptsProseMdPath: path.join(proseSourceDir, 'prove.md'),
|
|
126
126
|
browserRsPath: path.join(root, 'agentplug', 'crates', 'agentplug-host', 'src', 'browser.rs'),
|
|
127
127
|
cdpEvalJsPath: path.join(root, 'agentplug', 'crates', 'agentplug-host', 'src', 'cdp_eval.js'),
|
|
128
128
|
execJsRsPath: path.join(root, 'agentplug', 'crates', 'agentplug-host', 'src', 'exec_js.rs'),
|
|
@@ -172,23 +172,23 @@ function crossReferenceBrowserPrefixes(browserMd, browserRs, cdpEvalJs) {
|
|
|
172
172
|
return { conformanceFindings, promisedPrefixCount: promisedPrefixes.length };
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
-
function extractExecJsOptsFieldsFromProse(
|
|
175
|
+
function extractExecJsOptsFieldsFromProse(execJsOptsProseMd) {
|
|
176
176
|
const optsFieldRe = /opts\.([a-zA-Z][a-zA-Z0-9]*)/g;
|
|
177
177
|
const promisedOptsFields = new Set();
|
|
178
178
|
let m;
|
|
179
|
-
while ((m = optsFieldRe.exec(
|
|
179
|
+
while ((m = optsFieldRe.exec(execJsOptsProseMd)) !== null) {
|
|
180
180
|
if (m[1] !== 'true' && m[1] !== 'false') promisedOptsFields.add(m[1]);
|
|
181
181
|
}
|
|
182
182
|
return promisedOptsFields;
|
|
183
183
|
}
|
|
184
184
|
|
|
185
|
-
function crossReferenceExecJsOptsFields(
|
|
186
|
-
const promisedOptsFields = extractExecJsOptsFieldsFromProse(
|
|
185
|
+
function crossReferenceExecJsOptsFields(execJsOptsProseMd, execJsRs) {
|
|
186
|
+
const promisedOptsFields = extractExecJsOptsFieldsFromProse(execJsOptsProseMd);
|
|
187
187
|
const conformanceFindings = [];
|
|
188
188
|
|
|
189
189
|
for (const field of promisedOptsFields) {
|
|
190
190
|
if (!execJsRs.includes(`opts.get("${field}")`)) {
|
|
191
|
-
conformanceFindings.push(`
|
|
191
|
+
conformanceFindings.push(`prove.md promises exec_js opts.${field} with no matching opts.get("${field}") in exec_js.rs`);
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
194
|
return { conformanceFindings, promisedOptsFieldCount: promisedOptsFields.size };
|
|
@@ -196,7 +196,7 @@ function crossReferenceExecJsOptsFields(executeMd, execJsRs) {
|
|
|
196
196
|
|
|
197
197
|
function runConformanceCheck() {
|
|
198
198
|
const paths = resolveConformancePaths();
|
|
199
|
-
const requiredFiles = [paths.browserMdPath, paths.
|
|
199
|
+
const requiredFiles = [paths.browserMdPath, paths.execJsOptsProseMdPath, paths.browserRsPath, paths.cdpEvalJsPath, paths.execJsRsPath];
|
|
200
200
|
const missingFiles = checkEveryRequiredFileExists(requiredFiles);
|
|
201
201
|
|
|
202
202
|
if (missingFiles.length > 0) {
|
|
@@ -207,11 +207,11 @@ function runConformanceCheck() {
|
|
|
207
207
|
const browserMd = fs.readFileSync(paths.browserMdPath, 'utf8');
|
|
208
208
|
const browserRs = fs.readFileSync(paths.browserRsPath, 'utf8');
|
|
209
209
|
const cdpEvalJs = fs.readFileSync(paths.cdpEvalJsPath, 'utf8');
|
|
210
|
-
const
|
|
210
|
+
const execJsOptsProseMd = fs.readFileSync(paths.execJsOptsProseMdPath, 'utf8');
|
|
211
211
|
const execJsRs = fs.readFileSync(paths.execJsRsPath, 'utf8');
|
|
212
212
|
|
|
213
213
|
const browserResult = crossReferenceBrowserPrefixes(browserMd, browserRs, cdpEvalJs);
|
|
214
|
-
const execJsResult = crossReferenceExecJsOptsFields(
|
|
214
|
+
const execJsResult = crossReferenceExecJsOptsFields(execJsOptsProseMd, execJsRs);
|
|
215
215
|
const allFindings = [...browserResult.conformanceFindings, ...execJsResult.conformanceFindings];
|
|
216
216
|
|
|
217
217
|
if (allFindings.length) {
|