enigma-memory 0.1.17 → 0.1.22

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 (290) hide show
  1. package/README.md +85 -27
  2. package/apps/cli/bin/enigma-desktop.mjs +140 -0
  3. package/apps/cli/bin/enigma-terminal.mjs +78 -0
  4. package/apps/cli/bin/enigma.mjs +4979 -3263
  5. package/apps/desktop/electron-main.cjs +217 -0
  6. package/apps/desktop/package.json +12 -0
  7. package/apps/desktop/src/app.js +264 -7
  8. package/apps/desktop/src/index.html +3514 -1373
  9. package/apps/desktop/src/launch-electron.mjs +51 -0
  10. package/apps/desktop/src/server.mjs +2914 -0
  11. package/apps/desktop/src/styles.css +2972 -260
  12. package/apps/desktop/src/zk-browser-prove.mjs +53 -0
  13. package/apps/desktop/src/zk-state.mjs +1789 -0
  14. package/apps/gateway/bin/enigma-gateway.mjs +102 -5
  15. package/apps/gateway/src/server.mjs +271 -8
  16. package/apps/ios/EnigmaCore/Package.swift +12 -0
  17. package/apps/ios/EnigmaCore/Sources/EnigmaCore/EnigmaAPIClient.swift +227 -0
  18. package/apps/ios/EnigmaCore/Sources/EnigmaCore/Models.swift +278 -0
  19. package/apps/ios/EnigmaCore/Sources/EnigmaCore/PKCE.swift +96 -0
  20. package/apps/ios/EnigmaCore/Sources/EnigmaCore/PrivacyMinimizer.swift +187 -0
  21. package/apps/ios/EnigmaCore/Sources/EnigmaCore/ToolModels.swift +129 -0
  22. package/apps/ios/EnigmaCore/Tests/EnigmaCoreTests/EnigmaCoreTests.swift +42 -0
  23. package/apps/ios/EnigmaIOS/Enigma/AppModel.swift +346 -0
  24. package/apps/ios/EnigmaIOS/Enigma/Assets.xcassets/AccentColor.colorset/Contents.json +12 -0
  25. package/apps/ios/EnigmaIOS/Enigma/Assets.xcassets/AppIcon.appiconset/Contents.json +11 -0
  26. package/apps/ios/EnigmaIOS/Enigma/Assets.xcassets/AppIcon.appiconset/EnigmaAppIcon.png +0 -0
  27. package/apps/ios/EnigmaIOS/Enigma/Assets.xcassets/Contents.json +3 -0
  28. package/apps/ios/EnigmaIOS/Enigma/Assets.xcassets/LaunchBackground.colorset/Contents.json +12 -0
  29. package/apps/ios/EnigmaIOS/Enigma/ChatView.swift +181 -0
  30. package/apps/ios/EnigmaIOS/Enigma/CouncilView.swift +78 -0
  31. package/apps/ios/EnigmaIOS/Enigma/CreateView.swift +152 -0
  32. package/apps/ios/EnigmaIOS/Enigma/EnigmaApp.swift +52 -0
  33. package/apps/ios/EnigmaIOS/Enigma/Info.plist +52 -0
  34. package/apps/ios/EnigmaIOS/Enigma/NaturalLanguagePrivacyTagger.swift +26 -0
  35. package/apps/ios/EnigmaIOS/Enigma/OAuthClient.swift +321 -0
  36. package/apps/ios/EnigmaIOS/Enigma/OnboardingView.swift +105 -0
  37. package/apps/ios/EnigmaIOS/Enigma/PrivateVaultView.swift +275 -0
  38. package/apps/ios/EnigmaIOS/Enigma/SecureStore.swift +76 -0
  39. package/apps/ios/EnigmaIOS/Enigma/SettingsView.swift +60 -0
  40. package/apps/ios/EnigmaIOS/Enigma/Theme.swift +80 -0
  41. package/apps/ios/EnigmaIOS/EnigmaIOS.xcodeproj/project.pbxproj +211 -0
  42. package/apps/ios/EnigmaIOS/EnigmaIOS.xcodeproj/xcshareddata/xcschemes/Enigma.xcscheme +23 -0
  43. package/apps/native-host/README.md +19 -8
  44. package/apps/native-host/bin/enigma-native-host.mjs +229 -13
  45. package/apps/relay/bin/enigma-relay.mjs +103 -5
  46. package/apps/relay/src/federation-runtime.mjs +618 -0
  47. package/apps/relay/src/server.mjs +310 -9
  48. package/apps/verifier/bin/enigma-verify.mjs +327 -11
  49. package/cortex-v3/circuits/build/intent_vk_bytes.json +35 -0
  50. package/cortex-v3/circuits/build/sale_vk_bytes.json +35 -0
  51. package/cortex-v3/circuits/build/vk_bytes.json +32 -0
  52. package/cortex-v3/proving-assets.json +64 -0
  53. package/cortex-v3/zk/BUILD-CONTRACT.md +87 -0
  54. package/cortex-v3/zk/action-transition-vk.json +119 -0
  55. package/cortex-v3/zk/alias-adversarial.test.mjs +220 -0
  56. package/cortex-v3/zk/groth16-verify-child.mjs +17 -0
  57. package/cortex-v3/zk/intent-witness.mjs +365 -0
  58. package/cortex-v3/zk/intent-witness.test.mjs +485 -0
  59. package/cortex-v3/zk/proving-assets.mjs +203 -0
  60. package/cortex-v3/zk/sale-witness.mjs +783 -0
  61. package/cortex-v3/zk/sale-witness.test.mjs +784 -0
  62. package/cortex-v3/zk/sealed-sale-release-vk.json +119 -0
  63. package/cortex-v3/zk/settlement-evidence.mjs +722 -0
  64. package/cortex-v3/zk/setup-intent.mjs +688 -0
  65. package/cortex-v3/zk/setup-sale.mjs +666 -0
  66. package/cortex-v3/zk/setup.mjs +594 -0
  67. package/cortex-v3/zk/witness.mjs +184 -0
  68. package/cortex-v3/zk/zk-codec.mjs +232 -0
  69. package/cortex-v3/zk/zk-codec.test.mjs +293 -0
  70. package/cortex-v3/zk/zk-settle.mjs +370 -0
  71. package/cortex-v3/zk/zk-tree.mjs +256 -0
  72. package/cortex-v3/zk/zk-tree.test.mjs +419 -0
  73. package/deploy/SIMULATION.md +14 -9
  74. package/deploy/docker-compose.local-production-simulation.yml +54 -12
  75. package/docs/benchmark-attestation-network.md +487 -487
  76. package/docs/benchmark-reproducibility.md +289 -289
  77. package/docs/blockchain-only-mechanisms.md +400 -400
  78. package/docs/browser-extension-install.md +8 -6
  79. package/docs/client-connectors.md +16 -12
  80. package/docs/demo-proof-network.md +275 -275
  81. package/docs/developer-ecosystem.md +15 -13
  82. package/docs/developer-proof-quickstart.md +325 -325
  83. package/docs/enigma-memory-ready-conformance.md +378 -376
  84. package/docs/install-anywhere.md +64 -30
  85. package/docs/installers-and-desktop.md +8 -7
  86. package/docs/memory-benchmarks.md +1 -1
  87. package/docs/memory-drive-health-model.md +690 -690
  88. package/docs/novelty-invention-candidates.md +161 -161
  89. package/docs/proof-network-build-notes.md +240 -240
  90. package/docs/proof-network-claim-boundaries.md +320 -318
  91. package/docs/proof-network.md +339 -339
  92. package/docs/sdk-api.md +324 -324
  93. package/docs/solana-proof-rail.md +453 -453
  94. package/examples/01-quickstart-agent/index.mjs +49 -0
  95. package/examples/01_agent_memory_quickstart.mjs +57 -0
  96. package/examples/02-multi-agent-swarm/index.mjs +57 -0
  97. package/examples/02_cross_model_passport.mjs +64 -0
  98. package/examples/03-langchain-memory/index.mjs +41 -0
  99. package/examples/03_poseidon_commitment_verification.mjs +71 -0
  100. package/examples/04-python-trading-agent/trader.py +49 -0
  101. package/examples/README.md +27 -0
  102. package/examples/ci/github-actions.yml +7 -2
  103. package/package.json +410 -278
  104. package/packages/adapters/PACKAGE_CONTRACT.md +1 -1
  105. package/packages/connectors/src/index.js +196 -4
  106. package/packages/connectors/swarm-router.mjs +168 -0
  107. package/packages/core/src/index.js +249 -2
  108. package/packages/core/src/version.mjs +7 -0
  109. package/packages/dev-tools/package.json +19 -0
  110. package/packages/dev-tools/src/index.js +4 -0
  111. package/packages/dev-tools/src/memory-benchmark-suite.js +112 -0
  112. package/packages/dev-tools/src/swarm-simulator.js +101 -0
  113. package/packages/dev-tools/src/vault-inspector.js +114 -0
  114. package/packages/dev-tools/src/vector-benchmark.js +100 -0
  115. package/packages/developer-platform/src/access-credentials.js +341 -0
  116. package/packages/developer-platform/src/http.js +132 -0
  117. package/packages/developer-platform/src/index.js +4 -0
  118. package/packages/developer-platform/src/usage-http.js +60 -0
  119. package/packages/developer-platform/src/usage.js +295 -0
  120. package/packages/enclave-runtime/attestation.mjs +159 -0
  121. package/packages/enclave-runtime/index.mjs +47 -0
  122. package/packages/enclave-runtime/session-manager.mjs +253 -0
  123. package/packages/enclave-runtime/zeroization-proof.mjs +227 -0
  124. package/packages/enigma-reflex/package.json +14 -0
  125. package/packages/enigma-reflex/src/index.js +204 -0
  126. package/packages/enigma-reflex/training/generate-dataset.mjs +40 -0
  127. package/packages/enigma-reflex/training/requirements.txt +8 -0
  128. package/packages/enigma-reflex/training/train.py +314 -0
  129. package/packages/enigma-weave/LICENSE +22 -0
  130. package/packages/enigma-weave/UPSTREAM.json +21 -0
  131. package/packages/enigma-weave/package.json +14 -0
  132. package/packages/enigma-weave/src/index.js +286 -0
  133. package/packages/hosted-cloud/src/index.js +80 -5
  134. package/packages/importers/src/index.js +432 -0
  135. package/packages/inference-runtime/src/browser.js +401 -0
  136. package/packages/inference-runtime/src/chat.js +265 -0
  137. package/packages/inference-runtime/src/code.js +407 -0
  138. package/packages/inference-runtime/src/contracts.js +162 -0
  139. package/packages/inference-runtime/src/http.js +232 -0
  140. package/packages/inference-runtime/src/image.js +186 -0
  141. package/packages/inference-runtime/src/index.js +10 -0
  142. package/packages/inference-runtime/src/model-router.js +320 -0
  143. package/packages/inference-runtime/src/platform.js +125 -0
  144. package/packages/inference-runtime/src/privacy.js +400 -0
  145. package/packages/inference-runtime/src/video.js +253 -0
  146. package/packages/mcp-server/README.md +22 -6
  147. package/packages/mcp-server/bin/enigma-mcp.mjs +2 -1
  148. package/packages/mcp-server/src/index.js +2498 -1185
  149. package/packages/mcp-server/src/oauth.js +561 -0
  150. package/packages/mcp-server/src/private-handoff.js +84 -0
  151. package/packages/mcp-server/src/remote-http.js +273 -0
  152. package/packages/mcp-server/src/remote-policy.js +72 -0
  153. package/packages/mcp-server/swarm-bridge.mjs +361 -0
  154. package/packages/mesh/index.d.ts +283 -0
  155. package/packages/mesh/package.json +23 -0
  156. package/packages/mesh/src/crypto.js +189 -0
  157. package/packages/mesh/src/federation-packets.js +353 -0
  158. package/packages/mesh/src/gossip.js +311 -0
  159. package/packages/mesh/src/index.js +6 -0
  160. package/packages/mesh/src/protocol.js +255 -0
  161. package/packages/mesh/src/router.js +279 -0
  162. package/packages/mesh/src/transport.js +306 -0
  163. package/packages/passport/src/index.js +436 -7
  164. package/packages/private-economy/src/credits-http.js +100 -0
  165. package/packages/private-economy/src/credits.js +447 -0
  166. package/packages/private-economy/src/index.js +5 -0
  167. package/packages/private-economy/src/payments-http.js +120 -0
  168. package/packages/private-economy/src/payments.js +509 -0
  169. package/packages/private-economy/src/x402.js +346 -0
  170. package/packages/proof-network/PACKAGE_CONTRACT.md +21 -0
  171. package/packages/rag/index.d.ts +182 -0
  172. package/packages/rag/models/Xenova/all-MiniLM-L6-v2/THIRD_PARTY_LICENSES.txt +207 -0
  173. package/packages/rag/models/Xenova/all-MiniLM-L6-v2/config.json +25 -0
  174. package/packages/rag/models/Xenova/all-MiniLM-L6-v2/onnx/model_quantized.onnx +0 -0
  175. package/packages/rag/models/Xenova/all-MiniLM-L6-v2/sha256-manifest.json +28 -0
  176. package/packages/rag/models/Xenova/all-MiniLM-L6-v2/tokenizer.json +30686 -0
  177. package/packages/rag/models/Xenova/all-MiniLM-L6-v2/tokenizer_config.json +15 -0
  178. package/packages/rag/package.json +27 -0
  179. package/packages/rag/src/blinded-search.js +109 -0
  180. package/packages/rag/src/bm25.js +169 -0
  181. package/packages/rag/src/embeddings.js +459 -0
  182. package/packages/rag/src/hybrid.js +76 -0
  183. package/packages/rag/src/index.js +38 -0
  184. package/packages/rag/src/reranker.js +61 -0
  185. package/packages/rag/src/research.js +107 -0
  186. package/packages/rag/src/vector-store.js +430 -0
  187. package/packages/rag/src/verify-model-artifacts.mjs +4 -0
  188. package/packages/sdk/index.d.ts +760 -0
  189. package/packages/sdk/package.json +33 -0
  190. package/packages/sdk/python/README.md +24 -0
  191. package/packages/sdk/python/enigma_sdk.py +250 -0
  192. package/packages/sdk/python/pyproject.toml +34 -0
  193. package/packages/sdk/python/requirements.txt +1 -0
  194. package/packages/sdk/python/setup.py +20 -0
  195. package/packages/sdk/src/federation/capability-grant.js +389 -0
  196. package/packages/sdk/src/federation/federation-router.js +360 -0
  197. package/packages/sdk/src/federation/ghostmesh-bridge.js +497 -0
  198. package/packages/sdk/src/federation/index.js +3 -0
  199. package/packages/sdk/src/index.js +1796 -0
  200. package/packages/sdk/src/intelligence/contradiction.js +337 -0
  201. package/packages/sdk/src/intelligence/decision-engine.js +155 -0
  202. package/packages/sdk/src/intelligence/index.js +4 -0
  203. package/packages/sdk/src/intelligence/ontology.js +122 -0
  204. package/packages/sdk/src/intelligence/temporal.js +123 -0
  205. package/packages/sdk/src/market-client.js +142 -0
  206. package/packages/sdk/src/mesh-client.js +110 -0
  207. package/packages/sdk/src/middleware/index.js +3 -0
  208. package/packages/sdk/src/middleware/langchain.js +159 -0
  209. package/packages/sdk/src/middleware/llamaindex.js +101 -0
  210. package/packages/sdk/src/middleware/vercel-ai.js +112 -0
  211. package/packages/sdk/src/rag-client.js +85 -0
  212. package/packages/sdk/src/swarm-orchestrator.js +260 -0
  213. package/packages/settlement/PACKAGE_CONTRACT.md +1 -1
  214. package/packages/snapcompact/THIRD_PARTY_LICENSES.txt +40 -0
  215. package/packages/snapcompact/assets/8x13-latin1.bdf +3837 -0
  216. package/packages/snapcompact/index.d.ts +284 -0
  217. package/packages/snapcompact/package.json +25 -0
  218. package/packages/snapcompact/src/index.js +716 -0
  219. package/packages/storage/PACKAGE_CONTRACT.md +1 -1
  220. package/packages/terminal-console/animations.mjs +240 -0
  221. package/packages/terminal-console/auto-anchor.mjs +220 -0
  222. package/packages/terminal-console/banner.mjs +91 -0
  223. package/packages/terminal-console/commands.mjs +459 -0
  224. package/packages/terminal-console/delegation.mjs +152 -0
  225. package/packages/terminal-console/index.mjs +5 -0
  226. package/packages/terminal-console/outbox.mjs +143 -0
  227. package/packages/terminal-console/phantom-bridge.mjs +637 -0
  228. package/packages/terminal-console/repl.mjs +136 -0
  229. package/packages/terminal-console/signer-store.mjs +130 -0
  230. package/packages/terminal-console/solana-rpc.mjs +214 -0
  231. package/packages/terminal-console/solana-transport.mjs +189 -0
  232. package/packages/terminal-tui/dashboard.mjs +214 -0
  233. package/packages/terminal-tui/index.mjs +28 -0
  234. package/packages/terminal-tui/merkle-tree-renderer.mjs +268 -0
  235. package/packages/terminal-tui/telemetry-hud.mjs +137 -0
  236. package/packages/vault/index.d.ts +449 -0
  237. package/packages/vault/package.json +27 -0
  238. package/packages/vault/src/e2ee.mjs +393 -0
  239. package/packages/vault/src/enclave.js +481 -0
  240. package/packages/vault/src/erasure.js +207 -0
  241. package/packages/vault/src/index.js +1150 -125
  242. package/packages/vault/src/persistence.js +307 -0
  243. package/packages/vault/src/poseidon.js +354 -0
  244. package/packages/vault/src/receipt.js +459 -0
  245. package/scripts/benchmark-optical-context.mjs +166 -0
  246. package/scripts/bootstrap-enigma.mjs +502 -0
  247. package/scripts/build-edge-backend-workers.mjs +20 -5
  248. package/scripts/build-goal-completion-audit.mjs +72 -25
  249. package/scripts/build-hosted-api-key-lifecycle.mjs +292 -274
  250. package/scripts/build-hosted-customer-lifecycle.mjs +493 -476
  251. package/scripts/build-hosted-probe-worker.mjs +19 -4
  252. package/scripts/build-installer-assets.mjs +409 -389
  253. package/scripts/build-operator-evidence-starter.mjs +59 -1
  254. package/scripts/build-production-backend-env-kit.mjs +2 -0
  255. package/scripts/build-production-unblocker.mjs +4 -1
  256. package/scripts/build-proof-network-packet.mjs +213 -213
  257. package/scripts/check.mjs +25 -4
  258. package/scripts/collect-hosted-backend-live-evidence.mjs +49 -12
  259. package/scripts/install-enigma-local.mjs +18 -5
  260. package/scripts/release-audit.mjs +74 -115
  261. package/scripts/release-provenance.mjs +12 -2
  262. package/scripts/run-backend-readiness-smoke.mjs +112 -10
  263. package/scripts/run-standard-memory-benchmarks.mjs +1354 -1352
  264. package/scripts/scan-secrets.mjs +178 -0
  265. package/scripts/simulate-production-env.mjs +71 -10
  266. package/scripts/validate-hosted-backend-live.mjs +112 -1
  267. package/specs/antibody-pack-v1.schema.json +95 -0
  268. package/specs/antigen-envelope-v1.schema.json +81 -0
  269. package/specs/boundary-manifest-v1.schema.json +35 -35
  270. package/specs/capsule-v1.schema.json +55 -55
  271. package/specs/claim-boundary-manifest-v1.schema.json +22 -22
  272. package/specs/claim-ledger-v1.schema.json +291 -0
  273. package/specs/context-passport-v1.schema.json +59 -0
  274. package/specs/deletion-tombstone-v1.schema.json +26 -26
  275. package/specs/evidence-packet-v1.schema.json +177 -0
  276. package/specs/hosted-backend-live-evidence-v1.schema.json +72 -3
  277. package/specs/immune-scan-report-v1.schema.json +112 -0
  278. package/specs/lifecycle-receipt-log-v1.schema.json +67 -0
  279. package/specs/memory-atom-v1.schema.json +59 -0
  280. package/specs/memory-event-v1.schema.json +42 -42
  281. package/specs/passport-v1.schema.json +50 -50
  282. package/specs/proof-of-non-use-v1.schema.json +65 -0
  283. package/specs/quarantine-record-v1.schema.json +126 -0
  284. package/specs/receipt-v1.schema.json +61 -61
  285. package/specs/state-checkpoint-v1.schema.json +37 -37
  286. package/specs/trust-bundle-v1.schema.json +56 -56
  287. package/specs/trust-card-v1.schema.json +119 -0
  288. package/docs/proof-network-launch-plan.md +0 -421
  289. package/packages/metering/PACKAGE_CONTRACT.md +0 -20
  290. package/scripts/build-ai-orchestration-plan.mjs +0 -248
