@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.
Files changed (125) hide show
  1. package/README.md +43 -9
  2. package/dist/package.json +1 -1
  3. package/dist/src/cli/help.d.ts +1 -0
  4. package/dist/src/cli/help.d.ts.map +1 -1
  5. package/dist/src/cli/help.js +73 -26
  6. package/dist/src/cli/help.js.map +1 -1
  7. package/dist/src/cli/inline-slash.js +1 -1
  8. package/dist/src/cli/login.d.ts +2 -3
  9. package/dist/src/cli/login.d.ts.map +1 -1
  10. package/dist/src/cli/login.js +17 -32
  11. package/dist/src/cli/login.js.map +1 -1
  12. package/dist/src/cli/memory-add.d.ts +8 -1
  13. package/dist/src/cli/memory-add.d.ts.map +1 -1
  14. package/dist/src/cli/memory-add.js +49 -53
  15. package/dist/src/cli/memory-add.js.map +1 -1
  16. package/dist/src/cli/memory-db.d.ts +23 -0
  17. package/dist/src/cli/memory-db.d.ts.map +1 -1
  18. package/dist/src/cli/memory-db.js +48 -1
  19. package/dist/src/cli/memory-db.js.map +1 -1
  20. package/dist/src/cli/memory-json.d.ts +67 -0
  21. package/dist/src/cli/memory-json.d.ts.map +1 -0
  22. package/dist/src/cli/memory-json.js +28 -0
  23. package/dist/src/cli/memory-json.js.map +1 -0
  24. package/dist/src/cli/memory-query.d.ts +20 -1
  25. package/dist/src/cli/memory-query.d.ts.map +1 -1
  26. package/dist/src/cli/memory-query.js +45 -20
  27. package/dist/src/cli/memory-query.js.map +1 -1
  28. package/dist/src/cli/memory-recall.d.ts +53 -0
  29. package/dist/src/cli/memory-recall.d.ts.map +1 -0
  30. package/dist/src/cli/memory-recall.js +217 -0
  31. package/dist/src/cli/memory-recall.js.map +1 -0
  32. package/dist/src/cli/memory.d.ts +3 -1
  33. package/dist/src/cli/memory.d.ts.map +1 -1
  34. package/dist/src/cli/memory.js +10 -4
  35. package/dist/src/cli/memory.js.map +1 -1
  36. package/dist/src/cli/model-gateway.d.ts +3 -3
  37. package/dist/src/cli/model-gateway.js +3 -3
  38. package/dist/src/cli/rpc.d.ts +19 -5
  39. package/dist/src/cli/rpc.d.ts.map +1 -1
  40. package/dist/src/cli/rpc.js +20 -19
  41. package/dist/src/cli/rpc.js.map +1 -1
  42. package/dist/src/cli/run.d.ts +8 -0
  43. package/dist/src/cli/run.d.ts.map +1 -1
  44. package/dist/src/cli/run.js +7 -20
  45. package/dist/src/cli/run.js.map +1 -1
  46. package/dist/src/cli/send-feedback.d.ts +1 -1
  47. package/dist/src/cli/send-feedback.js +1 -1
  48. package/dist/src/cli/shared.d.ts +16 -3
  49. package/dist/src/cli/shared.d.ts.map +1 -1
  50. package/dist/src/cli/shared.js +19 -4
  51. package/dist/src/cli/shared.js.map +1 -1
  52. package/dist/src/cli/train.d.ts.map +1 -1
  53. package/dist/src/cli/train.js +40 -23
  54. package/dist/src/cli/train.js.map +1 -1
  55. package/dist/src/cli.d.ts +1 -0
  56. package/dist/src/cli.d.ts.map +1 -1
  57. package/dist/src/cli.js +1 -0
  58. package/dist/src/cli.js.map +1 -1
  59. package/dist/src/lib/duet-api-url.d.ts +9 -0
  60. package/dist/src/lib/duet-api-url.d.ts.map +1 -0
  61. package/dist/src/lib/duet-api-url.js +18 -0
  62. package/dist/src/lib/duet-api-url.js.map +1 -0
  63. package/dist/src/lib/feedback.d.ts +1 -1
  64. package/dist/src/lib/feedback.js +4 -4
  65. package/dist/src/lib/feedback.js.map +1 -1
  66. package/dist/src/lib/login.d.ts +24 -21
  67. package/dist/src/lib/login.d.ts.map +1 -1
  68. package/dist/src/lib/login.js +50 -114
  69. package/dist/src/lib/login.js.map +1 -1
  70. package/dist/src/memory/embedding.d.ts +20 -15
  71. package/dist/src/memory/embedding.d.ts.map +1 -1
  72. package/dist/src/memory/embedding.js +26 -20
  73. package/dist/src/memory/embedding.js.map +1 -1
  74. package/dist/src/memory/recall.d.ts +44 -0
  75. package/dist/src/memory/recall.d.ts.map +1 -1
  76. package/dist/src/memory/recall.js +92 -6
  77. package/dist/src/memory/recall.js.map +1 -1
  78. package/dist/src/model-resolution/duet-gateway.d.ts +4 -3
  79. package/dist/src/model-resolution/duet-gateway.d.ts.map +1 -1
  80. package/dist/src/model-resolution/duet-gateway.js +12 -6
  81. package/dist/src/model-resolution/duet-gateway.js.map +1 -1
  82. package/dist/src/tui/app.d.ts +2 -2
  83. package/dist/src/tui/app.d.ts.map +1 -1
  84. package/dist/src/tui/app.js +20 -2
  85. package/dist/src/tui/app.js.map +1 -1
  86. package/dist/src/tui/paste-controller.d.ts +3 -0
  87. package/dist/src/tui/paste-controller.d.ts.map +1 -1
  88. package/dist/src/tui/paste-controller.js +25 -0
  89. package/dist/src/tui/paste-controller.js.map +1 -1
  90. package/dist/src/tui/session-subscription.d.ts +10 -0
  91. package/dist/src/tui/session-subscription.d.ts.map +1 -1
  92. package/dist/src/tui/session-subscription.js +22 -5
  93. package/dist/src/tui/session-subscription.js.map +1 -1
  94. package/dist/src/tui/slash-commands.d.ts +4 -4
  95. package/dist/src/tui/slash-commands.js +4 -4
  96. package/dist/src/tui/step-renderer.d.ts +4 -0
  97. package/dist/src/tui/step-renderer.d.ts.map +1 -1
  98. package/dist/src/tui/step-renderer.js +41 -37
  99. package/dist/src/tui/step-renderer.js.map +1 -1
  100. package/dist/src/tui/tool-formatters.d.ts +2 -2
  101. package/dist/src/tui/tool-formatters.d.ts.map +1 -1
  102. package/dist/src/turn-runner/agent-events.d.ts +12 -1
  103. package/dist/src/turn-runner/agent-events.d.ts.map +1 -1
  104. package/dist/src/turn-runner/agent-events.js +60 -42
  105. package/dist/src/turn-runner/agent-events.js.map +1 -1
  106. package/dist/src/turn-runner/tools.d.ts.map +1 -1
  107. package/dist/src/turn-runner/tools.js +15 -54
  108. package/dist/src/turn-runner/tools.js.map +1 -1
  109. package/dist/src/turn-runner/turn-runner.d.ts +2 -0
  110. package/dist/src/turn-runner/turn-runner.d.ts.map +1 -1
  111. package/dist/src/turn-runner/turn-runner.js +4 -2
  112. package/dist/src/turn-runner/turn-runner.js.map +1 -1
  113. package/dist/src/types/memory.d.ts +11 -0
  114. package/dist/src/types/memory.d.ts.map +1 -1
  115. package/dist/src/types/protocol.d.ts +22 -3
  116. package/dist/src/types/protocol.d.ts.map +1 -1
  117. package/package.json +1 -1
  118. package/dist/src/lib/duet-app-url.d.ts +0 -10
  119. package/dist/src/lib/duet-app-url.d.ts.map +0 -1
  120. package/dist/src/lib/duet-app-url.js +0 -19
  121. package/dist/src/lib/duet-app-url.js.map +0 -1
  122. package/dist/src/lib/sync-skills.d.ts +0 -54
  123. package/dist/src/lib/sync-skills.d.ts.map +0 -1
  124. package/dist/src/lib/sync-skills.js +0 -215
  125. package/dist/src/lib/sync-skills.js.map +0 -1
