@retaw106/mmc-oc 0.0.0-stage → 1.2.2

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 (1018) hide show
  1. package/dist/agents/historian.d.ts +4 -0
  2. package/dist/agents/historian.d.ts.map +1 -0
  3. package/dist/agents/language-directive.d.ts +26 -0
  4. package/dist/agents/language-directive.d.ts.map +1 -0
  5. package/dist/agents/magic-context-prompt.d.ts +5 -0
  6. package/dist/agents/magic-context-prompt.d.ts.map +1 -0
  7. package/dist/agents/memory-maintainer.d.ts +96 -0
  8. package/dist/agents/memory-maintainer.d.ts.map +1 -0
  9. package/dist/config/agent-disable.d.ts +29 -0
  10. package/dist/config/agent-disable.d.ts.map +1 -0
  11. package/dist/config/config-paths.d.ts +7 -0
  12. package/dist/config/config-paths.d.ts.map +1 -0
  13. package/dist/config/index.d.ts +69 -0
  14. package/dist/config/index.d.ts.map +1 -0
  15. package/dist/config/live-run-config.d.ts +11 -0
  16. package/dist/config/live-run-config.d.ts.map +1 -0
  17. package/dist/config/live-snapshot.d.ts +32 -0
  18. package/dist/config/live-snapshot.d.ts.map +1 -0
  19. package/dist/config/migrate-experimental.d.ts +26 -0
  20. package/dist/config/migrate-experimental.d.ts.map +1 -0
  21. package/dist/config/profiles.d.ts +22 -0
  22. package/dist/config/profiles.d.ts.map +1 -0
  23. package/dist/config/project-security.d.ts +124 -0
  24. package/dist/config/project-security.d.ts.map +1 -0
  25. package/dist/config/prune-config-leaf.d.ts +26 -0
  26. package/dist/config/prune-config-leaf.d.ts.map +1 -0
  27. package/dist/config/raw-loader.d.ts +42 -0
  28. package/dist/config/raw-loader.d.ts.map +1 -0
  29. package/dist/config/removed-agent-config.d.ts +8 -0
  30. package/dist/config/removed-agent-config.d.ts.map +1 -0
  31. package/dist/config/schema/agent-overrides.d.ts +52 -0
  32. package/dist/config/schema/agent-overrides.d.ts.map +1 -0
  33. package/dist/config/schema/magic-context.d.ts +805 -0
  34. package/dist/config/schema/magic-context.d.ts.map +1 -0
  35. package/dist/config/variable.d.ts +48 -0
  36. package/dist/config/variable.d.ts.map +1 -0
  37. package/dist/context-a6px04s0.js +23932 -0
  38. package/dist/derive-budgets-fhk00zv8.js +18 -0
  39. package/dist/features/magic-context/compaction-marker.d.ts +211 -0
  40. package/dist/features/magic-context/compaction-marker.d.ts.map +1 -0
  41. package/dist/features/magic-context/compaction.d.ts +7 -0
  42. package/dist/features/magic-context/compaction.d.ts.map +1 -0
  43. package/dist/features/magic-context/compartment-events.d.ts +50 -0
  44. package/dist/features/magic-context/compartment-events.d.ts.map +1 -0
  45. package/dist/features/magic-context/compartment-lease.d.ts +28 -0
  46. package/dist/features/magic-context/compartment-lease.d.ts.map +1 -0
  47. package/dist/features/magic-context/compartment-storage.d.ts +178 -0
  48. package/dist/features/magic-context/compartment-storage.d.ts.map +1 -0
  49. package/dist/features/magic-context/compression-depth-storage.d.ts +14 -0
  50. package/dist/features/magic-context/compression-depth-storage.d.ts.map +1 -0
  51. package/dist/features/magic-context/context-authority.d.ts +15 -0
  52. package/dist/features/magic-context/context-authority.d.ts.map +1 -0
  53. package/dist/features/magic-context/fail-closed-block.d.ts +117 -0
  54. package/dist/features/magic-context/fail-closed-block.d.ts.map +1 -0
  55. package/dist/features/magic-context/index.d.ts +10 -0
  56. package/dist/features/magic-context/index.d.ts.map +1 -0
  57. package/dist/features/magic-context/literal-probes.d.ts +24 -0
  58. package/dist/features/magic-context/literal-probes.d.ts.map +1 -0
  59. package/dist/features/magic-context/lkg-prefix-chunks.d.ts +53 -0
  60. package/dist/features/magic-context/lkg-prefix-chunks.d.ts.map +1 -0
  61. package/dist/features/magic-context/memory/constants.d.ts +16 -0
  62. package/dist/features/magic-context/memory/constants.d.ts.map +1 -0
  63. package/dist/features/magic-context/memory/index.d.ts +11 -0
  64. package/dist/features/magic-context/memory/index.d.ts.map +1 -0
  65. package/dist/features/magic-context/memory/memory-diagnostics.d.ts +6 -0
  66. package/dist/features/magic-context/memory/memory-diagnostics.d.ts.map +1 -0
  67. package/dist/features/magic-context/memory/memory-selection.d.ts +12 -0
  68. package/dist/features/magic-context/memory/memory-selection.d.ts.map +1 -0
  69. package/dist/features/magic-context/memory/memory-visibility.d.ts +46 -0
  70. package/dist/features/magic-context/memory/memory-visibility.d.ts.map +1 -0
  71. package/dist/features/magic-context/memory/normalize-hash.d.ts +3 -0
  72. package/dist/features/magic-context/memory/normalize-hash.d.ts.map +1 -0
  73. package/dist/features/magic-context/memory/project-identity-cache.d.ts +7 -0
  74. package/dist/features/magic-context/memory/project-identity-cache.d.ts.map +1 -0
  75. package/dist/features/magic-context/memory/project-identity.d.ts +97 -0
  76. package/dist/features/magic-context/memory/project-identity.d.ts.map +1 -0
  77. package/dist/features/magic-context/memory/promotion.d.ts +26 -0
  78. package/dist/features/magic-context/memory/promotion.d.ts.map +1 -0
  79. package/dist/features/magic-context/memory/relocate-memory.d.ts +58 -0
  80. package/dist/features/magic-context/memory/relocate-memory.d.ts.map +1 -0
  81. package/dist/features/magic-context/memory/storage-memory-fts.d.ts +11 -0
  82. package/dist/features/magic-context/memory/storage-memory-fts.d.ts.map +1 -0
  83. package/dist/features/magic-context/memory/storage-memory-verifications.d.ts +35 -0
  84. package/dist/features/magic-context/memory/storage-memory-verifications.d.ts.map +1 -0
  85. package/dist/features/magic-context/memory/storage-memory.d.ts +89 -0
  86. package/dist/features/magic-context/memory/storage-memory.d.ts.map +1 -0
  87. package/dist/features/magic-context/memory/types.d.ts +59 -0
  88. package/dist/features/magic-context/memory/types.d.ts.map +1 -0
  89. package/dist/features/magic-context/memory/verification-paths.d.ts +48 -0
  90. package/dist/features/magic-context/memory/verification-paths.d.ts.map +1 -0
  91. package/dist/features/magic-context/memory/visibility.d.ts +6 -0
  92. package/dist/features/magic-context/memory/visibility.d.ts.map +1 -0
  93. package/dist/features/magic-context/memory-maintainer/apply.d.ts +65 -0
  94. package/dist/features/magic-context/memory-maintainer/apply.d.ts.map +1 -0
  95. package/dist/features/magic-context/memory-maintainer/budget.d.ts +75 -0
  96. package/dist/features/magic-context/memory-maintainer/budget.d.ts.map +1 -0
  97. package/dist/features/magic-context/memory-maintainer/coverage.d.ts +91 -0
  98. package/dist/features/magic-context/memory-maintainer/coverage.d.ts.map +1 -0
  99. package/dist/features/magic-context/memory-maintainer/dream-state.d.ts +18 -0
  100. package/dist/features/magic-context/memory-maintainer/dream-state.d.ts.map +1 -0
  101. package/dist/features/magic-context/memory-maintainer/launcher.d.ts +119 -0
  102. package/dist/features/magic-context/memory-maintainer/launcher.d.ts.map +1 -0
  103. package/dist/features/magic-context/memory-maintainer/lease.d.ts +56 -0
  104. package/dist/features/magic-context/memory-maintainer/lease.d.ts.map +1 -0
  105. package/dist/features/magic-context/memory-maintainer/manifest.d.ts +127 -0
  106. package/dist/features/magic-context/memory-maintainer/manifest.d.ts.map +1 -0
  107. package/dist/features/magic-context/memory-maintainer/manual-commands.d.ts +46 -0
  108. package/dist/features/magic-context/memory-maintainer/manual-commands.d.ts.map +1 -0
  109. package/dist/features/magic-context/memory-maintainer/oc2-adapter.d.ts +79 -0
  110. package/dist/features/magic-context/memory-maintainer/oc2-adapter.d.ts.map +1 -0
  111. package/dist/features/magic-context/memory-maintainer/pause-report.d.ts +37 -0
  112. package/dist/features/magic-context/memory-maintainer/pause-report.d.ts.map +1 -0
  113. package/dist/features/magic-context/memory-maintainer/pipeline.d.ts +199 -0
  114. package/dist/features/magic-context/memory-maintainer/pipeline.d.ts.map +1 -0
  115. package/dist/features/magic-context/memory-maintainer/provider-output-failure.d.ts +15 -0
  116. package/dist/features/magic-context/memory-maintainer/provider-output-failure.d.ts.map +1 -0
  117. package/dist/features/magic-context/memory-maintainer/schedule-storage.d.ts +76 -0
  118. package/dist/features/magic-context/memory-maintainer/schedule-storage.d.ts.map +1 -0
  119. package/dist/features/magic-context/memory-maintainer/schedule.d.ts +90 -0
  120. package/dist/features/magic-context/memory-maintainer/schedule.d.ts.map +1 -0
  121. package/dist/features/magic-context/merged-reasoning-decisions.d.ts +6 -0
  122. package/dist/features/magic-context/merged-reasoning-decisions.d.ts.map +1 -0
  123. package/dist/features/magic-context/message-fts-rowid-map.d.ts +50 -0
  124. package/dist/features/magic-context/message-fts-rowid-map.d.ts.map +1 -0
  125. package/dist/features/magic-context/message-fts-session-filter.d.ts +14 -0
  126. package/dist/features/magic-context/message-fts-session-filter.d.ts.map +1 -0
  127. package/dist/features/magic-context/message-index-async.d.ts +33 -0
  128. package/dist/features/magic-context/message-index-async.d.ts.map +1 -0
  129. package/dist/features/magic-context/message-index-sweep.d.ts +11 -0
  130. package/dist/features/magic-context/message-index-sweep.d.ts.map +1 -0
  131. package/dist/features/magic-context/message-index.d.ts +88 -0
  132. package/dist/features/magic-context/message-index.d.ts.map +1 -0
  133. package/dist/features/magic-context/message-time-backfill.d.ts +19 -0
  134. package/dist/features/magic-context/message-time-backfill.d.ts.map +1 -0
  135. package/dist/features/magic-context/migration-v2-write-split.d.ts +62 -0
  136. package/dist/features/magic-context/migration-v2-write-split.d.ts.map +1 -0
  137. package/dist/features/magic-context/migrations.d.ts +73 -0
  138. package/dist/features/magic-context/migrations.d.ts.map +1 -0
  139. package/dist/features/magic-context/mock-database.d.ts +3 -0
  140. package/dist/features/magic-context/mock-database.d.ts.map +1 -0
  141. package/dist/features/magic-context/mural/storage-mural-cues.d.ts +65 -0
  142. package/dist/features/magic-context/mural/storage-mural-cues.d.ts.map +1 -0
  143. package/dist/features/magic-context/no-content-compartment.d.ts +12 -0
  144. package/dist/features/magic-context/no-content-compartment.d.ts.map +1 -0
  145. package/dist/features/magic-context/opencode2-relabel.d.ts +132 -0
  146. package/dist/features/magic-context/opencode2-relabel.d.ts.map +1 -0
  147. package/dist/features/magic-context/overflow-detection.d.ts +108 -0
  148. package/dist/features/magic-context/overflow-detection.d.ts.map +1 -0
  149. package/dist/features/magic-context/pi-content-decisions.d.ts +9 -0
  150. package/dist/features/magic-context/pi-content-decisions.d.ts.map +1 -0
  151. package/dist/features/magic-context/project-identity.d.ts +2 -0
  152. package/dist/features/magic-context/project-identity.d.ts.map +1 -0
  153. package/dist/features/magic-context/protection-window.d.ts +79 -0
  154. package/dist/features/magic-context/protection-window.d.ts.map +1 -0
  155. package/dist/features/magic-context/range-parser.d.ts +18 -0
  156. package/dist/features/magic-context/range-parser.d.ts.map +1 -0
  157. package/dist/features/magic-context/reclaim-protection.d.ts +13 -0
  158. package/dist/features/magic-context/reclaim-protection.d.ts.map +1 -0
  159. package/dist/features/magic-context/resolve-subagent-fallback.d.ts +42 -0
  160. package/dist/features/magic-context/resolve-subagent-fallback.d.ts.map +1 -0
  161. package/dist/features/magic-context/scheduler.d.ts +20 -0
  162. package/dist/features/magic-context/scheduler.d.ts.map +1 -0
  163. package/dist/features/magic-context/schema-fence-probe.d.ts +29 -0
  164. package/dist/features/magic-context/schema-fence-probe.d.ts.map +1 -0
  165. package/dist/features/magic-context/search.d.ts +118 -0
  166. package/dist/features/magic-context/search.d.ts.map +1 -0
  167. package/dist/features/magic-context/session-cache-ttl.d.ts +10 -0
  168. package/dist/features/magic-context/session-cache-ttl.d.ts.map +1 -0
  169. package/dist/features/magic-context/session-decision-calibration.d.ts +31 -0
  170. package/dist/features/magic-context/session-decision-calibration.d.ts.map +1 -0
  171. package/dist/features/magic-context/session-project-backfill.d.ts +37 -0
  172. package/dist/features/magic-context/session-project-backfill.d.ts.map +1 -0
  173. package/dist/features/magic-context/session-project-storage.d.ts +23 -0
  174. package/dist/features/magic-context/session-project-storage.d.ts.map +1 -0
  175. package/dist/features/magic-context/storage-caveman-rules.d.ts +21 -0
  176. package/dist/features/magic-context/storage-caveman-rules.d.ts.map +1 -0
  177. package/dist/features/magic-context/storage-clone.d.ts +44 -0
  178. package/dist/features/magic-context/storage-clone.d.ts.map +1 -0
  179. package/dist/features/magic-context/storage-db.d.ts +183 -0
  180. package/dist/features/magic-context/storage-db.d.ts.map +1 -0
  181. package/dist/features/magic-context/storage-historian-runs.d.ts +79 -0
  182. package/dist/features/magic-context/storage-historian-runs.d.ts.map +1 -0
  183. package/dist/features/magic-context/storage-identity-merge.d.ts +26 -0
  184. package/dist/features/magic-context/storage-identity-merge.d.ts.map +1 -0
  185. package/dist/features/magic-context/storage-identity-rekey-map.d.ts +11 -0
  186. package/dist/features/magic-context/storage-identity-rekey-map.d.ts.map +1 -0
  187. package/dist/features/magic-context/storage-m0-mutation-log.d.ts +22 -0
  188. package/dist/features/magic-context/storage-m0-mutation-log.d.ts.map +1 -0
  189. package/dist/features/magic-context/storage-memory-mutation-log.d.ts +29 -0
  190. package/dist/features/magic-context/storage-memory-mutation-log.d.ts.map +1 -0
  191. package/dist/features/magic-context/storage-meta-persisted.d.ts +623 -0
  192. package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -0
  193. package/dist/features/magic-context/storage-meta-session.d.ts +14 -0
  194. package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -0
  195. package/dist/features/magic-context/storage-meta-shared.d.ts +102 -0
  196. package/dist/features/magic-context/storage-meta-shared.d.ts.map +1 -0
  197. package/dist/features/magic-context/storage-meta.d.ts +4 -0
  198. package/dist/features/magic-context/storage-meta.d.ts.map +1 -0
  199. package/dist/features/magic-context/storage-native-replay.d.ts +29 -0
  200. package/dist/features/magic-context/storage-native-replay.d.ts.map +1 -0
  201. package/dist/features/magic-context/storage-notes.d.ts +80 -0
  202. package/dist/features/magic-context/storage-notes.d.ts.map +1 -0
  203. package/dist/features/magic-context/storage-ops.d.ts +14 -0
  204. package/dist/features/magic-context/storage-ops.d.ts.map +1 -0
  205. package/dist/features/magic-context/storage-primers.d.ts +96 -0
  206. package/dist/features/magic-context/storage-primers.d.ts.map +1 -0
  207. package/dist/features/magic-context/storage-project-state.d.ts +19 -0
  208. package/dist/features/magic-context/storage-project-state.d.ts.map +1 -0
  209. package/dist/features/magic-context/storage-reasoning-removal.d.ts +30 -0
  210. package/dist/features/magic-context/storage-reasoning-removal.d.ts.map +1 -0
  211. package/dist/features/magic-context/storage-replay-document.d.ts +72 -0
  212. package/dist/features/magic-context/storage-replay-document.d.ts.map +1 -0
  213. package/dist/features/magic-context/storage-schema-helpers.d.ts +31 -0
  214. package/dist/features/magic-context/storage-schema-helpers.d.ts.map +1 -0
  215. package/dist/features/magic-context/storage-session-tables.d.ts +18 -0
  216. package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -0
  217. package/dist/features/magic-context/storage-source.d.ts +5 -0
  218. package/dist/features/magic-context/storage-source.d.ts.map +1 -0
  219. package/dist/features/magic-context/storage-subagent-invocations.d.ts +62 -0
  220. package/dist/features/magic-context/storage-subagent-invocations.d.ts.map +1 -0
  221. package/dist/features/magic-context/storage-tags.d.ts +542 -0
  222. package/dist/features/magic-context/storage-tags.d.ts.map +1 -0
  223. package/dist/features/magic-context/storage-unavailable-reason.d.ts +17 -0
  224. package/dist/features/magic-context/storage-unavailable-reason.d.ts.map +1 -0
  225. package/dist/features/magic-context/storage-v22-backfill-failures.d.ts +26 -0
  226. package/dist/features/magic-context/storage-v22-backfill-failures.d.ts.map +1 -0
  227. package/dist/features/magic-context/storage.d.ts +23 -0
  228. package/dist/features/magic-context/storage.d.ts.map +1 -0
  229. package/dist/features/magic-context/store-generation-rebase.d.ts +188 -0
  230. package/dist/features/magic-context/store-generation-rebase.d.ts.map +1 -0
  231. package/dist/features/magic-context/subagent-token-capture.d.ts +35 -0
  232. package/dist/features/magic-context/subagent-token-capture.d.ts.map +1 -0
  233. package/dist/features/magic-context/tag-input.d.ts +4 -0
  234. package/dist/features/magic-context/tag-input.d.ts.map +1 -0
  235. package/dist/features/magic-context/tagger.d.ts +119 -0
  236. package/dist/features/magic-context/tagger.d.ts.map +1 -0
  237. package/dist/features/magic-context/tool-definition-tokens.d.ts +90 -0
  238. package/dist/features/magic-context/tool-definition-tokens.d.ts.map +1 -0
  239. package/dist/features/magic-context/tool-owner-backfill.d.ts +93 -0
  240. package/dist/features/magic-context/tool-owner-backfill.d.ts.map +1 -0
  241. package/dist/features/magic-context/transform-decision-log.d.ts +110 -0
  242. package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -0
  243. package/dist/features/magic-context/types.d.ts +133 -0
  244. package/dist/features/magic-context/types.d.ts.map +1 -0
  245. package/dist/features/magic-context/window-report-ledger.d.ts +70 -0
  246. package/dist/features/magic-context/window-report-ledger.d.ts.map +1 -0
  247. package/dist/features/magic-context/work-metrics.d.ts +79 -0
  248. package/dist/features/magic-context/work-metrics.d.ts.map +1 -0
  249. package/dist/features/magic-context/workspaces.d.ts +28 -0
  250. package/dist/features/magic-context/workspaces.d.ts.map +1 -0
  251. package/dist/hooks/auto-update-checker/semver.d.ts +26 -0
  252. package/dist/hooks/auto-update-checker/semver.d.ts.map +1 -0
  253. package/dist/hooks/magic-context/apply-operations.d.ts +158 -0
  254. package/dist/hooks/magic-context/apply-operations.d.ts.map +1 -0
  255. package/dist/hooks/magic-context/auto-search-deadline.d.ts +10 -0
  256. package/dist/hooks/magic-context/auto-search-deadline.d.ts.map +1 -0
  257. package/dist/hooks/magic-context/auto-search-hint.d.ts +36 -0
  258. package/dist/hooks/magic-context/auto-search-hint.d.ts.map +1 -0
  259. package/dist/hooks/magic-context/auto-search-runner.d.ts +60 -0
  260. package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -0
  261. package/dist/hooks/magic-context/cache-busting-signals.d.ts +42 -0
  262. package/dist/hooks/magic-context/cache-busting-signals.d.ts.map +1 -0
  263. package/dist/hooks/magic-context/caveman-cleanup.d.ts +98 -0
  264. package/dist/hooks/magic-context/caveman-cleanup.d.ts.map +1 -0
  265. package/dist/hooks/magic-context/caveman.d.ts +90 -0
  266. package/dist/hooks/magic-context/caveman.d.ts.map +1 -0
  267. package/dist/hooks/magic-context/channel2-cycle.d.ts +16 -0
  268. package/dist/hooks/magic-context/channel2-cycle.d.ts.map +1 -0
  269. package/dist/hooks/magic-context/channel2-delivery.d.ts +32 -0
  270. package/dist/hooks/magic-context/channel2-delivery.d.ts.map +1 -0
  271. package/dist/hooks/magic-context/child-session-spawn.d.ts +27 -0
  272. package/dist/hooks/magic-context/child-session-spawn.d.ts.map +1 -0
  273. package/dist/hooks/magic-context/compaction-marker-manager.d.ts +154 -0
  274. package/dist/hooks/magic-context/compaction-marker-manager.d.ts.map +1 -0
  275. package/dist/hooks/magic-context/compaction-off-transition.d.ts +97 -0
  276. package/dist/hooks/magic-context/compaction-off-transition.d.ts.map +1 -0
  277. package/dist/hooks/magic-context/compartment-parser.d.ts +66 -0
  278. package/dist/hooks/magic-context/compartment-parser.d.ts.map +1 -0
  279. package/dist/hooks/magic-context/compartment-prompt.d.ts +33 -0
  280. package/dist/hooks/magic-context/compartment-prompt.d.ts.map +1 -0
  281. package/dist/hooks/magic-context/compartment-render-epoch.d.ts +27 -0
  282. package/dist/hooks/magic-context/compartment-render-epoch.d.ts.map +1 -0
  283. package/dist/hooks/magic-context/compartment-runner-drop-queue.d.ts +29 -0
  284. package/dist/hooks/magic-context/compartment-runner-drop-queue.d.ts.map +1 -0
  285. package/dist/hooks/magic-context/compartment-runner-historian.d.ts +43 -0
  286. package/dist/hooks/magic-context/compartment-runner-historian.d.ts.map +1 -0
  287. package/dist/hooks/magic-context/compartment-runner-incremental.d.ts +31 -0
  288. package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -0
  289. package/dist/hooks/magic-context/compartment-runner-mapping.d.ts +25 -0
  290. package/dist/hooks/magic-context/compartment-runner-mapping.d.ts.map +1 -0
  291. package/dist/hooks/magic-context/compartment-runner-partial-recomp.d.ts +29 -0
  292. package/dist/hooks/magic-context/compartment-runner-partial-recomp.d.ts.map +1 -0
  293. package/dist/hooks/magic-context/compartment-runner-recomp.d.ts +11 -0
  294. package/dist/hooks/magic-context/compartment-runner-recomp.d.ts.map +1 -0
  295. package/dist/hooks/magic-context/compartment-runner-types.d.ts +295 -0
  296. package/dist/hooks/magic-context/compartment-runner-types.d.ts.map +1 -0
  297. package/dist/hooks/magic-context/compartment-runner-validation.d.ts +83 -0
  298. package/dist/hooks/magic-context/compartment-runner-validation.d.ts.map +1 -0
  299. package/dist/hooks/magic-context/compartment-runner.d.ts +59 -0
  300. package/dist/hooks/magic-context/compartment-runner.d.ts.map +1 -0
  301. package/dist/hooks/magic-context/compartment-trigger.d.ts +77 -0
  302. package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -0
  303. package/dist/hooks/magic-context/ctx-reduce-availability.d.ts +170 -0
  304. package/dist/hooks/magic-context/ctx-reduce-availability.d.ts.map +1 -0
  305. package/dist/hooks/magic-context/ctx-reduce-nudge.d.ts +104 -0
  306. package/dist/hooks/magic-context/ctx-reduce-nudge.d.ts.map +1 -0
  307. package/dist/hooks/magic-context/decay-curve.d.ts +84 -0
  308. package/dist/hooks/magic-context/decay-curve.d.ts.map +1 -0
  309. package/dist/hooks/magic-context/decay-render.d.ts +80 -0
  310. package/dist/hooks/magic-context/decay-render.d.ts.map +1 -0
  311. package/dist/hooks/magic-context/decision-calibration.d.ts +24 -0
  312. package/dist/hooks/magic-context/decision-calibration.d.ts.map +1 -0
  313. package/dist/hooks/magic-context/degraded-pass-refusal.d.ts +35 -0
  314. package/dist/hooks/magic-context/degraded-pass-refusal.d.ts.map +1 -0
  315. package/dist/hooks/magic-context/derive-budgets.d.ts +60 -0
  316. package/dist/hooks/magic-context/derive-budgets.d.ts.map +1 -0
  317. package/dist/hooks/magic-context/drop-stale-reduce-calls.d.ts +39 -0
  318. package/dist/hooks/magic-context/drop-stale-reduce-calls.d.ts.map +1 -0
  319. package/dist/hooks/magic-context/dropped-input-guard.d.ts +55 -0
  320. package/dist/hooks/magic-context/dropped-input-guard.d.ts.map +1 -0
  321. package/dist/hooks/magic-context/dropped-token-estimate.d.ts +20 -0
  322. package/dist/hooks/magic-context/dropped-token-estimate.d.ts.map +1 -0
  323. package/dist/hooks/magic-context/edit-marker.d.ts +11 -0
  324. package/dist/hooks/magic-context/edit-marker.d.ts.map +1 -0
  325. package/dist/hooks/magic-context/emergency-drop.d.ts +112 -0
  326. package/dist/hooks/magic-context/emergency-drop.d.ts.map +1 -0
  327. package/dist/hooks/magic-context/emergency-fail-closed.d.ts +14 -0
  328. package/dist/hooks/magic-context/emergency-fail-closed.d.ts.map +1 -0
  329. package/dist/hooks/magic-context/empty-task-output.d.ts +16 -0
  330. package/dist/hooks/magic-context/empty-task-output.d.ts.map +1 -0
  331. package/dist/hooks/magic-context/event-payloads.d.ts +73 -0
  332. package/dist/hooks/magic-context/event-payloads.d.ts.map +1 -0
  333. package/dist/hooks/magic-context/event-resolvers.d.ts +114 -0
  334. package/dist/hooks/magic-context/event-resolvers.d.ts.map +1 -0
  335. package/dist/hooks/magic-context/execute-flush.d.ts +3 -0
  336. package/dist/hooks/magic-context/execute-flush.d.ts.map +1 -0
  337. package/dist/hooks/magic-context/final-wire-token-estimate.d.ts +56 -0
  338. package/dist/hooks/magic-context/final-wire-token-estimate.d.ts.map +1 -0
  339. package/dist/hooks/magic-context/fold-execution-gate.d.ts +2 -0
  340. package/dist/hooks/magic-context/fold-execution-gate.d.ts.map +1 -0
  341. package/dist/hooks/magic-context/format-bytes.d.ts +2 -0
  342. package/dist/hooks/magic-context/format-bytes.d.ts.map +1 -0
  343. package/dist/hooks/magic-context/heuristic-cleanup.d.ts +48 -0
  344. package/dist/hooks/magic-context/heuristic-cleanup.d.ts.map +1 -0
  345. package/dist/hooks/magic-context/historian-no-fire-cause.d.ts +5 -0
  346. package/dist/hooks/magic-context/historian-no-fire-cause.d.ts.map +1 -0
  347. package/dist/hooks/magic-context/historian-prompt-fit.d.ts +112 -0
  348. package/dist/hooks/magic-context/historian-prompt-fit.d.ts.map +1 -0
  349. package/dist/hooks/magic-context/historian-prompt.generated.d.ts +2 -0
  350. package/dist/hooks/magic-context/historian-prompt.generated.d.ts.map +1 -0
  351. package/dist/hooks/magic-context/historian-publish-stage-logger.d.ts +3 -0
  352. package/dist/hooks/magic-context/historian-publish-stage-logger.d.ts.map +1 -0
  353. package/dist/hooks/magic-context/historian-state-file.d.ts +43 -0
  354. package/dist/hooks/magic-context/historian-state-file.d.ts.map +1 -0
  355. package/dist/hooks/magic-context/history-boundary-repair.d.ts +44 -0
  356. package/dist/hooks/magic-context/history-boundary-repair.d.ts.map +1 -0
  357. package/dist/hooks/magic-context/hook-handlers.d.ts +177 -0
  358. package/dist/hooks/magic-context/hook-handlers.d.ts.map +1 -0
  359. package/dist/hooks/magic-context/host-served-rows.d.ts +58 -0
  360. package/dist/hooks/magic-context/host-served-rows.d.ts.map +1 -0
  361. package/dist/hooks/magic-context/image-token-estimate.d.ts +15 -0
  362. package/dist/hooks/magic-context/image-token-estimate.d.ts.map +1 -0
  363. package/dist/hooks/magic-context/inject-compartments.d.ts +389 -0
  364. package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -0
  365. package/dist/hooks/magic-context/issue-135-wire-fixtures.d.ts +8 -0
  366. package/dist/hooks/magic-context/issue-135-wire-fixtures.d.ts.map +1 -0
  367. package/dist/hooks/magic-context/issue-423-fixture.d.ts +37 -0
  368. package/dist/hooks/magic-context/issue-423-fixture.d.ts.map +1 -0
  369. package/dist/hooks/magic-context/issue-424-fixture.d.ts +11 -0
  370. package/dist/hooks/magic-context/issue-424-fixture.d.ts.map +1 -0
  371. package/dist/hooks/magic-context/legacy-compartments.d.ts +20 -0
  372. package/dist/hooks/magic-context/legacy-compartments.d.ts.map +1 -0
  373. package/dist/hooks/magic-context/live-session-state.d.ts +68 -0
  374. package/dist/hooks/magic-context/live-session-state.d.ts.map +1 -0
  375. package/dist/hooks/magic-context/lkg-persist.d.ts +22 -0
  376. package/dist/hooks/magic-context/lkg-persist.d.ts.map +1 -0
  377. package/dist/hooks/magic-context/lkg-replay.d.ts +71 -0
  378. package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -0
  379. package/dist/hooks/magic-context/lkg-slot.d.ts +119 -0
  380. package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -0
  381. package/dist/hooks/magic-context/m0-token-breakdown.d.ts +44 -0
  382. package/dist/hooks/magic-context/m0-token-breakdown.d.ts.map +1 -0
  383. package/dist/hooks/magic-context/maintenance-authority.d.ts +2 -0
  384. package/dist/hooks/magic-context/maintenance-authority.d.ts.map +1 -0
  385. package/dist/hooks/magic-context/openai-compat-adjacency.d.ts +38 -0
  386. package/dist/hooks/magic-context/openai-compat-adjacency.d.ts.map +1 -0
  387. package/dist/hooks/magic-context/opencode-v1-store-fixture.d.ts +12 -0
  388. package/dist/hooks/magic-context/opencode-v1-store-fixture.d.ts.map +1 -0
  389. package/dist/hooks/magic-context/pass-outcome.d.ts +70 -0
  390. package/dist/hooks/magic-context/pass-outcome.d.ts.map +1 -0
  391. package/dist/hooks/magic-context/persist-filtered-noise.d.ts +5 -0
  392. package/dist/hooks/magic-context/persist-filtered-noise.d.ts.map +1 -0
  393. package/dist/hooks/magic-context/postprocess-read-cache.d.ts +8 -0
  394. package/dist/hooks/magic-context/postprocess-read-cache.d.ts.map +1 -0
  395. package/dist/hooks/magic-context/producer-window-guard.d.ts +63 -0
  396. package/dist/hooks/magic-context/producer-window-guard.d.ts.map +1 -0
  397. package/dist/hooks/magic-context/producer-window-test-support.d.ts +14 -0
  398. package/dist/hooks/magic-context/producer-window-test-support.d.ts.map +1 -0
  399. package/dist/hooks/magic-context/protected-tail-boundary.d.ts +234 -0
  400. package/dist/hooks/magic-context/protected-tail-boundary.d.ts.map +1 -0
  401. package/dist/hooks/magic-context/raw-fallback-context-limit.d.ts +10 -0
  402. package/dist/hooks/magic-context/raw-fallback-context-limit.d.ts.map +1 -0
  403. package/dist/hooks/magic-context/read-session-chunk.d.ts +271 -0
  404. package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -0
  405. package/dist/hooks/magic-context/read-session-db.d.ts +66 -0
  406. package/dist/hooks/magic-context/read-session-db.d.ts.map +1 -0
  407. package/dist/hooks/magic-context/read-session-formatting.d.ts +65 -0
  408. package/dist/hooks/magic-context/read-session-formatting.d.ts.map +1 -0
  409. package/dist/hooks/magic-context/read-session-raw.d.ts +164 -0
  410. package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -0
  411. package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts +82 -0
  412. package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts.map +1 -0
  413. package/dist/hooks/magic-context/reasoning-removal.d.ts +60 -0
  414. package/dist/hooks/magic-context/reasoning-removal.d.ts.map +1 -0
  415. package/dist/hooks/magic-context/recomp-orchestrator.d.ts +93 -0
  416. package/dist/hooks/magic-context/recomp-orchestrator.d.ts.map +1 -0
  417. package/dist/hooks/magic-context/reference-retrieval.d.ts +72 -0
  418. package/dist/hooks/magic-context/reference-retrieval.d.ts.map +1 -0
  419. package/dist/hooks/magic-context/reference-seeds.generated.d.ts +8 -0
  420. package/dist/hooks/magic-context/reference-seeds.generated.d.ts.map +1 -0
  421. package/dist/hooks/magic-context/send-session-notification.d.ts +43 -0
  422. package/dist/hooks/magic-context/send-session-notification.d.ts.map +1 -0
  423. package/dist/hooks/magic-context/sentinel.d.ts +146 -0
  424. package/dist/hooks/magic-context/sentinel.d.ts.map +1 -0
  425. package/dist/hooks/magic-context/storage-busy-refusal.d.ts +20 -0
  426. package/dist/hooks/magic-context/storage-busy-refusal.d.ts.map +1 -0
  427. package/dist/hooks/magic-context/strip-content.d.ts +216 -0
  428. package/dist/hooks/magic-context/strip-content.d.ts.map +1 -0
  429. package/dist/hooks/magic-context/strip-structural-noise.d.ts +15 -0
  430. package/dist/hooks/magic-context/strip-structural-noise.d.ts.map +1 -0
  431. package/dist/hooks/magic-context/stripped-command.d.ts +56 -0
  432. package/dist/hooks/magic-context/stripped-command.d.ts.map +1 -0
  433. package/dist/hooks/magic-context/supersession-reclaim.d.ts +58 -0
  434. package/dist/hooks/magic-context/supersession-reclaim.d.ts.map +1 -0
  435. package/dist/hooks/magic-context/system-injection-stripper.d.ts +2 -0
  436. package/dist/hooks/magic-context/system-injection-stripper.d.ts.map +1 -0
  437. package/dist/hooks/magic-context/system-prompt-hash.d.ts +129 -0
  438. package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -0
  439. package/dist/hooks/magic-context/tag-content-primitives.d.ts +31 -0
  440. package/dist/hooks/magic-context/tag-content-primitives.d.ts.map +1 -0
  441. package/dist/hooks/magic-context/tag-id-fallback.d.ts +11 -0
  442. package/dist/hooks/magic-context/tag-id-fallback.d.ts.map +1 -0
  443. package/dist/hooks/magic-context/tag-messages.d.ts +145 -0
  444. package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -0
  445. package/dist/hooks/magic-context/tag-part-guards.d.ts +23 -0
  446. package/dist/hooks/magic-context/tag-part-guards.d.ts.map +1 -0
  447. package/dist/hooks/magic-context/tail-hygiene-walk.d.ts +178 -0
  448. package/dist/hooks/magic-context/tail-hygiene-walk.d.ts.map +1 -0
  449. package/dist/hooks/magic-context/temporal-awareness.d.ts +73 -0
  450. package/dist/hooks/magic-context/temporal-awareness.d.ts.map +1 -0
  451. package/dist/hooks/magic-context/text-complete.d.ts +31 -0
  452. package/dist/hooks/magic-context/text-complete.d.ts.map +1 -0
  453. package/dist/hooks/magic-context/todo-view.d.ts +127 -0
  454. package/dist/hooks/magic-context/todo-view.d.ts.map +1 -0
  455. package/dist/hooks/magic-context/tokenizer-calibration.d.ts +92 -0
  456. package/dist/hooks/magic-context/tokenizer-calibration.d.ts.map +1 -0
  457. package/dist/hooks/magic-context/tool-drop-target.d.ts +144 -0
  458. package/dist/hooks/magic-context/tool-drop-target.d.ts.map +1 -0
  459. package/dist/hooks/magic-context/tool-input-size.d.ts +21 -0
  460. package/dist/hooks/magic-context/tool-input-size.d.ts.map +1 -0
  461. package/dist/hooks/magic-context/tool-reclaim.d.ts +12 -0
  462. package/dist/hooks/magic-context/tool-reclaim.d.ts.map +1 -0
  463. package/dist/hooks/magic-context/tool-sweep-policy.d.ts +50 -0
  464. package/dist/hooks/magic-context/tool-sweep-policy.d.ts.map +1 -0
  465. package/dist/hooks/magic-context/transform-compartment-phase.d.ts +133 -0
  466. package/dist/hooks/magic-context/transform-compartment-phase.d.ts.map +1 -0
  467. package/dist/hooks/magic-context/transform-context-state.d.ts +28 -0
  468. package/dist/hooks/magic-context/transform-context-state.d.ts.map +1 -0
  469. package/dist/hooks/magic-context/transform-message-helpers.d.ts +32 -0
  470. package/dist/hooks/magic-context/transform-message-helpers.d.ts.map +1 -0
  471. package/dist/hooks/magic-context/transform-operations.d.ts +5 -0
  472. package/dist/hooks/magic-context/transform-operations.d.ts.map +1 -0
  473. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +350 -0
  474. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -0
  475. package/dist/hooks/magic-context/transform-stage-logger.d.ts +2 -0
  476. package/dist/hooks/magic-context/transform-stage-logger.d.ts.map +1 -0
  477. package/dist/hooks/magic-context/transform.d.ts +334 -0
  478. package/dist/hooks/magic-context/transform.d.ts.map +1 -0
  479. package/dist/hooks/magic-context/unmanaged-over-window.d.ts +36 -0
  480. package/dist/hooks/magic-context/unmanaged-over-window.d.ts.map +1 -0
  481. package/dist/hooks/magic-context/unresolved-history-boundary.d.ts +15 -0
  482. package/dist/hooks/magic-context/unresolved-history-boundary.d.ts.map +1 -0
  483. package/dist/hooks/magic-context/wrapup-orchestrator.d.ts +14 -0
  484. package/dist/hooks/magic-context/wrapup-orchestrator.d.ts.map +1 -0
  485. package/dist/index-1vs6anwz.js +126 -0
  486. package/dist/index-3wagyrnj.js +670 -0
  487. package/dist/index-53g38ggt.js +40 -0
  488. package/dist/index-5pg0acf7.js +410 -0
  489. package/dist/index-977gxfz0.js +514 -0
  490. package/dist/index-by6h2pav.js +27883 -0
  491. package/dist/index-e1q8002h.js +16 -0
  492. package/dist/index-fg34g6a5.js +584 -0
  493. package/dist/index-jdxxq8cz.js +99 -0
  494. package/dist/index-me3zcj5t.js +69 -0
  495. package/dist/index-qbkzdkk0.js +496 -0
  496. package/dist/index-wgt4gamw.js +6388 -0
  497. package/dist/index-zx63j2e2.js +907 -0
  498. package/dist/index.d.ts +7 -0
  499. package/dist/index.d.ts.map +1 -0
  500. package/dist/index.js +37 -0
  501. package/dist/message-time-backfill-5ewk0axe.js +116 -0
  502. package/dist/model-resolution-5haaxnpt.js +6 -0
  503. package/dist/plugin/boot-deadline.d.ts +47 -0
  504. package/dist/plugin/boot-deadline.d.ts.map +1 -0
  505. package/dist/plugin/boot-quiet.d.ts +12 -0
  506. package/dist/plugin/boot-quiet.d.ts.map +1 -0
  507. package/dist/plugin/normalize-tool-arg-schemas.d.ts +7 -0
  508. package/dist/plugin/normalize-tool-arg-schemas.d.ts.map +1 -0
  509. package/dist/plugin/rpc-handlers.d.ts +52 -0
  510. package/dist/plugin/rpc-handlers.d.ts.map +1 -0
  511. package/dist/plugin/sidebar-snapshot-cache.d.ts +19 -0
  512. package/dist/plugin/sidebar-snapshot-cache.d.ts.map +1 -0
  513. package/dist/plugin/subagent-tool-policy.d.ts +9 -0
  514. package/dist/plugin/subagent-tool-policy.d.ts.map +1 -0
  515. package/dist/plugin/types.d.ts +3 -0
  516. package/dist/plugin/types.d.ts.map +1 -0
  517. package/dist/prompt-context-ffa5xcfx.js +76 -0
  518. package/dist/read-session-chunk-apjwrttc.js +56 -0
  519. package/dist/recomp-orchestrator-gyeevxaw.js +21 -0
  520. package/dist/rpc-notifications-4amf6mf4.js +14 -0
  521. package/dist/safe-notification-target-ph3xd1ve.js +9 -0
  522. package/dist/send-session-notification-y29y9fsr.js +18 -0
  523. package/dist/shared/announcement.d.ts +69 -0
  524. package/dist/shared/announcement.d.ts.map +1 -0
  525. package/dist/shared/assistant-message-extractor.d.ts +13 -0
  526. package/dist/shared/assistant-message-extractor.d.ts.map +1 -0
  527. package/dist/shared/auto-update-provenance.d.ts +9 -0
  528. package/dist/shared/auto-update-provenance.d.ts.map +1 -0
  529. package/dist/shared/bounded-session-map.d.ts +45 -0
  530. package/dist/shared/bounded-session-map.d.ts.map +1 -0
  531. package/dist/shared/builtin-commands.d.ts +24 -0
  532. package/dist/shared/builtin-commands.d.ts.map +1 -0
  533. package/dist/shared/cache-ttl-display.d.ts +25 -0
  534. package/dist/shared/cache-ttl-display.d.ts.map +1 -0
  535. package/dist/shared/cache-ttl-seed.d.ts +10 -0
  536. package/dist/shared/cache-ttl-seed.d.ts.map +1 -0
  537. package/dist/shared/child-session-teardown.d.ts +34 -0
  538. package/dist/shared/child-session-teardown.d.ts.map +1 -0
  539. package/dist/shared/commit-detection.d.ts +29 -0
  540. package/dist/shared/commit-detection.d.ts.map +1 -0
  541. package/dist/shared/config-diagnostics.d.ts +30 -0
  542. package/dist/shared/config-diagnostics.d.ts.map +1 -0
  543. package/dist/shared/conflict-detector.d.ts +139 -0
  544. package/dist/shared/conflict-detector.d.ts.map +1 -0
  545. package/dist/shared/conflict-fixer.d.ts +20 -0
  546. package/dist/shared/conflict-fixer.d.ts.map +1 -0
  547. package/dist/shared/context-limit-provenance.d.ts +3 -0
  548. package/dist/shared/context-limit-provenance.d.ts.map +1 -0
  549. package/dist/shared/data-path.d.ts +176 -0
  550. package/dist/shared/data-path.d.ts.map +1 -0
  551. package/dist/shared/error-message.d.ts +32 -0
  552. package/dist/shared/error-message.d.ts.map +1 -0
  553. package/dist/shared/escalation-bands.d.ts +9 -0
  554. package/dist/shared/escalation-bands.d.ts.map +1 -0
  555. package/dist/shared/format-bytes.d.ts +2 -0
  556. package/dist/shared/format-bytes.d.ts.map +1 -0
  557. package/dist/shared/format-threshold.d.ts +43 -0
  558. package/dist/shared/format-threshold.d.ts.map +1 -0
  559. package/dist/shared/harness-provider-map.d.ts +64 -0
  560. package/dist/shared/harness-provider-map.d.ts.map +1 -0
  561. package/dist/shared/harness.d.ts +55 -0
  562. package/dist/shared/harness.d.ts.map +1 -0
  563. package/dist/shared/hidden-variant-warnings.d.ts +5 -0
  564. package/dist/shared/hidden-variant-warnings.d.ts.map +1 -0
  565. package/dist/shared/historian-tool-expansions.d.ts +5 -0
  566. package/dist/shared/historian-tool-expansions.d.ts.map +1 -0
  567. package/dist/shared/historian-tool-template.d.ts +5 -0
  568. package/dist/shared/historian-tool-template.d.ts.map +1 -0
  569. package/dist/shared/historian-transient-error.d.ts +2 -0
  570. package/dist/shared/historian-transient-error.d.ts.map +1 -0
  571. package/dist/shared/host-limitations.d.ts +14 -0
  572. package/dist/shared/host-limitations.d.ts.map +1 -0
  573. package/dist/shared/index.d.ts +8 -0
  574. package/dist/shared/index.d.ts.map +1 -0
  575. package/dist/shared/internal-initiator-marker.d.ts +2 -0
  576. package/dist/shared/internal-initiator-marker.d.ts.map +1 -0
  577. package/dist/shared/jsonc-edit.d.ts +23 -0
  578. package/dist/shared/jsonc-edit.d.ts.map +1 -0
  579. package/dist/shared/jsonc-parser.d.ts +30 -0
  580. package/dist/shared/jsonc-parser.d.ts.map +1 -0
  581. package/dist/shared/keep-subagents.d.ts +7 -0
  582. package/dist/shared/keep-subagents.d.ts.map +1 -0
  583. package/dist/shared/logger.d.ts +18 -0
  584. package/dist/shared/logger.d.ts.map +1 -0
  585. package/dist/shared/model-cache-ttl.d.ts +9 -0
  586. package/dist/shared/model-cache-ttl.d.ts.map +1 -0
  587. package/dist/shared/model-resolution.d.ts +35 -0
  588. package/dist/shared/model-resolution.d.ts.map +1 -0
  589. package/dist/shared/model-suggestion-retry.d.ts +138 -0
  590. package/dist/shared/model-suggestion-retry.d.ts.map +1 -0
  591. package/dist/shared/models-dev-cache.d.ts +156 -0
  592. package/dist/shared/models-dev-cache.d.ts.map +1 -0
  593. package/dist/shared/normalize-sdk-response.d.ts +5 -0
  594. package/dist/shared/normalize-sdk-response.d.ts.map +1 -0
  595. package/dist/shared/opencode-config-dir-types.d.ts +14 -0
  596. package/dist/shared/opencode-config-dir-types.d.ts.map +1 -0
  597. package/dist/shared/opencode-config-dir.d.ts +57 -0
  598. package/dist/shared/opencode-config-dir.d.ts.map +1 -0
  599. package/dist/shared/opencode-db-path.d.ts +68 -0
  600. package/dist/shared/opencode-db-path.d.ts.map +1 -0
  601. package/dist/shared/pi-executable.d.ts +6 -0
  602. package/dist/shared/pi-executable.d.ts.map +1 -0
  603. package/dist/shared/plugin-package-version.d.ts +14 -0
  604. package/dist/shared/plugin-package-version.d.ts.map +1 -0
  605. package/dist/shared/project-directory-key.d.ts +26 -0
  606. package/dist/shared/project-directory-key.d.ts.map +1 -0
  607. package/dist/shared/prompt-context.d.ts +31 -0
  608. package/dist/shared/prompt-context.d.ts.map +1 -0
  609. package/dist/shared/prompt-surface-a1-golden.d.ts +28 -0
  610. package/dist/shared/prompt-surface-a1-golden.d.ts.map +1 -0
  611. package/dist/shared/prompt-surface-runtime.d.ts +62 -0
  612. package/dist/shared/prompt-surface-runtime.d.ts.map +1 -0
  613. package/dist/shared/prompt-surface.d.ts +53 -0
  614. package/dist/shared/prompt-surface.d.ts.map +1 -0
  615. package/dist/shared/provider-response-completion.d.ts +12 -0
  616. package/dist/shared/provider-response-completion.d.ts.map +1 -0
  617. package/dist/shared/record-type-guard.d.ts +2 -0
  618. package/dist/shared/record-type-guard.d.ts.map +1 -0
  619. package/dist/shared/redaction.d.ts +7 -0
  620. package/dist/shared/redaction.d.ts.map +1 -0
  621. package/dist/shared/resolve-fallbacks.d.ts +48 -0
  622. package/dist/shared/resolve-fallbacks.d.ts.map +1 -0
  623. package/dist/shared/rpc-client.d.ts +28 -0
  624. package/dist/shared/rpc-client.d.ts.map +1 -0
  625. package/dist/shared/rpc-notifications.d.ts +74 -0
  626. package/dist/shared/rpc-notifications.d.ts.map +1 -0
  627. package/dist/shared/rpc-server.d.ts +52 -0
  628. package/dist/shared/rpc-server.d.ts.map +1 -0
  629. package/dist/shared/rpc-types.d.ts +385 -0
  630. package/dist/shared/rpc-types.d.ts.map +1 -0
  631. package/dist/shared/rpc-utils.d.ts +162 -0
  632. package/dist/shared/rpc-utils.d.ts.map +1 -0
  633. package/dist/shared/run-token-log.d.ts +13 -0
  634. package/dist/shared/run-token-log.d.ts.map +1 -0
  635. package/dist/shared/safe-notification-target.d.ts +23 -0
  636. package/dist/shared/safe-notification-target.d.ts.map +1 -0
  637. package/dist/shared/sqlite-context-pragmas.d.ts +12 -0
  638. package/dist/shared/sqlite-context-pragmas.d.ts.map +1 -0
  639. package/dist/shared/sqlite-helpers.d.ts +25 -0
  640. package/dist/shared/sqlite-helpers.d.ts.map +1 -0
  641. package/dist/shared/sqlite-write-locker-test-support.d.ts +7 -0
  642. package/dist/shared/sqlite-write-locker-test-support.d.ts.map +1 -0
  643. package/dist/shared/sqlite.d.ts +163 -0
  644. package/dist/shared/sqlite.d.ts.map +1 -0
  645. package/dist/shared/stable-json.d.ts +21 -0
  646. package/dist/shared/stable-json.d.ts.map +1 -0
  647. package/dist/shared/status-detail-text.d.ts +4 -0
  648. package/dist/shared/status-detail-text.d.ts.map +1 -0
  649. package/dist/shared/status-summary.d.ts +54 -0
  650. package/dist/shared/status-summary.d.ts.map +1 -0
  651. package/dist/shared/status-view-check.d.ts +130 -0
  652. package/dist/shared/status-view-check.d.ts.map +1 -0
  653. package/dist/shared/status-view.d.ts +230 -0
  654. package/dist/shared/status-view.d.ts.map +1 -0
  655. package/dist/shared/storage-permissions.d.ts +29 -0
  656. package/dist/shared/storage-permissions.d.ts.map +1 -0
  657. package/dist/shared/subagent-runner.d.ts +231 -0
  658. package/dist/shared/subagent-runner.d.ts.map +1 -0
  659. package/dist/shared/summarize-child-stderr.d.ts +2 -0
  660. package/dist/shared/summarize-child-stderr.d.ts.map +1 -0
  661. package/dist/shared/system-directive.d.ts +3 -0
  662. package/dist/shared/system-directive.d.ts.map +1 -0
  663. package/dist/shared/tag-owner-id.d.ts +19 -0
  664. package/dist/shared/tag-owner-id.d.ts.map +1 -0
  665. package/dist/shared/tag-transcript.d.ts +103 -0
  666. package/dist/shared/tag-transcript.d.ts.map +1 -0
  667. package/dist/shared/tail-hygiene-status.d.ts +24 -0
  668. package/dist/shared/tail-hygiene-status.d.ts.map +1 -0
  669. package/dist/shared/test-temp-dir.d.ts +46 -0
  670. package/dist/shared/test-temp-dir.d.ts.map +1 -0
  671. package/dist/shared/transcript.d.ts +251 -0
  672. package/dist/shared/transcript.d.ts.map +1 -0
  673. package/dist/shared/user-answer.d.ts +4 -0
  674. package/dist/shared/user-answer.d.ts.map +1 -0
  675. package/dist/shared/user-facing-codes.d.ts +135 -0
  676. package/dist/shared/user-facing-codes.d.ts.map +1 -0
  677. package/dist/shared/window-geometry.d.ts +121 -0
  678. package/dist/shared/window-geometry.d.ts.map +1 -0
  679. package/dist/shared/write-transaction-timing.d.ts +11 -0
  680. package/dist/shared/write-transaction-timing.d.ts.map +1 -0
  681. package/dist/shared/xml-unescape.d.ts +9 -0
  682. package/dist/shared/xml-unescape.d.ts.map +1 -0
  683. package/dist/tools/ctx-expand/constants.d.ts +3 -0
  684. package/dist/tools/ctx-expand/constants.d.ts.map +1 -0
  685. package/dist/tools/ctx-expand/index.d.ts +2 -0
  686. package/dist/tools/ctx-expand/index.d.ts.map +1 -0
  687. package/dist/tools/ctx-expand/mode.d.ts +35 -0
  688. package/dist/tools/ctx-expand/mode.d.ts.map +1 -0
  689. package/dist/tools/ctx-expand/render.d.ts +47 -0
  690. package/dist/tools/ctx-expand/render.d.ts.map +1 -0
  691. package/dist/tools/ctx-expand/tools.d.ts +10 -0
  692. package/dist/tools/ctx-expand/tools.d.ts.map +1 -0
  693. package/dist/tools/ctx-expand/types.d.ts +11 -0
  694. package/dist/tools/ctx-expand/types.d.ts.map +1 -0
  695. package/dist/tools/ctx-memory/constants.d.ts +3 -0
  696. package/dist/tools/ctx-memory/constants.d.ts.map +1 -0
  697. package/dist/tools/ctx-memory/index.d.ts +4 -0
  698. package/dist/tools/ctx-memory/index.d.ts.map +1 -0
  699. package/dist/tools/ctx-memory/tools.d.ts +5 -0
  700. package/dist/tools/ctx-memory/tools.d.ts.map +1 -0
  701. package/dist/tools/ctx-memory/types.d.ts +38 -0
  702. package/dist/tools/ctx-memory/types.d.ts.map +1 -0
  703. package/dist/tools/ctx-memory/verification-recording.d.ts +8 -0
  704. package/dist/tools/ctx-memory/verification-recording.d.ts.map +1 -0
  705. package/dist/tools/ctx-note/constants.d.ts +2 -0
  706. package/dist/tools/ctx-note/constants.d.ts.map +1 -0
  707. package/dist/tools/ctx-note/index.d.ts +4 -0
  708. package/dist/tools/ctx-note/index.d.ts.map +1 -0
  709. package/dist/tools/ctx-note/render.d.ts +67 -0
  710. package/dist/tools/ctx-note/render.d.ts.map +1 -0
  711. package/dist/tools/ctx-note/tools.d.ts +13 -0
  712. package/dist/tools/ctx-note/tools.d.ts.map +1 -0
  713. package/dist/tools/ctx-note/types.d.ts +14 -0
  714. package/dist/tools/ctx-note/types.d.ts.map +1 -0
  715. package/dist/tools/ctx-reduce/constants.d.ts +4 -0
  716. package/dist/tools/ctx-reduce/constants.d.ts.map +1 -0
  717. package/dist/tools/ctx-reduce/index.d.ts +4 -0
  718. package/dist/tools/ctx-reduce/index.d.ts.map +1 -0
  719. package/dist/tools/ctx-reduce/tools.d.ts +19 -0
  720. package/dist/tools/ctx-reduce/tools.d.ts.map +1 -0
  721. package/dist/tools/ctx-reduce/types.d.ts +5 -0
  722. package/dist/tools/ctx-reduce/types.d.ts.map +1 -0
  723. package/dist/tools/ctx-search/constants.d.ts +4 -0
  724. package/dist/tools/ctx-search/constants.d.ts.map +1 -0
  725. package/dist/tools/ctx-search/date-range.d.ts +9 -0
  726. package/dist/tools/ctx-search/date-range.d.ts.map +1 -0
  727. package/dist/tools/ctx-search/index.d.ts +4 -0
  728. package/dist/tools/ctx-search/index.d.ts.map +1 -0
  729. package/dist/tools/ctx-search/tools.d.ts +5 -0
  730. package/dist/tools/ctx-search/tools.d.ts.map +1 -0
  731. package/dist/tools/ctx-search/types.d.ts +34 -0
  732. package/dist/tools/ctx-search/types.d.ts.map +1 -0
  733. package/dist/tools/light-descriptions.d.ts +6 -0
  734. package/dist/tools/light-descriptions.d.ts.map +1 -0
  735. package/dist/tools/parameter-descriptions.d.ts +75 -0
  736. package/dist/tools/parameter-descriptions.d.ts.map +1 -0
  737. package/dist/tools/unwrap-imitated-reduced-args.d.ts +21 -0
  738. package/dist/tools/unwrap-imitated-reduced-args.d.ts.map +1 -0
  739. package/dist/v2/fold/boundary.d.ts +61 -0
  740. package/dist/v2/fold/boundary.d.ts.map +1 -0
  741. package/dist/v2/fold/host-media.d.ts +36 -0
  742. package/dist/v2/fold/host-media.d.ts.map +1 -0
  743. package/dist/v2/fold/markers.d.ts +7 -0
  744. package/dist/v2/fold/markers.d.ts.map +1 -0
  745. package/dist/v2/fold/owner.d.ts +40 -0
  746. package/dist/v2/fold/owner.d.ts.map +1 -0
  747. package/dist/v2/fold/restore.d.ts +31 -0
  748. package/dist/v2/fold/restore.d.ts.map +1 -0
  749. package/dist/v2/fork-inheritance.d.ts +101 -0
  750. package/dist/v2/fork-inheritance.d.ts.map +1 -0
  751. package/dist/v2/hidden-child-cleanup.d.ts +11 -0
  752. package/dist/v2/hidden-child-cleanup.d.ts.map +1 -0
  753. package/dist/v2/hidden-child-native.d.ts +29 -0
  754. package/dist/v2/hidden-child-native.d.ts.map +1 -0
  755. package/dist/v2/hidden-child-record.d.ts +137 -0
  756. package/dist/v2/hidden-child-record.d.ts.map +1 -0
  757. package/dist/v2/hidden-completion.d.ts +57 -0
  758. package/dist/v2/hidden-completion.d.ts.map +1 -0
  759. package/dist/v2/hooks/channel2.d.ts +10 -0
  760. package/dist/v2/hooks/channel2.d.ts.map +1 -0
  761. package/dist/v2/hooks/commands.d.ts +29 -0
  762. package/dist/v2/hooks/commands.d.ts.map +1 -0
  763. package/dist/v2/hooks/context.d.ts +112 -0
  764. package/dist/v2/hooks/context.d.ts.map +1 -0
  765. package/dist/v2/hooks/deleted-session-tombstones.d.ts +10 -0
  766. package/dist/v2/hooks/deleted-session-tombstones.d.ts.map +1 -0
  767. package/dist/v2/hooks/generate.d.ts +10 -0
  768. package/dist/v2/hooks/generate.d.ts.map +1 -0
  769. package/dist/v2/hooks/hidden-child.d.ts +76 -0
  770. package/dist/v2/hooks/hidden-child.d.ts.map +1 -0
  771. package/dist/v2/hooks/hidden-terminal-error.d.ts +8 -0
  772. package/dist/v2/hooks/hidden-terminal-error.d.ts.map +1 -0
  773. package/dist/v2/hooks/lkg-system.d.ts +11 -0
  774. package/dist/v2/hooks/lkg-system.d.ts.map +1 -0
  775. package/dist/v2/hooks/model-limit-cache.d.ts +19 -0
  776. package/dist/v2/hooks/model-limit-cache.d.ts.map +1 -0
  777. package/dist/v2/hooks/payload.d.ts +15 -0
  778. package/dist/v2/hooks/payload.d.ts.map +1 -0
  779. package/dist/v2/hooks/refusal.d.ts +15 -0
  780. package/dist/v2/hooks/refusal.d.ts.map +1 -0
  781. package/dist/v2/hooks/restore-rows.d.ts +29 -0
  782. package/dist/v2/hooks/restore-rows.d.ts.map +1 -0
  783. package/dist/v2/hooks/rpc-live-state.d.ts +9 -0
  784. package/dist/v2/hooks/rpc-live-state.d.ts.map +1 -0
  785. package/dist/v2/hooks/session-api-gate.d.ts +4 -0
  786. package/dist/v2/hooks/session-api-gate.d.ts.map +1 -0
  787. package/dist/v2/hooks/session-project-backfill.d.ts +15 -0
  788. package/dist/v2/hooks/session-project-backfill.d.ts.map +1 -0
  789. package/dist/v2/hooks/storage-gate.d.ts +48 -0
  790. package/dist/v2/hooks/storage-gate.d.ts.map +1 -0
  791. package/dist/v2/hooks/storage-notice.d.ts +29 -0
  792. package/dist/v2/hooks/storage-notice.d.ts.map +1 -0
  793. package/dist/v2/hooks/store.d.ts +58 -0
  794. package/dist/v2/hooks/store.d.ts.map +1 -0
  795. package/dist/v2/hooks/tools.d.ts +8 -0
  796. package/dist/v2/hooks/tools.d.ts.map +1 -0
  797. package/dist/v2/hooks/types.d.ts +250 -0
  798. package/dist/v2/hooks/types.d.ts.map +1 -0
  799. package/dist/v2/hooks/usage-persist.d.ts +31 -0
  800. package/dist/v2/hooks/usage-persist.d.ts.map +1 -0
  801. package/dist/v2/hooks/usage-reading.d.ts +46 -0
  802. package/dist/v2/hooks/usage-reading.d.ts.map +1 -0
  803. package/dist/v2/server.d.ts +27 -0
  804. package/dist/v2/server.d.ts.map +1 -0
  805. package/dist/v2/server.js +76235 -0
  806. package/dist/v2/store-reader.d.ts +218 -0
  807. package/dist/v2/store-reader.d.ts.map +1 -0
  808. package/dist/web/api.d.ts +40 -0
  809. package/dist/web/api.d.ts.map +1 -0
  810. package/dist/web/context-store.d.ts +74 -0
  811. package/dist/web/context-store.d.ts.map +1 -0
  812. package/dist/web/fixtures.d.ts +53 -0
  813. package/dist/web/fixtures.d.ts.map +1 -0
  814. package/dist/web/host-opencode.d.ts +56 -0
  815. package/dist/web/host-opencode.d.ts.map +1 -0
  816. package/dist/web/host-pi.d.ts +116 -0
  817. package/dist/web/host-pi.d.ts.map +1 -0
  818. package/dist/web/main.d.ts +24 -0
  819. package/dist/web/main.d.ts.map +1 -0
  820. package/dist/web/main.js +6071 -0
  821. package/dist/web/memories.d.ts +67 -0
  822. package/dist/web/memories.d.ts.map +1 -0
  823. package/dist/web/server.d.ts +42 -0
  824. package/dist/web/server.d.ts.map +1 -0
  825. package/dist/web/types.d.ts +52 -0
  826. package/dist/web/types.d.ts.map +1 -0
  827. package/dist/web/ui/favicon.svg +4 -0
  828. package/dist/web/ui/index.html +36 -0
  829. package/dist/web/ui/panel.css +8 -0
  830. package/dist/web/ui/panel.js +373 -0
  831. package/dist/web/views.d.ts +155 -0
  832. package/dist/web/views.d.ts.map +1 -0
  833. package/dist/web/writes.d.ts +86 -0
  834. package/dist/web/writes.d.ts.map +1 -0
  835. package/dist/wrapup-orchestrator-z9sqpqjf.js +420 -0
  836. package/index.js +1 -0
  837. package/package.json +84 -4
  838. package/src/agents/historian.ts +3 -0
  839. package/src/agents/language-directive.test.ts +129 -0
  840. package/src/agents/language-directive.ts +113 -0
  841. package/src/agents/magic-context-prompt.language.test.ts +37 -0
  842. package/src/agents/magic-context-prompt.test.ts +520 -0
  843. package/src/agents/magic-context-prompt.ts +196 -0
  844. package/src/agents/memory-maintainer.test.ts +249 -0
  845. package/src/agents/memory-maintainer.ts +374 -0
  846. package/src/config/agent-disable.ts +58 -0
  847. package/src/config/compaction-accessor-guard.test.ts +81 -0
  848. package/src/config/compaction-backcompat.test.ts +52 -0
  849. package/src/config/config-paths.ts +42 -0
  850. package/src/config/index.test.ts +1252 -0
  851. package/src/config/index.ts +762 -0
  852. package/src/config/latch-permanence-guard.test.ts +218 -0
  853. package/src/config/live-run-config.test.ts +139 -0
  854. package/src/config/live-run-config.ts +79 -0
  855. package/src/config/live-schema-drift.test.ts +67 -0
  856. package/src/config/live-snapshot.test.ts +86 -0
  857. package/src/config/live-snapshot.ts +187 -0
  858. package/src/config/migrate-experimental.ts +92 -0
  859. package/src/config/misplaced-agent-model.test.ts +55 -0
  860. package/src/config/profiles.ts +106 -0
  861. package/src/config/project-config-trust-boundary.test.ts +185 -0
  862. package/src/config/project-security.hostile-matrix.test.ts +281 -0
  863. package/src/config/project-security.test.ts +329 -0
  864. package/src/config/project-security.ts +940 -0
  865. package/src/config/protected-tokens.test.ts +229 -0
  866. package/src/config/prune-config-leaf.test.ts +78 -0
  867. package/src/config/prune-config-leaf.ts +67 -0
  868. package/src/config/raw-loader.test.ts +389 -0
  869. package/src/config/raw-loader.ts +435 -0
  870. package/src/config/removed-agent-config.ts +45 -0
  871. package/src/config/removed-agent-source-fence.test.ts +53 -0
  872. package/src/config/removed-config-keys.test.ts +106 -0
  873. package/src/config/schema/agent-overrides.ts +45 -0
  874. package/src/config/schema/magic-context.test.ts +434 -0
  875. package/src/config/schema/magic-context.ts +1019 -0
  876. package/src/config/variable.test.ts +324 -0
  877. package/src/config/variable.ts +192 -0
  878. package/src/shared/__fixtures__/window-overlay.v1.json +337 -0
  879. package/src/shared/announcement.test.ts +198 -0
  880. package/src/shared/announcement.ts +145 -0
  881. package/src/shared/assistant-message-extractor.test.ts +47 -0
  882. package/src/shared/assistant-message-extractor.ts +156 -0
  883. package/src/shared/auto-update-provenance.ts +42 -0
  884. package/src/shared/bounded-session-map.test.ts +97 -0
  885. package/src/shared/bounded-session-map.ts +84 -0
  886. package/src/shared/builtin-commands.ts +46 -0
  887. package/src/shared/cache-ttl-display.test.ts +84 -0
  888. package/src/shared/cache-ttl-display.ts +58 -0
  889. package/src/shared/cache-ttl-seed.ts +23 -0
  890. package/src/shared/child-session-teardown.test.ts +241 -0
  891. package/src/shared/child-session-teardown.ts +66 -0
  892. package/src/shared/commit-detection.test.ts +63 -0
  893. package/src/shared/commit-detection.ts +53 -0
  894. package/src/shared/config-diagnostics.test.ts +29 -0
  895. package/src/shared/config-diagnostics.ts +64 -0
  896. package/src/shared/conflict-detector.test.ts +780 -0
  897. package/src/shared/conflict-detector.ts +596 -0
  898. package/src/shared/conflict-fixer.test.ts +608 -0
  899. package/src/shared/conflict-fixer.ts +295 -0
  900. package/src/shared/context-limit-provenance.ts +6 -0
  901. package/src/shared/data-path.test.ts +352 -0
  902. package/src/shared/data-path.ts +310 -0
  903. package/src/shared/error-message.test.ts +94 -0
  904. package/src/shared/error-message.ts +115 -0
  905. package/src/shared/escalation-bands.test.ts +23 -0
  906. package/src/shared/escalation-bands.ts +18 -0
  907. package/src/shared/format-bytes.ts +5 -0
  908. package/src/shared/format-threshold.ts +54 -0
  909. package/src/shared/harness-provider-map.test.ts +176 -0
  910. package/src/shared/harness-provider-map.ts +130 -0
  911. package/src/shared/harness.ts +76 -0
  912. package/src/shared/hidden-variant-warnings.ts +21 -0
  913. package/src/shared/historian-tool-defaults.json +13 -0
  914. package/src/shared/historian-tool-expansions.ts +18 -0
  915. package/src/shared/historian-tool-template.ts +248 -0
  916. package/src/shared/historian-transient-error.test.ts +36 -0
  917. package/src/shared/historian-transient-error.ts +22 -0
  918. package/src/shared/host-limitations.ts +43 -0
  919. package/src/shared/index.ts +7 -0
  920. package/src/shared/internal-initiator-marker.ts +1 -0
  921. package/src/shared/jsonc-edit.ts +387 -0
  922. package/src/shared/jsonc-parser.test.ts +46 -0
  923. package/src/shared/jsonc-parser.ts +283 -0
  924. package/src/shared/keep-subagents.test.ts +39 -0
  925. package/src/shared/keep-subagents.ts +28 -0
  926. package/src/shared/logger.test.ts +292 -0
  927. package/src/shared/logger.ts +248 -0
  928. package/src/shared/model-cache-ttl.test.ts +40 -0
  929. package/src/shared/model-cache-ttl.ts +58 -0
  930. package/src/shared/model-resolution.test.ts +132 -0
  931. package/src/shared/model-resolution.ts +158 -0
  932. package/src/shared/model-suggestion-retry.test.ts +698 -0
  933. package/src/shared/model-suggestion-retry.ts +838 -0
  934. package/src/shared/models-dev-cache.test.ts +720 -0
  935. package/src/shared/models-dev-cache.ts +661 -0
  936. package/src/shared/normalize-sdk-response.ts +40 -0
  937. package/src/shared/opencode-config-dir-types.ts +15 -0
  938. package/src/shared/opencode-config-dir.ts +111 -0
  939. package/src/shared/opencode-db-path.test.ts +389 -0
  940. package/src/shared/opencode-db-path.ts +396 -0
  941. package/src/shared/opencode-host-generation.test.ts +29 -0
  942. package/src/shared/pi-executable.ts +20 -0
  943. package/src/shared/plugin-package-version.ts +52 -0
  944. package/src/shared/project-directory-key.test.ts +111 -0
  945. package/src/shared/project-directory-key.ts +54 -0
  946. package/src/shared/prompt-context.ts +135 -0
  947. package/src/shared/prompt-surface-a1-golden.md +407 -0
  948. package/src/shared/prompt-surface-a1-golden.ts +41 -0
  949. package/src/shared/prompt-surface-runtime.test.ts +190 -0
  950. package/src/shared/prompt-surface-runtime.ts +263 -0
  951. package/src/shared/prompt-surface.test.ts +195 -0
  952. package/src/shared/prompt-surface.ts +162 -0
  953. package/src/shared/provider-response-completion.ts +23 -0
  954. package/src/shared/record-type-guard.ts +3 -0
  955. package/src/shared/redaction.test.ts +134 -0
  956. package/src/shared/redaction.ts +298 -0
  957. package/src/shared/resolve-fallbacks.test.ts +114 -0
  958. package/src/shared/resolve-fallbacks.ts +95 -0
  959. package/src/shared/rpc-async-probes.test.ts +320 -0
  960. package/src/shared/rpc-client.test.ts +576 -0
  961. package/src/shared/rpc-client.ts +218 -0
  962. package/src/shared/rpc-notifications.test.ts +151 -0
  963. package/src/shared/rpc-notifications.ts +222 -0
  964. package/src/shared/rpc-server.ts +431 -0
  965. package/src/shared/rpc-types.ts +386 -0
  966. package/src/shared/rpc-utils.test.ts +822 -0
  967. package/src/shared/rpc-utils.ts +1146 -0
  968. package/src/shared/run-token-log.test.ts +65 -0
  969. package/src/shared/run-token-log.ts +39 -0
  970. package/src/shared/safe-notification-target.test.ts +97 -0
  971. package/src/shared/safe-notification-target.ts +102 -0
  972. package/src/shared/session-messages-bounded.test.ts +112 -0
  973. package/src/shared/sqlite-acquisition-fence.test.ts +133 -0
  974. package/src/shared/sqlite-acquisition-routing.test.ts +145 -0
  975. package/src/shared/sqlite-bind-style.test.ts +80 -0
  976. package/src/shared/sqlite-context-pragmas.ts +24 -0
  977. package/src/shared/sqlite-helpers.ts +44 -0
  978. package/src/shared/sqlite-import-fence.test.ts +19 -0
  979. package/src/shared/sqlite-pass-scope.test.ts +154 -0
  980. package/src/shared/sqlite-transaction-mode-guard.test.ts +234 -0
  981. package/src/shared/sqlite-write-locker-test-support.ts +63 -0
  982. package/src/shared/sqlite.test.ts +58 -0
  983. package/src/shared/sqlite.ts +988 -0
  984. package/src/shared/stable-json.test.ts +87 -0
  985. package/src/shared/stable-json.ts +37 -0
  986. package/src/shared/status-detail-text.test.ts +194 -0
  987. package/src/shared/status-detail-text.ts +7 -0
  988. package/src/shared/status-summary.ts +189 -0
  989. package/src/shared/status-view-check.test.ts +252 -0
  990. package/src/shared/status-view-check.ts +519 -0
  991. package/src/shared/status-view.test.ts +395 -0
  992. package/src/shared/status-view.ts +794 -0
  993. package/src/shared/storage-busy.test.ts +73 -0
  994. package/src/shared/storage-permissions.test.ts +190 -0
  995. package/src/shared/storage-permissions.ts +212 -0
  996. package/src/shared/subagent-runner.ts +240 -0
  997. package/src/shared/summarize-child-stderr.test.ts +55 -0
  998. package/src/shared/summarize-child-stderr.ts +33 -0
  999. package/src/shared/system-directive.ts +9 -0
  1000. package/src/shared/tag-owner-id.test.ts +33 -0
  1001. package/src/shared/tag-owner-id.ts +29 -0
  1002. package/src/shared/tag-transcript.test.ts +554 -0
  1003. package/src/shared/tag-transcript.ts +1400 -0
  1004. package/src/shared/tail-hygiene-status.ts +73 -0
  1005. package/src/shared/test-temp-dir.test.ts +84 -0
  1006. package/src/shared/test-temp-dir.ts +192 -0
  1007. package/src/shared/transcript.ts +274 -0
  1008. package/src/shared/user-answer.test.ts +12 -0
  1009. package/src/shared/user-answer.ts +17 -0
  1010. package/src/shared/user-facing-codes.test.ts +82 -0
  1011. package/src/shared/user-facing-codes.ts +180 -0
  1012. package/src/shared/window-geometry.test.ts +405 -0
  1013. package/src/shared/window-geometry.ts +726 -0
  1014. package/src/shared/windows-hidden-spawns.test.ts +133 -0
  1015. package/src/shared/write-transaction-attribution.test.ts +214 -0
  1016. package/src/shared/write-transaction-timing.ts +26 -0
  1017. package/src/shared/xml-unescape.ts +19 -0
  1018. package/README.md +0 -3
