@cleocode/core 2026.6.15 → 2026.6.18
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 +41 -0
- package/dist/docs/export-document.js.map +1 -1
- package/dist/gc/janitor.d.ts +149 -0
- package/dist/gc/janitor.d.ts.map +1 -0
- package/dist/gc/janitor.js +760 -0
- package/dist/gc/janitor.js.map +1 -0
- package/dist/internal.d.ts +1 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +3 -0
- package/dist/internal.js.map +1 -1
- package/dist/llm/cli-ops.d.ts +15 -4
- package/dist/llm/cli-ops.d.ts.map +1 -1
- package/dist/llm/cli-ops.js +78 -21
- package/dist/llm/cli-ops.js.map +1 -1
- package/dist/llm/credential-pool.d.ts +62 -0
- package/dist/llm/credential-pool.d.ts.map +1 -1
- package/dist/llm/credential-pool.js +161 -0
- package/dist/llm/credential-pool.js.map +1 -1
- package/dist/llm/cross-provider-selector.d.ts +8 -3
- package/dist/llm/cross-provider-selector.d.ts.map +1 -1
- package/dist/llm/cross-provider-selector.js +71 -8
- package/dist/llm/cross-provider-selector.js.map +1 -1
- package/dist/llm/plugin-facade.js +122 -1
- package/dist/llm/plugin-facade.js.map +1 -1
- package/dist/selfimprove/fix-gen-context.d.ts +172 -0
- package/dist/selfimprove/fix-gen-context.d.ts.map +1 -0
- package/dist/selfimprove/fix-gen-context.js +218 -0
- package/dist/selfimprove/fix-gen-context.js.map +1 -0
- package/dist/selfimprove/fix-gen.d.ts +60 -4
- package/dist/selfimprove/fix-gen.d.ts.map +1 -1
- package/dist/selfimprove/fix-gen.js +76631 -256
- package/dist/selfimprove/fix-gen.js.map +6 -1
- package/dist/selfimprove/op-source-map.d.ts +92 -0
- package/dist/selfimprove/op-source-map.d.ts.map +1 -0
- package/dist/selfimprove/op-source-map.js +187 -0
- package/dist/selfimprove/op-source-map.js.map +1 -0
- package/dist/selfimprove/probe-helper.d.ts +61 -0
- package/dist/selfimprove/probe-helper.d.ts.map +1 -0
- package/dist/selfimprove/probe-helper.js +64 -0
- package/dist/selfimprove/probe-helper.js.map +1 -0
- package/dist/selfimprove/scenarios/seeded-code-regression/golden.json +18 -0
- package/dist/selfimprove/scenarios/seeded-code-regression/scenario.json +12 -0
- package/dist/setup/index.d.ts +1 -0
- package/dist/setup/index.d.ts.map +1 -1
- package/dist/setup/index.js +1 -0
- package/dist/setup/index.js.map +1 -1
- package/dist/setup/sections/models-roles.d.ts +32 -1
- package/dist/setup/sections/models-roles.d.ts.map +1 -1
- package/dist/setup/sections/models-roles.js +118 -19
- package/dist/setup/sections/models-roles.js.map +1 -1
- package/dist/setup/whoami-summary.d.ts +34 -0
- package/dist/setup/whoami-summary.d.ts.map +1 -0
- package/dist/setup/whoami-summary.js +106 -0
- package/dist/setup/whoami-summary.js.map +1 -0
- package/package.json +12 -12
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static op-coordinate → source-file map for the self-improvement fix-gen stage.
|
|
3
|
+
*
|
|
4
|
+
* Given a regression's `opCoord` (the `domain.operation` string produced by
|
|
5
|
+
* {@link "../selfimprove/envelope-diff.js".DiffEntry.opCoord}, e.g. `tasks.show`),
|
|
6
|
+
* this module resolves the **repo-relative** paths of the CLI handler and the
|
|
7
|
+
* core module(s) most likely to contain the regression. The file list is fed into
|
|
8
|
+
* the fix-gen prompt builder ({@link "./fix-gen-context.js"}) so the LLM receives
|
|
9
|
+
* bounded, targeted code context rather than zero context or an unbounded repo
|
|
10
|
+
* dump.
|
|
11
|
+
*
|
|
12
|
+
* ## Design: static map, not a registry query
|
|
13
|
+
*
|
|
14
|
+
* The ops catalog (the `OPERATIONS` array in `@cleocode/contracts`) encodes
|
|
15
|
+
* `{ gateway, domain, operation }` but does NOT track source-file provenance.
|
|
16
|
+
* Runtime nexus queries (`cleo nexus query`) would work but introduce an
|
|
17
|
+
* in-process dependency on the nexus subsystem (an expensive side-effectful
|
|
18
|
+
* import in the fix-gen hot path). A **static map keyed by `domain.operation`**
|
|
19
|
+
* is the cost-free alternative: it is derived once (by reading the repo's known
|
|
20
|
+
* handler layout), is small enough to inline, and carries zero import-time cost.
|
|
21
|
+
*
|
|
22
|
+
* The map covers the common `tasks` domain operations exercised by the canonical
|
|
23
|
+
* scenarios. The entry for an unregistered `opCoord` returns an empty file list
|
|
24
|
+
* (`{ handlerFiles: [], coreFiles: [] }`) — the fix-gen stage degrades gracefully
|
|
25
|
+
* to "no context" (the model still receives the regression diff and may emit
|
|
26
|
+
* `NO_PATCH`, which is the honest outcome when context is absent).
|
|
27
|
+
*
|
|
28
|
+
* ## File path convention
|
|
29
|
+
*
|
|
30
|
+
* Every path is **repo-relative** (no leading `/`). The file content loader
|
|
31
|
+
* ({@link "./fix-gen-context.js"}) resolves them against `repoContext.projectRoot`
|
|
32
|
+
* before reading.
|
|
33
|
+
*
|
|
34
|
+
* Import-time side-effect-free: no IO, no dynamic imports.
|
|
35
|
+
*
|
|
36
|
+
* @module @cleocode/core/selfimprove/op-source-map
|
|
37
|
+
* @epic T11889
|
|
38
|
+
* @task T11988
|
|
39
|
+
*/
|
|
40
|
+
/**
|
|
41
|
+
* Resolved source files for one op-coordinate.
|
|
42
|
+
*
|
|
43
|
+
* - `handlerFiles`: the CLI dispatch handler(s) in `packages/cleo/src/dispatch/domains/`
|
|
44
|
+
* - `coreFiles`: the core-logic module(s) in `packages/core/src/` (the file most
|
|
45
|
+
* likely to contain the regression for this operation)
|
|
46
|
+
*
|
|
47
|
+
* Both lists are repo-relative. Either may be empty when not applicable.
|
|
48
|
+
*/
|
|
49
|
+
export interface OpSourceEntry {
|
|
50
|
+
/** CLI dispatch handler files (repo-relative). */
|
|
51
|
+
readonly handlerFiles: readonly string[];
|
|
52
|
+
/** Core module files that implement the operation logic (repo-relative). */
|
|
53
|
+
readonly coreFiles: readonly string[];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Resolve the handler + core source files for a given op-coordinate.
|
|
57
|
+
*
|
|
58
|
+
* Returns the {@link OpSourceEntry} from the static map when the `opCoord` is
|
|
59
|
+
* registered, or {@link EMPTY_ENTRY} when it is not. NEVER throws. The returned
|
|
60
|
+
* lists contain repo-relative paths; callers resolve them against the project root
|
|
61
|
+
* before reading.
|
|
62
|
+
*
|
|
63
|
+
* @param opCoord - The op coordinate to resolve (e.g. `'tasks.show'`).
|
|
64
|
+
* @returns The resolved {@link OpSourceEntry} (may be empty for unknown ops).
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```ts
|
|
68
|
+
* const { handlerFiles, coreFiles } = resolveOpSourceFiles('tasks.show');
|
|
69
|
+
* // handlerFiles: ['packages/cleo/src/dispatch/domains/tasks.ts']
|
|
70
|
+
* // coreFiles: ['packages/core/src/tasks/show.ts']
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare function resolveOpSourceFiles(opCoord: string): OpSourceEntry;
|
|
74
|
+
/**
|
|
75
|
+
* Collect the unique set of source files for a list of op-coordinates.
|
|
76
|
+
*
|
|
77
|
+
* Deduplicates across entries so a scenario with two ops from the same handler
|
|
78
|
+
* does not include the handler twice. Returns the merged `{ handlerFiles, coreFiles }`
|
|
79
|
+
* with order preserved (first-seen wins for dedup).
|
|
80
|
+
*
|
|
81
|
+
* @param opCoords - The op-coordinate strings to collect files for.
|
|
82
|
+
* @returns The merged, deduplicated {@link OpSourceEntry}.
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```ts
|
|
86
|
+
* const entry = collectOpSourceFiles(['tasks.find', 'tasks.show']);
|
|
87
|
+
* // entry.handlerFiles: ['packages/cleo/src/dispatch/domains/tasks.ts']
|
|
88
|
+
* // entry.coreFiles: ['packages/core/src/tasks/find.ts', 'packages/core/src/tasks/show.ts']
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare function collectOpSourceFiles(opCoords: readonly string[]): OpSourceEntry;
|
|
92
|
+
//# sourceMappingURL=op-source-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"op-source-map.d.ts","sourceRoot":"","sources":["../../src/selfimprove/op-source-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AA2FD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAEnE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,aAAa,CAuB/E"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static op-coordinate → source-file map for the self-improvement fix-gen stage.
|
|
3
|
+
*
|
|
4
|
+
* Given a regression's `opCoord` (the `domain.operation` string produced by
|
|
5
|
+
* {@link "../selfimprove/envelope-diff.js".DiffEntry.opCoord}, e.g. `tasks.show`),
|
|
6
|
+
* this module resolves the **repo-relative** paths of the CLI handler and the
|
|
7
|
+
* core module(s) most likely to contain the regression. The file list is fed into
|
|
8
|
+
* the fix-gen prompt builder ({@link "./fix-gen-context.js"}) so the LLM receives
|
|
9
|
+
* bounded, targeted code context rather than zero context or an unbounded repo
|
|
10
|
+
* dump.
|
|
11
|
+
*
|
|
12
|
+
* ## Design: static map, not a registry query
|
|
13
|
+
*
|
|
14
|
+
* The ops catalog (the `OPERATIONS` array in `@cleocode/contracts`) encodes
|
|
15
|
+
* `{ gateway, domain, operation }` but does NOT track source-file provenance.
|
|
16
|
+
* Runtime nexus queries (`cleo nexus query`) would work but introduce an
|
|
17
|
+
* in-process dependency on the nexus subsystem (an expensive side-effectful
|
|
18
|
+
* import in the fix-gen hot path). A **static map keyed by `domain.operation`**
|
|
19
|
+
* is the cost-free alternative: it is derived once (by reading the repo's known
|
|
20
|
+
* handler layout), is small enough to inline, and carries zero import-time cost.
|
|
21
|
+
*
|
|
22
|
+
* The map covers the common `tasks` domain operations exercised by the canonical
|
|
23
|
+
* scenarios. The entry for an unregistered `opCoord` returns an empty file list
|
|
24
|
+
* (`{ handlerFiles: [], coreFiles: [] }`) — the fix-gen stage degrades gracefully
|
|
25
|
+
* to "no context" (the model still receives the regression diff and may emit
|
|
26
|
+
* `NO_PATCH`, which is the honest outcome when context is absent).
|
|
27
|
+
*
|
|
28
|
+
* ## File path convention
|
|
29
|
+
*
|
|
30
|
+
* Every path is **repo-relative** (no leading `/`). The file content loader
|
|
31
|
+
* ({@link "./fix-gen-context.js"}) resolves them against `repoContext.projectRoot`
|
|
32
|
+
* before reading.
|
|
33
|
+
*
|
|
34
|
+
* Import-time side-effect-free: no IO, no dynamic imports.
|
|
35
|
+
*
|
|
36
|
+
* @module @cleocode/core/selfimprove/op-source-map
|
|
37
|
+
* @epic T11889
|
|
38
|
+
* @task T11988
|
|
39
|
+
*/
|
|
40
|
+
/**
|
|
41
|
+
* The static `opCoord → source files` map.
|
|
42
|
+
*
|
|
43
|
+
* Keys are `domain.operation` strings (lowercase, e.g. `'tasks.show'`). Values
|
|
44
|
+
* are {@link OpSourceEntry} objects with repo-relative paths.
|
|
45
|
+
*
|
|
46
|
+
* Coverage: the `tasks` domain operations exercised by the built-in scenarios
|
|
47
|
+
* (T11988: `seeded-code-regression`) plus the pre-existing `dhq-replay-find`
|
|
48
|
+
* scenario (`tasks.find`, `tasks.show`).
|
|
49
|
+
*
|
|
50
|
+
* @internal
|
|
51
|
+
*/
|
|
52
|
+
const OP_SOURCE_MAP = {
|
|
53
|
+
'tasks.show': {
|
|
54
|
+
handlerFiles: ['packages/cleo/src/dispatch/domains/tasks.ts'],
|
|
55
|
+
coreFiles: ['packages/core/src/tasks/show.ts'],
|
|
56
|
+
},
|
|
57
|
+
'tasks.find': {
|
|
58
|
+
handlerFiles: ['packages/cleo/src/dispatch/domains/tasks.ts'],
|
|
59
|
+
coreFiles: ['packages/core/src/tasks/find.ts'],
|
|
60
|
+
},
|
|
61
|
+
'tasks.list': {
|
|
62
|
+
handlerFiles: ['packages/cleo/src/dispatch/domains/tasks.ts'],
|
|
63
|
+
coreFiles: ['packages/core/src/tasks/list.ts'],
|
|
64
|
+
},
|
|
65
|
+
'tasks.add': {
|
|
66
|
+
handlerFiles: ['packages/cleo/src/dispatch/domains/tasks.ts'],
|
|
67
|
+
coreFiles: ['packages/core/src/tasks/add.ts'],
|
|
68
|
+
},
|
|
69
|
+
'tasks.update': {
|
|
70
|
+
handlerFiles: ['packages/cleo/src/dispatch/domains/tasks.ts'],
|
|
71
|
+
coreFiles: ['packages/core/src/tasks/update.ts'],
|
|
72
|
+
},
|
|
73
|
+
'tasks.complete': {
|
|
74
|
+
handlerFiles: ['packages/cleo/src/dispatch/domains/tasks.ts'],
|
|
75
|
+
coreFiles: ['packages/core/src/tasks/complete.ts'],
|
|
76
|
+
},
|
|
77
|
+
'tasks.delete': {
|
|
78
|
+
handlerFiles: ['packages/cleo/src/dispatch/domains/tasks.ts'],
|
|
79
|
+
coreFiles: ['packages/core/src/tasks/delete.ts'],
|
|
80
|
+
},
|
|
81
|
+
'tasks.next': {
|
|
82
|
+
handlerFiles: ['packages/cleo/src/dispatch/domains/tasks.ts'],
|
|
83
|
+
coreFiles: ['packages/core/src/tasks/next.ts'],
|
|
84
|
+
},
|
|
85
|
+
'tasks.current': {
|
|
86
|
+
handlerFiles: ['packages/cleo/src/dispatch/domains/tasks.ts'],
|
|
87
|
+
coreFiles: ['packages/core/src/tasks/current.ts'],
|
|
88
|
+
},
|
|
89
|
+
'tasks.tree': {
|
|
90
|
+
handlerFiles: ['packages/cleo/src/dispatch/domains/tasks.ts'],
|
|
91
|
+
coreFiles: ['packages/core/src/tasks/generic-tree.ts'],
|
|
92
|
+
},
|
|
93
|
+
'tasks.analyze': {
|
|
94
|
+
handlerFiles: ['packages/cleo/src/dispatch/domains/tasks.ts'],
|
|
95
|
+
coreFiles: ['packages/core/src/tasks/analyze.ts'],
|
|
96
|
+
},
|
|
97
|
+
'memory.find': {
|
|
98
|
+
handlerFiles: ['packages/cleo/src/dispatch/domains/memory.ts'],
|
|
99
|
+
coreFiles: [],
|
|
100
|
+
},
|
|
101
|
+
'memory.fetch': {
|
|
102
|
+
handlerFiles: ['packages/cleo/src/dispatch/domains/memory.ts'],
|
|
103
|
+
coreFiles: [],
|
|
104
|
+
},
|
|
105
|
+
'selfimprove.run': {
|
|
106
|
+
handlerFiles: ['packages/cleo/src/dispatch/domains/selfimprove.ts'],
|
|
107
|
+
coreFiles: ['packages/core/src/selfimprove/run-loop.ts'],
|
|
108
|
+
},
|
|
109
|
+
/**
|
|
110
|
+
* `selfimprove.probe` — the seeded-code-regression scenario target (T11988).
|
|
111
|
+
* The probe-helper is intentionally broken (`probeVersion()` returns `2`
|
|
112
|
+
* instead of `1`); the fix is a single-line change in this file.
|
|
113
|
+
*/
|
|
114
|
+
'selfimprove.probe': {
|
|
115
|
+
handlerFiles: ['packages/cleo/src/dispatch/domains/selfimprove.ts'],
|
|
116
|
+
coreFiles: ['packages/core/src/selfimprove/probe-helper.ts'],
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* An empty source entry returned for unknown or unmapped op-coordinates.
|
|
121
|
+
*
|
|
122
|
+
* The fix-gen stage treats an empty file list as "no context available" and
|
|
123
|
+
* degrades the prompt to the regression-only view. The model may still produce
|
|
124
|
+
* a patch (or `NO_PATCH`) without file context.
|
|
125
|
+
*/
|
|
126
|
+
const EMPTY_ENTRY = { handlerFiles: [], coreFiles: [] };
|
|
127
|
+
/**
|
|
128
|
+
* Resolve the handler + core source files for a given op-coordinate.
|
|
129
|
+
*
|
|
130
|
+
* Returns the {@link OpSourceEntry} from the static map when the `opCoord` is
|
|
131
|
+
* registered, or {@link EMPTY_ENTRY} when it is not. NEVER throws. The returned
|
|
132
|
+
* lists contain repo-relative paths; callers resolve them against the project root
|
|
133
|
+
* before reading.
|
|
134
|
+
*
|
|
135
|
+
* @param opCoord - The op coordinate to resolve (e.g. `'tasks.show'`).
|
|
136
|
+
* @returns The resolved {@link OpSourceEntry} (may be empty for unknown ops).
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```ts
|
|
140
|
+
* const { handlerFiles, coreFiles } = resolveOpSourceFiles('tasks.show');
|
|
141
|
+
* // handlerFiles: ['packages/cleo/src/dispatch/domains/tasks.ts']
|
|
142
|
+
* // coreFiles: ['packages/core/src/tasks/show.ts']
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
export function resolveOpSourceFiles(opCoord) {
|
|
146
|
+
return OP_SOURCE_MAP[opCoord] ?? EMPTY_ENTRY;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Collect the unique set of source files for a list of op-coordinates.
|
|
150
|
+
*
|
|
151
|
+
* Deduplicates across entries so a scenario with two ops from the same handler
|
|
152
|
+
* does not include the handler twice. Returns the merged `{ handlerFiles, coreFiles }`
|
|
153
|
+
* with order preserved (first-seen wins for dedup).
|
|
154
|
+
*
|
|
155
|
+
* @param opCoords - The op-coordinate strings to collect files for.
|
|
156
|
+
* @returns The merged, deduplicated {@link OpSourceEntry}.
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```ts
|
|
160
|
+
* const entry = collectOpSourceFiles(['tasks.find', 'tasks.show']);
|
|
161
|
+
* // entry.handlerFiles: ['packages/cleo/src/dispatch/domains/tasks.ts']
|
|
162
|
+
* // entry.coreFiles: ['packages/core/src/tasks/find.ts', 'packages/core/src/tasks/show.ts']
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
export function collectOpSourceFiles(opCoords) {
|
|
166
|
+
const seenHandler = new Set();
|
|
167
|
+
const seenCore = new Set();
|
|
168
|
+
const handlerFiles = [];
|
|
169
|
+
const coreFiles = [];
|
|
170
|
+
for (const coord of opCoords) {
|
|
171
|
+
const entry = resolveOpSourceFiles(coord);
|
|
172
|
+
for (const f of entry.handlerFiles) {
|
|
173
|
+
if (!seenHandler.has(f)) {
|
|
174
|
+
seenHandler.add(f);
|
|
175
|
+
handlerFiles.push(f);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
for (const f of entry.coreFiles) {
|
|
179
|
+
if (!seenCore.has(f)) {
|
|
180
|
+
seenCore.add(f);
|
|
181
|
+
coreFiles.push(f);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return { handlerFiles, coreFiles };
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=op-source-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"op-source-map.js","sourceRoot":"","sources":["../../src/selfimprove/op-source-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Self-improvement probe helper — selfimprove.probe op (T11988).
|
|
3
|
+
*
|
|
4
|
+
* This tiny module exists to give the seeded-code-regression scenario a
|
|
5
|
+
* **real, patchable code bug** for end-to-end fix-gen proof. The function
|
|
6
|
+
* {@link probeVersion} is supposed to return `1` (the canonical probe API
|
|
7
|
+
* version), but ships with an intentional off-by-one (`return 2`) so that a
|
|
8
|
+
* live replay of the `seeded-code-regression` scenario diverges from the
|
|
9
|
+
* golden (`version: 1`) and the LLM can produce a correct one-line unified
|
|
10
|
+
* diff to fix it.
|
|
11
|
+
*
|
|
12
|
+
* ### Why a dedicated file?
|
|
13
|
+
*
|
|
14
|
+
* The seeded bug must be:
|
|
15
|
+
* 1. **In a repo-relative path** the op-source-map can register under
|
|
16
|
+
* `selfimprove.probe` so the fix-gen context loader includes it in the
|
|
17
|
+
* LLM prompt.
|
|
18
|
+
* 2. **Minimal** — the simplest possible off-by-one so the model cannot
|
|
19
|
+
* rationally refuse (`NO_PATCH`).
|
|
20
|
+
* 3. **Self-contained** — no live DB, no side effects; the probe op
|
|
21
|
+
* never mutates.
|
|
22
|
+
*
|
|
23
|
+
* ### Fixing the bug
|
|
24
|
+
*
|
|
25
|
+
* Change `return 2` → `return 1` in {@link probeVersion}. This is the EXACT
|
|
26
|
+
* one-line fix the self-improvement loop's LLM fix-gen stage should propose
|
|
27
|
+
* when replaying the seeded scenario.
|
|
28
|
+
*
|
|
29
|
+
* @module @cleocode/core/selfimprove/probe-helper
|
|
30
|
+
* @task T11988
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* Return the canonical probe API version.
|
|
34
|
+
*
|
|
35
|
+
* Expected value: `1`.
|
|
36
|
+
*
|
|
37
|
+
* @returns The probe version number.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* probeVersion(); // => 1 (expected)
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @bug SEEDED — currently returns `2` instead of `1` (T11988 intentional).
|
|
45
|
+
* The seeded-code-regression scenario golden asserts `version: 1`; the
|
|
46
|
+
* mismatch is the regression the fix-gen LLM prompt targets.
|
|
47
|
+
*/
|
|
48
|
+
export declare function probeVersion(): number;
|
|
49
|
+
/**
|
|
50
|
+
* Build the `selfimprove.probe` response payload.
|
|
51
|
+
*
|
|
52
|
+
* Returns `{ probe: 'ok', version: <probeVersion()> }` — the envelope `data`
|
|
53
|
+
* block the `selfimprove.probe` query op emits.
|
|
54
|
+
*
|
|
55
|
+
* @returns The probe response payload.
|
|
56
|
+
*/
|
|
57
|
+
export declare function buildProbePayload(): {
|
|
58
|
+
probe: 'ok';
|
|
59
|
+
version: number;
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=probe-helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probe-helper.d.ts","sourceRoot":"","sources":["../../src/selfimprove/probe-helper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAIrC;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAEpE"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Self-improvement probe helper — selfimprove.probe op (T11988).
|
|
3
|
+
*
|
|
4
|
+
* This tiny module exists to give the seeded-code-regression scenario a
|
|
5
|
+
* **real, patchable code bug** for end-to-end fix-gen proof. The function
|
|
6
|
+
* {@link probeVersion} is supposed to return `1` (the canonical probe API
|
|
7
|
+
* version), but ships with an intentional off-by-one (`return 2`) so that a
|
|
8
|
+
* live replay of the `seeded-code-regression` scenario diverges from the
|
|
9
|
+
* golden (`version: 1`) and the LLM can produce a correct one-line unified
|
|
10
|
+
* diff to fix it.
|
|
11
|
+
*
|
|
12
|
+
* ### Why a dedicated file?
|
|
13
|
+
*
|
|
14
|
+
* The seeded bug must be:
|
|
15
|
+
* 1. **In a repo-relative path** the op-source-map can register under
|
|
16
|
+
* `selfimprove.probe` so the fix-gen context loader includes it in the
|
|
17
|
+
* LLM prompt.
|
|
18
|
+
* 2. **Minimal** — the simplest possible off-by-one so the model cannot
|
|
19
|
+
* rationally refuse (`NO_PATCH`).
|
|
20
|
+
* 3. **Self-contained** — no live DB, no side effects; the probe op
|
|
21
|
+
* never mutates.
|
|
22
|
+
*
|
|
23
|
+
* ### Fixing the bug
|
|
24
|
+
*
|
|
25
|
+
* Change `return 2` → `return 1` in {@link probeVersion}. This is the EXACT
|
|
26
|
+
* one-line fix the self-improvement loop's LLM fix-gen stage should propose
|
|
27
|
+
* when replaying the seeded scenario.
|
|
28
|
+
*
|
|
29
|
+
* @module @cleocode/core/selfimprove/probe-helper
|
|
30
|
+
* @task T11988
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* Return the canonical probe API version.
|
|
34
|
+
*
|
|
35
|
+
* Expected value: `1`.
|
|
36
|
+
*
|
|
37
|
+
* @returns The probe version number.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* probeVersion(); // => 1 (expected)
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @bug SEEDED — currently returns `2` instead of `1` (T11988 intentional).
|
|
45
|
+
* The seeded-code-regression scenario golden asserts `version: 1`; the
|
|
46
|
+
* mismatch is the regression the fix-gen LLM prompt targets.
|
|
47
|
+
*/
|
|
48
|
+
export function probeVersion() {
|
|
49
|
+
// SEEDED BUG (T11988): should be `return 1` — intentional off-by-one for
|
|
50
|
+
// the seeded-code-regression end-to-end fix-gen scenario.
|
|
51
|
+
return 2;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Build the `selfimprove.probe` response payload.
|
|
55
|
+
*
|
|
56
|
+
* Returns `{ probe: 'ok', version: <probeVersion()> }` — the envelope `data`
|
|
57
|
+
* block the `selfimprove.probe` query op emits.
|
|
58
|
+
*
|
|
59
|
+
* @returns The probe response payload.
|
|
60
|
+
*/
|
|
61
|
+
export function buildProbePayload() {
|
|
62
|
+
return { probe: 'ok', version: probeVersion() };
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=probe-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probe-helper.js","sourceRoot":"","sources":["../../src/selfimprove/probe-helper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,YAAY;IAC1B,yEAAyE;IACzE,0DAA0D;IAC1D,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "seeded-code-regression",
|
|
3
|
+
"envelopes": [
|
|
4
|
+
{
|
|
5
|
+
"success": true,
|
|
6
|
+
"meta": {
|
|
7
|
+
"gateway": "query",
|
|
8
|
+
"domain": "selfimprove",
|
|
9
|
+
"operation": "probe",
|
|
10
|
+
"source": "rpc"
|
|
11
|
+
},
|
|
12
|
+
"data": {
|
|
13
|
+
"probe": "ok",
|
|
14
|
+
"version": 1
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "seeded-code-regression",
|
|
3
|
+
"description": "Seeded code-regression scenario for end-to-end fix-gen proof (T11988). A deliberately broken selfimprove helper returns the wrong value; the regression is detectable from the replay envelope and fixable by a targeted one-line code patch.",
|
|
4
|
+
"ops": [
|
|
5
|
+
{
|
|
6
|
+
"gateway": "query",
|
|
7
|
+
"domain": "selfimprove",
|
|
8
|
+
"operation": "probe",
|
|
9
|
+
"params": { "scenario": "seeded-code-regression" }
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
}
|
package/dist/setup/index.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ export { createProjectConventionsSection } from './sections/project-conventions.
|
|
|
27
27
|
export { createSentientSection } from './sections/sentient.js';
|
|
28
28
|
export { createTelemetrySection } from './sections/telemetry.js';
|
|
29
29
|
export { createVerificationSection, type VerificationCheck, } from './sections/verification.js';
|
|
30
|
+
export { printWhoamiSummaryAndOfferTui } from './whoami-summary.js';
|
|
30
31
|
export { StubWizardIO, WizardFatalError, WizardInterruptError, type WizardIO, type WizardOptions, WizardRunner, type WizardRunResult, type WizardSection, type WizardSectionResult, type WizardSectionRunner, } from './wizard.js';
|
|
31
32
|
/**
|
|
32
33
|
* Construct every built-in {@link WizardSectionRunner} in canonical order.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/setup/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAM1E,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGrE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,yBAAyB,EACzB,KAAK,iBAAiB,GACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,YAAY,EACZ,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,cAAmB,GAAG,mBAAmB,EAAE,CAazF;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,cAAmB,GAAG,YAAY,CAEpF"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/setup/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAM1E,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGrE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,yBAAyB,EACzB,KAAK,iBAAiB,GACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,YAAY,EACZ,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,cAAmB,GAAG,mBAAmB,EAAE,CAazF;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,cAAmB,GAAG,YAAY,CAEpF"}
|
package/dist/setup/index.js
CHANGED
|
@@ -37,6 +37,7 @@ export { createProjectConventionsSection } from './sections/project-conventions.
|
|
|
37
37
|
export { createSentientSection } from './sections/sentient.js';
|
|
38
38
|
export { createTelemetrySection } from './sections/telemetry.js';
|
|
39
39
|
export { createVerificationSection, } from './sections/verification.js';
|
|
40
|
+
export { printWhoamiSummaryAndOfferTui } from './whoami-summary.js';
|
|
40
41
|
export { StubWizardIO, WizardFatalError, WizardInterruptError, WizardRunner, } from './wizard.js';
|
|
41
42
|
/**
|
|
42
43
|
* Construct every built-in {@link WizardSectionRunner} in canonical order.
|
package/dist/setup/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/setup/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAuB,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,YAAY,EAA4B,MAAM,aAAa,CAAC;AAErE,gFAAgF;AAChF,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAuB,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,yBAAyB,GAE1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EAGpB,YAAY,GAKb,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAA0B,EAAE;IAChE,OAAO;QACL,gBAAgB,CAAC,OAAO,CAAC;QACzB,wBAAwB,EAAE;QAC1B,qBAAqB,EAAE;QACvB,qBAAqB,EAAE;QACvB,+BAA+B,EAAE;QACjC,oBAAoB,EAAE;QACtB,kBAAkB,EAAE;QACpB,yBAAyB,EAAE;QAC3B,sBAAsB,EAAE;QACxB,yBAAyB,EAAE;KAC5B,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CAAC,UAA0B,EAAE;IACpE,OAAO,IAAI,YAAY,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1D,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/setup/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAuB,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,YAAY,EAA4B,MAAM,aAAa,CAAC;AAErE,gFAAgF;AAChF,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAuB,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,yBAAyB,GAE1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EAGpB,YAAY,GAKb,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAA0B,EAAE;IAChE,OAAO;QACL,gBAAgB,CAAC,OAAO,CAAC;QACzB,wBAAwB,EAAE;QAC1B,qBAAqB,EAAE;QACvB,qBAAqB,EAAE;QACvB,+BAA+B,EAAE;QACjC,oBAAoB,EAAE;QACtB,kBAAkB,EAAE;QACpB,yBAAyB,EAAE;QAC3B,sBAAsB,EAAE;QACxB,yBAAyB,EAAE;KAC5B,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CAAC,UAA0B,EAAE;IACpE,OAAO,IAAI,YAAY,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
* @task T11726
|
|
30
30
|
* @epic T11671 (E6-ONBOARDING-FRONT-DOOR)
|
|
31
31
|
*/
|
|
32
|
-
import type {
|
|
32
|
+
import type { LocalModelFitEnvelope } from '../../llm/local-model-fit.js';
|
|
33
|
+
import type { WizardIO, WizardSectionRunner } from '../wizard.js';
|
|
33
34
|
/**
|
|
34
35
|
* Build the `models-roles` section runner (T11726).
|
|
35
36
|
*
|
|
@@ -37,4 +38,34 @@ import type { WizardSectionRunner } from '../wizard.js';
|
|
|
37
38
|
* @task T11726
|
|
38
39
|
*/
|
|
39
40
|
export declare function createModelsRolesSection(): WizardSectionRunner;
|
|
41
|
+
/**
|
|
42
|
+
* Injectable dependency for the Ollama model picker — lets tests stub out
|
|
43
|
+
* `rankLocalModelFit` without reaching into the real OS/network layer.
|
|
44
|
+
*
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
export type LocalModelFitRanker = () => Promise<LocalModelFitEnvelope>;
|
|
48
|
+
/**
|
|
49
|
+
* Interactive Ollama model picker driven by fit-gated recommendations (T11983).
|
|
50
|
+
*
|
|
51
|
+
* Behaviour:
|
|
52
|
+
* - Calls `rankLocalModelFit` to detect hardware + Ollama state.
|
|
53
|
+
* - Below the 4 GB floor → informs the user (cloud-only guidance) and returns
|
|
54
|
+
* `null` (caller skips the binding).
|
|
55
|
+
* - Above the floor with recommendations → presents a ranked pick list of
|
|
56
|
+
* 2–3 candidates (never auto-selects, never auto-pulls — RECOMMEND-NEVER-KILL).
|
|
57
|
+
* - Already-pulled models are surfaced first with a `[pulled]` tag.
|
|
58
|
+
* - Free-text fallback offered as the last option so the user can type any tag.
|
|
59
|
+
* - Returns the chosen model tag, or `null` if the user skipped.
|
|
60
|
+
*
|
|
61
|
+
* The ranker is injectable so tests can supply a stub envelope without
|
|
62
|
+
* hitting the OS or network.
|
|
63
|
+
*
|
|
64
|
+
* @param io - Wizard I/O surface.
|
|
65
|
+
* @param ranker - Override the fit ranker for tests (defaults to the real one).
|
|
66
|
+
* @returns The chosen Ollama model tag, or `null` when the user skipped / below floor.
|
|
67
|
+
*
|
|
68
|
+
* @task T11983
|
|
69
|
+
*/
|
|
70
|
+
export declare function _pickOllamaModelInteractive(io: WizardIO, ranker?: LocalModelFitRanker): Promise<string | null>;
|
|
40
71
|
//# sourceMappingURL=models-roles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models-roles.d.ts","sourceRoot":"","sources":["../../../src/setup/sections/models-roles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAUH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"models-roles.d.ts","sourceRoot":"","sources":["../../../src/setup/sections/models-roles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAUH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,KAAK,EAAE,QAAQ,EAAiB,mBAAmB,EAAE,MAAM,cAAc,CAAC;AA8CjF;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,mBAAmB,CAqJ9D;AAoCD;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAevE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,2BAA2B,CAC/C,EAAE,EAAE,QAAQ,EACZ,MAAM,GAAE,mBAAgD,GACvD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgExB"}
|