0xray 4.0.33 → 4.0.34
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/.grok-plugin/plugin.json +1 -1
- package/.xray/features.json +1 -1
- package/dist/CHANGELOG.md +9 -0
- package/dist/integrations/hooks/goggles-pipeline.mjs +46 -11
- package/dist/integrations/hooks/goggles-planes.json +23 -0
- package/dist/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
- package/package.json +1 -1
- package/src/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
- package/xray/features.json +1 -1
package/.grok-plugin/plugin.json
CHANGED
package/.xray/features.json
CHANGED
package/dist/CHANGELOG.md
CHANGED
|
@@ -42,6 +42,15 @@ The format is based on [Conventional Commits](https://www.conventionalcommits.or
|
|
|
42
42
|
- Archive root `integrations/` costume SKILL dump → `docs/archive/integrations-costume/`. Live wear is `src/integrations`.
|
|
43
43
|
- Archive root `commands/` stale copy → `docs/archive/commands-copy/`. Live wear is `src/opencode/commands`.
|
|
44
44
|
|
|
45
|
+
## [4.0.34] - 2026-10-01
|
|
46
|
+
|
|
47
|
+
### 🔄 Changes
|
|
48
|
+
|
|
49
|
+
### 🐛 Bug Fixes
|
|
50
|
+
- fix: hold the lens on the worn build when the source is not packed (6f561ef6f)
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
45
54
|
## [4.0.33] - 2026-10-01
|
|
46
55
|
|
|
47
56
|
### 🔄 Changes
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* The view keeps every field for the next look.
|
|
5
5
|
* A held plane stays quiet. A leave is denied.
|
|
6
6
|
*/
|
|
7
|
-
import { existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
7
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, realpathSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
8
8
|
import { createRequire } from 'node:module';
|
|
9
9
|
import { dirname, join, resolve } from 'node:path';
|
|
10
10
|
import { fileURLToPath } from 'node:url';
|
|
@@ -649,7 +649,21 @@ function skillFor(id, root) {
|
|
|
649
649
|
return existsSync(join(root, rel)) ? rel : '';
|
|
650
650
|
}
|
|
651
651
|
|
|
652
|
+
function mappedFile(name) {
|
|
653
|
+
try {
|
|
654
|
+
const data = JSON.parse(readFileSync(planesFile(), 'utf8'));
|
|
655
|
+
const entry = data[name];
|
|
656
|
+
if (!entry || typeof entry !== 'object') return '';
|
|
657
|
+
if (typeof entry.file === 'string' && entry.file) return entry.file;
|
|
658
|
+
} catch {
|
|
659
|
+
return '';
|
|
660
|
+
}
|
|
661
|
+
return '';
|
|
662
|
+
}
|
|
663
|
+
|
|
652
664
|
function moduleFile(name) {
|
|
665
|
+
const mapped = mappedFile(name);
|
|
666
|
+
if (mapped) return mapped;
|
|
653
667
|
const platesDir = findPlatesDir(HERE);
|
|
654
668
|
const root = sourceRoot(platesDir);
|
|
655
669
|
const hit = sourceTexts(root).find((file) => file.rel.endsWith(`/${name}.ts`) || file.rel.endsWith(`/${name}.mjs`));
|
|
@@ -812,26 +826,39 @@ function fileHas(root, rel, mark) {
|
|
|
812
826
|
}
|
|
813
827
|
|
|
814
828
|
|
|
815
|
-
function
|
|
829
|
+
function factoryName(rel) {
|
|
830
|
+
return rel.startsWith('src/') || rel.startsWith('grok-bot/');
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
function wornHolds(plane, root) {
|
|
834
|
+
if (!plane.worn || !existsSync(join(root, plane.worn))) return false;
|
|
835
|
+
if (!plane.wornMark) return true;
|
|
836
|
+
return fileHas(root, plane.worn, plane.wornMark);
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
export function examinePlane(plane, root) {
|
|
816
840
|
const files = Array.isArray(plane.files) ? plane.files : [];
|
|
817
841
|
const checkable = files.length > 0 || plane.skills || plane.worn;
|
|
818
842
|
if (!checkable) return drawing();
|
|
843
|
+
const held = wornHolds(plane, root);
|
|
844
|
+
if (plane.worn && !held) {
|
|
845
|
+
return drift(`the worn build is not ${files[0] || plane.worn}`);
|
|
846
|
+
}
|
|
819
847
|
for (const rel of files) {
|
|
820
|
-
if (
|
|
848
|
+
if (existsSync(join(root, rel))) continue;
|
|
849
|
+
if (held && factoryName(rel)) continue;
|
|
850
|
+
return drift(`${rel} is not there`);
|
|
821
851
|
}
|
|
822
|
-
if (plane.mark && !fileHas(root, files[0], plane.mark)) {
|
|
852
|
+
if (plane.mark && files[0] && existsSync(join(root, files[0])) && !fileHas(root, files[0], plane.mark)) {
|
|
823
853
|
return drift(`${plane.mark} is not in ${files[0]}`);
|
|
824
854
|
}
|
|
825
|
-
if (plane.
|
|
826
|
-
return drift(`the worn build is not ${files[0] || plane.worn}`);
|
|
827
|
-
}
|
|
828
|
-
if (plane.skills && !existsSync(join(root, plane.skills))) {
|
|
855
|
+
if (plane.skills && !existsSync(join(root, plane.skills)) && !(held && factoryName(plane.skills))) {
|
|
829
856
|
return drift(`${plane.skills} is not there`);
|
|
830
857
|
}
|
|
831
|
-
if (plane.entryIsMark && plane.entry && files[0] && !fileHas(root, files[0], plane.entry)) {
|
|
858
|
+
if (plane.entryIsMark && plane.entry && files[0] && existsSync(join(root, files[0])) && !fileHas(root, files[0], plane.entry)) {
|
|
832
859
|
return drift(`${plane.entry} is not in ${files[0]}`);
|
|
833
860
|
}
|
|
834
|
-
if (plane.exitIsMark && plane.exit && files[0] && !fileHas(root, files[0], plane.exit)) {
|
|
861
|
+
if (plane.exitIsMark && plane.exit && files[0] && existsSync(join(root, files[0])) && !fileHas(root, files[0], plane.exit)) {
|
|
835
862
|
return drift(`${plane.exit} is not in ${files[0]}`);
|
|
836
863
|
}
|
|
837
864
|
return holds();
|
|
@@ -943,7 +970,15 @@ export function maintainLens(root) {
|
|
|
943
970
|
}
|
|
944
971
|
|
|
945
972
|
|
|
946
|
-
|
|
973
|
+
function sameInvoked(argvPath, modulePath) {
|
|
974
|
+
try {
|
|
975
|
+
return realpathSync(argvPath) === realpathSync(modulePath);
|
|
976
|
+
} catch {
|
|
977
|
+
return resolve(argvPath) === resolve(modulePath);
|
|
978
|
+
}
|
|
979
|
+
}
|
|
980
|
+
|
|
981
|
+
const isMain = Boolean(process.argv[1]) && sameInvoked(process.argv[1], fileURLToPath(import.meta.url));
|
|
947
982
|
if (isMain) {
|
|
948
983
|
const answered = gogglesAnswer(process.argv.slice(2));
|
|
949
984
|
const pane = process.stdout.isTTY && Array.isArray(answered.cards) && answered.cards.length > 0;
|
|
@@ -15,6 +15,9 @@
|
|
|
15
15
|
],
|
|
16
16
|
"skills": "SKILLS.md"
|
|
17
17
|
},
|
|
18
|
+
"synthesis": {
|
|
19
|
+
"file": "src/nucleus/synthesis.ts"
|
|
20
|
+
},
|
|
18
21
|
"routing": {
|
|
19
22
|
"files": ["src/nucleus/thin-dispatch.ts"],
|
|
20
23
|
"worn": "dist/nucleus/thin-dispatch.js",
|
|
@@ -24,5 +27,25 @@
|
|
|
24
27
|
},
|
|
25
28
|
"house": {
|
|
26
29
|
"files": ["grok-bot/lib/seat-doctor.cjs"]
|
|
30
|
+
},
|
|
31
|
+
"boot": {
|
|
32
|
+
"files": ["src/core/boot-orchestrator.ts"],
|
|
33
|
+
"skills": "src/skills/boot-orchestrator/SKILL.md"
|
|
34
|
+
},
|
|
35
|
+
"governance": {
|
|
36
|
+
"files": ["src/governance/governance-service.ts"]
|
|
37
|
+
},
|
|
38
|
+
"memory-recall": {
|
|
39
|
+
"files": ["src/integrations/hooks/plates.cjs"]
|
|
40
|
+
},
|
|
41
|
+
"orchestration": {
|
|
42
|
+
"files": ["src/mcps/orchestrator/server.ts"]
|
|
43
|
+
},
|
|
44
|
+
"processor": {
|
|
45
|
+
"files": ["src/processors/processor-manager.ts"],
|
|
46
|
+
"skills": "src/skills/processor-pipeline/SKILL.md"
|
|
47
|
+
},
|
|
48
|
+
"reporting": {
|
|
49
|
+
"files": ["src/reporting/framework-reporting-system.ts"]
|
|
27
50
|
}
|
|
28
51
|
}
|
package/package.json
CHANGED