@haibun/core 4.0.0-alpha.2 → 4.0.0-alpha.3
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/build/currentVersion.d.ts +1 -1
- package/build/currentVersion.js +1 -1
- package/build/index.d.ts +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/build/kireji/converter.d.ts +2 -2
- package/build/kireji/converter.d.ts.map +1 -1
- package/build/kireji/converter.js +12 -9
- package/build/kireji/converter.js.map +1 -1
- package/build/kireji/withAction.d.ts +16 -4
- package/build/kireji/withAction.d.ts.map +1 -1
- package/build/kireji/withAction.js +40 -11
- package/build/kireji/withAction.js.map +1 -1
- package/build/lib/EventLogger.d.ts +5 -5
- package/build/lib/EventLogger.d.ts.map +1 -1
- package/build/lib/EventLogger.js +39 -37
- package/build/lib/EventLogger.js.map +1 -1
- package/build/lib/PhaseRunner.d.ts +3 -3
- package/build/lib/PhaseRunner.d.ts.map +1 -1
- package/build/lib/PhaseRunner.js +7 -5
- package/build/lib/PhaseRunner.js.map +1 -1
- package/build/lib/astepper.d.ts +90 -13
- package/build/lib/astepper.d.ts.map +1 -1
- package/build/lib/astepper.js +35 -6
- package/build/lib/astepper.js.map +1 -1
- package/build/lib/base-prompt-manager.d.ts +1 -1
- package/build/lib/base-prompt-manager.d.ts.map +1 -1
- package/build/lib/base-prompt-manager.js.map +1 -1
- package/build/lib/capture-locator.d.ts +1 -1
- package/build/lib/capture-locator.d.ts.map +1 -1
- package/build/lib/capture-locator.js +5 -5
- package/build/lib/capture-locator.js.map +1 -1
- package/build/lib/core/flow-runner.d.ts +8 -7
- package/build/lib/core/flow-runner.d.ts.map +1 -1
- package/build/lib/core/flow-runner.js +42 -71
- package/build/lib/core/flow-runner.js.map +1 -1
- package/build/lib/core-domains.d.ts +2 -2
- package/build/lib/core-domains.d.ts.map +1 -1
- package/build/lib/core-domains.js +17 -18
- package/build/lib/core-domains.js.map +1 -1
- package/build/lib/defs.d.ts +2 -13
- package/build/lib/defs.d.ts.map +1 -1
- package/build/lib/defs.js.map +1 -1
- package/build/lib/document-content.d.ts +18 -0
- package/build/lib/document-content.d.ts.map +1 -0
- package/build/lib/document-content.js +158 -0
- package/build/lib/document-content.js.map +1 -0
- package/build/lib/domains.d.ts +31 -0
- package/build/lib/domains.d.ts.map +1 -0
- package/build/lib/domains.js +105 -0
- package/build/lib/domains.js.map +1 -0
- package/build/lib/execution.d.ts +304 -0
- package/build/lib/execution.d.ts.map +1 -0
- package/build/lib/execution.js +23 -0
- package/build/lib/execution.js.map +1 -0
- package/build/lib/feature-variables.d.ts +21 -50
- package/build/lib/feature-variables.d.ts.map +1 -1
- package/build/lib/feature-variables.js +122 -232
- package/build/lib/feature-variables.js.map +1 -1
- package/build/lib/features.d.ts +2 -2
- package/build/lib/features.d.ts.map +1 -1
- package/build/lib/features.js +13 -17
- package/build/lib/features.js.map +1 -1
- package/build/lib/fixme.d.ts.map +1 -1
- package/build/lib/host-id.d.ts +44 -0
- package/build/lib/host-id.d.ts.map +1 -0
- package/build/lib/host-id.js +51 -0
- package/build/lib/host-id.js.map +1 -0
- package/build/lib/http-observations.d.ts +15 -2
- package/build/lib/http-observations.d.ts.map +1 -1
- package/build/lib/http-observations.js +40 -23
- package/build/lib/http-observations.js.map +1 -1
- package/build/lib/hypermedia.d.ts +62 -0
- package/build/lib/hypermedia.d.ts.map +1 -0
- package/build/lib/hypermedia.js +228 -0
- package/build/lib/hypermedia.js.map +1 -0
- package/build/lib/namedVars.d.ts +2 -2
- package/build/lib/namedVars.d.ts.map +1 -1
- package/build/lib/namedVars.js +25 -30
- package/build/lib/namedVars.js.map +1 -1
- package/build/lib/node-http-events.d.ts +3 -3
- package/build/lib/node-http-events.d.ts.map +1 -1
- package/build/lib/node-http-events.js +26 -26
- package/build/lib/node-http-events.js.map +1 -1
- package/build/lib/populateActionArgs.d.ts +4 -4
- package/build/lib/populateActionArgs.d.ts.map +1 -1
- package/build/lib/populateActionArgs.js +4 -6
- package/build/lib/populateActionArgs.js.map +1 -1
- package/build/lib/prompter.d.ts.map +1 -1
- package/build/lib/prompter.js +10 -7
- package/build/lib/prompter.js.map +1 -1
- package/build/lib/quad-store.d.ts +34 -10
- package/build/lib/quad-store.d.ts.map +1 -1
- package/build/lib/quad-store.js +169 -21
- package/build/lib/quad-store.js.map +1 -1
- package/build/lib/quad-types.d.ts +80 -9
- package/build/lib/quad-types.d.ts.map +1 -1
- package/build/lib/quad-types.js +46 -2
- package/build/lib/quad-types.js.map +1 -1
- package/build/lib/readline-prompter.d.ts +1 -1
- package/build/lib/readline-prompter.js +4 -4
- package/build/lib/remote-stepper-proxy.d.ts +56 -0
- package/build/lib/remote-stepper-proxy.d.ts.map +1 -0
- package/build/lib/remote-stepper-proxy.js +123 -0
- package/build/lib/remote-stepper-proxy.js.map +1 -0
- package/build/lib/resolver-features.d.ts +1 -1
- package/build/lib/resolver-features.d.ts.map +1 -1
- package/build/lib/resolver-features.js +2 -2
- package/build/lib/resolver-features.js.map +1 -1
- package/build/lib/resources.d.ts +461 -0
- package/build/lib/resources.d.ts.map +1 -0
- package/build/lib/resources.js +249 -0
- package/build/lib/resources.js.map +1 -0
- package/build/lib/rpc-client.d.ts +68 -0
- package/build/lib/rpc-client.d.ts.map +1 -0
- package/build/lib/rpc-client.js +186 -0
- package/build/lib/rpc-client.js.map +1 -0
- package/build/lib/sse-subscriber.d.ts +57 -0
- package/build/lib/sse-subscriber.d.ts.map +1 -0
- package/build/lib/sse-subscriber.js +110 -0
- package/build/lib/sse-subscriber.js.map +1 -0
- package/build/lib/step-dispatch.d.ts +92 -28
- package/build/lib/step-dispatch.d.ts.map +1 -1
- package/build/lib/step-dispatch.js +331 -75
- package/build/lib/step-dispatch.js.map +1 -1
- package/build/lib/step-validation.d.ts +3 -3
- package/build/lib/step-validation.d.ts.map +1 -1
- package/build/lib/step-validation.js +2 -2
- package/build/lib/step-validation.js.map +1 -1
- package/build/lib/stepper-cycles.d.ts +5 -0
- package/build/lib/stepper-cycles.d.ts.map +1 -0
- package/build/lib/stepper-cycles.js +31 -0
- package/build/lib/stepper-cycles.js.map +1 -0
- package/build/lib/stepper-registry.d.ts +6 -3
- package/build/lib/stepper-registry.d.ts.map +1 -1
- package/build/lib/stepper-registry.js +9 -8
- package/build/lib/stepper-registry.js.map +1 -1
- package/build/lib/subprocess-runner.d.ts +35 -0
- package/build/lib/subprocess-runner.d.ts.map +1 -0
- package/build/lib/subprocess-runner.js +60 -0
- package/build/lib/subprocess-runner.js.map +1 -0
- package/build/lib/subprocess-transport.d.ts +37 -0
- package/build/lib/subprocess-transport.d.ts.map +1 -0
- package/build/lib/subprocess-transport.js +113 -0
- package/build/lib/subprocess-transport.js.map +1 -0
- package/build/lib/test/EventCollectorStepper.d.ts +3 -3
- package/build/lib/test/EventCollectorStepper.d.ts.map +1 -1
- package/build/lib/test/EventCollectorStepper.js +3 -3
- package/build/lib/test/EventCollectorStepper.js.map +1 -1
- package/build/lib/test/SetTimeStepper.d.ts +3 -3
- package/build/lib/test/SetTimeStepper.d.ts.map +1 -1
- package/build/lib/test/SetTimeStepper.js +7 -7
- package/build/lib/test/SetTimeStepper.js.map +1 -1
- package/build/lib/test/TestSteps.d.ts +7 -7
- package/build/lib/test/TestSteps.d.ts.map +1 -1
- package/build/lib/test/TestSteps.js +7 -7
- package/build/lib/test/TestSteps.js.map +1 -1
- package/build/lib/test/TestStepsWithOptions.d.ts +6 -6
- package/build/lib/test/TestStepsWithOptions.js +7 -7
- package/build/lib/test/lib.d.ts +3 -3
- package/build/lib/test/lib.d.ts.map +1 -1
- package/build/lib/test/lib.js +27 -21
- package/build/lib/test/lib.js.map +1 -1
- package/build/lib/test/resolvedTestFeatures.d.ts +6 -6
- package/build/lib/test/resolvedTestFeatures.d.ts.map +1 -1
- package/build/lib/test/resolvedTestFeatures.js +5 -5
- package/build/lib/test/subprocess-fixture.d.ts +8 -0
- package/build/lib/test/subprocess-fixture.d.ts.map +1 -0
- package/build/lib/test/subprocess-fixture.js +27 -0
- package/build/lib/test/subprocess-fixture.js.map +1 -0
- package/build/lib/ttag.d.ts +7 -1
- package/build/lib/ttag.d.ts.map +1 -1
- package/build/lib/ttag.js +5 -4
- package/build/lib/ttag.js.map +1 -1
- package/build/lib/util/dot-path.d.ts +2 -2
- package/build/lib/util/dot-path.d.ts.map +1 -1
- package/build/lib/util/dot-path.js +8 -7
- package/build/lib/util/dot-path.js.map +1 -1
- package/build/lib/util/index.d.ts +10 -24
- package/build/lib/util/index.d.ts.map +1 -1
- package/build/lib/util/index.js +43 -93
- package/build/lib/util/index.js.map +1 -1
- package/build/lib/util/node/actualURI.d.ts +4 -0
- package/build/lib/util/node/actualURI.d.ts.map +1 -0
- package/build/lib/util/node/actualURI.js +10 -0
- package/build/lib/util/node/actualURI.js.map +1 -0
- package/build/lib/util/node/module-loader.d.ts +14 -0
- package/build/lib/util/node/module-loader.d.ts.map +1 -0
- package/build/lib/util/node/module-loader.js +51 -0
- package/build/lib/util/node/module-loader.js.map +1 -0
- package/build/lib/util/node/workspace-lib.d.ts +15 -0
- package/build/lib/util/node/workspace-lib.d.ts.map +1 -0
- package/build/lib/util/node/workspace-lib.js +119 -0
- package/build/lib/util/node/workspace-lib.js.map +1 -0
- package/build/lib/util/secret-utils.d.ts.map +1 -1
- package/build/lib/util/secret-utils.js +2 -2
- package/build/lib/util/secret-utils.js.map +1 -1
- package/build/lib/vertex-crud.d.ts +22 -0
- package/build/lib/vertex-crud.d.ts.map +1 -0
- package/build/lib/vertex-crud.js +73 -0
- package/build/lib/vertex-crud.js.map +1 -0
- package/build/lib/workspace-discovery.d.ts +1 -1
- package/build/lib/workspace-discovery.d.ts.map +1 -1
- package/build/lib/workspace-discovery.js +10 -10
- package/build/lib/workspace-discovery.js.map +1 -1
- package/build/lib/zcap-like-authority.d.ts +38 -0
- package/build/lib/zcap-like-authority.d.ts.map +1 -0
- package/build/lib/zcap-like-authority.js +56 -0
- package/build/lib/zcap-like-authority.js.map +1 -0
- package/build/monitor/index.d.ts +1 -1
- package/build/monitor/index.d.ts.map +1 -1
- package/build/monitor/index.js +1 -1
- package/build/monitor/index.js.map +1 -1
- package/build/phases/Executor.d.ts +31 -7
- package/build/phases/Executor.d.ts.map +1 -1
- package/build/phases/Executor.js +201 -219
- package/build/phases/Executor.js.map +1 -1
- package/build/phases/Resolver.d.ts +2 -2
- package/build/phases/Resolver.d.ts.map +1 -1
- package/build/phases/Resolver.js +35 -30
- package/build/phases/Resolver.js.map +1 -1
- package/build/phases/collector.d.ts +3 -3
- package/build/phases/collector.d.ts.map +1 -1
- package/build/phases/collector.js +19 -17
- package/build/phases/collector.js.map +1 -1
- package/build/run-policy/run-policy-schema.d.ts +3 -5
- package/build/run-policy/run-policy-schema.d.ts.map +1 -1
- package/build/run-policy/run-policy-schema.js +41 -37
- package/build/run-policy/run-policy-schema.js.map +1 -1
- package/build/run-policy/run-policy-types.d.ts +1 -1
- package/build/run-policy/run-policy-types.d.ts.map +1 -1
- package/build/run-policy/run-policy-types.js +19 -16
- package/build/run-policy/run-policy-types.js.map +1 -1
- package/build/runner.d.ts +4 -4
- package/build/runner.d.ts.map +1 -1
- package/build/runner.js +15 -13
- package/build/runner.js.map +1 -1
- package/build/schema/protocol.d.ts +153 -61
- package/build/schema/protocol.d.ts.map +1 -1
- package/build/schema/protocol.js +177 -148
- package/build/schema/protocol.js.map +1 -1
- package/build/steps/activities-stepper.d.ts +13 -13
- package/build/steps/activities-stepper.d.ts.map +1 -1
- package/build/steps/activities-stepper.js +105 -79
- package/build/steps/activities-stepper.js.map +1 -1
- package/build/steps/conformance.d.ts +5 -5
- package/build/steps/conformance.js +4 -4
- package/build/steps/console-monitor-stepper.d.ts +2 -2
- package/build/steps/console-monitor-stepper.d.ts.map +1 -1
- package/build/steps/console-monitor-stepper.js +22 -22
- package/build/steps/console-monitor-stepper.js.map +1 -1
- package/build/steps/debugger-stepper.d.ts +11 -11
- package/build/steps/debugger-stepper.d.ts.map +1 -1
- package/build/steps/debugger-stepper.js +65 -64
- package/build/steps/debugger-stepper.js.map +1 -1
- package/build/steps/finalizer-stepper.d.ts +3 -4
- package/build/steps/finalizer-stepper.d.ts.map +1 -1
- package/build/steps/finalizer-stepper.js +16 -19
- package/build/steps/finalizer-stepper.js.map +1 -1
- package/build/steps/haibun.d.ts +27 -20
- package/build/steps/haibun.d.ts.map +1 -1
- package/build/steps/haibun.js +76 -67
- package/build/steps/haibun.js.map +1 -1
- package/build/steps/lib/tts.d.ts +1 -1
- package/build/steps/lib/tts.d.ts.map +1 -1
- package/build/steps/lib/tts.js +28 -28
- package/build/steps/lib/tts.js.map +1 -1
- package/build/steps/logic-stepper.d.ts +5 -5
- package/build/steps/logic-stepper.d.ts.map +1 -1
- package/build/steps/logic-stepper.js +76 -76
- package/build/steps/logic-stepper.js.map +1 -1
- package/build/steps/narrator.d.ts +9 -9
- package/build/steps/narrator.d.ts.map +1 -1
- package/build/steps/narrator.js +32 -28
- package/build/steps/narrator.js.map +1 -1
- package/build/steps/resources-stepper.d.ts +47 -0
- package/build/steps/resources-stepper.d.ts.map +1 -0
- package/build/steps/resources-stepper.js +100 -0
- package/build/steps/resources-stepper.js.map +1 -0
- package/build/steps/variables-stepper.d.ts +57 -57
- package/build/steps/variables-stepper.d.ts.map +1 -1
- package/build/steps/variables-stepper.js +252 -224
- package/build/steps/variables-stepper.js.map +1 -1
- package/build/steps/zcap-like-stepper.d.ts +50 -0
- package/build/steps/zcap-like-stepper.d.ts.map +1 -0
- package/build/steps/zcap-like-stepper.js +113 -0
- package/build/steps/zcap-like-stepper.js.map +1 -0
- package/package.json +1 -1
- package/build/lib/consts.d.ts +0 -5
- package/build/lib/consts.d.ts.map +0 -1
- package/build/lib/consts.js +0 -5
- package/build/lib/consts.js.map +0 -1
- package/build/lib/step-helpers.d.ts +0 -10
- package/build/lib/step-helpers.d.ts.map +0 -1
- package/build/lib/step-helpers.js +0 -16
- package/build/lib/step-helpers.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"haibun.js","sourceRoot":"","sources":["../../src/steps/haibun.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"haibun.js","sourceRoot":"","sources":["../../src/steps/haibun.ts"],"names":[],"mappings":"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"}
|
package/build/steps/lib/tts.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../../../src/steps/lib/tts.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../../../src/steps/lib/tts.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK1D,MAAM,MAAM,YAAY,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AACzF,MAAM,MAAM,iBAAiB,GAAG;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAA;CAAE,CAAC;AAMjE,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+BjG;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CActE;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgDtE;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAoB3G;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM;;;EAgBrG;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB9D;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,UAAO,GAAG,MAAM,CAanE;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,QAGtC"}
|
package/build/steps/lib/tts.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { execSync, spawn } from "child_process";
|
|
2
|
-
import { createHash } from
|
|
3
|
-
import { existsSync, mkdirSync, readdirSync, cpSync, unlinkSync } from
|
|
4
|
-
import * as nodePath from
|
|
5
|
-
import { createRequire } from
|
|
6
|
-
import { FEATURE_START } from
|
|
7
|
-
import { SCENARIO_START } from
|
|
8
|
-
const CACHE_DIR = nodePath.resolve(
|
|
9
|
-
const SPOKEN_STEPS = [
|
|
2
|
+
import { createHash } from "crypto";
|
|
3
|
+
import { existsSync, mkdirSync, readdirSync, cpSync, unlinkSync } from "fs";
|
|
4
|
+
import * as nodePath from "path";
|
|
5
|
+
import { createRequire } from "module";
|
|
6
|
+
import { FEATURE_START } from "../../schema/protocol.js";
|
|
7
|
+
import { SCENARIO_START } from "../../schema/protocol.js";
|
|
8
|
+
const CACHE_DIR = nodePath.resolve("capture/.said");
|
|
9
|
+
const SPOKEN_STEPS = ["prose", SCENARIO_START, FEATURE_START];
|
|
10
10
|
export async function preRenderFeatureProse(feature) {
|
|
11
11
|
const proseTexts = new Set();
|
|
12
12
|
for (const step of feature.featureSteps) {
|
|
@@ -22,10 +22,10 @@ export async function preRenderFeatureProse(feature) {
|
|
|
22
22
|
mkdirSync(CACHE_DIR, { recursive: true });
|
|
23
23
|
const existingAudioRenders = readdirSync(CACHE_DIR);
|
|
24
24
|
for (const transcript of proseTexts) {
|
|
25
|
-
const hash = createHash(
|
|
25
|
+
const hash = createHash("sha1").update(transcript).digest("hex");
|
|
26
26
|
const existing = existingAudioRenders.find((f) => f.startsWith(`${hash}-`));
|
|
27
27
|
if (existing) {
|
|
28
|
-
const parts = existing.replace(
|
|
28
|
+
const parts = existing.replace(".wav", "").split("-");
|
|
29
29
|
const durationS = parseFloat(parts[1]);
|
|
30
30
|
const cachedPath = nodePath.join(CACHE_DIR, existing);
|
|
31
31
|
renderedAudio[hash] = { transcript, durationS, cachedPath };
|
|
@@ -58,11 +58,11 @@ export function getMediafileDuration(filePath) {
|
|
|
58
58
|
*/
|
|
59
59
|
export async function renderSpeech(transcript) {
|
|
60
60
|
// Ensure kokoro-js is available in the local node_modules
|
|
61
|
-
const localKokoroPath = nodePath.join(process.cwd(),
|
|
61
|
+
const localKokoroPath = nodePath.join(process.cwd(), "node_modules/kokoro-js");
|
|
62
62
|
if (!existsSync(localKokoroPath)) {
|
|
63
|
-
console.log(
|
|
63
|
+
console.log("kokoro-js not found locally, installing in current directory...");
|
|
64
64
|
try {
|
|
65
|
-
doExec(
|
|
65
|
+
doExec("npm install --no-save kokoro-js", true);
|
|
66
66
|
}
|
|
67
67
|
catch (e) {
|
|
68
68
|
console.error(`Failed to install kokoro-js: ${e.message}`);
|
|
@@ -73,8 +73,8 @@ export async function renderSpeech(transcript) {
|
|
|
73
73
|
let KokoroTTS;
|
|
74
74
|
try {
|
|
75
75
|
// biome-disable-next-line @typescript-eslint/no-explicit-any
|
|
76
|
-
const require = createRequire(localKokoroPath +
|
|
77
|
-
const kokoroModule = require(
|
|
76
|
+
const require = createRequire(localKokoroPath + "/package.json");
|
|
77
|
+
const kokoroModule = require("kokoro-js");
|
|
78
78
|
KokoroTTS = kokoroModule.KokoroTTS;
|
|
79
79
|
}
|
|
80
80
|
catch (e) {
|
|
@@ -98,7 +98,7 @@ export async function renderSpeech(transcript) {
|
|
|
98
98
|
return tmpFile;
|
|
99
99
|
}
|
|
100
100
|
catch (e) {
|
|
101
|
-
console.error(
|
|
101
|
+
console.error("Error in TTS generation:", e.message);
|
|
102
102
|
throw e;
|
|
103
103
|
}
|
|
104
104
|
}
|
|
@@ -121,10 +121,10 @@ export async function renderAudio(hash, transcript, cacheDir) {
|
|
|
121
121
|
return { transcript, durationS, cachedPath: finalCachedPath };
|
|
122
122
|
}
|
|
123
123
|
export function copyPreRenderedAudio(dir, renderedAudio, transcript) {
|
|
124
|
-
const hash = createHash(
|
|
124
|
+
const hash = createHash("sha1").update(transcript).digest("hex");
|
|
125
125
|
const audioInfo = renderedAudio[hash];
|
|
126
126
|
if (!audioInfo) {
|
|
127
|
-
throw new Error(`No pre-rendered audio found for: "${transcript}" (hash: ${hash}). Available hashes: ${Object.keys(renderedAudio).join(
|
|
127
|
+
throw new Error(`No pre-rendered audio found for: "${transcript}" (hash: ${hash}). Available hashes: ${Object.keys(renderedAudio).join(", ")}`);
|
|
128
128
|
}
|
|
129
129
|
const { cachedPath, durationS } = audioInfo;
|
|
130
130
|
const cacheFilename = nodePath.parse(cachedPath).base;
|
|
@@ -140,11 +140,11 @@ export function playAudioFile(audioPath) {
|
|
|
140
140
|
return new Promise((resolve, reject) => {
|
|
141
141
|
try {
|
|
142
142
|
// Use ffplay to play audio through system speakers
|
|
143
|
-
const proc = spawn(
|
|
144
|
-
stdio: [
|
|
143
|
+
const proc = spawn("ffplay", ["-nodisp", "-autoexit", audioPath], {
|
|
144
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
145
145
|
detached: false,
|
|
146
146
|
});
|
|
147
|
-
proc.on(
|
|
147
|
+
proc.on("close", (code) => {
|
|
148
148
|
if (code === 0) {
|
|
149
149
|
resolve();
|
|
150
150
|
}
|
|
@@ -152,7 +152,7 @@ export function playAudioFile(audioPath) {
|
|
|
152
152
|
reject(new Error(`ffplay exited with code ${code}`));
|
|
153
153
|
}
|
|
154
154
|
});
|
|
155
|
-
proc.on(
|
|
155
|
+
proc.on("error", (err) => {
|
|
156
156
|
reject(new Error(`Error running ffplay: ${err.message}`));
|
|
157
157
|
});
|
|
158
158
|
}
|
|
@@ -163,22 +163,22 @@ export function playAudioFile(audioPath) {
|
|
|
163
163
|
}
|
|
164
164
|
export function doExec(command, throwOnError = true) {
|
|
165
165
|
try {
|
|
166
|
-
const stdout = execSync(command, { encoding:
|
|
166
|
+
const stdout = execSync(command, { encoding: "utf8", stdio: "pipe" }).toString();
|
|
167
167
|
return stdout.trim();
|
|
168
168
|
}
|
|
169
169
|
catch (error) {
|
|
170
|
-
let stderr =
|
|
171
|
-
if (error && typeof error ===
|
|
170
|
+
let stderr = "";
|
|
171
|
+
if (error && typeof error === "object" && "stderr" in error && error.stderr) {
|
|
172
172
|
stderr = String(error.stderr);
|
|
173
173
|
}
|
|
174
174
|
console.error(stderr);
|
|
175
175
|
if (throwOnError)
|
|
176
|
-
throw
|
|
177
|
-
return
|
|
176
|
+
throw error;
|
|
177
|
+
return "";
|
|
178
178
|
}
|
|
179
179
|
}
|
|
180
180
|
export function doSpawn(command) {
|
|
181
|
-
const captureProc = spawn(command, { shell: true, detached: true, stdio:
|
|
181
|
+
const captureProc = spawn(command, { shell: true, detached: true, stdio: "ignore" });
|
|
182
182
|
captureProc.unref();
|
|
183
183
|
}
|
|
184
184
|
//# sourceMappingURL=tts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tts.js","sourceRoot":"","sources":["../../../src/steps/lib/tts.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tts.js","sourceRoot":"","sources":["../../../src/steps/lib/tts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { AStepper, IHasCycles } from
|
|
2
|
-
import { TFeatureStep, TWorld, IStepperCycles } from
|
|
3
|
-
import { TActionResult } from
|
|
4
|
-
import { z } from
|
|
1
|
+
import { AStepper, IHasCycles } from "../lib/astepper.js";
|
|
2
|
+
import { TFeatureStep, TWorld, IStepperCycles } from "../lib/execution.js";
|
|
3
|
+
import { TActionResult } from "../schema/protocol.js";
|
|
4
|
+
import { z } from "zod";
|
|
5
5
|
export default class LogicStepper extends AStepper implements IHasCycles {
|
|
6
6
|
description: string;
|
|
7
7
|
steppers: AStepper[];
|
|
@@ -53,7 +53,7 @@ export default class LogicStepper extends AStepper implements IHasCycles {
|
|
|
53
53
|
}, z.core.$strip>;
|
|
54
54
|
action: ({ statements }: {
|
|
55
55
|
statements: TFeatureStep[];
|
|
56
|
-
}, featureStep: TFeatureStep) => Promise<
|
|
56
|
+
}, featureStep: TFeatureStep) => Promise<TActionResult>;
|
|
57
57
|
};
|
|
58
58
|
some: {
|
|
59
59
|
match: RegExp;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logic-stepper.d.ts","sourceRoot":"","sources":["../../src/steps/logic-stepper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAiB,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAsB,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"logic-stepper.d.ts","sourceRoot":"","sources":["../../src/steps/logic-stepper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAiB,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAsB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAM,aAAa,EAAU,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyCxB,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,QAAS,YAAW,UAAU;IACvE,WAAW,SAAsE;IAEjF,QAAQ,EAAE,QAAQ,EAAE,CAAM;IAC1B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAA6C;IAEtD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAiBlD,MAAM,EAAE,cAAc,CAIpB;IAEF,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,WAAW;IAOnB;;;OAGG;YACW,kBAAkB;IAqBhC,KAAK;;;;4CAUqB;gBAAE,SAAS,EAAE,YAAY,EAAE,CAAC;gBAAC,MAAM,EAAE,YAAY,EAAE,CAAA;aAAE,eAC/D,YAAY,KACvB,OAAO,CAAC,aAAa,CAAC;;;;;4CA8BD;gBAAE,SAAS,EAAE,YAAY,EAAE,CAAC;gBAAC,MAAM,EAAE,YAAY,EAAE,CAAA;aAAE,eAC/D,YAAY,KACvB,OAAO,CAAC,aAAa,CAAC;;;;;wBAkBP,OAAO,eAAe,YAAY,KAAG,OAAO,CAAC,aAAa,CAAC;;;;;qCAiB9C;gBAAE,UAAU,EAAE,YAAY,EAAE,CAAA;aAAE,eAAe,YAAY,KAAG,OAAO,CAAC,aAAa,CAAC;;;;;;;;qCAgBlF;gBAAE,UAAU,EAAE,YAAY,EAAE,CAAA;aAAE,eAAe,YAAY;;;;;wBAkBtE,OAAO,eAAe,YAAY,KAAG,OAAO,CAAC,aAAa,CAAC;;;;;wBA+C3D,OAAO,eAAe,YAAY,KAAG,OAAO,CAAC,aAAa,CAAC;;MAsCrD;CAC1B"}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { AStepper } from
|
|
2
|
-
import { OK, Origin } from
|
|
3
|
-
import { actionNotOK, actionOKWithProducts, sleep } from
|
|
4
|
-
import { z } from
|
|
5
|
-
import { FlowRunner } from
|
|
6
|
-
import { DOMAIN_STATEMENT } from
|
|
1
|
+
import { AStepper } from "../lib/astepper.js";
|
|
2
|
+
import { OK, Origin } from "../schema/protocol.js";
|
|
3
|
+
import { actionNotOK, actionOKWithProducts, sleep } from "../lib/util/index.js";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { FlowRunner } from "../lib/core/flow-runner.js";
|
|
6
|
+
import { DOMAIN_STATEMENT } from "../lib/domains.js";
|
|
7
7
|
// Built-in observation sources
|
|
8
8
|
// Note: Step names are sanitized (dots → underscores) to avoid variable name conflicts
|
|
9
|
-
const sanitizeKey = (key) => key.replace(/\./g,
|
|
9
|
+
const sanitizeKey = (key) => key.replace(/\./g, "_");
|
|
10
10
|
const builtInSources = [
|
|
11
11
|
{
|
|
12
|
-
name:
|
|
12
|
+
name: "step usage",
|
|
13
13
|
observe: (world) => {
|
|
14
|
-
const usage = world.runtime.observations?.get(
|
|
14
|
+
const usage = world.runtime.observations?.get("stepUsage") || new Map();
|
|
15
15
|
const items = [...usage.keys()].map(sanitizeKey);
|
|
16
16
|
const metrics = {};
|
|
17
17
|
for (const [key, count] of usage.entries()) {
|
|
18
18
|
metrics[sanitizeKey(key)] = { count };
|
|
19
19
|
}
|
|
20
20
|
return { items, metrics };
|
|
21
|
-
}
|
|
21
|
+
},
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
|
-
name:
|
|
24
|
+
name: "stepper usage",
|
|
25
25
|
observe: (world) => {
|
|
26
|
-
const usage = world.runtime.observations?.get(
|
|
26
|
+
const usage = world.runtime.observations?.get("stepUsage") || new Map();
|
|
27
27
|
const stepperCounts = new Map();
|
|
28
28
|
for (const [key, count] of usage.entries()) {
|
|
29
|
-
const stepperName = key.split(
|
|
29
|
+
const stepperName = key.split(".")[0];
|
|
30
30
|
stepperCounts.set(stepperName, (stepperCounts.get(stepperName) || 0) + count);
|
|
31
31
|
}
|
|
32
32
|
const items = [...stepperCounts.keys()];
|
|
@@ -35,11 +35,11 @@ const builtInSources = [
|
|
|
35
35
|
metrics[stepper] = { count };
|
|
36
36
|
}
|
|
37
37
|
return { items, metrics };
|
|
38
|
-
}
|
|
39
|
-
}
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
40
|
];
|
|
41
41
|
export default class LogicStepper extends AStepper {
|
|
42
|
-
description =
|
|
42
|
+
description = "Control flow with conditionals, loops, negation, and quantifiers";
|
|
43
43
|
steppers = [];
|
|
44
44
|
runner;
|
|
45
45
|
sources = [...builtInSources];
|
|
@@ -49,7 +49,7 @@ export default class LogicStepper extends AStepper {
|
|
|
49
49
|
// Collect observation sources from other steppers
|
|
50
50
|
for (const stepper of steppers) {
|
|
51
51
|
// Check if stepper implements IHasCycles (duck typing as runtime check)
|
|
52
|
-
if (
|
|
52
|
+
if ("cycles" in stepper) {
|
|
53
53
|
const hasCycles = stepper;
|
|
54
54
|
const concerns = hasCycles.cycles.getConcerns?.();
|
|
55
55
|
if (concerns?.sources) {
|
|
@@ -60,14 +60,14 @@ export default class LogicStepper extends AStepper {
|
|
|
60
60
|
}
|
|
61
61
|
cycles = {
|
|
62
62
|
getConcerns: () => ({
|
|
63
|
-
sources: builtInSources
|
|
64
|
-
})
|
|
63
|
+
sources: builtInSources,
|
|
64
|
+
}),
|
|
65
65
|
};
|
|
66
66
|
getSource(name) {
|
|
67
|
-
return this.sources.find(s => s.name.toLowerCase() === name.toLowerCase());
|
|
67
|
+
return this.sources.find((s) => s.name.toLowerCase() === name.toLowerCase());
|
|
68
68
|
}
|
|
69
69
|
stripQuotes(text) {
|
|
70
|
-
if ((text.startsWith('"') && text.endsWith('"')) || (text.startsWith(
|
|
70
|
+
if ((text.startsWith('"') && text.endsWith('"')) || (text.startsWith("`") && text.endsWith("`"))) {
|
|
71
71
|
return text.slice(1, -1);
|
|
72
72
|
}
|
|
73
73
|
return text;
|
|
@@ -76,7 +76,7 @@ export default class LogicStepper extends AStepper {
|
|
|
76
76
|
* Get values and metrics for iteration - handles both domains and observation sources.
|
|
77
77
|
* Syntax: "in {domain}" or "observed in {source}"
|
|
78
78
|
*/
|
|
79
|
-
getIterationValues(phrase) {
|
|
79
|
+
async getIterationValues(phrase) {
|
|
80
80
|
// Check for "observed in {source}" pattern
|
|
81
81
|
const observedMatch = phrase.match(/^observed in (.+)$/i);
|
|
82
82
|
if (observedMatch) {
|
|
@@ -89,7 +89,7 @@ export default class LogicStepper extends AStepper {
|
|
|
89
89
|
}
|
|
90
90
|
// Otherwise treat as domain name
|
|
91
91
|
const domainName = this.stripQuotes(phrase);
|
|
92
|
-
const result = this.getWorld().shared.getDomainValues(domainName);
|
|
92
|
+
const result = await this.getWorld().shared.getDomainValues(domainName);
|
|
93
93
|
return { values: result.values || [], error: result.error };
|
|
94
94
|
}
|
|
95
95
|
steps = {
|
|
@@ -98,82 +98,82 @@ export default class LogicStepper extends AStepper {
|
|
|
98
98
|
// -------------------------------------------------------------------------
|
|
99
99
|
// RECURRENCE: While(Condition) { Action }
|
|
100
100
|
whenever: {
|
|
101
|
-
gwta:
|
|
102
|
-
description:
|
|
101
|
+
gwta: "whenever {condition:statement}, {action:statement}",
|
|
102
|
+
description: "Executes the statements repeatedtly as long as the condition holds true.",
|
|
103
103
|
action: async ({ condition, action }, featureStep) => {
|
|
104
104
|
let loopCount = 0;
|
|
105
105
|
const MAX_LOOPS = 1000;
|
|
106
|
-
const mode = featureStep.intent?.mode ===
|
|
106
|
+
const mode = featureStep.intent?.mode === "speculative" ? "speculative" : "authoritative";
|
|
107
107
|
const usage = featureStep.intent?.usage;
|
|
108
108
|
// eslint-disable-next-line no-constant-condition
|
|
109
109
|
while (true) {
|
|
110
110
|
if (loopCount++ > MAX_LOOPS)
|
|
111
|
-
return actionNotOK(
|
|
112
|
-
const check = await this.runner.runSteps(condition, { intent: { mode:
|
|
113
|
-
if (check.
|
|
111
|
+
return actionNotOK("whenever: infinite loop detected");
|
|
112
|
+
const check = await this.runner.runSteps(condition, { intent: { mode: "speculative", usage }, parentStep: featureStep });
|
|
113
|
+
if (!check.ok)
|
|
114
114
|
break;
|
|
115
115
|
const result = await this.runner.runSteps(action, { intent: { mode, usage }, parentStep: featureStep });
|
|
116
|
-
if (result.
|
|
117
|
-
return actionNotOK(`whenever: action failed: ${result.
|
|
116
|
+
if (!result.ok) {
|
|
117
|
+
return actionNotOK(`whenever: action failed: ${result.errorMessage}`);
|
|
118
118
|
}
|
|
119
119
|
await sleep(0);
|
|
120
120
|
}
|
|
121
121
|
return OK;
|
|
122
|
-
}
|
|
122
|
+
},
|
|
123
123
|
},
|
|
124
124
|
// IMPLICATION: If P then Q
|
|
125
125
|
where: {
|
|
126
|
-
gwta:
|
|
127
|
-
description:
|
|
126
|
+
gwta: "where {condition:statement}, {action:statement}",
|
|
127
|
+
description: "Executes the statements only if the condition is met.",
|
|
128
128
|
action: async ({ condition, action }, featureStep) => {
|
|
129
129
|
const usage = featureStep.intent?.usage;
|
|
130
|
-
const check = await this.runner.runSteps(condition, { intent: { mode:
|
|
130
|
+
const check = await this.runner.runSteps(condition, { intent: { mode: "speculative", usage }, parentStep: featureStep });
|
|
131
131
|
// Vacuously true if condition is false
|
|
132
|
-
if (check.
|
|
132
|
+
if (!check.ok)
|
|
133
133
|
return OK;
|
|
134
|
-
const mode = featureStep.intent?.mode ===
|
|
134
|
+
const mode = featureStep.intent?.mode === "speculative" ? "speculative" : "authoritative";
|
|
135
135
|
const result = await this.runner.runSteps(action, { intent: { mode, usage }, parentStep: featureStep });
|
|
136
|
-
return result.
|
|
137
|
-
}
|
|
136
|
+
return result.ok ? OK : actionNotOK(`Constraint failed: Condition was true, but Action failed: ${result.errorMessage}`);
|
|
137
|
+
},
|
|
138
138
|
},
|
|
139
139
|
// DISJUNCTION: A or B or C
|
|
140
140
|
anyOf: {
|
|
141
141
|
match: /^any of (.*)/,
|
|
142
|
-
description:
|
|
142
|
+
description: "Succeeds if at least one of the listed conditions is true.",
|
|
143
143
|
action: async (_, featureStep) => {
|
|
144
|
-
let statements = featureStep.in.replace(/^any of /i,
|
|
144
|
+
let statements = featureStep.in.replace(/^any of /i, "").trim();
|
|
145
145
|
statements = this.stripQuotes(statements);
|
|
146
|
-
const statementList = statements.split(
|
|
146
|
+
const statementList = statements.split(",").map((s) => s.trim());
|
|
147
147
|
for (const statement of statementList) {
|
|
148
|
-
const res = await this.runner.runStatements([statement], { intent: { mode:
|
|
149
|
-
if (res.
|
|
148
|
+
const res = await this.runner.runStatements([statement], { intent: { mode: "speculative" }, parentStep: featureStep });
|
|
149
|
+
if (res.ok)
|
|
150
150
|
return OK;
|
|
151
|
-
this.getWorld().eventLogger.debug(`any of: statement "${statement}" failed: ${res.
|
|
151
|
+
this.getWorld().eventLogger.debug(`any of: statement "${statement}" failed: ${res.errorMessage}`);
|
|
152
152
|
}
|
|
153
|
-
return actionNotOK(
|
|
154
|
-
}
|
|
153
|
+
return actionNotOK("No conditions in the list were satisfied");
|
|
154
|
+
},
|
|
155
155
|
},
|
|
156
156
|
// NEGATION: Not P
|
|
157
157
|
not: {
|
|
158
158
|
gwta: `not {statements:${DOMAIN_STATEMENT}}`,
|
|
159
|
-
description:
|
|
159
|
+
description: "Succeeds if the statement is false (negation).",
|
|
160
160
|
action: async ({ statements }, featureStep) => {
|
|
161
|
-
const res = await this.runner.runSteps(statements, { intent: { mode:
|
|
162
|
-
if (res.
|
|
161
|
+
const res = await this.runner.runSteps(statements, { intent: { mode: "speculative" }, parentStep: featureStep });
|
|
162
|
+
if (!res.ok) {
|
|
163
163
|
return OK;
|
|
164
164
|
}
|
|
165
165
|
else {
|
|
166
|
-
return actionNotOK(
|
|
166
|
+
return actionNotOK("not statement was true (failed negation)");
|
|
167
167
|
}
|
|
168
168
|
},
|
|
169
169
|
},
|
|
170
170
|
// MAYBE: It's possible that P is true
|
|
171
171
|
maybe: {
|
|
172
172
|
gwta: `maybe {statements:${DOMAIN_STATEMENT}}`,
|
|
173
|
-
description:
|
|
173
|
+
description: "Executes the statement but suppresses failure if it fails.",
|
|
174
174
|
outputSchema: z.object({ outcome: z.unknown() }),
|
|
175
175
|
action: async ({ statements }, featureStep) => {
|
|
176
|
-
const res = await this.runner.runSteps(statements, { intent: { mode:
|
|
176
|
+
const res = await this.runner.runSteps(statements, { intent: { mode: "speculative" }, parentStep: featureStep });
|
|
177
177
|
return actionOKWithProducts({ outcome: res });
|
|
178
178
|
},
|
|
179
179
|
},
|
|
@@ -186,72 +186,72 @@ export default class LogicStepper extends AStepper {
|
|
|
186
186
|
// some x observed in step usage is ...
|
|
187
187
|
some: {
|
|
188
188
|
match: /^some (.*?) (in|observed in) (.*?) is (.*)/,
|
|
189
|
-
description:
|
|
189
|
+
description: "Succeeds if at least one item in the collection satisfies the condition.",
|
|
190
190
|
action: async (_, featureStep) => {
|
|
191
191
|
const match = featureStep.in.match(/^some (.*?) (in|observed in) (.*?) is (.*)/);
|
|
192
192
|
if (!match)
|
|
193
|
-
return actionNotOK(
|
|
193
|
+
return actionNotOK("some: invalid syntax");
|
|
194
194
|
const [, what, connector, sourceOrDomain, statementStr] = match;
|
|
195
|
-
const phrase = connector ===
|
|
196
|
-
const { values, metrics, error } = this.getIterationValues(phrase);
|
|
195
|
+
const phrase = connector === "observed in" ? `observed in ${sourceOrDomain}` : sourceOrDomain;
|
|
196
|
+
const { values, metrics, error } = await this.getIterationValues(phrase);
|
|
197
197
|
if (error)
|
|
198
198
|
return actionNotOK(error);
|
|
199
199
|
if (values.length === 0)
|
|
200
200
|
return actionNotOK(`No members in "${sourceOrDomain}" to check`);
|
|
201
|
-
const mode =
|
|
201
|
+
const mode = "speculative";
|
|
202
202
|
let found = false;
|
|
203
203
|
for (const val of values) {
|
|
204
|
-
this.getWorld().shared.set({ term: what, value: String(val), domain:
|
|
205
|
-
// Set metric variables if from observation source
|
|
204
|
+
await this.getWorld().shared.set({ term: what, value: String(val), domain: "string", origin: Origin.var }, { in: featureStep.in, seq: featureStep.seqPath, when: "quantifier" });
|
|
205
|
+
// Set metric variables if from observation source (stored in SHARED_GRAPH so they resolve as variables)
|
|
206
206
|
if (metrics?.[val]) {
|
|
207
207
|
for (const [metricKey, metricValue] of Object.entries(metrics[val])) {
|
|
208
|
-
const domain = typeof metricValue ===
|
|
209
|
-
this.getWorld().shared.set({ term: `${sanitizeKey(val)}/${metricKey}`, value: String(metricValue), domain, origin: Origin.var }, { in: featureStep.in, seq: featureStep.seqPath, when:
|
|
208
|
+
const domain = typeof metricValue === "number" ? "number" : "string";
|
|
209
|
+
await this.getWorld().shared.set({ term: `${sanitizeKey(val)}/${metricKey}`, value: String(metricValue), domain, origin: Origin.var }, { in: featureStep.in, seq: featureStep.seqPath, when: "observation" });
|
|
210
210
|
}
|
|
211
211
|
}
|
|
212
212
|
const res = await this.runner.runStatements([statementStr], { intent: { mode }, parentStep: featureStep });
|
|
213
|
-
if (res.
|
|
213
|
+
if (res.ok) {
|
|
214
214
|
found = true;
|
|
215
215
|
break;
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
218
|
return found ? OK : actionNotOK(`No ${what} in ${sourceOrDomain} satisfied the condition`);
|
|
219
|
-
}
|
|
219
|
+
},
|
|
220
220
|
},
|
|
221
221
|
// UNIVERSAL: For All x in D, P(x)
|
|
222
222
|
// every x in Domain is ...
|
|
223
223
|
// every x observed in step usage is ...
|
|
224
224
|
every: {
|
|
225
225
|
match: /^every (.*?) (in|observed in) (.*?) is (.*)/,
|
|
226
|
-
description:
|
|
226
|
+
description: "Succeeds only if all items in the collection satisfy the condition.",
|
|
227
227
|
action: async (_, featureStep) => {
|
|
228
228
|
const match = featureStep.in.match(/^every (.*?) (in|observed in) (.*?) is (.*)/);
|
|
229
229
|
if (!match)
|
|
230
|
-
return actionNotOK(
|
|
230
|
+
return actionNotOK("every: invalid syntax");
|
|
231
231
|
const [, what, connector, sourceOrDomain, statementStr] = match;
|
|
232
|
-
const phrase = connector ===
|
|
233
|
-
const { values, metrics, error } = this.getIterationValues(phrase);
|
|
232
|
+
const phrase = connector === "observed in" ? `observed in ${sourceOrDomain}` : sourceOrDomain;
|
|
233
|
+
const { values, metrics, error } = await this.getIterationValues(phrase);
|
|
234
234
|
if (error)
|
|
235
235
|
return actionNotOK(error);
|
|
236
236
|
if (values.length === 0)
|
|
237
237
|
return OK;
|
|
238
|
-
const mode = featureStep.intent?.mode ===
|
|
238
|
+
const mode = featureStep.intent?.mode === "speculative" ? "speculative" : "authoritative";
|
|
239
239
|
for (const val of values) {
|
|
240
|
-
this.getWorld().shared.set({ term: what, value: String(val), domain:
|
|
241
|
-
// Set metric variables if from observation source
|
|
240
|
+
await this.getWorld().shared.set({ term: what, value: String(val), domain: "string", origin: Origin.var }, { in: featureStep.in, seq: featureStep.seqPath, when: "quantifier" });
|
|
241
|
+
// Set metric variables if from observation source (stored in SHARED_GRAPH so they resolve as variables)
|
|
242
242
|
if (metrics?.[val]) {
|
|
243
243
|
for (const [metricKey, metricValue] of Object.entries(metrics[val])) {
|
|
244
|
-
const domain = typeof metricValue ===
|
|
245
|
-
this.getWorld().shared.set({ term: `${sanitizeKey(val)}/${metricKey}`, value: String(metricValue), domain, origin: Origin.var }, { in: featureStep.in, seq: featureStep.seqPath, when:
|
|
244
|
+
const domain = typeof metricValue === "number" ? "number" : "string";
|
|
245
|
+
await this.getWorld().shared.set({ term: `${sanitizeKey(val)}/${metricKey}`, value: String(metricValue), domain, origin: Origin.var }, { in: featureStep.in, seq: featureStep.seqPath, when: "observation" });
|
|
246
246
|
}
|
|
247
247
|
}
|
|
248
248
|
const res = await this.runner.runStatements([statementStr], { intent: { mode }, parentStep: featureStep });
|
|
249
|
-
if (res.
|
|
250
|
-
return actionNotOK(`Universal check failed for value "${val}": ${res.
|
|
249
|
+
if (!res.ok) {
|
|
250
|
+
return actionNotOK(`Universal check failed for value "${val}": ${res.errorMessage}`);
|
|
251
251
|
}
|
|
252
252
|
}
|
|
253
253
|
return OK;
|
|
254
|
-
}
|
|
254
|
+
},
|
|
255
255
|
},
|
|
256
256
|
};
|
|
257
257
|
}
|