@aligndottech/cli 0.19.0 → 0.20.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/README.md +127 -54
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +47 -4
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/setup.js +1 -1
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/why.d.ts.map +1 -1
- package/dist/commands/why.js +16 -7
- package/dist/commands/why.js.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/lib/check-depth.d.ts +17 -0
- package/dist/lib/check-depth.d.ts.map +1 -0
- package/dist/lib/check-depth.js +16 -0
- package/dist/lib/check-depth.js.map +1 -0
- package/dist/lib/gateway-client.d.ts +2 -1
- package/dist/lib/gateway-client.d.ts.map +1 -1
- package/dist/lib/gateway-client.js +4 -0
- package/dist/lib/gateway-client.js.map +1 -1
- package/dist/lib/hook-payload.js +34 -4
- package/dist/lib/hook-payload.js.map +1 -1
- package/dist/lib/local-db.d.ts +54 -0
- package/dist/lib/local-db.d.ts.map +1 -1
- package/dist/lib/local-db.js +180 -6
- package/dist/lib/local-db.js.map +1 -1
- package/dist/lib/local-embeddings.d.ts.map +1 -1
- package/dist/lib/local-embeddings.js +13 -2
- package/dist/lib/local-embeddings.js.map +1 -1
- package/dist/lib/local-gateway-client.d.ts +37 -1
- package/dist/lib/local-gateway-client.d.ts.map +1 -1
- package/dist/lib/local-gateway-client.js +87 -9
- package/dist/lib/local-gateway-client.js.map +1 -1
- package/dist/lib/local-llm.d.ts +44 -24
- package/dist/lib/local-llm.d.ts.map +1 -1
- package/dist/lib/local-llm.js +51 -52
- package/dist/lib/local-llm.js.map +1 -1
- package/dist/lib/local-relationship-classifier.d.ts +11 -2
- package/dist/lib/local-relationship-classifier.d.ts.map +1 -1
- package/dist/lib/local-relationship-classifier.js +12 -14
- package/dist/lib/local-relationship-classifier.js.map +1 -1
- package/dist/lib/usage-telemetry.d.ts +36 -1
- package/dist/lib/usage-telemetry.d.ts.map +1 -1
- package/dist/lib/usage-telemetry.js +73 -3
- package/dist/lib/usage-telemetry.js.map +1 -1
- package/package.json +3 -1
package/dist/lib/local-llm.d.ts
CHANGED
|
@@ -56,27 +56,38 @@ export type OllamaModelChoice = {
|
|
|
56
56
|
};
|
|
57
57
|
export declare function resolveOllamaModel(installed: string[], override?: string): OllamaModelChoice;
|
|
58
58
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
59
|
+
* Why a chat produced no answer. RETURNED to the caller, never stashed in module
|
|
60
|
+
* state: the previous design recorded it in a module variable cleared at each
|
|
61
|
+
* `callChat` entry, so "the recording describes THIS call" held only while nothing
|
|
62
|
+
* ran concurrently, and it was enforced by a comment. Two overlapping calls (parallel
|
|
63
|
+
* MCP request handlers, a `Promise.all` over candidates) had one clearing the other's
|
|
64
|
+
* diagnosis, so a caller could read a sibling's failure or none at all. Returning it
|
|
65
|
+
* makes the guarantee structural - a value on the call stack cannot be clobbered.
|
|
62
66
|
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
* ALI-
|
|
67
|
+
* - `no_provider` - nothing was configured and nothing local answered.
|
|
68
|
+
* - `unrecognised_local_models` - Ollama is running and no installed model is
|
|
69
|
+
* recognised for synthesis (ALI-420). Carries the models, so a caller can name them.
|
|
70
|
+
* - `provider_stopped` - a provider WAS reached and its response was unusable, so the
|
|
71
|
+
* chain stopped rather than demoting to a weaker model (ALI-692).
|
|
66
72
|
*/
|
|
67
|
-
export
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
export interface LlmFailure {
|
|
73
|
+
export type LlmFailure = {
|
|
74
|
+
kind: 'no_provider';
|
|
75
|
+
} | {
|
|
76
|
+
kind: 'unrecognised_local_models';
|
|
77
|
+
models: string[];
|
|
78
|
+
} | {
|
|
79
|
+
kind: 'provider_stopped';
|
|
75
80
|
provider: string;
|
|
76
81
|
model: string;
|
|
77
82
|
detail: string;
|
|
78
|
-
}
|
|
79
|
-
export
|
|
83
|
+
};
|
|
84
|
+
export type ChatResult = {
|
|
85
|
+
ok: true;
|
|
86
|
+
text: string;
|
|
87
|
+
} | {
|
|
88
|
+
ok: false;
|
|
89
|
+
failure: LlmFailure;
|
|
90
|
+
};
|
|
80
91
|
/**
|
|
81
92
|
* Only failures on this allowlist may advance the fallback chain: they mean the chosen
|
|
82
93
|
* model can NEVER answer in this environment (bad key, no such model, no credit), so
|
|
@@ -86,15 +97,14 @@ export declare function getLlmFailure(): LlmFailure | null;
|
|
|
86
97
|
* caller trusts as if the chosen model wrote it. Deliberately conservative (ALI-692).
|
|
87
98
|
*/
|
|
88
99
|
export declare function isAvailabilityFailure(status: number, body: string): boolean;
|
|
89
|
-
/** Test seam: clears both recordings above between cases. */
|
|
90
|
-
export declare function resetLlmDiagnostics(): void;
|
|
91
100
|
/**
|
|
92
101
|
* Is any LLM provider configured by environment? (ALI-414)
|
|
93
102
|
*
|
|
94
103
|
* `callChat` returns null for a missing key and for a provider that answered unusably
|
|
95
104
|
* alike, so a caller that needs to tell "never configured" from "configured but
|
|
96
|
-
* failed" has to ask - this, then
|
|
97
|
-
* one this function cannot see. Deliberately synchronous and
|
|
105
|
+
* failed" has to ask - this, then the failure `callChatDetailed` returned for the
|
|
106
|
+
* second case, which is the one this function cannot see. Deliberately synchronous and
|
|
107
|
+
* env-only: it does NOT probe Ollama, so a
|
|
98
108
|
* machine whose only provider is a broken local Ollama reads as unconfigured. The
|
|
99
109
|
* remedy that points at - configure a provider - is still the right one.
|
|
100
110
|
*/
|
|
@@ -106,15 +116,25 @@ export declare function hasConfiguredProvider(): boolean;
|
|
|
106
116
|
* Together, DeepSeek, LM Studio, vLLM, ...) via ALIGN_LLM_MODEL/ALIGN_LLM_API_KEY
|
|
107
117
|
* 3. named providers by env key (Anthropic, OpenAI, Gemini, Groq, Mistral, Grok)
|
|
108
118
|
* 4. local Ollama (no key)
|
|
109
|
-
* Returns the model's text, or
|
|
119
|
+
* Returns the model's text, or the reason there is none - see LlmFailure. The reason
|
|
120
|
+
* is RETURNED rather than recorded in module state, so concurrent calls cannot read
|
|
121
|
+
* each other's diagnosis.
|
|
110
122
|
*
|
|
111
123
|
* ALI-692: only an availability-class failure advances that chain (see
|
|
112
|
-
* isAvailabilityFailure). Anything else - the chosen model answering unusably, a
|
|
113
|
-
*
|
|
114
|
-
*
|
|
124
|
+
* isAvailabilityFailure). Anything else - the chosen model answering unusably, a rate
|
|
125
|
+
* limit, a 5xx - stops it, so the caller can name the model that failed instead of a
|
|
126
|
+
* weaker one answering in its place.
|
|
115
127
|
*/
|
|
128
|
+
export declare function callChatDetailed(system: string, user: string, opts?: CallChatOptions): Promise<ChatResult>;
|
|
129
|
+
/** Text-only convenience wrapper. Use callChatDetailed when you need to say WHY. */
|
|
116
130
|
export declare function callChat(system: string, user: string, opts?: CallChatOptions): Promise<string | null>;
|
|
117
131
|
/** Synthesise a natural-language answer from retrieved decisions, using any configured provider. */
|
|
132
|
+
export declare function synthesiseDetailed(question: string, decisions: Array<{
|
|
133
|
+
id: string;
|
|
134
|
+
title: string;
|
|
135
|
+
summary: string;
|
|
136
|
+
}>, options?: LocalLlmOptions): Promise<ChatResult>;
|
|
137
|
+
/** Text-only wrapper on synthesiseDetailed, for callers that cannot use the reason. */
|
|
118
138
|
export declare function synthesiseLocally(question: string, decisions: Array<{
|
|
119
139
|
id: string;
|
|
120
140
|
title: string;
|
|
@@ -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;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,uBAAuB,QAMmD,CAAC;AAoMxF;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAOlD,CAAC;AAyBF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAElD,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,qBAAqB,CAAA;CAAE,CAAC;AA+B/D,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAoB5F;
|
|
1
|
+
{"version":3,"file":"local-llm.d.ts","sourceRoot":"","sources":["../../src/lib/local-llm.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/local-llm.js
CHANGED
|
@@ -259,23 +259,6 @@ export function resolveOllamaModel(installed, override) {
|
|
|
259
259
|
}
|
|
260
260
|
return { ok: false, reason: 'no_recognised_model' };
|
|
261
261
|
}
|
|
262
|
-
let unvettedOllamaModels = null;
|
|
263
|
-
/**
|
|
264
|
-
* The models Ollama had when it declined to answer for want of a vetted one (ALI-420),
|
|
265
|
-
* or null when that did not happen. Read it on the failure branch to say WHY there was
|
|
266
|
-
* no answer, the same way `hasConfiguredProvider()` is read there.
|
|
267
|
-
*
|
|
268
|
-
* Recorded rather than re-probed: `tryOllama` has already fetched `/api/tags`.
|
|
269
|
-
* Cleared at every callChat entry (a chain stop can end the run before step 4 - see
|
|
270
|
-
* ALI-692), so whenever a caller asks, the recording is from this run.
|
|
271
|
-
*/
|
|
272
|
-
export function getUnvettedOllamaModels() {
|
|
273
|
-
return unvettedOllamaModels;
|
|
274
|
-
}
|
|
275
|
-
let llmFailure = null;
|
|
276
|
-
export function getLlmFailure() {
|
|
277
|
-
return llmFailure;
|
|
278
|
-
}
|
|
279
262
|
/**
|
|
280
263
|
* Error-body wordings that mean PERMANENT: this key or this model cannot answer here
|
|
281
264
|
* however many times we ask. Providers report several of these on statuses outside
|
|
@@ -341,20 +324,11 @@ export function isAvailabilityFailure(status, body) {
|
|
|
341
324
|
const text = providerErrorText(body);
|
|
342
325
|
return AVAILABILITY_BODY_PATTERNS.some(p => p.test(text));
|
|
343
326
|
}
|
|
344
|
-
/** Test seam: clears both recordings above between cases. */
|
|
345
|
-
export function resetLlmDiagnostics() {
|
|
346
|
-
unvettedOllamaModels = null;
|
|
347
|
-
llmFailure = null;
|
|
348
|
-
}
|
|
349
327
|
async function tryOllama(system, user, temperature) {
|
|
350
328
|
// `||`, not `??`: OLLAMA_HOST='' (a stock .env template, an unset compose variable)
|
|
351
329
|
// would otherwise make every probe a relative URL that fetch cannot parse, so a
|
|
352
330
|
// healthy local Ollama is never asked and the user is told to configure a key.
|
|
353
331
|
const host = process.env['OLLAMA_HOST'] || 'http://localhost:11434';
|
|
354
|
-
// Clear first, so the recording always describes THIS attempt. Without it a refusal
|
|
355
|
-
// from an earlier call in the same process outlives its cause, and a later failure
|
|
356
|
-
// with a different cause inherits the wrong diagnosis.
|
|
357
|
-
unvettedOllamaModels = null;
|
|
358
332
|
// The /api/tags probe is discovery, not a model answering: every way it can fail
|
|
359
333
|
// (not running, no models, nothing recognised) means "no usable model here".
|
|
360
334
|
let model;
|
|
@@ -368,9 +342,11 @@ async function tryOllama(system, user, temperature) {
|
|
|
368
342
|
return { kind: 'unavailable', detail: 'no models installed' };
|
|
369
343
|
const choice = resolveOllamaModel(models, process.env['ALIGN_OLLAMA_MODEL']);
|
|
370
344
|
if (!choice.ok) {
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
return
|
|
345
|
+
// The models travel WITH the outcome, so the caller that asked gets them - see
|
|
346
|
+
// LlmFailure. A module variable here could be cleared by a concurrent call.
|
|
347
|
+
return choice.reason === 'no_recognised_model'
|
|
348
|
+
? { kind: 'unavailable', detail: choice.reason, unrecognisedModels: models }
|
|
349
|
+
: { kind: 'unavailable', detail: choice.reason };
|
|
374
350
|
}
|
|
375
351
|
model = choice.model;
|
|
376
352
|
}
|
|
@@ -446,8 +422,9 @@ const ALL_PROVIDERS = ['anthropic', 'openai', 'gemini', 'groq', 'mistral', 'grok
|
|
|
446
422
|
*
|
|
447
423
|
* `callChat` returns null for a missing key and for a provider that answered unusably
|
|
448
424
|
* alike, so a caller that needs to tell "never configured" from "configured but
|
|
449
|
-
* failed" has to ask - this, then
|
|
450
|
-
* one this function cannot see. Deliberately synchronous and
|
|
425
|
+
* failed" has to ask - this, then the failure `callChatDetailed` returned for the
|
|
426
|
+
* second case, which is the one this function cannot see. Deliberately synchronous and
|
|
427
|
+
* env-only: it does NOT probe Ollama, so a
|
|
451
428
|
* machine whose only provider is a broken local Ollama reads as unconfigured. The
|
|
452
429
|
* remedy that points at - configure a provider - is still the right one.
|
|
453
430
|
*/
|
|
@@ -463,36 +440,41 @@ export function hasConfiguredProvider() {
|
|
|
463
440
|
* Together, DeepSeek, LM Studio, vLLM, ...) via ALIGN_LLM_MODEL/ALIGN_LLM_API_KEY
|
|
464
441
|
* 3. named providers by env key (Anthropic, OpenAI, Gemini, Groq, Mistral, Grok)
|
|
465
442
|
* 4. local Ollama (no key)
|
|
466
|
-
* Returns the model's text, or
|
|
443
|
+
* Returns the model's text, or the reason there is none - see LlmFailure. The reason
|
|
444
|
+
* is RETURNED rather than recorded in module state, so concurrent calls cannot read
|
|
445
|
+
* each other's diagnosis.
|
|
467
446
|
*
|
|
468
447
|
* ALI-692: only an availability-class failure advances that chain (see
|
|
469
|
-
* isAvailabilityFailure). Anything else - the chosen model answering unusably, a
|
|
470
|
-
*
|
|
471
|
-
*
|
|
448
|
+
* isAvailabilityFailure). Anything else - the chosen model answering unusably, a rate
|
|
449
|
+
* limit, a 5xx - stops it, so the caller can name the model that failed instead of a
|
|
450
|
+
* weaker one answering in its place.
|
|
472
451
|
*/
|
|
473
|
-
export async function
|
|
452
|
+
export async function callChatDetailed(system, user, opts) {
|
|
474
453
|
const maxTokens = opts?.maxTokens;
|
|
475
454
|
const temperature = opts?.temperature;
|
|
476
|
-
//
|
|
477
|
-
//
|
|
478
|
-
//
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
unvettedOllamaModels = null;
|
|
482
|
-
// An answer or a stop returns a value; availability returns undefined = advance.
|
|
455
|
+
// The most specific unavailability seen while walking the chain. Only Ollama can
|
|
456
|
+
// produce one today, and it is a local (not module) variable, so a sibling call
|
|
457
|
+
// cannot clear it mid-flight - which is the whole point of this shape.
|
|
458
|
+
let unrecognised;
|
|
459
|
+
// An answer or a stop settles the chain; availability advances it (undefined).
|
|
483
460
|
const settle = (outcome, provider) => {
|
|
484
461
|
if (outcome.kind === 'answer')
|
|
485
|
-
return outcome.text;
|
|
462
|
+
return { ok: true, text: outcome.text };
|
|
486
463
|
if (outcome.kind === 'failed') {
|
|
487
|
-
|
|
488
|
-
return null;
|
|
464
|
+
return { ok: false, failure: { kind: 'provider_stopped', provider, model: outcome.model, detail: outcome.detail } };
|
|
489
465
|
}
|
|
466
|
+
// Narrowed to `unavailable` by the two returns above, so reading its own field
|
|
467
|
+
// needs no guard. Deliberately left to exhaustion rather than an explicit
|
|
468
|
+
// `kind === 'unavailable'` check: a fourth AdapterOutcome variant would make this
|
|
469
|
+
// line a type error, where an explicit check would silently route it to advance.
|
|
470
|
+
if (outcome.unrecognisedModels)
|
|
471
|
+
unrecognised = outcome.unrecognisedModels;
|
|
490
472
|
return undefined;
|
|
491
473
|
};
|
|
492
474
|
// 1. configured provider (from align setup) takes priority
|
|
493
475
|
if (opts?.provider && opts.apiKey) {
|
|
494
476
|
const settled = settle(await callProvider(opts.provider, opts.apiKey, system, user, maxTokens, temperature), opts.provider);
|
|
495
|
-
if (settled
|
|
477
|
+
if (settled)
|
|
496
478
|
return settled;
|
|
497
479
|
}
|
|
498
480
|
// 2. generic OpenAI-compatible escape hatch - covers any provider
|
|
@@ -501,7 +483,7 @@ export async function callChat(system, user, opts) {
|
|
|
501
483
|
const key = process.env['ALIGN_LLM_API_KEY'] ?? '';
|
|
502
484
|
const model = process.env['ALIGN_LLM_MODEL'] || 'gpt-4o-mini';
|
|
503
485
|
const settled = settle(await tryOpenAiCompatible(system, user, chatCompletionsUrl(baseUrl), model, key, maxTokens, undefined, temperature), 'custom');
|
|
504
|
-
if (settled
|
|
486
|
+
if (settled)
|
|
505
487
|
return settled;
|
|
506
488
|
}
|
|
507
489
|
// 3. named providers via env keys, in priority order
|
|
@@ -511,16 +493,33 @@ export async function callChat(system, user, opts) {
|
|
|
511
493
|
const key = keyForProvider(provider);
|
|
512
494
|
if (key) {
|
|
513
495
|
const settled = settle(await callProvider(provider, key, system, user, maxTokens, temperature), provider);
|
|
514
|
-
if (settled
|
|
496
|
+
if (settled)
|
|
515
497
|
return settled;
|
|
516
498
|
}
|
|
517
499
|
}
|
|
518
500
|
// 4. local Ollama as last resort
|
|
519
|
-
|
|
501
|
+
const settled = settle(await tryOllama(system, user, temperature), 'ollama');
|
|
502
|
+
if (settled)
|
|
503
|
+
return settled;
|
|
504
|
+
// Nothing answered. An unrecognised local model is the more specific diagnosis and
|
|
505
|
+
// its remedy is the opposite of "configure a provider", so it wins (ALI-420).
|
|
506
|
+
return unrecognised
|
|
507
|
+
? { ok: false, failure: { kind: 'unrecognised_local_models', models: unrecognised } }
|
|
508
|
+
: { ok: false, failure: { kind: 'no_provider' } };
|
|
509
|
+
}
|
|
510
|
+
/** Text-only convenience wrapper. Use callChatDetailed when you need to say WHY. */
|
|
511
|
+
export async function callChat(system, user, opts) {
|
|
512
|
+
const result = await callChatDetailed(system, user, opts);
|
|
513
|
+
return result.ok ? result.text : null;
|
|
520
514
|
}
|
|
521
515
|
/** Synthesise a natural-language answer from retrieved decisions, using any configured provider. */
|
|
522
|
-
export async function
|
|
516
|
+
export async function synthesiseDetailed(question, decisions, options) {
|
|
523
517
|
const user = buildUserPrompt(question, decisions);
|
|
524
|
-
return
|
|
518
|
+
return callChatDetailed(SYNTHESIS_SYSTEM_PROMPT, user, { provider: options?.provider, apiKey: options?.apiKey });
|
|
519
|
+
}
|
|
520
|
+
/** Text-only wrapper on synthesiseDetailed, for callers that cannot use the reason. */
|
|
521
|
+
export async function synthesiseLocally(question, decisions, options) {
|
|
522
|
+
const result = await synthesiseDetailed(question, decisions, options);
|
|
523
|
+
return result.ok ? result.text : null;
|
|
525
524
|
}
|
|
526
525
|
//# sourceMappingURL=local-llm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-llm.js","sourceRoot":"","sources":["../../src/lib/local-llm.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local-llm.js","sourceRoot":"","sources":["../../src/lib/local-llm.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAClC,6FAA6F;IAC7F,mFAAmF;IACnF,qHAAqH;IACrH,wIAAwI;IACxI,8GAA8G;IAC9G,qFAAqF,CAAC;AAExF,SAAS,eAAe,CACtB,QAAgB,EAChB,SAAgE;IAEhE,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxE,OAAO,aAAa,QAAQ,0BAA0B,GAAG,EAAE,CAAC;AAC9D,CAAC;AAeD,qFAAqF;AACrF,KAAK,UAAU,mBAAmB,CAAC,GAAa,EAAE,KAAa;IAC7D,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;IACpC,mFAAmF;IACnF,kFAAkF;IAClF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACnE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;IACzC,CAAC;IACD,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;IACD,OAAO,qBAAqB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;QAC5C,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE;QACjC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,GAAY,EAAE,KAAa;IACtD,MAAM,IAAI,GAAI,GAAqC,EAAE,IAAI,CAAC;IAC1D,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QACrD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,sFAAsF;AACtF,gFAAgF;AAChF,+EAA+E;AAC/E,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,oBAAoB,CACjC,GAAa,EACb,KAAa,EACb,OAAwC;IAExC,IAAI,IAAO,CAAC;IACZ,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAO,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACtE,CAAC;IACD,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;AAC/F,CAAC;AAED,mFAAmF;AACnF,uFAAuF;AACvF,KAAK,UAAU,mBAAmB,CAChC,MAAc,EACd,IAAY,EACZ,QAAgB,EAChB,KAAa,EACb,GAAW,EACX,SAAS,GAAG,GAAG,EACf,SAAS,GAAG,KAAK,EACjB,WAAoB;IAEpB,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YAC1B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,GAAG,EAAE;aACjC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK;gBACL,UAAU,EAAE,SAAS;gBACrB,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,QAAQ,EAAE;oBACR,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;oBACnC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;iBAChC;aACF,CAAC;YACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpD,OAAO,oBAAoB,CACzB,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,MAAc,EACd,IAAY,EACZ,GAAW,EACX,SAAS,GAAG,GAAG,EACf,WAAoB;IAEpB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,2BAA2B,CAAC;IAClF,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,KAAK,CAAC,uCAAuC,EAAE;YACzD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,WAAW,EAAE,GAAG;gBAChB,mBAAmB,EAAE,YAAY;aAClC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK;gBACL,UAAU,EAAE,SAAS;gBACrB,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,MAAM;gBACN,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;aAC5C,CAAC;YACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;SACnC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpD,oFAAoF;IACpF,qFAAqF;IACrF,mDAAmD;IACnD,OAAO,oBAAoB,CACzB,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACjE,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,MAAc,EACd,IAAY,EACZ,GAAW,EACX,SAAS,GAAG,GAAG,EACf,WAAoB;IAEpB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,kBAAkB,CAAC;IAC5E,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,KAAK,CACf,2DAA2D,WAAW,wBAAwB,GAAG,EAAE,EACnG;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE;gBAChD,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBACvC,gBAAgB,EAAE;oBAChB,eAAe,EAAE,SAAS;oBAC1B,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACtD;aACF,CAAC;YACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;SACnC,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,mBAAmB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,mBAAmB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC1D,yEAAyE;IACzE,OAAO,oBAAoB,CACzB,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/F,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,gBAAgB;IAChB,kBAAkB;IAClB,gBAAgB;IAChB,cAAc;IACd,eAAe;IACf,qBAAqB;CACtB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,2BAA2B,GAAG,0DAA0D,CAAC;AAE/F;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;AACvC,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAY,EAAE,MAAc;IAC3D,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC;AAMlD;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;IACjF,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACxC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,kFAAkF;AAClF,SAAS,sBAAsB,CAAC,IAAY;IAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC5C,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,gFAAgF;AAChF,SAAS,sBAAsB,CAAC,CAAW,EAAE,CAAW;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAmB,EAAE,QAAiB;IACvE,kFAAkF;IAClF,0CAA0C;IAC1C,IAAI,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACnD,IAAI,CAAC,SAAS,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACjE,mFAAmF;IACnF,kFAAkF;IAClF,KAAK,MAAM,MAAM,IAAI,qBAAqB,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,SAAS;QAC9B,kFAAkF;QAClF,gFAAgF;QAChF,6EAA6E;QAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACpB,sBAAsB,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;eACrE,sBAAsB,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC;eACrD,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAE,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;AACtD,CAAC;AA0BD;;;;;;;;;;GAUG;AACH,MAAM,0BAA0B,GAAG;IACjC,kBAAkB;IAClB,sCAAsC;IACtC,0BAA0B;IAC1B,kCAAkC;IAClC,0CAA0C;IAC1C,iCAAiC;IACjC,iCAAiC;IACjC,2DAA2D;IAC3D,mCAAmC;IACnC,oBAAoB;IACpB,sBAAsB;IACtB,yBAAyB;IACzB,4BAA4B;IAC5B,oCAAoC;CACrC,CAAC;AAEF;;;;;;;;;GASG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;QAC3C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC/D,MAAM,GAAG,GAAI,MAA8B,CAAC,KAAK,CAAC;QAClD,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACnC,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,IAAY;IAChE,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACpE,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,CAAC;AAGD,KAAK,UAAU,SAAS,CACtB,MAAc,EACd,IAAY,EACZ,WAAoB;IAEpB,oFAAoF;IACpF,gFAAgF;IAChF,+EAA+E;IAC/E,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,wBAAwB,CAAC;IAEpE,iFAAiF;IACjF,6EAA6E;IAC7E,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,WAAW,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;QAC7E,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAA0C,CAAC;QAC1E,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;QAClF,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,+EAA+E;YAC/E,4EAA4E;YAC5E,OAAO,MAAM,CAAC,MAAM,KAAK,qBAAqB;gBAC5C,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE;gBAC5E,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QACrD,CAAC;QACD,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,WAAW,EAAE;YACpC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK;gBACL,MAAM,EAAE,KAAK;gBACb,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,QAAQ,EAAE;oBACR,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;oBACnC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;iBAChC;aACF,CAAC;YACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;SACnC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,oFAAoF;QACpF,kFAAkF;QAClF,iFAAiF;QACjF,gFAAgF;QAChF,2CAA2C;QAC3C,MAAM,IAAI,GAAI,GAAqC,EAAE,IAAI,CAAC;QAC1D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAC3H,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;IAC5E,OAAO,oBAAoB,CACzB,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,kEAAkE;AAClE,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,mBAAmB,CAAC;AACzF,CAAC;AAED,SAAS,cAAc,CAAC,QAAoB;IAC1C,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,WAAW,CAAC,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAC1D,KAAK,QAAQ,CAAC,CAAI,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACvD,qFAAqF;QACrF,0EAA0E;QAC1E,KAAK,QAAQ,CAAC,CAAI,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACxF,KAAK,MAAM,CAAC,CAAM,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACrD,KAAK,SAAS,CAAC,CAAG,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACxD,KAAK,MAAM,CAAC,CAAM,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACrF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,QAAoB,EACpB,GAAW,EACX,MAAc,EACd,IAAY,EACZ,SAAkB,EAClB,WAAoB;IAEpB,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACjE,KAAK,QAAQ;YACX,OAAO,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,4CAA4C,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,aAAa,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACrL,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC9D,KAAK,MAAM;YACT,OAAO,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,iDAAiD,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,sBAAsB,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACjM,KAAK,SAAS;YACZ,OAAO,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,4CAA4C,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,sBAAsB,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC/L,KAAK,MAAM;YACT,OAAO,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,sCAAsC,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,eAAe,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACjL,CAAC;AACH,CAAC;AAED,MAAM,aAAa,GAAiB,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAEjG;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB;IACnC,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAc,EACd,IAAY,EACZ,IAAsB;IAEtB,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,CAAC;IAClC,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,CAAC;IAEtC,iFAAiF;IACjF,gFAAgF;IAChF,uEAAuE;IACvE,IAAI,YAAkC,CAAC;IAEvC,+EAA+E;IAC/E,MAAM,MAAM,GAAG,CAAC,OAAuB,EAAE,QAAgB,EAA0B,EAAE;QACnF,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QACvE,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACtH,CAAC;QACD,+EAA+E;QAC/E,0EAA0E;QAC1E,kFAAkF;QAClF,iFAAiF;QACjF,IAAI,OAAO,CAAC,kBAAkB;YAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;QAC1E,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,2DAA2D;IAC3D,IAAI,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,CACpB,MAAM,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EACpF,IAAI,CAAC,QAAQ,CACd,CAAC;QACF,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;IAC9B,CAAC;IAED,kEAAkE;IAClE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,aAAa,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,CACpB,MAAM,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,EACnH,QAAQ,CACT,CAAC;QACF,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;IAC9B,CAAC;IAED,qDAAqD;IACrD,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,IAAI,IAAI,EAAE,QAAQ,KAAK,QAAQ;YAAE,SAAS,CAAC,sBAAsB;QACjE,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,OAAO,GAAG,MAAM,CACpB,MAAM,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EACvE,QAAQ,CACT,CAAC;YACF,IAAI,OAAO;gBAAE,OAAO,OAAO,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7E,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,mFAAmF;IACnF,8EAA8E;IAC9E,OAAO,YAAY;QACjB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE;QACrF,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC;AACtD,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAc,EACd,IAAY,EACZ,IAAsB;IAEtB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAED,oGAAoG;AACpG,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,SAAgE,EAChE,OAAyB;IAEzB,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAClD,OAAO,gBAAgB,CAAC,uBAAuB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AACnH,CAAC;AAED,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAgB,EAChB,SAAgE,EAChE,OAAyB;IAEzB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type DecisionRelationship } from '@aligndottech/connector-core';
|
|
2
|
+
import { type LlmFailure } from './local-llm.js';
|
|
2
3
|
export declare const RELATIONSHIP_TYPES: readonly ["supersedes", "conflicts_with", "contradicts", "duplicates", "clarifies", "relates", "refines", "supports", "questions", "blocks"];
|
|
3
4
|
export type RelationshipType = DecisionRelationship;
|
|
4
5
|
export interface ClassifiedRelationship {
|
|
@@ -9,7 +10,7 @@ export interface ClassifiedRelationship {
|
|
|
9
10
|
/**
|
|
10
11
|
* Why a candidate edge could not be typed. This enum stays coarse on purpose: since
|
|
11
12
|
* ALI-692 `callChat` CAN tell a timeout from a 429 from an empty body, but the finer
|
|
12
|
-
* detail travels on `
|
|
13
|
+
* detail travels on the outcome's `failure` (provider, model, detail) rather than by adding
|
|
13
14
|
* a reason per failure mode, so presenters name the model without this union growing
|
|
14
15
|
* a member every time a provider invents a new way to fail.
|
|
15
16
|
*/
|
|
@@ -29,9 +30,17 @@ export type ClassifierFailureReason =
|
|
|
29
30
|
export type ClassificationOutcome = {
|
|
30
31
|
ok: true;
|
|
31
32
|
relationship: ClassifiedRelationship;
|
|
32
|
-
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* `failure` carries WHICH provider and model failed, when one did. It is on the
|
|
36
|
+
* value rather than on a module getter so a presenter reads the diagnosis for the
|
|
37
|
+
* candidate it actually asked about - the reason `align check` could previously
|
|
38
|
+
* report classifier_error with no remedy attached.
|
|
39
|
+
*/
|
|
40
|
+
| {
|
|
33
41
|
ok: false;
|
|
34
42
|
reason: ClassifierFailureReason;
|
|
43
|
+
failure?: LlmFailure;
|
|
35
44
|
};
|
|
36
45
|
interface DecisionLite {
|
|
37
46
|
title: string;
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAEtC,OAAO,EAA2C,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAK1F,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;;;;;;GAMG;AACH,MAAM,MAAM,uBAAuB;AACjC,4EAA4E;AAC1E,YAAY;AACd,sEAAsE;GACpE,kBAAkB;AACpB,sFAAsF;GACpF,wBAAwB;AAC1B;;;;GAIG;GACD,sBAAsB,CAAC;AAE3B,MAAM,MAAM,qBAAqB,GAC7B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,YAAY,EAAE,sBAAsB,CAAA;CAAE;AACpD;;;;;GAKG;GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,uBAAuB,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzE,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAYD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,YAAY,GACtB,OAAO,CAAC,qBAAqB,CAAC,CAoBhC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// returned a bare null for all three causes, and the caller - unable to tell them
|
|
8
8
|
// apart, or apart from "classified, no conflict" - reported `aligned`.
|
|
9
9
|
import { DECISION_RELATIONSHIPS, DETERMINISTIC_TEMPERATURE, isDecisionRelationship, } from '@aligndottech/connector-core';
|
|
10
|
-
import {
|
|
10
|
+
import { callChatDetailed, hasConfiguredProvider } from './local-llm.js';
|
|
11
11
|
// ALI-219: the canonical decision-graph vocabulary is the single source of truth
|
|
12
12
|
// (connector-core). The local classifier must only emit types the graph accepts,
|
|
13
13
|
// or a local edge is invalid on personal->org sync. Re-exported for callers/tests.
|
|
@@ -30,22 +30,20 @@ export async function classifyRelationship(subject, candidate) {
|
|
|
30
30
|
// ALI-218/219: pin the shared deterministic temperature so the same decision
|
|
31
31
|
// pair types the same way every run - offline relationship detection must be
|
|
32
32
|
// deterministic, and the value is the one both paths share (connector-core).
|
|
33
|
-
const
|
|
33
|
+
const result = await callChatDetailed(SYSTEM_PROMPT, buildUserPrompt(subject, candidate), {
|
|
34
34
|
temperature: DETERMINISTIC_TEMPERATURE,
|
|
35
35
|
});
|
|
36
|
-
if (!
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const reason = getLlmFailure() || hasConfiguredProvider() ? 'classifier_error' : 'no_llm_key';
|
|
46
|
-
return { ok: false, reason };
|
|
36
|
+
if (!result.ok) {
|
|
37
|
+
// Each mapping below reads the failure the call RETURNED, so it describes this
|
|
38
|
+
// candidate's attempt and nothing else. `hasConfiguredProvider()` is still the
|
|
39
|
+
// tiebreak for no_provider, because it is env-only and so is the only thing that
|
|
40
|
+
// can tell "keys exist but every one was rejected" from "nothing is configured".
|
|
41
|
+
const reason = result.failure.kind === 'unrecognised_local_models' ? 'unvetted_local_model'
|
|
42
|
+
: result.failure.kind === 'provider_stopped' ? 'classifier_error'
|
|
43
|
+
: hasConfiguredProvider() ? 'classifier_error' : 'no_llm_key';
|
|
44
|
+
return { ok: false, reason, failure: result.failure };
|
|
47
45
|
}
|
|
48
|
-
const relationship = parseRelationship(
|
|
46
|
+
const relationship = parseRelationship(result.text);
|
|
49
47
|
return relationship ? { ok: true, relationship } : { ok: false, reason: 'classifier_unparseable' };
|
|
50
48
|
}
|
|
51
49
|
function parseRelationship(text) {
|
|
@@ -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,6EAA6E;AAC7E,EAAE;AACF,6EAA6E;AAC7E,kFAAkF;AAClF,uEAAuE;AAEvE,OAAO,EACL,sBAAsB,EAEtB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"local-relationship-classifier.js","sourceRoot":"","sources":["../../src/lib/local-relationship-classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,43 @@ import type { EnvironmentConfig } from './config.js';
|
|
|
8
8
|
* contact us and have no tenant, so counting them needs an explicit consent flow and its own
|
|
9
9
|
* storage (`telemetry_events.tenant_id` is `NOT NULL REFERENCES tenants(id)`).
|
|
10
10
|
*
|
|
11
|
-
* Set `ALIGN_TELEMETRY=0` to opt out entirely.
|
|
11
|
+
* Set `ALIGN_TELEMETRY=0` (or `false` / `no` / `off`) to opt out entirely.
|
|
12
12
|
*/
|
|
13
13
|
export declare const TELEMETRY_TIMEOUT_MS = 2000;
|
|
14
14
|
export declare function recordCommandUsage(env: EnvironmentConfig, command: string): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* The `--env` the user actually typed, including one Commander handed to a parent.
|
|
17
|
+
*
|
|
18
|
+
* `align import git --env local` leaves the subcommand's own `opts()` empty, because `--env`
|
|
19
|
+
* is declared on both and Commander resolves that in the parent's favour (align-cli#79, which
|
|
20
|
+
* fixed the same read for the import commands via subcommandOpts). Reading `.opts()` here
|
|
21
|
+
* would send a local command's event to the cloud default - this slice's own bug, one layer up.
|
|
22
|
+
*/
|
|
23
|
+
export declare function envFlagOf(cmd: {
|
|
24
|
+
optsWithGlobals(): Record<string, unknown>;
|
|
25
|
+
}): string | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Resolve the env the command actually addressed, then report against THAT.
|
|
28
|
+
*
|
|
29
|
+
* The postAction hook used to hand over `getEnvironment(getDefaultEnv())`, and
|
|
30
|
+
* `align setup --local` deliberately leaves the default env alone (local-mode.ts), so a
|
|
31
|
+
* machine that had ever run `align login` reported every `ask --env local` to the cloud -
|
|
32
|
+
* the one thing PR #77 said local mode does not do. Only the three-member `local` command
|
|
33
|
+
* group was excluded, and no local user types `align local ask`.
|
|
34
|
+
*
|
|
35
|
+
* `preferLocalEmbedded` is deliberately NOT passed: it is a routing preference for the
|
|
36
|
+
* read commands, and asking for it here would be a second opinion on where the command
|
|
37
|
+
* went. The flag and ALIGN_ENV are what the user chose explicitly, and those are what a
|
|
38
|
+
* consent decision may rest on. Note that preference and this gate are today mutually
|
|
39
|
+
* exclusive by arithmetic rather than by design - the redirect fires only when the cloud env
|
|
40
|
+
* has no token, which is the same condition recordCommandUsage returns on - so if that token
|
|
41
|
+
* check is ever relaxed to count tokenless users, pass the preference here as well.
|
|
42
|
+
*
|
|
43
|
+
* `setup` is suppressed once local-embedded is configured. The interactive "Local only" choice
|
|
44
|
+
* sets no flag, and the default env stays cloud on purpose, so the only evidence the session was
|
|
45
|
+
* local is what the run left behind - and a `setup` that ends with the machine in local mode is
|
|
46
|
+
* a local session. It costs one activation count on a once-per-machine command, in the direction
|
|
47
|
+
* that cannot leak.
|
|
48
|
+
*/
|
|
49
|
+
export declare function recordInvocationUsage(envFlag: string | undefined, command: string): Promise<void>;
|
|
15
50
|
//# sourceMappingURL=usage-telemetry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-telemetry.d.ts","sourceRoot":"","sources":["../../src/lib/usage-telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,OAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"usage-telemetry.d.ts","sourceRoot":"","sources":["../../src/lib/usage-telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,OAAQ,CAAC;AAiB1C,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkD/F;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE;IAAE,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,MAAM,GAAG,SAAS,CASjG;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAMf"}
|
|
@@ -7,17 +7,36 @@
|
|
|
7
7
|
* contact us and have no tenant, so counting them needs an explicit consent flow and its own
|
|
8
8
|
* storage (`telemetry_events.tenant_id` is `NOT NULL REFERENCES tenants(id)`).
|
|
9
9
|
*
|
|
10
|
-
* Set `ALIGN_TELEMETRY=0` to opt out entirely.
|
|
10
|
+
* Set `ALIGN_TELEMETRY=0` (or `false` / `no` / `off`) to opt out entirely.
|
|
11
11
|
*/
|
|
12
12
|
export const TELEMETRY_TIMEOUT_MS = 2_000;
|
|
13
|
+
/**
|
|
14
|
+
* Set and not recognisably ON means OFF. Enumerating the falsy words instead - `0|false|no|off` -
|
|
15
|
+
* guesses at what a user will type, and every guess that misses is a live send by someone who
|
|
16
|
+
* believes they opted out: `disabled` and `n` both sent. Trimmed, because a trailing space or
|
|
17
|
+
* newline comes free from a `.env` file or a here-doc. Unset is ON, which is the documented
|
|
18
|
+
* cloud default and the only value this cannot see.
|
|
19
|
+
*/
|
|
20
|
+
const OPT_IN_VALUES = new Set(['1', 'true', 'yes', 'on']);
|
|
21
|
+
function telemetryOptedOut() {
|
|
22
|
+
const raw = process.env['ALIGN_TELEMETRY'];
|
|
23
|
+
if (raw === undefined || raw.trim() === '')
|
|
24
|
+
return false;
|
|
25
|
+
return !OPT_IN_VALUES.has(raw.trim().toLowerCase());
|
|
26
|
+
}
|
|
13
27
|
export async function recordCommandUsage(env, command) {
|
|
14
|
-
if (
|
|
28
|
+
if (telemetryOptedOut())
|
|
15
29
|
return;
|
|
16
30
|
// `align local ...` is the explicitly-offline path. Its caller may still hold a cloud token
|
|
17
|
-
// (the hook
|
|
31
|
+
// (the hook may resolve an env other than the one the command used), so the token check below
|
|
18
32
|
// is not enough on its own.
|
|
19
33
|
if (command === 'local' || command.startsWith('local '))
|
|
20
34
|
return;
|
|
35
|
+
// The mode is the consent boundary (PR #77: cloud is opt-out, local is no-phone-home). It has
|
|
36
|
+
// to gate on its own because a token can be in scope without cloud consent: ALIGN_TOKEN
|
|
37
|
+
// exported into the shell, or a logged-in default env resolved by the caller.
|
|
38
|
+
if (env.mode === 'local-embedded')
|
|
39
|
+
return;
|
|
21
40
|
if (!env.authToken || !env.tenantId)
|
|
22
41
|
return;
|
|
23
42
|
// A blackholing proxy hangs rather than rejecting, so a bare await would freeze the CLI after
|
|
@@ -60,4 +79,55 @@ export async function recordCommandUsage(env, command) {
|
|
|
60
79
|
clearTimeout(timer);
|
|
61
80
|
}
|
|
62
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* The `--env` the user actually typed, including one Commander handed to a parent.
|
|
84
|
+
*
|
|
85
|
+
* `align import git --env local` leaves the subcommand's own `opts()` empty, because `--env`
|
|
86
|
+
* is declared on both and Commander resolves that in the parent's favour (align-cli#79, which
|
|
87
|
+
* fixed the same read for the import commands via subcommandOpts). Reading `.opts()` here
|
|
88
|
+
* would send a local command's event to the cloud default - this slice's own bug, one layer up.
|
|
89
|
+
*/
|
|
90
|
+
export function envFlagOf(cmd) {
|
|
91
|
+
const opts = cmd.optsWithGlobals();
|
|
92
|
+
const value = opts['env'];
|
|
93
|
+
if (typeof value === 'string')
|
|
94
|
+
return value;
|
|
95
|
+
// `align setup --local` is how a user ENTERS local mode, and it is not spelled `--env local`,
|
|
96
|
+
// so reading only `env` reported the one command whose whole purpose is going private. Checked
|
|
97
|
+
// after `env` so an explicitly typed cloud env still wins.
|
|
98
|
+
if (opts['local'] === true)
|
|
99
|
+
return 'local';
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Resolve the env the command actually addressed, then report against THAT.
|
|
104
|
+
*
|
|
105
|
+
* The postAction hook used to hand over `getEnvironment(getDefaultEnv())`, and
|
|
106
|
+
* `align setup --local` deliberately leaves the default env alone (local-mode.ts), so a
|
|
107
|
+
* machine that had ever run `align login` reported every `ask --env local` to the cloud -
|
|
108
|
+
* the one thing PR #77 said local mode does not do. Only the three-member `local` command
|
|
109
|
+
* group was excluded, and no local user types `align local ask`.
|
|
110
|
+
*
|
|
111
|
+
* `preferLocalEmbedded` is deliberately NOT passed: it is a routing preference for the
|
|
112
|
+
* read commands, and asking for it here would be a second opinion on where the command
|
|
113
|
+
* went. The flag and ALIGN_ENV are what the user chose explicitly, and those are what a
|
|
114
|
+
* consent decision may rest on. Note that preference and this gate are today mutually
|
|
115
|
+
* exclusive by arithmetic rather than by design - the redirect fires only when the cloud env
|
|
116
|
+
* has no token, which is the same condition recordCommandUsage returns on - so if that token
|
|
117
|
+
* check is ever relaxed to count tokenless users, pass the preference here as well.
|
|
118
|
+
*
|
|
119
|
+
* `setup` is suppressed once local-embedded is configured. The interactive "Local only" choice
|
|
120
|
+
* sets no flag, and the default env stays cloud on purpose, so the only evidence the session was
|
|
121
|
+
* local is what the run left behind - and a `setup` that ends with the machine in local mode is
|
|
122
|
+
* a local session. It costs one activation count on a once-per-machine command, in the direction
|
|
123
|
+
* that cannot leak.
|
|
124
|
+
*/
|
|
125
|
+
export async function recordInvocationUsage(envFlag, command) {
|
|
126
|
+
const { createConfigStore } = await import('./config.js');
|
|
127
|
+
const { resolveEnv } = await import('./resolve-env.js');
|
|
128
|
+
const config = createConfigStore();
|
|
129
|
+
if (command === 'setup' && config.getEnvironment('local').mode === 'local-embedded')
|
|
130
|
+
return;
|
|
131
|
+
await recordCommandUsage(config.getEnvironment(resolveEnv(envFlag)), command);
|
|
132
|
+
}
|
|
63
133
|
//# sourceMappingURL=usage-telemetry.js.map
|