@@ -1,18 +1,16 @@
1
- import { resolveDuetAppBaseUrl } from "../lib/duet-app-url.js";
1
+ import { getDuetGatewayBaseUrl } from "../model-resolution/duet-gateway.js";
2
2
  /**
3
- * Client for the Duet embedding endpoint.
3
+ * Client for Duet gateway embeddings.
4
4
  *
5
- * Routes through the Duet public API (`POST <app>/api/v1/embed`) gated
6
- * by the user's existing `DUET_API_KEY`. Logged-in users get embeddings
7
- * for free as a CLI perk; we deliberately do not expose a way to plug
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
- * Model identity is owned by the server. The endpoint hardcodes the
11
- * model and echoes it back on every response; we store the echoed
12
- * value alongside each vector so a future server-side model swap can
13
- * invalidate stale rows by tag. This client knows nothing about the
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. Sent on every request and matches the pgvector column width. */
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
- const ENDPOINT_PATH = "/api/v1/embed";
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 ?? resolveDuetAppBaseUrl();
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 model = "";
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
- model = batch.model;
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({ input: options.inputs, dimensions: EMBEDDING_DIMENSIONS }),
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.embeddings, model: body.data.model };
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":"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"}
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":"AACA,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,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,CAuBzE"}
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
- const scoreA = a[1].score * a[1].prior;
192
- const scoreB = b[1].score * b[1].prior;
193
- if (scoreB !== scoreA)
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(([id]) => id);
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":"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"}
1
+ {"version":3,"file":"recall.js","sourceRoot":"","sources":["../../../src/memory/recall.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAKxE;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,iGAAiG;AACjG,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B;;;;;GAKG;AACH,MAAM,KAAK,GAAG,EAAE,CAAC;AAEjB;;;;;;;;;;GAUG;AACH,MAAM,gBAAgB,GAAoC;IACxD,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,GAAG;IACT,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,GAAG;CACjB,CAAC;AAEF,oFAAoF;AACpF,MAAM,oBAAoB,GAAwC;IAChE,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,GAAG;IACX,GAAG,EAAE,GAAG;CACT,CAAC;AAuCF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA4B;IAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IAErC,qEAAqE;IACrE,6DAA6D;IAC7D,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC9C,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC;IAC1F,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACvD,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAErF,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,IAAI,UAAU,GAAgB,EAAE,CAAC;QACjC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,eAAe,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC;gBACH,UAAU,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAC9F,CAAC;YAAC,MAAM,CAAC;gBACP,6DAA6D;gBAC7D,2DAA2D;gBAC3D,UAAU,GAAG,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,oBAAoB,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACjF,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAEjD,OAAO;YACL,YAAY;YACZ,qBAAqB,EAAE,eAAe;YACtC,qBAAqB,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC;SAC7C,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC;AACpG,CAAC;AAyBD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAoC;IAEpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;IAEjC,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,wBAAwB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAEpC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5B,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACpB,YAAY,CAAC;QACX,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,KAAK;QACL,qEAAqE;QACrE,uCAAuC;QACvC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK;QACnC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC,CACH,CACF,CAAC;IAEF,MAAM,KAAK,GAAG,0BAA0B,CACtC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAC/F,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAClB,MAAM,IAAI,GAAG,IAAI,GAAG,CAClB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAC5F,CAAC;IACF,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD,MAAM,YAAY,GAAkB,EAAE,CAAC;IACvC,KAAK,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW;YAAE,SAAS;QAC3B,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/B,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,YAAY;QACZ,qBAAqB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACpE,qBAAqB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACpE,QAAQ;QACR,aAAa;KACd,CAAC;AACJ,CAAC;AAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC;IACnC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;CACrE,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,KAAK,UAAU,wBAAwB,CAAC,KAAa,EAAE,KAAa;IAClE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC;YAC5C,KAAK;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE,kBAAkB;gBACxB,WAAW,EAAE,iDAAiD;gBAC9D,UAAU,EAAE,gBAAgB;aAC7B;YACD,YAAY,EACV,kIAAkI;YACpI,MAAM,EAAE,mBAAmB,KAAK,EAAE;SACnC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAWD,KAAK,UAAU,aAAa,CAC1B,EAAU,EACV,KAAa,EACb,KAAkB,EAClB,SAA6B;IAE7B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,kEAAkE;IAClE,sEAAsE;IACtE,sEAAsE;IACtE,iBAAiB;IACjB,MAAM,OAAO,GAAG;;kFAEgE,CAAC;IACjF,MAAM,QAAQ,GAAG;;;aAGN,cAAc,EAAE,CAAC;IAE5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,cAAc,CAAS,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAClG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACvB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,EAAU,EACV,KAAc,EACd,KAAa,EACb,KAAkB,EAClB,SAA6B;IAE7B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEvB,MAAM,OAAO,GAAG;;;gBAGF,CAAC;IACf,MAAM,QAAQ,GAAG;;aAEN,cAAc,EAAE,CAAC;IAE5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,cAAc,CACnC,EAAE,EACF,OAAO,EACP,QAAQ,EACR,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EACzB,KAAK,EACL,SAAS;IACT,iEAAiE;IACjE,2BAA2B;IAC3B,IAAI,CACL,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACvB,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,cAAc,CAC3B,EAAU,EACV,OAAe,EACf,QAAgB,EAChB,UAAqB,EACrB,KAAkB,EAClB,SAA6B,EAC7B,YAAY,GAAG,EAAE;IAEjB,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IACxC,IAAI,KAAK,KAAK,SAAS,IAAI,SAAS,EAAE,CAAC;QACrC,OAAO,EAAE,CAAC,KAAK,CAAO,GAAG,OAAO,QAAQ,YAAY,iBAAiB,SAAS,GAAG,QAAQ,EAAE,EAAE;YAC3F,GAAG,UAAU;YACb,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IACD,IAAI,KAAK,KAAK,QAAQ,IAAI,SAAS,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC,KAAK,CACb,GAAG,OAAO,QAAQ,YAAY,gCAAgC,SAAS,GAAG,QAAQ,EAAE,EACpF,CAAC,GAAG,UAAU,EAAE,SAAS,CAAC,CAC3B,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC,KAAK,CAAO,GAAG,OAAO,GAAG,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAA0B;IAC7D,OAAO,0BAA0B,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,WAA0B;IAE1B,MAAM,MAAM,GAAG,IAAI,GAAG,EAA+D,CAAC;IACtF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpC,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,KAAK,IAAI,YAAY,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;SAC5F,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;YAAE,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QAClD,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;IACnC,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,GAAyC;IAC5D,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7D,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7E,OAAO,QAAQ,GAAG,YAAY,CAAC;AACjC,CAAC;AAQD,KAAK,UAAU,OAAO,CAAC,EAAU,EAAE,GAAa;IAC9C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,KAAK,CAC7B;;;gCAG4B,EAC5B,CAAC,GAAG,CAAC,CACN,CAAC;IACF,iEAAiE;IACjE,6DAA6D;IAC7D,wBAAwB;IACxB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACvD,OAAO,GAAG;SACP,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACzB,MAAM,CAAC,CAAC,GAAG,EAAsB,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC;SACtD,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC3B,CAAC;AAkBD,SAAS,gBAAgB,CAAC,GAAgB;IACxC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,UAAU,EAAE,GAAG,CAAC,YAAY;QAC5B,GAAG,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,YAAY,EAAE,GAAG,CAAC,aAAa;QAC/B,GAAG,CAAC,GAAG,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,GAAG,CAAC,GAAG,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,GAAG,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAA0B;QAC5D,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAa;KAC5C,CAAC;AACJ,CAAC"}
@@ -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
- * The base URL is `${DUET_APP_BASE_URL}${GATEWAY_PATH}`; users only need to
9
- * override the app origin via `DUET_APP_BASE_URL` (also used by `duet login`
10
- * and the CLI skill sync).
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;AAQ3E;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AAEvD,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;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;AASD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK1E"}
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
- import { resolveDuetAppBaseUrl } from "../lib/duet-app-url.js";
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
- * The base URL is `${DUET_APP_BASE_URL}${GATEWAY_PATH}`; users only need to
14
- * override the app origin via `DUET_APP_BASE_URL` (also used by `duet login`
15
- * and the CLI skill sync).
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
- return `${resolveDuetAppBaseUrl()}${GATEWAY_PATH}`;
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":"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"}
1
+ {"version":3,"file":"duet-gateway.js","sourceRoot":"","sources":["../../../src/model-resolution/duet-gateway.ts"],"names":[],"mappings":"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"}
@@ -52,13 +52,13 @@ export interface RunTuiInput {
52
52
  */
53
53
  onResumeRequest?: (sessionId: string) => void;
54
54
  /**
55
- * Called when the user submits `/reset`. The outer dispatcher should
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
- onResetRequest?: () => void;
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,CAsWvF"}
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"}
@@ -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
- onReset: () => {
254
- input.onResetRequest?.();
271
+ onClear: () => {
272
+ input.onClearRequest?.();
255
273
  renderer.destroy();
256
274
  },
257
275
  setModel: (model) => input.session.setModel(model),
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/tui/app.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAGL,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAe1D,wEAAwE;AACxE,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;AAqEtB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAkB;IAC7C,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEjC,qEAAqE;IACrE,kEAAkE;IAClE,uEAAuE;IACvE,kCAAkC;IAClC,IAAI,iBAAiB,GAAG,EAAE,CAAC;IAE3B,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,EAAE;QACrE,oBAAoB,EAAE,GAAG,EAAE,CAAC,iBAAiB;QAC7C,iBAAiB,EAAE,GAAG,EAAE;YACtB,gBAAgB,CAAC,QAAQ,EAAE,CAAC;YAC5B,aAAa,CAAC,aAAa,CAAC,CAAC;QAC/B,CAAC;KACF,CAAC,CAAC;IAEH,2EAA2E;IAC3E,uEAAuE;IACvE,qEAAqE;IACrE,2EAA2E;IAC3E,SAAS,eAAe,CAAC,OAAe;QACtC,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACzE,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC3C,EAAE,CAAC,oBAAoB,CAAC,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAC3D,iCAAiC,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,EAAU,EAAE,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC7F,MAAM,WAAW,GAAG,CAAC,KAAoB,EAAE,IAAY,EAAE,EAAU,EAAE,EAAE,CACrE,gBAAgB,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAChD,MAAM,qBAAqB,GAAG,CAAC,IAA6B,EAAE,IAAY,EAAE,EAAE,CAC5E,gBAAgB,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAE3C,wEAAwE;IACxE,qEAAqE;IACrE,uEAAuE;IACvE,sEAAsE;IACtE,qEAAqE;IACrE,oEAAoE;IACpE,yEAAyE;IACzE,wEAAwE;IACxE,gDAAgD;IAChD,SAAS,iCAAiC;QACxC,MAAM,KAAK,GAAG,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;QACpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,EAAE,CAAC,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;YACpC,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QACtC,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC/C,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC;QACpE,EAAE,CAAC,gBAAgB,CAAC,OAAO,GAAG,qBAAqB,CAAC;IACtD,CAAC;IAED,yEAAyE;IACzE,yEAAyE;IACzE,uEAAuE;IACvE,2EAA2E;IAC3E,wEAAwE;IACxE,qBAAqB;IACrB,MAAM,aAAa,GAAG,WAAW,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;IAE1E,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;QAC5C,QAAQ;QACR,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,uBAAuB,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,uBAAuB,EAAE;KACtE,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;QACpC,QAAQ;QACR,gBAAgB;QAChB,gBAAgB;QAChB,WAAW,EAAE,GAAG,EAAE;YAChB,IAAI,cAAc,CAAC,MAAM,EAAE;gBAAE,cAAc,CAAC,IAAI,EAAE,CAAC;QACrD,CAAC;KACF,CAAC,CAAC;IAEH,kEAAkE;IAClE,mEAAmE;IACnE,mEAAmE;IACnE,qEAAqE;IACrE,MAAM,SAAS,GAAG,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChD,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,eAAe,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE;QACnE,IAAI,OAAO;YAAE,SAAS,CAAC,MAAM,EAAE,CAAC;;YAC3B,SAAS,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,CAAC,KAAc,EAAQ,EAAE;QAC3C,WAAW,CAAC,SAAS,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7F,gBAAgB,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC,CAAC;IAEF,MAAM,WAAW,GAA0B,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC/D,MAAM,UAAU,GAAyB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7D,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC7B,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC9B,CAAC,CAAC;IAEF,sEAAsE;IACtE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;QAC7B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,cAAc,CAAC;YACjB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,UAAU,EAAE,EAAE,CAAC,UAAU;YACzB,UAAU,EAAE,EAAE,CAAC,UAAU;YACzB,gBAAgB;YAChB,QAAQ;YACR,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YAC9B,eAAe,EAAE,KAAK,CAAC,eAAe;SACvC,CAAC,CAAC;IAEP,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,oBAAoB,CAAC;QAC7F,QAAQ;QACR,EAAE;QACF,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,gBAAgB;QAChB,gBAAgB;QAChB,WAAW;QACX,eAAe;QACf,qBAAqB;QACrB,WAAW;QACX,mBAAmB,EAAE,iBAAiB;QACtC,oBAAoB,EAAE,GAAG,EAAE,CAAC,iBAAiB;QAC7C,sBAAsB,EAAE,GAAG,EAAE;YAC3B,iBAAiB,GAAG,EAAE,CAAC;QACzB,CAAC;KACF,CAAC,CAAC;IAEH,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,SAAoB,EAAE,EAAE;QAChD,iBAAiB,GAAG,SAAS,CAAC,eAAe,EAAE,CAAC;QAChD,gBAAgB,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QACjD,gBAAgB,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,eAAe,CAAC;QAClC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,EAAE,CAAC,OAAO;QACnB,aAAa,EAAE,EAAE,CAAC,aAAa;QAC/B,iBAAiB,EAAE,EAAE,CAAC,iBAAiB;QACvC,YAAY;QACZ,gBAAgB;QAChB,cAAc;QACd,UAAU;QACV,WAAW;QACX,eAAe;KAChB,CAAC,CAAC;IAEH,uDAAuD;IACvD,SAAS,YAAY;QACnB,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;YAAE,OAAO;QAC1C,KAAK,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;IAED,iEAAiE;IACjE,wEAAwE;IACxE,qEAAqE;IACrE,0EAA0E;IAC1E,wEAAwE;IACxE,yDAAyD;IACzD,yEAAyE;IACzE,yEAAyE;IACzE,SAAS,WAAW;QAClB,IAAI,gBAAgB,CAAC,SAAS,EAAE,EAAE,CAAC;YACjC,YAAY,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,gBAAgB,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAC3C,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,gBAAgB,CAAC,eAAe,EAAE,CAAC;IACrC,CAAC;IAED,yEAAyE;IACzE,uEAAuE;IACvE,uBAAuB;IACvB,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,QAA+B;QAC1E,wEAAwE;QACxE,iEAAiE;QACjE,yEAAyE;QACzE,kEAAkE;QAClE,qEAAqE;QACrE,6DAA6D;QAC7D,MAAM,eAAe,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC;QAC1C,qEAAqE;QACrE,sEAAsE;QACtE,+DAA+D;QAC/D,mEAAmE;QACnE,gEAAgE;QAChE,8DAA8D;QAC9D,gEAAgE;QAChE,MAAM,MAAM,GAAG,QAAQ,KAAK,WAAW,IAAI,gBAAgB,CAAC,SAAS,EAAE,CAAC;QACxE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,eAAe,CAAC,OAAO,CAAC,CAAC;YACzB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAChD,sEAAsE;QACtE,wBAAwB;QACxB,IAAI,QAAQ,KAAK,WAAW,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YACxD,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QACD,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC5E,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;YAAE,gBAAgB,CAAC,WAAW,EAAE,CAAC;IACpE,CAAC;IAED,oEAAoE;IACpE,wEAAwE;IACxE,SAAS,WAAW;QAClB,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACjC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACtB,KAAK,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC;IAED,mEAAmE;IACnE,oEAAoE;IACpE,uDAAuD;IACvD,SAAS,MAAM,CAAC,OAAe;QAC7B,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,EAAE,CAAC;YACnD,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAChC,CAAC;QACD,MAAM,QAAQ,GAAG;YACf,eAAe;YACf,cAAc;YACd,gBAAgB;YAChB,WAAW;YACX,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;gBACzB,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,CAAC;YACD,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC1D,gBAAgB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC1E,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC/B,CAAC;SACF,CAAC;QACF,IAAI,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QACD,oEAAoE;QACpE,qEAAqE;QACrE,mEAAmE;QACnE,qEAAqE;QACrE,kEAAkE;QAClE,2DAA2D;QAC3D,gDAAgD;QAChD,MAAM,EAAE,OAAO,EAAE,GAAG,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACjC,KAAK,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7D,CAAC;IAED,kBAAkB,CAAC;QACjB,QAAQ;QACR,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,YAAY;QACZ,cAAc;QACd,eAAe;QACf,cAAc;QACd,QAAQ;QACR,gBAAgB;QAChB,WAAW;QACX,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,WAAW;QACpB,SAAS;QACT,UAAU;QACV,OAAO,EAAE,WAAW;QACpB,mBAAmB,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,mBAAmB,EAAE;QACjE,mBAAmB,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE;QAC7C,mBAAmB,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,gBAAgB,EAAE;KAC/D,CAAC,CAAC;IAEH,sEAAsE;IACtE,oBAAoB;IACpB,EAAE,CAAC,UAAU,CAAC,eAAe,GAAG,GAAG,EAAE;QACnC,QAAQ,EAAE,cAAc,EAAE,CAAC;QAC3B,YAAY,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC,CAAC;IACF,EAAE,CAAC,UAAU,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IAE5D,qEAAqE;IACrE,qEAAqE;IACrE,kCAAkC;IAClC,EAAE,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,KAAiB,EAAE,EAAE;QAC5C,KAAK,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3D,WAAW,CAAC,SAAS,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/F,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,gBAAgB,CAAC;QACrB,QAAQ;QACR,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,UAAU;QACV,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,EAAE,CAAC,OAAO;QACnB,YAAY;QACZ,QAAQ;QACR,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,cAAc,EAAE,KAAK,CAAC,cAAc;KACrC,CAAC,CAAC;IAEH,mBAAmB,CACjB;QACE,UAAU;QACV,WAAW;QACX,qBAAqB;QACrB,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,CAAC;KAC1E,EACD,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,EAAE,CAC/E,CAAC;IAEF,sBAAsB,CAAC;QACrB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,gBAAgB;QAChB,YAAY;QACZ,eAAe;QACf,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,sBAAsB,CAAC,QAAQ,EAAE,GAAG,EAAE;QAC1C,mEAAmE;QACnE,qEAAqE;QACrE,2CAA2C;QAC3C,gBAAgB,CAAC,aAAa,EAAE,CAAC;QACjC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;QAC5B,eAAe,EAAE,CAAC;QAClB,SAAS,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,aAAa,CAAC,CAAC;IAC7B,WAAW,EAAE,CAAC;IACd,OAAO,gBAAgB,CAAC,YAAY,EAAE,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,IAAI,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAClD,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3D,CAAC"}
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;AAG/D,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;;;;;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;IAiD3D;;;;;OAKG;IACG,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBzD;;;;OAIG;YACW,sBAAsB;CAyBrC"}
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"}