@@ -0,0 +1,940 @@
1
+ import {
2
+ DEFAULT_EXECUTE_THRESHOLD_PERCENTAGE,
3
+ PER_HARNESS_MIGRATION_INVENTORY,
4
+ PER_HARNESS_MODEL_KEYS,
5
+ } from "./schema/magic-context";
6
+
7
+ /**
8
+ * Security hardening for PROJECT-level (repo-supplied, untrusted) config.
9
+ *
10
+ * A project config lives inside a repository the user cloned. Opening a repo
11
+ * must never let that repo's config escalate privilege or exfiltrate secrets.
12
+ * These helpers run on the raw project config BEFORE/AFTER it is merged over the
13
+ * trusted user config, mutating the relevant object in place and returning
14
+ * human-readable warnings.
15
+ *
16
+ * Shared by OpenCode and the Pi-compatible Pi/OMP extension so the trust
17
+ * boundary is identical across every supported harness.
18
+ */
19
+
20
+ /** Hidden agents that run with elevated/autonomous capability. */
21
+ const HIDDEN_AGENT_KEYS = ["historian"] as const;
22
+ const HARNESS_KEYS = PER_HARNESS_MODEL_KEYS;
23
+ /** Every historian model-resolution field, including per-harness qualifiers.
24
+ * Variant and thinking_level merge onto the user's historian model at resolve
25
+ * time, so leaving them would let a cloned repo force extra spend. */
26
+ const HISTORIAN_USER_ONLY_FIELDS = PER_HARNESS_MIGRATION_INVENTORY.historian.migrated_execution;
27
+ const PROMPT_SURFACE_USER_ONLY_FIELDS = ["guidance_override_path", "tool_descriptions"] as const;
28
+
29
+ /**
30
+ * Fields on a hidden-agent block that constitute a privilege-escalation /
31
+ * code-execution vector when set from an untrusted repo:
32
+ *
33
+ * - `prompt` — reprograms the agent's instructions.
34
+ * - `permission` — broadens the agent's per-tool permissions.
35
+ * - `tools` — enable/disable map; could flip a denied tool (e.g. `bash`)
36
+ * on for an agent whose allow-list intentionally excludes it.
37
+ * Historian model selection stays USER-tier only, and compaction thresholds are
38
+ * project raise-only, so a cloned repo cannot force earlier compaction or extra
39
+ * historian spend on the user's dime.
40
+ */
41
+ const AGENT_ESCALATION_FIELDS = ["prompt", "permission", "tools"] as const;
42
+ const PERCENTAGE_THRESHOLD_REASON =
43
+ "security: a repository may only raise compaction thresholds above the user's effective value; it cannot force earlier historian work or cloned-repo cost escalation.";
44
+ const TOKEN_THRESHOLD_REASON =
45
+ "security: a repository may only raise execute_threshold_tokens above the user's trusted token threshold; it cannot force earlier historian work or cloned-repo cost escalation.";
46
+ const TOKEN_THRESHOLD_INTRODUCTION_REASON =
47
+ "security: a repository cannot introduce a new execute_threshold_tokens override when the user has no trusted token threshold for that key; that could force earlier historian work or cloned-repo cost escalation.";
48
+ const PROTECTED_TOKENS_REASON =
49
+ "security: a repository may only raise protected_tokens above the resolved user-or-derived floor; it cannot lower protection.";
50
+
51
+ interface PercentageThresholdConfig {
52
+ defaultValue: number;
53
+ overrides: Map<string, number>;
54
+ }
55
+
56
+ interface TokenThresholdConfig {
57
+ defaultValue: number | undefined;
58
+ overrides: Map<string, number>;
59
+ }
60
+
61
+ function isPlainObject(value: unknown): value is Record<string, unknown> {
62
+ return typeof value === "object" && value !== null && !Array.isArray(value);
63
+ }
64
+
65
+ export function resolveProtectedTokensScalar(value: unknown): number | undefined {
66
+ if (
67
+ typeof value === "number" &&
68
+ Number.isInteger(value) &&
69
+ value >= 4000 &&
70
+ value <= 1_000_000
71
+ ) {
72
+ return value;
73
+ }
74
+ return undefined;
75
+ }
76
+
77
+ export interface ProtectedTokensTierOverrides {
78
+ readonly user?: number;
79
+ readonly project?: number;
80
+ }
81
+
82
+ const PROTECTED_TOKENS_TIER_OVERRIDES = Symbol.for(
83
+ "@retaw106/mmc-oc/protected-tokens-tier-overrides",
84
+ );
85
+
86
+ type ConfigWithProtectedTokensTiers = {
87
+ [PROTECTED_TOKENS_TIER_OVERRIDES]?: ProtectedTokensTierOverrides;
88
+ };
89
+
90
+ /**
91
+ * Retain trusted user and project values outside the public config schema until
92
+ * live context geometry is available. The symbol is non-enumerable so runtime
93
+ * provenance cannot leak into saved JSON or generated schema surfaces.
94
+ */
95
+ export function attachProtectedTokensTierOverrides<T extends object>(
96
+ config: T,
97
+ args: { trustedUser: unknown; project: unknown },
98
+ ): T {
99
+ const user = resolveProtectedTokensScalar(args.trustedUser);
100
+ const rawProject = resolveProtectedTokensScalar(args.project);
101
+ const project =
102
+ rawProject !== undefined && (user === undefined || rawProject >= user)
103
+ ? rawProject
104
+ : undefined;
105
+ if (user === undefined && project === undefined) return config;
106
+
107
+ Object.defineProperty(config, PROTECTED_TOKENS_TIER_OVERRIDES, {
108
+ value: {
109
+ ...(user !== undefined ? { user } : {}),
110
+ ...(project !== undefined ? { project } : {}),
111
+ },
112
+ configurable: false,
113
+ enumerable: false,
114
+ writable: false,
115
+ });
116
+ return config;
117
+ }
118
+
119
+ export function getProtectedTokensTierOverrides(
120
+ config: object,
121
+ ): ProtectedTokensTierOverrides | undefined {
122
+ return (config as ConfigWithProtectedTokensTiers)[PROTECTED_TOKENS_TIER_OVERRIDES];
123
+ }
124
+
125
+ function stripListedFields(
126
+ target: Record<string, unknown>,
127
+ fields: readonly string[],
128
+ path: string,
129
+ removed: string[],
130
+ ): void {
131
+ for (const field of fields) {
132
+ if (field in target) {
133
+ delete target[field];
134
+ removed.push(path.length > 0 ? `${path}.${field}` : field);
135
+ }
136
+ }
137
+ }
138
+
139
+ /** Strip prompt, permission, tools, and system_prompt from one agent, harness,
140
+ * task, or model-entry object, including each fallback_models entry. A cloned
141
+ * repo must not reprogram hidden agents through any of those nestings. */
142
+ function stripEscalationAtExecutableSite(
143
+ block: Record<string, unknown>,
144
+ path: string,
145
+ removed: string[],
146
+ ): void {
147
+ stripListedFields(block, AGENT_ESCALATION_FIELDS, path, removed);
148
+ if (isPlainObject(block.model)) {
149
+ stripListedFields(block.model, AGENT_ESCALATION_FIELDS, `${path}.model`, removed);
150
+ }
151
+ if (Array.isArray(block.fallback_models)) {
152
+ for (let index = 0; index < block.fallback_models.length; index++) {
153
+ const entry = block.fallback_models[index];
154
+ if (isPlainObject(entry)) {
155
+ stripListedFields(
156
+ entry,
157
+ AGENT_ESCALATION_FIELDS,
158
+ `${path}.fallback_models.${index}`,
159
+ removed,
160
+ );
161
+ }
162
+ }
163
+ }
164
+ }
165
+
166
+ // Must match the schema's execute_threshold_percentage range (20-90). A narrower
167
+ // range here let a valid project value of 81-90 skip the raise-only clamp and
168
+ // reach the merged config as-is, lowering a higher user threshold.
169
+ function isValidPercentageThreshold(value: unknown): value is number {
170
+ return typeof value === "number" && Number.isFinite(value) && value >= 20 && value <= 90;
171
+ }
172
+
173
+ function isValidTokenThreshold(value: unknown): value is number {
174
+ return (
175
+ typeof value === "number" && Number.isFinite(value) && value >= 5_000 && value <= 2_000_000
176
+ );
177
+ }
178
+
179
+ function normalizeTrustedPercentageThresholds(value: unknown): PercentageThresholdConfig {
180
+ if (typeof value === "number" && Number.isFinite(value)) {
181
+ return { defaultValue: value, overrides: new Map() };
182
+ }
183
+
184
+ if (
185
+ isPlainObject(value) &&
186
+ typeof value.default === "number" &&
187
+ Number.isFinite(value.default)
188
+ ) {
189
+ const overrides = new Map<string, number>();
190
+ for (const [key, child] of Object.entries(value)) {
191
+ if (key === "default") continue;
192
+ if (typeof child === "number" && Number.isFinite(child)) {
193
+ overrides.set(key, child);
194
+ }
195
+ }
196
+ return { defaultValue: value.default, overrides };
197
+ }
198
+
199
+ return { defaultValue: DEFAULT_EXECUTE_THRESHOLD_PERCENTAGE, overrides: new Map() };
200
+ }
201
+
202
+ function normalizeTrustedTokenThresholds(value: unknown): TokenThresholdConfig {
203
+ if (!isPlainObject(value)) {
204
+ return { defaultValue: undefined, overrides: new Map() };
205
+ }
206
+
207
+ const overrides = new Map<string, number>();
208
+ for (const [key, child] of Object.entries(value)) {
209
+ if (key === "default") continue;
210
+ if (typeof child === "number" && Number.isFinite(child)) {
211
+ overrides.set(key, child);
212
+ }
213
+ }
214
+
215
+ return {
216
+ defaultValue:
217
+ typeof value.default === "number" && Number.isFinite(value.default)
218
+ ? value.default
219
+ : undefined,
220
+ overrides,
221
+ };
222
+ }
223
+
224
+ function clonePercentageThresholds(value: PercentageThresholdConfig): PercentageThresholdConfig {
225
+ return {
226
+ defaultValue: value.defaultValue,
227
+ overrides: new Map(value.overrides),
228
+ };
229
+ }
230
+
231
+ function cloneTokenThresholds(value: TokenThresholdConfig): TokenThresholdConfig {
232
+ return {
233
+ defaultValue: value.defaultValue,
234
+ overrides: new Map(value.overrides),
235
+ };
236
+ }
237
+
238
+ function percentageThresholdsEqual(
239
+ left: PercentageThresholdConfig,
240
+ right: PercentageThresholdConfig,
241
+ ): boolean {
242
+ if (left.defaultValue !== right.defaultValue) return false;
243
+ if (left.overrides.size !== right.overrides.size) return false;
244
+ for (const [key, value] of left.overrides) {
245
+ if (right.overrides.get(key) !== value) return false;
246
+ }
247
+ return true;
248
+ }
249
+
250
+ function setMergedPercentageThreshold(
251
+ mergedRaw: Record<string, unknown>,
252
+ value: PercentageThresholdConfig,
253
+ ): void {
254
+ if (value.overrides.size === 0) {
255
+ mergedRaw.execute_threshold_percentage = value.defaultValue;
256
+ return;
257
+ }
258
+
259
+ const serialized: Record<string, number> = { default: value.defaultValue };
260
+ for (const [key, threshold] of value.overrides) {
261
+ serialized[key] = threshold;
262
+ }
263
+ mergedRaw.execute_threshold_percentage = serialized;
264
+ }
265
+
266
+ function setMergedTokenThreshold(
267
+ mergedRaw: Record<string, unknown>,
268
+ value: TokenThresholdConfig,
269
+ ): void {
270
+ if (value.defaultValue === undefined && value.overrides.size === 0) {
271
+ delete mergedRaw.execute_threshold_tokens;
272
+ return;
273
+ }
274
+
275
+ const serialized: Record<string, number> = {};
276
+ if (value.defaultValue !== undefined) {
277
+ serialized.default = value.defaultValue;
278
+ }
279
+ for (const [key, threshold] of value.overrides) {
280
+ serialized[key] = threshold;
281
+ }
282
+ mergedRaw.execute_threshold_tokens = serialized;
283
+ }
284
+
285
+ function makeProjectThresholdWarning(field: string, reason: string): string {
286
+ return `Ignoring ${field} from project config (${reason})`;
287
+ }
288
+
289
+ /**
290
+ * Strip unsafe fields from a raw PROJECT config IN PLACE, before it is merged
291
+ * over the user config. Returns warnings describing what was ignored.
292
+ *
293
+ * Closes:
294
+ * - `profiles` — profile definitions choose hidden-agent models and must stay
295
+ * in trusted user config; a repository may select a named profile but cannot
296
+ * supply its contents.
297
+ * - `auto_update` — a repo must not suppress plugin self-updates (which can
298
+ * carry security fixes).
299
+ * - `fail_closed_blocking` — a repo must not un-block (or force-block) the
300
+ * loud inoperability gate; only the user may restore silent degrade.
301
+ * - `debug_rpc` — a repo must not enable process heap capture or memory diagnostics.
302
+ * - `allow_home_project` — only the user may opt a home-directory session
303
+ * into a durable project identity.
304
+ * - `output_reserve` / `models.window_overlay_path` — only the user may change
305
+ * process-wide window geometry inputs.
306
+ * - `language`: a repo must not inject prompt text through a user preference.
307
+ * - `maintenance` — budgets, cooldowns, and anomaly thresholds of the
308
+ * automatic memory-maintenance task are user-level only; a cloned repo
309
+ * must not re-budget or re-arm an autonomous spend-capable task.
310
+ * - `sqlite` — `sqlite.cache_size_mb` / `mmap_size_mb` become PRAGMAs on the
311
+ * process-global shared DB handle (one connection across every project in the
312
+ * process). A cloned repo could set a huge value to exhaust host memory /
313
+ * address space — a resource-exhaustion vector with no legitimate per-repo
314
+ * use. Honor user-level config only.
315
+ * - `storage.enforce_private_permissions` — changing a shared store from
316
+ * owner-private to group-readable changes every session and memory's local
317
+ * confidentiality. Only the machine operator's user config may opt into an
318
+ * externally managed trusted-group deployment.
319
+ * - historian model-resolution fields (model, fallback_models, variant,
320
+ * thinking_level), including both per-harness blocks — historian model
321
+ * spend is user-level only. Qualifiers merge onto the user's historian
322
+ * model at resolve time, so a cloned repo cannot force extra thinking or
323
+ * variant cost.
324
+ * - `pi.subagent_extensions` — a cloned repo must not choose which extensions
325
+ * the user's Pi child processes load.
326
+ * - `prompt_surface.guidance_override_path` / `tool_descriptions` — a repository
327
+ * may select a reviewed preset, but must not inject arbitrary guidance or tool
328
+ * description text into the user's provider-visible prompt.
329
+ * - hidden-agent `prompt`/`permission`/`tools`/`system_prompt` at the agent
330
+ * root, each harness block, each task block, and inside model/fallback
331
+ * entry objects — a repo must not reprogram or re-permission hidden agents.
332
+ */
333
+ export function stripUnsafeProjectConfigFields(projectRaw: Record<string, unknown>): string[] {
334
+ const warnings: string[] = [];
335
+
336
+ if ("profiles" in projectRaw) {
337
+ delete projectRaw.profiles;
338
+ warnings.push(
339
+ "Ignoring profiles from project config (security: profile definitions are user-level only; a repository may select a named user profile with profile).",
340
+ );
341
+ }
342
+
343
+ if ("auto_update" in projectRaw) {
344
+ delete projectRaw.auto_update;
345
+ warnings.push(
346
+ "Ignoring auto_update from project config (security: this setting only honors user-level config).",
347
+ );
348
+ }
349
+
350
+ if ("fail_closed_blocking" in projectRaw) {
351
+ delete projectRaw.fail_closed_blocking;
352
+ warnings.push(
353
+ "Ignoring fail_closed_blocking from project config (security: only user-level config may disable or force the loud inoperability gate).",
354
+ );
355
+ }
356
+
357
+ if ("debug_rpc" in projectRaw) {
358
+ delete projectRaw.debug_rpc;
359
+ warnings.push(
360
+ "Ignoring debug_rpc from project config (security: only user-level config may enable process heap diagnostics).",
361
+ );
362
+ }
363
+
364
+ if ("allow_home_project" in projectRaw) {
365
+ delete projectRaw.allow_home_project;
366
+ warnings.push(
367
+ "Ignoring allow_home_project from project config (security: only user-level config may opt the user's home directory into Magic Context).",
368
+ );
369
+ }
370
+
371
+ // compaction.enabled is USER-tier only: a cloned repo must never silently
372
+ // disable the user's context management (it changes how the window is
373
+ // owned and interacts with native compaction state). Field-scoped, not
374
+ // block-scoped: a sibling key in a project `compaction` block survives the
375
+ // strip, so a future project-tier compaction knob can still land.
376
+ const compaction = projectRaw.compaction;
377
+ if (isPlainObject(compaction) && "enabled" in compaction) {
378
+ delete compaction.enabled;
379
+ warnings.push(
380
+ "Ignoring compaction.enabled from project config (security: only user-level config may disable Magic Context's context-window management; a cloned repo cannot change how the user's window is owned).",
381
+ );
382
+ }
383
+
384
+ // maintenance.* is USER-tier only (memory-maintenance plan decision 27).
385
+ // The group budgets an autonomous, spend-capable task. Unlike
386
+ // compaction.enabled (field-scoped so a future project-tier compaction
387
+ // knob can land), EVERY key in this group is user-only, so the whole
388
+ // block is stripped: a cloned repo must not raise run budgets, relax
389
+ // cooldowns/backoff, or loosen the anomaly guard to weaponize the
390
+ // maintenance task (cost escalation or a mass-archive cover).
391
+ if ("maintenance" in projectRaw) {
392
+ delete projectRaw.maintenance;
393
+ warnings.push(
394
+ "Ignoring maintenance from project config (security: automatic memory maintenance budgets, cooldowns, and anomaly thresholds are user-level only; a cloned repo cannot re-budget or re-arm the maintenance task).",
395
+ );
396
+ }
397
+
398
+ if ("output_reserve" in projectRaw) {
399
+ delete projectRaw.output_reserve;
400
+ warnings.push(
401
+ "Ignoring output_reserve from project config (security: output-token reservation only honors user-level config).",
402
+ );
403
+ }
404
+
405
+ const models = projectRaw.models;
406
+ if (isPlainObject(models) && "window_overlay_path" in models) {
407
+ delete models.window_overlay_path;
408
+ warnings.push(
409
+ "Ignoring models.window_overlay_path from project config (security: only user-level config may select model geometry metadata).",
410
+ );
411
+ }
412
+
413
+ if ("language" in projectRaw) {
414
+ delete projectRaw.language;
415
+ warnings.push(
416
+ "Ignoring language from project config (security: output language is a user-level setting).",
417
+ );
418
+ }
419
+
420
+ if ("sqlite" in projectRaw) {
421
+ delete projectRaw.sqlite;
422
+ warnings.push(
423
+ "Ignoring sqlite.* from project config (security: SQLite cache/mmap PRAGMAs apply to the " +
424
+ "process-global shared database handle; only user-level config may set them).",
425
+ );
426
+ }
427
+
428
+ // storage.enforce_private_permissions is USER-tier only because disabling it
429
+ // changes the confidentiality of the process-global shared store. Field-scoped
430
+ // stripping preserves future project-tier storage settings in the same block.
431
+ const storage = projectRaw.storage;
432
+ if (isPlainObject(storage) && "enforce_private_permissions" in storage) {
433
+ delete storage.enforce_private_permissions;
434
+ warnings.push(
435
+ "Ignoring storage.enforce_private_permissions from project config (security: only user-level config may opt into externally managed shared storage permissions).",
436
+ );
437
+ }
438
+
439
+ // Repositories may select preset routing, but project settings cannot add
440
+ // guidance or tool-description text to the provider-visible prompt; those
441
+ // user-only fields are removed before project settings are merged.
442
+ const promptSurface = projectRaw.prompt_surface;
443
+ if (isPlainObject(promptSurface)) {
444
+ const removed: string[] = [];
445
+ for (const field of PROMPT_SURFACE_USER_ONLY_FIELDS) {
446
+ if (field in promptSurface) {
447
+ delete promptSurface[field];
448
+ removed.push(field);
449
+ }
450
+ }
451
+ if (removed.length > 0) {
452
+ warnings.push(
453
+ `Ignoring prompt_surface.${removed.join("/")} from project config (security: repositories may select prompt presets but only user config may provide guidance or tool-description text).`,
454
+ );
455
+ }
456
+ }
457
+
458
+ const pi = projectRaw.pi;
459
+ if (isPlainObject(pi) && "subagent_extensions" in pi) {
460
+ delete pi.subagent_extensions;
461
+ warnings.push(
462
+ "Ignoring pi.subagent_extensions from project config (security: only user-level config may choose extensions loaded by Pi subagent children).",
463
+ );
464
+ }
465
+
466
+ for (const agentKey of HIDDEN_AGENT_KEYS) {
467
+ const block = projectRaw[agentKey];
468
+ if (!isPlainObject(block)) continue;
469
+ const removed: string[] = [];
470
+ stripEscalationAtExecutableSite(block, agentKey, removed);
471
+ for (const harness of HARNESS_KEYS) {
472
+ const harnessBlock = block[harness];
473
+ if (!isPlainObject(harnessBlock)) continue;
474
+ stripEscalationAtExecutableSite(harnessBlock, `${agentKey}.${harness}`, removed);
475
+ const tasks = harnessBlock.tasks;
476
+ if (isPlainObject(tasks)) {
477
+ for (const [taskName, taskBlock] of Object.entries(tasks)) {
478
+ if (isPlainObject(taskBlock)) {
479
+ stripEscalationAtExecutableSite(
480
+ taskBlock,
481
+ `${agentKey}.${harness}.tasks.${taskName}`,
482
+ removed,
483
+ );
484
+ }
485
+ }
486
+ }
487
+ }
488
+ const schedulingTasks = block.tasks;
489
+ if (isPlainObject(schedulingTasks)) {
490
+ for (const [taskName, taskBlock] of Object.entries(schedulingTasks)) {
491
+ if (isPlainObject(taskBlock)) {
492
+ stripListedFields(
493
+ taskBlock,
494
+ AGENT_ESCALATION_FIELDS,
495
+ `${agentKey}.tasks.${taskName}`,
496
+ removed,
497
+ );
498
+ }
499
+ }
500
+ }
501
+ if (removed.length > 0) {
502
+ warnings.push(
503
+ `Ignoring ${removed.join(", ")} from project config ` +
504
+ "(security: a repository cannot reprogram or re-permission hidden agents).",
505
+ );
506
+ }
507
+ }
508
+
509
+ const historian = projectRaw.historian;
510
+ if (isPlainObject(historian)) {
511
+ const removed: string[] = [];
512
+ for (const field of HISTORIAN_USER_ONLY_FIELDS) {
513
+ if (field in historian) {
514
+ delete historian[field];
515
+ removed.push(field);
516
+ }
517
+ }
518
+ for (const harness of HARNESS_KEYS) {
519
+ const harnessBlock = historian[harness];
520
+ if (!isPlainObject(harnessBlock)) continue;
521
+ for (const field of HISTORIAN_USER_ONLY_FIELDS) {
522
+ if (field in harnessBlock) {
523
+ delete harnessBlock[field];
524
+ removed.push(`${harness}.${field}`);
525
+ }
526
+ }
527
+ }
528
+ if (removed.length > 0) {
529
+ warnings.push(
530
+ `Ignoring ${removed.map((path) => `historian.${path}`).join(", ")} from project config ` +
531
+ "(security: historian model selection is user-level only; a repository cannot force extra compaction cost).",
532
+ );
533
+ }
534
+ }
535
+
536
+ return warnings;
537
+ }
538
+
539
+ /**
540
+ * Clamp project-tier compaction thresholds after merge so a cloned repository
541
+ * may only DELAY compaction relative to the trusted user/default settings. A
542
+ * repo may never lower thresholds in a way that forces earlier historian work
543
+ * or cloned-repo cost escalation on the user's account.
544
+ */
545
+ export function constrainProjectThresholdOverrides(args: {
546
+ mergedRaw: Record<string, unknown>;
547
+ projectRaw: Record<string, unknown>;
548
+ trustedBaseConfig: {
549
+ execute_threshold_percentage?: unknown;
550
+ execute_threshold_tokens?: unknown;
551
+ protected_tokens?: unknown;
552
+ };
553
+ }): string[] {
554
+ const warnings: string[] = [];
555
+ const basePercentage = normalizeTrustedPercentageThresholds(
556
+ args.trustedBaseConfig.execute_threshold_percentage,
557
+ );
558
+ const baseTokens = normalizeTrustedTokenThresholds(
559
+ args.trustedBaseConfig.execute_threshold_tokens,
560
+ );
561
+
562
+ if ("execute_threshold_percentage" in args.projectRaw) {
563
+ const projectValue = args.projectRaw.execute_threshold_percentage;
564
+
565
+ if (isValidPercentageThreshold(projectValue)) {
566
+ const constrained = clonePercentageThresholds(basePercentage);
567
+ constrained.defaultValue = Math.max(basePercentage.defaultValue, projectValue);
568
+ for (const [modelKey, threshold] of basePercentage.overrides) {
569
+ const raisedThreshold = Math.max(threshold, projectValue);
570
+ if (raisedThreshold === constrained.defaultValue) {
571
+ constrained.overrides.delete(modelKey);
572
+ } else {
573
+ constrained.overrides.set(modelKey, raisedThreshold);
574
+ }
575
+ }
576
+ setMergedPercentageThreshold(args.mergedRaw, constrained);
577
+ if (percentageThresholdsEqual(constrained, basePercentage)) {
578
+ warnings.push(
579
+ makeProjectThresholdWarning(
580
+ "execute_threshold_percentage",
581
+ PERCENTAGE_THRESHOLD_REASON,
582
+ ),
583
+ );
584
+ }
585
+ } else if (isPlainObject(projectValue)) {
586
+ const constrained = clonePercentageThresholds(basePercentage);
587
+ let touchedValidEntry = false;
588
+
589
+ if (isValidPercentageThreshold(projectValue.default)) {
590
+ touchedValidEntry = true;
591
+ if (projectValue.default > basePercentage.defaultValue) {
592
+ constrained.defaultValue = projectValue.default;
593
+ } else {
594
+ warnings.push(
595
+ makeProjectThresholdWarning(
596
+ "execute_threshold_percentage.default",
597
+ PERCENTAGE_THRESHOLD_REASON,
598
+ ),
599
+ );
600
+ }
601
+ }
602
+
603
+ for (const [modelKey, rawValue] of Object.entries(projectValue)) {
604
+ if (modelKey === "default") continue;
605
+ if (!isValidPercentageThreshold(rawValue)) continue;
606
+ touchedValidEntry = true;
607
+ const baseValue =
608
+ basePercentage.overrides.get(modelKey) ?? basePercentage.defaultValue;
609
+ if (rawValue > baseValue) {
610
+ if (rawValue === constrained.defaultValue) {
611
+ constrained.overrides.delete(modelKey);
612
+ } else {
613
+ constrained.overrides.set(modelKey, rawValue);
614
+ }
615
+ } else {
616
+ warnings.push(
617
+ makeProjectThresholdWarning(
618
+ `execute_threshold_percentage.${modelKey}`,
619
+ PERCENTAGE_THRESHOLD_REASON,
620
+ ),
621
+ );
622
+ }
623
+ }
624
+
625
+ if (touchedValidEntry) {
626
+ setMergedPercentageThreshold(args.mergedRaw, constrained);
627
+ }
628
+ }
629
+ }
630
+
631
+ if (
632
+ "execute_threshold_tokens" in args.projectRaw &&
633
+ isPlainObject(args.projectRaw.execute_threshold_tokens)
634
+ ) {
635
+ const projectValue = args.projectRaw.execute_threshold_tokens;
636
+ const constrained = cloneTokenThresholds(baseTokens);
637
+ let touchedValidEntry = false;
638
+
639
+ if (isValidTokenThreshold(projectValue.default)) {
640
+ touchedValidEntry = true;
641
+ if (baseTokens.defaultValue === undefined) {
642
+ warnings.push(
643
+ makeProjectThresholdWarning(
644
+ "execute_threshold_tokens.default",
645
+ TOKEN_THRESHOLD_INTRODUCTION_REASON,
646
+ ),
647
+ );
648
+ } else if (projectValue.default > baseTokens.defaultValue) {
649
+ constrained.defaultValue = projectValue.default;
650
+ } else {
651
+ warnings.push(
652
+ makeProjectThresholdWarning(
653
+ "execute_threshold_tokens.default",
654
+ TOKEN_THRESHOLD_REASON,
655
+ ),
656
+ );
657
+ }
658
+ }
659
+
660
+ for (const [modelKey, rawValue] of Object.entries(projectValue)) {
661
+ if (modelKey === "default") continue;
662
+ if (!isValidTokenThreshold(rawValue)) continue;
663
+ touchedValidEntry = true;
664
+ const baseValue = baseTokens.overrides.get(modelKey) ?? baseTokens.defaultValue;
665
+ if (baseValue === undefined) {
666
+ warnings.push(
667
+ makeProjectThresholdWarning(
668
+ `execute_threshold_tokens.${modelKey}`,
669
+ TOKEN_THRESHOLD_INTRODUCTION_REASON,
670
+ ),
671
+ );
672
+ continue;
673
+ }
674
+ if (rawValue > baseValue) {
675
+ if (rawValue === constrained.defaultValue) {
676
+ constrained.overrides.delete(modelKey);
677
+ } else {
678
+ constrained.overrides.set(modelKey, rawValue);
679
+ }
680
+ } else {
681
+ warnings.push(
682
+ makeProjectThresholdWarning(
683
+ `execute_threshold_tokens.${modelKey}`,
684
+ TOKEN_THRESHOLD_REASON,
685
+ ),
686
+ );
687
+ }
688
+ }
689
+
690
+ if (touchedValidEntry) {
691
+ setMergedTokenThreshold(args.mergedRaw, constrained);
692
+ }
693
+ }
694
+
695
+ if ("protected_tokens" in args.projectRaw) {
696
+ const rawProject = args.projectRaw.protected_tokens;
697
+ const projectVal = resolveProtectedTokensScalar(rawProject);
698
+ const trustedUserVal = resolveProtectedTokensScalar(
699
+ args.trustedBaseConfig.protected_tokens,
700
+ );
701
+
702
+ if (projectVal !== undefined) {
703
+ if (trustedUserVal !== undefined) {
704
+ if (projectVal >= trustedUserVal) {
705
+ args.mergedRaw.protected_tokens = projectVal;
706
+ } else {
707
+ args.mergedRaw.protected_tokens = trustedUserVal;
708
+ warnings.push(
709
+ makeProjectThresholdWarning("protected_tokens", PROTECTED_TOKENS_REASON),
710
+ );
711
+ }
712
+ } else {
713
+ args.mergedRaw.protected_tokens = projectVal;
714
+ }
715
+ } else {
716
+ if (trustedUserVal !== undefined) {
717
+ args.mergedRaw.protected_tokens = trustedUserVal;
718
+ } else {
719
+ delete args.mergedRaw.protected_tokens;
720
+ }
721
+ warnings.push(makeProjectThresholdWarning("protected_tokens", PROTECTED_TOKENS_REASON));
722
+ }
723
+ }
724
+
725
+ return warnings;
726
+ }
727
+
728
+ /** Path of a schema issue in the merged raw config, e.g. ["compaction", "enabled"]. */
729
+ export type ConfigIssuePath = readonly PropertyKey[];
730
+
731
+ /**
732
+ * Shortest prefix of `issuePath` whose value the PROJECT tier supplied, or
733
+ * undefined when the invalid value did not come from the project. The raw merge
734
+ * recurses only into plain objects on both sides, so the project owns the value
735
+ * at the first prefix where its node is not a plain object (a scalar, array or
736
+ * null replaces the user's value whole), or at the full issue path.
737
+ */
738
+ function projectContributionPath(
739
+ projectRaw: Record<string, unknown>,
740
+ issuePath: ConfigIssuePath,
741
+ ): ConfigIssuePath | undefined {
742
+ let node: unknown = projectRaw;
743
+ for (let index = 0; index < issuePath.length; index++) {
744
+ const segment = String(issuePath[index]);
745
+ if (!isPlainObject(node) || !Object.hasOwn(node, segment)) return undefined;
746
+ node = node[segment];
747
+ if (index === issuePath.length - 1 || !isPlainObject(node)) {
748
+ return issuePath.slice(0, index + 1);
749
+ }
750
+ }
751
+ return undefined;
752
+ }
753
+
754
+ /**
755
+ * The trusted value the project displaced along `contribution`, and where it
756
+ * sits. Walking down, the first trusted node that is not a plain object was
757
+ * replaced whole by the project's object (e.g. a user scalar threshold of 80
758
+ * under a project `{ default: 5 }`), so it is restored at that shorter path.
759
+ * Undefined when the trusted tier has no value there to protect.
760
+ */
761
+ function displacedTrustedValue(
762
+ trustedRaw: Record<string, unknown>,
763
+ contribution: ConfigIssuePath,
764
+ ): { path: ConfigIssuePath; value: unknown } | undefined {
765
+ let node: unknown = trustedRaw;
766
+ for (let index = 0; index < contribution.length; index++) {
767
+ const segment = String(contribution[index]);
768
+ if (!isPlainObject(node) || !Object.hasOwn(node, segment)) return undefined;
769
+ node = node[segment];
770
+ if (index === contribution.length - 1 || !isPlainObject(node)) {
771
+ return { path: contribution.slice(0, index + 1), value: node };
772
+ }
773
+ }
774
+ return undefined;
775
+ }
776
+
777
+ function defineOwnValue(target: Record<string, unknown>, key: string, value: unknown): void {
778
+ Object.defineProperty(target, key, {
779
+ value,
780
+ enumerable: true,
781
+ configurable: true,
782
+ writable: true,
783
+ });
784
+ }
785
+
786
+ /** Put `value` at `path` in `root`, copying each object on the way so objects
787
+ * shared with the trusted or project raw configs are never mutated. */
788
+ function writeOwnPath(root: Record<string, unknown>, path: ConfigIssuePath, value: unknown): void {
789
+ let node = root;
790
+ for (let index = 0; index < path.length - 1; index++) {
791
+ const segment = String(path[index]);
792
+ const child = node[segment];
793
+ if (!isPlainObject(child)) return;
794
+ const copy = { ...child };
795
+ defineOwnValue(node, segment, copy);
796
+ node = copy;
797
+ }
798
+ defineOwnValue(node, String(path[path.length - 1]), value);
799
+ }
800
+
801
+ /** Most rounds a single load can take; each round restores at least one path. */
802
+ const MAX_PROJECT_RESTORE_ROUNDS = 16;
803
+
804
+ /**
805
+ * After the project config is merged over the trusted (user + profile) config,
806
+ * put back the trusted value wherever an INVALID project value displaced it.
807
+ *
808
+ * Without this, a repository could reset user settings by writing a wrong type:
809
+ * `compaction: false` replaces the user's `compaction` block in the raw merge,
810
+ * the schema rejects it, and schema recovery drops the key and uses the schema
811
+ * default, so compaction turns back on, the historian loses its model, or the
812
+ * embedding provider flips and forces a full re-embed. A repository may only
813
+ * tighten what the user configured, so an invalid project value is ignored and
814
+ * the user's value stays. When the user has no value at that path, the project
815
+ * value is left for normal schema recovery, which already lands on the default
816
+ * the user would get anyway.
817
+ *
818
+ * `collectIssuePaths` runs the caller's own pre-schema migrations and schema
819
+ * check and returns every issue path (empty when the config is valid), so this
820
+ * stays aligned with the loader's real parse on every harness. `mergedRaw` is
821
+ * mutated in place.
822
+ */
823
+ export function restoreTrustedValuesOverInvalidProjectValues(args: {
824
+ mergedRaw: Record<string, unknown>;
825
+ trustedRaw: Record<string, unknown>;
826
+ projectRaw: Record<string, unknown>;
827
+ collectIssuePaths: (raw: Record<string, unknown>) => readonly ConfigIssuePath[];
828
+ }): { warnings: string[]; restoredTopLevelKeys: string[] } {
829
+ const warnings: string[] = [];
830
+ const restoredTopLevelKeys = new Set<string>();
831
+ const restored = new Set<string>();
832
+
833
+ for (let round = 0; round < MAX_PROJECT_RESTORE_ROUNDS; round++) {
834
+ let changed = false;
835
+ for (const issuePath of args.collectIssuePaths(args.mergedRaw)) {
836
+ const contribution = projectContributionPath(args.projectRaw, issuePath);
837
+ if (contribution === undefined || contribution.length === 0) continue;
838
+ const trusted = displacedTrustedValue(args.trustedRaw, contribution);
839
+ if (trusted === undefined) continue;
840
+ const key = trusted.path.map(String).join(".");
841
+ // Already restored: any remaining issue there is in the user's own
842
+ // value, which normal schema recovery handles.
843
+ if (restored.has(key)) continue;
844
+ writeOwnPath(args.mergedRaw, trusted.path, trusted.value);
845
+ restored.add(key);
846
+ restoredTopLevelKeys.add(String(trusted.path[0]));
847
+ changed = true;
848
+ warnings.push(
849
+ `Ignoring invalid ${key} from project config and keeping the user-level value (security: a repository cannot reset user settings by supplying an invalid value).`,
850
+ );
851
+ }
852
+ if (!changed) break;
853
+ }
854
+
855
+ return { warnings, restoredTopLevelKeys: [...restoredTopLevelKeys] };
856
+ }
857
+
858
+ const PROJECT_COMMAND_STRING_FIELDS = ["description", "agent", "model"] as const;
859
+
860
+ /** A well-formed command entry with only the fields the command config uses. */
861
+ function wellFormedCommand(value: unknown): Record<string, unknown> | undefined {
862
+ if (!isPlainObject(value)) return undefined;
863
+ if (typeof value.template !== "string" || value.template.trim().length === 0) return undefined;
864
+ const command: Record<string, unknown> = { template: value.template };
865
+ for (const field of PROJECT_COMMAND_STRING_FIELDS) {
866
+ if (value[field] === undefined) continue;
867
+ if (typeof value[field] !== "string") return undefined;
868
+ command[field] = value[field];
869
+ }
870
+ if (value.subtask !== undefined) {
871
+ if (typeof value.subtask !== "boolean") return undefined;
872
+ command.subtask = value.subtask;
873
+ }
874
+ return command;
875
+ }
876
+
877
+ /**
878
+ * Rebuild the merged `command` block so a repository may only ADD commands.
879
+ *
880
+ * The command block is not part of the schema; it is copied into the host's
881
+ * command config after Magic Context's built-in commands. Merged as raw
882
+ * config, a project could replace a command the user defined, shadow a
883
+ * built-in /mmc-* command, wipe the user's commands with a non-object value,
884
+ * or pass malformed entries to the host. Now the user's commands are kept as
885
+ * they are, and a project entry is used only when it is well formed and its
886
+ * name is neither a user command nor one of `reservedNames`. `mergedRaw` is
887
+ * mutated in place.
888
+ */
889
+ export function constrainProjectCommands(args: {
890
+ mergedRaw: Record<string, unknown>;
891
+ trustedRaw: Record<string, unknown>;
892
+ projectRaw: Record<string, unknown>;
893
+ reservedNames: readonly string[];
894
+ }): string[] {
895
+ if (!("command" in args.projectRaw)) return [];
896
+ const warnings: string[] = [];
897
+ const trustedCommands = isPlainObject(args.trustedRaw.command)
898
+ ? args.trustedRaw.command
899
+ : undefined;
900
+ const merged: Record<string, unknown> = { ...(trustedCommands ?? {}) };
901
+ const projectCommands = args.projectRaw.command;
902
+
903
+ if (!isPlainObject(projectCommands)) {
904
+ warnings.push(
905
+ "Ignoring command from project config (it must be an object of named commands).",
906
+ );
907
+ } else {
908
+ for (const [name, value] of Object.entries(projectCommands)) {
909
+ if (trustedCommands && Object.hasOwn(trustedCommands, name)) {
910
+ warnings.push(
911
+ `Ignoring command.${name} from project config (security: a repository cannot replace a command defined in user config).`,
912
+ );
913
+ continue;
914
+ }
915
+ if (args.reservedNames.includes(name)) {
916
+ warnings.push(
917
+ `Ignoring command.${name} from project config (security: a repository cannot replace a built-in Magic Context command).`,
918
+ );
919
+ continue;
920
+ }
921
+ const command = wellFormedCommand(value);
922
+ if (!command) {
923
+ warnings.push(
924
+ `Ignoring command.${name} from project config (it needs a non-empty string template; description, agent and model must be strings and subtask a boolean).`,
925
+ );
926
+ continue;
927
+ }
928
+ Object.defineProperty(merged, name, {
929
+ value: command,
930
+ enumerable: true,
931
+ configurable: true,
932
+ writable: true,
933
+ });
934
+ }
935
+ }
936
+
937
+ if (Object.keys(merged).length === 0) delete args.mergedRaw.command;
938
+ else args.mergedRaw.command = merged;
939
+ return warnings;
940
+ }