@cleocode/core 2026.9.13 → 2026.9.15
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/docs/export-document.js +112 -8
- package/dist/docs/export-document.js.map +2 -2
- package/dist/lifecycle/kind-requirements.d.ts +35 -0
- package/dist/lifecycle/kind-requirements.d.ts.map +1 -0
- package/dist/lifecycle/kind-requirements.js +43 -0
- package/dist/lifecycle/kind-requirements.js.map +1 -0
- package/dist/llm/api-mode.d.ts +40 -0
- package/dist/llm/api-mode.d.ts.map +1 -1
- package/dist/llm/api-mode.js +57 -1
- package/dist/llm/api-mode.js.map +1 -1
- package/dist/llm/cli-ops.d.ts.map +1 -1
- package/dist/llm/cli-ops.js +9 -11
- package/dist/llm/cli-ops.js.map +1 -1
- package/dist/llm/plugin-facade.js +59 -1
- package/dist/llm/plugin-facade.js.map +2 -2
- package/dist/memory/brain-embedding.d.ts +47 -2
- package/dist/memory/brain-embedding.d.ts.map +1 -1
- package/dist/memory/brain-embedding.js +61 -2
- package/dist/memory/brain-embedding.js.map +1 -1
- package/dist/memory/embedding-local.d.ts +45 -1
- package/dist/memory/embedding-local.d.ts.map +1 -1
- package/dist/memory/embedding-local.js +81 -6
- package/dist/memory/embedding-local.js.map +1 -1
- package/dist/memory/retrieval/observe.d.ts +14 -0
- package/dist/memory/retrieval/observe.d.ts.map +1 -1
- package/dist/memory/retrieval/observe.js +50 -14
- package/dist/memory/retrieval/observe.js.map +1 -1
- package/dist/memory/transcript-extractor.d.ts +13 -0
- package/dist/memory/transcript-extractor.d.ts.map +1 -1
- package/dist/memory/transcript-extractor.js +28 -3
- package/dist/memory/transcript-extractor.js.map +1 -1
- package/dist/memory/transcript-scanner.d.ts +12 -1
- package/dist/memory/transcript-scanner.d.ts.map +1 -1
- package/dist/memory/transcript-scanner.js +9 -3
- package/dist/memory/transcript-scanner.js.map +1 -1
- package/dist/reconciliation/reconciliation-engine.d.ts.map +1 -1
- package/dist/reconciliation/reconciliation-engine.js +8 -0
- package/dist/reconciliation/reconciliation-engine.js.map +1 -1
- package/dist/resources/spawn-wrapper.d.ts.map +1 -1
- package/dist/resources/spawn-wrapper.js +6 -3
- package/dist/resources/spawn-wrapper.js.map +1 -1
- package/dist/selfimprove/fix-gen.js +57 -1
- package/dist/selfimprove/fix-gen.js.map +2 -2
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +8 -1
- package/dist/tasks/complete.js.map +1 -1
- package/package.json +23 -13
|
@@ -613,6 +613,13 @@ var init_cli_category = __esm({
|
|
|
613
613
|
}
|
|
614
614
|
});
|
|
615
615
|
|
|
616
|
+
// packages/contracts/src/code-symbol.ts
|
|
617
|
+
var init_code_symbol = __esm({
|
|
618
|
+
"packages/contracts/src/code-symbol.ts"() {
|
|
619
|
+
"use strict";
|
|
620
|
+
}
|
|
621
|
+
});
|
|
622
|
+
|
|
616
623
|
// packages/contracts/src/config/manifest.ts
|
|
617
624
|
import { z as z4 } from "zod";
|
|
618
625
|
var PROJECT_INFO_MANIFEST, PROJECT_CONTEXT_MANIFEST, CLEO_CONFIG_MANIFEST, GLOBAL_CLEO_CONFIG_MANIFEST, CONFIG_MANIFEST_ENTRIES, configManifestEntrySchema;
|
|
@@ -13526,6 +13533,40 @@ var init_invariants = __esm({
|
|
|
13526
13533
|
}
|
|
13527
13534
|
});
|
|
13528
13535
|
|
|
13536
|
+
// packages/contracts/src/kind-lifecycle.ts
|
|
13537
|
+
var KIND_LIFECYCLE_REQUIREMENTS;
|
|
13538
|
+
var init_kind_lifecycle = __esm({
|
|
13539
|
+
"packages/contracts/src/kind-lifecycle.ts"() {
|
|
13540
|
+
"use strict";
|
|
13541
|
+
KIND_LIFECYCLE_REQUIREMENTS = Object.freeze({
|
|
13542
|
+
work: {
|
|
13543
|
+
requiresStagedPipeline: true,
|
|
13544
|
+
rationale: "Default delivery work. The staged pipeline exists for exactly this: decide the design before completing the code that implements it."
|
|
13545
|
+
},
|
|
13546
|
+
bug: {
|
|
13547
|
+
requiresStagedPipeline: false,
|
|
13548
|
+
rationale: "A fix operates inside an existing design. Demanding consensus and architecture_decision before a fix can complete describes work that is not happening."
|
|
13549
|
+
},
|
|
13550
|
+
research: {
|
|
13551
|
+
requiresStagedPipeline: false,
|
|
13552
|
+
rationale: "The research IS the work. Requiring the epic to pass the research stage before its own research children can complete is circular."
|
|
13553
|
+
},
|
|
13554
|
+
spike: {
|
|
13555
|
+
requiresStagedPipeline: false,
|
|
13556
|
+
rationale: "A time-boxed exploration whose purpose is to produce the information the design stages would consume. It cannot be gated on having already done so."
|
|
13557
|
+
},
|
|
13558
|
+
experiment: {
|
|
13559
|
+
requiresStagedPipeline: false,
|
|
13560
|
+
rationale: "An experiment is run to learn whether an approach holds. Specifying and decomposing it first presumes the answer."
|
|
13561
|
+
},
|
|
13562
|
+
release: {
|
|
13563
|
+
requiresStagedPipeline: false,
|
|
13564
|
+
rationale: "Release epics are procedural \u2014 the design work they ship was decided in the epics being released."
|
|
13565
|
+
}
|
|
13566
|
+
});
|
|
13567
|
+
}
|
|
13568
|
+
});
|
|
13569
|
+
|
|
13529
13570
|
// packages/contracts/src/lafs.ts
|
|
13530
13571
|
var init_lafs = __esm({
|
|
13531
13572
|
"packages/contracts/src/lafs.ts"() {
|
|
@@ -16813,6 +16854,7 @@ var init_src = __esm({
|
|
|
16813
16854
|
init_branch_lock();
|
|
16814
16855
|
init_changesets();
|
|
16815
16856
|
init_cli_category();
|
|
16857
|
+
init_code_symbol();
|
|
16816
16858
|
init_manifest();
|
|
16817
16859
|
init_credentials();
|
|
16818
16860
|
init_daemon();
|
|
@@ -16833,6 +16875,7 @@ var init_src = __esm({
|
|
|
16833
16875
|
init_goal();
|
|
16834
16876
|
init_graph();
|
|
16835
16877
|
init_invariants();
|
|
16878
|
+
init_kind_lifecycle();
|
|
16836
16879
|
init_lafs();
|
|
16837
16880
|
init_lease_ipc();
|
|
16838
16881
|
init_catalog_schema();
|
|
@@ -34914,13 +34957,33 @@ var init_config = __esm({
|
|
|
34914
34957
|
var embedding_local_exports = {};
|
|
34915
34958
|
__export(embedding_local_exports, {
|
|
34916
34959
|
LocalEmbeddingProvider: () => LocalEmbeddingProvider,
|
|
34917
|
-
|
|
34960
|
+
__resetLocalEmbeddingStateForTests: () => __resetLocalEmbeddingStateForTests,
|
|
34961
|
+
getLocalEmbeddingProvider: () => getLocalEmbeddingProvider,
|
|
34962
|
+
isEmbeddingPipelineLoaded: () => isEmbeddingPipelineLoaded
|
|
34918
34963
|
});
|
|
34919
34964
|
async function loadPipeline() {
|
|
34920
34965
|
if (_ready) return;
|
|
34921
|
-
|
|
34922
|
-
|
|
34923
|
-
|
|
34966
|
+
if (_loadFailed) {
|
|
34967
|
+
throw new Error(`Local embedding pipeline is unavailable in this process: ${_loadError}`);
|
|
34968
|
+
}
|
|
34969
|
+
try {
|
|
34970
|
+
const { pipeline } = await import("@huggingface/transformers");
|
|
34971
|
+
_pipeline = await pipeline("feature-extraction", MODEL_NAME);
|
|
34972
|
+
_ready = true;
|
|
34973
|
+
} catch (err) {
|
|
34974
|
+
_loadFailed = true;
|
|
34975
|
+
_loadError = err instanceof Error ? err.message : String(err);
|
|
34976
|
+
throw err;
|
|
34977
|
+
}
|
|
34978
|
+
}
|
|
34979
|
+
function isEmbeddingPipelineLoaded() {
|
|
34980
|
+
return _ready;
|
|
34981
|
+
}
|
|
34982
|
+
function __resetLocalEmbeddingStateForTests() {
|
|
34983
|
+
_pipeline = null;
|
|
34984
|
+
_ready = false;
|
|
34985
|
+
_loadFailed = false;
|
|
34986
|
+
_loadError = null;
|
|
34924
34987
|
}
|
|
34925
34988
|
function getLocalEmbeddingProvider() {
|
|
34926
34989
|
if (!_instance) {
|
|
@@ -34928,7 +34991,7 @@ function getLocalEmbeddingProvider() {
|
|
|
34928
34991
|
}
|
|
34929
34992
|
return _instance;
|
|
34930
34993
|
}
|
|
34931
|
-
var MODEL_NAME, _pipeline, _ready, LocalEmbeddingProvider, _instance;
|
|
34994
|
+
var MODEL_NAME, _pipeline, _ready, _loadFailed, _loadError, LocalEmbeddingProvider, _instance;
|
|
34932
34995
|
var init_embedding_local = __esm({
|
|
34933
34996
|
"packages/core/src/memory/embedding-local.ts"() {
|
|
34934
34997
|
"use strict";
|
|
@@ -34936,14 +34999,41 @@ var init_embedding_local = __esm({
|
|
|
34936
34999
|
MODEL_NAME = "Xenova/all-MiniLM-L6-v2";
|
|
34937
35000
|
_pipeline = null;
|
|
34938
35001
|
_ready = false;
|
|
35002
|
+
_loadFailed = false;
|
|
35003
|
+
_loadError = null;
|
|
34939
35004
|
LocalEmbeddingProvider = class {
|
|
34940
35005
|
/** Number of dimensions produced — must match brain_embeddings vec0 table. */
|
|
34941
35006
|
dimensions = EMBEDDING_DIMENSIONS;
|
|
34942
35007
|
/**
|
|
34943
|
-
* Whether
|
|
35008
|
+
* Whether this provider CAN produce embeddings — not whether it already has.
|
|
35009
|
+
*
|
|
35010
|
+
* ## The deadlock this fixes (gh#1217)
|
|
35011
|
+
*
|
|
35012
|
+
* This previously returned `_ready`, the "pipeline has loaded" flag. But
|
|
35013
|
+
* `_ready` is set only by `loadPipeline()`, which runs only inside
|
|
35014
|
+
* {@link embed} — and every caller of `embed` first checks `isAvailable()`.
|
|
35015
|
+
* In any fresh CLI process `_ready` is false, so nothing ever called
|
|
35016
|
+
* `embed`, so `_ready` never became true. **The readiness check could only
|
|
35017
|
+
* be satisfied by the call it guarded.**
|
|
35018
|
+
*
|
|
35019
|
+
* The observable result was total, silent inertness: `cleo brain
|
|
35020
|
+
* maintenance` reported `{processed: 0, skipped: 0, errors: 0}` forever,
|
|
35021
|
+
* `brain_embeddings` stayed empty after dozens of observations, new writes
|
|
35022
|
+
* were never embedded, and every hybrid search quietly degraded to FTS5 —
|
|
35023
|
+
* while `brain.embedding.enabled` was true and the provider itself was
|
|
35024
|
+
* perfectly healthy when called directly.
|
|
35025
|
+
*
|
|
35026
|
+
* Availability is therefore capability: this provider can load its pipeline
|
|
35027
|
+
* on demand, and says so until a load actually fails. The ~22 MB first-call
|
|
35028
|
+
* download is the expected cost of the lazy design, not a reason to refuse
|
|
35029
|
+
* to begin.
|
|
35030
|
+
*
|
|
35031
|
+
* @returns `true` unless loading the pipeline has already failed here.
|
|
35032
|
+
*
|
|
35033
|
+
* @task T12129 (gh#1217)
|
|
34944
35034
|
*/
|
|
34945
35035
|
isAvailable() {
|
|
34946
|
-
return
|
|
35036
|
+
return !_loadFailed;
|
|
34947
35037
|
}
|
|
34948
35038
|
/**
|
|
34949
35039
|
* Convert a single text string into a 384-dimension float vector.
|
|
@@ -34983,6 +35073,7 @@ __export(brain_embedding_exports, {
|
|
|
34983
35073
|
EMBEDDING_DIMENSIONS: () => EMBEDDING_DIMENSIONS,
|
|
34984
35074
|
clearEmbeddingProvider: () => clearEmbeddingProvider,
|
|
34985
35075
|
embedText: () => embedText,
|
|
35076
|
+
ensureEmbeddingProvider: () => ensureEmbeddingProvider,
|
|
34986
35077
|
getEmbeddingProvider: () => getEmbeddingProvider,
|
|
34987
35078
|
initDefaultProvider: () => initDefaultProvider,
|
|
34988
35079
|
isEmbeddingAvailable: () => isEmbeddingAvailable,
|
|
@@ -35004,7 +35095,11 @@ function clearEmbeddingProvider() {
|
|
|
35004
35095
|
}
|
|
35005
35096
|
async function embedText(text2) {
|
|
35006
35097
|
if (!currentProvider?.isAvailable()) return null;
|
|
35007
|
-
|
|
35098
|
+
try {
|
|
35099
|
+
return await currentProvider.embed(text2);
|
|
35100
|
+
} catch {
|
|
35101
|
+
return null;
|
|
35102
|
+
}
|
|
35008
35103
|
}
|
|
35009
35104
|
function isEmbeddingAvailable() {
|
|
35010
35105
|
return currentProvider?.isAvailable() ?? false;
|
|
@@ -35014,6 +35109,15 @@ async function initDefaultProvider() {
|
|
|
35014
35109
|
const provider = new LocalEmbeddingProvider2();
|
|
35015
35110
|
setEmbeddingProvider(provider);
|
|
35016
35111
|
}
|
|
35112
|
+
async function ensureEmbeddingProvider() {
|
|
35113
|
+
if (currentProvider !== null) return true;
|
|
35114
|
+
try {
|
|
35115
|
+
await initDefaultProvider();
|
|
35116
|
+
} catch {
|
|
35117
|
+
return false;
|
|
35118
|
+
}
|
|
35119
|
+
return currentProvider !== null;
|
|
35120
|
+
}
|
|
35017
35121
|
var EMBEDDING_DIMENSIONS, currentProvider;
|
|
35018
35122
|
var init_brain_embedding = __esm({
|
|
35019
35123
|
"packages/core/src/memory/brain-embedding.ts"() {
|