pi-smart-compact 9.7.1 → 10.0.1

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 (206) hide show
  1. package/ARCHITECTURE.md +973 -372
  2. package/CHANGELOG.md +721 -0
  3. package/LICENSE +8 -0
  4. package/README.md +128 -640
  5. package/SECURITY.md +34 -12
  6. package/SUPPORT.md +26 -9
  7. package/assets/DejaVu-LICENSE.txt +187 -0
  8. package/assets/DejaVuSansMono.ttf +0 -0
  9. package/assets/README.md +26 -0
  10. package/assets/skills/context-management/SKILL.md +34 -0
  11. package/dist/app/anchor-cache.d.ts +36 -0
  12. package/dist/app/anchor-cache.d.ts.map +1 -0
  13. package/dist/app/artifact-storage.d.ts +47 -0
  14. package/dist/app/artifact-storage.d.ts.map +1 -0
  15. package/dist/app/background-preparation.d.ts +39 -0
  16. package/dist/app/background-preparation.d.ts.map +1 -0
  17. package/dist/app/compaction-commit-store.d.ts +5 -1
  18. package/dist/app/compaction-commit-store.d.ts.map +1 -1
  19. package/dist/app/context-evidence.d.ts +57 -0
  20. package/dist/app/context-evidence.d.ts.map +1 -0
  21. package/dist/app/context-guide.d.ts +3 -0
  22. package/dist/app/context-guide.d.ts.map +1 -0
  23. package/dist/app/context-operations.d.ts +106 -0
  24. package/dist/app/context-operations.d.ts.map +1 -0
  25. package/dist/app/effective-state.d.ts +23 -0
  26. package/dist/app/effective-state.d.ts.map +1 -0
  27. package/dist/app/global-settings-runtime.d.ts +3 -3
  28. package/dist/app/global-settings-runtime.d.ts.map +1 -1
  29. package/dist/app/hindsight-memory.d.ts +100 -0
  30. package/dist/app/hindsight-memory.d.ts.map +1 -0
  31. package/dist/app/host-cache-ledger.d.ts +68 -0
  32. package/dist/app/host-cache-ledger.d.ts.map +1 -0
  33. package/dist/app/lazy-tools.d.ts +36 -0
  34. package/dist/app/lazy-tools.d.ts.map +1 -0
  35. package/dist/app/memory-backend.d.ts +58 -0
  36. package/dist/app/memory-backend.d.ts.map +1 -0
  37. package/dist/app/mnemopi-memory.d.ts +13 -0
  38. package/dist/app/mnemopi-memory.d.ts.map +1 -0
  39. package/dist/app/mnemopi-protocol.d.ts +78 -0
  40. package/dist/app/mnemopi-protocol.d.ts.map +1 -0
  41. package/dist/app/mnemopi-worker.d.ts +2 -0
  42. package/dist/app/mnemopi-worker.d.ts.map +1 -0
  43. package/dist/app/model-feasibility.d.ts +20 -0
  44. package/dist/app/model-feasibility.d.ts.map +1 -0
  45. package/dist/app/native-compaction.d.ts +88 -0
  46. package/dist/app/native-compaction.d.ts.map +1 -0
  47. package/dist/app/native-continuity-bridge.d.ts.map +1 -1
  48. package/dist/app/navigation-data.d.ts +28 -0
  49. package/dist/app/navigation-data.d.ts.map +1 -0
  50. package/dist/app/navigation-types.d.ts +60 -0
  51. package/dist/app/navigation-types.d.ts.map +1 -0
  52. package/dist/app/pending-slot.d.ts +11 -1
  53. package/dist/app/pending-slot.d.ts.map +1 -1
  54. package/dist/app/preflight.d.ts.map +1 -1
  55. package/dist/app/register-context-tools.d.ts +16 -3
  56. package/dist/app/register-context-tools.d.ts.map +1 -1
  57. package/dist/app/register-navigation.d.ts +20 -0
  58. package/dist/app/register-navigation.d.ts.map +1 -0
  59. package/dist/app/register-smart-compact-command.d.ts +17 -2
  60. package/dist/app/register-smart-compact-command.d.ts.map +1 -1
  61. package/dist/app/register-smart-compact-tool.d.ts.map +1 -1
  62. package/dist/app/register-smart-context-tool.d.ts +55 -0
  63. package/dist/app/register-smart-context-tool.d.ts.map +1 -0
  64. package/dist/app/run-context.d.ts +1 -0
  65. package/dist/app/run-context.d.ts.map +1 -1
  66. package/dist/app/run-smart-compact.d.ts +3 -3
  67. package/dist/app/run-smart-compact.d.ts.map +1 -1
  68. package/dist/app/session-handoff.d.ts +64 -0
  69. package/dist/app/session-handoff.d.ts.map +1 -0
  70. package/dist/app/session-lineage.d.ts +17 -0
  71. package/dist/app/session-lineage.d.ts.map +1 -0
  72. package/dist/app/session-run-lock.d.ts +0 -2
  73. package/dist/app/session-run-lock.d.ts.map +1 -1
  74. package/dist/app/settled-auto-trigger.d.ts +2 -0
  75. package/dist/app/settled-auto-trigger.d.ts.map +1 -1
  76. package/dist/app/smart-compact-input.d.ts +1 -1
  77. package/dist/app/smart-compact-input.d.ts.map +1 -1
  78. package/dist/app/smart-compact-policy.d.ts +1 -1
  79. package/dist/app/smart-compact-policy.d.ts.map +1 -1
  80. package/dist/app/steps/extract.d.ts +45 -1
  81. package/dist/app/steps/extract.d.ts.map +1 -1
  82. package/dist/app/steps/metrics.d.ts +1 -0
  83. package/dist/app/steps/metrics.d.ts.map +1 -1
  84. package/dist/app/steps/persist.d.ts.map +1 -1
  85. package/dist/app/steps/prepare.d.ts.map +1 -1
  86. package/dist/app/steps/recover.d.ts +9 -0
  87. package/dist/app/steps/recover.d.ts.map +1 -1
  88. package/dist/app/steps/synthesize.d.ts.map +1 -1
  89. package/dist/app/steps/tier.d.ts.map +1 -1
  90. package/dist/app/steps/verify.d.ts.map +1 -1
  91. package/dist/app/steps/visual.d.ts +4 -0
  92. package/dist/app/steps/visual.d.ts.map +1 -0
  93. package/dist/app/steps/window.d.ts.map +1 -1
  94. package/dist/app/tool-artifacts.d.ts +27 -0
  95. package/dist/app/tool-artifacts.d.ts.map +1 -0
  96. package/dist/app/visual-archive.d.ts +29 -0
  97. package/dist/app/visual-archive.d.ts.map +1 -0
  98. package/dist/constants.d.ts +96 -1
  99. package/dist/constants.d.ts.map +1 -1
  100. package/dist/domain/compaction-usage.d.ts +16 -0
  101. package/dist/domain/compaction-usage.d.ts.map +1 -0
  102. package/dist/domain/model-capacity.d.ts +12 -0
  103. package/dist/domain/model-capacity.d.ts.map +1 -0
  104. package/dist/domain/provider-evaluation.d.ts +7 -0
  105. package/dist/domain/provider-evaluation.d.ts.map +1 -1
  106. package/dist/domain/telemetry.d.ts +43 -2
  107. package/dist/domain/telemetry.d.ts.map +1 -1
  108. package/dist/domain/tool-semantics.d.ts +23 -0
  109. package/dist/domain/tool-semantics.d.ts.map +1 -1
  110. package/dist/index.d.ts.map +1 -1
  111. package/dist/index.js +15757 -6942
  112. package/dist/infra/ai-messages.d.ts +1 -1
  113. package/dist/infra/ai-messages.d.ts.map +1 -1
  114. package/dist/infra/context-graph.d.ts +38 -7
  115. package/dist/infra/context-graph.d.ts.map +1 -1
  116. package/dist/infra/fs.d.ts.map +1 -1
  117. package/dist/infra/hindsight-client.d.ts +73 -0
  118. package/dist/infra/hindsight-client.d.ts.map +1 -0
  119. package/dist/infra/hindsight-receipts.d.ts +68 -0
  120. package/dist/infra/hindsight-receipts.d.ts.map +1 -0
  121. package/dist/infra/llm-client.d.ts +26 -23
  122. package/dist/infra/llm-client.d.ts.map +1 -1
  123. package/dist/infra/memory-ref.d.ts +27 -0
  124. package/dist/infra/memory-ref.d.ts.map +1 -0
  125. package/dist/infra/native-protocol.d.ts +54 -0
  126. package/dist/infra/native-protocol.d.ts.map +1 -0
  127. package/dist/infra/optional-components.d.ts +15 -0
  128. package/dist/infra/optional-components.d.ts.map +1 -0
  129. package/dist/infra/paths.d.ts +2 -0
  130. package/dist/infra/paths.d.ts.map +1 -1
  131. package/dist/infra/services.d.ts +15 -5
  132. package/dist/infra/services.d.ts.map +1 -1
  133. package/dist/infra/visual-renderer.d.ts +16 -0
  134. package/dist/infra/visual-renderer.d.ts.map +1 -0
  135. package/dist/mnemopi-worker.js +213 -0
  136. package/dist/phases/explore.d.ts +12 -9
  137. package/dist/phases/explore.d.ts.map +1 -1
  138. package/dist/phases/synthesize.d.ts +18 -3
  139. package/dist/phases/synthesize.d.ts.map +1 -1
  140. package/dist/phases/verify.d.ts +5 -1
  141. package/dist/phases/verify.d.ts.map +1 -1
  142. package/dist/rtk.d.ts +7 -0
  143. package/dist/rtk.d.ts.map +1 -0
  144. package/dist/rtk.js +767 -0
  145. package/dist/types.d.ts +128 -4
  146. package/dist/types.d.ts.map +1 -1
  147. package/dist/ui/dashboard-format.d.ts +2 -1
  148. package/dist/ui/dashboard-format.d.ts.map +1 -1
  149. package/dist/ui/dashboard-insights.d.ts +9 -1
  150. package/dist/ui/dashboard-insights.d.ts.map +1 -1
  151. package/dist/ui/error-format.d.ts +7 -2
  152. package/dist/ui/error-format.d.ts.map +1 -1
  153. package/dist/ui/handoff-overlay.d.ts +26 -0
  154. package/dist/ui/handoff-overlay.d.ts.map +1 -0
  155. package/dist/ui/home-overlay.d.ts +54 -0
  156. package/dist/ui/home-overlay.d.ts.map +1 -0
  157. package/dist/ui/metrics-dashboard-overlay.d.ts.map +1 -1
  158. package/dist/ui/metrics-report.d.ts.map +1 -1
  159. package/dist/ui/navigation-overlay.d.ts +92 -0
  160. package/dist/ui/navigation-overlay.d.ts.map +1 -0
  161. package/dist/ui/overlays.d.ts +12 -2
  162. package/dist/ui/overlays.d.ts.map +1 -1
  163. package/dist/ui/profiles.d.ts +51 -0
  164. package/dist/ui/profiles.d.ts.map +1 -0
  165. package/dist/ui/settings-complex.d.ts +49 -3
  166. package/dist/ui/settings-complex.d.ts.map +1 -1
  167. package/dist/ui/settings-list.d.ts +28 -0
  168. package/dist/ui/settings-list.d.ts.map +1 -0
  169. package/dist/ui/settings-overlay.d.ts +13 -6
  170. package/dist/ui/settings-overlay.d.ts.map +1 -1
  171. package/dist/ui/storage-report.d.ts +4 -0
  172. package/dist/ui/storage-report.d.ts.map +1 -0
  173. package/dist/utils/backups.d.ts.map +1 -1
  174. package/dist/utils/cache.d.ts +6 -2
  175. package/dist/utils/cache.d.ts.map +1 -1
  176. package/dist/utils/config.d.ts +12 -0
  177. package/dist/utils/config.d.ts.map +1 -1
  178. package/dist/utils/helpers.d.ts.map +1 -1
  179. package/dist/utils/id-fingerprint.d.ts +3 -1
  180. package/dist/utils/id-fingerprint.d.ts.map +1 -1
  181. package/dist/utils/issues.d.ts +61 -0
  182. package/dist/utils/issues.d.ts.map +1 -0
  183. package/dist/utils/pruning.d.ts.map +1 -1
  184. package/dist/utils/session-log.d.ts +0 -2
  185. package/dist/utils/session-log.d.ts.map +1 -1
  186. package/dist/utils/state.d.ts +3 -1
  187. package/dist/utils/state.d.ts.map +1 -1
  188. package/dist/utils/tokens.d.ts +10 -2
  189. package/dist/utils/tokens.d.ts.map +1 -1
  190. package/docs/MIGRATING_TO_V8.md +7 -1
  191. package/docs/README.md +69 -0
  192. package/docs/RELEASE.md +173 -56
  193. package/docs/assets/banner.png +0 -0
  194. package/docs/assets/banner.svg +1158 -70
  195. package/docs/assets/pi-smart-compact.png +0 -0
  196. package/docs/assets/pi-smart-compact.svg +24 -0
  197. package/docs/configuration.md +637 -0
  198. package/docs/evaluation.md +408 -0
  199. package/docs/guide.md +860 -0
  200. package/docs/hindsight-memory.md +314 -0
  201. package/docs/identity.md +124 -0
  202. package/package.json +44 -11
  203. package/dist/provider-eval.js +0 -2122
  204. package/dist/provider-scenario-eval.js +0 -2900
  205. package/dist/telemetry-report.js +0 -1973
  206. package/docs/provider-evaluation-2026-08-06.md +0 -63
