@acpfx/echo 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/CHANGELOG.md ADDED
@@ -0,0 +1,21 @@
1
+ # @acpfx/echo
2
+
3
+ ## 0.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - d757640: Initial release: type-safe contracts, Rust orchestrator, manifest-driven event filtering
8
+
9
+ - Rust schema crate as canonical event type source of truth with codegen to TypeScript + Zod
10
+ - Node manifests (manifest.yaml) declaring consumes/emits contracts
11
+ - Orchestrator event filtering: nodes only receive declared events
12
+ - Rust orchestrator with ratatui TUI (--ui flag)
13
+ - node-sdk with structured logging helpers
14
+ - CI/CD with GitHub Actions and changesets
15
+ - Platform-specific npm packages for Rust binaries (esbuild-style distribution)
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies [d757640]
20
+ - @acpfx/core@0.2.0
21
+ - @acpfx/node-sdk@0.2.0
package/manifest.yaml ADDED
@@ -0,0 +1,42 @@
1
+ name: echo
2
+ description: Echoes all received events back (testing/debugging)
3
+ consumes:
4
+ - audio.chunk
5
+ - audio.level
6
+ - speech.partial
7
+ - speech.delta
8
+ - speech.final
9
+ - speech.pause
10
+ - agent.submit
11
+ - agent.delta
12
+ - agent.complete
13
+ - agent.thinking
14
+ - agent.tool_start
15
+ - agent.tool_done
16
+ - control.interrupt
17
+ - control.state
18
+ - control.error
19
+ - lifecycle.ready
20
+ - lifecycle.done
21
+ - log
22
+ - player.status
23
+ emits:
24
+ - audio.chunk
25
+ - audio.level
26
+ - speech.partial
27
+ - speech.delta
28
+ - speech.final
29
+ - speech.pause
30
+ - agent.submit
31
+ - agent.delta
32
+ - agent.complete
33
+ - agent.thinking
34
+ - agent.tool_start
35
+ - agent.tool_done
36
+ - control.interrupt
37
+ - control.state
38
+ - control.error
39
+ - lifecycle.ready
40
+ - lifecycle.done
41
+ - log
42
+ - player.status
package/package.json ADDED
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "@acpfx/echo",
3
+ "version": "0.2.0",
4
+ "type": "module",
5
+ "bin": {
6
+ "acpfx-echo": "./dist/index.js"
7
+ },
8
+ "main": "./dist/index.js",
9
+ "dependencies": {
10
+ "@acpfx/core": "0.2.0",
11
+ "@acpfx/node-sdk": "0.2.0"
12
+ },
13
+ "scripts": {
14
+ "build": "esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.js --packages=external"
15
+ }
16
+ }
package/src/index.ts ADDED
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Echo node — trivial test node that reads NDJSON stdin and echoes each event
3
+ * back to stdout unchanged. Emits lifecycle.ready on startup.
4
+ */
5
+
6
+ import { emit, onEvent, handleManifestFlag } from "@acpfx/node-sdk";
7
+
8
+ handleManifestFlag();
9
+
10
+ emit({ type: "lifecycle.ready", component: "echo" });
11
+
12
+ const rl = onEvent((event) => {
13
+ // Echo back unchanged
14
+ emit(event);
15
+ });
16
+
17
+ rl.on("close", () => {
18
+ process.exit(0);
19
+ });
20
+
21
+ process.on("SIGTERM", () => {
22
+ rl.close();
23
+ process.exit(0);
24
+ });