covenant-bridge 0.1.5 → 0.2.0

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/manifest.json CHANGED
@@ -26,8 +26,9 @@
26
26
  }
27
27
  ],
28
28
  "include": [
29
- "node_modules/@linuxcnc-node/core/build/Release/nml_addon.node",
30
- "node_modules/@linuxcnc-node/gcode/build/Release/gcode_addon.node",
31
- "node_modules/@linuxcnc-node/hal/build/Release/hal_addon.node"
29
+ "build/Release"
30
+ ],
31
+ "permissions": [
32
+ "appbus/expose"
32
33
  ]
33
34
  }
package/package.json CHANGED
@@ -1,41 +1,42 @@
1
1
  {
2
2
  "name": "covenant-bridge",
3
- "version": "0.1.5",
3
+ "version": "0.2.0",
4
4
  "description": "LinuxCNC to Eden bridge worker",
5
5
  "main": "dist/backend.js",
6
- "type": "module",
6
+ "type": "commonjs",
7
7
  "files": [
8
8
  "dist",
9
9
  "manifest.json"
10
10
  ],
11
- "scripts": {
12
- "build": "tsc && genesis build . -o bridge.edenite",
13
- "clean": "rm -rf dist",
14
- "rebuild": "npm run clean && npm run build",
15
- "prepublishOnly": "npm run rebuild"
16
- },
17
11
  "keywords": [
18
12
  "linuxcnc",
19
13
  "eden",
20
14
  "cnc",
21
15
  "bridge"
22
16
  ],
23
- "license": "MIT",
17
+ "license": "GPL-2.0-only",
24
18
  "dependencies": {
25
- "covenant-protocol": "^0.1.0",
26
- "@edenapp/types": "^0.2.1",
19
+ "@edenapp/types": "^0.4.1",
27
20
  "@linuxcnc-node/core": "^2.1.3",
28
21
  "@linuxcnc-node/gcode": "^2.1.2",
29
22
  "@linuxcnc-node/hal": "^2.1.2",
30
23
  "@linuxcnc-node/types": "^2.1.1",
24
+ "covenant-protocol": "^0.1.0",
31
25
  "dlv": "^1.1.3",
32
26
  "picomatch": "^4.0.3"
33
- },
27
+ },
34
28
  "devDependencies": {
35
29
  "@edenapp/genesis": "^0.4.0",
36
30
  "@types/dlv": "^1.1.5",
37
31
  "@types/node": "^20.0.0",
38
32
  "@types/picomatch": "^4.0.2",
33
+ "tsup": "^8.5.1",
39
34
  "typescript": "^5.0.0"
35
+ },
36
+ "scripts": {
37
+ "copy-addons": "mkdir -p build/Release && cp node_modules/@linuxcnc-node/*/build/Release/*.node build/Release/",
38
+ "build": "rm -rf *.edenite && npm run copy-addons && tsup && genesis build . -o bridge.edenite",
39
+ "clean": "rm -rf dist build",
40
+ "rebuild": "npm run clean && npm run build"
40
41
  }
