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 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 8 phase-prose files (entry/plan/execute/emit/verify/consolidate/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`).
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
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-plugkit",
3
- "version": "2.0.2302",
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm",
3
- "version": "2.0.2302",
3
+ "version": "2.0.2304",
4
4
  "description": "Spool-dispatch orchestration engine with unified state machine, skills, and automated git enforcement",
5
5
  "author": "AnEntrypoint",
6
6
  "license": "MIT",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-skill",
3
- "version": "2.0.2302",
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
- executeMdPath: path.join(proseSourceDir, 'execute.md'),
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(executeMd) {
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(executeMd)) !== null) {
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(executeMd, execJsRs) {
186
- const promisedOptsFields = extractExecJsOptsFieldsFromProse(executeMd);
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(`execute.md promises exec_js opts.${field} with no matching opts.get("${field}") in exec_js.rs`);
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.executeMdPath, paths.browserRsPath, paths.cdpEvalJsPath, paths.execJsRsPath];
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 executeMd = fs.readFileSync(paths.executeMdPath, 'utf8');
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(executeMd, execJsRs);
214
+ const execJsResult = crossReferenceExecJsOptsFields(execJsOptsProseMd, execJsRs);
215
215
  const allFindings = [...browserResult.conformanceFindings, ...execJsResult.conformanceFindings];
216
216
 
217
217
  if (allFindings.length) {