@aligndottech/cli 0.5.0 → 0.6.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.
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +35 -2
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/local.d.ts.map +1 -1
- package/dist/commands/local.js +3 -4
- package/dist/commands/local.js.map +1 -1
- package/dist/commands/mcp.d.ts +195 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +3 -2
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +25 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/gateway-client.d.ts +41 -1
- package/dist/lib/gateway-client.d.ts.map +1 -1
- package/dist/lib/gateway-client.js +17 -0
- package/dist/lib/gateway-client.js.map +1 -1
- package/dist/lib/local-gateway-client.d.ts.map +1 -1
- package/dist/lib/local-gateway-client.js +41 -9
- package/dist/lib/local-gateway-client.js.map +1 -1
- package/dist/lib/local-llm.d.ts +16 -0
- package/dist/lib/local-llm.d.ts.map +1 -1
- package/dist/lib/local-llm.js +37 -16
- package/dist/lib/local-llm.js.map +1 -1
- package/dist/lib/local-relationship-classifier.d.ts +23 -3
- package/dist/lib/local-relationship-classifier.d.ts.map +1 -1
- package/dist/lib/local-relationship-classifier.js +24 -18
- package/dist/lib/local-relationship-classifier.js.map +1 -1
- package/dist/lib/value-rollup.d.ts +60 -0
- package/dist/lib/value-rollup.d.ts.map +1 -0
- package/dist/lib/value-rollup.js +78 -0
- package/dist/lib/value-rollup.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-client.js","sourceRoot":"","sources":["../../src/lib/gateway-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"gateway-client.js","sourceRoot":"","sources":["../../src/lib/gateway-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-gateway-client.d.ts","sourceRoot":"","sources":["../../src/lib/local-gateway-client.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE1E,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAGvC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAGtC,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"local-gateway-client.d.ts","sourceRoot":"","sources":["../../src/lib/local-gateway-client.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE1E,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAGvC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAGtC,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM;IAsDnD,2FAA2F;;;;;;;2BAS9D,MAAM;;;;;;;;uBAKV,KAAK,CAAC;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;;;;;;;;;;;;;;;2BAwB/E,MAAM,mBAAe,OAAO,CAAC,aAAa,CAAC;yBAc7C,MAAM,aAAa,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;2BA0FlD,MAAM,WAAW,MAAM,gBAAgB,MAAM;;;;;;;;;;;0BAQ9C,MAAM;;;;;;;EAYrC;AAED,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
|
|
@@ -16,7 +16,8 @@ export function createLocalGatewayClient(dbPath) {
|
|
|
16
16
|
.filter(e => e.decisionId !== excludeId)
|
|
17
17
|
.map(e => ({ decisionId: e.decisionId, score: cosineSimilarity(embedding, e.embedding) }))
|
|
18
18
|
.filter(e => e.score >= threshold)
|
|
19
|
-
|
|
19
|
+
// ALI-218: id tiebreaker so equal-similarity candidates slice deterministically.
|
|
20
|
+
.sort((a, b) => b.score - a.score || a.decisionId.localeCompare(b.decisionId))
|
|
20
21
|
.slice(0, topK);
|
|
21
22
|
}
|
|
22
23
|
// Shared ingest path: insert, embed (title + summary), detect conflicts.
|
|
@@ -114,15 +115,17 @@ export function createLocalGatewayClient(dbPath) {
|
|
|
114
115
|
const subject = { title: 'Proposed change', summary: diff.slice(0, 2000) };
|
|
115
116
|
const typed = [];
|
|
116
117
|
for (const c of candidates) {
|
|
117
|
-
const
|
|
118
|
+
const outcome = await classifyRelationship(subject, { title: c.title, summary: c.summary });
|
|
119
|
+
const rel = outcome.ok ? outcome.relationship : null;
|
|
118
120
|
typed.push({
|
|
119
121
|
id: c.id,
|
|
120
122
|
title: c.title,
|
|
121
123
|
summary: c.summary,
|
|
122
124
|
url: c.sourceUrl ?? undefined,
|
|
123
|
-
relationship: rel?.type ?? 'relates_to'
|
|
125
|
+
relationship: rel?.type ?? 'relates', // ALI-219: canonical (was 'relates_to')
|
|
124
126
|
confidence: rel?.confidence ?? c.score,
|
|
125
127
|
typed: rel !== null,
|
|
128
|
+
failureReason: outcome.ok ? undefined : outcome.reason,
|
|
126
129
|
reason: rel?.reason,
|
|
127
130
|
similarity: c.score,
|
|
128
131
|
});
|
|
@@ -138,13 +141,42 @@ export function createLocalGatewayClient(dbPath) {
|
|
|
138
141
|
reason: t.reason ?? 'Conflicts with an existing decision in your local graph',
|
|
139
142
|
severity: (t.confidence >= 0.8 ? 'critical' : 'warning'),
|
|
140
143
|
}));
|
|
141
|
-
|
|
142
|
-
|
|
144
|
+
// ALI-414: a candidate we retrieved but could not classify is exactly the case
|
|
145
|
+
// where we do not know - it could be the conflict. Reporting `aligned` there is
|
|
146
|
+
// a fail-open, and an agent reads `aligned` as permission to proceed. A conflict
|
|
147
|
+
// we DID find still wins: it is strictly more actionable than "unknown".
|
|
148
|
+
const unclassified = typed.find(t => !t.typed);
|
|
143
149
|
const confidence = Math.max(...typed.map(t => t.confidence));
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
150
|
+
if (conflicts.length) {
|
|
151
|
+
return {
|
|
152
|
+
status: 'conflicting',
|
|
153
|
+
confidence,
|
|
154
|
+
relevant_decisions,
|
|
155
|
+
conflicts,
|
|
156
|
+
message: `This change conflicts with ${conflicts.length} existing decision(s) in your local graph - review before proceeding.`,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
if (unclassified) {
|
|
160
|
+
const hint = unclassified.failureReason === 'no_llm_key'
|
|
161
|
+
? ' Set ANTHROPIC_API_KEY or OPENAI_API_KEY (or run a local Ollama) so these can be classified.'
|
|
162
|
+
: '';
|
|
163
|
+
return {
|
|
164
|
+
status: 'unknown',
|
|
165
|
+
reason: unclassified.failureReason,
|
|
166
|
+
confidence: 0,
|
|
167
|
+
relevant_decisions,
|
|
168
|
+
conflicts: [],
|
|
169
|
+
message: `Could not check ${relevant_decisions.length} related decision(s) - the relationship classifier did not run. ` +
|
|
170
|
+
`This is NOT a pass: treat it as unchecked and review these decisions before proceeding.${hint}`,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
status: 'aligned',
|
|
175
|
+
confidence,
|
|
176
|
+
relevant_decisions,
|
|
177
|
+
conflicts,
|
|
178
|
+
message: `Found ${relevant_decisions.length} related decision(s) to review.`,
|
|
179
|
+
};
|
|
148
180
|
},
|
|
149
181
|
async checkDrift(decisionId, content, _sourceType) {
|
|
150
182
|
const decisionEmbedding = db.getEmbedding(decisionId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-gateway-client.js","sourceRoot":"","sources":["../../src/lib/local-gateway-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAM1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,6EAA6E;AAC7E,mEAAmE;AACnE,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AACtC,2EAA2E;AAC3E,gDAAgD;AAChD,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAEnC,MAAM,UAAU,wBAAwB,CAAC,MAAc;IACrD,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAEjC,KAAK,UAAU,WAAW,CACxB,SAAuB,EACvB,IAAY,EACZ,SAAS,GAAG,GAAG,EACf,SAAkB;QAElB,MAAM,GAAG,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC;QAClC,OAAO,GAAG;aACP,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC;aACvC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;aACzF,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"local-gateway-client.js","sourceRoot":"","sources":["../../src/lib/local-gateway-client.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/local-llm.d.ts
CHANGED
|
@@ -8,7 +8,23 @@ export interface CallChatOptions {
|
|
|
8
8
|
provider?: AiProvider;
|
|
9
9
|
apiKey?: string;
|
|
10
10
|
maxTokens?: number;
|
|
11
|
+
/**
|
|
12
|
+
* Sampling temperature. Omit for the provider default; pass 0 for deterministic
|
|
13
|
+
* output (relationship classification, where the same pair must type the same
|
|
14
|
+
* way every run). See ALI-218.
|
|
15
|
+
*/
|
|
16
|
+
temperature?: number;
|
|
11
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Is any LLM provider configured by environment? (ALI-414)
|
|
20
|
+
*
|
|
21
|
+
* `callChat` returns null for a missing key, a timeout and a non-2xx alike, so a
|
|
22
|
+
* caller that needs to tell "never configured" from "configured but failed" has to
|
|
23
|
+
* ask first. Deliberately synchronous and env-only: it does NOT probe Ollama, so a
|
|
24
|
+
* machine whose only provider is a broken local Ollama reads as unconfigured. The
|
|
25
|
+
* remedy that points at - configure a provider - is still the right one.
|
|
26
|
+
*/
|
|
27
|
+
export declare function hasConfiguredProvider(): boolean;
|
|
12
28
|
/**
|
|
13
29
|
* Provider-agnostic chat call. Resolution order:
|
|
14
30
|
* 1. explicitly configured provider+key (e.g. from `align setup`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-llm.d.ts","sourceRoot":"","sources":["../../src/lib/local-llm.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,sFAAsF;IACtF,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"local-llm.d.ts","sourceRoot":"","sources":["../../src/lib/local-llm.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,sFAAsF;IACtF,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAgND;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAG/C;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,eAAe,GACrB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BxB;AAED,oGAAoG;AACpG,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EAChE,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB"}
|
package/dist/lib/local-llm.js
CHANGED
|
@@ -8,7 +8,7 @@ function buildUserPrompt(question, decisions) {
|
|
|
8
8
|
// --- Provider adapters: each takes a generic (system, user) chat and returns text or null ---
|
|
9
9
|
// OpenAI-compatible Chat Completions API (OpenAI, Groq, Mistral, xAI/Grok, and any
|
|
10
10
|
// ALIGN_LLM_BASE_URL endpoint - OpenRouter, Together, DeepSeek, LM Studio, vLLM, ...).
|
|
11
|
-
async function tryOpenAiCompatible(system, user, endpoint, model, key, maxTokens = 256, timeoutMs = 15000) {
|
|
11
|
+
async function tryOpenAiCompatible(system, user, endpoint, model, key, maxTokens = 256, timeoutMs = 15000, temperature) {
|
|
12
12
|
try {
|
|
13
13
|
const res = await fetch(endpoint, {
|
|
14
14
|
method: 'POST',
|
|
@@ -19,6 +19,7 @@ async function tryOpenAiCompatible(system, user, endpoint, model, key, maxTokens
|
|
|
19
19
|
body: JSON.stringify({
|
|
20
20
|
model,
|
|
21
21
|
max_tokens: maxTokens,
|
|
22
|
+
...(temperature !== undefined ? { temperature } : {}),
|
|
22
23
|
messages: [
|
|
23
24
|
{ role: 'system', content: system },
|
|
24
25
|
{ role: 'user', content: user },
|
|
@@ -35,7 +36,7 @@ async function tryOpenAiCompatible(system, user, endpoint, model, key, maxTokens
|
|
|
35
36
|
return null;
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
|
-
async function tryAnthropic(system, user, key, maxTokens = 256) {
|
|
39
|
+
async function tryAnthropic(system, user, key, maxTokens = 256, temperature) {
|
|
39
40
|
try {
|
|
40
41
|
const res = await fetch('https://api.anthropic.com/v1/messages', {
|
|
41
42
|
method: 'POST',
|
|
@@ -47,6 +48,7 @@ async function tryAnthropic(system, user, key, maxTokens = 256) {
|
|
|
47
48
|
body: JSON.stringify({
|
|
48
49
|
model: process.env['ALIGN_ANTHROPIC_MODEL'] ?? 'claude-haiku-4-5-20251001',
|
|
49
50
|
max_tokens: maxTokens,
|
|
51
|
+
...(temperature !== undefined ? { temperature } : {}),
|
|
50
52
|
system,
|
|
51
53
|
messages: [{ role: 'user', content: user }],
|
|
52
54
|
}),
|
|
@@ -61,7 +63,7 @@ async function tryAnthropic(system, user, key, maxTokens = 256) {
|
|
|
61
63
|
return null;
|
|
62
64
|
}
|
|
63
65
|
}
|
|
64
|
-
async function tryGemini(system, user, key, maxTokens = 256) {
|
|
66
|
+
async function tryGemini(system, user, key, maxTokens = 256, temperature) {
|
|
65
67
|
try {
|
|
66
68
|
const geminiModel = process.env['ALIGN_GEMINI_MODEL'] ?? 'gemini-1.5-flash';
|
|
67
69
|
const res = await fetch(`https://generativelanguage.googleapis.com/v1beta/models/${geminiModel}:generateContent?key=${key}`, {
|
|
@@ -70,7 +72,10 @@ async function tryGemini(system, user, key, maxTokens = 256) {
|
|
|
70
72
|
body: JSON.stringify({
|
|
71
73
|
systemInstruction: { parts: [{ text: system }] },
|
|
72
74
|
contents: [{ parts: [{ text: user }] }],
|
|
73
|
-
generationConfig: {
|
|
75
|
+
generationConfig: {
|
|
76
|
+
maxOutputTokens: maxTokens,
|
|
77
|
+
...(temperature !== undefined ? { temperature } : {}),
|
|
78
|
+
},
|
|
74
79
|
}),
|
|
75
80
|
signal: AbortSignal.timeout(15000),
|
|
76
81
|
});
|
|
@@ -83,7 +88,7 @@ async function tryGemini(system, user, key, maxTokens = 256) {
|
|
|
83
88
|
return null;
|
|
84
89
|
}
|
|
85
90
|
}
|
|
86
|
-
async function tryOllama(system, user) {
|
|
91
|
+
async function tryOllama(system, user, temperature) {
|
|
87
92
|
const host = process.env['OLLAMA_HOST'] ?? 'http://localhost:11434';
|
|
88
93
|
let model;
|
|
89
94
|
try {
|
|
@@ -107,6 +112,7 @@ async function tryOllama(system, user) {
|
|
|
107
112
|
body: JSON.stringify({
|
|
108
113
|
model,
|
|
109
114
|
stream: false,
|
|
115
|
+
...(temperature !== undefined ? { options: { temperature } } : {}),
|
|
110
116
|
messages: [
|
|
111
117
|
{ role: 'system', content: system },
|
|
112
118
|
{ role: 'user', content: user },
|
|
@@ -138,23 +144,37 @@ function keyForProvider(provider) {
|
|
|
138
144
|
case 'grok': return process.env['GROK_API_KEY'] ?? process.env['XAI_API_KEY'];
|
|
139
145
|
}
|
|
140
146
|
}
|
|
141
|
-
async function callProvider(provider, key, system, user, maxTokens) {
|
|
147
|
+
async function callProvider(provider, key, system, user, maxTokens, temperature) {
|
|
142
148
|
switch (provider) {
|
|
143
149
|
case 'anthropic':
|
|
144
|
-
return tryAnthropic(system, user, key, maxTokens);
|
|
150
|
+
return tryAnthropic(system, user, key, maxTokens, temperature);
|
|
145
151
|
case 'openai':
|
|
146
|
-
return tryOpenAiCompatible(system, user, 'https://api.openai.com/v1/chat/completions', process.env['ALIGN_OPENAI_MODEL'] ?? 'gpt-4o-mini', key, maxTokens);
|
|
152
|
+
return tryOpenAiCompatible(system, user, 'https://api.openai.com/v1/chat/completions', process.env['ALIGN_OPENAI_MODEL'] ?? 'gpt-4o-mini', key, maxTokens, undefined, temperature);
|
|
147
153
|
case 'gemini':
|
|
148
|
-
return tryGemini(system, user, key, maxTokens);
|
|
154
|
+
return tryGemini(system, user, key, maxTokens, temperature);
|
|
149
155
|
case 'groq':
|
|
150
|
-
return tryOpenAiCompatible(system, user, 'https://api.groq.com/openai/v1/chat/completions', process.env['ALIGN_GROQ_MODEL'] ?? 'llama-3.1-8b-instant', key, maxTokens);
|
|
156
|
+
return tryOpenAiCompatible(system, user, 'https://api.groq.com/openai/v1/chat/completions', process.env['ALIGN_GROQ_MODEL'] ?? 'llama-3.1-8b-instant', key, maxTokens, undefined, temperature);
|
|
151
157
|
case 'mistral':
|
|
152
|
-
return tryOpenAiCompatible(system, user, 'https://api.mistral.ai/v1/chat/completions', process.env['ALIGN_MISTRAL_MODEL'] ?? 'mistral-small-latest', key, maxTokens);
|
|
158
|
+
return tryOpenAiCompatible(system, user, 'https://api.mistral.ai/v1/chat/completions', process.env['ALIGN_MISTRAL_MODEL'] ?? 'mistral-small-latest', key, maxTokens, undefined, temperature);
|
|
153
159
|
case 'grok':
|
|
154
|
-
return tryOpenAiCompatible(system, user, 'https://api.x.ai/v1/chat/completions', process.env['ALIGN_GROK_MODEL'] ?? 'grok-2-latest', key, maxTokens);
|
|
160
|
+
return tryOpenAiCompatible(system, user, 'https://api.x.ai/v1/chat/completions', process.env['ALIGN_GROK_MODEL'] ?? 'grok-2-latest', key, maxTokens, undefined, temperature);
|
|
155
161
|
}
|
|
156
162
|
}
|
|
157
163
|
const ALL_PROVIDERS = ['anthropic', 'openai', 'gemini', 'groq', 'mistral', 'grok'];
|
|
164
|
+
/**
|
|
165
|
+
* Is any LLM provider configured by environment? (ALI-414)
|
|
166
|
+
*
|
|
167
|
+
* `callChat` returns null for a missing key, a timeout and a non-2xx alike, so a
|
|
168
|
+
* caller that needs to tell "never configured" from "configured but failed" has to
|
|
169
|
+
* ask first. Deliberately synchronous and env-only: it does NOT probe Ollama, so a
|
|
170
|
+
* machine whose only provider is a broken local Ollama reads as unconfigured. The
|
|
171
|
+
* remedy that points at - configure a provider - is still the right one.
|
|
172
|
+
*/
|
|
173
|
+
export function hasConfiguredProvider() {
|
|
174
|
+
if (process.env['ALIGN_LLM_BASE_URL'])
|
|
175
|
+
return true;
|
|
176
|
+
return ALL_PROVIDERS.some(p => Boolean(keyForProvider(p)));
|
|
177
|
+
}
|
|
158
178
|
/**
|
|
159
179
|
* Provider-agnostic chat call. Resolution order:
|
|
160
180
|
* 1. explicitly configured provider+key (e.g. from `align setup`)
|
|
@@ -166,9 +186,10 @@ const ALL_PROVIDERS = ['anthropic', 'openai', 'gemini', 'groq', 'mistral', 'grok
|
|
|
166
186
|
*/
|
|
167
187
|
export async function callChat(system, user, opts) {
|
|
168
188
|
const maxTokens = opts?.maxTokens;
|
|
189
|
+
const temperature = opts?.temperature;
|
|
169
190
|
// 1. configured provider (from align setup) takes priority
|
|
170
191
|
if (opts?.provider && opts.apiKey) {
|
|
171
|
-
const result = await callProvider(opts.provider, opts.apiKey, system, user, maxTokens);
|
|
192
|
+
const result = await callProvider(opts.provider, opts.apiKey, system, user, maxTokens, temperature);
|
|
172
193
|
if (result)
|
|
173
194
|
return result;
|
|
174
195
|
}
|
|
@@ -177,7 +198,7 @@ export async function callChat(system, user, opts) {
|
|
|
177
198
|
if (baseUrl) {
|
|
178
199
|
const key = process.env['ALIGN_LLM_API_KEY'] ?? '';
|
|
179
200
|
const model = process.env['ALIGN_LLM_MODEL'] ?? 'gpt-4o-mini';
|
|
180
|
-
const result = await tryOpenAiCompatible(system, user, chatCompletionsUrl(baseUrl), model, key, maxTokens);
|
|
201
|
+
const result = await tryOpenAiCompatible(system, user, chatCompletionsUrl(baseUrl), model, key, maxTokens, undefined, temperature);
|
|
181
202
|
if (result)
|
|
182
203
|
return result;
|
|
183
204
|
}
|
|
@@ -187,13 +208,13 @@ export async function callChat(system, user, opts) {
|
|
|
187
208
|
continue; // already tried above
|
|
188
209
|
const key = keyForProvider(provider);
|
|
189
210
|
if (key) {
|
|
190
|
-
const result = await callProvider(provider, key, system, user, maxTokens);
|
|
211
|
+
const result = await callProvider(provider, key, system, user, maxTokens, temperature);
|
|
191
212
|
if (result)
|
|
192
213
|
return result;
|
|
193
214
|
}
|
|
194
215
|
}
|
|
195
216
|
// 4. local Ollama as last resort
|
|
196
|
-
return tryOllama(system, user);
|
|
217
|
+
return tryOllama(system, user, temperature);
|
|
197
218
|
}
|
|
198
219
|
/** Synthesise a natural-language answer from retrieved decisions, using any configured provider. */
|
|
199
220
|
export async function synthesiseLocally(question, decisions, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-llm.js","sourceRoot":"","sources":["../../src/lib/local-llm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"local-llm.js","sourceRoot":"","sources":["../../src/lib/local-llm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
1
|
+
import { type DecisionRelationship } from '@aligndottech/connector-core';
|
|
2
|
+
export declare const RELATIONSHIP_TYPES: readonly ["supersedes", "conflicts_with", "contradicts", "duplicates", "clarifies", "relates", "refines", "supports", "questions", "blocks"];
|
|
3
|
+
export type RelationshipType = DecisionRelationship;
|
|
3
4
|
export interface ClassifiedRelationship {
|
|
4
5
|
type: RelationshipType;
|
|
5
6
|
confidence: number;
|
|
6
7
|
reason?: string;
|
|
7
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Why a candidate edge could not be typed. Only distinctions the code can actually
|
|
11
|
+
* make: `callChat` cannot tell a timeout from a 429 from an empty body, so there is
|
|
12
|
+
* deliberately no `classifier_timeout`.
|
|
13
|
+
*/
|
|
14
|
+
export type ClassifierFailureReason =
|
|
15
|
+
/** Nothing to call: no provider key in the environment, no local Ollama. */
|
|
16
|
+
'no_llm_key'
|
|
17
|
+
/** A provider IS configured and the call did not come back usable. */
|
|
18
|
+
| 'classifier_error'
|
|
19
|
+
/** The model replied, but with no JSON or a type outside the canonical vocabulary. */
|
|
20
|
+
| 'classifier_unparseable';
|
|
21
|
+
export type ClassificationOutcome = {
|
|
22
|
+
ok: true;
|
|
23
|
+
relationship: ClassifiedRelationship;
|
|
24
|
+
} | {
|
|
25
|
+
ok: false;
|
|
26
|
+
reason: ClassifierFailureReason;
|
|
27
|
+
};
|
|
8
28
|
interface DecisionLite {
|
|
9
29
|
title: string;
|
|
10
30
|
summary: string;
|
|
11
31
|
}
|
|
12
|
-
export declare function classifyRelationship(subject: DecisionLite, candidate: DecisionLite): Promise<
|
|
32
|
+
export declare function classifyRelationship(subject: DecisionLite, candidate: DecisionLite): Promise<ClassificationOutcome>;
|
|
13
33
|
export {};
|
|
14
34
|
//# sourceMappingURL=local-relationship-classifier.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-relationship-classifier.d.ts","sourceRoot":"","sources":["../../src/lib/local-relationship-classifier.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"local-relationship-classifier.d.ts","sourceRoot":"","sources":["../../src/lib/local-relationship-classifier.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,oBAAoB,EAG1B,MAAM,8BAA8B,CAAC;AAOtC,eAAO,MAAM,kBAAkB,8IAAyB,CAAC;AAEzD,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAEpD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,MAAM,uBAAuB;AACjC,4EAA4E;AAC1E,YAAY;AACd,sEAAsE;GACpE,kBAAkB;AACpB,sFAAsF;GACpF,wBAAwB,CAAC;AAE7B,MAAM,MAAM,qBAAqB,GAC7B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,YAAY,EAAE,sBAAsB,CAAA;CAAE,GAClD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC;AAEnD,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAYD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,YAAY,GACtB,OAAO,CAAC,qBAAqB,CAAC,CAYhC"}
|
|
@@ -1,31 +1,36 @@
|
|
|
1
1
|
// Stage 2 of local relationship detection: type a candidate edge (found cheaply
|
|
2
2
|
// via embeddings) using an LLM with the user's OWN key. Embedding similarity says
|
|
3
3
|
// two decisions are related; only an LLM reading both can say HOW (the taxonomy).
|
|
4
|
-
// Returns null when no key is configured, so callers degrade to an untyped edge.
|
|
5
4
|
// Uses the shared provider-agnostic resolver in local-llm.ts (any provider).
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
];
|
|
5
|
+
//
|
|
6
|
+
// ALI-414: when classification cannot happen this reports WHY. It previously
|
|
7
|
+
// returned a bare null for all three causes, and the caller - unable to tell them
|
|
8
|
+
// apart, or apart from "classified, no conflict" - reported `aligned`.
|
|
9
|
+
import { DECISION_RELATIONSHIPS, DETERMINISTIC_TEMPERATURE, isDecisionRelationship, } from '@aligndottech/connector-core';
|
|
10
|
+
import { callChat, hasConfiguredProvider } from './local-llm.js';
|
|
11
|
+
// ALI-219: the canonical decision-graph vocabulary is the single source of truth
|
|
12
|
+
// (connector-core). The local classifier must only emit types the graph accepts,
|
|
13
|
+
// or a local edge is invalid on personal->org sync. Re-exported for callers/tests.
|
|
14
|
+
export const RELATIONSHIP_TYPES = DECISION_RELATIONSHIPS;
|
|
17
15
|
const SYSTEM_PROMPT = "You classify how decision B relates to decision A in a software team's decision graph. " +
|
|
18
16
|
`Respond ONLY with compact JSON: {"type": one of [${RELATIONSHIP_TYPES.join(', ')}], "confidence": number 0-1, "reason": short string}. ` +
|
|
19
17
|
'Use "conflicts_with" or "contradicts" ONLY when B genuinely opposes A - high textual similarity alone is NOT a conflict ' +
|
|
20
|
-
'(two decisions about the same topic often agree). Use "supersedes" when B replaces A, "
|
|
18
|
+
'(two decisions about the same topic often agree). Use "supersedes" when B replaces A, "relates" when merely related.';
|
|
21
19
|
function buildUserPrompt(a, b) {
|
|
22
20
|
return `Decision A: ${a.title}. ${a.summary}\n\nDecision B: ${b.title}. ${b.summary}`;
|
|
23
21
|
}
|
|
24
22
|
export async function classifyRelationship(subject, candidate) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
// ALI-218/219: pin the shared deterministic temperature so the same decision
|
|
24
|
+
// pair types the same way every run - offline relationship detection must be
|
|
25
|
+
// deterministic, and the value is the one both paths share (connector-core).
|
|
26
|
+
const raw = await callChat(SYSTEM_PROMPT, buildUserPrompt(subject, candidate), {
|
|
27
|
+
temperature: DETERMINISTIC_TEMPERATURE,
|
|
28
|
+
});
|
|
29
|
+
if (!raw) {
|
|
30
|
+
return { ok: false, reason: hasConfiguredProvider() ? 'classifier_error' : 'no_llm_key' };
|
|
31
|
+
}
|
|
32
|
+
const relationship = parseRelationship(raw);
|
|
33
|
+
return relationship ? { ok: true, relationship } : { ok: false, reason: 'classifier_unparseable' };
|
|
29
34
|
}
|
|
30
35
|
function parseRelationship(text) {
|
|
31
36
|
const match = text.match(/\{[\s\S]*\}/);
|
|
@@ -33,7 +38,8 @@ function parseRelationship(text) {
|
|
|
33
38
|
return null;
|
|
34
39
|
try {
|
|
35
40
|
const obj = JSON.parse(match[0]);
|
|
36
|
-
|
|
41
|
+
// Drop anything outside the canonical vocabulary (the graph would reject it).
|
|
42
|
+
if (!isDecisionRelationship(obj.type))
|
|
37
43
|
return null;
|
|
38
44
|
const confidence = typeof obj.confidence === 'number' ? Math.max(0, Math.min(1, obj.confidence)) : 0.5;
|
|
39
45
|
const result = { type: obj.type, confidence };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-relationship-classifier.js","sourceRoot":"","sources":["../../src/lib/local-relationship-classifier.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,kFAAkF;AAClF,kFAAkF;AAClF,
|
|
1
|
+
{"version":3,"file":"local-relationship-classifier.js","sourceRoot":"","sources":["../../src/lib/local-relationship-classifier.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,kFAAkF;AAClF,kFAAkF;AAClF,6EAA6E;AAC7E,EAAE;AACF,6EAA6E;AAC7E,kFAAkF;AAClF,uEAAuE;AAEvE,OAAO,EACL,sBAAsB,EAEtB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEjE,iFAAiF;AACjF,iFAAiF;AACjF,mFAAmF;AACnF,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAgCzD,MAAM,aAAa,GACjB,yFAAyF;IACzF,oDAAoD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,wDAAwD;IACzI,0HAA0H;IAC1H,sHAAsH,CAAC;AAEzH,SAAS,eAAe,CAAC,CAAe,EAAE,CAAe;IACvD,OAAO,eAAe,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AACxF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAqB,EACrB,SAAuB;IAEvB,6EAA6E;IAC7E,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;QAC7E,WAAW,EAAE,yBAAyB;KACvC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;IAC5F,CAAC;IACD,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC5C,OAAO,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;AACrG,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAA+D,CAAC;QAC/F,8EAA8E;QAC9E,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACnD,MAAM,UAAU,GAAG,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACvG,MAAM,MAAM,GAA2B,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;QACtE,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;YAAE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3F,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ALI-215: the "what your graph did for you" value rollup. Aggregates the gateway's
|
|
3
|
+
* per-tenant value signals into one normalized shape the status readout renders. Each
|
|
4
|
+
* source is fetched independently and a failure nulls only its own field - an old gateway
|
|
5
|
+
* missing /decisions/reuse-rate must not blank the whole readout.
|
|
6
|
+
*/
|
|
7
|
+
export interface ValueRollup {
|
|
8
|
+
decisions: number;
|
|
9
|
+
conflictsCaught: number;
|
|
10
|
+
duplicates: number;
|
|
11
|
+
supersessions: number;
|
|
12
|
+
reuseRate: number | null;
|
|
13
|
+
healthGrade: string | null;
|
|
14
|
+
}
|
|
15
|
+
export interface ValueRollupClient {
|
|
16
|
+
getStats(): Promise<{
|
|
17
|
+
snapshots?: number;
|
|
18
|
+
}>;
|
|
19
|
+
getConflictImpact(): Promise<{
|
|
20
|
+
total?: number;
|
|
21
|
+
}>;
|
|
22
|
+
getLinkCounts(): Promise<{
|
|
23
|
+
duplicates_count?: number;
|
|
24
|
+
supersessions_count?: number;
|
|
25
|
+
}>;
|
|
26
|
+
getReuseRate(): Promise<{
|
|
27
|
+
rate: number | null;
|
|
28
|
+
}>;
|
|
29
|
+
getHealth(): Promise<{
|
|
30
|
+
compositeScore?: {
|
|
31
|
+
grade?: string;
|
|
32
|
+
};
|
|
33
|
+
}>;
|
|
34
|
+
}
|
|
35
|
+
export declare function fetchValueRollup(client: ValueRollupClient): Promise<ValueRollup>;
|
|
36
|
+
/**
|
|
37
|
+
* Render the value rollup as a terminal readout. Pure string builder (no I/O) so it's
|
|
38
|
+
* unit-testable. Names value units - conflicts caught / duplicates / superseded / reuse -
|
|
39
|
+
* never "connections". The upgrade nudge is EARNED: only shown when the graph has produced
|
|
40
|
+
* real value (a conflict, duplicate, or supersession), tying the nudge to the sharing
|
|
41
|
+
* ceiling rather than a generic wall.
|
|
42
|
+
*/
|
|
43
|
+
export declare function renderValueReadout(r: ValueRollup, opts: {
|
|
44
|
+
mode: 'cloud' | 'local';
|
|
45
|
+
}): string;
|
|
46
|
+
export interface LocalRollupDb {
|
|
47
|
+
getStats(): {
|
|
48
|
+
decisions: number;
|
|
49
|
+
};
|
|
50
|
+
listLinks(filter?: {
|
|
51
|
+
relation?: string;
|
|
52
|
+
}): unknown[];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The offline honest subset: decisions + conflict/duplicate/supersession counts derivable
|
|
56
|
+
* from the local decision_links table. Reuse rate and composite health need the gateway,
|
|
57
|
+
* so they are null here - we do NOT fabricate them offline (ALI-215 decision).
|
|
58
|
+
*/
|
|
59
|
+
export declare function localValueRollup(db: LocalRollupDb): ValueRollup;
|
|
60
|
+
//# sourceMappingURL=value-rollup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value-rollup.d.ts","sourceRoot":"","sources":["../../src/lib/value-rollup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,IAAI,OAAO,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5C,iBAAiB,IAAI,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,aAAa,IAAI,OAAO,CAAC;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtF,YAAY,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACjD,SAAS,IAAI,OAAO,CAAC;QAAE,cAAc,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;CAC/D;AAUD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAiBtF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;IAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAA;CAAE,GAAG,MAAM,CAsB5F;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,IAAI;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,SAAS,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,EAAE,CAAC;CACtD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,aAAa,GAAG,WAAW,CAU/D"}
|