refactor(query): deepen command/dispatch seams and resolve coderabbit findings
* refactor(query): deepen command definition seam and fold fallback mapping cleanup * refactor(query): add shared dispatch formatting module seam * fix(query): restore QueryResult type import in dispatch deps * test/query: align raw-output policy and definition normalization contracts * refactor(query): deepen diagnosis, invariant report, and error taxonomy seams * refactor(query): deepen dispatch plan, fallback bridge, policy snapshot, and hints seams * refactor(query): deepen validation, fallback policy, capability, and result builder seams * refactor(query): deepen resolution strategy, output classifier, observability, and policy-capability seams * refactor(query): finalize deep strategy/classifier/observability/capability seams * test/query: address coderabbit inline and out-of-diff dispatch nits * fix(query): address remaining coderabbit input-validation and bridge stderr threads * fix(query): address remaining coderabbit dispatch and strategy/output nits
This commit is contained in:
31
sdk/src/query/command-definition.test.ts
Normal file
31
sdk/src/query/command-definition.test.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { COMMAND_DEFINITIONS, COMMAND_DEFINITIONS_BY_FAMILY, FAMILY_MUTATION_COMMANDS } from './command-definition.js';
|
||||
import { COMMAND_MANIFEST } from './command-manifest.js';
|
||||
|
||||
describe('command-definition module', () => {
|
||||
it('exposes canonical metadata with handler_key normalization contract', () => {
|
||||
expect(COMMAND_DEFINITIONS).toHaveLength(COMMAND_MANIFEST.length);
|
||||
for (const [index, manifestEntry] of COMMAND_MANIFEST.entries()) {
|
||||
const definition = COMMAND_DEFINITIONS[index];
|
||||
expect(definition.handler_key).toBe(manifestEntry.handlerKey ?? manifestEntry.canonical);
|
||||
expect(definition.canonical).toBe(manifestEntry.canonical);
|
||||
expect(definition.aliases).toEqual(manifestEntry.aliases);
|
||||
expect(definition.canonical).toContain('.');
|
||||
expect(Array.isArray(definition.aliases)).toBe(true);
|
||||
}
|
||||
});
|
||||
|
||||
it('keeps family index canonicals in sync with flat list', () => {
|
||||
const indexed = Object.values(COMMAND_DEFINITIONS_BY_FAMILY).flat();
|
||||
expect(indexed).toHaveLength(COMMAND_DEFINITIONS.length);
|
||||
expect(indexed.map((entry) => entry.canonical).sort()).toEqual(
|
||||
[...COMMAND_DEFINITIONS.map((entry) => entry.canonical)].sort(),
|
||||
);
|
||||
});
|
||||
|
||||
it('derives family mutation command aliases from one source', () => {
|
||||
expect(FAMILY_MUTATION_COMMANDS).toContain('state.update');
|
||||
expect(FAMILY_MUTATION_COMMANDS).toContain('phase complete');
|
||||
expect(FAMILY_MUTATION_COMMANDS).toContain('roadmap.update-plan-progress');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user