@devflow-tools/semantic-engine 0.18.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.
Files changed (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +24 -0
  3. package/dist/__tests__/channel-query-plan.test.d.ts +2 -0
  4. package/dist/__tests__/channel-query-plan.test.d.ts.map +1 -0
  5. package/dist/__tests__/channel-query-plan.test.js +78 -0
  6. package/dist/__tests__/channel-query-plan.test.js.map +1 -0
  7. package/dist/__tests__/domain-action-planner.test.d.ts +2 -0
  8. package/dist/__tests__/domain-action-planner.test.d.ts.map +1 -0
  9. package/dist/__tests__/domain-action-planner.test.js +67 -0
  10. package/dist/__tests__/domain-action-planner.test.js.map +1 -0
  11. package/dist/__tests__/retrieval-query-sampling-resolver.test.d.ts +2 -0
  12. package/dist/__tests__/retrieval-query-sampling-resolver.test.d.ts.map +1 -0
  13. package/dist/__tests__/retrieval-query-sampling-resolver.test.js +182 -0
  14. package/dist/__tests__/retrieval-query-sampling-resolver.test.js.map +1 -0
  15. package/dist/__tests__/semantic-authority-merger.test.d.ts +2 -0
  16. package/dist/__tests__/semantic-authority-merger.test.d.ts.map +1 -0
  17. package/dist/__tests__/semantic-authority-merger.test.js +50 -0
  18. package/dist/__tests__/semantic-authority-merger.test.js.map +1 -0
  19. package/dist/__tests__/semantic-context-resolver.test.d.ts +2 -0
  20. package/dist/__tests__/semantic-context-resolver.test.d.ts.map +1 -0
  21. package/dist/__tests__/semantic-context-resolver.test.js +258 -0
  22. package/dist/__tests__/semantic-context-resolver.test.js.map +1 -0
  23. package/dist/__tests__/semantic-router.test.d.ts +2 -0
  24. package/dist/__tests__/semantic-router.test.d.ts.map +1 -0
  25. package/dist/__tests__/semantic-router.test.js +69 -0
  26. package/dist/__tests__/semantic-router.test.js.map +1 -0
  27. package/dist/__tests__/task-claim-compiler.test.d.ts +2 -0
  28. package/dist/__tests__/task-claim-compiler.test.d.ts.map +1 -0
  29. package/dist/__tests__/task-claim-compiler.test.js +127 -0
  30. package/dist/__tests__/task-claim-compiler.test.js.map +1 -0
  31. package/dist/domain-action-planner.d.ts +3 -0
  32. package/dist/domain-action-planner.d.ts.map +1 -0
  33. package/dist/domain-action-planner.js +163 -0
  34. package/dist/domain-action-planner.js.map +1 -0
  35. package/dist/index.d.ts +13 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +13 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/query-plan-compilers.d.ts +15 -0
  40. package/dist/query-plan-compilers.d.ts.map +1 -0
  41. package/dist/query-plan-compilers.js +178 -0
  42. package/dist/query-plan-compilers.js.map +1 -0
  43. package/dist/retrieval-query-proposal.d.ts +22 -0
  44. package/dist/retrieval-query-proposal.d.ts.map +1 -0
  45. package/dist/retrieval-query-proposal.js +114 -0
  46. package/dist/retrieval-query-proposal.js.map +1 -0
  47. package/dist/retrieval-query-sampling-resolver.d.ts +41 -0
  48. package/dist/retrieval-query-sampling-resolver.d.ts.map +1 -0
  49. package/dist/retrieval-query-sampling-resolver.js +248 -0
  50. package/dist/retrieval-query-sampling-resolver.js.map +1 -0
  51. package/dist/semantic-authority-merger.d.ts +20 -0
  52. package/dist/semantic-authority-merger.d.ts.map +1 -0
  53. package/dist/semantic-authority-merger.js +209 -0
  54. package/dist/semantic-authority-merger.js.map +1 -0
  55. package/dist/semantic-claim-validator.d.ts +15 -0
  56. package/dist/semantic-claim-validator.d.ts.map +1 -0
  57. package/dist/semantic-claim-validator.js +139 -0
  58. package/dist/semantic-claim-validator.js.map +1 -0
  59. package/dist/semantic-context-resolver.d.ts +49 -0
  60. package/dist/semantic-context-resolver.d.ts.map +1 -0
  61. package/dist/semantic-context-resolver.js +137 -0
  62. package/dist/semantic-context-resolver.js.map +1 -0
  63. package/dist/semantic-resolver.d.ts +10 -0
  64. package/dist/semantic-resolver.d.ts.map +1 -0
  65. package/dist/semantic-resolver.js +16 -0
  66. package/dist/semantic-resolver.js.map +1 -0
  67. package/dist/semantic-route-catalog.d.ts +35 -0
  68. package/dist/semantic-route-catalog.d.ts.map +1 -0
  69. package/dist/semantic-route-catalog.js +53 -0
  70. package/dist/semantic-route-catalog.js.map +1 -0
  71. package/dist/semantic-router.d.ts +39 -0
  72. package/dist/semantic-router.d.ts.map +1 -0
  73. package/dist/semantic-router.js +175 -0
  74. package/dist/semantic-router.js.map +1 -0
  75. package/dist/semantic-structural-evidence.d.ts +27 -0
  76. package/dist/semantic-structural-evidence.d.ts.map +1 -0
  77. package/dist/semantic-structural-evidence.js +134 -0
  78. package/dist/semantic-structural-evidence.js.map +1 -0
  79. package/dist/task-claim-compiler.d.ts +13 -0
  80. package/dist/task-claim-compiler.d.ts.map +1 -0
  81. package/dist/task-claim-compiler.js +210 -0
  82. package/dist/task-claim-compiler.js.map +1 -0
  83. package/package.json +37 -0
@@ -0,0 +1,163 @@
1
+ import { isMutatingTaskAction, semanticEvidenceId, stableRuntimeHash, } from '@devflow-tools/sdk';
2
+ export function planDomainAction(input) {
3
+ const phase = input.phase ?? 'proposal';
4
+ const operation = input.actionAuthority.action ?? input.facts.actions[0] ?? 'unknown';
5
+ const intent = input.facts.intents[0] ?? 'unknown';
6
+ const mutating = isMutatingTaskAction(operation);
7
+ if (input.facts.conflicts.length > 0) {
8
+ return dispositionPlan(input, 'abstained', 'semantic_facts_conflicted');
9
+ }
10
+ if (mutating && input.actionAuthority.mutation === 'conditional') {
11
+ return dispositionPlan(input, 'needs_condition_evidence', 'mutation_condition_unresolved');
12
+ }
13
+ if (mutating && input.actionAuthority.mutation !== 'authorized') {
14
+ return dispositionPlan(input, 'abstained', 'mutation_not_authorized');
15
+ }
16
+ const capabilities = input.capabilities ?? new Set();
17
+ const targetEvidence = new Map((input.targetStateEvidence ?? []).map(item => [item.targetAnchor, item]));
18
+ const candidates = input.registry.tools
19
+ .filter(tool => isSkillCompatible(tool, input.activeSkill))
20
+ .map(tool => evaluateCandidate(tool, input, operation, intent, capabilities, targetEvidence))
21
+ .filter((candidate) => candidate !== null)
22
+ .sort(compareCandidate);
23
+ const candidateRefs = candidates.map(candidate => candidate.publicCandidate);
24
+ const body = {
25
+ schemaVersion: 'domain-action-plan.v1',
26
+ taskRevisionHash: input.taskRevisionHash,
27
+ semanticContextHash: input.semanticContextHash,
28
+ ...(input.taskDefinitionHash ? { taskDefinitionHash: input.taskDefinitionHash } : {}),
29
+ registryHash: input.registry.registryHash,
30
+ actionAuthorityHash: input.actionAuthority.authorityHash,
31
+ mutation: input.actionAuthority.mutation,
32
+ phase,
33
+ ...(input.supersedesPlanHash ? { supersedesPlanHash: input.supersedesPlanHash } : {}),
34
+ ...(candidates.find(candidate => candidate.targetEvidenceHash)?.targetEvidenceHash
35
+ ? { targetStateEvidenceHash: candidates.find(candidate => candidate.targetEvidenceHash).targetEvidenceHash } : {}),
36
+ status: 'abstained',
37
+ candidates: candidateRefs,
38
+ reasonCode: 'no_applicable_domain_tool',
39
+ };
40
+ const selected = candidates[0];
41
+ const tied = selected && candidates[1]
42
+ && selected.specificity === candidates[1].specificity
43
+ && selected.tool.registryPriority === candidates[1].tool.registryPriority;
44
+ if (tied) {
45
+ body.status = 'conflicted';
46
+ body.reasonCode = 'typed_registry_tie';
47
+ }
48
+ else if (selected && selected.missingPreconditions.length === 0) {
49
+ body.status = 'selected';
50
+ body.selectedTool = selected.tool.tool;
51
+ body.reasonCode = 'typed_registry_preconditions_satisfied';
52
+ }
53
+ else if (selected && selected.onlyMissingTargetState) {
54
+ body.status = 'needs_target_evidence';
55
+ body.reasonCode = 'target_state_evidence_required';
56
+ }
57
+ else if (intent === 'unknown' || operation === 'unknown') {
58
+ body.status = 'unavailable';
59
+ body.reasonCode = 'semantic_fields_unknown';
60
+ }
61
+ return { ...body, planHash: stableRuntimeHash(body) };
62
+ }
63
+ function dispositionPlan(input, status, reasonCode) {
64
+ const body = {
65
+ schemaVersion: 'domain-action-plan.v1',
66
+ taskRevisionHash: input.taskRevisionHash,
67
+ semanticContextHash: input.semanticContextHash,
68
+ ...(input.taskDefinitionHash ? { taskDefinitionHash: input.taskDefinitionHash } : {}),
69
+ registryHash: input.registry.registryHash,
70
+ actionAuthorityHash: input.actionAuthority.authorityHash,
71
+ mutation: input.actionAuthority.mutation,
72
+ phase: input.phase ?? 'proposal',
73
+ ...(input.supersedesPlanHash ? { supersedesPlanHash: input.supersedesPlanHash } : {}),
74
+ status,
75
+ candidates: [],
76
+ reasonCode,
77
+ };
78
+ return { ...body, planHash: stableRuntimeHash(body) };
79
+ }
80
+ function evaluateCandidate(tool, input, operation, intent, capabilities, targetEvidence) {
81
+ if (!tool.operations.includes(operation))
82
+ return null;
83
+ if (tool.intents.length > 0 && !tool.intents.includes(intent))
84
+ return null;
85
+ const required = [`operation:${operation}`];
86
+ const satisfied = [`operation:${operation}`];
87
+ const missing = [];
88
+ if (tool.intents.length > 0) {
89
+ required.push(`intent:${intent}`);
90
+ satisfied.push(`intent:${intent}`);
91
+ }
92
+ if (input.objectKind && input.objectKind !== 'unknown') {
93
+ if (!tool.objectKinds.includes(input.objectKind))
94
+ return null;
95
+ required.push(`object:${input.objectKind}`);
96
+ satisfied.push(`object:${input.objectKind}`);
97
+ }
98
+ for (const capability of tool.requiredCapabilities) {
99
+ required.push(`capability:${capability}`);
100
+ if (capabilities.has(capability))
101
+ satisfied.push(`capability:${capability}`);
102
+ else
103
+ missing.push(`capability:${capability}`);
104
+ }
105
+ let targetEvidenceHash;
106
+ if (tool.targetState === 'existing') {
107
+ required.push('target:existing');
108
+ const evidence = input.facts.targets
109
+ .map(anchor => targetEvidence.get(anchor))
110
+ .find(item => item?.state === 'existing');
111
+ if (evidence) {
112
+ satisfied.push('target:existing');
113
+ targetEvidenceHash = evidence.evidenceHash;
114
+ }
115
+ else {
116
+ missing.push('target:existing');
117
+ }
118
+ }
119
+ for (const requiredInput of tool.requiredInputs) {
120
+ required.push(`input:${requiredInput}`);
121
+ if (hasInputEvidence(input, requiredInput))
122
+ satisfied.push(`input:${requiredInput}`);
123
+ else
124
+ missing.push(`input:${requiredInput}`);
125
+ }
126
+ const specificity = satisfied.length * 100 + tool.registryPriority;
127
+ const onlyMissingTargetState = missing.length === 1 && missing[0] === 'target:existing';
128
+ return {
129
+ tool,
130
+ specificity,
131
+ satisfiedPreconditions: satisfied,
132
+ missingPreconditions: missing,
133
+ onlyMissingTargetState,
134
+ ...(targetEvidenceHash ? { targetEvidenceHash } : {}),
135
+ publicCandidate: {
136
+ tool: tool.tool,
137
+ specificity,
138
+ registryPriority: tool.registryPriority,
139
+ requiredPreconditions: required,
140
+ satisfiedPreconditions: satisfied,
141
+ evidenceIds: input.facts.evidence
142
+ .filter(item => item.field === 'action' || item.field === 'target' || item.field === 'intent')
143
+ .map(semanticEvidenceId),
144
+ },
145
+ };
146
+ }
147
+ function compareCandidate(left, right) {
148
+ return right.specificity - left.specificity || right.tool.registryPriority - left.tool.registryPriority
149
+ || left.tool.tool.localeCompare(right.tool.tool);
150
+ }
151
+ function isSkillCompatible(tool, activeSkill) {
152
+ return tool.activeSkills.length === 0 || (activeSkill !== undefined && tool.activeSkills.includes(activeSkill));
153
+ }
154
+ function hasInputEvidence(input, name) {
155
+ if (name === 'filePath')
156
+ return input.facts.targets.length > 0;
157
+ if (name === 'componentName')
158
+ return input.facts.targets.length > 0 || input.facts.entities.length > 0;
159
+ if (name === 'projectRoot')
160
+ return input.identity.projectRoot.length > 0;
161
+ return true;
162
+ }
163
+ //# sourceMappingURL=domain-action-planner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-action-planner.js","sourceRoot":"","sources":["../src/domain-action-planner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export * from './semantic-authority-merger.js';
2
+ export * from './semantic-resolver.js';
3
+ export * from './semantic-route-catalog.js';
4
+ export * from './semantic-router.js';
5
+ export * from './semantic-structural-evidence.js';
6
+ export * from './semantic-context-resolver.js';
7
+ export * from './domain-action-planner.js';
8
+ export * from './semantic-claim-validator.js';
9
+ export * from './task-claim-compiler.js';
10
+ export * from './retrieval-query-proposal.js';
11
+ export * from './retrieval-query-sampling-resolver.js';
12
+ export * from './query-plan-compilers.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ export * from './semantic-authority-merger.js';
2
+ export * from './semantic-resolver.js';
3
+ export * from './semantic-route-catalog.js';
4
+ export * from './semantic-router.js';
5
+ export * from './semantic-structural-evidence.js';
6
+ export * from './semantic-context-resolver.js';
7
+ export * from './domain-action-planner.js';
8
+ export * from './semantic-claim-validator.js';
9
+ export * from './task-claim-compiler.js';
10
+ export * from './retrieval-query-proposal.js';
11
+ export * from './retrieval-query-sampling-resolver.js';
12
+ export * from './query-plan-compilers.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { type CanonicalTaskIdentity, type ChannelDisposition, type ChannelQueryPlan, type ProviderExecutionReceiptV1, type RetrievalQueryProposalV1, type SemanticFacts, type ValidatedSemanticClaimV1 } from '@devflow-tools/sdk';
2
+ export declare function compileChannelQueryPlan(input: {
3
+ identity: CanonicalTaskIdentity;
4
+ facts: SemanticFacts;
5
+ dispositions: ChannelDisposition[];
6
+ claims: ValidatedSemanticClaimV1[];
7
+ query: string;
8
+ activeSkill?: string;
9
+ createdAt: number;
10
+ queryProposals?: RetrievalQueryProposalV1[];
11
+ queryProposalReceipts?: ProviderExecutionReceiptV1[];
12
+ allowedEntityHandles?: ReadonlySet<string>;
13
+ allowedSourceIds?: ReadonlySet<string>;
14
+ }): ChannelQueryPlan;
15
+ //# sourceMappingURL=query-plan-compilers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-plan-compilers.d.ts","sourceRoot":"","sources":["../src/query-plan-compilers.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EAGvB,KAAK,gBAAgB,EAIrB,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAE7B,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC9B,MAAM,oBAAoB,CAAC;AAM5B,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,QAAQ,EAAE,qBAAqB,CAAC;IAChC,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,EAAE,kBAAkB,EAAE,CAAC;IACnC,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC5C,qBAAqB,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACrD,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACxC,GAAG,gBAAgB,CA2BnB"}
@@ -0,0 +1,178 @@
1
+ import { assertChannelDisposition, stableRuntimeHash, } from '@devflow-tools/sdk';
2
+ import { validateRetrievalQueryProposal, } from './retrieval-query-proposal.js';
3
+ export function compileChannelQueryPlan(input) {
4
+ const query = normalizeOriginalQuery(input.query);
5
+ const dispositions = dispositionMap(input.dispositions);
6
+ const proposals = validatedProposals(input);
7
+ const code = compileChannel('code', dispositions.code, input, query, proposals, codeQuery(input.facts, query));
8
+ const memory = compileChannel('memory', dispositions.memory, input, query, proposals, memoryQuery(input.facts, query, input.activeSkill));
9
+ const knowledge = compileChannel('knowledge', dispositions.knowledge, input, query, proposals, knowledgeQuery(input.facts, query));
10
+ const sources = new Set(input.claims.map(claim => claim.source));
11
+ const generatedBy = sources.size === 0 || (sources.size === 1 && sources.has('structural'))
12
+ ? 'deterministic'
13
+ : sources.size === 1 && sources.has('host_sampling')
14
+ ? 'host_semantic' : 'hybrid';
15
+ const queryProposalIds = uniqueStrings([code, memory, knowledge].flatMap(channel => channel.requirement === 'prohibited' ? [] : channel.additions.flatMap(item => item.proposalId ?? [])));
16
+ const body = {
17
+ identity: input.identity,
18
+ sourceFactsHash: input.facts.factsHash,
19
+ code,
20
+ memory,
21
+ knowledge,
22
+ queryProposalIds,
23
+ generatedBy,
24
+ createdAt: input.createdAt,
25
+ };
26
+ return Object.freeze({ ...body, planHash: stableRuntimeHash(body) });
27
+ }
28
+ function compileChannel(channel, disposition, input, query, proposals, typedQuery) {
29
+ if (disposition.requirement === 'prohibited')
30
+ return {
31
+ channel,
32
+ requirement: 'prohibited',
33
+ reasonCode: disposition.reasonCode,
34
+ evidenceIds: disposition.evidenceIds,
35
+ };
36
+ const sourceClaimIds = claimIdsFor(channel, input.claims);
37
+ return {
38
+ channel,
39
+ requirement: disposition.requirement,
40
+ reasonCode: disposition.reasonCode,
41
+ evidenceIds: disposition.evidenceIds,
42
+ original: originalVariant(query, input.facts.sourceHash, sourceClaimIds),
43
+ additions: proposalVariants(channel, input.facts.sourceHash, proposals),
44
+ typedQuery,
45
+ };
46
+ }
47
+ function codeQuery(facts, query) {
48
+ const relationKinds = new Set(['dependency']);
49
+ if (facts.actions.some(action => ['analyze', 'debug', 'modify', 'verify'].includes(action))
50
+ || facts.intents.includes('performance'))
51
+ relationKinds.add('caller');
52
+ if (facts.actions.includes('create')) {
53
+ relationKinds.add('route');
54
+ relationKinds.add('config');
55
+ }
56
+ if (facts.actions.includes('test') || facts.intents.includes('verification'))
57
+ relationKinds.add('test');
58
+ return {
59
+ query,
60
+ targetAnchors: facts.targets,
61
+ symbols: facts.entities,
62
+ relationKinds: [...relationKinds],
63
+ maxDepth: facts.targets.length > 0 ? 1 : 2,
64
+ };
65
+ }
66
+ function memoryQuery(facts, query, activeSkill) {
67
+ return {
68
+ query,
69
+ scopes: activeSkill ? ['project', 'skill', 'session'] : ['project', 'session'],
70
+ entities: facts.entities,
71
+ facets: facts.constraints,
72
+ requireVerifiedEvidence: true,
73
+ };
74
+ }
75
+ function knowledgeQuery(facts, query) {
76
+ const need = facts.knowledgeNeeds[0];
77
+ return {
78
+ query,
79
+ kind: need?.kind ?? 'overview',
80
+ ...(need?.entity ? { entity: need.entity } : {}),
81
+ ...(need?.symbol ? { symbol: need.symbol } : {}),
82
+ ...(need?.version ? { version: need.version } : {}),
83
+ };
84
+ }
85
+ function originalVariant(query, sourceHash, sourceClaimIds) {
86
+ return {
87
+ kind: 'original',
88
+ query,
89
+ queryHash: stableRuntimeHash({ query, sourceHash }),
90
+ sourceHash,
91
+ producerId: 'task-source-query',
92
+ producerVersion: '1',
93
+ sourceClaimIds,
94
+ };
95
+ }
96
+ function proposalVariants(channel, sourceHash, proposals) {
97
+ const seen = new Set();
98
+ return proposals.filter(item => item.channel === channel).flatMap(proposal => {
99
+ const queryHash = stableRuntimeHash({ query: proposal.query, sourceHash });
100
+ const key = `${proposal.kind}:${queryHash}`;
101
+ if (seen.has(key))
102
+ return [];
103
+ seen.add(key);
104
+ return [{
105
+ kind: proposal.kind,
106
+ query: proposal.query,
107
+ queryHash,
108
+ sourceHash,
109
+ producerId: 'retrieval-query-proposal',
110
+ producerVersion: '1',
111
+ sourceClaimIds: [...proposal.sourceClaimIds].sort(),
112
+ proposalId: proposal.proposalId,
113
+ ...(proposal.boundedFilters ? { boundedFilters: canonicalFilters(proposal.boundedFilters) } : {}),
114
+ }];
115
+ });
116
+ }
117
+ function validatedProposals(input) {
118
+ const emittedCounts = new Map();
119
+ for (const proposal of input.queryProposals ?? []) {
120
+ emittedCounts.set(proposal.providerExecutionId, (emittedCounts.get(proposal.providerExecutionId) ?? 0) + 1);
121
+ }
122
+ const receiptMap = new Map((input.queryProposalReceipts ?? [])
123
+ .filter(receipt => receipt.acceptedCount === (emittedCounts.get(receipt.executionId) ?? 0)
124
+ && receipt.proposalCount === receipt.acceptedCount + receipt.rejectedCount)
125
+ .map(receipt => [receipt.executionId, receipt]));
126
+ return (input.queryProposals ?? []).flatMap(proposal => {
127
+ const result = validateRetrievalQueryProposal({
128
+ facts: input.facts,
129
+ claims: input.claims,
130
+ proposal,
131
+ providerReceipts: receiptMap,
132
+ ...(input.allowedEntityHandles ? { allowedEntityHandles: input.allowedEntityHandles } : {}),
133
+ ...(input.allowedSourceIds ? { allowedSourceIds: input.allowedSourceIds } : {}),
134
+ });
135
+ return result.valid ? [result.proposal] : [];
136
+ }).sort((left, right) => left.proposalId.localeCompare(right.proposalId));
137
+ }
138
+ function dispositionMap(values) {
139
+ if (values.length !== 3)
140
+ throw new Error('CHANNEL_DISPOSITION_SET_INVALID');
141
+ const map = new Map(values.map(value => {
142
+ assertChannelDisposition(value);
143
+ return [value.channel, value];
144
+ }));
145
+ if (map.size !== 3)
146
+ throw new Error('CHANNEL_DISPOSITION_SET_INVALID');
147
+ return {
148
+ code: map.get('code'),
149
+ memory: map.get('memory'),
150
+ knowledge: map.get('knowledge'),
151
+ };
152
+ }
153
+ function claimIdsFor(channel, claims) {
154
+ const kinds = channel === 'code'
155
+ ? ['intent', 'action', 'entity', 'target', 'constraint']
156
+ : channel === 'memory'
157
+ ? ['memory_directive', 'entity', 'constraint']
158
+ : ['knowledge_need', 'entity', 'constraint'];
159
+ return claims.filter(item => kinds.includes(item.claim.kind)).map(item => item.claimId).sort();
160
+ }
161
+ function canonicalFilters(filters) {
162
+ return {
163
+ ...(filters.entityHandles ? { entityHandles: [...filters.entityHandles].sort() } : {}),
164
+ ...(filters.sourceIds ? { sourceIds: [...filters.sourceIds].sort() } : {}),
165
+ ...(filters.version ? { version: filters.version } : {}),
166
+ ...(filters.temporalWindow ? { temporalWindow: { ...filters.temporalWindow } } : {}),
167
+ };
168
+ }
169
+ function normalizeOriginalQuery(query) {
170
+ const normalized = query.normalize('NFKC').trim().slice(0, 2_000);
171
+ if (!normalized)
172
+ throw new Error('CHANNEL_QUERY_SOURCE_EMPTY');
173
+ return normalized;
174
+ }
175
+ function uniqueStrings(values) {
176
+ return [...new Set(values)].sort();
177
+ }
178
+ //# sourceMappingURL=query-plan-compilers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-plan-compilers.js","sourceRoot":"","sources":["../src/query-plan-compilers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type ProviderExecutionReceiptV1, type RetrievalQueryProposalV1, type SemanticFacts, type ValidatedSemanticClaimV1 } from '@devflow-tools/sdk';
2
+ declare const validatedProposal: unique symbol;
3
+ export type ValidatedRetrievalQueryProposalV1 = Readonly<RetrievalQueryProposalV1> & {
4
+ readonly [validatedProposal]: true;
5
+ };
6
+ export type RetrievalQueryProposalValidationResult = {
7
+ valid: true;
8
+ proposal: ValidatedRetrievalQueryProposalV1;
9
+ } | {
10
+ valid: false;
11
+ reasonCode: string;
12
+ };
13
+ export declare function validateRetrievalQueryProposal(input: {
14
+ facts: SemanticFacts;
15
+ claims: ValidatedSemanticClaimV1[];
16
+ proposal: RetrievalQueryProposalV1;
17
+ providerReceipts: ReadonlyMap<string, ProviderExecutionReceiptV1>;
18
+ allowedEntityHandles?: ReadonlySet<string>;
19
+ allowedSourceIds?: ReadonlySet<string>;
20
+ }): RetrievalQueryProposalValidationResult;
21
+ export {};
22
+ //# sourceMappingURL=retrieval-query-proposal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retrieval-query-proposal.d.ts","sourceRoot":"","sources":["../src/retrieval-query-proposal.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC9B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,CAAC,MAAM,iBAAiB,EAAE,OAAO,MAAM,CAAC;AAE/C,MAAM,MAAM,iCAAiC,GAAG,QAAQ,CAAC,wBAAwB,CAAC,GAAG;IACnF,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAC9C;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,iCAAiC,CAAA;CAAE,GAC5D;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACpD,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACnC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAClE,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACxC,GAAG,sCAAsC,CAyFzC"}
@@ -0,0 +1,114 @@
1
+ import { semanticEvidenceId, stableRuntimeHash, } from '@devflow-tools/sdk';
2
+ export function validateRetrievalQueryProposal(input) {
3
+ const proposal = input.proposal;
4
+ if (proposal.schemaVersion !== 'retrieval-query-proposal.v1') {
5
+ return invalid('query_proposal_schema_unsupported');
6
+ }
7
+ const { proposalHash, ...proposalBody } = proposal;
8
+ if (stableRuntimeHash(proposalBody) !== proposalHash) {
9
+ return invalid('query_proposal_hash_mismatch');
10
+ }
11
+ if (proposal.sourceFactsHash !== input.facts.factsHash) {
12
+ return invalid('query_proposal_facts_mismatch');
13
+ }
14
+ if (!boundedId(proposal.proposalId) || !boundedId(proposal.providerExecutionId)) {
15
+ return invalid('query_proposal_identity_invalid');
16
+ }
17
+ if (!['code', 'memory', 'knowledge'].includes(proposal.channel)
18
+ || !['rewrite', 'expansion'].includes(proposal.kind)) {
19
+ return invalid('query_proposal_kind_invalid');
20
+ }
21
+ const normalizedQuery = proposal.query.normalize('NFKC').trim();
22
+ if (!normalizedQuery || normalizedQuery.length > 2_000 || normalizedQuery !== proposal.query) {
23
+ return invalid('query_proposal_query_invalid');
24
+ }
25
+ if (!Number.isFinite(proposal.confidence) || proposal.confidence < 0 || proposal.confidence > 1) {
26
+ return invalid('query_proposal_confidence_invalid');
27
+ }
28
+ const knownClaimIds = new Set(input.claims.map(claim => claim.claimId));
29
+ if (!boundedUniqueStrings(proposal.sourceClaimIds, 32)
30
+ || proposal.sourceClaimIds.length === 0
31
+ || proposal.sourceClaimIds.some(claimId => !knownClaimIds.has(claimId))) {
32
+ return invalid('query_proposal_claim_unknown');
33
+ }
34
+ const receipt = input.providerReceipts.get(proposal.providerExecutionId);
35
+ if (!receipt)
36
+ return invalid('query_proposal_provider_execution_unknown');
37
+ const { receiptHash, ...receiptBody } = receipt;
38
+ if (stableRuntimeHash(receiptBody) !== receiptHash
39
+ || receipt.executionId !== proposal.providerExecutionId
40
+ || receipt.requestHash !== input.facts.factsHash
41
+ || receipt.capability !== 'retrieval_query'
42
+ || receipt.status !== 'ready') {
43
+ return invalid('query_proposal_provider_receipt_invalid');
44
+ }
45
+ const knownEvidence = new Map(input.facts.evidence.map(evidence => [semanticEvidenceId(evidence), evidence]));
46
+ if (!Array.isArray(proposal.evidence) || proposal.evidence.length === 0 || proposal.evidence.length > 64) {
47
+ return invalid('query_proposal_evidence_missing');
48
+ }
49
+ const evidenceIds = proposal.evidence.map(semanticEvidenceId);
50
+ if (new Set(evidenceIds).size !== evidenceIds.length) {
51
+ return invalid('query_proposal_evidence_duplicate');
52
+ }
53
+ for (let index = 0; index < evidenceIds.length; index += 1) {
54
+ const known = knownEvidence.get(evidenceIds[index]);
55
+ if (!known || stableRuntimeHash(known) !== stableRuntimeHash(proposal.evidence[index])) {
56
+ return invalid('query_proposal_evidence_invalid');
57
+ }
58
+ }
59
+ const citedEvidenceIds = new Set(input.claims
60
+ .filter(claim => proposal.sourceClaimIds.includes(claim.claimId))
61
+ .flatMap(claim => claim.evidenceIds));
62
+ if (!evidenceIds.some(evidenceId => citedEvidenceIds.has(evidenceId))) {
63
+ return invalid('query_proposal_evidence_unbound');
64
+ }
65
+ const filters = proposal.boundedFilters;
66
+ if (filters) {
67
+ if (filters.entityHandles !== undefined
68
+ && (!boundedUniqueStrings(filters.entityHandles, 32)
69
+ || !input.allowedEntityHandles
70
+ || filters.entityHandles.some(handle => !input.allowedEntityHandles.has(handle)))) {
71
+ return invalid('query_proposal_entity_handle_unknown');
72
+ }
73
+ if (filters.sourceIds !== undefined
74
+ && (!boundedUniqueStrings(filters.sourceIds, 32)
75
+ || !input.allowedSourceIds
76
+ || filters.sourceIds.some(sourceId => !input.allowedSourceIds.has(sourceId)))) {
77
+ return invalid('query_proposal_source_id_unknown');
78
+ }
79
+ if (filters.version !== undefined && (!boundedValue(filters.version, 128) || !knownVersion(input.facts, filters.version))) {
80
+ return invalid('query_proposal_version_unknown');
81
+ }
82
+ if (filters.temporalWindow && !validTemporalWindow(filters.temporalWindow)) {
83
+ return invalid('query_proposal_temporal_window_invalid');
84
+ }
85
+ }
86
+ return { valid: true, proposal: proposal };
87
+ }
88
+ function knownVersion(facts, version) {
89
+ return facts.knowledgeNeeds.some(need => need.version === version);
90
+ }
91
+ function validTemporalWindow(window) {
92
+ if (window.from === undefined && window.to === undefined)
93
+ return false;
94
+ const from = window.from === undefined ? undefined : Date.parse(window.from);
95
+ const to = window.to === undefined ? undefined : Date.parse(window.to);
96
+ return (from === undefined || Number.isFinite(from))
97
+ && (to === undefined || Number.isFinite(to))
98
+ && (from === undefined || to === undefined || from <= to);
99
+ }
100
+ function boundedUniqueStrings(values, maximum) {
101
+ return Array.isArray(values) && values.length <= maximum
102
+ && values.every(value => boundedValue(value, 256))
103
+ && new Set(values).size === values.length;
104
+ }
105
+ function boundedId(value) {
106
+ return boundedValue(value, 512);
107
+ }
108
+ function boundedValue(value, maximum) {
109
+ return typeof value === 'string' && value.trim() === value && value.length > 0 && value.length <= maximum;
110
+ }
111
+ function invalid(reasonCode) {
112
+ return { valid: false, reasonCode };
113
+ }
114
+ //# sourceMappingURL=retrieval-query-proposal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retrieval-query-proposal.js","sourceRoot":"","sources":["../src/retrieval-query-proposal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { ProviderExecutionEnvelope } from '@devflow-tools/provider-runtime';
2
+ import { type ChannelDisposition, type ProviderExecutionReceiptV1, type ProviderExecutionStatus, type RetrievalQueryProposalV1, type SemanticFacts, type SemanticRouteDecision, type ValidatedSemanticClaimV1 } from '@devflow-tools/sdk';
3
+ import type { StructuralSemanticEvidence } from './semantic-structural-evidence.js';
4
+ export interface RetrievalQuerySamplingAdapter {
5
+ isSupported(): boolean;
6
+ createMessage(request: {
7
+ systemPrompt: string;
8
+ prompt: string;
9
+ maxTokens: number;
10
+ timeoutMs: number;
11
+ modelPreferences: {
12
+ costPriority: number;
13
+ speedPriority: number;
14
+ intelligencePriority: number;
15
+ };
16
+ }): Promise<{
17
+ text: string;
18
+ model?: string;
19
+ }>;
20
+ }
21
+ export interface RetrievalQuerySamplingInput {
22
+ normalizedPrompt: string;
23
+ sourceHash: string;
24
+ structural: StructuralSemanticEvidence;
25
+ route: SemanticRouteDecision;
26
+ facts: SemanticFacts;
27
+ claims: ValidatedSemanticClaimV1[];
28
+ dispositions: ChannelDisposition[];
29
+ timeoutMs: number;
30
+ }
31
+ export interface RetrievalQuerySamplingOutput {
32
+ status: ProviderExecutionStatus;
33
+ proposals: RetrievalQueryProposalV1[];
34
+ receipt: ProviderExecutionReceiptV1;
35
+ model?: string;
36
+ responseHash?: string;
37
+ latencyMs: number;
38
+ }
39
+ export type RetrievalQuerySamplingResolver = (input: RetrievalQuerySamplingInput) => Promise<RetrievalQuerySamplingOutput>;
40
+ export declare function createRetrievalQuerySamplingResolver(adapter: RetrievalQuerySamplingAdapter, envelope?: ProviderExecutionEnvelope): RetrievalQuerySamplingResolver;
41
+ //# sourceMappingURL=retrieval-query-sampling-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retrieval-query-sampling-resolver.d.ts","sourceRoot":"","sources":["../src/retrieval-query-sampling-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAIL,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC9B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAEpF,MAAM,WAAW,6BAA6B;IAC5C,WAAW,IAAI,OAAO,CAAC;IACvB,aAAa,CAAC,OAAO,EAAE;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE;YAChB,YAAY,EAAE,MAAM,CAAC;YACrB,aAAa,EAAE,MAAM,CAAC;YACtB,oBAAoB,EAAE,MAAM,CAAC;SAC9B,CAAC;KACH,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,2BAA2B;IAC1C,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,0BAA0B,CAAC;IACvC,KAAK,EAAE,qBAAqB,CAAC;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACnC,YAAY,EAAE,kBAAkB,EAAE,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,uBAAuB,CAAC;IAChC,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACtC,OAAO,EAAE,0BAA0B,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,8BAA8B,GAAG,CAC3C,KAAK,EAAE,2BAA2B,KAC/B,OAAO,CAAC,4BAA4B,CAAC,CAAC;AAwB3C,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,6BAA6B,EACtC,QAAQ,4BAAkC,GACzC,8BAA8B,CA+DhC"}