@@ -0,0 +1,284 @@
1
+ /// <reference types="node" />
2
+
3
+ export const SNAPCOMPACT_VERSION: '1.0.0';
4
+
5
+ export interface RenderLimits {
6
+ maxCharacters?: number;
7
+ maxFrames?: number;
8
+ maxPixelsPerFrame?: number;
9
+ maxTotalPixels?: number;
10
+ maxPngBytes?: number;
11
+ }
12
+
13
+ export const DEFAULT_LIMITS: Readonly<Required<RenderLimits>>;
14
+
15
+ export interface TokenEstimateAssumptions {
16
+ readonly textCharactersPerToken: number;
17
+ readonly imagePixelsPerToken: number;
18
+ readonly basis: string;
19
+ }
20
+
21
+ export const TOKEN_ESTIMATE_ASSUMPTIONS: Readonly<TokenEstimateAssumptions>;
22
+
23
+ export type Provider = 'anthropic' | 'google' | 'openai';
24
+
25
+ export interface ProviderProfile {
26
+ readonly id: string;
27
+ readonly provider: Provider;
28
+ readonly width: number;
29
+ readonly maxHeight: number;
30
+ readonly glyphWidth: 8;
31
+ readonly glyphHeight: 13;
32
+ readonly cellWidth: number;
33
+ readonly cellHeight: number;
34
+ readonly colorType: 0;
35
+ readonly imageDetail: 'original' | null;
36
+ readonly modelFamilies: readonly string[];
37
+ readonly columns: number;
38
+ readonly rowsPerFrame: number;
39
+ readonly tokenEstimate: Readonly<TokenEstimateAssumptions>;
40
+ }
41
+
42
+ export const PROVIDER_PROFILES: Readonly<Record<Provider, Readonly<ProviderProfile>>>;
43
+
44
+ export interface NormalizeOptions {
45
+ maxCharacters?: number;
46
+ tabWidth?: number;
47
+ }
48
+
49
+ export function normalizeText(input: string, options?: NormalizeOptions): string;
50
+
51
+ export interface ConversationMessage {
52
+ role: 'user' | 'assistant' | 'tool' | 'system' | string;
53
+ content?: unknown;
54
+ output?: unknown;
55
+ result?: unknown;
56
+ name?: string;
57
+ toolName?: string;
58
+ toolCallId?: string;
59
+ tool_call_id?: string;
60
+ [key: string]: unknown;
61
+ }
62
+
63
+ export interface SerializationOptions extends NormalizeOptions {
64
+ maxMessageCharacters?: number;
65
+ maxCharacters?: number;
66
+ }
67
+
68
+ export function serializeConversation(messages: readonly ConversationMessage[], options?: SerializationOptions): string;
69
+
70
+ export interface RepetitionOptions {
71
+ minimumRun?: number;
72
+ }
73
+
74
+ export function compactRepeatedLines(text: string, options?: RepetitionOptions): string;
75
+
76
+ export interface BdfGlyph {
77
+ readonly name: string;
78
+ readonly encoding: number;
79
+ readonly advance: number;
80
+ readonly width: number;
81
+ readonly height: number;
82
+ readonly xOffset: number;
83
+ readonly yOffset: number;
84
+ readonly bitmap: readonly bigint[];
85
+ }
86
+
87
+ export interface BdfFont {
88
+ readonly width: number;
89
+ readonly height: number;
90
+ readonly xOffset: number;
91
+ readonly yOffset: number;
92
+ readonly glyphs: ReadonlyMap<number, Readonly<BdfGlyph>>;
93
+ }
94
+
95
+ export function parseBdf(source: string | Buffer): Readonly<BdfFont>;
96
+
97
+ export function resolveProviderProfile(provider: string, model: string): Readonly<ProviderProfile> | null;
98
+
99
+ export interface ProfileRequest {
100
+ provider: string;
101
+ model: string;
102
+ }
103
+
104
+ export interface RenderOptions extends Partial<ProfileRequest> {
105
+ profile?: Readonly<ProviderProfile>;
106
+ limits?: RenderLimits;
107
+ tabWidth?: number;
108
+ collapseRepeatedLines?: boolean;
109
+ repetition?: RepetitionOptions;
110
+ }
111
+
112
+ export interface FramePlanPage {
113
+ readonly index: number;
114
+ readonly width: number;
115
+ readonly height: number;
116
+ readonly rows: number;
117
+ readonly startRow: number;
118
+ readonly endRow: number;
119
+ }
120
+
121
+ export interface FramePlan {
122
+ readonly profileId: string;
123
+ readonly frameCount: number;
124
+ readonly sourceCharacters: number;
125
+ readonly renderedCharacters: number;
126
+ readonly columns: number;
127
+ readonly rowsPerFrame: number;
128
+ readonly rowCount: number;
129
+ readonly pixelCount: number;
130
+ readonly pages: readonly Readonly<FramePlanPage>[];
131
+ }
132
+
133
+ export function countFrames(
134
+ source: string,
135
+ profileOrRequest: Readonly<ProviderProfile> | ProfileRequest,
136
+ options?: RenderOptions,
137
+ ): Readonly<FramePlan>;
138
+
139
+ export interface BitmapPage {
140
+ readonly index: number;
141
+ readonly width: number;
142
+ readonly height: number;
143
+ readonly png: Buffer;
144
+ readonly bytes: number;
145
+ readonly sha256: string;
146
+ readonly sourceSha256: string;
147
+ }
148
+
149
+ export interface AnthropicImageBlock {
150
+ readonly type: 'image';
151
+ readonly source: { readonly type: 'base64'; readonly media_type: 'image/png'; readonly data: string };
152
+ }
153
+
154
+ export interface GoogleImageBlock {
155
+ readonly inlineData: { readonly mimeType: 'image/png'; readonly data: string };
156
+ }
157
+
158
+ export interface OpenAiImageBlock {
159
+ readonly type: 'input_image';
160
+ readonly image_url: string;
161
+ readonly detail: 'original';
162
+ }
163
+
164
+ export type ProviderImageBlock = AnthropicImageBlock | GoogleImageBlock | OpenAiImageBlock;
165
+
166
+ export interface BitmapReceipt {
167
+ readonly version: string;
168
+ readonly profile: string;
169
+ readonly contextDigest: string;
170
+ readonly sourceSha256: string;
171
+ readonly payloadDigest: string;
172
+ readonly pageSha256s: readonly string[];
173
+ readonly pageSourceSha256s: readonly string[];
174
+ readonly sourceCharacters: number;
175
+ readonly renderedCharacters: number;
176
+ readonly lineCount: number;
177
+ readonly frameCount: number;
178
+ readonly pixelCount: number;
179
+ readonly byteCount: number;
180
+ }
181
+
182
+ export interface BitmapRenderResult {
183
+ readonly version: string;
184
+ readonly profile: Readonly<ProviderProfile>;
185
+ readonly textFallback: string;
186
+ readonly pages: readonly Readonly<BitmapPage>[];
187
+ readonly blocks: readonly Readonly<ProviderImageBlock>[];
188
+ readonly receipt: Readonly<BitmapReceipt>;
189
+ }
190
+
191
+ export function renderBitmapContext(
192
+ source: string,
193
+ request: RenderOptions & (ProfileRequest | { profile: Readonly<ProviderProfile> }),
194
+ ): Readonly<BitmapRenderResult>;
195
+
196
+ export interface CostInputs {
197
+ textInputUsdPerMillion: number;
198
+ imageInputUsdPerMillion: number;
199
+ outputUsdPerMillion?: number;
200
+ decodeOutputTokens?: number;
201
+ decodeFixedUsd?: number;
202
+ }
203
+
204
+ export interface TokenEstimateOverrides {
205
+ textCharactersPerToken?: number;
206
+ imagePixelsPerToken?: number;
207
+ }
208
+
209
+ export interface DecisionRequest extends RenderOptions {
210
+ provider: string;
211
+ model: string;
212
+ source: string;
213
+ vision: boolean;
214
+ expectedReuse?: number;
215
+ costs?: CostInputs;
216
+ tokenEstimates?: TokenEstimateOverrides;
217
+ }
218
+
219
+ export interface TransportEstimates {
220
+ readonly textTokens: number;
221
+ readonly imageTokens: number;
222
+ readonly textUsd: number;
223
+ readonly imageInputUsd: number;
224
+ readonly oneTimeDecodeUsd: number;
225
+ readonly imageUsd: number;
226
+ readonly assumptions: Readonly<TokenEstimateAssumptions>;
227
+ }
228
+
229
+ export interface TextTransportDecision {
230
+ readonly selected: 'text';
231
+ readonly eligible: boolean;
232
+ readonly reason: string;
233
+ readonly profile: string | null;
234
+ readonly textFallback: string;
235
+ readonly expectedReuse?: number;
236
+ readonly frameCount?: number;
237
+ readonly estimates?: Readonly<TransportEstimates>;
238
+ }
239
+
240
+ export interface BitmapTransportDecision {
241
+ readonly selected: 'bitmap-png';
242
+ readonly eligible: true;
243
+ readonly reason: 'lower-estimated-input-cost';
244
+ readonly profile: string;
245
+ readonly textFallback: string;
246
+ readonly expectedReuse: number;
247
+ readonly frameCount: number;
248
+ readonly estimates: Readonly<TransportEstimates>;
249
+ }
250
+
251
+ export type ContextTransportDecision = TextTransportDecision | BitmapTransportDecision;
252
+
253
+ export function decideContextTransport(request: DecisionRequest): Readonly<ContextTransportDecision>;
254
+
255
+ export interface ContextCarrierDescriptor {
256
+ readonly codec: 'utf8' | 'bitmap-png';
257
+ readonly version: string;
258
+ readonly profile: string | null;
259
+ readonly contextDigest: string;
260
+ readonly payloadDigest: string;
261
+ readonly dimensions: readonly Readonly<{ width: number; height: number }>[];
262
+ readonly bytes: number;
263
+ readonly counts: Readonly<{ characters: number; frames: number; pixels: number }>;
264
+ }
265
+
266
+ interface ContextCarrierRequestBase extends Omit<DecisionRequest, 'source'> {
267
+ serialization?: SerializationOptions;
268
+ }
269
+
270
+ export type ContextCarrierRequest = ContextCarrierRequestBase & (
271
+ | { source: string; messages?: never }
272
+ | { messages: readonly ConversationMessage[]; source?: never }
273
+ );
274
+
275
+ export interface ContextCarrier {
276
+ readonly selected: 'text' | 'bitmap-png';
277
+ readonly textFallback: string;
278
+ readonly blocks: readonly Readonly<ProviderImageBlock>[];
279
+ readonly pages: readonly Readonly<BitmapPage>[];
280
+ readonly descriptor: Readonly<ContextCarrierDescriptor>;
281
+ readonly decision: Readonly<ContextTransportDecision>;
282
+ }
283
+
284
+ export function createContextCarrier(request: ContextCarrierRequest): Readonly<ContextCarrier>;
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "@enigma/snapcompact",
3
+ "version": "0.1.0",
4
+ "description": "Deterministic local bitmap context carrier for vision-capable providers",
5
+ "type": "module",
6
+ "main": "./src/index.js",
7
+ "types": "./index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./index.d.ts",
11
+ "import": "./src/index.js",
12
+ "default": "./src/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "src/",
17
+ "assets/",
18
+ "index.d.ts",
19
+ "THIRD_PARTY_LICENSES.txt"
20
+ ],
21
+ "engines": {
22
+ "node": ">=24"
23
+ },
24
+ "license": "SEE LICENSE IN ../../LICENSE"
25
+ }