@@ -18,7 +18,7 @@
18
18
  import { type Message } from "@earendil-works/pi-ai";
19
19
  import type { LlmMessage, SessionMessageEntry } from "../types.ts";
20
20
  import type { SecretScrubber } from "../domain/scrub.ts";
21
- /** Preserve the host's context projection and original entry IDs, including custom and branch summaries. */
21
+ /** Project a full selected branch, preserving source IDs and intentional edits. */
22
22
  export declare function contextMessageEntries(entries: readonly unknown[]): SessionMessageEntry[];
23
23
  /** Text transcript without the host summarizer's implicit 2,000-character tool-result cap. */
24
24
  export declare function serializeConversationText(messages: LlmMessage[]): string;
@@ -1 +1 @@
1
- {"version":3,"file":"ai-messages.d.ts","sourceRoot":"","sources":["../../src/infra/ai-messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAe,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,4GAA4G;AAC5G,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,GAAG,mBAAmB,EAAE,CAKxF;AAED,8FAA8F;AAC9F,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAKxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,CAIpE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,cAAc,GAAG,UAAU,EAAE,CAE3F"}
1
+ {"version":3,"file":"ai-messages.d.ts","sourceRoot":"","sources":["../../src/infra/ai-messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAe,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,GAAG,mBAAmB,EAAE,CAYxF;AAED,8FAA8F;AAC9F,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAKxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,CAIpE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,cAAc,GAAG,UAAU,EAAE,CAE3F"}
@@ -46,19 +46,50 @@ export declare function indexCompactionState(projectId: string, state: Compactio
46
46
  export declare function scheduleCompactionStateIndex(projectId: string, state: CompactionState): Promise<boolean>;
47
47
  /** Test seam; production drains in a microtask. */
48
48
  export declare function flushCompactionStateIndexes(): void;
49
- /** Resolve or supersede an explicit memory by stable fact identity within one project. */
50
- export declare function closeContextMemory(projectId: string, kind: SavedContextMemory["kind"], content: string, status: "resolved" | "superseded"): number;
49
+ export interface ClosedContextMemory {
50
+ closed: number;
51
+ kind: string;
52
+ title: string;
53
+ }
54
+ /** Look up one explicit memory by its stable ref id, within one project. */
55
+ export declare function getContextMemoryByRef(projectId: string, id: string): {
56
+ kind: string;
57
+ title: string;
58
+ content: string;
59
+ relatedPaths: string[];
60
+ } | null;
61
+ /**
62
+ * Resolve an explicit memory by its stable ref id within one project. The id
63
+ * is a hash of project, kind and fact key, so a ref from another project
64
+ * simply matches nothing here.
65
+ */
66
+ export declare function closeContextMemoryByRef(projectId: string, id: string): ClosedContextMemory | null;
67
+ /** Stable identity of an explicit memory; matches the id saveContextMemory assigns. */
68
+ export declare function manualMemoryId(projectId: string, kind: SavedContextMemory["kind"], content: string): string;
51
69
  /** Save one explicit, user-confirmed project memory. */
52
70
  export declare function saveContextMemory(scope: ContextGraphScope, memory: Omit<SavedContextMemory, "id">): SavedContextMemory;
53
71
  /** Weighted project recall: lexical seeds + one-hop file relationships + scope/recency boosts. */
54
72
  export declare function recallContext(scope: ContextGraphScope, query: string, options?: ContextRecallOptions): ContextRecallResult[];
55
73
  export declare function formatRecallResults(results: ContextRecallResult[], maxChars?: number): string;
56
74
  export declare function getContextGraphStats(projectId: string): ContextGraphStats;
75
+ /** Node counts by provenance for the /forget choice. */
76
+ export interface ContextGraphMemoryCounts {
77
+ manual: number;
78
+ derived: number;
79
+ unknown: number;
80
+ }
81
+ export declare function getContextGraphMemoryCounts(projectId: string): ContextGraphMemoryCounts;
82
+ /** What a scoped forget deletes. */
83
+ export type ForgetGraphScope = "all" | "derived-only";
57
84
  /**
58
- * Permanently forget all graph memory for a project (#63): FTS copies,
59
- * edges, and nodes in one transaction. Drains any queued index writes
60
- * first so a scheduled compaction cannot resurrect the memory afterwards.
61
- * Compaction state files (restore data) and backups are left intact.
85
+ * Permanently forget graph memory for a project (#63). Drains any queued
86
+ * index writes first so a scheduled compaction cannot resurrect the memory
87
+ * afterwards. Compaction state files (restore data) and backups are left
88
+ * intact, and no other store (Mnemopi, Hindsight) is ever touched.
89
+ *
90
+ * `derived-only` deletes just the compaction-derived nodes (including their
91
+ * session/file infrastructure) with their FTS copies and edges; user-confirmed
92
+ * memories and unknown-provenance rows are preserved.
62
93
  */
63
- export declare function forgetProjectGraph(projectId: string): boolean;
94
+ export declare function forgetProjectGraph(projectId: string, scope?: ForgetGraphScope): boolean;
64
95
  //# sourceMappingURL=context-graph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-graph.d.ts","sourceRoot":"","sources":["../../src/infra/context-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-graph.d.ts","sourceRoot":"","sources":["../../src/infra/context-graph.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/infra/fs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAWH,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAG3C;AAWD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAYnF;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAW9F;AA2CD,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,CAI1D;AAYD,+EAA+E;AAC/E,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CASrE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAoCtF;AAED,+EAA+E;AAC/E,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC1G;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAa,GAAG,CAAC,EAAE,CAoB1F;AAED,oEAAoE;AACpE,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBxF;AAGD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CASxD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,UAAQ,GAAG,IAAI,CAElF"}
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/infra/fs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAYH,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAG3C;AAWD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAYnF;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAW9F;AA2CD,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,CAI1D;AAYD,+EAA+E;AAC/E,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CASrE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAoCtF;AAED,+EAA+E;AAC/E,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC1G;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAa,GAAG,CAAC,EAAE,CAoB1F;AAED,oEAAoE;AACpE,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBxF;AAGD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAcxD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,UAAQ,GAAG,IAAI,CAElF"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Minimal Hindsight HTTP client for Smart Compact's confirmed memory path.
3
+ *
4
+ * Deliberately exposes only four fixed bank-scoped routes (retain, operation
5
+ * status, recall, delete one document). There is no generic request method, so
6
+ * destructive bank-wide routes such as `DELETE /memories` are unreachable.
7
+ */
8
+ export interface HindsightTarget {
9
+ /** Normalized origin plus optional path prefix, without trailing slash. */
10
+ baseUrl: string;
11
+ bankId: string;
12
+ /** Bearer token value; never persisted or rendered. */
13
+ apiKey?: string;
14
+ timeoutMs: number;
15
+ }
16
+ export type HindsightErrorKind = "config" | "aborted" | "timeout" | "network" | "unauthorized" | "not-found" | "conflict" | "http" | "invalid-response";
17
+ export declare class HindsightError extends Error {
18
+ readonly kind: HindsightErrorKind;
19
+ readonly status?: number;
20
+ constructor(kind: HindsightErrorKind, message: string, status?: number);
21
+ /** True when the server may or may not have received the request. */
22
+ get outcomeUnknown(): boolean;
23
+ }
24
+ export type HindsightOperationStatus = "pending" | "processing" | "completed" | "failed" | "cancelled" | "not_found";
25
+ export interface HindsightRetainItem {
26
+ content: string;
27
+ documentId: string;
28
+ context?: string;
29
+ tags: string[];
30
+ metadata: Record<string, string>;
31
+ }
32
+ export interface HindsightRecallFact {
33
+ id: string;
34
+ text: string;
35
+ type: string | null;
36
+ documentId: string | null;
37
+ tags: string[];
38
+ metadata: Record<string, string>;
39
+ mentionedAt: string | null;
40
+ }
41
+ /**
42
+ * Validate and normalize a configured base URL. HTTPS is required except for
43
+ * loopback development servers; credentials, query and fragment are refused.
44
+ */
45
+ export declare function normalizeHindsightBaseUrl(raw: unknown): string;
46
+ export declare function isValidHindsightBankId(value: unknown): value is string;
47
+ /** Display-safe destination label (origin + bank), never includes secrets. */
48
+ export declare function describeHindsightTarget(target: HindsightTarget): string;
49
+ /**
50
+ * Submit one asynchronous retain. The caller-supplied operation id makes
51
+ * retries of the same submission idempotent on the server. Acceptance is not
52
+ * completion: extracted facts are not searchable until the operation completes.
53
+ */
54
+ export declare function retainDocument(target: HindsightTarget, item: HindsightRetainItem, operationId: string, signal?: AbortSignal): Promise<{
55
+ operationId: string;
56
+ }>;
57
+ export declare function getOperationStatus(target: HindsightTarget, operationId: string, signal?: AbortSignal): Promise<{
58
+ status: HindsightOperationStatus;
59
+ failed: boolean;
60
+ }>;
61
+ export interface HindsightRecallRequest {
62
+ query: string;
63
+ tags: string[];
64
+ maxTokens: number;
65
+ }
66
+ /** Bounded, strictly tag-scoped recall. No reflect, chunks or source facts. */
67
+ export declare function recallFacts(target: HindsightTarget, request: HindsightRecallRequest, signal?: AbortSignal): Promise<HindsightRecallFact[]>;
68
+ /** Delete exactly one owned document. A missing document is reported, not thrown. */
69
+ export declare function deleteDocument(target: HindsightTarget, documentId: string, signal?: AbortSignal): Promise<{
70
+ found: boolean;
71
+ memoryUnitsDeleted: number;
72
+ }>;
73
+ //# sourceMappingURL=hindsight-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hindsight-client.d.ts","sourceRoot":"","sources":["../../src/infra/hindsight-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,kBAAkB,GAC1B,QAAQ,GACR,SAAS,GACT,SAAS,GACT,SAAS,GACT,cAAc,GACd,WAAW,GACX,UAAU,GACV,MAAM,GACN,kBAAkB,CAAC;AAEvB,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAKrE;IACD,qEAAqE;IACrE,IAAI,cAAc,IAAI,OAAO,CAE5B;CACF;AAED,MAAM,MAAM,wBAAwB,GAChC,SAAS,GACT,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,WAAW,GACX,WAAW,CAAC;AAWhB,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAiBD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CA+B9D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEtE;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAEvE;AA0JD;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,mBAAmB,EACzB,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAgClC;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,MAAM,EAAE,wBAAwB,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CA6BhE;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,+EAA+E;AAC/E,wBAAsB,WAAW,CAC/B,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,sBAAsB,EAC/B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAiDhC;AAED,qFAAqF;AACrF,wBAAsB,cAAc,CAClC,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,CAAC,CAsBzD"}
@@ -0,0 +1,68 @@
1
+ export type HindsightReceiptState =
2
+ /** Request sent, no response yet (process died mid-flight). */
3
+ "submitted"
4
+ /** Server acknowledged the async operation; extraction not yet complete. */
5
+ | "accepted"
6
+ /** Operation completed; facts are searchable. */
7
+ | "completed"
8
+ /** Server reported failure/cancellation, or refused the request. */
9
+ | "failed"
10
+ /** Transport failure: the server may or may not have accepted it. */
11
+ | "unknown"
12
+ /** The owned document was deleted by a confirmed resolve. */
13
+ | "deleted";
14
+ export interface HindsightReceipt {
15
+ key: string;
16
+ baseUrl: string;
17
+ bankId: string;
18
+ projectId: string;
19
+ documentId: string;
20
+ revision: string;
21
+ operationId: string;
22
+ /** Operation id the server acknowledged, when it differs from `operationId`. */
23
+ serverOperationId?: string;
24
+ kind: string;
25
+ title: string;
26
+ state: HindsightReceiptState;
27
+ createdAt: number;
28
+ updatedAt: number;
29
+ /** Short, secret-free failure reason. */
30
+ detail?: string;
31
+ }
32
+ export interface HindsightReceiptScope {
33
+ baseUrl: string;
34
+ bankId: string;
35
+ projectId: string;
36
+ }
37
+ export declare const MAX_HINDSIGHT_RECEIPTS = 500;
38
+ /** An operation missing server-side this long is treated as failed so the ledger drains. */
39
+ export declare const NOT_FOUND_DRAIN_HOURS = 24;
40
+ export declare function isOpenReceipt(receipt: HindsightReceipt): boolean;
41
+ export declare function hindsightReceiptsFile(): string;
42
+ export declare function receiptKey(scope: HindsightReceiptScope, documentId: string, revision: string): string;
43
+ /**
44
+ * Deterministic UUID-shaped operation id for one submission, so a retry of the
45
+ * same confirmed save is idempotent server-side and never double-retains.
46
+ */
47
+ export declare function operationIdFor(scope: HindsightReceiptScope, documentId: string, revision: string): string;
48
+ /**
49
+ * A present but unreadable ledger is never treated as empty: that would let a
50
+ * resolve delete a document with in-flight retains, and the next save would
51
+ * overwrite the evidence. Callers refuse instead; the file is left untouched.
52
+ */
53
+ export declare class ReceiptLedgerUnreadableError extends Error {
54
+ constructor(file: string, detail: string);
55
+ }
56
+ export declare function listReceipts(scope: HindsightReceiptScope, documentId?: string, file?: string): HindsightReceipt[];
57
+ export declare class ReceiptLedgerFullError extends Error {
58
+ constructor(file?: string);
59
+ }
60
+ /**
61
+ * Insert or update one receipt. Terminal receipts are pruned oldest-first when
62
+ * the cap is reached; open receipts are never evicted — the write is refused.
63
+ */
64
+ export declare function upsertReceipt(receipt: HindsightReceipt, file?: string): HindsightReceipt;
65
+ export declare function updateReceiptState(key: string, state: HindsightReceiptState, detail?: string, extra?: Pick<HindsightReceipt, "serverOperationId">, file?: string): HindsightReceipt | null;
66
+ /** Capacity check before a remote submission, without writing. */
67
+ export declare function receiptCapacityAvailable(file?: string): boolean;
68
+ //# sourceMappingURL=hindsight-receipts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hindsight-receipts.d.ts","sourceRoot":"","sources":["../../src/infra/hindsight-receipts.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,qBAAqB;AAC/B,+DAA+D;AAC7D,WAAW;AACb,4EAA4E;GAC1E,UAAU;AACZ,iDAAiD;GAC/C,WAAW;AACb,oEAAoE;GAClE,QAAQ;AACV,qEAAqE;GACnE,SAAS;AACX,6DAA6D;GAC3D,SAAS,CAAC;AAEd,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,qBAAqB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAOD,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,4FAA4F;AAC5F,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAQxC,wBAAgB,aAAa,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAEhE;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAMD,wBAAgB,UAAU,CACxB,KAAK,EAAE,qBAAqB,EAC5B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,qBAAqB,EAC5B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,MAAM,CAeR;AAED;;;;GAIG;AACH,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,YAAY,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EASvC;CACF;AA2CD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,qBAAqB,EAC5B,UAAU,CAAC,EAAE,MAAM,EACnB,IAAI,SAA0B,GAC7B,gBAAgB,EAAE,CAMpB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,IAAI,SAA0B,EASzC;CACF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,gBAAgB,EACzB,IAAI,SAA0B,GAC7B,gBAAgB,CA4BlB;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,qBAAqB,EAC5B,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,GAAE,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,CAAM,EACvD,IAAI,SAA0B,GAC7B,gBAAgB,GAAG,IAAI,CAgBzB;AAED,kEAAkE;AAClE,wBAAgB,wBAAwB,CAAC,IAAI,SAA0B,GAAG,OAAO,CAMhF"}
@@ -1,31 +1,35 @@
1
1
  /**
2
2
  * LLM client seam.
3
3
  *
4
- * Why we have a seam at all:
4
+ * Production requests go through the requesting session's public model
5
+ * runtime (`ctx.modelRegistry`), never pi-ai's standalone completers: only the
6
+ * session runtime applies request-time auth, OAuth and extension provider
7
+ * overrides registered with `pi.registerProvider` (e.g. a subscription
8
+ * adapter that owns final payload normalization). Clients are built per run
9
+ * from that runtime, so one session can never route through another's.
5
10
  *
6
- * - pi-ai's completers are the only runtime entry points into a model.
7
- * Importing them directly from utility modules tied even the metrics test
8
- * path to the peer dependency, which made `bun test` fail when the peer
9
- * was not installed.
10
- *
11
- * - Test fakes need to assert which `phase` was used, control failures, and
12
- * return synthetic usage tokens for calibration tests.
13
- *
14
- * - Future provider fallback work (per `implement-llm-provider-fallback`)
15
- * becomes a single-file change instead of a cross-module refactor.
11
+ * Test fakes need to assert which `phase` was used, control failures, and
12
+ * return synthetic usage tokens, so `setLlmClient` installs a process-wide
13
+ * test override that takes precedence over every run's runtime client.
16
14
  *
17
15
  * The interface is intentionally narrow: a single `complete()` method matching
18
16
  * the pi-ai shape, plus the same options object existing callers already pass.
19
- *
20
- * The default implementation keeps `complete()` for existing calls and uses
21
- * `completeSimple()` when generic reasoning is explicitly configured.
22
- * `setLlmClient` is exposed for tests and wrapping/fallback clients. Both
23
- * completers are resolved below through the host's compat alias.
17
+ * Provider-specific `stream()` keeps existing calls; `streamSimple()` is used
18
+ * when generic reasoning is explicitly configured.
24
19
  */
25
- import type { Model, Api, AssistantMessage, Context, SimpleStreamOptions } from "@earendil-works/pi-ai";
20
+ import type { Model, Api, AssistantMessage, AssistantMessageEventStream, Context, ProviderStreamOptions, SimpleStreamOptions } from "@earendil-works/pi-ai";
26
21
  export type LlmCompleteOptions = SimpleStreamOptions & {
27
22
  codexWatchdogMs?: number;
28
23
  };
24
+ /** The public session model runtime slice used for requests (`ctx.modelRegistry`). */
25
+ export interface LlmModelRuntime {
26
+ stream(model: Model<Api>, context: Context, options?: ProviderStreamOptions): AssistantMessageEventStream;
27
+ streamSimple(model: Model<Api>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStream;
28
+ }
29
+ /** `ctx.modelRegistry.isUsingOAuth(model)`, false when unavailable or throwing. */
30
+ export declare function usesOAuth(ctx: {
31
+ modelRegistry?: unknown;
32
+ }, model: Model<Api>): boolean;
29
33
  export interface LlmClient {
30
34
  complete(model: Model<Api>, body: Context, opts: LlmCompleteOptions): Promise<AssistantMessage>;
31
35
  }
@@ -36,12 +40,11 @@ export declare function resolveCodexWatchdogMs(maxTokens: number | undefined, co
36
40
  export declare function resolveProviderWatchdogMs(provider: string | undefined, maxTokens: number | undefined, configuredMs?: number): number;
37
41
  /** @internal Test seam for the transport deadline used by every provider. */
38
42
  export declare function withProviderDeadline(opts: LlmCompleteOptions, invoke: (bounded: LlmCompleteOptions) => Promise<AssistantMessage>, provider?: string): Promise<AssistantMessage>;
39
- /** Raw client — map generic reasoning only when explicitly configured. */
40
- export declare const rawLlmClient: LlmClient;
41
- /** Production default: never replay an expensive compaction request automatically. */
42
- export declare const defaultLlmClient: LlmClient;
43
- export declare function getLlmClient(): LlmClient;
43
+ /** Client for one session runtime — maps generic reasoning only when explicitly configured. */
44
+ export declare function createModelRuntimeLlmClient(runtime: LlmModelRuntime): LlmClient;
45
+ /** The test/wrapping override, resolved at call time; undefined in production. */
46
+ export declare function getLlmClient(): LlmClient | undefined;
44
47
  export declare function setLlmClient(client: LlmClient): void;
45
- /** Restore the production client. Tests should always pair `setLlmClient` with this. */
48
+ /** Remove the override. Tests should always pair `setLlmClient` with this. */
46
49
  export declare function resetLlmClient(): void;
47
50
  //# sourceMappingURL=llm-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"llm-client.d.ts","sourceRoot":"","sources":["../../src/infra/llm-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EACV,KAAK,EACL,GAAG,EACH,gBAAgB,EAGhB,OAAO,EAEP,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AA0B/B,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAAG;IACrD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAmDF,MAAM,WAAW,SAAS;IACxB,QAAQ,CACN,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC9B;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAGzD;AAED,iGAAiG;AACjG,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,IAAI,EAAE,kBAAkB,GACvB,kBAAkB,CAqBpB;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,YAAY,SAAI,GACf,MAAM,CAGR;AAmBD,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,YAAY,SAAI,GACf,MAAM,CAQR;AAED,6EAA6E;AAC7E,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,gBAAgB,CAAC,EAClE,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAuC3B;AA8DD,0EAA0E;AAC1E,eAAO,MAAM,YAAY,EAAE,SAqB1B,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,EAAE,SAAwB,CAAC;AAIxD,wBAAgB,YAAY,IAAI,SAAS,CAExC;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAEpD;AAED,wFAAwF;AACxF,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
1
+ {"version":3,"file":"llm-client.d.ts","sourceRoot":"","sources":["../../src/infra/llm-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EACV,KAAK,EACL,GAAG,EACH,gBAAgB,EAEhB,2BAA2B,EAC3B,OAAO,EACP,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAAG;IACrD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,2BAA2B,CAAC;IAC1G,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,2BAA2B,CAAC;CAC/G;AAED,mFAAmF;AACnF,wBAAgB,SAAS,CAAC,GAAG,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAOtF;AAiBD,MAAM,WAAW,SAAS;IACxB,QAAQ,CACN,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC9B;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAGzD;AAED,iGAAiG;AACjG,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,IAAI,EAAE,kBAAkB,GACvB,kBAAkB,CAqBpB;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,YAAY,SAAI,GACf,MAAM,CAGR;AAmBD,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,YAAY,SAAI,GACf,MAAM,CAQR;AAED,6EAA6E;AAC7E,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,gBAAgB,CAAC,EAClE,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAuC3B;AA4DD,+FAA+F;AAC/F,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,CAe/E;AAID,kFAAkF;AAClF,wBAAgB,YAAY,IAAI,SAAS,GAAG,SAAS,CAEpD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAEpD;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Stable memory references shown by save/recall results and required by
3
+ * smart_save_memory status=resolved.
4
+ *
5
+ * A ref names the backend that holds the fact, the id that backend assigned,
6
+ * and a digest of the exact target (graph file / data root / server+bank).
7
+ * Hindsight also binds the project and document id. Saving the same fact to
8
+ * two targets therefore produces two distinct refs, and after a configuration
9
+ * switch an old ref refuses to act instead of silently retargeting.
10
+ *
11
+ * Refs never carry a raw URL, bank id, or filesystem path, so a caller cannot
12
+ * redirect an action to another target: the destination is always re-derived
13
+ * from current configuration and compared against the digest.
14
+ */
15
+ export type MemoryRefBackend = "local" | "mnemopi" | "hindsight";
16
+ export interface MemoryRef {
17
+ backend: MemoryRefBackend;
18
+ id: string;
19
+ /** Mandatory 96-bit digest of the exact backend storage target. */
20
+ target: string;
21
+ }
22
+ export declare function localTargetDigest(graphFile: string): string;
23
+ export declare function hindsightTargetDigest(baseUrl: string, bankId: string, projectId: string, memoryId: string): string;
24
+ export declare function mnemopiTargetDigest(dbPath: string): string;
25
+ /** Parse and validate one ref; anything else (URLs, paths, free text) is null. */
26
+ export declare function parseMemoryRef(value: string): MemoryRef | null;
27
+ //# sourceMappingURL=memory-ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-ref.d.ts","sourceRoot":"","sources":["../../src/infra/memory-ref.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;AAEjE,MAAM,WAAW,SAAS;IACzB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;CACf;AAQD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAK3D;AAED,wBAAgB,qBAAqB,CACpC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAClE,MAAM,CAKR;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAK1D;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAK9D"}
@@ -0,0 +1,54 @@
1
+ export declare const NATIVE_APIS: readonly ["anthropic-messages", "openai-responses", "openai-codex-responses"];
2
+ export type NativeApi = (typeof NATIVE_APIS)[number];
3
+ /** A JSON object as it appears in provider payloads. */
4
+ export type JsonObject = Record<string, unknown>;
5
+ /** Stored in the compaction entry's `details.native`. */
6
+ export interface NativeState {
7
+ version: 1;
8
+ api: NativeApi;
9
+ provider: string;
10
+ model: string;
11
+ /** Provider items in replay order: one Anthropic compaction block, or an OpenAI window. */
12
+ items: JsonObject[];
13
+ }
14
+ export interface NativeUsage {
15
+ input: number;
16
+ output: number;
17
+ cacheRead: number;
18
+ cacheWrite: number;
19
+ }
20
+ export interface NativeCompactionResult {
21
+ state: NativeState;
22
+ /** What other models read: Anthropic's summary, or for OpenAI routes a notice plus the retained user messages. */
23
+ summary: string;
24
+ usage: NativeUsage;
25
+ }
26
+ export interface CompactionFetchOptions {
27
+ api: NativeApi;
28
+ provider: string;
29
+ model: string;
30
+ /** Summarization guidance; only Anthropic accepts it. */
31
+ instructions?: string;
32
+ /** Transport for the one real request. Defaults to the global fetch. */
33
+ fetch?: typeof fetch;
34
+ }
35
+ /** Required on Anthropic's compaction request and on every request that replays its block. */
36
+ export declare const ANTHROPIC_COMPACTION_BETA = "compact-2026-09-04";
37
+ export declare function isNativeApi(api: string): api is NativeApi;
38
+ export declare function isNativeState(value: unknown): value is NativeState;
39
+ /**
40
+ * A fetch for one nested Pi request. The first call becomes the compaction request; every
41
+ * call answers Pi with a 400, so the nested stream ends as an error that callers ignore
42
+ * once `result()` is defined. `result()` stays undefined when Pi never sent a request.
43
+ */
44
+ export declare function createCompactionFetch(options: CompactionFetchOptions): {
45
+ fetch: typeof fetch;
46
+ result(): NativeCompactionResult | Error | undefined;
47
+ };
48
+ /**
49
+ * Returns a copy of an ordinary provider payload whose compaction-summary message is replaced
50
+ * by the stored state. Undefined when the summary is not the first conversation message, the
51
+ * only place replay is valid; Pi's text summary then goes out unchanged.
52
+ */
53
+ export declare function replayNativeState(api: NativeApi, payload: unknown, state: NativeState, summary: string): JsonObject | undefined;
54
+ //# sourceMappingURL=native-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-protocol.d.ts","sourceRoot":"","sources":["../../src/infra/native-protocol.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,WAAW,YAAI,oBAAoB,EAAE,kBAAkB,EAAE,wBAAwB,CAAU,CAAC;AACzG,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,wDAAwD;AACxD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,GAAG,EAAE,SAAS,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,2FAA2F;IAC3F,KAAK,EAAE,UAAU,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACtC,KAAK,EAAE,WAAW,CAAC;IACnB,kHAAkH;IAClH,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACtC,GAAG,EAAE,SAAS,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACrB;AAED,8FAA8F;AAC9F,eAAO,MAAM,yBAAyB,uBAAuB,CAAC;AAW9D,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,SAAS,CAEzD;AAMD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CA0BlE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG;IACvE,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,MAAM,IAAI,sBAAsB,GAAG,KAAK,GAAG,SAAS,CAAC;CACrD,CAiBA;AA+ND;;;;GAIG;AACH,wBAAgB,iBAAiB,CAChC,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,MAAM,GACb,UAAU,GAAG,SAAS,CAwBxB"}
@@ -0,0 +1,15 @@
1
+ import { OPTIONAL_COMPONENTS } from "../constants.ts";
2
+ export type OptionalComponent = keyof typeof OPTIONAL_COMPONENTS;
3
+ /** This package's directory: the nearest ancestor of the module holding a package.json (dist/ or src/ layout). */
4
+ export declare function packageDir(parentUrl?: string): string;
5
+ /**
6
+ * Where `npm install --prefix` must put a component so Node resolves it from
7
+ * this package: Pi's install root for npm installs (the package sits in its
8
+ * node_modules), the package itself for git or path installs.
9
+ */
10
+ export declare function installRoot(parentUrl?: string): string;
11
+ /** Present when its manifest is on the module's lookup paths; exports conditions never matter. */
12
+ export declare function componentInstalled(component: OptionalComponent, parentUrl?: string): boolean;
13
+ /** The copy-pasteable install command for the given components, with Pi's own peer flag. */
14
+ export declare function installCommand(components: readonly OptionalComponent[], parentUrl?: string): string;
15
+ //# sourceMappingURL=optional-components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optional-components.d.ts","sourceRoot":"","sources":["../../src/infra/optional-components.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,mBAAmB,CAAC;AAEjE,kHAAkH;AAClH,wBAAgB,UAAU,CAAC,SAAS,GAAE,MAAwB,GAAG,MAAM,CAQtE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,SAAS,GAAE,MAAwB,GAAG,MAAM,CAIvE;AAED,kGAAkG;AAClG,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,EAAE,SAAS,GAAE,MAAwB,GAAG,OAAO,CAI7G;AAED,4FAA4F;AAC5F,wBAAgB,cAAc,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,EAAE,SAAS,GAAE,MAAwB,GAAG,MAAM,CAGpH"}
@@ -35,6 +35,8 @@ export declare function metricsLogFile(): string;
35
35
  export declare function runLocksDir(): string;
36
36
  /** One-shot, branch-scoped native-compaction continuity handoffs. */
37
37
  export declare function nativeContinuityDir(): string;
38
+ /** Durable, private tool-output spill files, distinct from disposable caches. */
39
+ export declare function toolArtifactsDir(): string;
38
40
  /** Project-scoped persistent context graph (SQLite + FTS5). */
39
41
  export declare function contextGraphFile(): string;
40
42
  /** Damage reports JSONL log. */
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/infra/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH;;;;GAIG;AACH,wBAAgB,IAAI,IAAI,MAAM,CAG7B;AAED,+CAA+C;AAC/C,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAsBD,6CAA6C;AAC7C,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,qCAAqC;AACrC,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,gCAAgC;AAChC,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,yBAAyB;AACzB,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,qEAAqE;AACrE,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,+DAA+D;AAC/D,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,gCAAgC;AAChC,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,iDAAiD;AACjD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED,uDAAuD;AACvD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,sDAAsD;AACtD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED,iFAAiF;AACjF,wBAAgB,+BAA+B,CAC9C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GACf,MAAM,CAIR;AAED,iFAAiF;AACjF,wBAAgB,yBAAyB,CACxC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GAClB,MAAM,CAKR;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,mCAAmC;AACnC,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/infra/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH;;;;GAIG;AACH,wBAAgB,IAAI,IAAI,MAAM,CAG7B;AAED,+CAA+C;AAC/C,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAsBD,6CAA6C;AAC7C,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,qCAAqC;AACrC,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,gCAAgC;AAChC,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,yBAAyB;AACzB,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,qEAAqE;AACrE,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,+DAA+D;AAC/D,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,gCAAgC;AAChC,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,iDAAiD;AACjD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED,uDAAuD;AACvD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,sDAAsD;AACtD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED,iFAAiF;AACjF,wBAAgB,+BAA+B,CAC9C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GACf,MAAM,CAIR;AAED,iFAAiF;AACjF,wBAAgB,yBAAyB,CACxC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GAClB,MAAM,CAKR;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,mCAAmC;AACnC,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C"}
@@ -22,11 +22,13 @@
22
22
  * when recreated for each compaction. Tests keep isolated defaults.
23
23
  *
24
24
  * Services that are stateless or already inject through their own seam
25
- * (`LlmClient`, `Clock`, file system helpers in `infra/fs.ts`) are exposed via
26
- * the container for convenience but never mutated through it.
25
+ * (`Clock`, file system helpers in `infra/fs.ts`) are exposed via the
26
+ * container for convenience but never mutated through it. The LLM client is
27
+ * built from the requesting session's model runtime, never a process global.
27
28
  */
29
+ import type { Api, Model } from "@earendil-works/pi-ai";
28
30
  import type { Clock } from "./clock.ts";
29
- import type { LlmClient } from "./llm-client.ts";
31
+ import type { LlmClient, LlmModelRuntime } from "./llm-client.ts";
30
32
  import type { CompactConfig, LLMCallMetric } from "../types.ts";
31
33
  import { TokenCalibrationStore } from "../utils/tokens.ts";
32
34
  import { SecretScrubber } from "../domain/scrub.ts";
@@ -139,11 +141,19 @@ export interface SmartCompactServices {
139
141
  codexWatchdogMs: number;
140
142
  /** Per-run prompt-cache namespace for providers that support prompt caching. */
141
143
  compactSessionId: string;
144
+ /** Whether a route authenticates via OAuth (subscription); stamps the metrics billing basis. */
145
+ isUsingOAuth?: (model: Model<Api>) => boolean;
142
146
  }
143
147
  export declare function makeCompactSessionId(): string;
144
- export declare function createServices(overrides?: Partial<SmartCompactServices>): SmartCompactServices;
148
+ /** Construction inputs: service overrides plus the session model runtime requests go through. */
149
+ export type ServiceOverrides = Partial<SmartCompactServices> & {
150
+ modelRuntime?: LlmModelRuntime;
151
+ };
152
+ export declare function createServices(overrides?: ServiceOverrides): SmartCompactServices;
145
153
  /** Production run services: per-run metrics/budgets, shared bounded provider knowledge. */
146
- export declare function createProductionServices(overrides?: Partial<SmartCompactServices>): SmartCompactServices;
154
+ export declare function createProductionServices(overrides?: ServiceOverrides): SmartCompactServices;
155
+ /** @internal Test-only: forget process-wide calibration learned from reported usage. */
156
+ export declare function __resetProcessCalibrationForTests(): void;
147
157
  export declare function getDefaultServices(): SmartCompactServices;
148
158
  /** Swap the default container; tests use this to inject a clock/llm. */
149
159
  export declare function setDefaultServices(services: SmartCompactServices): void;
@@ -1 +1 @@
1
- {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/infra/services.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/infra/services.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { VisualArchive } from "../types.ts";
2
+ export declare const VISUAL_WIDTH = 1280;
3
+ export declare const VISUAL_COLUMNS = 138;
4
+ export declare const VISUAL_ROWS = 74;
5
+ export declare const VISUAL_MAX_FRAMES = 2;
6
+ export declare const VISUAL_MAX_BYTES = 1000000;
7
+ export declare const VISUAL_MIN_WIDTH = 256;
8
+ /** Crop whitespace, not glyph size. Nine pixels safely covers the bundled 14px mono font. */
9
+ export declare function visualPageSize(lines: readonly string[]): {
10
+ width: number;
11
+ height: number;
12
+ };
13
+ /** Conservative request-planning allowance, not measured provider billing. */
14
+ export declare function estimateVisualTokens(width: number, height: number): number;
15
+ export declare function renderVisualPages(pages: string[][], signal: AbortSignal): Promise<VisualArchive["frames"]>;
16
+ //# sourceMappingURL=visual-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visual-renderer.d.ts","sourceRoot":"","sources":["../../src/infra/visual-renderer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,eAAO,MAAM,YAAY,OAAO,CAAC;AACjC,eAAO,MAAM,cAAc,MAAM,CAAC;AAClC,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,gBAAgB,UAAY,CAAC;AAC1C,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,6FAA6F;AAC7F,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE;IAE5C,KAAK;IACZ,MAAM;EACT;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1E;AAaD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAuBhH"}