@duetso/agent 0.1.201 → 0.2.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 +43 -9
- package/dist/package.json +1 -1
- package/dist/src/cli/help.d.ts +1 -0
- package/dist/src/cli/help.d.ts.map +1 -1
- package/dist/src/cli/help.js +73 -26
- package/dist/src/cli/help.js.map +1 -1
- package/dist/src/cli/inline-slash.js +1 -1
- package/dist/src/cli/login.d.ts +2 -3
- package/dist/src/cli/login.d.ts.map +1 -1
- package/dist/src/cli/login.js +17 -32
- package/dist/src/cli/login.js.map +1 -1
- package/dist/src/cli/memory-add.d.ts +8 -1
- package/dist/src/cli/memory-add.d.ts.map +1 -1
- package/dist/src/cli/memory-add.js +49 -53
- package/dist/src/cli/memory-add.js.map +1 -1
- package/dist/src/cli/memory-db.d.ts +23 -0
- package/dist/src/cli/memory-db.d.ts.map +1 -1
- package/dist/src/cli/memory-db.js +48 -1
- package/dist/src/cli/memory-db.js.map +1 -1
- package/dist/src/cli/memory-json.d.ts +67 -0
- package/dist/src/cli/memory-json.d.ts.map +1 -0
- package/dist/src/cli/memory-json.js +28 -0
- package/dist/src/cli/memory-json.js.map +1 -0
- package/dist/src/cli/memory-query.d.ts +20 -1
- package/dist/src/cli/memory-query.d.ts.map +1 -1
- package/dist/src/cli/memory-query.js +45 -20
- package/dist/src/cli/memory-query.js.map +1 -1
- package/dist/src/cli/memory-recall.d.ts +53 -0
- package/dist/src/cli/memory-recall.d.ts.map +1 -0
- package/dist/src/cli/memory-recall.js +217 -0
- package/dist/src/cli/memory-recall.js.map +1 -0
- package/dist/src/cli/memory.d.ts +3 -1
- package/dist/src/cli/memory.d.ts.map +1 -1
- package/dist/src/cli/memory.js +10 -4
- package/dist/src/cli/memory.js.map +1 -1
- package/dist/src/cli/model-gateway.d.ts +3 -3
- package/dist/src/cli/model-gateway.js +3 -3
- package/dist/src/cli/rpc.d.ts +19 -5
- package/dist/src/cli/rpc.d.ts.map +1 -1
- package/dist/src/cli/rpc.js +20 -19
- package/dist/src/cli/rpc.js.map +1 -1
- package/dist/src/cli/run.d.ts +8 -0
- package/dist/src/cli/run.d.ts.map +1 -1
- package/dist/src/cli/run.js +7 -20
- package/dist/src/cli/run.js.map +1 -1
- package/dist/src/cli/send-feedback.d.ts +1 -1
- package/dist/src/cli/send-feedback.js +1 -1
- package/dist/src/cli/shared.d.ts +16 -3
- package/dist/src/cli/shared.d.ts.map +1 -1
- package/dist/src/cli/shared.js +19 -4
- package/dist/src/cli/shared.js.map +1 -1
- package/dist/src/cli/train.d.ts.map +1 -1
- package/dist/src/cli/train.js +40 -23
- package/dist/src/cli/train.js.map +1 -1
- package/dist/src/cli.d.ts +1 -0
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +1 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/lib/duet-api-url.d.ts +9 -0
- package/dist/src/lib/duet-api-url.d.ts.map +1 -0
- package/dist/src/lib/duet-api-url.js +18 -0
- package/dist/src/lib/duet-api-url.js.map +1 -0
- package/dist/src/lib/feedback.d.ts +1 -1
- package/dist/src/lib/feedback.js +4 -4
- package/dist/src/lib/feedback.js.map +1 -1
- package/dist/src/lib/login.d.ts +24 -21
- package/dist/src/lib/login.d.ts.map +1 -1
- package/dist/src/lib/login.js +50 -114
- package/dist/src/lib/login.js.map +1 -1
- package/dist/src/memory/embedding.d.ts +20 -15
- package/dist/src/memory/embedding.d.ts.map +1 -1
- package/dist/src/memory/embedding.js +26 -20
- package/dist/src/memory/embedding.js.map +1 -1
- package/dist/src/memory/recall.d.ts +44 -0
- package/dist/src/memory/recall.d.ts.map +1 -1
- package/dist/src/memory/recall.js +92 -6
- package/dist/src/memory/recall.js.map +1 -1
- package/dist/src/model-resolution/duet-gateway.d.ts +4 -3
- package/dist/src/model-resolution/duet-gateway.d.ts.map +1 -1
- package/dist/src/model-resolution/duet-gateway.js +12 -6
- package/dist/src/model-resolution/duet-gateway.js.map +1 -1
- package/dist/src/tui/app.d.ts +2 -2
- package/dist/src/tui/app.d.ts.map +1 -1
- package/dist/src/tui/app.js +20 -2
- package/dist/src/tui/app.js.map +1 -1
- package/dist/src/tui/paste-controller.d.ts +3 -0
- package/dist/src/tui/paste-controller.d.ts.map +1 -1
- package/dist/src/tui/paste-controller.js +25 -0
- package/dist/src/tui/paste-controller.js.map +1 -1
- package/dist/src/tui/session-subscription.d.ts +10 -0
- package/dist/src/tui/session-subscription.d.ts.map +1 -1
- package/dist/src/tui/session-subscription.js +22 -5
- package/dist/src/tui/session-subscription.js.map +1 -1
- package/dist/src/tui/slash-commands.d.ts +4 -4
- package/dist/src/tui/slash-commands.js +4 -4
- package/dist/src/tui/step-renderer.d.ts +4 -0
- package/dist/src/tui/step-renderer.d.ts.map +1 -1
- package/dist/src/tui/step-renderer.js +41 -37
- package/dist/src/tui/step-renderer.js.map +1 -1
- package/dist/src/tui/tool-formatters.d.ts +2 -2
- package/dist/src/tui/tool-formatters.d.ts.map +1 -1
- package/dist/src/turn-runner/agent-events.d.ts +12 -1
- package/dist/src/turn-runner/agent-events.d.ts.map +1 -1
- package/dist/src/turn-runner/agent-events.js +60 -42
- package/dist/src/turn-runner/agent-events.js.map +1 -1
- package/dist/src/turn-runner/tools.d.ts.map +1 -1
- package/dist/src/turn-runner/tools.js +15 -54
- package/dist/src/turn-runner/tools.js.map +1 -1
- package/dist/src/turn-runner/turn-runner.d.ts +2 -0
- package/dist/src/turn-runner/turn-runner.d.ts.map +1 -1
- package/dist/src/turn-runner/turn-runner.js +4 -2
- package/dist/src/turn-runner/turn-runner.js.map +1 -1
- package/dist/src/types/memory.d.ts +11 -0
- package/dist/src/types/memory.d.ts.map +1 -1
- package/dist/src/types/protocol.d.ts +22 -3
- package/dist/src/types/protocol.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/src/lib/duet-app-url.d.ts +0 -10
- package/dist/src/lib/duet-app-url.d.ts.map +0 -1
- package/dist/src/lib/duet-app-url.js +0 -19
- package/dist/src/lib/duet-app-url.js.map +0 -1
- package/dist/src/lib/sync-skills.d.ts +0 -54
- package/dist/src/lib/sync-skills.d.ts.map +0 -1
- package/dist/src/lib/sync-skills.js +0 -215
- package/dist/src/lib/sync-skills.js.map +0 -1
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getDuetGatewayBaseUrl } from "../model-resolution/duet-gateway.js";
|
|
2
2
|
/**
|
|
3
|
-
* Client for
|
|
3
|
+
* Client for Duet gateway embeddings.
|
|
4
4
|
*
|
|
5
|
-
* Routes through the Duet
|
|
6
|
-
* by the user's existing `DUET_API_KEY`. Logged-in users get embeddings
|
|
7
|
-
*
|
|
8
|
-
* in a different provider key here so the runtime stays single-path.
|
|
5
|
+
* Routes through the Duet model gateway (`POST <gateway>/v1/embeddings`) gated
|
|
6
|
+
* by the user's existing `DUET_API_KEY`. Logged-in users get embeddings through
|
|
7
|
+
* the same gateway origin as model traffic; we deliberately do not expose a way
|
|
8
|
+
* to plug in a different provider key here so the runtime stays single-path.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* invalidate stale rows by tag.
|
|
14
|
-
* concrete model name — only the dimension width, which has to match
|
|
15
|
-
* the pgvector column.
|
|
10
|
+
* The requested model defaults to the current server-side embedding model and
|
|
11
|
+
* can be overridden with `DUET_EMBEDDING_MODEL`. We store the model echoed by
|
|
12
|
+
* the OpenAI-compatible response alongside each vector so a future model swap
|
|
13
|
+
* can invalidate stale rows by tag.
|
|
16
14
|
*
|
|
17
15
|
* Behavior:
|
|
18
16
|
* - Inputs are batched up to `EMBEDDING_BATCH_LIMIT` per HTTP call so
|
|
@@ -25,11 +23,14 @@ import { resolveDuetAppBaseUrl } from "../lib/duet-app-url.js";
|
|
|
25
23
|
* tool catches it and logs once; the backfill worker logs and
|
|
26
24
|
* sleeps until the user logs in).
|
|
27
25
|
*/
|
|
28
|
-
/** Embedding dimensions
|
|
26
|
+
/** Embedding dimensions expected by the pgvector column. */
|
|
29
27
|
export const EMBEDDING_DIMENSIONS = 3072;
|
|
30
28
|
/** Maximum input strings sent in a single embedding request. */
|
|
31
29
|
export const EMBEDDING_BATCH_LIMIT = 100;
|
|
32
|
-
|
|
30
|
+
/** Current Duet embedding default; matches the 3072-dim pgvector table. */
|
|
31
|
+
export const DEFAULT_DUET_EMBEDDING_MODEL = "google/gemini-embedding-2";
|
|
32
|
+
export const DUET_EMBEDDING_MODEL_ENV = "DUET_EMBEDDING_MODEL";
|
|
33
|
+
const ENDPOINT_PATH = "/v1/embeddings";
|
|
33
34
|
const MAX_RETRIES = 3;
|
|
34
35
|
const BASE_BACKOFF_MS = 500;
|
|
35
36
|
export class EmbeddingUnavailableError extends Error {
|
|
@@ -44,7 +45,8 @@ export class EmbeddingUnavailableError extends Error {
|
|
|
44
45
|
* `recall_memory` query so connection reuse can amortize TLS setup.
|
|
45
46
|
*/
|
|
46
47
|
export function createEmbeddingClient(options = {}) {
|
|
47
|
-
const baseUrl = options.baseUrl ??
|
|
48
|
+
const baseUrl = options.baseUrl ?? getDuetGatewayBaseUrl();
|
|
49
|
+
const requestedModel = options.model ?? resolveEmbeddingModel();
|
|
48
50
|
const fetchImpl = options.fetch ?? fetch;
|
|
49
51
|
return async (inputs) => {
|
|
50
52
|
if (inputs.length === 0)
|
|
@@ -56,12 +58,13 @@ export function createEmbeddingClient(options = {}) {
|
|
|
56
58
|
throw new EmbeddingUnavailableError("DUET_API_KEY is not set; embeddings unavailable. Run `duet login` to enable hybrid memory retrieval.");
|
|
57
59
|
}
|
|
58
60
|
const embeddings = [];
|
|
59
|
-
let
|
|
61
|
+
let responseModel = "";
|
|
60
62
|
for (let offset = 0; offset < inputs.length; offset += EMBEDDING_BATCH_LIMIT) {
|
|
61
63
|
const slice = inputs.slice(offset, offset + EMBEDDING_BATCH_LIMIT);
|
|
62
64
|
const batch = await postBatch({
|
|
63
65
|
url: `${baseUrl}${ENDPOINT_PATH}`,
|
|
64
66
|
apiKey,
|
|
67
|
+
model: requestedModel,
|
|
65
68
|
inputs: slice,
|
|
66
69
|
fetchImpl,
|
|
67
70
|
});
|
|
@@ -73,9 +76,9 @@ export function createEmbeddingClient(options = {}) {
|
|
|
73
76
|
// Take the last one so the caller sees what the server most
|
|
74
77
|
// recently agreed to; mid-call mismatches are not a thing we
|
|
75
78
|
// currently need to reconcile.
|
|
76
|
-
|
|
79
|
+
responseModel = batch.model;
|
|
77
80
|
}
|
|
78
|
-
return { embeddings, model };
|
|
81
|
+
return { embeddings, model: responseModel };
|
|
79
82
|
};
|
|
80
83
|
}
|
|
81
84
|
async function postBatch(options) {
|
|
@@ -88,11 +91,11 @@ async function postBatch(options) {
|
|
|
88
91
|
authorization: `Bearer ${options.apiKey}`,
|
|
89
92
|
"content-type": "application/json",
|
|
90
93
|
},
|
|
91
|
-
body: JSON.stringify({
|
|
94
|
+
body: JSON.stringify({ model: options.model, input: options.inputs }),
|
|
92
95
|
});
|
|
93
96
|
if (response.ok) {
|
|
94
97
|
const body = (await response.json());
|
|
95
|
-
return { embeddings: body.data.
|
|
98
|
+
return { embeddings: body.data.map((entry) => entry.embedding), model: body.model };
|
|
96
99
|
}
|
|
97
100
|
// 4xx errors (auth, malformed input) will not improve on retry;
|
|
98
101
|
// surface them immediately so callers see the real cause.
|
|
@@ -123,6 +126,9 @@ function resolveApiKey(override) {
|
|
|
123
126
|
return override;
|
|
124
127
|
return process.env.DUET_API_KEY;
|
|
125
128
|
}
|
|
129
|
+
function resolveEmbeddingModel() {
|
|
130
|
+
return process.env[DUET_EMBEDDING_MODEL_ENV]?.trim() || DEFAULT_DUET_EMBEDDING_MODEL;
|
|
131
|
+
}
|
|
126
132
|
async function safeReadText(response) {
|
|
127
133
|
try {
|
|
128
134
|
return await response.text();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedding.js","sourceRoot":"","sources":["../../../src/memory/embedding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"embedding.js","sourceRoot":"","sources":["../../../src/memory/embedding.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,40 @@ export interface RecallMemoryResult {
|
|
|
36
36
|
vectorSearchSucceeded: boolean;
|
|
37
37
|
}
|
|
38
38
|
export declare function recallMemory(options: RecallMemoryOptions): Promise<RecallMemoryResult>;
|
|
39
|
+
export interface RecallMemoryExpandedOptions extends RecallMemoryOptions {
|
|
40
|
+
/**
|
|
41
|
+
* When set, generate paraphrases of `query` with this model and fuse a
|
|
42
|
+
* recall run per phrasing on top of the original. Broadens recall on vague
|
|
43
|
+
* queries; leave undefined to run the single-query path. Callers that lack
|
|
44
|
+
* a model (or want to keep latency low) simply omit it.
|
|
45
|
+
*/
|
|
46
|
+
expansionModel?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface RecallMemoryExpandedResult extends RecallMemoryResult {
|
|
49
|
+
/** Whether paraphrase expansion actually contributed extra query runs. */
|
|
50
|
+
expanded: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Final cross-run RRF fused relevance score per observation id — the same
|
|
53
|
+
* score that ordered {@link RecallMemoryResult.observations}. Keyed by id so
|
|
54
|
+
* callers that serialize each row (e.g. `memory recall --json`) can attach
|
|
55
|
+
* `relevanceScore` without recomputing fusion. The `observations` array and
|
|
56
|
+
* its ordering are unchanged; callers may ignore this field entirely.
|
|
57
|
+
*/
|
|
58
|
+
relevanceById: Map<string, number>;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The full recall pipeline shared by the `recall_memory` tool and the
|
|
62
|
+
* `duet memory recall` CLI: optionally expand the query into paraphrases,
|
|
63
|
+
* run {@link recallMemory} once per phrasing, and fuse the ranked result
|
|
64
|
+
* lists with Reciprocal Rank Fusion so a row that scores well on any
|
|
65
|
+
* phrasing rises to the top. Keeping this in one place is what makes the
|
|
66
|
+
* tool and the CLI return identical rankings for the same query.
|
|
67
|
+
*
|
|
68
|
+
* With no `expansionModel` (or when paraphrase generation fails) this is
|
|
69
|
+
* exactly a single {@link recallMemory} call, so the single-query path stays
|
|
70
|
+
* the cheap default.
|
|
71
|
+
*/
|
|
72
|
+
export declare function recallMemoryExpanded(options: RecallMemoryExpandedOptions): Promise<RecallMemoryExpandedResult>;
|
|
39
73
|
interface ScoredHit {
|
|
40
74
|
id: string;
|
|
41
75
|
rank: number;
|
|
@@ -63,5 +97,15 @@ interface ScoredHit {
|
|
|
63
97
|
* tiebreak.
|
|
64
98
|
*/
|
|
65
99
|
export declare function reciprocalRankFusion(rankedLists: ScoredHit[][]): string[];
|
|
100
|
+
/**
|
|
101
|
+
* Like {@link reciprocalRankFusion}, but returns each id paired with its final
|
|
102
|
+
* biased fused score (`sum(1 / (RRF_K + rank)) * kindPriorityBias`) in the same
|
|
103
|
+
* descending order. Used where callers need the ranking score itself — e.g. to
|
|
104
|
+
* surface `relevanceScore` per row — not just the ordered ids.
|
|
105
|
+
*/
|
|
106
|
+
export declare function reciprocalRankFusionScored(rankedLists: ScoredHit[][]): Array<{
|
|
107
|
+
id: string;
|
|
108
|
+
score: number;
|
|
109
|
+
}>;
|
|
66
110
|
export {};
|
|
67
111
|
//# sourceMappingURL=recall.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../../src/memory/recall.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../../src/memory/recall.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AA2DlD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,OAAO,EAAE,aAAa,CAAC;IACvB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,0FAA0F;IAC1F,qBAAqB,EAAE,OAAO,CAAC;IAC/B,mGAAmG;IACnG,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAoC5F;AAED,MAAM,WAAW,2BAA4B,SAAQ,mBAAmB;IACtE;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;IACpE,0EAA0E;IAC1E,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,0BAA0B,CAAC,CA8CrC;AAgCD,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,wIAAwI;IACxI,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,gIAAgI;IAChI,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC;AAyGD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,GAAG,MAAM,EAAE,CAEzE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,SAAS,EAAE,EAAE,GACzB,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAsBtC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { Type } from "typebox";
|
|
2
|
+
import { generateStructuredOutput } from "../core/structured-output.js";
|
|
1
3
|
/**
|
|
2
4
|
* Hybrid retrieval over the durable memory database.
|
|
3
5
|
*
|
|
@@ -84,6 +86,82 @@ export async function recallMemory(options) {
|
|
|
84
86
|
});
|
|
85
87
|
return result ?? { observations: [], vectorSearchAttempted: false, vectorSearchSucceeded: false };
|
|
86
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* The full recall pipeline shared by the `recall_memory` tool and the
|
|
91
|
+
* `duet memory recall` CLI: optionally expand the query into paraphrases,
|
|
92
|
+
* run {@link recallMemory} once per phrasing, and fuse the ranked result
|
|
93
|
+
* lists with Reciprocal Rank Fusion so a row that scores well on any
|
|
94
|
+
* phrasing rises to the top. Keeping this in one place is what makes the
|
|
95
|
+
* tool and the CLI return identical rankings for the same query.
|
|
96
|
+
*
|
|
97
|
+
* With no `expansionModel` (or when paraphrase generation fails) this is
|
|
98
|
+
* exactly a single {@link recallMemory} call, so the single-query path stays
|
|
99
|
+
* the cheap default.
|
|
100
|
+
*/
|
|
101
|
+
export async function recallMemoryExpanded(options) {
|
|
102
|
+
const limit = options.limit ?? 8;
|
|
103
|
+
const queries = [options.query];
|
|
104
|
+
if (options.expansionModel) {
|
|
105
|
+
queries.push(...(await generateQueryParaphrases(options.query, options.expansionModel)));
|
|
106
|
+
}
|
|
107
|
+
const expanded = queries.length > 1;
|
|
108
|
+
const runs = await Promise.all(queries.map((query) => recallMemory({
|
|
109
|
+
session: options.session,
|
|
110
|
+
...(options.embed ? { embed: options.embed } : {}),
|
|
111
|
+
query,
|
|
112
|
+
// Over-fetch per run so the post-fusion top-K is drawn from a richer
|
|
113
|
+
// candidate pool when expansion is on.
|
|
114
|
+
limit: expanded ? limit * 2 : limit,
|
|
115
|
+
...(options.scope ? { scope: options.scope } : {}),
|
|
116
|
+
...(options.sessionId ? { sessionId: options.sessionId } : {}),
|
|
117
|
+
})));
|
|
118
|
+
const fused = reciprocalRankFusionScored(runs.map((run) => run.observations.map((observation, rank) => ({ id: observation.id, rank })))).slice(0, limit);
|
|
119
|
+
const byId = new Map(runs.flatMap((run) => run.observations).map((observation) => [observation.id, observation]));
|
|
120
|
+
const relevanceById = new Map();
|
|
121
|
+
const observations = [];
|
|
122
|
+
for (const { id, score } of fused) {
|
|
123
|
+
const observation = byId.get(id);
|
|
124
|
+
if (!observation)
|
|
125
|
+
continue;
|
|
126
|
+
observations.push(observation);
|
|
127
|
+
relevanceById.set(id, score);
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
observations,
|
|
131
|
+
vectorSearchAttempted: runs.some((run) => run.vectorSearchAttempted),
|
|
132
|
+
vectorSearchSucceeded: runs.some((run) => run.vectorSearchSucceeded),
|
|
133
|
+
expanded,
|
|
134
|
+
relevanceById,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
const paraphraseSchema = Type.Object({
|
|
138
|
+
paraphrases: Type.Array(Type.String(), { minItems: 1, maxItems: 4 }),
|
|
139
|
+
});
|
|
140
|
+
/**
|
|
141
|
+
* Rewrite a recall query into up to two alternate phrasings via a cheap
|
|
142
|
+
* model. Two is the sweet spot in the gbrain ablation: enough breadth to
|
|
143
|
+
* catch reworded queries, few enough that latency stays low. Returns an
|
|
144
|
+
* empty list on any failure so the surrounding pipeline degrades to the
|
|
145
|
+
* original query alone rather than erroring.
|
|
146
|
+
*/
|
|
147
|
+
async function generateQueryParaphrases(query, model) {
|
|
148
|
+
try {
|
|
149
|
+
const result = await generateStructuredOutput({
|
|
150
|
+
model,
|
|
151
|
+
tool: {
|
|
152
|
+
name: "emit_paraphrases",
|
|
153
|
+
description: "Return alternate phrasings of the user's query.",
|
|
154
|
+
parameters: paraphraseSchema,
|
|
155
|
+
},
|
|
156
|
+
systemPrompt: "You rewrite a memory-recall query into 2 alternative phrasings. Keep the same intent; vary terminology. Do not answer the query.",
|
|
157
|
+
prompt: `Original query: ${query}`,
|
|
158
|
+
});
|
|
159
|
+
return result.paraphrases.slice(0, 2);
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
return [];
|
|
163
|
+
}
|
|
164
|
+
}
|
|
87
165
|
async function keywordSearch(db, query, scope, sessionId) {
|
|
88
166
|
const trimmed = query.trim();
|
|
89
167
|
if (!trimmed)
|
|
@@ -172,6 +250,15 @@ async function runScopedQuery(db, baseSql, orderSql, baseParams, scope, sessionI
|
|
|
172
250
|
* tiebreak.
|
|
173
251
|
*/
|
|
174
252
|
export function reciprocalRankFusion(rankedLists) {
|
|
253
|
+
return reciprocalRankFusionScored(rankedLists).map((entry) => entry.id);
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Like {@link reciprocalRankFusion}, but returns each id paired with its final
|
|
257
|
+
* biased fused score (`sum(1 / (RRF_K + rank)) * kindPriorityBias`) in the same
|
|
258
|
+
* descending order. Used where callers need the ranking score itself — e.g. to
|
|
259
|
+
* surface `relevanceScore` per row — not just the ordered ids.
|
|
260
|
+
*/
|
|
261
|
+
export function reciprocalRankFusionScored(rankedLists) {
|
|
175
262
|
const scores = new Map();
|
|
176
263
|
let order = 0;
|
|
177
264
|
for (const list of rankedLists) {
|
|
@@ -187,14 +274,13 @@ export function reciprocalRankFusion(rankedLists) {
|
|
|
187
274
|
}
|
|
188
275
|
}
|
|
189
276
|
return Array.from(scores.entries())
|
|
277
|
+
.map(([id, entry]) => ({ id, score: entry.score * entry.prior, firstSeen: entry.firstSeen }))
|
|
190
278
|
.sort((a, b) => {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
return scoreB - scoreA;
|
|
195
|
-
return a[1].firstSeen - b[1].firstSeen;
|
|
279
|
+
if (b.score !== a.score)
|
|
280
|
+
return b.score - a.score;
|
|
281
|
+
return a.firstSeen - b.firstSeen;
|
|
196
282
|
})
|
|
197
|
-
.map((
|
|
283
|
+
.map(({ id, score }) => ({ id, score }));
|
|
198
284
|
}
|
|
199
285
|
/**
|
|
200
286
|
* Multiplicative recall prior for one hit: `kindBias * priorityBias`, each
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall.js","sourceRoot":"","sources":["../../../src/memory/recall.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"recall.js","sourceRoot":"","sources":["../../../src/memory/recall.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,15 +5,16 @@ import { type Model } from "@earendil-works/pi-ai";
|
|
|
5
5
|
* parallel model registry, the `duet-gateway` provider piggybacks on upstream
|
|
6
6
|
* model definitions and only swaps `baseUrl` to point at Duet.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* `DUET_GATEWAY_BASE_URL` can point model traffic at a dedicated gateway
|
|
9
|
+
* origin. When it is unset, model traffic goes directly to
|
|
10
|
+
* `https://gateway.duet.so`.
|
|
11
11
|
*
|
|
12
12
|
* Auth flows through pi-ai's existing vercel-ai-gateway path, which reads
|
|
13
13
|
* `AI_GATEWAY_API_KEY` — the CLI shims that env var from `DUET_API_KEY` at
|
|
14
14
|
* startup so users only need to set the duet token.
|
|
15
15
|
*/
|
|
16
16
|
export declare const DUET_GATEWAY_API_KEY_ENV = "DUET_API_KEY";
|
|
17
|
+
export declare const DUET_GATEWAY_BASE_URL_ENV = "DUET_GATEWAY_BASE_URL";
|
|
17
18
|
export declare function getDuetGatewayBaseUrl(): string;
|
|
18
19
|
/**
|
|
19
20
|
* Resolve a `duet-gateway:<modelId>` string to a Model.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duet-gateway.d.ts","sourceRoot":"","sources":["../../../src/model-resolution/duet-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"duet-gateway.d.ts","sourceRoot":"","sources":["../../../src/model-resolution/duet-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAO3E;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AACvD,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AAEjE,wBAAgB,qBAAqB,IAAI,MAAM,CAI9C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CASnE;AAuED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAK7F;AAaD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK1E"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { getEnvApiKey, getModel } from "@earendil-works/pi-ai";
|
|
2
|
-
|
|
3
|
-
const GATEWAY_PATH = "/api/v1/ai-gateway";
|
|
2
|
+
const DEFAULT_DUET_GATEWAY_BASE_URL = "https://gateway.duet.so";
|
|
4
3
|
const OPENAI_MODEL_PREFIX = "openai/";
|
|
5
4
|
const VERCEL_GATEWAY_BASE_URL = "https://ai-gateway.vercel.sh";
|
|
6
5
|
const OPENAI_BASE_URL = "https://api.openai.com/v1";
|
|
@@ -10,17 +9,21 @@ const OPENAI_BASE_URL = "https://api.openai.com/v1";
|
|
|
10
9
|
* parallel model registry, the `duet-gateway` provider piggybacks on upstream
|
|
11
10
|
* model definitions and only swaps `baseUrl` to point at Duet.
|
|
12
11
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* `DUET_GATEWAY_BASE_URL` can point model traffic at a dedicated gateway
|
|
13
|
+
* origin. When it is unset, model traffic goes directly to
|
|
14
|
+
* `https://gateway.duet.so`.
|
|
16
15
|
*
|
|
17
16
|
* Auth flows through pi-ai's existing vercel-ai-gateway path, which reads
|
|
18
17
|
* `AI_GATEWAY_API_KEY` — the CLI shims that env var from `DUET_API_KEY` at
|
|
19
18
|
* startup so users only need to set the duet token.
|
|
20
19
|
*/
|
|
21
20
|
export const DUET_GATEWAY_API_KEY_ENV = "DUET_API_KEY";
|
|
21
|
+
export const DUET_GATEWAY_BASE_URL_ENV = "DUET_GATEWAY_BASE_URL";
|
|
22
22
|
export function getDuetGatewayBaseUrl() {
|
|
23
|
-
|
|
23
|
+
const override = process.env[DUET_GATEWAY_BASE_URL_ENV]?.trim();
|
|
24
|
+
if (override)
|
|
25
|
+
return stripTrailingSlash(override);
|
|
26
|
+
return DEFAULT_DUET_GATEWAY_BASE_URL;
|
|
24
27
|
}
|
|
25
28
|
/**
|
|
26
29
|
* Resolve a `duet-gateway:<modelId>` string to a Model.
|
|
@@ -125,6 +128,9 @@ function getDuetGatewayBaseUrlForModel(model) {
|
|
|
125
128
|
}
|
|
126
129
|
return getDuetGatewayBaseUrl();
|
|
127
130
|
}
|
|
131
|
+
function stripTrailingSlash(url) {
|
|
132
|
+
return url.endsWith("/") ? url.slice(0, -1) : url;
|
|
133
|
+
}
|
|
128
134
|
/**
|
|
129
135
|
* Resolve the API key for a provider, including the project-local
|
|
130
136
|
* `duet-gateway` provider that pi-ai's built-in env-key map does not
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duet-gateway.js","sourceRoot":"","sources":["../../../src/model-resolution/duet-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAc,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"duet-gateway.js","sourceRoot":"","sources":["../../../src/model-resolution/duet-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAc,MAAM,uBAAuB,CAAC;AAE3E,MAAM,6BAA6B,GAAG,yBAAyB,CAAC;AAChE,MAAM,mBAAmB,GAAG,SAAS,CAAC;AACtC,MAAM,uBAAuB,GAAG,8BAA8B,CAAC;AAC/D,MAAM,eAAe,GAAG,2BAA2B,CAAC;AAEpD;;;;;;;;;;;;;GAaG;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,cAAc,CAAC;AACvD,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AAEjE,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,CAAC;IAChE,IAAI,QAAQ;QAAE,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAClD,OAAO,6BAA6B,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,MAAM,QAAQ,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAErD,OAAO;QACL,GAAG,QAAQ;QACX,QAAQ,EAAE,cAAc;QACxB,EAAE,EAAE,OAAO;QACX,OAAO,EAAE,6BAA6B,CAAC,QAAQ,CAAC;KACjD,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,0BAA0B,CAAC,OAAe;IACjD,IAAI,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACvD,OAAO,CACJ,QAAQ,CAAC,QAAe,EAAE,IAAW,CAA4B;YAClE,0BAA0B,CAAC,OAAO,EAAE,kBAAkB,CAAC,CACxD,CAAC;IACJ,CAAC;IACD,OAAO,CACJ,QAAQ,CAAC,mBAA0B,EAAE,OAAc,CAA4B;QAChF,mBAAmB,CAAC,mBAAmB,EAAE,OAAO,CAAC;QACjD,0BAA0B,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAC1D,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,0BAA0B,CACjC,OAAe,EACf,GAA8C;IAE9C,MAAM,QAAQ,GAAG,GAAG,KAAK,kBAAkB,CAAC;IAC5C,OAAO;QACL,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,GAAG;QACH,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAmB;QACnD,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,uBAAuB;QAC7D,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9C,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;QAC1D,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,MAAM;KAClB,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,qBAAqB,GAAgE;IACzF,mBAAmB,EAAE;QACnB,EAAE,IAAI,EAAE,2BAA2B,EAAE,EAAE,EAAE,0BAA0B,EAAE;QACrE,EAAE,IAAI,EAAE,2BAA2B,EAAE,EAAE,EAAE,2BAA2B,EAAE;KACvE;CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,OAAe;IACnE,MAAM,KAAK,GAAG,qBAAqB,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IACrF,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAe,EAAE,KAAK,CAAC,IAAW,CAA2B,CAAC;IACvF,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1E,CAAC;AAED,SAAS,6BAA6B,CAAC,KAAiB;IACtD,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,IAAI,KAAK,CAAC,GAAG,KAAK,kBAAkB,EAAE,CAAC;QAC3E,OAAO,GAAG,qBAAqB,EAAE,KAAK,CAAC;IACzC,CAAC;IACD,OAAO,qBAAqB,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW;IACrC,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,YAAY,CAAC,QAA8C,CAAC,CAAC;AACtE,CAAC"}
|
package/dist/src/tui/app.d.ts
CHANGED
|
@@ -52,13 +52,13 @@ export interface RunTuiInput {
|
|
|
52
52
|
*/
|
|
53
53
|
onResumeRequest?: (sessionId: string) => void;
|
|
54
54
|
/**
|
|
55
|
-
* Called when the user submits `/
|
|
55
|
+
* Called when the user submits `/clear`. The outer dispatcher should
|
|
56
56
|
* dispose the current session, `manager.create({})`, and re-enter
|
|
57
57
|
* `runTui` with the fresh session and no replayed history. The TUI
|
|
58
58
|
* tears its own renderer down right after invoking this so the
|
|
59
59
|
* dispatcher's `runTui` promise resolves and the loop can rebuild.
|
|
60
60
|
*/
|
|
61
|
-
|
|
61
|
+
onClearRequest?: () => void;
|
|
62
62
|
/**
|
|
63
63
|
* Trailing user-turn exchanges to replay from prior history. Each
|
|
64
64
|
* exchange is the user prompt plus the assistant blocks that followed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/tui/app.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,KAAK,WAAW,EAAmC,MAAM,eAAe,CAAC;AAqBlF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1F,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EACV,iBAAiB,EACjB,iBAAiB,IAAI,sBAAsB,EAC3C,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,uBAAuB,EACvB,+BAA+B,EAC/B,kCAAkC,EAClC,qBAAqB,EACrB,8BAA8B,EAC9B,YAAY,EACZ,oBAAoB,EACpB,4BAA4B,EAC5B,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,eAAe,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,6DAA6D;IAC7D,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/tui/app.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,KAAK,WAAW,EAAmC,MAAM,eAAe,CAAC;AAqBlF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1F,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EACV,iBAAiB,EACjB,iBAAiB,IAAI,sBAAsB,EAC3C,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,uBAAuB,EACvB,+BAA+B,EAC/B,kCAAkC,EAClC,qBAAqB,EACrB,8BAA8B,EAC9B,YAAY,EACZ,oBAAoB,EACpB,4BAA4B,EAC5B,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,eAAe,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,6DAA6D;IAC7D,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CA0XvF"}
|
package/dist/src/tui/app.js
CHANGED
|
@@ -110,6 +110,7 @@ export async function runTui(input) {
|
|
|
110
110
|
};
|
|
111
111
|
const escapeState = { suppress: false };
|
|
112
112
|
const ctrlCState = { suppress: false };
|
|
113
|
+
const popSuppression = { pending: [] };
|
|
113
114
|
const setEscapeSuppress = () => {
|
|
114
115
|
escapeState.suppress = true;
|
|
115
116
|
};
|
|
@@ -161,6 +162,7 @@ export async function runTui(input) {
|
|
|
161
162
|
appendLine,
|
|
162
163
|
appendBlock,
|
|
163
164
|
appendUserBlock,
|
|
165
|
+
popSuppression,
|
|
164
166
|
});
|
|
165
167
|
// Esc cancels the in-flight turn; idle Esc is a no-op.
|
|
166
168
|
function handleEscape() {
|
|
@@ -169,6 +171,9 @@ export async function runTui(input) {
|
|
|
169
171
|
void input.session.interrupt().catch(reportError);
|
|
170
172
|
}
|
|
171
173
|
// Ctrl+C is a small state machine rather than an immediate quit:
|
|
174
|
+
// 0. running turn + empty composer + queued follow-ups → pop the newest
|
|
175
|
+
// queued entry back into the composer (one per press),
|
|
176
|
+
// leaving the turn running.
|
|
172
177
|
// 1. running turn → interrupt it (identical to Esc), no exit prompt.
|
|
173
178
|
// 2. composer text → clear the composer (multiline included) only;
|
|
174
179
|
// attachments, autocomplete, and picker state stay.
|
|
@@ -177,6 +182,19 @@ export async function runTui(input) {
|
|
|
177
182
|
// The exit itself reuses `renderer.destroy()`, the same teardown the old
|
|
178
183
|
// OpenTUI exitOnCtrlC handler used, so shutdown semantics are unchanged.
|
|
179
184
|
function handleCtrlC() {
|
|
185
|
+
if (statusController.isRunning() &&
|
|
186
|
+
ui.inputField.plainText.length === 0 &&
|
|
187
|
+
pasteController.attachments().length === 0) {
|
|
188
|
+
const queue = input.session.getState()?.followUpQueue ?? [];
|
|
189
|
+
const popped = queue.at(-1);
|
|
190
|
+
if (popped) {
|
|
191
|
+
popSuppression.pending.push(popped);
|
|
192
|
+
input.session.editFollowUpQueue({ prompts: queue.slice(0, -1) });
|
|
193
|
+
pasteController.stageImages(popped.images ?? []);
|
|
194
|
+
ui.inputField.insertText(popped.message);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
180
198
|
if (statusController.isRunning()) {
|
|
181
199
|
handleEscape();
|
|
182
200
|
return;
|
|
@@ -250,8 +268,8 @@ export async function runTui(input) {
|
|
|
250
268
|
copyController,
|
|
251
269
|
transcriptWriter,
|
|
252
270
|
appendBlock,
|
|
253
|
-
|
|
254
|
-
input.
|
|
271
|
+
onClear: () => {
|
|
272
|
+
input.onClearRequest?.();
|
|
255
273
|
renderer.destroy();
|
|
256
274
|
},
|
|
257
275
|
setModel: (model) => input.session.setModel(model),
|
package/dist/src/tui/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/tui/app.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/tui/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type PasteEvent, type TextareaRenderable } from "@opentui/core";
|
|
2
2
|
import { type PendingImage } from "./paste.js";
|
|
3
3
|
import type { StatusController } from "./status-controller.js";
|
|
4
|
+
import type { TurnPromptImage } from "../types/protocol.js";
|
|
4
5
|
export interface PasteControllerOptions {
|
|
5
6
|
/** Composer textarea. The controller inserts `[Image #N]` placeholders
|
|
6
7
|
* into its buffer and falls back to text inserts when a clipboard probe
|
|
@@ -57,6 +58,8 @@ export declare class PasteController {
|
|
|
57
58
|
/** Drop all queued attachments. No-op when the queue is already empty so
|
|
58
59
|
* `/clear-images` does not redundantly repaint the hint. */
|
|
59
60
|
clearPendingImages(): void;
|
|
61
|
+
/** Re-stage already-built image attachments from a queued follow-up. */
|
|
62
|
+
stageImages(images: readonly TurnPromptImage[]): void;
|
|
60
63
|
/**
|
|
61
64
|
* Handle a bracketed-paste event from the textarea. Decides synchronously
|
|
62
65
|
* whether the payload is image bytes, a file path, an empty trigger that
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paste-controller.d.ts","sourceRoot":"","sources":["../../../src/tui/paste-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,UAAU,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE3F,OAAO,EAKL,KAAK,YAAY,EAMlB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"paste-controller.d.ts","sourceRoot":"","sources":["../../../src/tui/paste-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,UAAU,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE3F,OAAO,EAKL,KAAK,YAAY,EAMlB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,WAAW,sBAAsB;IACrC;;iEAE6D;IAC7D,UAAU,EAAE,kBAAkB,CAAC;IAC/B;8CAC0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB;iDAC6C;IAC7C,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE;;kCAE8B;IAC9B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;CAClE;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8D;IAC1F,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiD;IAElF,OAAO,CAAC,aAAa,CAAsB;IAC3C;uEACmE;IACnE,OAAO,CAAC,WAAW,CAAK;gBAEZ,OAAO,EAAE,sBAAsB;IAQ3C;+EAC2E;IAC3E,WAAW,IAAI,SAAS,YAAY,EAAE;IAItC;;;;OAIG;IACH,OAAO,IAAI,YAAY,EAAE;IAQzB;iEAC6D;IAC7D,kBAAkB,IAAI,IAAI;IAO1B,wEAAwE;IACxE,WAAW,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,GAAG,IAAI;IAcrD;;;;;OAKG;IACG,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA8FxD;;;;;;;OAOG;IACG,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCzE;;;;;;;;;;;;;;;;;;OAkBG;IACG,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyD3D;;;;;OAKG;IACG,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBzD;;;;OAIG;YACW,sBAAsB;CAyBrC"}
|