Files
wehub-resource-sync 426e9eeabd
Voice Workbench / headless workbench (mocked backends) (push) Has been cancelled
Voice Workbench / real acoustic lane (nightly, provisioned only) (push) Has been cancelled
ci / test (push) Has been cancelled
ci / lint-and-format (push) Has been cancelled
ci / build (push) Has been cancelled
ci / dev-startup (push) Has been cancelled
gitleaks / gitleaks (push) Has been cancelled
Markdown Links / Relative Markdown Links (push) Has been cancelled
Quality (Extended) / Homepage Build (PR smoke) (push) Has been cancelled
Quality (Extended) / Comment-only diff guard (push) Has been cancelled
Quality (Extended) / Format + Type Safety Ratchet (push) Has been cancelled
Quality (Extended) / Develop Gate (secret scan + UI determinism) (push) Has been cancelled
Quality (Extended) / Develop Gate (lint) (push) Has been cancelled
Chat shell gestures / Chat shell gesture + parity e2e (push) Has been cancelled
Cloud Gateway Discord / Test (push) Has been cancelled
Benchmark Bridge Tests / benchmark (bunx @biomejs/biome check packages/lifeops-bench/src, benchmark-lint) (push) Has been cancelled
Benchmark Bridge Tests / benchmark (bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests, benchmark-tests) (push) Has been cancelled
Build Agent Image / build-and-push (push) Has been cancelled
Dev Smoke / bun run dev onboarding chat (push) Has been cancelled
Dev Smoke / Vite HMR dependency-level smoke (push) Has been cancelled
Electrobun Submodule Guard / electrobun gitlink is fetchable (push) Has been cancelled
Publish @elizaos/example-code / check_npm (push) Has been cancelled
Publish @elizaos/example-code / publish_npm (push) Has been cancelled
Publish @elizaos/plugin-elizacloud / verify_version (push) Has been cancelled
Publish @elizaos/plugin-elizacloud / publish_npm (push) Has been cancelled
Sandbox Live Smoke / Sandbox live smoke (push) Has been cancelled
Snap Build & Test / Build Snap (amd64) (push) Has been cancelled
Snap Build & Test / Build Snap (arm64) (push) Has been cancelled
Test Packaging / elizaos CLI global-install smoke (node + bun) (push) Has been cancelled
Cloud Gateway Webhook / Test (push) Has been cancelled
Cloud Tests / lint-and-types (push) Has been cancelled
Cloud Tests / unit-tests (push) Has been cancelled
Cloud Tests / integration-tests (push) Has been cancelled
Cloud Tests / e2e-tests (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
Deploy Apps Worker (Product 2) / Determine environment (push) Has been cancelled
Deploy Apps Worker (Product 2) / Deploy apps worker to apps-control host (${{ needs.determine-env.outputs.environment }}) (push) Has been cancelled
Deploy Eliza Provisioning Worker / Determine environment (push) Has been cancelled
Deploy Eliza Provisioning Worker / Deploy worker to Hetzner host (${{ needs.determine-env.outputs.environment }} @ ${{ needs.determine-env.outputs.deployment_sha }}) (push) Has been cancelled
Dev Smoke / Classify changed paths (push) Has been cancelled
supply-chain / sbom (push) Has been cancelled
supply-chain / vulnerability-scan (push) Has been cancelled
Build, Push & Deploy to Phala Cloud / build-and-push (push) Has been cancelled
Test Packaging / Validate Packaging Configs (push) Has been cancelled
Test Packaging / Build & Test PyPI Package (push) Has been cancelled
Test Packaging / PyPI on Python ${{ matrix.python }} (push) Has been cancelled
Test Packaging / Pack & Test JS Tarballs (push) Has been cancelled
UI Fixture E2E / ui-fixture-e2e (push) Has been cancelled
UI Fixture E2E / fixture-e2e (push) Has been cancelled
UI Story Gate / story-gate (push) Has been cancelled
vault-ci / test (macos-latest) (push) Has been cancelled
vault-ci / test (ubuntu-latest) (push) Has been cancelled
vault-ci / test (windows-latest) (push) Has been cancelled
vault-ci / app-core wiring tests (push) Has been cancelled
verify-patches / verify patches/CHECKSUMS.sha256 (push) Has been cancelled
Voice Benchmark Smoke / voice-emotion fixture smoke (push) Has been cancelled
Voice Benchmark Smoke / voiceagentbench fixture smoke (push) Has been cancelled
Voice Benchmark Smoke / voicebench-quality unit smoke (push) Has been cancelled
Voice Benchmark Smoke / voicebench TypeScript unit (no audio) (push) Has been cancelled
Voice Benchmark Smoke / voice bench smoke summary (push) Has been cancelled
Windows CI / windows ([bun run --cwd packages/app-core test bun run --cwd packages/elizaos test bun run --cwd packages/cloud/shared test], app-and-cli) (push) Has been cancelled
Windows CI / windows ([bun run --cwd packages/scenario-runner test bun run --cwd packages/vault test bun run --cwd packages/security test bun run --cwd plugins/plugin-coding-tools test], framework-packages) (push) Has been cancelled
Windows CI / windows ([bun run --cwd plugins/plugin-elizacloud test bun run --cwd plugins/plugin-discord test bun run --cwd plugins/plugin-anthropic test bun run --cwd plugins/plugin-openai test bun run --cwd plugins/plugin-app-control test bun run --cwd plugins/pl… (push) Has been cancelled
Windows CI / windows ([node packages/scripts/run-turbo.mjs run build --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/agent --concurrency=4 node packages/scripts/run-bash-linux-only.mjs scripts/verify-riscv64-buildpaths.sh node packages/scripts/run… (push) Has been cancelled
Windows CI / windows ([node packages/scripts/run-turbo.mjs run typecheck --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/cloud-shared --concurrency=4 bun run --cwd packages/core test bun run --cwd packages/shared test], core-runtime, 75) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:43:05 +08:00

119 lines
5.5 KiB
TypeScript

/** Assertions locking in the name-to-id resolution rules embedded in the WORKFLOW_GENERATION_SYSTEM_PROMPT string (deterministic). */
import { describe, expect, test } from 'bun:test';
import { WORKFLOW_GENERATION_SYSTEM_PROMPT } from '../../src/utils/workflow-prompts/workflowGeneration';
describe('WORKFLOW_GENERATION_SYSTEM_PROMPT — name→id resolution rules', () => {
test('declares display-name → id resolution as mandatory', () => {
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toContain(
'Display-name → id resolution is mandatory when a fact line covers it'
);
});
test('forbids leading "#" sensitivity and demands case-insensitive name match', () => {
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/case-insensitively/);
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/leading `#`/);
});
test('forbids guessed ids when a fact line resolves the target', () => {
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toContain(
'Never emit a placeholder, a guessed id, or the display name itself'
);
});
test('walks the LLM through a concrete Cozy Devs / #general resolution', () => {
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/Cozy Devs/);
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/9876543210/);
});
});
describe('WORKFLOW_GENERATION_SYSTEM_PROMPT — structured ClarificationRequest rules', () => {
test('documents the structured ClarificationRequest object format', () => {
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toContain('Structured ClarificationRequest format');
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toContain('"kind"');
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toContain('"paramPath"');
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toContain('"scope"');
});
test('lists all five clarification kinds', () => {
for (const kind of ['target_channel', 'target_server', 'recipient', 'value', 'free_text']) {
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toContain(kind);
}
});
test('demands paramPath point at the exact JSON path with bracketed-string syntax', () => {
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toContain('bracketed string syntax');
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toContain(
'nodes["Discord Send"].parameters.channelId'
);
});
test('instructs the LLM to leave the unresolved parameter absent', () => {
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(
/Stop populating that parameter — leave it absent/
);
});
test('shows the chained server→channel picker example', () => {
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/send me a daily reminder on Discord/);
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(
/chained channel-picker clarification with `scope.guildId`/
);
});
test('teaches the ambiguous-channel example with a concrete payload', () => {
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/post a daily reminder to Cozy Devs/);
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toContain('"target_channel"');
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toContain('"Which channel in Cozy Devs?"');
});
test('lists the new "do NOT clarify already-resolvable targets" rule', () => {
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(
/Targets you can resolve directly from `## Runtime Facts` — those MUST be filled in, not asked about/
);
});
test('lists the new "DO clarify unresolvable targets" rule', () => {
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(
/references a target.*and `## Runtime Facts` does NOT contain a matching entry/s
);
});
});
describe('WORKFLOW_GENERATION_SYSTEM_PROMPT — verb→operation discrimination', () => {
test('teaches the verb→operation table', () => {
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/Resource and operation selection/);
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/Verb in the user's prompt/);
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/"send", "post", "deliver"/);
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/`send` or `post` \(NOT `create`\)/);
});
test('explains the resource is the *object* of the verb', () => {
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/resource.*is the \*object\* of the verb/);
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/Send a meow message/);
});
test('demands the read-back self-check before emitting (resource, operation)', () => {
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/Self-check before emitting/);
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/Discord message:send/);
});
});
describe('WORKFLOW_GENERATION_SYSTEM_PROMPT — self-monitor anti-pattern', () => {
test('teaches the canonical Schedule + execution-history loop', () => {
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/Self-monitoring workflows/);
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/Schedule Trigger \(every N minutes\)/);
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/Execution-history node/);
});
test('hard-rules out errorTrigger for self-monitoring', () => {
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/`errorTrigger` is never the right answer/);
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/is a \*callback\*, not a \*poller\*/);
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/Refuse to emit it/);
});
test('hard-rules out external scanners like urlScanIoApi for self-monitoring', () => {
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/urlScanIoApi/);
expect(WORKFLOW_GENERATION_SYSTEM_PROMPT).toMatch(/URL-safety service/);
});
});