gm-skill 2.0.1237 → 2.0.1239
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 +1 -1
- package/bin/plugkit.version +1 -1
- package/bin/plugkit.wasm +0 -0
- package/bin/plugkit.wasm.sha256 +1 -1
- package/gm.json +2 -2
- package/lib/spool-dispatch.js +31 -4
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ An earlier generation fanned out fifteen per-platform downstream repos (gm-cc, g
|
|
|
35
35
|
|
|
36
36
|
## Version
|
|
37
37
|
|
|
38
|
-
`2.0.
|
|
38
|
+
`2.0.1239` — auto-bumped from the canonical `gm` repo. Every push to `AnEntrypoint/gm` (or any cascading sibling crate) republishes this package.
|
|
39
39
|
|
|
40
40
|
## Source of truth
|
|
41
41
|
|
package/bin/plugkit.version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.1.
|
|
1
|
+
0.1.454
|
package/bin/plugkit.wasm
CHANGED
|
Binary file
|
package/bin/plugkit.wasm.sha256
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
9b0366a7700df4352214ef235f8f9c7aff7d46330c959bd02869f6cafe0a29a8 plugkit.wasm
|
package/gm.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gm",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1239",
|
|
4
4
|
"description": "Spool-dispatch orchestration engine with unified state machine, skills, and automated git enforcement",
|
|
5
5
|
"author": "AnEntrypoint",
|
|
6
6
|
"license": "MIT",
|
|
@@ -17,5 +17,5 @@
|
|
|
17
17
|
"publishConfig": {
|
|
18
18
|
"access": "public"
|
|
19
19
|
},
|
|
20
|
-
"plugkitVersion": "0.1.
|
|
20
|
+
"plugkitVersion": "0.1.454"
|
|
21
21
|
}
|
package/lib/spool-dispatch.js
CHANGED
|
@@ -203,11 +203,11 @@ const SPOOL_POLL_PATTERNS = [
|
|
|
203
203
|
/\bwhile\b[^;]*?(?:!|-not)\s*(?:-(?:f|e)\s+|Test-Path\s+)[^;]*?\.gm[\\/](?:exec-spool|spool)/i,
|
|
204
204
|
/\buntil\b[^;]*?(?:-f|-e|Test-Path)\s+[^;]*?\.gm[\\/](?:exec-spool|spool)/i,
|
|
205
205
|
/\bfor\s+i\s+in\b[^;]*?;\s*do\b[^;]*?(?:sleep|Start-Sleep)[^;]*?\.gm[\\/](?:exec-spool|spool)/i,
|
|
206
|
-
/\b(?:cat|head|tail|less|more|type|Get-Content|gc)\s+(?:-[A-Za-z]+\s+)*['"]?[^'"|;&]*\.gm[\\/](?:exec-spool|spool)[\\/]/i,
|
|
207
|
-
/\b(?:
|
|
208
|
-
/\b(?:
|
|
206
|
+
/\b(?:cat|head|tail|less|more|type|Get-Content|gc)\s+(?:-[A-Za-z]+\s+)*['"]?[^'"|;&]*\.gm[\\/](?:exec-spool|spool)[\\/]\.status\.json\b/i,
|
|
207
|
+
/\b(?:cat|head|tail|less|more|type|Get-Content|gc)\s+(?:-[A-Za-z]+\s+)*['"]?[^'"|;&]*\.gm[\\/](?:exec-spool|spool)[\\/]\.watcher\.log\b/i,
|
|
208
|
+
/\b(?:ls|dir|Get-ChildItem|gci)\s+(?:-[A-Za-z]+\s+)*['"]?[^'"|;&]*\.gm[\\/](?:exec-spool|spool)(?:[\\/](?:in|out)?)?[\\/]?['"]?\s*(?:$|[|;&])/i,
|
|
209
|
+
/\b(?:test|Test-Path|tp)\s+(?:-[A-Za-z]+\s+)?['"]?[^'"|;&]*\.gm[\\/](?:exec-spool|spool)[\\/](?:out|in)[\\/]/i,
|
|
209
210
|
/\bfind\b[^|]*['"]?[^'"|;&]*\.gm[\\/](?:exec-spool|spool)\b/i,
|
|
210
|
-
/\b(?:stat|file|wc|Get-Item|gi|Get-Acl|Resolve-Path|Select-String|sls)\b[^|]*['"]?[^'"|;&]*\.gm[\\/](?:exec-spool|spool)[\\/]?/i,
|
|
211
211
|
/\b(?:xargs|parallel|fzf)\b[^|]*\.gm[\\/](?:exec-spool|spool)/i,
|
|
212
212
|
];
|
|
213
213
|
|
|
@@ -251,6 +251,20 @@ function deferMarkerIn(text) {
|
|
|
251
251
|
return null;
|
|
252
252
|
}
|
|
253
253
|
|
|
254
|
+
function readPendingStep(cwd) {
|
|
255
|
+
try {
|
|
256
|
+
const f = path.join(cwd, '.gm', 'turn-state.json');
|
|
257
|
+
if (!fs.existsSync(f)) return null;
|
|
258
|
+
const st = JSON.parse(fs.readFileSync(f, 'utf8'));
|
|
259
|
+
if (!st || !st.pending_step_id) return null;
|
|
260
|
+
const deadline = Number(st.pending_step_deadline_ms || 0);
|
|
261
|
+
if (deadline && Date.now() > deadline) return null;
|
|
262
|
+
return { step_id: st.pending_step_id, deadline_ms: deadline };
|
|
263
|
+
} catch (_) { return null; }
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
const AWAIT_RESULT_ALLOWED_VERBS = new Set(['memorize-continue', 'instruction', 'phase-status', 'health']);
|
|
267
|
+
|
|
254
268
|
function checkDispatchGates(sessionId, operation, extra) {
|
|
255
269
|
const cwd = process.cwd();
|
|
256
270
|
const gm = path.join(cwd, '.gm');
|
|
@@ -259,6 +273,19 @@ function checkDispatchGates(sessionId, operation, extra) {
|
|
|
259
273
|
const needsGmPath = path.join(gm, 'needs-gm');
|
|
260
274
|
const gmFiredPath = path.join(gm, `gm-fired-${sessionId}`);
|
|
261
275
|
|
|
276
|
+
if (operation === 'verb' && extra && extra.verb) {
|
|
277
|
+
const pending = readPendingStep(cwd);
|
|
278
|
+
if (pending && !AWAIT_RESULT_ALLOWED_VERBS.has(extra.verb)) {
|
|
279
|
+
logDeviation('deviation.await-result-violation', { verb: extra.verb, step_id: pending.step_id });
|
|
280
|
+
return {
|
|
281
|
+
allowed: false,
|
|
282
|
+
reason: `pipeline suspended at step_id=${pending.step_id}; only memorize-continue advances state. Read the AWAIT-RESULT instruction (dispatch \`instruction\`), compute the step inline using its prompt_template, then dispatch memorize-continue with the result. No other verb is valid until this completes.`,
|
|
283
|
+
await_result: true,
|
|
284
|
+
pending_step_id: pending.step_id,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
262
289
|
if (['stop', 'complete'].includes(operation)) {
|
|
263
290
|
const residuals = [];
|
|
264
291
|
if (fs.existsSync(prdPath)) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gm-skill",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1239",
|
|
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",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"gm.json"
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"gm-plugkit": "^2.0.
|
|
42
|
+
"gm-plugkit": "^2.0.1239"
|
|
43
43
|
},
|
|
44
44
|
"engines": {
|
|
45
45
|
"node": ">=16.0.0"
|