@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,139 @@
1
+ import { semanticEvidenceId, semanticTextHash, stableRuntimeHash, validateSemanticEvidenceSpan, } from '@devflow-tools/sdk';
2
+ const INTENTS = new Set([
3
+ 'debug', 'feature', 'refactor', 'understand', 'review',
4
+ 'performance', 'memory', 'knowledge', 'unknown',
5
+ ]);
6
+ const ACTIONS = new Set([
7
+ 'analyze', 'debug', 'create', 'modify', 'format', 'test',
8
+ 'build', 'install', 'release', 'document', 'unknown',
9
+ ]);
10
+ const MEMORY_DIRECTIVES = new Set(['save', 'forget', 'recall', 'none', 'ambiguous']);
11
+ const KNOWLEDGE_KINDS = new Set(['api', 'behavior', 'migration', 'error', 'overview']);
12
+ export function validateSemanticClaimProposal(input) {
13
+ const proposal = input.proposal;
14
+ if (proposal.schemaVersion !== 'semantic-claim-proposal.v1') {
15
+ return invalid('claim_schema_unsupported');
16
+ }
17
+ const { proposalHash, ...proposalBody } = proposal;
18
+ if (stableRuntimeHash(proposalBody) !== proposalHash)
19
+ return invalid('claim_hash_mismatch');
20
+ if (proposal.sourceHash !== input.sourceHash
21
+ || semanticTextHash(input.normalizedPrompt) !== input.sourceHash) {
22
+ return invalid('claim_source_hash_mismatch');
23
+ }
24
+ const providerReceipt = input.providerReceipts.get(proposal.providerExecutionId);
25
+ if (!providerReceipt) {
26
+ return invalid('claim_provider_execution_unknown');
27
+ }
28
+ const { receiptHash, ...receiptBody } = providerReceipt;
29
+ if (stableRuntimeHash(receiptBody) !== receiptHash
30
+ || providerReceipt.executionId !== proposal.providerExecutionId
31
+ || !providerReceipt.receiptId) {
32
+ return invalid('claim_provider_receipt_hash_invalid');
33
+ }
34
+ if (providerReceipt.capability !== 'semantic_claims'
35
+ || providerReceipt.status !== 'ready'
36
+ || providerReceipt.requestHash !== input.sourceHash) {
37
+ return invalid('claim_provider_receipt_invalid');
38
+ }
39
+ if (!Number.isFinite(proposal.confidence) || proposal.confidence < 0 || proposal.confidence > 1) {
40
+ return invalid('claim_confidence_invalid');
41
+ }
42
+ if (!isPayloadValid(proposal.claim))
43
+ return invalid('claim_value_invalid');
44
+ if (!Array.isArray(proposal.evidence) || proposal.evidence.length === 0) {
45
+ return invalid('claim_evidence_missing');
46
+ }
47
+ const expectedField = evidenceField(proposal.claim.kind);
48
+ const expectedSource = evidenceSource(proposal.source);
49
+ try {
50
+ for (const evidence of proposal.evidence) {
51
+ if (evidence.field !== expectedField || evidence.source !== expectedSource) {
52
+ return invalid('claim_evidence_binding_invalid');
53
+ }
54
+ validateSemanticEvidenceSpan(input.normalizedPrompt, evidence);
55
+ }
56
+ }
57
+ catch (error) {
58
+ return invalid(reasonForEvidenceError(error));
59
+ }
60
+ const evidence = [...new Map(proposal.evidence
61
+ .map(item => [semanticEvidenceId(item), item])).entries()]
62
+ .sort(([left], [right]) => left.localeCompare(right));
63
+ if (evidence.length !== proposal.evidence.length)
64
+ return invalid('claim_evidence_duplicate');
65
+ const evidenceIds = evidence.map(([id]) => id);
66
+ const body = {
67
+ schemaVersion: 'validated-semantic-claim.v1',
68
+ claimId: `semantic-claim:${stableRuntimeHash({
69
+ proposalId: proposal.proposalId,
70
+ proposalHash,
71
+ evidenceIds,
72
+ }).slice(0, 32)}`,
73
+ proposalId: proposal.proposalId,
74
+ proposalHash,
75
+ providerExecutionId: proposal.providerExecutionId,
76
+ providerReceiptId: providerReceipt.receiptId,
77
+ sourceHash: proposal.sourceHash,
78
+ source: proposal.source,
79
+ claim: proposal.claim,
80
+ confidence: proposal.confidence,
81
+ evidence: evidence.map(([, item]) => item),
82
+ evidenceIds,
83
+ };
84
+ return {
85
+ valid: true,
86
+ claim: Object.freeze({ ...body, claimHash: stableRuntimeHash(body) }),
87
+ };
88
+ }
89
+ function isPayloadValid(payload) {
90
+ switch (payload.kind) {
91
+ case 'intent': return INTENTS.has(payload.value);
92
+ case 'action': return ACTIONS.has(payload.value);
93
+ case 'memory_directive': return MEMORY_DIRECTIVES.has(payload.value);
94
+ case 'knowledge_need':
95
+ return Boolean(payload.value)
96
+ && KNOWLEDGE_KINDS.has(payload.value.kind)
97
+ && optionalString(payload.value.entity)
98
+ && optionalString(payload.value.symbol)
99
+ && optionalString(payload.value.version)
100
+ && (payload.value.required === undefined || typeof payload.value.required === 'boolean');
101
+ case 'out_of_scope': return typeof payload.value === 'boolean';
102
+ case 'entity':
103
+ case 'target':
104
+ case 'constraint':
105
+ case 'negation':
106
+ case 'condition': return payload.value.trim().length > 0 && payload.value.length <= 2_000;
107
+ }
108
+ }
109
+ function evidenceField(kind) {
110
+ if (kind === 'memory_directive')
111
+ return 'memory';
112
+ if (kind === 'knowledge_need')
113
+ return 'knowledge';
114
+ if (kind === 'out_of_scope')
115
+ return 'intent';
116
+ return kind;
117
+ }
118
+ function evidenceSource(source) {
119
+ if (source === 'embedding_route')
120
+ return 'embedding_route';
121
+ if (source === 'host_sampling')
122
+ return 'host_sampling';
123
+ return 'structural';
124
+ }
125
+ function optionalString(value) {
126
+ return value === undefined || (typeof value === 'string' && value.trim().length > 0 && value.length <= 1_000);
127
+ }
128
+ function reasonForEvidenceError(error) {
129
+ const message = error instanceof Error ? error.message : '';
130
+ if (message === 'SEMANTIC_EVIDENCE_HASH_MISMATCH')
131
+ return 'claim_evidence_hash_mismatch';
132
+ if (message === 'SEMANTIC_EVIDENCE_SPAN_INVALID')
133
+ return 'claim_evidence_span_invalid';
134
+ return 'claim_evidence_invalid';
135
+ }
136
+ function invalid(reasonCode) {
137
+ return { valid: false, reasonCode };
138
+ }
139
+ //# sourceMappingURL=semantic-claim-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-claim-validator.js","sourceRoot":"","sources":["../src/semantic-claim-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { type CanonicalTaskIdentity, type ProviderExecutionReceiptV1, type ProviderExecutionStatus, type RetrievalQueryProposalV1, type RuntimeActivationSnapshotV1, type SemanticClaimProposalV1, type SemanticContextResolution, type SemanticRouteDecision, type TaskDefinitionV1 } from '@devflow-tools/sdk';
2
+ import type { SemanticRouter } from './semantic-router.js';
3
+ import { type StructuralSemanticEvidence } from './semantic-structural-evidence.js';
4
+ import type { RetrievalQuerySamplingInput, RetrievalQuerySamplingOutput } from './retrieval-query-sampling-resolver.js';
5
+ export interface HostSemanticSamplingPort {
6
+ sample(input: {
7
+ normalizedPrompt: string;
8
+ sourceHash: string;
9
+ structural: StructuralSemanticEvidence;
10
+ route: SemanticRouteDecision;
11
+ timeoutMs: number;
12
+ }): Promise<{
13
+ status: ProviderExecutionStatus;
14
+ proposals: SemanticClaimProposalV1[];
15
+ receipt: ProviderExecutionReceiptV1;
16
+ model?: string;
17
+ latencyMs?: number;
18
+ responseHash?: string;
19
+ }>;
20
+ }
21
+ export interface HostRetrievalQuerySamplingPort {
22
+ sample(input: RetrievalQuerySamplingInput): Promise<RetrievalQuerySamplingOutput>;
23
+ }
24
+ export interface SemanticResolutionPolicyV1 {
25
+ policyHash: string;
26
+ budgets: TaskDefinitionV1['budgets'];
27
+ artifactIdentityIds?: string[];
28
+ sourceEvidenceIds?: string[];
29
+ activeSkill?: string;
30
+ }
31
+ export declare function resolveTaskSemanticContext(input: {
32
+ normalizedPrompt: string;
33
+ sourceHash?: string;
34
+ identity: CanonicalTaskIdentity;
35
+ revision: number;
36
+ activation: RuntimeActivationSnapshotV1;
37
+ router?: Pick<SemanticRouter, 'route'>;
38
+ hostSampling?: HostSemanticSamplingPort;
39
+ retrievalQuerySampling?: HostRetrievalQuerySamplingPort;
40
+ queryProposals?: RetrievalQueryProposalV1[];
41
+ queryProposalReceipts?: ProviderExecutionReceiptV1[];
42
+ allowedEntityHandles?: ReadonlySet<string>;
43
+ allowedSourceIds?: ReadonlySet<string>;
44
+ command?: string;
45
+ targetAnchors?: string[];
46
+ policy: SemanticResolutionPolicyV1;
47
+ now?: number;
48
+ }): Promise<SemanticContextResolution>;
49
+ //# sourceMappingURL=semantic-context-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-context-resolver.d.ts","sourceRoot":"","sources":["../src/semantic-context-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EACV,2BAA2B,EAC3B,4BAA4B,EAC7B,MAAM,wCAAwC,CAAC;AAEhD,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,KAAK,EAAE;QACZ,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,0BAA0B,CAAC;QACvC,KAAK,EAAE,qBAAqB,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC;QACV,MAAM,EAAE,uBAAuB,CAAC;QAChC,SAAS,EAAE,uBAAuB,EAAE,CAAC;QACrC,OAAO,EAAE,0BAA0B,CAAC;QACpC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;CACnF;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACrC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,2BAA2B,CAAC;IACxC,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,sBAAsB,CAAC,EAAE,8BAA8B,CAAC;IACxD,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;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,0BAA0B,CAAC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAoHrC"}
@@ -0,0 +1,137 @@
1
+ import { semanticTextHash, stableRuntimeHash, } from '@devflow-tools/sdk';
2
+ import { compileSemanticAuthority } from './semantic-authority-merger.js';
3
+ import { compileChannelQueryPlan } from './query-plan-compilers.js';
4
+ import { extractStructuralSemanticEvidence, } from './semantic-structural-evidence.js';
5
+ export async function resolveTaskSemanticContext(input) {
6
+ const now = input.now ?? Date.now();
7
+ const structural = extractStructuralSemanticEvidence({
8
+ prompt: input.normalizedPrompt,
9
+ command: input.command,
10
+ targetAnchors: input.targetAnchors,
11
+ });
12
+ const sourceHash = input.sourceHash ?? semanticTextHash(structural.normalizedPrompt);
13
+ if (sourceHash !== semanticTextHash(structural.normalizedPrompt)) {
14
+ throw new Error('SEMANTIC_CONTEXT_SOURCE_HASH_MISMATCH');
15
+ }
16
+ const route = input.activation.semantic === 'authoritative' && input.router
17
+ ? await input.router.route(structural.normalizedPrompt)
18
+ : {
19
+ status: 'unavailable',
20
+ candidates: [],
21
+ thresholdVersion: 'degraded-structural.v1',
22
+ latencyMs: 0,
23
+ reason: 'activation_degraded_structural',
24
+ };
25
+ const effectiveMode = input.activation.semantic === 'authoritative'
26
+ && input.router && route.status !== 'unavailable'
27
+ ? 'authoritative'
28
+ : 'degraded_structural';
29
+ const shouldSample = effectiveMode === 'authoritative'
30
+ && input.hostSampling
31
+ && (route.status === 'escalation_required' || hasCompositionalStructure(structural));
32
+ const sampled = shouldSample ? await input.hostSampling.sample({
33
+ normalizedPrompt: structural.normalizedPrompt,
34
+ sourceHash,
35
+ structural,
36
+ route,
37
+ timeoutMs: 3_000,
38
+ }) : undefined;
39
+ const resolution = await compileSemanticAuthority({
40
+ sourceHash,
41
+ structural,
42
+ route,
43
+ ...(sampled ? { sampled } : {}),
44
+ scopeKey: `${input.identity.projectId}:${input.identity.sessionId}:${input.identity.turnId}:${input.revision}`,
45
+ now,
46
+ });
47
+ const shouldSampleRetrievalQueries = input.activation.retrieval === 'authoritative'
48
+ && input.retrievalQuerySampling
49
+ && resolution.claims.length > 0
50
+ && resolution.dispositions.some(item => item.requirement !== 'prohibited');
51
+ const sampledQueries = shouldSampleRetrievalQueries
52
+ ? await input.retrievalQuerySampling.sample({
53
+ normalizedPrompt: structural.normalizedPrompt,
54
+ sourceHash,
55
+ structural,
56
+ route,
57
+ facts: resolution.facts,
58
+ claims: resolution.claims,
59
+ dispositions: resolution.dispositions,
60
+ timeoutMs: 30_000,
61
+ })
62
+ : undefined;
63
+ const finalResolution = sampledQueries
64
+ ? { ...resolution, providerReceipts: [...resolution.providerReceipts, sampledQueries.receipt] }
65
+ : resolution;
66
+ const plan = compileChannelQueryPlan({
67
+ identity: input.identity,
68
+ facts: resolution.facts,
69
+ dispositions: resolution.dispositions,
70
+ claims: resolution.claims,
71
+ query: structural.normalizedPrompt,
72
+ activeSkill: input.policy.activeSkill,
73
+ createdAt: now,
74
+ queryProposals: sampledQueries?.proposals ?? input.queryProposals,
75
+ queryProposalReceipts: sampledQueries ? [sampledQueries.receipt] : input.queryProposalReceipts,
76
+ allowedEntityHandles: input.allowedEntityHandles,
77
+ allowedSourceIds: input.allowedSourceIds,
78
+ });
79
+ const semanticContextBody = {
80
+ schemaVersion: 'semantic-execution-context',
81
+ identity: input.identity,
82
+ facts: resolution.facts,
83
+ dispositions: resolution.dispositions,
84
+ actionAuthority: resolution.actionAuthority,
85
+ plan,
86
+ activationSnapshotHash: input.activation.snapshotHash,
87
+ embeddingProfiles: input.activation.embeddingProfiles,
88
+ scopeBindings: {
89
+ project: { kind: 'project', id: input.identity.projectId },
90
+ session: { kind: 'session', id: input.identity.sessionId },
91
+ ...(input.policy.activeSkill
92
+ ? { skill: { kind: 'skill', id: input.policy.activeSkill } }
93
+ : {}),
94
+ },
95
+ mode: effectiveMode,
96
+ createdAt: now,
97
+ };
98
+ const semanticContextHash = stableRuntimeHash(semanticContextBody);
99
+ const definitionBody = {
100
+ schemaVersion: 'task-definition.v1',
101
+ identity: input.identity,
102
+ revision: input.revision,
103
+ semanticContextHash,
104
+ policyHash: input.policy.policyHash,
105
+ requirements: requirementsFor(resolution.dispositions, resolution.actionAuthority),
106
+ artifactIdentityIds: input.policy.artifactIdentityIds ?? [],
107
+ budgets: input.policy.budgets,
108
+ sourceEvidenceIds: input.policy.sourceEvidenceIds
109
+ ?? resolution.claims.flatMap(claim => claim.evidenceIds),
110
+ };
111
+ const definition = {
112
+ ...definitionBody,
113
+ definitionHash: stableRuntimeHash(definitionBody),
114
+ };
115
+ const context = {
116
+ ...semanticContextBody,
117
+ taskDefinitionHash: definition.definitionHash,
118
+ contextHash: semanticContextHash,
119
+ };
120
+ return { context, definition, resolution: finalResolution };
121
+ }
122
+ function requirementsFor(dispositions, authority) {
123
+ const byChannel = new Map(dispositions.map(item => [item.channel, item.requirement]));
124
+ const mutationRequired = authority.mutation === 'authorized' || authority.mutation === 'conditional';
125
+ return {
126
+ code: byChannel.get('code'),
127
+ memory: byChannel.get('memory'),
128
+ knowledge: byChannel.get('knowledge'),
129
+ action: mutationRequired ? 'required' : 'not_required',
130
+ verification: mutationRequired ? 'required' : 'not_required',
131
+ };
132
+ }
133
+ function hasCompositionalStructure(structural) {
134
+ return structural.conditions.length > 0 || structural.prohibitions.length > 0
135
+ || new Set(structural.positiveActionSpans.map(item => item.value)).size > 1;
136
+ }
137
+ //# sourceMappingURL=semantic-context-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-context-resolver.js","sourceRoot":"","sources":["../src/semantic-context-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type SemanticResolution } from '@devflow-tools/sdk';
2
+ import { SemanticRouter } from './semantic-router.js';
3
+ export declare function resolveLocalSemantics(input: {
4
+ prompt: string;
5
+ router: SemanticRouter;
6
+ command?: string;
7
+ targetAnchors?: string[];
8
+ now?: number;
9
+ }): Promise<SemanticResolution>;
10
+ //# sourceMappingURL=semantic-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-resolver.d.ts","sourceRoot":"","sources":["../src/semantic-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAW9B"}
@@ -0,0 +1,16 @@
1
+ import { semanticTextHash } from '@devflow-tools/sdk';
2
+ import { compileSemanticAuthority } from './semantic-authority-merger.js';
3
+ import { extractStructuralSemanticEvidence } from './semantic-structural-evidence.js';
4
+ export async function resolveLocalSemantics(input) {
5
+ const structural = extractStructuralSemanticEvidence(input);
6
+ const sourceHash = semanticTextHash(structural.normalizedPrompt);
7
+ const route = await input.router.route(structural.normalizedPrompt);
8
+ return compileSemanticAuthority({
9
+ sourceHash,
10
+ structural,
11
+ route,
12
+ scopeKey: `local:${sourceHash}`,
13
+ now: input.now,
14
+ });
15
+ }
16
+ //# sourceMappingURL=semantic-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-resolver.js","sourceRoot":"","sources":["../src/semantic-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA2B,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EAAE,iCAAiC,EAAE,MAAM,mCAAmC,CAAC;AAEtF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAM3C;IACC,MAAM,UAAU,GAAG,iCAAiC,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACpE,OAAO,wBAAwB,CAAC;QAC9B,UAAU;QACV,UAAU;QACV,KAAK;QACL,QAAQ,EAAE,SAAS,UAAU,EAAE;QAC/B,GAAG,EAAE,KAAK,CAAC,GAAG;KACf,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { type CanonicalTaskIntent, type KnowledgeChunkKind, type RetrievalTaskAction } from '@devflow-tools/sdk';
2
+ interface SemanticRouteDefinitionBase {
3
+ id: string;
4
+ positives: Array<{
5
+ id: string;
6
+ text: string;
7
+ }>;
8
+ contrasts: Array<{
9
+ id: string;
10
+ text: string;
11
+ }>;
12
+ }
13
+ export type SemanticRouteDefinition = SemanticRouteDefinitionBase & ({
14
+ field: 'intent';
15
+ value: CanonicalTaskIntent;
16
+ } | {
17
+ field: 'action';
18
+ value: RetrievalTaskAction;
19
+ } | {
20
+ field: 'memory';
21
+ value: 'save' | 'forget' | 'recall' | 'none' | 'ambiguous';
22
+ } | {
23
+ field: 'knowledge';
24
+ value: KnowledgeChunkKind;
25
+ });
26
+ export declare const SEMANTIC_ROUTE_CATALOG_SCHEMA: "semantic-route-catalog.v1";
27
+ export declare const SEMANTIC_ROUTE_DEFINITIONS: SemanticRouteDefinition[];
28
+ export declare const SEMANTIC_ROUTE_CATALOG: {
29
+ readonly schemaVersion: "semantic-route-catalog.v1";
30
+ readonly version: "semantic-route-catalog.v1";
31
+ readonly routes: SemanticRouteDefinition[];
32
+ readonly hash: string;
33
+ };
34
+ export {};
35
+ //# sourceMappingURL=semantic-route-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-route-catalog.d.ts","sourceRoot":"","sources":["../src/semantic-route-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAC;AAE5B,UAAU,2BAA2B;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAED,MAAM,MAAM,uBAAuB,GAAG,2BAA2B,GAAG,CAChE;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,mBAAmB,CAAA;CAAE,GAC/C;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,mBAAmB,CAAA;CAAE,GAC/C;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAA;CAAE,GAC/E;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,kBAAkB,CAAA;CAAE,CACpD,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAG,2BAAoC,CAAC;AAElF,eAAO,MAAM,0BAA0B,EAAE,uBAAuB,EAyBR,CAAC;AAEzD,eAAO,MAAM,sBAAsB;;;;;CAKzB,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { semanticTextHash, } from '@devflow-tools/sdk';
2
+ export const SEMANTIC_ROUTE_CATALOG_SCHEMA = 'semantic-route-catalog.v1';
3
+ export const SEMANTIC_ROUTE_DEFINITIONS = [
4
+ route('intent:debug', 'intent', 'debug', ['fix the crash', '修复登录崩溃', 'diagnose failing build'], ['explain the design', '没有 bug']),
5
+ route('intent:feature', 'intent', 'feature', ['create a component', '新增搜索功能', 'implement the feature'], ['review existing code']),
6
+ route('intent:review', 'intent', 'review', ['review naming', '审查代码', 'analyze architecture'], ['直接修复问题']),
7
+ route('intent:understand', 'intent', 'understand', ['explain why', '了解实现原理', 'how does it work'], ['implement it']),
8
+ route('intent:memory', 'intent', 'memory', ['remember this rule', '记住项目约定', 'recall our decision'], ['memory leak']),
9
+ route('intent:knowledge', 'intent', 'knowledge', ['query React API', '查询框架文档', 'migration guide'], ['local component code']),
10
+ route('intent:performance', 'intent', 'performance', ['profile latency', '分析渲染性能', 'memory leak diagnosis'], ['not a performance issue']),
11
+ route('intent:refactor', 'intent', 'refactor', ['refactor the module', '重构状态管理', 'extract service'], ['explain current structure']),
12
+ route('action:analyze', 'action', 'analyze', ['only analyze', '只分析日志', 'explain without changes'], ['apply the fix']),
13
+ route('action:debug', 'action', 'debug', ['fix the bug', '修复崩溃', 'resolve the failure'], ['explain the failure only']),
14
+ route('action:create', 'action', 'create', ['implement a component', '新增模块', 'scaffold a page'], ['review the component']),
15
+ route('action:modify', 'action', 'modify', ['edit the API', '修改接口', 'refactor this file'], ['inspect the API']),
16
+ route('action:release', 'action', 'release', ['publish version', '发布新版本', 'run npm publish'], ['analyze release failure']),
17
+ route('action:build', 'action', 'build', ['run the build', '执行构建', 'compile the project'], ['build is failing; explain why']),
18
+ route('action:test', 'action', 'test', ['run the tests', '执行测试', 'write a regression test'], ['review test design']),
19
+ route('action:install', 'action', 'install', ['install dependency', '安装依赖', 'pnpm add package'], ['explain dependency choice']),
20
+ route('memory:save', 'memory', 'save', ['remember this convention', '记住项目约定', 'store this for later'], ['do not remember this']),
21
+ route('memory:forget', 'memory', 'forget', ['forget old policy', '删除这条记忆', 'remove stored convention'], ['recall the policy']),
22
+ route('memory:recall', 'memory', 'recall', ['recall our decision', '回忆选择原因', 'what did we decide'], ['forget it']),
23
+ route('knowledge:api', 'knowledge', 'api', ['API signature', '查询调用参数', 'method reference'], ['architecture overview']),
24
+ route('knowledge:migration', 'knowledge', 'migration', ['migration guide', '升级破坏性变更', 'migrate React 18 to 19'], ['current API signature']),
25
+ route('knowledge:error', 'knowledge', 'error', ['error documentation', '失败原因文档', 'exception reference'], ['framework overview']),
26
+ route('knowledge:overview', 'knowledge', 'overview', ['framework overview', '解释基本原理', 'introduction'], ['exact API signature']),
27
+ route('knowledge:behavior', 'knowledge', 'behavior', ['runtime behavior', '实现机制', 'how it behaves'], ['migration breaking changes']),
28
+ ].sort((left, right) => left.id.localeCompare(right.id));
29
+ export const SEMANTIC_ROUTE_CATALOG = {
30
+ schemaVersion: SEMANTIC_ROUTE_CATALOG_SCHEMA,
31
+ version: 'semantic-route-catalog.v1',
32
+ routes: SEMANTIC_ROUTE_DEFINITIONS,
33
+ hash: semanticTextHash(stableCatalogJson(SEMANTIC_ROUTE_DEFINITIONS)),
34
+ };
35
+ function route(id, field, value, positives, contrasts) {
36
+ return {
37
+ id,
38
+ field,
39
+ value,
40
+ positives: positives.map((text, index) => ({ id: `${id}:p${index + 1}`, text })),
41
+ contrasts: contrasts.map((text, index) => ({ id: `${id}:c${index + 1}`, text })),
42
+ };
43
+ }
44
+ function stableCatalogJson(routes) {
45
+ return JSON.stringify(routes.map(item => ({
46
+ id: item.id,
47
+ field: item.field,
48
+ value: item.value,
49
+ positives: [...item.positives].sort((a, b) => a.id.localeCompare(b.id)),
50
+ contrasts: [...item.contrasts].sort((a, b) => a.id.localeCompare(b.id)),
51
+ })));
52
+ }
53
+ //# sourceMappingURL=semantic-route-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-route-catalog.js","sourceRoot":"","sources":["../src/semantic-route-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { type EmbeddingProviderContract, type SemanticRouteDecision } from '@devflow-tools/sdk';
2
+ import { type SemanticRouteDefinition } from './semantic-route-catalog.js';
3
+ export interface SemanticRouterEncoder {
4
+ readonly modelId: string;
5
+ readonly modelRevision: string;
6
+ warmup(): Promise<boolean>;
7
+ embedBatch(texts: string[]): Promise<Float32Array[]>;
8
+ }
9
+ export interface SemanticRouterThresholds {
10
+ schemaVersion: 'semantic-thresholds.v1';
11
+ version: string;
12
+ minimumScore: number;
13
+ minimumMargin: number;
14
+ }
15
+ export declare const SHADOW_SEMANTIC_THRESHOLDS: SemanticRouterThresholds;
16
+ export declare class SemanticRouter {
17
+ private readonly encoder;
18
+ private readonly routes;
19
+ private readonly thresholds;
20
+ private embeddedRoutes;
21
+ private warmupPromise;
22
+ constructor(encoder: SemanticRouterEncoder, routes?: SemanticRouteDefinition[], thresholds?: SemanticRouterThresholds);
23
+ warmup(): Promise<boolean>;
24
+ route(prompt: string): Promise<SemanticRouteDecision>;
25
+ get modelId(): string;
26
+ get modelRevision(): string;
27
+ get thresholdVersion(): string;
28
+ private initialize;
29
+ private unavailable;
30
+ }
31
+ export declare class EmbeddingProviderSemanticEncoder implements SemanticRouterEncoder {
32
+ private readonly provider;
33
+ readonly modelId = "Xenova/all-MiniLM-L6-v2";
34
+ readonly modelRevision = "751bff37182d3f1213fa05d7196b954e230abad9";
35
+ constructor(provider: EmbeddingProviderContract);
36
+ warmup(): Promise<boolean>;
37
+ embedBatch(texts: string[]): Promise<Float32Array[]>;
38
+ }
39
+ //# sourceMappingURL=semantic-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-router.d.ts","sourceRoot":"","sources":["../src/semantic-router.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAE3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,6BAA6B,CAAC;AAGrC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,wBAAwB,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,0BAA0B,EAAE,wBAKxC,CAAC;AAQF,qBAAa,cAAc;IAKvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAN7B,OAAO,CAAC,cAAc,CAAgC;IACtD,OAAO,CAAC,aAAa,CAAiC;gBAGnC,OAAO,EAAE,qBAAqB,EAC9B,MAAM,GAAE,uBAAuB,EAAkC,EACjE,UAAU,GAAE,wBAAqD;IAGpF,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAOpB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAiD3D,IAAI,OAAO,IAAI,MAAM,CAAiC;IACtD,IAAI,aAAa,IAAI,MAAM,CAAuC;IAClE,IAAI,gBAAgB,IAAI,MAAM,CAAoC;YAEpD,UAAU;IAuBxB,OAAO,CAAC,WAAW;CAGpB;AAED,qBAAa,gCAAiC,YAAW,qBAAqB;IAGhE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,QAAQ,CAAC,OAAO,6BAAsB;IACtC,QAAQ,CAAC,aAAa,8CAA4B;gBACrB,QAAQ,EAAE,yBAAyB;IAChE,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAC1B,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAOrD"}