41
- }
42
+ }
package/dist/backend.d.ts DELETED
@@ -1,8 +0,0 @@
1
- /**
2
- * Covenant Bridge Backend
3
- *
4
- * Main entry point for the LinuxCNC-Eden bridge.
5
- * Initializes and exposes all AppBus services.
6
- */
7
- export {};
8
- //# sourceMappingURL=backend.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1,11 +0,0 @@
1
- /**
2
- * G-Code Service
3
- *
4
- * Exposes G-code parsing via AppBus using LinuxCNC's rs274ngc interpreter.
5
- * Implements GCodeProtocol from covenant-protocol.
6
- */
7
- /**
8
- * Initialize the G-code service
9
- */
10
- export declare function initGCodeService(): void;
11
- //# sourceMappingURL=gcode.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gcode.d.ts","sourceRoot":"","sources":["../../src/services/gcode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAqDvC"}
@@ -1,55 +0,0 @@
1
- /**
2
- * G-Code Service
3
- *
4
- * Exposes G-code parsing via AppBus using LinuxCNC's rs274ngc interpreter.
5
- * Implements GCodeProtocol from covenant-protocol.
6
- */
7
- import { parseGCode } from "@linuxcnc-node/gcode";
8
- const SERVICE_NAME = "gcode";
9
- /**
10
- * Initialize the G-code service
11
- */
12
- export function initGCodeService() {
13
- worker.appBus.exposeService(SERVICE_NAME, (connection, { appId: clientAppId }) => {
14
- console.log(`[GCode] Client connected: ${clientAppId}`);
15
- const typedConn = connection;
16
- // Handle disconnect
17
- connection.onClose(() => {
18
- console.log(`[GCode] Client disconnected: ${clientAppId}`);
19
- });
20
- // Parse handler
21
- typedConn.handle("parse", async ({ filepath, iniPath, progressUpdates }) => {
22
- try {
23
- const result = await parseGCode(filepath, {
24
- iniPath,
25
- progressUpdates: progressUpdates ?? 40,
26
- onProgress: (progress) => {
27
- // Stream progress updates to the client
28
- try {
29
- typedConn.send("parse-progress", progress);
30
- }
31
- catch (err) {
32
- // Client may have disconnected
33
- console.error("[GCode] Error sending progress:", err);
34
- }
35
- },
36
- });
37
- return result;
38
- }
39
- catch (err) {
40
- // Send error message
41
- typedConn.send("error", {
42
- code: "PARSE_ERROR",
43
- message: err instanceof Error ? err.message : String(err),
44
- });
45
- throw err;
46
- }
47
- });
48
- // Ping handler
49
- typedConn.handle("ping", () => {
50
- return { timestamp: Date.now() };
51
- });
52
- }, { description: "G-code file parsing using LinuxCNC interpreter" });
53
- console.log(`[GCode] Service exposed as '${SERVICE_NAME}'`);
54
- }
55
- //# sourceMappingURL=gcode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gcode.js","sourceRoot":"","sources":["../../src/services/gcode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIlD,MAAM,YAAY,GAAG,OAAO,CAAC;AAE7B;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAO,CAAC,MAAM,CAAC,aAAa,CAC1B,YAAY,EACZ,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE;QACrC,OAAO,CAAC,GAAG,CAAC,6BAA6B,WAAW,EAAE,CAAC,CAAC;QAExD,MAAM,SAAS,GAAG,UAA2C,CAAC;QAE9D,oBAAoB;QACpB,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE;YACtB,OAAO,CAAC,GAAG,CAAC,gCAAgC,WAAW,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,gBAAgB;QAChB,SAAS,CAAC,MAAM,CACd,OAAO,EACP,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE;YAC/C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE;oBACxC,OAAO;oBACP,eAAe,EAAE,eAAe,IAAI,EAAE;oBACtC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;wBACvB,wCAAwC;wBACxC,IAAI,CAAC;4BACH,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;wBAC7C,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,+BAA+B;4BAC/B,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;wBACxD,CAAC;oBACH,CAAC;iBACF,CAAC,CAAC;gBAEH,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,qBAAqB;gBACrB,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE;oBACtB,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBAC1D,CAAC,CAAC;gBACH,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC,CACF,CAAC;QAEF,eAAe;QACf,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE;YAC5B,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,EACD,EAAE,WAAW,EAAE,gDAAgD,EAAE,CAClE,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,+BAA+B,YAAY,GAAG,CAAC,CAAC;AAC9D,CAAC"}
@@ -1,12 +0,0 @@
1
- /**
2
- * HAL Service
3
- *
4
- * Exposes HAL component management and I/O access via AppBus.
5
- * Each connection gets its own HalComponent lifecycle.
6
- * Implements HalProtocol from covenant-protocol.
7
- */
8
- /**
9
- * Initialize the HAL service
10
- */
11
- export declare function initHalService(): void;
12
- //# sourceMappingURL=hal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hal.d.ts","sourceRoot":"","sources":["../../src/services/hal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgCH;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAoXrC"}
@@ -1,342 +0,0 @@
1
- /**
2
- * HAL Service
3
- *
4
- * Exposes HAL component management and I/O access via AppBus.
5
- * Each connection gets its own HalComponent lifecycle.
6
- * Implements HalProtocol from covenant-protocol.
7
- */
8
- import { HalComponent, getMsgLevel, setMsgLevel, getValue, getInfoPins, getInfoSignals, getInfoParams, newSignal, pinHasWriter, setSignalValue, } from "@linuxcnc-node/hal";
9
- import picomatch from "picomatch";
10
- const SERVICE_NAME = "hal";
11
- /**
12
- * Initialize the HAL service
13
- */
14
- export function initHalService() {
15
- worker.appBus.exposeService(SERVICE_NAME, (connection, { appId: clientAppId }) => {
16
- console.log(`[HAL] Client connected: ${clientAppId}`);
17
- const typedConn = connection;
18
- // Per-connection state
19
- const state = {
20
- component: null,
21
- pins: new Map(),
22
- params: new Map(),
23
- lastValues: new Map(),
24
- cursor: 0,
25
- pollInterval: null,
26
- };
27
- // Clean up on disconnect
28
- connection.onClose(() => {
29
- console.log(`[HAL] Client disconnected: ${clientAppId}`);
30
- if (state.pollInterval) {
31
- clearInterval(state.pollInterval);
32
- }
33
- if (state.component) {
34
- state.component.dispose();
35
- }
36
- });
37
- // Start polling for value changes
38
- function startPolling() {
39
- if (state.pollInterval)
40
- return;
41
- state.pollInterval = setInterval(() => {
42
- if (!state.component)
43
- return;
44
- const changes = [];
45
- // Check all pins and params for changes
46
- for (const [name, pin] of state.pins) {
47
- const value = pin.getValue();
48
- const lastValue = state.lastValues.get(name);
49
- if (value !== lastValue) {
50
- changes.push({ name, value });
51
- state.lastValues.set(name, value);
52
- }
53
- }
54
- for (const [name, param] of state.params) {
55
- const value = param.getValue();
56
- const lastValue = state.lastValues.get(name);
57
- if (value !== lastValue) {
58
- changes.push({ name, value });
59
- state.lastValues.set(name, value);
60
- }
61
- }
62
- if (changes.length > 0) {
63
- state.cursor++;
64
- const delta = {
65
- changes,
66
- cursor: state.cursor,
67
- timestamp: Date.now(),
68
- };
69
- try {
70
- typedConn.send("items-delta", delta);
71
- }
72
- catch (err) {
73
- console.error("[HAL] Error sending delta:", err);
74
- }
75
- }
76
- }, 10); // 10ms polling interval
77
- }
78
- // === COMPONENT HANDLERS ===
79
- typedConn.handle("component/init", ({ name, prefix }) => {
80
- if (state.component) {
81
- return {
82
- success: false,
83
- componentName: "",
84
- error: "Component already initialized for this connection",
85
- };
86
- }
87
- try {
88
- state.component = new HalComponent(name, prefix);
89
- return {
90
- success: true,
91
- componentName: state.component.name,
92
- };
93
- }
94
- catch (err) {
95
- return {
96
- success: false,
97
- componentName: "",
98
- error: err instanceof Error ? err.message : String(err),
99
- };
100
- }
101
- });
102
- typedConn.handle("component/ready", () => {
103
- if (!state.component) {
104
- return { success: false, error: "Component not initialized" };
105
- }
106
- try {
107
- state.component.ready();
108
- startPolling();
109
- typedConn.send("hal-ready", {
110
- componentName: state.component.name,
111
- prefix: state.component.prefix,
112
- });
113
- return { success: true };
114
- }
115
- catch (err) {
116
- return {
117
- success: false,
118
- error: err instanceof Error ? err.message : String(err),
119
- };
120
- }
121
- });
122
- typedConn.handle("component/unready", () => {
123
- if (!state.component) {
124
- return { success: false, error: "Component not initialized" };
125
- }
126
- try {
127
- state.component.unready();
128
- return { success: true };
129
- }
130
- catch (err) {
131
- return {
132
- success: false,
133
- error: err instanceof Error ? err.message : String(err),
134
- };
135
- }
136
- });
137
- // === PIN/PARAM HANDLERS ===
138
- typedConn.handle("pin/create", ({ name, type, direction }) => {
139
- if (!state.component) {
140
- return {
141
- success: false,
142
- fullName: "",
143
- error: "Component not initialized",
144
- };
145
- }
146
- try {
147
- const pin = state.component.newPin(name, type, direction);
148
- state.pins.set(name, pin);
149
- state.lastValues.set(name, pin.getValue());
150
- return {
151
- success: true,
152
- fullName: `${state.component.prefix}.${pin.name}`,
153
- };
154
- }
155
- catch (err) {
156
- return {
157
- success: false,
158
- fullName: "",
159
- error: err instanceof Error ? err.message : String(err),
160
- };
161
- }
162
- });
163
- typedConn.handle("param/create", ({ name, type, direction }) => {
164
- if (!state.component) {
165
- return {
166
- success: false,
167
- fullName: "",
168
- error: "Component not initialized",
169
- };
170
- }
171
- try {
172
- const param = state.component.newParam(name, type, direction);
173
- state.params.set(name, param);
174
- state.lastValues.set(name, param.getValue());
175
- return {
176
- success: true,
177
- fullName: `${state.component.prefix}.${param.name}`,
178
- };
179
- }
180
- catch (err) {
181
- return {
182
- success: false,
183
- fullName: "",
184
- error: err instanceof Error ? err.message : String(err),
185
- };
186
- }
187
- });
188
- typedConn.handle("item/get-value", ({ name }) => {
189
- if (!state.component) {
190
- throw new Error("Component not initialized");
191
- }
192
- const value = state.component.getValue(name);
193
- return { value };
194
- });
195
- typedConn.handle("item/set-value", ({ name, value }) => {
196
- if (!state.component) {
197
- return { success: false, error: "Component not initialized" };
198
- }
199
- try {
200
- state.component.setValue(name, value);
201
- state.lastValues.set(name, value);
202
- return { success: true };
203
- }
204
- catch (err) {
205
- return {
206
- success: false,
207
- error: err instanceof Error ? err.message : String(err),
208
- };
209
- }
210
- });
211
- typedConn.handle("items/sync", () => {
212
- if (!state.component) {
213
- throw new Error("Component not initialized");
214
- }
215
- // Build current items snapshot
216
- const items = {};
217
- for (const [name, pin] of state.pins) {
218
- items[name] = pin.getValue();
219
- }
220
- for (const [name, param] of state.params) {
221
- items[name] = param.getValue();
222
- }
223
- return {
224
- items,
225
- cursor: state.cursor,
226
- };
227
- });
228
- // === GLOBAL HANDLERS ===
229
- typedConn.handle("global/component-exists", ({ componentName }) => {
230
- return { exists: HalComponent.exists(componentName) };
231
- });
232
- typedConn.handle("global/component-is-ready", ({ componentName }) => {
233
- return { ready: HalComponent.isReady(componentName) };
234
- });
235
- typedConn.handle("global/signal-create", ({ name, type }) => {
236
- try {
237
- newSignal(name, type);
238
- return { success: true };
239
- }
240
- catch (err) {
241
- return {
242
- success: false,
243
- error: err instanceof Error ? err.message : String(err),
244
- };
245
- }
246
- });
247
- typedConn.handle("global/signal-get-value", ({ signalName }) => {
248
- const value = getValue(signalName);
249
- return { value };
250
- });
251
- typedConn.handle("global/signal-set-value", ({ signalName, value }) => {
252
- try {
253
- setSignalValue(signalName, value);
254
- return { success: true };
255
- }
256
- catch (err) {
257
- return {
258
- success: false,
259
- error: err instanceof Error ? err.message : String(err),
260
- };
261
- }
262
- });
263
- typedConn.handle("global/signal-connect", ({ pinName, signalName }) => {
264
- // This would need net/connect functionality from hal
265
- // For now, return not implemented
266
- return { success: false, error: "Not implemented - use halcmd net" };
267
- });
268
- typedConn.handle("global/signal-disconnect", ({ pinName }) => {
269
- // This would need disconnect functionality from hal
270
- return {
271
- success: false,
272
- error: "Not implemented - use halcmd unlinkp",
273
- };
274
- });
275
- typedConn.handle("global/pin-has-writer", ({ pinName }) => {
276
- return { hasWriter: pinHasWriter(pinName) };
277
- });
278
- typedConn.handle("global/get-value", ({ name }) => {
279
- const value = getValue(name);
280
- // Determine type based on whether it's a pin, param, or signal
281
- // For simplicity, return "pin" - could be enhanced with proper detection
282
- return { value, type: "pin" };
283
- });
284
- typedConn.handle("global/list-pins", ({ filter }) => {
285
- let pins = getInfoPins();
286
- if (filter) {
287
- const isMatch = picomatch(filter);
288
- pins = pins.filter((p) => isMatch(p.name));
289
- }
290
- return { pins };
291
- });
292
- typedConn.handle("global/list-params", ({ filter }) => {
293
- let params = getInfoParams();
294
- if (filter) {
295
- const isMatch = picomatch(filter);
296
- params = params.filter((p) => isMatch(p.name));
297
- }
298
- return { params };
299
- });
300
- typedConn.handle("global/list-signals", ({ filter }) => {
301
- let signals = getInfoSignals();
302
- if (filter) {
303
- const isMatch = picomatch(filter);
304
- signals = signals.filter((s) => isMatch(s.name));
305
- }
306
- return { signals };
307
- });
308
- typedConn.handle("global/list-all", () => {
309
- return {
310
- pins: getInfoPins(),
311
- params: getInfoParams(),
312
- signals: getInfoSignals(),
313
- };
314
- });
315
- typedConn.handle("global/msg-level-get", () => {
316
- return { level: getMsgLevel() };
317
- });
318
- typedConn.handle("global/msg-level-set", ({ level }) => {
319
- const previousLevel = getMsgLevel();
320
- setMsgLevel(level);
321
- return { success: true, previousLevel };
322
- });
323
- // === CONNECTION HANDLERS ===
324
- typedConn.handle("ping", () => {
325
- return { timestamp: Date.now() };
326
- });
327
- typedConn.handle("get-status", () => {
328
- return {
329
- connected: true,
330
- componentName: state.component?.name ?? "",
331
- componentReady: state.component
332
- ? HalComponent.isReady(state.component.name)
333
- : false,
334
- pinCount: state.pins.size,
335
- paramCount: state.params.size,
336
- uptime: process.uptime(),
337
- };
338
- });
339
- }, { description: "HAL component management and I/O access" });
340
- console.log(`[HAL] Service exposed as '${SERVICE_NAME}'`);
341
- }
342
- //# sourceMappingURL=hal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hal.js","sourceRoot":"","sources":["../../src/services/hal.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * LinuxCNC Service
3
- *
4
- * Exposes LinuxCNC status monitoring and command execution via AppBus.
5
- * Implements LinuxCNCProtocol from covenant-protocol.
6
- */
7
- /**
8
- * Initialize the LinuxCNC service
9
- */
10
- export declare function initLinuxCNCService(): void;
11
- //# sourceMappingURL=linuxcnc.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linuxcnc.d.ts","sourceRoot":"","sources":["../../src/services/linuxcnc.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsCH;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAiS1C"}