@voicethere/agent 0.7.6 → 0.7.8
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/dist/templates/game-sync/agent.js +2 -2
- package/dist/templates/index.d.ts +3 -0
- package/dist/templates/index.d.ts.map +1 -1
- package/dist/templates/index.js +12 -0
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/package-json.d.ts +12 -0
- package/dist/templates/package-json.d.ts.map +1 -0
- package/dist/templates/package-json.js +52 -0
- package/dist/templates/package-json.js.map +1 -0
- package/dist/templates/registry.d.ts +2 -0
- package/dist/templates/registry.d.ts.map +1 -1
- package/dist/templates/registry.js +3 -0
- package/dist/templates/registry.js.map +1 -1
- package/package.json +1 -1
- package/templates/echo-smoke.ts +0 -1
- package/templates/game-sync.ts +2 -2
|
@@ -12121,7 +12121,7 @@ async function loadWorldFromRedis() {
|
|
|
12121
12121
|
}
|
|
12122
12122
|
async function saveWorldToRedis(world) {
|
|
12123
12123
|
if (!redis) return;
|
|
12124
|
-
await redis.
|
|
12124
|
+
await redis.set(REDIS_WORLD_KEY, copyWorldBuffer(world));
|
|
12125
12125
|
}
|
|
12126
12126
|
async function runSimulationTick() {
|
|
12127
12127
|
const now = Date.now();
|
|
@@ -12194,7 +12194,7 @@ async function ensureRedisWorldInitialized() {
|
|
|
12194
12194
|
const existing = await redis.getBuffer(REDIS_WORLD_KEY);
|
|
12195
12195
|
if (!existing || existing.byteLength === 0) {
|
|
12196
12196
|
const empty = createEmptyWorldBuffer();
|
|
12197
|
-
await redis.
|
|
12197
|
+
await redis.set(REDIS_WORLD_KEY, copyWorldBuffer(empty));
|
|
12198
12198
|
}
|
|
12199
12199
|
}
|
|
12200
12200
|
defineAgent({
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type AgentTemplateDefinition, type TemplateKind } from "./registry.js";
|
|
2
2
|
export type { AgentTemplateDefinition, AgentTemplateId, TemplateKind, } from "./registry.js";
|
|
3
3
|
export { AGENT_TEMPLATES, getTemplateById, isAgentTemplateId, listSeedOnCreateTemplates, } from "./registry.js";
|
|
4
|
+
export { IMAGE_PROVIDED_NPM_PACKAGES, buildCustomerPackageJson, stripImageProvidedNpmDependencies, type BuildCustomerPackageJsonOptions, type StripImageProvidedNpmDependenciesResult, } from "./package-json.js";
|
|
4
5
|
export interface TemplateSourceFile {
|
|
5
6
|
/** Project-relative path within the template tree (e.g. `agent.ts`, `world-layout.ts`). */
|
|
6
7
|
path: string;
|
|
@@ -15,6 +16,8 @@ export declare function resolveTemplateEntryPath(id: string): string;
|
|
|
15
16
|
export declare function loadTemplateSources(id: string): TemplateSourceFile[];
|
|
16
17
|
/** Like {@link loadTemplateSources}, but paths match registry `sourceFiles` (e.g. `voice-showcase/agent.ts`). */
|
|
17
18
|
export declare function loadTemplateWorkspaceSources(id: string): TemplateSourceFile[];
|
|
19
|
+
/** Workspace sources for dashboard/CLI project seeding — TS sources plus root `package.json`. */
|
|
20
|
+
export declare function loadTemplateProjectWorkspace(id: string): TemplateSourceFile[];
|
|
18
21
|
export declare function hasSeedBundle(id: string): boolean;
|
|
19
22
|
export declare function loadTemplateBundle(id: string): Buffer;
|
|
20
23
|
export declare function buildSeedTemplateBundles(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EAGlB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,uBAAuB,EACvB,eAAe,EACf,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,iCAAiC,EACjC,KAAK,+BAA+B,EACpC,KAAK,uCAAuC,GAC7C,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,kBAAkB;IACjC,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAaD,wBAAgB,aAAa,CAC3B,MAAM,CAAC,EAAE,mBAAmB,GAC3B,uBAAuB,EAAE,CAK3B;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,uBAAuB,CAE/D;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAO3D;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAYpE;AAED,iHAAiH;AACjH,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAY7E;AAED,iGAAiG;AACjG,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAQ7E;AAMD,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAMjD;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAYrD;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAS9D"}
|
package/dist/templates/index.js
CHANGED
|
@@ -2,8 +2,10 @@ import { existsSync, readFileSync } from "node:fs";
|
|
|
2
2
|
import { dirname, join, resolve } from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
4
|
import { buildAgentBundle } from "../build-bundle.js";
|
|
5
|
+
import { buildCustomerPackageJson } from "./package-json.js";
|
|
5
6
|
import { AGENT_TEMPLATES, getTemplateById, listSeedOnCreateTemplates, } from "./registry.js";
|
|
6
7
|
export { AGENT_TEMPLATES, getTemplateById, isAgentTemplateId, listSeedOnCreateTemplates, } from "./registry.js";
|
|
8
|
+
export { IMAGE_PROVIDED_NPM_PACKAGES, buildCustomerPackageJson, stripImageProvidedNpmDependencies, } from "./package-json.js";
|
|
7
9
|
const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
|
|
8
10
|
const PACKAGE_ROOT = join(MODULE_DIR, "..", "..");
|
|
9
11
|
const TEMPLATES_DIR = join(PACKAGE_ROOT, "templates");
|
|
@@ -57,6 +59,16 @@ export function loadTemplateWorkspaceSources(id) {
|
|
|
57
59
|
};
|
|
58
60
|
});
|
|
59
61
|
}
|
|
62
|
+
/** Workspace sources for dashboard/CLI project seeding — TS sources plus root `package.json`. */
|
|
63
|
+
export function loadTemplateProjectWorkspace(id) {
|
|
64
|
+
return [
|
|
65
|
+
...loadTemplateWorkspaceSources(id),
|
|
66
|
+
{
|
|
67
|
+
path: "package.json",
|
|
68
|
+
content: buildCustomerPackageJson({ templateId: id }),
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
}
|
|
60
72
|
function seedBundlePath(id) {
|
|
61
73
|
return join(PACKAGE_ROOT, "dist", "templates", id, "agent.js");
|
|
62
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,eAAe,EAGf,eAAe,EACf,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AAOvB,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const IMAGE_PROVIDED_NPM_PACKAGES: readonly ["@voicethere/agent", "@types/node"];
|
|
2
|
+
export interface BuildCustomerPackageJsonOptions {
|
|
3
|
+
templateId: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function buildCustomerPackageJson(options: BuildCustomerPackageJsonOptions): string;
|
|
7
|
+
export interface StripImageProvidedNpmDependenciesResult {
|
|
8
|
+
pkg: Record<string, unknown>;
|
|
9
|
+
remainingDependencyCount: number;
|
|
10
|
+
}
|
|
11
|
+
export declare function stripImageProvidedNpmDependencies(parsed: Record<string, unknown>): StripImageProvidedNpmDependenciesResult;
|
|
12
|
+
//# sourceMappingURL=package-json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../src/templates/package-json.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,2BAA2B,+CAG9B,CAAC;AAEX,MAAM,WAAW,+BAA+B;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAYD,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,+BAA+B,GACvC,MAAM,CAyBR;AAED,MAAM,WAAW,uCAAuC;IACtD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,uCAAuC,CAezC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { getTemplateById } from "./registry.js";
|
|
5
|
+
export const IMAGE_PROVIDED_NPM_PACKAGES = [
|
|
6
|
+
"@voicethere/agent",
|
|
7
|
+
"@types/node",
|
|
8
|
+
];
|
|
9
|
+
const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const PACKAGE_ROOT = join(MODULE_DIR, "..", "..");
|
|
11
|
+
function readAgentPackageVersion() {
|
|
12
|
+
const pkg = JSON.parse(readFileSync(join(PACKAGE_ROOT, "package.json"), "utf8"));
|
|
13
|
+
return pkg.version;
|
|
14
|
+
}
|
|
15
|
+
export function buildCustomerPackageJson(options) {
|
|
16
|
+
const template = getTemplateById(options.templateId);
|
|
17
|
+
const agentVersion = readAgentPackageVersion();
|
|
18
|
+
const dependencies = {
|
|
19
|
+
"@voicethere/agent": `^${agentVersion}`,
|
|
20
|
+
...template.npmDependencies,
|
|
21
|
+
};
|
|
22
|
+
const pkg = {
|
|
23
|
+
name: options.name ?? `voicethere-${options.templateId}`,
|
|
24
|
+
private: true,
|
|
25
|
+
type: "module",
|
|
26
|
+
dependencies,
|
|
27
|
+
scripts: {
|
|
28
|
+
build: `npx @voicethere/agent build --entry ${template.entry} --outfile dist/agent.js`,
|
|
29
|
+
verify: `npx @voicethere/agent verify --entry ${template.entry} --outfile dist/agent.js`,
|
|
30
|
+
"verify:start": `npx @voicethere/agent verify-start --entry ${template.entry} --outfile dist/agent.js`,
|
|
31
|
+
upload: "voicethere build upload",
|
|
32
|
+
deploy: "voicethere deploy --wait",
|
|
33
|
+
"source:push": "voicethere source push",
|
|
34
|
+
"source:pull": "voicethere source pull",
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
return `${JSON.stringify(pkg, null, 2)}\n`;
|
|
38
|
+
}
|
|
39
|
+
export function stripImageProvidedNpmDependencies(parsed) {
|
|
40
|
+
const pkg = { ...parsed };
|
|
41
|
+
delete pkg.scripts;
|
|
42
|
+
const deps = {
|
|
43
|
+
...(pkg.dependencies ?? {}),
|
|
44
|
+
};
|
|
45
|
+
for (const key of IMAGE_PROVIDED_NPM_PACKAGES) {
|
|
46
|
+
delete deps[key];
|
|
47
|
+
}
|
|
48
|
+
pkg.dependencies = deps;
|
|
49
|
+
const remainingDependencyCount = Object.keys(deps).length;
|
|
50
|
+
return { pkg, remainingDependencyCount };
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=package-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../src/templates/package-json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,mBAAmB;IACnB,aAAa;CACL,CAAC;AAOX,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAElD,SAAS,uBAAuB;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAClC,CAAC;IACzB,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAAwC;IAExC,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,uBAAuB,EAAE,CAAC;IAC/C,MAAM,YAAY,GAA2B;QAC3C,mBAAmB,EAAE,IAAI,YAAY,EAAE;QACvC,GAAG,QAAQ,CAAC,eAAe;KAC5B,CAAC;IAEF,MAAM,GAAG,GAAG;QACV,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,cAAc,OAAO,CAAC,UAAU,EAAE;QACxD,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,QAAQ;QACd,YAAY;QACZ,OAAO,EAAE;YACP,KAAK,EAAE,uCAAuC,QAAQ,CAAC,KAAK,0BAA0B;YACtF,MAAM,EAAE,wCAAwC,QAAQ,CAAC,KAAK,0BAA0B;YACxF,cAAc,EAAE,8CAA8C,QAAQ,CAAC,KAAK,0BAA0B;YACtG,MAAM,EAAE,yBAAyB;YACjC,MAAM,EAAE,0BAA0B;YAClC,aAAa,EAAE,wBAAwB;YACvC,aAAa,EAAE,wBAAwB;SACxC;KACF,CAAC;IAEF,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAOD,MAAM,UAAU,iCAAiC,CAC/C,MAA+B;IAE/B,MAAM,GAAG,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,OAAO,GAAG,CAAC,OAAO,CAAC;IAEnB,MAAM,IAAI,GAAG;QACX,GAAG,CAAE,GAAG,CAAC,YAAmD,IAAI,EAAE,CAAC;KACpE,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,2BAA2B,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;IAExB,MAAM,wBAAwB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAE1D,OAAO,EAAE,GAAG,EAAE,wBAAwB,EAAE,CAAC;AAC3C,CAAC"}
|
|
@@ -9,6 +9,8 @@ export interface AgentTemplateDefinition {
|
|
|
9
9
|
description: string;
|
|
10
10
|
/** All TypeScript sources for this template (project-relative paths). */
|
|
11
11
|
sourceFiles: string[];
|
|
12
|
+
/** Extra npm dependencies for customer template workspaces (caret semver specs). */
|
|
13
|
+
npmDependencies?: Record<string, string>;
|
|
12
14
|
}
|
|
13
15
|
export declare const AGENT_TEMPLATES: readonly AgentTemplateDefinition[];
|
|
14
16
|
export type AgentTemplateId = (typeof AGENT_TEMPLATES)[number]["id"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/templates/registry.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC;AAE7C,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;IACnB,mFAAmF;IACnF,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,WAAW,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/templates/registry.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC;AAE7C,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;IACnB,mFAAmF;IACnF,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,eAAe,EAAE,SAAS,uBAAuB,EAkJpD,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAMrE,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,eAAe,CAEnE;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,uBAAuB,CAMnE;AAED,wBAAgB,yBAAyB,IAAI,uBAAuB,EAAE,CAErE"}
|
|
@@ -36,6 +36,7 @@ export const AGENT_TEMPLATES = [
|
|
|
36
36
|
"game-sync-sim.ts",
|
|
37
37
|
"game-sync-redis.ts",
|
|
38
38
|
],
|
|
39
|
+
npmDependencies: { ioredis: "^5.11.1" },
|
|
39
40
|
},
|
|
40
41
|
{
|
|
41
42
|
id: "voice-showcase",
|
|
@@ -86,6 +87,7 @@ export const AGENT_TEMPLATES = [
|
|
|
86
87
|
seedOnCreate: true,
|
|
87
88
|
description: "Webhook handler with Redis atomic shared counter plus DataChannel fan-out.",
|
|
88
89
|
sourceFiles: ["webhooks-redis.ts"],
|
|
90
|
+
npmDependencies: { ioredis: "^5.11.1" },
|
|
89
91
|
},
|
|
90
92
|
{
|
|
91
93
|
id: "echo-smoke",
|
|
@@ -118,6 +120,7 @@ export const AGENT_TEMPLATES = [
|
|
|
118
120
|
seedOnCreate: false,
|
|
119
121
|
description: "Redis-backed world buffer sync for redis-sync-smoke (Advanced tier + project Redis).",
|
|
120
122
|
sourceFiles: ["redis-sync/agent.ts", "redis-sync/world-layout.ts"],
|
|
123
|
+
npmDependencies: { ioredis: "^5.11.1" },
|
|
121
124
|
},
|
|
122
125
|
{
|
|
123
126
|
id: "mix-smoke",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/templates/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/templates/registry.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/templates/echo-smoke.ts
CHANGED
|
@@ -9,7 +9,6 @@ import { defineAgent, parseChatText, speak } from "@voicethere/agent";
|
|
|
9
9
|
export function formatEchoSpeak(text: string): string {
|
|
10
10
|
const trimmed = text.trim();
|
|
11
11
|
if (!trimmed) return "";
|
|
12
|
-
// Never glue `echo:` onto the next word; Piper skips "echo colon" on `echo:One`.
|
|
13
12
|
return `echo. ${trimmed}`;
|
|
14
13
|
}
|
|
15
14
|
|
package/templates/game-sync.ts
CHANGED
|
@@ -367,7 +367,7 @@ async function loadWorldFromRedis(): Promise<Float32Array> {
|
|
|
367
367
|
|
|
368
368
|
async function saveWorldToRedis(world: Float32Array): Promise<void> {
|
|
369
369
|
if (!redis) return;
|
|
370
|
-
await redis.
|
|
370
|
+
await redis.set(REDIS_WORLD_KEY, copyWorldBuffer(world));
|
|
371
371
|
}
|
|
372
372
|
|
|
373
373
|
async function runSimulationTick(): Promise<void> {
|
|
@@ -449,7 +449,7 @@ async function ensureRedisWorldInitialized(): Promise<void> {
|
|
|
449
449
|
const existing = await redis.getBuffer(REDIS_WORLD_KEY);
|
|
450
450
|
if (!existing || existing.byteLength === 0) {
|
|
451
451
|
const empty = createEmptyWorldBuffer();
|
|
452
|
-
await redis.
|
|
452
|
+
await redis.set(REDIS_WORLD_KEY, copyWorldBuffer(empty));
|
|
453
453
|
}
|
|
454
454
|
}
|
|
455
455
|
|