@nklisch/pi-enhanced 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1904) hide show
  1. package/README.md +58 -0
  2. package/node_modules/@ff-labs/pi-fff/README.md +153 -0
  3. package/node_modules/@ff-labs/pi-fff/package.json +55 -0
  4. package/node_modules/@ff-labs/pi-fff/src/aux-finders.ts +167 -0
  5. package/node_modules/@ff-labs/pi-fff/src/index.ts +1131 -0
  6. package/node_modules/@ff-labs/pi-fff/src/query.ts +94 -0
  7. package/node_modules/@ff-labs/pi-fff/src/sdk.ts +29 -0
  8. package/node_modules/@juicesharp/rpiv-ask-user-question/LICENSE +21 -0
  9. package/node_modules/@juicesharp/rpiv-ask-user-question/README.md +91 -0
  10. package/node_modules/@juicesharp/rpiv-ask-user-question/ask-user-question.ts +296 -0
  11. package/node_modules/@juicesharp/rpiv-ask-user-question/config.ts +75 -0
  12. package/node_modules/@juicesharp/rpiv-ask-user-question/docs/configuration.md +112 -0
  13. package/node_modules/@juicesharp/rpiv-ask-user-question/docs/hosts.md +87 -0
  14. package/node_modules/@juicesharp/rpiv-ask-user-question/docs/keyboard.md +87 -0
  15. package/node_modules/@juicesharp/rpiv-ask-user-question/docs/localization.md +83 -0
  16. package/node_modules/@juicesharp/rpiv-ask-user-question/docs/tool-schema.md +121 -0
  17. package/node_modules/@juicesharp/rpiv-ask-user-question/events.ts +55 -0
  18. package/node_modules/@juicesharp/rpiv-ask-user-question/index.ts +54 -0
  19. package/node_modules/@juicesharp/rpiv-ask-user-question/locales/de.json +27 -0
  20. package/node_modules/@juicesharp/rpiv-ask-user-question/locales/en.json +27 -0
  21. package/node_modules/@juicesharp/rpiv-ask-user-question/locales/es.json +27 -0
  22. package/node_modules/@juicesharp/rpiv-ask-user-question/locales/fr.json +27 -0
  23. package/node_modules/@juicesharp/rpiv-ask-user-question/locales/pt-BR.json +27 -0
  24. package/node_modules/@juicesharp/rpiv-ask-user-question/locales/pt.json +27 -0
  25. package/node_modules/@juicesharp/rpiv-ask-user-question/locales/ru.json +27 -0
  26. package/node_modules/@juicesharp/rpiv-ask-user-question/locales/uk.json +27 -0
  27. package/node_modules/@juicesharp/rpiv-ask-user-question/locales/zh.json +29 -0
  28. package/node_modules/@juicesharp/rpiv-ask-user-question/package.json +98 -0
  29. package/node_modules/@juicesharp/rpiv-ask-user-question/reconcile.ts +47 -0
  30. package/node_modules/@juicesharp/rpiv-ask-user-question/rpc-fallback.ts +166 -0
  31. package/node_modules/@juicesharp/rpiv-ask-user-question/state/build-questionnaire.ts +300 -0
  32. package/node_modules/@juicesharp/rpiv-ask-user-question/state/i18n-bridge.ts +51 -0
  33. package/node_modules/@juicesharp/rpiv-ask-user-question/state/key-router.ts +275 -0
  34. package/node_modules/@juicesharp/rpiv-ask-user-question/state/questionnaire-session.ts +232 -0
  35. package/node_modules/@juicesharp/rpiv-ask-user-question/state/row-intent.ts +143 -0
  36. package/node_modules/@juicesharp/rpiv-ask-user-question/state/selectors/contract.ts +24 -0
  37. package/node_modules/@juicesharp/rpiv-ask-user-question/state/selectors/derivations.ts +40 -0
  38. package/node_modules/@juicesharp/rpiv-ask-user-question/state/selectors/focus.ts +17 -0
  39. package/node_modules/@juicesharp/rpiv-ask-user-question/state/selectors/projections.ts +99 -0
  40. package/node_modules/@juicesharp/rpiv-ask-user-question/state/state-reducer.ts +290 -0
  41. package/node_modules/@juicesharp/rpiv-ask-user-question/state/state.ts +53 -0
  42. package/node_modules/@juicesharp/rpiv-ask-user-question/tool/format-answer.ts +29 -0
  43. package/node_modules/@juicesharp/rpiv-ask-user-question/tool/response-envelope.ts +47 -0
  44. package/node_modules/@juicesharp/rpiv-ask-user-question/tool/types.ts +145 -0
  45. package/node_modules/@juicesharp/rpiv-ask-user-question/tool/validate-questionnaire.ts +56 -0
  46. package/node_modules/@juicesharp/rpiv-ask-user-question/view/component-binding.ts +45 -0
  47. package/node_modules/@juicesharp/rpiv-ask-user-question/view/components/inline-input.ts +96 -0
  48. package/node_modules/@juicesharp/rpiv-ask-user-question/view/components/multi-select-view.ts +191 -0
  49. package/node_modules/@juicesharp/rpiv-ask-user-question/view/components/option-list-view.ts +68 -0
  50. package/node_modules/@juicesharp/rpiv-ask-user-question/view/components/preview/markdown-content-cache.ts +77 -0
  51. package/node_modules/@juicesharp/rpiv-ask-user-question/view/components/preview/preview-block-renderer.ts +109 -0
  52. package/node_modules/@juicesharp/rpiv-ask-user-question/view/components/preview/preview-box-renderer.ts +86 -0
  53. package/node_modules/@juicesharp/rpiv-ask-user-question/view/components/preview/preview-layout-decider.ts +200 -0
  54. package/node_modules/@juicesharp/rpiv-ask-user-question/view/components/preview/preview-pane.ts +226 -0
  55. package/node_modules/@juicesharp/rpiv-ask-user-question/view/components/submit-picker.ts +65 -0
  56. package/node_modules/@juicesharp/rpiv-ask-user-question/view/components/tab-bar.ts +57 -0
  57. package/node_modules/@juicesharp/rpiv-ask-user-question/view/components/wrapping-select.ts +291 -0
  58. package/node_modules/@juicesharp/rpiv-ask-user-question/view/dialog-builder.ts +222 -0
  59. package/node_modules/@juicesharp/rpiv-ask-user-question/view/props-adapter.ts +123 -0
  60. package/node_modules/@juicesharp/rpiv-ask-user-question/view/stateful-view.ts +24 -0
  61. package/node_modules/@juicesharp/rpiv-ask-user-question/view/tab-components.ts +16 -0
  62. package/node_modules/@juicesharp/rpiv-ask-user-question/view/tab-content-strategy.ts +250 -0
  63. package/node_modules/@juicesharp/rpiv-todo/LICENSE +21 -0
  64. package/node_modules/@juicesharp/rpiv-todo/README.md +122 -0
  65. package/node_modules/@juicesharp/rpiv-todo/config.ts +101 -0
  66. package/node_modules/@juicesharp/rpiv-todo/docs/configuration.md +108 -0
  67. package/node_modules/@juicesharp/rpiv-todo/docs/overlay.md +127 -0
  68. package/node_modules/@juicesharp/rpiv-todo/docs/tool-schema.md +151 -0
  69. package/node_modules/@juicesharp/rpiv-todo/index.ts +186 -0
  70. package/node_modules/@juicesharp/rpiv-todo/locales/de.json +19 -0
  71. package/node_modules/@juicesharp/rpiv-todo/locales/en.json +17 -0
  72. package/node_modules/@juicesharp/rpiv-todo/locales/es.json +19 -0
  73. package/node_modules/@juicesharp/rpiv-todo/locales/fr.json +19 -0
  74. package/node_modules/@juicesharp/rpiv-todo/locales/pt-BR.json +19 -0
  75. package/node_modules/@juicesharp/rpiv-todo/locales/pt.json +19 -0
  76. package/node_modules/@juicesharp/rpiv-todo/locales/ru.json +19 -0
  77. package/node_modules/@juicesharp/rpiv-todo/locales/uk.json +19 -0
  78. package/node_modules/@juicesharp/rpiv-todo/locales/zh.json +19 -0
  79. package/node_modules/@juicesharp/rpiv-todo/package.json +73 -0
  80. package/node_modules/@juicesharp/rpiv-todo/state/i18n-bridge.ts +64 -0
  81. package/node_modules/@juicesharp/rpiv-todo/state/invariants.ts +20 -0
  82. package/node_modules/@juicesharp/rpiv-todo/state/replay.ts +38 -0
  83. package/node_modules/@juicesharp/rpiv-todo/state/selectors.ts +107 -0
  84. package/node_modules/@juicesharp/rpiv-todo/state/state-reducer.ts +227 -0
  85. package/node_modules/@juicesharp/rpiv-todo/state/state.ts +18 -0
  86. package/node_modules/@juicesharp/rpiv-todo/state/store.ts +126 -0
  87. package/node_modules/@juicesharp/rpiv-todo/state/task-graph.ts +57 -0
  88. package/node_modules/@juicesharp/rpiv-todo/todo-overlay.ts +230 -0
  89. package/node_modules/@juicesharp/rpiv-todo/todo.ts +144 -0
  90. package/node_modules/@juicesharp/rpiv-todo/tool/response-envelope.ts +97 -0
  91. package/node_modules/@juicesharp/rpiv-todo/tool/types.ts +128 -0
  92. package/node_modules/@juicesharp/rpiv-todo/view/format.ts +163 -0
  93. package/node_modules/@narumitw/pi-usage/LICENSE +21 -0
  94. package/node_modules/@narumitw/pi-usage/README.md +151 -0
  95. package/node_modules/@narumitw/pi-usage/package.json +46 -0
  96. package/node_modules/@narumitw/pi-usage/src/core.ts +217 -0
  97. package/node_modules/@narumitw/pi-usage/src/format.ts +249 -0
  98. package/node_modules/@narumitw/pi-usage/src/index.ts +35 -0
  99. package/node_modules/@narumitw/pi-usage/src/providers/codex.ts +150 -0
  100. package/node_modules/@narumitw/pi-usage/src/providers/openrouter.ts +73 -0
  101. package/node_modules/@narumitw/pi-usage/src/query.ts +313 -0
  102. package/node_modules/@narumitw/pi-usage/src/types.ts +90 -0
  103. package/node_modules/@narumitw/pi-usage/src/usage.ts +676 -0
  104. package/node_modules/@nklisch/pi-background-tasks/README.md +20 -0
  105. package/node_modules/@nklisch/pi-background-tasks/extensions/background-tasks.test.ts +784 -0
  106. package/node_modules/@nklisch/pi-background-tasks/extensions/background-tasks.ts +1143 -0
  107. package/node_modules/@nklisch/pi-background-tasks/package.json +40 -0
  108. package/node_modules/@nklisch/pi-background-tasks/skills/background-tasks/SKILL.md +138 -0
  109. package/node_modules/@nklisch/pi-clearance/LICENSE +21 -0
  110. package/node_modules/@nklisch/pi-clearance/README.md +45 -0
  111. package/node_modules/@nklisch/pi-clearance/docs/ARCHITECTURE.md +47 -0
  112. package/node_modules/@nklisch/pi-clearance/docs/CONFIGURATION.md +94 -0
  113. package/node_modules/@nklisch/pi-clearance/docs/DEVELOPER_GUIDE.md +284 -0
  114. package/node_modules/@nklisch/pi-clearance/docs/PACK_AUTHORING.md +484 -0
  115. package/node_modules/@nklisch/pi-clearance/docs/PRINCIPLES.md +154 -0
  116. package/node_modules/@nklisch/pi-clearance/docs/REFERENCE_PATTERNS.md +335 -0
  117. package/node_modules/@nklisch/pi-clearance/docs/REVIEWER_PROMPTS.md +37 -0
  118. package/node_modules/@nklisch/pi-clearance/docs/RULE_PACKS.md +198 -0
  119. package/node_modules/@nklisch/pi-clearance/docs/SPEC.md +45 -0
  120. package/node_modules/@nklisch/pi-clearance/docs/TUNE.md +32 -0
  121. package/node_modules/@nklisch/pi-clearance/docs/USER_GUIDE.md +70 -0
  122. package/node_modules/@nklisch/pi-clearance/docs/VISION.md +23 -0
  123. package/node_modules/@nklisch/pi-clearance/native/clearance-core.linux-x64-gnu.node +0 -0
  124. package/node_modules/@nklisch/pi-clearance/native/index.d.ts +66 -0
  125. package/node_modules/@nklisch/pi-clearance/package.json +95 -0
  126. package/node_modules/@nklisch/pi-clearance/src/audit/entry.ts +206 -0
  127. package/node_modules/@nklisch/pi-clearance/src/audit/log.ts +4 -0
  128. package/node_modules/@nklisch/pi-clearance/src/audit/logger.ts +39 -0
  129. package/node_modules/@nklisch/pi-clearance/src/audit/redact.ts +260 -0
  130. package/node_modules/@nklisch/pi-clearance/src/audit/sink.ts +129 -0
  131. package/node_modules/@nklisch/pi-clearance/src/config/config-command-plans.ts +918 -0
  132. package/node_modules/@nklisch/pi-clearance/src/config/config-command-writer.ts +582 -0
  133. package/node_modules/@nklisch/pi-clearance/src/config/loader.ts +904 -0
  134. package/node_modules/@nklisch/pi-clearance/src/config/pack-enablement-writer.ts +467 -0
  135. package/node_modules/@nklisch/pi-clearance/src/config/path-scope.ts +199 -0
  136. package/node_modules/@nklisch/pi-clearance/src/config/paths.ts +62 -0
  137. package/node_modules/@nklisch/pi-clearance/src/config/schema.ts +411 -0
  138. package/node_modules/@nklisch/pi-clearance/src/contracts/AdversarialCase.ts +15 -0
  139. package/node_modules/@nklisch/pi-clearance/src/contracts/AdversarialCaseCategory.ts +13 -0
  140. package/node_modules/@nklisch/pi-clearance/src/contracts/AdversarialCaseExpectation.ts +7 -0
  141. package/node_modules/@nklisch/pi-clearance/src/contracts/AdversarialCaseResult.ts +18 -0
  142. package/node_modules/@nklisch/pi-clearance/src/contracts/AdversarialCaseResultOutcome.ts +8 -0
  143. package/node_modules/@nklisch/pi-clearance/src/contracts/AdversarialCaseSource.ts +7 -0
  144. package/node_modules/@nklisch/pi-clearance/src/contracts/AdversarialValidationReport.ts +20 -0
  145. package/node_modules/@nklisch/pi-clearance/src/contracts/AdversarialValidationStatus.ts +4 -0
  146. package/node_modules/@nklisch/pi-clearance/src/contracts/BashBlock.ts +12 -0
  147. package/node_modules/@nklisch/pi-clearance/src/contracts/BashCommandShape.ts +16 -0
  148. package/node_modules/@nklisch/pi-clearance/src/contracts/BashConditionalArm.ts +12 -0
  149. package/node_modules/@nklisch/pi-clearance/src/contracts/BashControlConstruct.ts +12 -0
  150. package/node_modules/@nklisch/pi-clearance/src/contracts/BashFlag.ts +11 -0
  151. package/node_modules/@nklisch/pi-clearance/src/contracts/BashForLoopKeywordSpans.ts +10 -0
  152. package/node_modules/@nklisch/pi-clearance/src/contracts/BashIteratorEntry.ts +13 -0
  153. package/node_modules/@nklisch/pi-clearance/src/contracts/BashIteratorEntryKind.ts +4 -0
  154. package/node_modules/@nklisch/pi-clearance/src/contracts/BashListOperator.ts +4 -0
  155. package/node_modules/@nklisch/pi-clearance/src/contracts/BashLoopVariableReference.ts +11 -0
  156. package/node_modules/@nklisch/pi-clearance/src/contracts/BashPathFact.ts +33 -0
  157. package/node_modules/@nklisch/pi-clearance/src/contracts/BashPathFactContext.ts +10 -0
  158. package/node_modules/@nklisch/pi-clearance/src/contracts/BashPathFactProvenance.ts +14 -0
  159. package/node_modules/@nklisch/pi-clearance/src/contracts/BashPathFactProvenanceEntry.ts +16 -0
  160. package/node_modules/@nklisch/pi-clearance/src/contracts/BashPathFacts.ts +14 -0
  161. package/node_modules/@nklisch/pi-clearance/src/contracts/BashPipeline.ts +10 -0
  162. package/node_modules/@nklisch/pi-clearance/src/contracts/BashStage.ts +45 -0
  163. package/node_modules/@nklisch/pi-clearance/src/contracts/BashStageProgram.ts +16 -0
  164. package/node_modules/@nklisch/pi-clearance/src/contracts/BlockOperator.ts +4 -0
  165. package/node_modules/@nklisch/pi-clearance/src/contracts/CapturedOutcome.ts +12 -0
  166. package/node_modules/@nklisch/pi-clearance/src/contracts/CommandFamilyKey.ts +16 -0
  167. package/node_modules/@nklisch/pi-clearance/src/contracts/CommandFamilySummary.ts +20 -0
  168. package/node_modules/@nklisch/pi-clearance/src/contracts/CompileError.ts +9 -0
  169. package/node_modules/@nklisch/pi-clearance/src/contracts/CompositionOperator.ts +4 -0
  170. package/node_modules/@nklisch/pi-clearance/src/contracts/CompoundBodyReason.ts +7 -0
  171. package/node_modules/@nklisch/pi-clearance/src/contracts/CompoundFeatureReason.ts +10 -0
  172. package/node_modules/@nklisch/pi-clearance/src/contracts/CompoundForm.ts +4 -0
  173. package/node_modules/@nklisch/pi-clearance/src/contracts/CompoundIteratorReason.ts +11 -0
  174. package/node_modules/@nklisch/pi-clearance/src/contracts/CorpusEntry.ts +23 -0
  175. package/node_modules/@nklisch/pi-clearance/src/contracts/CorpusExpectedLabel.ts +4 -0
  176. package/node_modules/@nklisch/pi-clearance/src/contracts/CorpusFidelity.ts +4 -0
  177. package/node_modules/@nklisch/pi-clearance/src/contracts/CorpusQueryModel.ts +12 -0
  178. package/node_modules/@nklisch/pi-clearance/src/contracts/CorpusQuerySummary.ts +16 -0
  179. package/node_modules/@nklisch/pi-clearance/src/contracts/CorpusQuerySummarySnapshot.ts +11 -0
  180. package/node_modules/@nklisch/pi-clearance/src/contracts/CorpusRecord.ts +21 -0
  181. package/node_modules/@nklisch/pi-clearance/src/contracts/CorpusSource.ts +4 -0
  182. package/node_modules/@nklisch/pi-clearance/src/contracts/CountByLabel.ts +8 -0
  183. package/node_modules/@nklisch/pi-clearance/src/contracts/Decision.ts +10 -0
  184. package/node_modules/@nklisch/pi-clearance/src/contracts/DecisionEffect.ts +4 -0
  185. package/node_modules/@nklisch/pi-clearance/src/contracts/DecisionProvenance.ts +9 -0
  186. package/node_modules/@nklisch/pi-clearance/src/contracts/DecisionSource.ts +11 -0
  187. package/node_modules/@nklisch/pi-clearance/src/contracts/DiagnosticSeverity.ts +4 -0
  188. package/node_modules/@nklisch/pi-clearance/src/contracts/EffectivePolicy.ts +9 -0
  189. package/node_modules/@nklisch/pi-clearance/src/contracts/EmbeddedShellProjection.ts +13 -0
  190. package/node_modules/@nklisch/pi-clearance/src/contracts/EnvironmentAssignment.ts +9 -0
  191. package/node_modules/@nklisch/pi-clearance/src/contracts/IteratorSourceKind.ts +8 -0
  192. package/node_modules/@nklisch/pi-clearance/src/contracts/LoopQuoteKind.ts +4 -0
  193. package/node_modules/@nklisch/pi-clearance/src/contracts/LoopVariableUnknownReason.ts +7 -0
  194. package/node_modules/@nklisch/pi-clearance/src/contracts/MatcherExpr.ts +103 -0
  195. package/node_modules/@nklisch/pi-clearance/src/contracts/MutationShapeKind.ts +4 -0
  196. package/node_modules/@nklisch/pi-clearance/src/contracts/MutationTrustBoundaryClassification.ts +8 -0
  197. package/node_modules/@nklisch/pi-clearance/src/contracts/MutationTrustBoundaryKind.ts +13 -0
  198. package/node_modules/@nklisch/pi-clearance/src/contracts/PackCompileResult.ts +9 -0
  199. package/node_modules/@nklisch/pi-clearance/src/contracts/PackWarningLevel.ts +4 -0
  200. package/node_modules/@nklisch/pi-clearance/src/contracts/ParsedEvidence.ts +13 -0
  201. package/node_modules/@nklisch/pi-clearance/src/contracts/ParsedShapeSummary.ts +16 -0
  202. package/node_modules/@nklisch/pi-clearance/src/contracts/PathAccess.ts +10 -0
  203. package/node_modules/@nklisch/pi-clearance/src/contracts/PathFactProjectScope.ts +13 -0
  204. package/node_modules/@nklisch/pi-clearance/src/contracts/PathFactsRequirement.ts +7 -0
  205. package/node_modules/@nklisch/pi-clearance/src/contracts/PathFactsResolvedConfig.ts +9 -0
  206. package/node_modules/@nklisch/pi-clearance/src/contracts/PathNormalization.ts +4 -0
  207. package/node_modules/@nklisch/pi-clearance/src/contracts/PathScope.ts +15 -0
  208. package/node_modules/@nklisch/pi-clearance/src/contracts/PathScopeMatcherExpr.ts +17 -0
  209. package/node_modules/@nklisch/pi-clearance/src/contracts/PathScopeMatcherMode.ts +4 -0
  210. package/node_modules/@nklisch/pi-clearance/src/contracts/PathUnknownReason.ts +12 -0
  211. package/node_modules/@nklisch/pi-clearance/src/contracts/PathUsageKind.ts +9 -0
  212. package/node_modules/@nklisch/pi-clearance/src/contracts/PiBuiltinToolOperation.ts +16 -0
  213. package/node_modules/@nklisch/pi-clearance/src/contracts/PiBuiltinToolPathInput.ts +8 -0
  214. package/node_modules/@nklisch/pi-clearance/src/contracts/PiBuiltinToolShape.ts +22 -0
  215. package/node_modules/@nklisch/pi-clearance/src/contracts/PiBuiltinToolSpec.ts +10 -0
  216. package/node_modules/@nklisch/pi-clearance/src/contracts/PiFileMutationToolName.ts +4 -0
  217. package/node_modules/@nklisch/pi-clearance/src/contracts/PiToolMutationFacts.ts +19 -0
  218. package/node_modules/@nklisch/pi-clearance/src/contracts/PolicyPack.ts +11 -0
  219. package/node_modules/@nklisch/pi-clearance/src/contracts/PolicyPackDocLink.ts +4 -0
  220. package/node_modules/@nklisch/pi-clearance/src/contracts/PolicyPackExample.ts +9 -0
  221. package/node_modules/@nklisch/pi-clearance/src/contracts/PolicyPackMetadata.ts +14 -0
  222. package/node_modules/@nklisch/pi-clearance/src/contracts/PolicyPackWarning.ts +5 -0
  223. package/node_modules/@nklisch/pi-clearance/src/contracts/PolicyRule.ts +13 -0
  224. package/node_modules/@nklisch/pi-clearance/src/contracts/ProposalNotRunReason.ts +10 -0
  225. package/node_modules/@nklisch/pi-clearance/src/contracts/ProposalNotRunSeverity.ts +4 -0
  226. package/node_modules/@nklisch/pi-clearance/src/contracts/QuoteKind.ts +4 -0
  227. package/node_modules/@nklisch/pi-clearance/src/contracts/Redirect.ts +13 -0
  228. package/node_modules/@nklisch/pi-clearance/src/contracts/RedirectStream.ts +4 -0
  229. package/node_modules/@nklisch/pi-clearance/src/contracts/RedirectTargetKind.ts +4 -0
  230. package/node_modules/@nklisch/pi-clearance/src/contracts/ReplayCorpus.ts +14 -0
  231. package/node_modules/@nklisch/pi-clearance/src/contracts/ReplayDelta.ts +28 -0
  232. package/node_modules/@nklisch/pi-clearance/src/contracts/ReplayDeltaBlockedSummary.ts +11 -0
  233. package/node_modules/@nklisch/pi-clearance/src/contracts/ReplayDeltaChangedRecord.ts +19 -0
  234. package/node_modules/@nklisch/pi-clearance/src/contracts/ReplayDeltaFamily.ts +24 -0
  235. package/node_modules/@nklisch/pi-clearance/src/contracts/ReplayDeltaImprovement.ts +10 -0
  236. package/node_modules/@nklisch/pi-clearance/src/contracts/ReplayDeltaRegression.ts +10 -0
  237. package/node_modules/@nklisch/pi-clearance/src/contracts/ReplayDeltaStatus.ts +4 -0
  238. package/node_modules/@nklisch/pi-clearance/src/contracts/ReplayDeltaTransitionCount.ts +8 -0
  239. package/node_modules/@nklisch/pi-clearance/src/contracts/ReplayPathFacts.ts +6 -0
  240. package/node_modules/@nklisch/pi-clearance/src/contracts/ReplayReviewerMode.ts +8 -0
  241. package/node_modules/@nklisch/pi-clearance/src/contracts/ReplayReviewerOutcome.ts +9 -0
  242. package/node_modules/@nklisch/pi-clearance/src/contracts/ReplayStatus.ts +4 -0
  243. package/node_modules/@nklisch/pi-clearance/src/contracts/ReplayedDecision.ts +12 -0
  244. package/node_modules/@nklisch/pi-clearance/src/contracts/ShapeDiagnostic.ts +11 -0
  245. package/node_modules/@nklisch/pi-clearance/src/contracts/SourceFidelity.ts +13 -0
  246. package/node_modules/@nklisch/pi-clearance/src/contracts/SourceSpan.ts +4 -0
  247. package/node_modules/@nklisch/pi-clearance/src/contracts/Substitution.ts +10 -0
  248. package/node_modules/@nklisch/pi-clearance/src/contracts/SubstitutionKind.ts +4 -0
  249. package/node_modules/@nklisch/pi-clearance/src/contracts/ToolCallIdentity.ts +12 -0
  250. package/node_modules/@nklisch/pi-clearance/src/contracts/ToolPathAccess.ts +4 -0
  251. package/node_modules/@nklisch/pi-clearance/src/contracts/ToolPathFact.ts +25 -0
  252. package/node_modules/@nklisch/pi-clearance/src/contracts/ToolPathFactContext.ts +10 -0
  253. package/node_modules/@nklisch/pi-clearance/src/contracts/ToolPathFacts.ts +13 -0
  254. package/node_modules/@nklisch/pi-clearance/src/contracts/ToolPathUsage.ts +4 -0
  255. package/node_modules/@nklisch/pi-clearance/src/contracts/ToolShape.ts +10 -0
  256. package/node_modules/@nklisch/pi-clearance/src/contracts/UnknownPathBehavior.ts +4 -0
  257. package/node_modules/@nklisch/pi-clearance/src/contracts/UnknownToolShape.ts +10 -0
  258. package/node_modules/@nklisch/pi-clearance/src/contracts/index.ts +121 -0
  259. package/node_modules/@nklisch/pi-clearance/src/index.ts +192 -0
  260. package/node_modules/@nklisch/pi-clearance/src/native/loader.ts +582 -0
  261. package/node_modules/@nklisch/pi-clearance/src/packs/activation.ts +65 -0
  262. package/node_modules/@nklisch/pi-clearance/src/packs/baseline.ts +53 -0
  263. package/node_modules/@nklisch/pi-clearance/src/packs/bash.compound.read.ts +30 -0
  264. package/node_modules/@nklisch/pi-clearance/src/packs/bash.dev.verify.ts +879 -0
  265. package/node_modules/@nklisch/pi-clearance/src/packs/bash.inspect.core.ts +193 -0
  266. package/node_modules/@nklisch/pi-clearance/src/packs/bash.network.read.ts +243 -0
  267. package/node_modules/@nklisch/pi-clearance/src/packs/bash.packages.common.ts +351 -0
  268. package/node_modules/@nklisch/pi-clearance/src/packs/bash.project.constructive.ts +60 -0
  269. package/node_modules/@nklisch/pi-clearance/src/packs/bash.review.compound.ts +82 -0
  270. package/node_modules/@nklisch/pi-clearance/src/packs/bash.review.risky.ts +367 -0
  271. package/node_modules/@nklisch/pi-clearance/src/packs/bash.search.read.ts +206 -0
  272. package/node_modules/@nklisch/pi-clearance/src/packs/bash.shell.builtins.ts +138 -0
  273. package/node_modules/@nklisch/pi-clearance/src/packs/bash.structure.safe.ts +118 -0
  274. package/node_modules/@nklisch/pi-clearance/src/packs/bash.system.read.ts +187 -0
  275. package/node_modules/@nklisch/pi-clearance/src/packs/bash.vcs.read.ts +476 -0
  276. package/node_modules/@nklisch/pi-clearance/src/packs/bash.vcs.write.ts +116 -0
  277. package/node_modules/@nklisch/pi-clearance/src/packs/composition-families.ts +101 -0
  278. package/node_modules/@nklisch/pi-clearance/src/packs/condition-guards.ts +56 -0
  279. package/node_modules/@nklisch/pi-clearance/src/packs/define.ts +14 -0
  280. package/node_modules/@nklisch/pi-clearance/src/packs/enablement-command.ts +186 -0
  281. package/node_modules/@nklisch/pi-clearance/src/packs/enablement.ts +814 -0
  282. package/node_modules/@nklisch/pi-clearance/src/packs/floor.ts +142 -0
  283. package/node_modules/@nklisch/pi-clearance/src/packs/package-contract.ts +514 -0
  284. package/node_modules/@nklisch/pi-clearance/src/packs/package-registration.ts +299 -0
  285. package/node_modules/@nklisch/pi-clearance/src/packs/pi.extension.inspect.ts +416 -0
  286. package/node_modules/@nklisch/pi-clearance/src/packs/pi.file.mutate.ts +55 -0
  287. package/node_modules/@nklisch/pi-clearance/src/packs/pi.home.safe.ts +78 -0
  288. package/node_modules/@nklisch/pi-clearance/src/packs/pi.inspect.read.ts +41 -0
  289. package/node_modules/@nklisch/pi-clearance/src/packs/redirect-safety.ts +22 -0
  290. package/node_modules/@nklisch/pi-clearance/src/packs/registry.ts +1062 -0
  291. package/node_modules/@nklisch/pi-clearance/src/packs/validation.ts +1022 -0
  292. package/node_modules/@nklisch/pi-clearance/src/parse/native-effects.ts +49 -0
  293. package/node_modules/@nklisch/pi-clearance/src/parse/native-mutation.ts +20 -0
  294. package/node_modules/@nklisch/pi-clearance/src/parse/native-parser.ts +7 -0
  295. package/node_modules/@nklisch/pi-clearance/src/parse/native-path-facts.ts +190 -0
  296. package/node_modules/@nklisch/pi-clearance/src/parse/native-tool.ts +57 -0
  297. package/node_modules/@nklisch/pi-clearance/src/parse/registry.ts +107 -0
  298. package/node_modules/@nklisch/pi-clearance/src/parse/shape-utils.ts +136 -0
  299. package/node_modules/@nklisch/pi-clearance/src/parse/shape.ts +155 -0
  300. package/node_modules/@nklisch/pi-clearance/src/parse/tool-specs.ts +101 -0
  301. package/node_modules/@nklisch/pi-clearance/src/policy/composer.ts +333 -0
  302. package/node_modules/@nklisch/pi-clearance/src/policy/core.ts +1096 -0
  303. package/node_modules/@nklisch/pi-clearance/src/policy/loader.ts +50 -0
  304. package/node_modules/@nklisch/pi-clearance/src/policy/scope-behavior-pack.ts +101 -0
  305. package/node_modules/@nklisch/pi-clearance/src/replay/adversarial.ts +717 -0
  306. package/node_modules/@nklisch/pi-clearance/src/replay/authoring-proposal-adapter.ts +549 -0
  307. package/node_modules/@nklisch/pi-clearance/src/replay/batch-card.ts +333 -0
  308. package/node_modules/@nklisch/pi-clearance/src/replay/command-family-primitives.ts +235 -0
  309. package/node_modules/@nklisch/pi-clearance/src/replay/command-family.ts +8 -0
  310. package/node_modules/@nklisch/pi-clearance/src/replay/config-proposal-adapter.ts +888 -0
  311. package/node_modules/@nklisch/pi-clearance/src/replay/corpus-model.ts +435 -0
  312. package/node_modules/@nklisch/pi-clearance/src/replay/corpus-query.ts +647 -0
  313. package/node_modules/@nklisch/pi-clearance/src/replay/history.ts +653 -0
  314. package/node_modules/@nklisch/pi-clearance/src/replay/native-kernels.ts +207 -0
  315. package/node_modules/@nklisch/pi-clearance/src/replay/not-run-reasons.ts +80 -0
  316. package/node_modules/@nklisch/pi-clearance/src/replay/pack-enablement-proposal.ts +283 -0
  317. package/node_modules/@nklisch/pi-clearance/src/replay/policy-proposal-adapter.ts +755 -0
  318. package/node_modules/@nklisch/pi-clearance/src/replay/proposal-acknowledgements.ts +56 -0
  319. package/node_modules/@nklisch/pi-clearance/src/replay/proposal-approval.ts +506 -0
  320. package/node_modules/@nklisch/pi-clearance/src/replay/proposal-batch.ts +368 -0
  321. package/node_modules/@nklisch/pi-clearance/src/replay/proposal-candidate-policy.ts +129 -0
  322. package/node_modules/@nklisch/pi-clearance/src/replay/proposal-card.ts +1086 -0
  323. package/node_modules/@nklisch/pi-clearance/src/replay/proposal-draft.ts +215 -0
  324. package/node_modules/@nklisch/pi-clearance/src/replay/proposal-grouping.ts +164 -0
  325. package/node_modules/@nklisch/pi-clearance/src/replay/proposal-replay-delta.ts +697 -0
  326. package/node_modules/@nklisch/pi-clearance/src/replay/proposal-schema.ts +1254 -0
  327. package/node_modules/@nklisch/pi-clearance/src/replay/proposal-validation-display.ts +23 -0
  328. package/node_modules/@nklisch/pi-clearance/src/replay/proposal-write-plan.ts +840 -0
  329. package/node_modules/@nklisch/pi-clearance/src/replay/proposals.ts +2113 -0
  330. package/node_modules/@nklisch/pi-clearance/src/replay/ratchet-markdown.ts +330 -0
  331. package/node_modules/@nklisch/pi-clearance/src/replay/ratchet.ts +905 -0
  332. package/node_modules/@nklisch/pi-clearance/src/replay/reader.ts +163 -0
  333. package/node_modules/@nklisch/pi-clearance/src/replay/rendering-format.ts +98 -0
  334. package/node_modules/@nklisch/pi-clearance/src/replay/replay-delta.ts +209 -0
  335. package/node_modules/@nklisch/pi-clearance/src/replay/reviewer-config-proposals.ts +1790 -0
  336. package/node_modules/@nklisch/pi-clearance/src/replay/sources/audit-log.ts +338 -0
  337. package/node_modules/@nklisch/pi-clearance/src/replay/sources/corpus-fixtures.ts +164 -0
  338. package/node_modules/@nklisch/pi-clearance/src/replay/sources/session-history.ts +258 -0
  339. package/node_modules/@nklisch/pi-clearance/src/replay/structured-markdown.ts +804 -0
  340. package/node_modules/@nklisch/pi-clearance/src/runtime/auto-reviewer-read-models.ts +894 -0
  341. package/node_modules/@nklisch/pi-clearance/src/runtime/command-registry.ts +366 -0
  342. package/node_modules/@nklisch/pi-clearance/src/runtime/command-transforms.ts +373 -0
  343. package/node_modules/@nklisch/pi-clearance/src/runtime/compound-recovery.ts +366 -0
  344. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/allow.ts +529 -0
  345. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/packs.ts +1531 -0
  346. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/post-write-validation.ts +187 -0
  347. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/scope.ts +865 -0
  348. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/settings/actions.ts +62 -0
  349. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/settings/dispatcher.ts +809 -0
  350. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/settings/native-ui.ts +1060 -0
  351. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/settings/panels/briefing.ts +172 -0
  352. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/settings/panels/packs.ts +120 -0
  353. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/settings/panels/reviewer.ts +83 -0
  354. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/settings/panels/scope.ts +312 -0
  355. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/settings/panels.ts +92 -0
  356. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/settings/read-model.ts +167 -0
  357. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/settings.ts +225 -0
  358. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/setup.ts +135 -0
  359. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/status.ts +64 -0
  360. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/tune-cue.ts +50 -0
  361. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/tune.ts +135 -0
  362. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/types.ts +163 -0
  363. package/node_modules/@nklisch/pi-clearance/src/runtime/config-commands/why.ts +253 -0
  364. package/node_modules/@nklisch/pi-clearance/src/runtime/duration.ts +49 -0
  365. package/node_modules/@nklisch/pi-clearance/src/runtime/escalation.ts +104 -0
  366. package/node_modules/@nklisch/pi-clearance/src/runtime/handler.ts +412 -0
  367. package/node_modules/@nklisch/pi-clearance/src/runtime/human-review-card.ts +278 -0
  368. package/node_modules/@nklisch/pi-clearance/src/runtime/markdown.ts +13 -0
  369. package/node_modules/@nklisch/pi-clearance/src/runtime/mode-prompt.ts +47 -0
  370. package/node_modules/@nklisch/pi-clearance/src/runtime/model-adapter.ts +248 -0
  371. package/node_modules/@nklisch/pi-clearance/src/runtime/operator-status.ts +125 -0
  372. package/node_modules/@nklisch/pi-clearance/src/runtime/policy-cache.ts +280 -0
  373. package/node_modules/@nklisch/pi-clearance/src/runtime/proposal-tools/apply-engine.ts +1030 -0
  374. package/node_modules/@nklisch/pi-clearance/src/runtime/proposal-tools/ids.ts +7 -0
  375. package/node_modules/@nklisch/pi-clearance/src/runtime/proposal-tools/index.ts +48 -0
  376. package/node_modules/@nklisch/pi-clearance/src/runtime/proposal-tools/present.ts +651 -0
  377. package/node_modules/@nklisch/pi-clearance/src/runtime/proposal-tools/propose.ts +223 -0
  378. package/node_modules/@nklisch/pi-clearance/src/runtime/ratchet-mode.ts +243 -0
  379. package/node_modules/@nklisch/pi-clearance/src/runtime/ratchet-tools/adversarial.ts +437 -0
  380. package/node_modules/@nklisch/pi-clearance/src/runtime/ratchet-tools/analysis.ts +64 -0
  381. package/node_modules/@nklisch/pi-clearance/src/runtime/ratchet-tools/approval-audit.ts +96 -0
  382. package/node_modules/@nklisch/pi-clearance/src/runtime/ratchet-tools/batch-cache.ts +40 -0
  383. package/node_modules/@nklisch/pi-clearance/src/runtime/ratchet-tools/history.ts +496 -0
  384. package/node_modules/@nklisch/pi-clearance/src/runtime/ratchet-tools/ids.ts +13 -0
  385. package/node_modules/@nklisch/pi-clearance/src/runtime/ratchet-tools/index.ts +58 -0
  386. package/node_modules/@nklisch/pi-clearance/src/runtime/ratchet-tools/package-candidates.ts +185 -0
  387. package/node_modules/@nklisch/pi-clearance/src/runtime/ratchet-tools/packs.ts +196 -0
  388. package/node_modules/@nklisch/pi-clearance/src/runtime/ratchet-tools/post-write-replay.ts +179 -0
  389. package/node_modules/@nklisch/pi-clearance/src/runtime/ratchet-tools/presentation.ts +15 -0
  390. package/node_modules/@nklisch/pi-clearance/src/runtime/ratchet-tools/proposals.ts +805 -0
  391. package/node_modules/@nklisch/pi-clearance/src/runtime/ratchet-tools/replay.ts +918 -0
  392. package/node_modules/@nklisch/pi-clearance/src/runtime/ratchet-tools/result.ts +72 -0
  393. package/node_modules/@nklisch/pi-clearance/src/runtime/ratchet-tools/status.ts +173 -0
  394. package/node_modules/@nklisch/pi-clearance/src/runtime/ratchet-tools/types.ts +16 -0
  395. package/node_modules/@nklisch/pi-clearance/src/runtime/ratchet-tools/validation.ts +620 -0
  396. package/node_modules/@nklisch/pi-clearance/src/runtime/review-decision-display.ts +143 -0
  397. package/node_modules/@nklisch/pi-clearance/src/runtime/review-visibility.ts +463 -0
  398. package/node_modules/@nklisch/pi-clearance/src/runtime/reviewer-context-adapter.ts +299 -0
  399. package/node_modules/@nklisch/pi-clearance/src/runtime/reviewer-context.ts +443 -0
  400. package/node_modules/@nklisch/pi-clearance/src/runtime/reviewer-model.ts +141 -0
  401. package/node_modules/@nklisch/pi-clearance/src/runtime/reviewer-prompts.ts +238 -0
  402. package/node_modules/@nklisch/pi-clearance/src/runtime/reviewer-shape-summary.ts +301 -0
  403. package/node_modules/@nklisch/pi-clearance/src/runtime/reviewer.ts +850 -0
  404. package/node_modules/@nklisch/pi-clearance/src/runtime/sink.ts +38 -0
  405. package/node_modules/@nklisch/pi-clearance/src/runtime/token-budget.ts +95 -0
  406. package/node_modules/@nklisch/pi-clearance/src/runtime/transform-contract.ts +259 -0
  407. package/node_modules/@nklisch/pi-clearance/src/skill/clearance-pack-authoring/SKILL.md +51 -0
  408. package/node_modules/@nklisch/pi-clearance/src/skill/clearance-tune/SKILL.md +112 -0
  409. package/node_modules/@nklisch/pi-clearance/src/skill/clearance-tune/apply-writer.ts +413 -0
  410. package/node_modules/@nklisch/pi-clearance/src/skill/clearance-tune/cli.ts +1154 -0
  411. package/node_modules/@nklisch/pi-clearance/src/skill/clearance-tune/presentation.ts +423 -0
  412. package/node_modules/@nklisch/pi-clearance/src/skill/clearance-tune/structured-presentation.ts +106 -0
  413. package/node_modules/@nklisch/pi-clearance/src/skill/clearance-tune/verify.ts +238 -0
  414. package/node_modules/@nklisch/pi-conveniences/README.md +20 -0
  415. package/node_modules/@nklisch/pi-conveniences/extensions/agents-context.test.ts +140 -0
  416. package/node_modules/@nklisch/pi-conveniences/extensions/agents-context.ts +97 -0
  417. package/node_modules/@nklisch/pi-conveniences/extensions/context-window-footer.test.ts +30 -0
  418. package/node_modules/@nklisch/pi-conveniences/extensions/context-window-footer.ts +464 -0
  419. package/node_modules/@nklisch/pi-conveniences/extensions/exit.test.ts +44 -0
  420. package/node_modules/@nklisch/pi-conveniences/extensions/exit.ts +38 -0
  421. package/node_modules/@nklisch/pi-conveniences/extensions/model-list.test.ts +34 -0
  422. package/node_modules/@nklisch/pi-conveniences/extensions/model-list.ts +297 -0
  423. package/node_modules/@nklisch/pi-conveniences/package.json +48 -0
  424. package/node_modules/@nklisch/pi-fff-compat/README.md +41 -0
  425. package/node_modules/@nklisch/pi-fff-compat/extensions/fff-compat-search.test.ts +76 -0
  426. package/node_modules/@nklisch/pi-fff-compat/extensions/fff-compat-search.ts +641 -0
  427. package/node_modules/@nklisch/pi-fff-compat/package.json +51 -0
  428. package/node_modules/@nklisch/pi-model-modes/LICENSE +21 -0
  429. package/node_modules/@nklisch/pi-model-modes/README.md +259 -0
  430. package/node_modules/@nklisch/pi-model-modes/extensions/index.ts +62 -0
  431. package/node_modules/@nklisch/pi-model-modes/package.json +59 -0
  432. package/node_modules/@nklisch/pi-model-modes/presets.json +93 -0
  433. package/node_modules/@nklisch/pi-model-modes/prompts/axis/agency/autonomous.md +17 -0
  434. package/node_modules/@nklisch/pi-model-modes/prompts/axis/agency/collaborative.md +16 -0
  435. package/node_modules/@nklisch/pi-model-modes/prompts/axis/agency/partner.md +22 -0
  436. package/node_modules/@nklisch/pi-model-modes/prompts/axis/agency/surgical.md +14 -0
  437. package/node_modules/@nklisch/pi-model-modes/prompts/axis/quality/architect.md +8 -0
  438. package/node_modules/@nklisch/pi-model-modes/prompts/axis/quality/minimal.md +8 -0
  439. package/node_modules/@nklisch/pi-model-modes/prompts/axis/quality/pragmatic.md +8 -0
  440. package/node_modules/@nklisch/pi-model-modes/prompts/axis/scope/adjacent.md +15 -0
  441. package/node_modules/@nklisch/pi-model-modes/prompts/axis/scope/narrow.md +15 -0
  442. package/node_modules/@nklisch/pi-model-modes/prompts/axis/scope/unrestricted.md +14 -0
  443. package/node_modules/@nklisch/pi-model-modes/prompts/base/chill.md +6 -0
  444. package/node_modules/@nklisch/pi-model-modes/prompts/base/flow.md +7 -0
  445. package/node_modules/@nklisch/pi-model-modes/prompts/base/pi-direct.md +4 -0
  446. package/node_modules/@nklisch/pi-model-modes/prompts/base.json +3 -0
  447. package/node_modules/@nklisch/pi-model-modes/prompts/modifiers/bold.md +8 -0
  448. package/node_modules/@nklisch/pi-model-modes/prompts/modifiers/context-pacing.md +13 -0
  449. package/node_modules/@nklisch/pi-model-modes/prompts/modifiers/debug.md +11 -0
  450. package/node_modules/@nklisch/pi-model-modes/prompts/modifiers/director.md +14 -0
  451. package/node_modules/@nklisch/pi-model-modes/prompts/modifiers/flow.md +10 -0
  452. package/node_modules/@nklisch/pi-model-modes/prompts/modifiers/methodical.md +9 -0
  453. package/node_modules/@nklisch/pi-model-modes/prompts/modifiers/muse.md +13 -0
  454. package/node_modules/@nklisch/pi-model-modes/prompts/modifiers/playful.md +11 -0
  455. package/node_modules/@nklisch/pi-model-modes/prompts/modifiers/readonly.md +9 -0
  456. package/node_modules/@nklisch/pi-model-modes/prompts/modifiers/speak-plain.md +14 -0
  457. package/node_modules/@nklisch/pi-model-modes/prompts/modifiers/tdd.md +10 -0
  458. package/node_modules/@nklisch/pi-model-modes/prompts/styles/clear.md +3 -0
  459. package/node_modules/@nklisch/pi-model-modes/prompts/styles/compact.md +3 -0
  460. package/node_modules/@nklisch/pi-model-modes/prompts/styles/explanatory.md +3 -0
  461. package/node_modules/@nklisch/pi-model-modes/prompts/styles/expressive.md +3 -0
  462. package/node_modules/@nklisch/pi-model-modes/src/assemble.ts +41 -0
  463. package/node_modules/@nklisch/pi-model-modes/src/autocomplete.ts +167 -0
  464. package/node_modules/@nklisch/pi-model-modes/src/cache.ts +244 -0
  465. package/node_modules/@nklisch/pi-model-modes/src/command-parse-utils.ts +73 -0
  466. package/node_modules/@nklisch/pi-model-modes/src/commands.ts +629 -0
  467. package/node_modules/@nklisch/pi-model-modes/src/config.ts +661 -0
  468. package/node_modules/@nklisch/pi-model-modes/src/footer.ts +200 -0
  469. package/node_modules/@nklisch/pi-model-modes/src/fragments.ts +178 -0
  470. package/node_modules/@nklisch/pi-model-modes/src/handler.ts +113 -0
  471. package/node_modules/@nklisch/pi-model-modes/src/identity.ts +16 -0
  472. package/node_modules/@nklisch/pi-model-modes/src/keybinding.ts +117 -0
  473. package/node_modules/@nklisch/pi-model-modes/src/presets.ts +319 -0
  474. package/node_modules/@nklisch/pi-model-modes/src/provider-names.ts +92 -0
  475. package/node_modules/@nklisch/pi-model-modes/src/resolver.ts +332 -0
  476. package/node_modules/@nklisch/pi-model-modes/src/style-autocomplete.ts +106 -0
  477. package/node_modules/@nklisch/pi-model-modes/src/style-command.ts +239 -0
  478. package/node_modules/@nklisch/pi-model-modes/src/style.ts +252 -0
  479. package/node_modules/@nklisch/pi-plugins/LICENSE +21 -0
  480. package/node_modules/@nklisch/pi-plugins/README.md +70 -0
  481. package/node_modules/@nklisch/pi-plugins/dist/application/abort-rejection.d.ts +1 -0
  482. package/node_modules/@nklisch/pi-plugins/dist/application/abort-rejection.js +7 -0
  483. package/node_modules/@nklisch/pi-plugins/dist/application/abort-rejection.js.map +1 -0
  484. package/node_modules/@nklisch/pi-plugins/dist/application/adoption-contract.d.ts +1531 -0
  485. package/node_modules/@nklisch/pi-plugins/dist/application/adoption-contract.js +135 -0
  486. package/node_modules/@nklisch/pi-plugins/dist/application/adoption-contract.js.map +1 -0
  487. package/node_modules/@nklisch/pi-plugins/dist/application/adoption-service.d.ts +25 -0
  488. package/node_modules/@nklisch/pi-plugins/dist/application/adoption-service.js +234 -0
  489. package/node_modules/@nklisch/pi-plugins/dist/application/adoption-service.js.map +1 -0
  490. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-authorization.d.ts +49 -0
  491. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-authorization.js +93 -0
  492. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-authorization.js.map +1 -0
  493. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-coordinator.d.ts +30 -0
  494. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-coordinator.js +240 -0
  495. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-coordinator.js.map +1 -0
  496. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-eligibility.d.ts +46 -0
  497. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-eligibility.js +25 -0
  498. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-eligibility.js.map +1 -0
  499. package/node_modules/@nklisch/pi-plugins/dist/application/bundle-reconciler.d.ts +49 -0
  500. package/node_modules/@nklisch/pi-plugins/dist/application/bundle-reconciler.js +603 -0
  501. package/node_modules/@nklisch/pi-plugins/dist/application/bundle-reconciler.js.map +1 -0
  502. package/node_modules/@nklisch/pi-plugins/dist/application/compatibility-service.d.ts +12 -0
  503. package/node_modules/@nklisch/pi-plugins/dist/application/compatibility-service.js +79 -0
  504. package/node_modules/@nklisch/pi-plugins/dist/application/compatibility-service.js.map +1 -0
  505. package/node_modules/@nklisch/pi-plugins/dist/application/configuration-resolver.d.ts +48 -0
  506. package/node_modules/@nklisch/pi-plugins/dist/application/configuration-resolver.js +293 -0
  507. package/node_modules/@nklisch/pi-plugins/dist/application/configuration-resolver.js.map +1 -0
  508. package/node_modules/@nklisch/pi-plugins/dist/application/configuration-service.d.ts +113 -0
  509. package/node_modules/@nklisch/pi-plugins/dist/application/configuration-service.js +492 -0
  510. package/node_modules/@nklisch/pi-plugins/dist/application/configuration-service.js.map +1 -0
  511. package/node_modules/@nklisch/pi-plugins/dist/application/configuration-validation.d.ts +75 -0
  512. package/node_modules/@nklisch/pi-plugins/dist/application/configuration-validation.js +505 -0
  513. package/node_modules/@nklisch/pi-plugins/dist/application/configuration-validation.js.map +1 -0
  514. package/node_modules/@nklisch/pi-plugins/dist/application/confirmed-uninstall-cleanup.d.ts +49 -0
  515. package/node_modules/@nklisch/pi-plugins/dist/application/confirmed-uninstall-cleanup.js +52 -0
  516. package/node_modules/@nklisch/pi-plugins/dist/application/confirmed-uninstall-cleanup.js.map +1 -0
  517. package/node_modules/@nklisch/pi-plugins/dist/application/content-index.d.ts +22 -0
  518. package/node_modules/@nklisch/pi-plugins/dist/application/content-index.js +87 -0
  519. package/node_modules/@nklisch/pi-plugins/dist/application/content-index.js.map +1 -0
  520. package/node_modules/@nklisch/pi-plugins/dist/application/content-promotion.d.ts +24 -0
  521. package/node_modules/@nklisch/pi-plugins/dist/application/content-promotion.js +131 -0
  522. package/node_modules/@nklisch/pi-plugins/dist/application/content-promotion.js.map +1 -0
  523. package/node_modules/@nklisch/pi-plugins/dist/application/current-scope-authority.d.ts +24 -0
  524. package/node_modules/@nklisch/pi-plugins/dist/application/current-scope-authority.js +51 -0
  525. package/node_modules/@nklisch/pi-plugins/dist/application/current-scope-authority.js.map +1 -0
  526. package/node_modules/@nklisch/pi-plugins/dist/application/discovery-plan.d.ts +162 -0
  527. package/node_modules/@nklisch/pi-plugins/dist/application/discovery-plan.js +353 -0
  528. package/node_modules/@nklisch/pi-plugins/dist/application/discovery-plan.js.map +1 -0
  529. package/node_modules/@nklisch/pi-plugins/dist/application/exact-trust-grant-service.d.ts +41 -0
  530. package/node_modules/@nklisch/pi-plugins/dist/application/exact-trust-grant-service.js +146 -0
  531. package/node_modules/@nklisch/pi-plugins/dist/application/exact-trust-grant-service.js.map +1 -0
  532. package/node_modules/@nklisch/pi-plugins/dist/application/generation-mutation-coordinator.d.ts +79 -0
  533. package/node_modules/@nklisch/pi-plugins/dist/application/generation-mutation-coordinator.js +424 -0
  534. package/node_modules/@nklisch/pi-plugins/dist/application/generation-mutation-coordinator.js.map +1 -0
  535. package/node_modules/@nklisch/pi-plugins/dist/application/hook-execution-context.d.ts +2 -0
  536. package/node_modules/@nklisch/pi-plugins/dist/application/hook-execution-context.js +149 -0
  537. package/node_modules/@nklisch/pi-plugins/dist/application/hook-execution-context.js.map +1 -0
  538. package/node_modules/@nklisch/pi-plugins/dist/application/host-observation-contract.d.ts +177 -0
  539. package/node_modules/@nklisch/pi-plugins/dist/application/host-observation-contract.js +45 -0
  540. package/node_modules/@nklisch/pi-plugins/dist/application/host-observation-contract.js.map +1 -0
  541. package/node_modules/@nklisch/pi-plugins/dist/application/host-precedence-contract.d.ts +50 -0
  542. package/node_modules/@nklisch/pi-plugins/dist/application/host-precedence-contract.js +28 -0
  543. package/node_modules/@nklisch/pi-plugins/dist/application/host-precedence-contract.js.map +1 -0
  544. package/node_modules/@nklisch/pi-plugins/dist/application/host-precedence-service.d.ts +27 -0
  545. package/node_modules/@nklisch/pi-plugins/dist/application/host-precedence-service.js +72 -0
  546. package/node_modules/@nklisch/pi-plugins/dist/application/host-precedence-service.js.map +1 -0
  547. package/node_modules/@nklisch/pi-plugins/dist/application/inspection-contract.d.ts +1289 -0
  548. package/node_modules/@nklisch/pi-plugins/dist/application/inspection-contract.js +56 -0
  549. package/node_modules/@nklisch/pi-plugins/dist/application/inspection-contract.js.map +1 -0
  550. package/node_modules/@nklisch/pi-plugins/dist/application/inspection-failure-projection.d.ts +26 -0
  551. package/node_modules/@nklisch/pi-plugins/dist/application/inspection-failure-projection.js +137 -0
  552. package/node_modules/@nklisch/pi-plugins/dist/application/inspection-failure-projection.js.map +1 -0
  553. package/node_modules/@nklisch/pi-plugins/dist/application/inspection-service.d.ts +22 -0
  554. package/node_modules/@nklisch/pi-plugins/dist/application/inspection-service.js +754 -0
  555. package/node_modules/@nklisch/pi-plugins/dist/application/inspection-service.js.map +1 -0
  556. package/node_modules/@nklisch/pi-plugins/dist/application/installed-revision-descriptor.d.ts +972 -0
  557. package/node_modules/@nklisch/pi-plugins/dist/application/installed-revision-descriptor.js +51 -0
  558. package/node_modules/@nklisch/pi-plugins/dist/application/installed-revision-descriptor.js.map +1 -0
  559. package/node_modules/@nklisch/pi-plugins/dist/application/keyed-mutation-scheduler.d.ts +19 -0
  560. package/node_modules/@nklisch/pi-plugins/dist/application/keyed-mutation-scheduler.js +235 -0
  561. package/node_modules/@nklisch/pi-plugins/dist/application/keyed-mutation-scheduler.js.map +1 -0
  562. package/node_modules/@nklisch/pi-plugins/dist/application/lifecycle-transition-reconciler.d.ts +76 -0
  563. package/node_modules/@nklisch/pi-plugins/dist/application/lifecycle-transition-reconciler.js +236 -0
  564. package/node_modules/@nklisch/pi-plugins/dist/application/lifecycle-transition-reconciler.js.map +1 -0
  565. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-catalog-contract.d.ts +568 -0
  566. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-catalog-contract.js +91 -0
  567. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-catalog-contract.js.map +1 -0
  568. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-catalog-service.d.ts +55 -0
  569. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-catalog-service.js +327 -0
  570. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-catalog-service.js.map +1 -0
  571. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-inspection-contract.d.ts +575 -0
  572. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-inspection-contract.js +7 -0
  573. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-inspection-contract.js.map +1 -0
  574. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-inspection-service.d.ts +13 -0
  575. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-inspection-service.js +105 -0
  576. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-inspection-service.js.map +1 -0
  577. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-management-contract.d.ts +844 -0
  578. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-management-contract.js +106 -0
  579. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-management-contract.js.map +1 -0
  580. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-plugin-probe.d.ts +16 -0
  581. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-plugin-probe.js +102 -0
  582. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-plugin-probe.js.map +1 -0
  583. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-refresh-service.d.ts +92 -0
  584. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-refresh-service.js +573 -0
  585. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-refresh-service.js.map +1 -0
  586. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-registration-service.d.ts +31 -0
  587. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-registration-service.js +363 -0
  588. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-registration-service.js.map +1 -0
  589. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-search.d.ts +44 -0
  590. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-search.js +105 -0
  591. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-search.js.map +1 -0
  592. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-state.d.ts +17 -0
  593. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-state.js +82 -0
  594. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-state.js.map +1 -0
  595. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-update-policy-service.d.ts +39 -0
  596. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-update-policy-service.js +59 -0
  597. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-update-policy-service.js.map +1 -0
  598. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-update-scheduler.d.ts +30 -0
  599. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-update-scheduler.js +229 -0
  600. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-update-scheduler.js.map +1 -0
  601. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-update-state.d.ts +16 -0
  602. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-update-state.js +104 -0
  603. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-update-state.js.map +1 -0
  604. package/node_modules/@nklisch/pi-plugins/dist/application/mcp-launch-context.d.ts +8 -0
  605. package/node_modules/@nklisch/pi-plugins/dist/application/mcp-launch-context.js +255 -0
  606. package/node_modules/@nklisch/pi-plugins/dist/application/mcp-launch-context.js.map +1 -0
  607. package/node_modules/@nklisch/pi-plugins/dist/application/mcp-plugin-projection.d.ts +207 -0
  608. package/node_modules/@nklisch/pi-plugins/dist/application/mcp-plugin-projection.js +342 -0
  609. package/node_modules/@nklisch/pi-plugins/dist/application/mcp-plugin-projection.js.map +1 -0
  610. package/node_modules/@nklisch/pi-plugins/dist/application/mcp-runtime-capability-probe.d.ts +12 -0
  611. package/node_modules/@nklisch/pi-plugins/dist/application/mcp-runtime-capability-probe.js +121 -0
  612. package/node_modules/@nklisch/pi-plugins/dist/application/mcp-runtime-capability-probe.js.map +1 -0
  613. package/node_modules/@nklisch/pi-plugins/dist/application/mcp-source-registration.d.ts +11 -0
  614. package/node_modules/@nklisch/pi-plugins/dist/application/mcp-source-registration.js +54 -0
  615. package/node_modules/@nklisch/pi-plugins/dist/application/mcp-source-registration.js.map +1 -0
  616. package/node_modules/@nklisch/pi-plugins/dist/application/mcp-tool-aliases.d.ts +39 -0
  617. package/node_modules/@nklisch/pi-plugins/dist/application/mcp-tool-aliases.js +96 -0
  618. package/node_modules/@nklisch/pi-plugins/dist/application/mcp-tool-aliases.js.map +1 -0
  619. package/node_modules/@nklisch/pi-plugins/dist/application/mutation-coordination.d.ts +19 -0
  620. package/node_modules/@nklisch/pi-plugins/dist/application/mutation-coordination.js +12 -0
  621. package/node_modules/@nklisch/pi-plugins/dist/application/mutation-coordination.js.map +1 -0
  622. package/node_modules/@nklisch/pi-plugins/dist/application/native-candidate-inspection.d.ts +21 -0
  623. package/node_modules/@nklisch/pi-plugins/dist/application/native-candidate-inspection.js +271 -0
  624. package/node_modules/@nklisch/pi-plugins/dist/application/native-candidate-inspection.js.map +1 -0
  625. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-contract.d.ts +226 -0
  626. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-contract.js +140 -0
  627. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-contract.js.map +1 -0
  628. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-dispatcher.d.ts +30 -0
  629. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-dispatcher.js +63 -0
  630. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-dispatcher.js.map +1 -0
  631. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-error.d.ts +7 -0
  632. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-error.js +35 -0
  633. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-error.js.map +1 -0
  634. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-execution.d.ts +20 -0
  635. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-execution.js +83 -0
  636. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-execution.js.map +1 -0
  637. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-help.d.ts +257 -0
  638. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-help.js +102 -0
  639. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-help.js.map +1 -0
  640. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-human.d.ts +10 -0
  641. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-human.js +14 -0
  642. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-human.js.map +1 -0
  643. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-input.d.ts +14 -0
  644. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-input.js +85 -0
  645. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-input.js.map +1 -0
  646. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-install.d.ts +17 -0
  647. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-install.js +36 -0
  648. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-install.js.map +1 -0
  649. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-lexer.d.ts +37 -0
  650. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-lexer.js +113 -0
  651. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-lexer.js.map +1 -0
  652. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-lifecycle.d.ts +20 -0
  653. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-lifecycle.js +69 -0
  654. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-lifecycle.js.map +1 -0
  655. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-mutation-dispatch.d.ts +9 -0
  656. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-mutation-dispatch.js +232 -0
  657. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-mutation-dispatch.js.map +1 -0
  658. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-operation.d.ts +4165 -0
  659. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-operation.js +31 -0
  660. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-operation.js.map +1 -0
  661. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-parser.d.ts +191 -0
  662. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-parser.js +337 -0
  663. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-parser.js.map +1 -0
  664. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-progress.d.ts +203 -0
  665. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-progress.js +107 -0
  666. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-progress.js.map +1 -0
  667. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-projection.d.ts +33 -0
  668. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-projection.js +53 -0
  669. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-projection.js.map +1 -0
  670. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-read-dispatch.d.ts +40 -0
  671. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-read-dispatch.js +158 -0
  672. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-read-dispatch.js.map +1 -0
  673. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-redaction.d.ts +8 -0
  674. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-redaction.js +66 -0
  675. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-redaction.js.map +1 -0
  676. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-registry.d.ts +899 -0
  677. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-registry.js +236 -0
  678. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-registry.js.map +1 -0
  679. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-result.d.ts +8 -0
  680. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-result.js +31 -0
  681. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-result.js.map +1 -0
  682. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-safe-projection.d.ts +1622 -0
  683. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-safe-projection.js +248 -0
  684. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-safe-projection.js.map +1 -0
  685. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-scalar.d.ts +3 -0
  686. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-scalar.js +19 -0
  687. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-scalar.js.map +1 -0
  688. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-selection.d.ts +102 -0
  689. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-selection.js +150 -0
  690. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-selection.js.map +1 -0
  691. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-service.d.ts +35 -0
  692. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-service.js +92 -0
  693. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-service.js.map +1 -0
  694. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-update-policy.d.ts +10 -0
  695. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-update-policy.js +43 -0
  696. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-update-policy.js.map +1 -0
  697. package/node_modules/@nklisch/pi-plugins/dist/application/native-diagnostic-compiler.d.ts +23 -0
  698. package/node_modules/@nklisch/pi-plugins/dist/application/native-diagnostic-compiler.js +96 -0
  699. package/node_modules/@nklisch/pi-plugins/dist/application/native-diagnostic-compiler.js.map +1 -0
  700. package/node_modules/@nklisch/pi-plugins/dist/application/native-diagnostic-registry.d.ts +556 -0
  701. package/node_modules/@nklisch/pi-plugins/dist/application/native-diagnostic-registry.js +63 -0
  702. package/node_modules/@nklisch/pi-plugins/dist/application/native-diagnostic-registry.js.map +1 -0
  703. package/node_modules/@nklisch/pi-plugins/dist/application/native-failure-presenter.d.ts +14 -0
  704. package/node_modules/@nklisch/pi-plugins/dist/application/native-failure-presenter.js +152 -0
  705. package/node_modules/@nklisch/pi-plugins/dist/application/native-failure-presenter.js.map +1 -0
  706. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-contract.d.ts +3720 -0
  707. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-contract.js +281 -0
  708. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-contract.js.map +1 -0
  709. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-disclosure.d.ts +37 -0
  710. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-disclosure.js +260 -0
  711. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-disclosure.js.map +1 -0
  712. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-display-safety.d.ts +3 -0
  713. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-display-safety.js +36 -0
  714. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-display-safety.js.map +1 -0
  715. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-display.d.ts +18 -0
  716. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-display.js +73 -0
  717. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-display.js.map +1 -0
  718. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-identifiers.d.ts +87 -0
  719. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-identifiers.js +125 -0
  720. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-identifiers.js.map +1 -0
  721. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-service.d.ts +29 -0
  722. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-service.js +424 -0
  723. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-service.js.map +1 -0
  724. package/node_modules/@nklisch/pi-plugins/dist/application/native-installed-inspection.d.ts +15 -0
  725. package/node_modules/@nklisch/pi-plugins/dist/application/native-installed-inspection.js +428 -0
  726. package/node_modules/@nklisch/pi-plugins/dist/application/native-installed-inspection.js.map +1 -0
  727. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-contract.d.ts +9585 -0
  728. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-contract.js +295 -0
  729. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-contract.js.map +1 -0
  730. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-identifiers.d.ts +12 -0
  731. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-identifiers.js +55 -0
  732. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-identifiers.js.map +1 -0
  733. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-service.d.ts +26 -0
  734. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-service.js +390 -0
  735. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-service.js.map +1 -0
  736. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-session.d.ts +53 -0
  737. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-session.js +101 -0
  738. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-session.js.map +1 -0
  739. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation.d.ts +792 -0
  740. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation.js +323 -0
  741. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation.js.map +1 -0
  742. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-progress.d.ts +15 -0
  743. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-progress.js +31 -0
  744. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-progress.js.map +1 -0
  745. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-result.d.ts +21 -0
  746. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-result.js +84 -0
  747. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-result.js.map +1 -0
  748. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-target.d.ts +30 -0
  749. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-target.js +118 -0
  750. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-target.js.map +1 -0
  751. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-update.d.ts +93 -0
  752. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-update.js +103 -0
  753. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-update.js.map +1 -0
  754. package/node_modules/@nklisch/pi-plugins/dist/application/native-uninstall-cleanup.d.ts +25 -0
  755. package/node_modules/@nklisch/pi-plugins/dist/application/native-uninstall-cleanup.js +39 -0
  756. package/node_modules/@nklisch/pi-plugins/dist/application/native-uninstall-cleanup.js.map +1 -0
  757. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-contract.d.ts +644 -0
  758. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-contract.js +118 -0
  759. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-contract.js.map +1 -0
  760. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-identifiers.d.ts +9 -0
  761. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-identifiers.js +21 -0
  762. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-identifiers.js.map +1 -0
  763. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-management-service.d.ts +24 -0
  764. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-management-service.js +33 -0
  765. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-management-service.js.map +1 -0
  766. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-policy-service.d.ts +32 -0
  767. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-policy-service.js +402 -0
  768. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-policy-service.js.map +1 -0
  769. package/node_modules/@nklisch/pi-plugins/dist/application/plugin-candidate-preparation.d.ts +134 -0
  770. package/node_modules/@nklisch/pi-plugins/dist/application/plugin-candidate-preparation.js +392 -0
  771. package/node_modules/@nklisch/pi-plugins/dist/application/plugin-candidate-preparation.js.map +1 -0
  772. package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-contract.d.ts +290 -0
  773. package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-contract.js +96 -0
  774. package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-contract.js.map +1 -0
  775. package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-service.d.ts +176 -0
  776. package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-service.js +707 -0
  777. package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-service.js.map +1 -0
  778. package/node_modules/@nklisch/pi-plugins/dist/application/ports/automatic-update-lifecycle.d.ts +30 -0
  779. package/node_modules/@nklisch/pi-plugins/dist/application/ports/automatic-update-lifecycle.js +2 -0
  780. package/node_modules/@nklisch/pi-plugins/dist/application/ports/automatic-update-lifecycle.js.map +1 -0
  781. package/node_modules/@nklisch/pi-plugins/dist/application/ports/bundle-readers.d.ts +53 -0
  782. package/node_modules/@nklisch/pi-plugins/dist/application/ports/bundle-readers.js +2 -0
  783. package/node_modules/@nklisch/pi-plugins/dist/application/ports/bundle-readers.js.map +1 -0
  784. package/node_modules/@nklisch/pi-plugins/dist/application/ports/candidate-content-lease.d.ts +42 -0
  785. package/node_modules/@nklisch/pi-plugins/dist/application/ports/candidate-content-lease.js +13 -0
  786. package/node_modules/@nklisch/pi-plugins/dist/application/ports/candidate-content-lease.js.map +1 -0
  787. package/node_modules/@nklisch/pi-plugins/dist/application/ports/configuration-path.d.ts +31 -0
  788. package/node_modules/@nklisch/pi-plugins/dist/application/ports/configuration-path.js +7 -0
  789. package/node_modules/@nklisch/pi-plugins/dist/application/ports/configuration-path.js.map +1 -0
  790. package/node_modules/@nklisch/pi-plugins/dist/application/ports/configuration-write-id.d.ts +5 -0
  791. package/node_modules/@nklisch/pi-plugins/dist/application/ports/configuration-write-id.js +2 -0
  792. package/node_modules/@nklisch/pi-plugins/dist/application/ports/configuration-write-id.js.map +1 -0
  793. package/node_modules/@nklisch/pi-plugins/dist/application/ports/content-read.d.ts +19 -0
  794. package/node_modules/@nklisch/pi-plugins/dist/application/ports/content-read.js +2 -0
  795. package/node_modules/@nklisch/pi-plugins/dist/application/ports/content-read.js.map +1 -0
  796. package/node_modules/@nklisch/pi-plugins/dist/application/ports/content-store-platform.d.ts +11 -0
  797. package/node_modules/@nklisch/pi-plugins/dist/application/ports/content-store-platform.js +2 -0
  798. package/node_modules/@nklisch/pi-plugins/dist/application/ports/content-store-platform.js.map +1 -0
  799. package/node_modules/@nklisch/pi-plugins/dist/application/ports/content-store.d.ts +103 -0
  800. package/node_modules/@nklisch/pi-plugins/dist/application/ports/content-store.js +2 -0
  801. package/node_modules/@nklisch/pi-plugins/dist/application/ports/content-store.js.map +1 -0
  802. package/node_modules/@nklisch/pi-plugins/dist/application/ports/foreign-state-files.d.ts +5 -0
  803. package/node_modules/@nklisch/pi-plugins/dist/application/ports/foreign-state-files.js +2 -0
  804. package/node_modules/@nklisch/pi-plugins/dist/application/ports/foreign-state-files.js.map +1 -0
  805. package/node_modules/@nklisch/pi-plugins/dist/application/ports/hook-executable-resolver.d.ts +16 -0
  806. package/node_modules/@nklisch/pi-plugins/dist/application/ports/hook-executable-resolver.js +2 -0
  807. package/node_modules/@nklisch/pi-plugins/dist/application/ports/hook-executable-resolver.js.map +1 -0
  808. package/node_modules/@nklisch/pi-plugins/dist/application/ports/hook-execution-context.d.ts +58 -0
  809. package/node_modules/@nklisch/pi-plugins/dist/application/ports/hook-execution-context.js +9 -0
  810. package/node_modules/@nklisch/pi-plugins/dist/application/ports/hook-execution-context.js.map +1 -0
  811. package/node_modules/@nklisch/pi-plugins/dist/application/ports/inspection-readiness.d.ts +18 -0
  812. package/node_modules/@nklisch/pi-plugins/dist/application/ports/inspection-readiness.js +2 -0
  813. package/node_modules/@nklisch/pi-plugins/dist/application/ports/inspection-readiness.js.map +1 -0
  814. package/node_modules/@nklisch/pi-plugins/dist/application/ports/installed-plugin-loader.d.ts +1056 -0
  815. package/node_modules/@nklisch/pi-plugins/dist/application/ports/installed-plugin-loader.js +29 -0
  816. package/node_modules/@nklisch/pi-plugins/dist/application/ports/installed-plugin-loader.js.map +1 -0
  817. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-clock.d.ts +8 -0
  818. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-clock.js +3 -0
  819. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-clock.js.map +1 -0
  820. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-operation-id.d.ts +8 -0
  821. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-operation-id.js +7 -0
  822. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-operation-id.js.map +1 -0
  823. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-reload.d.ts +367 -0
  824. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-reload.js +207 -0
  825. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-reload.js.map +1 -0
  826. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-state-inventory.d.ts +26 -0
  827. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-state-inventory.js +7 -0
  828. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-state-inventory.js.map +1 -0
  829. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-state-store.d.ts +16 -0
  830. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-state-store.js +2 -0
  831. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-state-store.js.map +1 -0
  832. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-transition-store.d.ts +5008 -0
  833. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-transition-store.js +129 -0
  834. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-transition-store.js.map +1 -0
  835. package/node_modules/@nklisch/pi-plugins/dist/application/ports/marketplace-registration.d.ts +15 -0
  836. package/node_modules/@nklisch/pi-plugins/dist/application/ports/marketplace-registration.js +2 -0
  837. package/node_modules/@nklisch/pi-plugins/dist/application/ports/marketplace-registration.js.map +1 -0
  838. package/node_modules/@nklisch/pi-plugins/dist/application/ports/mcp-launch-context.d.ts +97 -0
  839. package/node_modules/@nklisch/pi-plugins/dist/application/ports/mcp-launch-context.js +30 -0
  840. package/node_modules/@nklisch/pi-plugins/dist/application/ports/mcp-launch-context.js.map +1 -0
  841. package/node_modules/@nklisch/pi-plugins/dist/application/ports/mcp-launch-environment.d.ts +11 -0
  842. package/node_modules/@nklisch/pi-plugins/dist/application/ports/mcp-launch-environment.js +2 -0
  843. package/node_modules/@nklisch/pi-plugins/dist/application/ports/mcp-launch-environment.js.map +1 -0
  844. package/node_modules/@nklisch/pi-plugins/dist/application/ports/mcp-runtime.d.ts +1387 -0
  845. package/node_modules/@nklisch/pi-plugins/dist/application/ports/mcp-runtime.js +399 -0
  846. package/node_modules/@nklisch/pi-plugins/dist/application/ports/mcp-runtime.js.map +1 -0
  847. package/node_modules/@nklisch/pi-plugins/dist/application/ports/mutation-execution-context.d.ts +9 -0
  848. package/node_modules/@nklisch/pi-plugins/dist/application/ports/mutation-execution-context.js +2 -0
  849. package/node_modules/@nklisch/pi-plugins/dist/application/ports/mutation-execution-context.js.map +1 -0
  850. package/node_modules/@nklisch/pi-plugins/dist/application/ports/native-control-applications.d.ts +42 -0
  851. package/node_modules/@nklisch/pi-plugins/dist/application/ports/native-control-applications.js +2 -0
  852. package/node_modules/@nklisch/pi-plugins/dist/application/ports/native-control-applications.js.map +1 -0
  853. package/node_modules/@nklisch/pi-plugins/dist/application/ports/native-control-execution.d.ts +31 -0
  854. package/node_modules/@nklisch/pi-plugins/dist/application/ports/native-control-execution.js +2 -0
  855. package/node_modules/@nklisch/pi-plugins/dist/application/ports/native-control-execution.js.map +1 -0
  856. package/node_modules/@nklisch/pi-plugins/dist/application/ports/native-control-input.d.ts +66 -0
  857. package/node_modules/@nklisch/pi-plugins/dist/application/ports/native-control-input.js +2 -0
  858. package/node_modules/@nklisch/pi-plugins/dist/application/ports/native-control-input.js.map +1 -0
  859. package/node_modules/@nklisch/pi-plugins/dist/application/ports/native-inspection-evidence.d.ts +104 -0
  860. package/node_modules/@nklisch/pi-plugins/dist/application/ports/native-inspection-evidence.js +2 -0
  861. package/node_modules/@nklisch/pi-plugins/dist/application/ports/native-inspection-evidence.js.map +1 -0
  862. package/node_modules/@nklisch/pi-plugins/dist/application/ports/persistent-data-removal.d.ts +22 -0
  863. package/node_modules/@nklisch/pi-plugins/dist/application/ports/persistent-data-removal.js +12 -0
  864. package/node_modules/@nklisch/pi-plugins/dist/application/ports/persistent-data-removal.js.map +1 -0
  865. package/node_modules/@nklisch/pi-plugins/dist/application/ports/plugin-configuration-store.d.ts +99 -0
  866. package/node_modules/@nklisch/pi-plugins/dist/application/ports/plugin-configuration-store.js +13 -0
  867. package/node_modules/@nklisch/pi-plugins/dist/application/ports/plugin-configuration-store.js.map +1 -0
  868. package/node_modules/@nklisch/pi-plugins/dist/application/ports/process-runner.d.ts +35 -0
  869. package/node_modules/@nklisch/pi-plugins/dist/application/ports/process-runner.js +2 -0
  870. package/node_modules/@nklisch/pi-plugins/dist/application/ports/process-runner.js.map +1 -0
  871. package/node_modules/@nklisch/pi-plugins/dist/application/ports/project-intent-file.d.ts +46 -0
  872. package/node_modules/@nklisch/pi-plugins/dist/application/ports/project-intent-file.js +2 -0
  873. package/node_modules/@nklisch/pi-plugins/dist/application/ports/project-intent-file.js.map +1 -0
  874. package/node_modules/@nklisch/pi-plugins/dist/application/ports/project-intent-write-id.d.ts +6 -0
  875. package/node_modules/@nklisch/pi-plugins/dist/application/ports/project-intent-write-id.js +5 -0
  876. package/node_modules/@nklisch/pi-plugins/dist/application/ports/project-intent-write-id.js.map +1 -0
  877. package/node_modules/@nklisch/pi-plugins/dist/application/ports/project-root-authority.d.ts +37 -0
  878. package/node_modules/@nklisch/pi-plugins/dist/application/ports/project-root-authority.js +2 -0
  879. package/node_modules/@nklisch/pi-plugins/dist/application/ports/project-root-authority.js.map +1 -0
  880. package/node_modules/@nklisch/pi-plugins/dist/application/ports/project-trust.d.ts +33 -0
  881. package/node_modules/@nklisch/pi-plugins/dist/application/ports/project-trust.js +12 -0
  882. package/node_modules/@nklisch/pi-plugins/dist/application/ports/project-trust.js.map +1 -0
  883. package/node_modules/@nklisch/pi-plugins/dist/application/ports/recovery-artifacts.d.ts +29 -0
  884. package/node_modules/@nklisch/pi-plugins/dist/application/ports/recovery-artifacts.js +4 -0
  885. package/node_modules/@nklisch/pi-plugins/dist/application/ports/recovery-artifacts.js.map +1 -0
  886. package/node_modules/@nklisch/pi-plugins/dist/application/ports/refresh-claim-id.d.ts +6 -0
  887. package/node_modules/@nklisch/pi-plugins/dist/application/ports/refresh-claim-id.js +3 -0
  888. package/node_modules/@nklisch/pi-plugins/dist/application/ports/refresh-claim-id.js.map +1 -0
  889. package/node_modules/@nklisch/pi-plugins/dist/application/ports/refresh-claim-owner.d.ts +8 -0
  890. package/node_modules/@nklisch/pi-plugins/dist/application/ports/refresh-claim-owner.js +2 -0
  891. package/node_modules/@nklisch/pi-plugins/dist/application/ports/refresh-claim-owner.js.map +1 -0
  892. package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-artifact-store.d.ts +37 -0
  893. package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-artifact-store.js +10 -0
  894. package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-artifact-store.js.map +1 -0
  895. package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-lease-store.d.ts +65 -0
  896. package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-lease-store.js +16 -0
  897. package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-lease-store.js.map +1 -0
  898. package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-retention-store.d.ts +43 -0
  899. package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-retention-store.js +12 -0
  900. package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-retention-store.js.map +1 -0
  901. package/node_modules/@nklisch/pi-plugins/dist/application/ports/runtime-capability-probe.d.ts +8 -0
  902. package/node_modules/@nklisch/pi-plugins/dist/application/ports/runtime-capability-probe.js +2 -0
  903. package/node_modules/@nklisch/pi-plugins/dist/application/ports/runtime-capability-probe.js.map +1 -0
  904. package/node_modules/@nklisch/pi-plugins/dist/application/ports/runtime-projection.d.ts +1062 -0
  905. package/node_modules/@nklisch/pi-plugins/dist/application/ports/runtime-projection.js +275 -0
  906. package/node_modules/@nklisch/pi-plugins/dist/application/ports/runtime-projection.js.map +1 -0
  907. package/node_modules/@nklisch/pi-plugins/dist/application/ports/scope-lock.d.ts +15 -0
  908. package/node_modules/@nklisch/pi-plugins/dist/application/ports/scope-lock.js +2 -0
  909. package/node_modules/@nklisch/pi-plugins/dist/application/ports/scope-lock.js.map +1 -0
  910. package/node_modules/@nklisch/pi-plugins/dist/application/ports/secret-store.d.ts +100 -0
  911. package/node_modules/@nklisch/pi-plugins/dist/application/ports/secret-store.js +36 -0
  912. package/node_modules/@nklisch/pi-plugins/dist/application/ports/secret-store.js.map +1 -0
  913. package/node_modules/@nklisch/pi-plugins/dist/application/ports/skill-resource-path.d.ts +20 -0
  914. package/node_modules/@nklisch/pi-plugins/dist/application/ports/skill-resource-path.js +2 -0
  915. package/node_modules/@nklisch/pi-plugins/dist/application/ports/skill-resource-path.js.map +1 -0
  916. package/node_modules/@nklisch/pi-plugins/dist/application/ports/source-acquisition.d.ts +88 -0
  917. package/node_modules/@nklisch/pi-plugins/dist/application/ports/source-acquisition.js +13 -0
  918. package/node_modules/@nklisch/pi-plugins/dist/application/ports/source-acquisition.js.map +1 -0
  919. package/node_modules/@nklisch/pi-plugins/dist/application/ports/subagent-lifecycle.d.ts +289 -0
  920. package/node_modules/@nklisch/pi-plugins/dist/application/ports/subagent-lifecycle.js +197 -0
  921. package/node_modules/@nklisch/pi-plugins/dist/application/ports/subagent-lifecycle.js.map +1 -0
  922. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-activation-context.d.ts +4 -0
  923. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-activation-context.js +2 -0
  924. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-activation-context.js.map +1 -0
  925. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-delay.d.ts +4 -0
  926. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-delay.js +2 -0
  927. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-delay.js.map +1 -0
  928. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-notification-publisher.d.ts +16 -0
  929. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-notification-publisher.js +2 -0
  930. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-notification-publisher.js.map +1 -0
  931. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-policy-authority.d.ts +15 -0
  932. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-policy-authority.js +2 -0
  933. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-policy-authority.js.map +1 -0
  934. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-scheduler-lease-id.d.ts +4 -0
  935. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-scheduler-lease-id.js +2 -0
  936. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-scheduler-lease-id.js.map +1 -0
  937. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-scheduler-lease.d.ts +21 -0
  938. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-scheduler-lease.js +2 -0
  939. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-scheduler-lease.js.map +1 -0
  940. package/node_modules/@nklisch/pi-plugins/dist/application/prepared-lifecycle-candidate.d.ts +7 -0
  941. package/node_modules/@nklisch/pi-plugins/dist/application/prepared-lifecycle-candidate.js +7 -0
  942. package/node_modules/@nklisch/pi-plugins/dist/application/prepared-lifecycle-candidate.js.map +1 -0
  943. package/node_modules/@nklisch/pi-plugins/dist/application/project-intent-codec.d.ts +18 -0
  944. package/node_modules/@nklisch/pi-plugins/dist/application/project-intent-codec.js +47 -0
  945. package/node_modules/@nklisch/pi-plugins/dist/application/project-intent-codec.js.map +1 -0
  946. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-contract.d.ts +833 -0
  947. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-contract.js +144 -0
  948. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-contract.js.map +1 -0
  949. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-planner.d.ts +36 -0
  950. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-planner.js +253 -0
  951. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-planner.js.map +1 -0
  952. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-projection.d.ts +42 -0
  953. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-projection.js +52 -0
  954. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-projection.js.map +1 -0
  955. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-service.d.ts +65 -0
  956. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-service.js +285 -0
  957. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-service.js.map +1 -0
  958. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-state.d.ts +20 -0
  959. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-state.js +22 -0
  960. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-state.js.map +1 -0
  961. package/node_modules/@nklisch/pi-plugins/dist/application/recovery-contract.d.ts +1078 -0
  962. package/node_modules/@nklisch/pi-plugins/dist/application/recovery-contract.js +126 -0
  963. package/node_modules/@nklisch/pi-plugins/dist/application/recovery-contract.js.map +1 -0
  964. package/node_modules/@nklisch/pi-plugins/dist/application/recovery-service.d.ts +39 -0
  965. package/node_modules/@nklisch/pi-plugins/dist/application/recovery-service.js +170 -0
  966. package/node_modules/@nklisch/pi-plugins/dist/application/recovery-service.js.map +1 -0
  967. package/node_modules/@nklisch/pi-plugins/dist/application/resolved-configuration.d.ts +18 -0
  968. package/node_modules/@nklisch/pi-plugins/dist/application/resolved-configuration.js +74 -0
  969. package/node_modules/@nklisch/pi-plugins/dist/application/resolved-configuration.js.map +1 -0
  970. package/node_modules/@nklisch/pi-plugins/dist/application/revision-collection-service.d.ts +52 -0
  971. package/node_modules/@nklisch/pi-plugins/dist/application/revision-collection-service.js +228 -0
  972. package/node_modules/@nklisch/pi-plugins/dist/application/revision-collection-service.js.map +1 -0
  973. package/node_modules/@nklisch/pi-plugins/dist/application/runtime-projection-cache.d.ts +387 -0
  974. package/node_modules/@nklisch/pi-plugins/dist/application/runtime-projection-cache.js +128 -0
  975. package/node_modules/@nklisch/pi-plugins/dist/application/runtime-projection-cache.js.map +1 -0
  976. package/node_modules/@nklisch/pi-plugins/dist/application/sensitive-value.d.ts +9 -0
  977. package/node_modules/@nklisch/pi-plugins/dist/application/sensitive-value.js +50 -0
  978. package/node_modules/@nklisch/pi-plugins/dist/application/sensitive-value.js.map +1 -0
  979. package/node_modules/@nklisch/pi-plugins/dist/application/source-materialization.d.ts +62 -0
  980. package/node_modules/@nklisch/pi-plugins/dist/application/source-materialization.js +410 -0
  981. package/node_modules/@nklisch/pi-plugins/dist/application/source-materialization.js.map +1 -0
  982. package/node_modules/@nklisch/pi-plugins/dist/application/state-contract.d.ts +2731 -0
  983. package/node_modules/@nklisch/pi-plugins/dist/application/state-contract.js +200 -0
  984. package/node_modules/@nklisch/pi-plugins/dist/application/state-contract.js.map +1 -0
  985. package/node_modules/@nklisch/pi-plugins/dist/application/subagent-hook-runtime.d.ts +18 -0
  986. package/node_modules/@nklisch/pi-plugins/dist/application/subagent-hook-runtime.js +110 -0
  987. package/node_modules/@nklisch/pi-plugins/dist/application/subagent-hook-runtime.js.map +1 -0
  988. package/node_modules/@nklisch/pi-plugins/dist/application/subagent-lifecycle-capability-probe.d.ts +16 -0
  989. package/node_modules/@nklisch/pi-plugins/dist/application/subagent-lifecycle-capability-probe.js +103 -0
  990. package/node_modules/@nklisch/pi-plugins/dist/application/subagent-lifecycle-capability-probe.js.map +1 -0
  991. package/node_modules/@nklisch/pi-plugins/dist/application/trust-service.d.ts +25 -0
  992. package/node_modules/@nklisch/pi-plugins/dist/application/trust-service.js +76 -0
  993. package/node_modules/@nklisch/pi-plugins/dist/application/trust-service.js.map +1 -0
  994. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-candidate.d.ts +55 -0
  995. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-candidate.js +319 -0
  996. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-candidate.js.map +1 -0
  997. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-configuration.d.ts +53 -0
  998. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-configuration.js +100 -0
  999. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-configuration.js.map +1 -0
  1000. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-contract.d.ts +11773 -0
  1001. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-contract.js +201 -0
  1002. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-contract.js.map +1 -0
  1003. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-identifiers.d.ts +10 -0
  1004. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-identifiers.js +49 -0
  1005. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-identifiers.js.map +1 -0
  1006. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-lifecycle.d.ts +30 -0
  1007. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-lifecycle.js +87 -0
  1008. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-lifecycle.js.map +1 -0
  1009. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-service.d.ts +31 -0
  1010. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-service.js +646 -0
  1011. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-service.js.map +1 -0
  1012. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-session.d.ts +65 -0
  1013. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-session.js +123 -0
  1014. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-session.js.map +1 -0
  1015. package/node_modules/@nklisch/pi-plugins/dist/application/update-contract.d.ts +861 -0
  1016. package/node_modules/@nklisch/pi-plugins/dist/application/update-contract.js +63 -0
  1017. package/node_modules/@nklisch/pi-plugins/dist/application/update-contract.js.map +1 -0
  1018. package/node_modules/@nklisch/pi-plugins/dist/application/update-notification-service.d.ts +64 -0
  1019. package/node_modules/@nklisch/pi-plugins/dist/application/update-notification-service.js +317 -0
  1020. package/node_modules/@nklisch/pi-plugins/dist/application/update-notification-service.js.map +1 -0
  1021. package/node_modules/@nklisch/pi-plugins/dist/application/update-policy-resolution.d.ts +14 -0
  1022. package/node_modules/@nklisch/pi-plugins/dist/application/update-policy-resolution.js +37 -0
  1023. package/node_modules/@nklisch/pi-plugins/dist/application/update-policy-resolution.js.map +1 -0
  1024. package/node_modules/@nklisch/pi-plugins/dist/application/update-schedule.d.ts +12 -0
  1025. package/node_modules/@nklisch/pi-plugins/dist/application/update-schedule.js +44 -0
  1026. package/node_modules/@nklisch/pi-plugins/dist/application/update-schedule.js.map +1 -0
  1027. package/node_modules/@nklisch/pi-plugins/dist/application/update-scheduler-lease-state.d.ts +20 -0
  1028. package/node_modules/@nklisch/pi-plugins/dist/application/update-scheduler-lease-state.js +122 -0
  1029. package/node_modules/@nklisch/pi-plugins/dist/application/update-scheduler-lease-state.js.map +1 -0
  1030. package/node_modules/@nklisch/pi-plugins/dist/application/update-scheduler-status.d.ts +19 -0
  1031. package/node_modules/@nklisch/pi-plugins/dist/application/update-scheduler-status.js +28 -0
  1032. package/node_modules/@nklisch/pi-plugins/dist/application/update-scheduler-status.js.map +1 -0
  1033. package/node_modules/@nklisch/pi-plugins/dist/composition/automatic-update-lifecycle-adapter.d.ts +24 -0
  1034. package/node_modules/@nklisch/pi-plugins/dist/composition/automatic-update-lifecycle-adapter.js +178 -0
  1035. package/node_modules/@nklisch/pi-plugins/dist/composition/automatic-update-lifecycle-adapter.js.map +1 -0
  1036. package/node_modules/@nklisch/pi-plugins/dist/composition/background-update-coordinator.d.ts +19 -0
  1037. package/node_modules/@nklisch/pi-plugins/dist/composition/background-update-coordinator.js +74 -0
  1038. package/node_modules/@nklisch/pi-plugins/dist/composition/background-update-coordinator.js.map +1 -0
  1039. package/node_modules/@nklisch/pi-plugins/dist/composition/candidate-content-lease.d.ts +3 -0
  1040. package/node_modules/@nklisch/pi-plugins/dist/composition/candidate-content-lease.js +103 -0
  1041. package/node_modules/@nklisch/pi-plugins/dist/composition/candidate-content-lease.js.map +1 -0
  1042. package/node_modules/@nklisch/pi-plugins/dist/composition/complete-plugin-reload.d.ts +32 -0
  1043. package/node_modules/@nklisch/pi-plugins/dist/composition/complete-plugin-reload.js +175 -0
  1044. package/node_modules/@nklisch/pi-plugins/dist/composition/complete-plugin-reload.js.map +1 -0
  1045. package/node_modules/@nklisch/pi-plugins/dist/composition/create-adoption-service.d.ts +12 -0
  1046. package/node_modules/@nklisch/pi-plugins/dist/composition/create-adoption-service.js +31 -0
  1047. package/node_modules/@nklisch/pi-plugins/dist/composition/create-adoption-service.js.map +1 -0
  1048. package/node_modules/@nklisch/pi-plugins/dist/composition/create-host-configuration.d.ts +26 -0
  1049. package/node_modules/@nklisch/pi-plugins/dist/composition/create-host-configuration.js +37 -0
  1050. package/node_modules/@nklisch/pi-plugins/dist/composition/create-host-configuration.js.map +1 -0
  1051. package/node_modules/@nklisch/pi-plugins/dist/composition/create-marketplace-discovery-services.d.ts +82 -0
  1052. package/node_modules/@nklisch/pi-plugins/dist/composition/create-marketplace-discovery-services.js +162 -0
  1053. package/node_modules/@nklisch/pi-plugins/dist/composition/create-marketplace-discovery-services.js.map +1 -0
  1054. package/node_modules/@nklisch/pi-plugins/dist/composition/create-marketplace-refresh-services.d.ts +5 -0
  1055. package/node_modules/@nklisch/pi-plugins/dist/composition/create-marketplace-refresh-services.js +6 -0
  1056. package/node_modules/@nklisch/pi-plugins/dist/composition/create-marketplace-refresh-services.js.map +1 -0
  1057. package/node_modules/@nklisch/pi-plugins/dist/composition/create-marketplace-update-services.d.ts +25 -0
  1058. package/node_modules/@nklisch/pi-plugins/dist/composition/create-marketplace-update-services.js +42 -0
  1059. package/node_modules/@nklisch/pi-plugins/dist/composition/create-marketplace-update-services.js.map +1 -0
  1060. package/node_modules/@nklisch/pi-plugins/dist/composition/create-mcp-runtime.d.ts +37 -0
  1061. package/node_modules/@nklisch/pi-plugins/dist/composition/create-mcp-runtime.js +121 -0
  1062. package/node_modules/@nklisch/pi-plugins/dist/composition/create-mcp-runtime.js.map +1 -0
  1063. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-control-current-project.d.ts +12 -0
  1064. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-control-current-project.js +31 -0
  1065. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-control-current-project.js.map +1 -0
  1066. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-control-service.d.ts +9 -0
  1067. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-control-service.js +6 -0
  1068. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-control-service.js.map +1 -0
  1069. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-inspection-service.d.ts +51 -0
  1070. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-inspection-service.js +54 -0
  1071. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-inspection-service.js.map +1 -0
  1072. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-lifecycle-operation-service.d.ts +56 -0
  1073. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-lifecycle-operation-service.js +57 -0
  1074. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-lifecycle-operation-service.js.map +1 -0
  1075. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-update-management-service.d.ts +39 -0
  1076. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-update-management-service.js +50 -0
  1077. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-update-management-service.js.map +1 -0
  1078. package/node_modules/@nklisch/pi-plugins/dist/composition/create-packaged-plugin-host.d.ts +3 -0
  1079. package/node_modules/@nklisch/pi-plugins/dist/composition/create-packaged-plugin-host.js +840 -0
  1080. package/node_modules/@nklisch/pi-plugins/dist/composition/create-packaged-plugin-host.js.map +1 -0
  1081. package/node_modules/@nklisch/pi-plugins/dist/composition/create-plugin-inspector.d.ts +13 -0
  1082. package/node_modules/@nklisch/pi-plugins/dist/composition/create-plugin-inspector.js +53 -0
  1083. package/node_modules/@nklisch/pi-plugins/dist/composition/create-plugin-inspector.js.map +1 -0
  1084. package/node_modules/@nklisch/pi-plugins/dist/composition/create-project-root-authority.d.ts +11 -0
  1085. package/node_modules/@nklisch/pi-plugins/dist/composition/create-project-root-authority.js +128 -0
  1086. package/node_modules/@nklisch/pi-plugins/dist/composition/create-project-root-authority.js.map +1 -0
  1087. package/node_modules/@nklisch/pi-plugins/dist/composition/create-skill-hook-runtime.d.ts +42 -0
  1088. package/node_modules/@nklisch/pi-plugins/dist/composition/create-skill-hook-runtime.js +168 -0
  1089. package/node_modules/@nklisch/pi-plugins/dist/composition/create-skill-hook-runtime.js.map +1 -0
  1090. package/node_modules/@nklisch/pi-plugins/dist/composition/create-subagent-lifecycle.d.ts +6 -0
  1091. package/node_modules/@nklisch/pi-plugins/dist/composition/create-subagent-lifecycle.js +9 -0
  1092. package/node_modules/@nklisch/pi-plugins/dist/composition/create-subagent-lifecycle.js.map +1 -0
  1093. package/node_modules/@nklisch/pi-plugins/dist/composition/create-trusted-installation-service.d.ts +46 -0
  1094. package/node_modules/@nklisch/pi-plugins/dist/composition/create-trusted-installation-service.js +49 -0
  1095. package/node_modules/@nklisch/pi-plugins/dist/composition/create-trusted-installation-service.js.map +1 -0
  1096. package/node_modules/@nklisch/pi-plugins/dist/composition/host-status-service.d.ts +20 -0
  1097. package/node_modules/@nklisch/pi-plugins/dist/composition/host-status-service.js +35 -0
  1098. package/node_modules/@nklisch/pi-plugins/dist/composition/host-status-service.js.map +1 -0
  1099. package/node_modules/@nklisch/pi-plugins/dist/composition/native-inspection-evidence.d.ts +40 -0
  1100. package/node_modules/@nklisch/pi-plugins/dist/composition/native-inspection-evidence.js +269 -0
  1101. package/node_modules/@nklisch/pi-plugins/dist/composition/native-inspection-evidence.js.map +1 -0
  1102. package/node_modules/@nklisch/pi-plugins/dist/composition/native-inspection-readiness.d.ts +14 -0
  1103. package/node_modules/@nklisch/pi-plugins/dist/composition/native-inspection-readiness.js +127 -0
  1104. package/node_modules/@nklisch/pi-plugins/dist/composition/native-inspection-readiness.js.map +1 -0
  1105. package/node_modules/@nklisch/pi-plugins/dist/composition/node-pi-runtime-capability-probe.d.ts +8 -0
  1106. package/node_modules/@nklisch/pi-plugins/dist/composition/node-pi-runtime-capability-probe.js +60 -0
  1107. package/node_modules/@nklisch/pi-plugins/dist/composition/node-pi-runtime-capability-probe.js.map +1 -0
  1108. package/node_modules/@nklisch/pi-plugins/dist/composition/packaged-host-startup.d.ts +19 -0
  1109. package/node_modules/@nklisch/pi-plugins/dist/composition/packaged-host-startup.js +39 -0
  1110. package/node_modules/@nklisch/pi-plugins/dist/composition/packaged-host-startup.js.map +1 -0
  1111. package/node_modules/@nklisch/pi-plugins/dist/composition/packaged-plugin-host-contract.d.ts +69 -0
  1112. package/node_modules/@nklisch/pi-plugins/dist/composition/packaged-plugin-host-contract.js +22 -0
  1113. package/node_modules/@nklisch/pi-plugins/dist/composition/packaged-plugin-host-contract.js.map +1 -0
  1114. package/node_modules/@nklisch/pi-plugins/dist/composition/plugin-host-paths.d.ts +15 -0
  1115. package/node_modules/@nklisch/pi-plugins/dist/composition/plugin-host-paths.js +44 -0
  1116. package/node_modules/@nklisch/pi-plugins/dist/composition/plugin-host-paths.js.map +1 -0
  1117. package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-desired-state.d.ts +45 -0
  1118. package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-desired-state.js +241 -0
  1119. package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-desired-state.js.map +1 -0
  1120. package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-participant-qualification.d.ts +46 -0
  1121. package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-participant-qualification.js +111 -0
  1122. package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-participant-qualification.js.map +1 -0
  1123. package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-selection-catalog.d.ts +36 -0
  1124. package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-selection-catalog.js +221 -0
  1125. package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-selection-catalog.js.map +1 -0
  1126. package/node_modules/@nklisch/pi-plugins/dist/composition/sequential-cleanup.d.ts +1 -0
  1127. package/node_modules/@nklisch/pi-plugins/dist/composition/sequential-cleanup.js +14 -0
  1128. package/node_modules/@nklisch/pi-plugins/dist/composition/sequential-cleanup.js.map +1 -0
  1129. package/node_modules/@nklisch/pi-plugins/dist/domain/adoption.d.ts +210 -0
  1130. package/node_modules/@nklisch/pi-plugins/dist/domain/adoption.js +178 -0
  1131. package/node_modules/@nklisch/pi-plugins/dist/domain/adoption.js.map +1 -0
  1132. package/node_modules/@nklisch/pi-plugins/dist/domain/bundle-ingestion.d.ts +532 -0
  1133. package/node_modules/@nklisch/pi-plugins/dist/domain/bundle-ingestion.js +116 -0
  1134. package/node_modules/@nklisch/pi-plugins/dist/domain/bundle-ingestion.js.map +1 -0
  1135. package/node_modules/@nklisch/pi-plugins/dist/domain/canonical-json.d.ts +9 -0
  1136. package/node_modules/@nklisch/pi-plugins/dist/domain/canonical-json.js +65 -0
  1137. package/node_modules/@nklisch/pi-plugins/dist/domain/canonical-json.js.map +1 -0
  1138. package/node_modules/@nklisch/pi-plugins/dist/domain/canonical-order.d.ts +11 -0
  1139. package/node_modules/@nklisch/pi-plugins/dist/domain/canonical-order.js +71 -0
  1140. package/node_modules/@nklisch/pi-plugins/dist/domain/canonical-order.js.map +1 -0
  1141. package/node_modules/@nklisch/pi-plugins/dist/domain/compatibility-evaluator.d.ts +768 -0
  1142. package/node_modules/@nklisch/pi-plugins/dist/domain/compatibility-evaluator.js +730 -0
  1143. package/node_modules/@nklisch/pi-plugins/dist/domain/compatibility-evaluator.js.map +1 -0
  1144. package/node_modules/@nklisch/pi-plugins/dist/domain/compatibility-policy.d.ts +1341 -0
  1145. package/node_modules/@nklisch/pi-plugins/dist/domain/compatibility-policy.js +913 -0
  1146. package/node_modules/@nklisch/pi-plugins/dist/domain/compatibility-policy.js.map +1 -0
  1147. package/node_modules/@nklisch/pi-plugins/dist/domain/compatibility.d.ts +367 -0
  1148. package/node_modules/@nklisch/pi-plugins/dist/domain/compatibility.js +222 -0
  1149. package/node_modules/@nklisch/pi-plugins/dist/domain/compatibility.js.map +1 -0
  1150. package/node_modules/@nklisch/pi-plugins/dist/domain/component-identity.d.ts +86 -0
  1151. package/node_modules/@nklisch/pi-plugins/dist/domain/component-identity.js +206 -0
  1152. package/node_modules/@nklisch/pi-plugins/dist/domain/component-identity.js.map +1 -0
  1153. package/node_modules/@nklisch/pi-plugins/dist/domain/components.d.ts +1643 -0
  1154. package/node_modules/@nklisch/pi-plugins/dist/domain/components.js +152 -0
  1155. package/node_modules/@nklisch/pi-plugins/dist/domain/components.js.map +1 -0
  1156. package/node_modules/@nklisch/pi-plugins/dist/domain/configuration.d.ts +352 -0
  1157. package/node_modules/@nklisch/pi-plugins/dist/domain/configuration.js +295 -0
  1158. package/node_modules/@nklisch/pi-plugins/dist/domain/configuration.js.map +1 -0
  1159. package/node_modules/@nklisch/pi-plugins/dist/domain/configured-values.d.ts +152 -0
  1160. package/node_modules/@nklisch/pi-plugins/dist/domain/configured-values.js +273 -0
  1161. package/node_modules/@nklisch/pi-plugins/dist/domain/configured-values.js.map +1 -0
  1162. package/node_modules/@nklisch/pi-plugins/dist/domain/content-manifest.d.ts +72 -0
  1163. package/node_modules/@nklisch/pi-plugins/dist/domain/content-manifest.js +425 -0
  1164. package/node_modules/@nklisch/pi-plugins/dist/domain/content-manifest.js.map +1 -0
  1165. package/node_modules/@nklisch/pi-plugins/dist/domain/content-store.d.ts +72 -0
  1166. package/node_modules/@nklisch/pi-plugins/dist/domain/content-store.js +149 -0
  1167. package/node_modules/@nklisch/pi-plugins/dist/domain/content-store.js.map +1 -0
  1168. package/node_modules/@nklisch/pi-plugins/dist/domain/domain-error.d.ts +11 -0
  1169. package/node_modules/@nklisch/pi-plugins/dist/domain/domain-error.js +46 -0
  1170. package/node_modules/@nklisch/pi-plugins/dist/domain/domain-error.js.map +1 -0
  1171. package/node_modules/@nklisch/pi-plugins/dist/domain/error-contract.d.ts +145 -0
  1172. package/node_modules/@nklisch/pi-plugins/dist/domain/error-contract.js +62 -0
  1173. package/node_modules/@nklisch/pi-plugins/dist/domain/error-contract.js.map +1 -0
  1174. package/node_modules/@nklisch/pi-plugins/dist/domain/errors.d.ts +231 -0
  1175. package/node_modules/@nklisch/pi-plugins/dist/domain/errors.js +100 -0
  1176. package/node_modules/@nklisch/pi-plugins/dist/domain/errors.js.map +1 -0
  1177. package/node_modules/@nklisch/pi-plugins/dist/domain/executable-surface.d.ts +187 -0
  1178. package/node_modules/@nklisch/pi-plugins/dist/domain/executable-surface.js +216 -0
  1179. package/node_modules/@nklisch/pi-plugins/dist/domain/executable-surface.js.map +1 -0
  1180. package/node_modules/@nklisch/pi-plugins/dist/domain/foreign-identity.d.ts +17 -0
  1181. package/node_modules/@nklisch/pi-plugins/dist/domain/foreign-identity.js +94 -0
  1182. package/node_modules/@nklisch/pi-plugins/dist/domain/foreign-identity.js.map +1 -0
  1183. package/node_modules/@nklisch/pi-plugins/dist/domain/hook-execution-binding.d.ts +16 -0
  1184. package/node_modules/@nklisch/pi-plugins/dist/domain/hook-execution-binding.js +2 -0
  1185. package/node_modules/@nklisch/pi-plugins/dist/domain/hook-execution-binding.js.map +1 -0
  1186. package/node_modules/@nklisch/pi-plugins/dist/domain/hook-output-contract.d.ts +153 -0
  1187. package/node_modules/@nklisch/pi-plugins/dist/domain/hook-output-contract.js +55 -0
  1188. package/node_modules/@nklisch/pi-plugins/dist/domain/hook-output-contract.js.map +1 -0
  1189. package/node_modules/@nklisch/pi-plugins/dist/domain/hook-runtime-contract.d.ts +418 -0
  1190. package/node_modules/@nklisch/pi-plugins/dist/domain/hook-runtime-contract.js +243 -0
  1191. package/node_modules/@nklisch/pi-plugins/dist/domain/hook-runtime-contract.js.map +1 -0
  1192. package/node_modules/@nklisch/pi-plugins/dist/domain/hook-runtime-limits.d.ts +25 -0
  1193. package/node_modules/@nklisch/pi-plugins/dist/domain/hook-runtime-limits.js +26 -0
  1194. package/node_modules/@nklisch/pi-plugins/dist/domain/hook-runtime-limits.js.map +1 -0
  1195. package/node_modules/@nklisch/pi-plugins/dist/domain/host-precedence.d.ts +20 -0
  1196. package/node_modules/@nklisch/pi-plugins/dist/domain/host-precedence.js +21 -0
  1197. package/node_modules/@nklisch/pi-plugins/dist/domain/host-precedence.js.map +1 -0
  1198. package/node_modules/@nklisch/pi-plugins/dist/domain/identity.d.ts +30 -0
  1199. package/node_modules/@nklisch/pi-plugins/dist/domain/identity.js +59 -0
  1200. package/node_modules/@nklisch/pi-plugins/dist/domain/identity.js.map +1 -0
  1201. package/node_modules/@nklisch/pi-plugins/dist/domain/marketplace-registration.d.ts +38 -0
  1202. package/node_modules/@nklisch/pi-plugins/dist/domain/marketplace-registration.js +68 -0
  1203. package/node_modules/@nklisch/pi-plugins/dist/domain/marketplace-registration.js.map +1 -0
  1204. package/node_modules/@nklisch/pi-plugins/dist/domain/marketplace.d.ts +1662 -0
  1205. package/node_modules/@nklisch/pi-plugins/dist/domain/marketplace.js +197 -0
  1206. package/node_modules/@nklisch/pi-plugins/dist/domain/marketplace.js.map +1 -0
  1207. package/node_modules/@nklisch/pi-plugins/dist/domain/mcp-compatibility-plan.d.ts +160 -0
  1208. package/node_modules/@nklisch/pi-plugins/dist/domain/mcp-compatibility-plan.js +803 -0
  1209. package/node_modules/@nklisch/pi-plugins/dist/domain/mcp-compatibility-plan.js.map +1 -0
  1210. package/node_modules/@nklisch/pi-plugins/dist/domain/mcp-endpoint-security.d.ts +17 -0
  1211. package/node_modules/@nklisch/pi-plugins/dist/domain/mcp-endpoint-security.js +72 -0
  1212. package/node_modules/@nklisch/pi-plugins/dist/domain/mcp-endpoint-security.js.map +1 -0
  1213. package/node_modules/@nklisch/pi-plugins/dist/domain/mcp-late-values.d.ts +11 -0
  1214. package/node_modules/@nklisch/pi-plugins/dist/domain/mcp-late-values.js +53 -0
  1215. package/node_modules/@nklisch/pi-plugins/dist/domain/mcp-late-values.js.map +1 -0
  1216. package/node_modules/@nklisch/pi-plugins/dist/domain/mcp-launch-template.d.ts +61 -0
  1217. package/node_modules/@nklisch/pi-plugins/dist/domain/mcp-launch-template.js +264 -0
  1218. package/node_modules/@nklisch/pi-plugins/dist/domain/mcp-launch-template.js.map +1 -0
  1219. package/node_modules/@nklisch/pi-plugins/dist/domain/plugin.d.ts +651 -0
  1220. package/node_modules/@nklisch/pi-plugins/dist/domain/plugin.js +19 -0
  1221. package/node_modules/@nklisch/pi-plugins/dist/domain/plugin.js.map +1 -0
  1222. package/node_modules/@nklisch/pi-plugins/dist/domain/provenance-location.d.ts +36 -0
  1223. package/node_modules/@nklisch/pi-plugins/dist/domain/provenance-location.js +28 -0
  1224. package/node_modules/@nklisch/pi-plugins/dist/domain/provenance-location.js.map +1 -0
  1225. package/node_modules/@nklisch/pi-plugins/dist/domain/provenance.d.ts +70 -0
  1226. package/node_modules/@nklisch/pi-plugins/dist/domain/provenance.js +164 -0
  1227. package/node_modules/@nklisch/pi-plugins/dist/domain/provenance.js.map +1 -0
  1228. package/node_modules/@nklisch/pi-plugins/dist/domain/schema.d.ts +21 -0
  1229. package/node_modules/@nklisch/pi-plugins/dist/domain/schema.js +31 -0
  1230. package/node_modules/@nklisch/pi-plugins/dist/domain/schema.js.map +1 -0
  1231. package/node_modules/@nklisch/pi-plugins/dist/domain/sensitive-fields.d.ts +7 -0
  1232. package/node_modules/@nklisch/pi-plugins/dist/domain/sensitive-fields.js +13 -0
  1233. package/node_modules/@nklisch/pi-plugins/dist/domain/sensitive-fields.js.map +1 -0
  1234. package/node_modules/@nklisch/pi-plugins/dist/domain/source.d.ts +304 -0
  1235. package/node_modules/@nklisch/pi-plugins/dist/domain/source.js +873 -0
  1236. package/node_modules/@nklisch/pi-plugins/dist/domain/source.js.map +1 -0
  1237. package/node_modules/@nklisch/pi-plugins/dist/domain/state/codec.d.ts +145 -0
  1238. package/node_modules/@nklisch/pi-plugins/dist/domain/state/codec.js +576 -0
  1239. package/node_modules/@nklisch/pi-plugins/dist/domain/state/codec.js.map +1 -0
  1240. package/node_modules/@nklisch/pi-plugins/dist/domain/state/config-state.d.ts +447 -0
  1241. package/node_modules/@nklisch/pi-plugins/dist/domain/state/config-state.js +58 -0
  1242. package/node_modules/@nklisch/pi-plugins/dist/domain/state/config-state.js.map +1 -0
  1243. package/node_modules/@nklisch/pi-plugins/dist/domain/state/installed-state.d.ts +435 -0
  1244. package/node_modules/@nklisch/pi-plugins/dist/domain/state/installed-state.js +484 -0
  1245. package/node_modules/@nklisch/pi-plugins/dist/domain/state/installed-state.js.map +1 -0
  1246. package/node_modules/@nklisch/pi-plugins/dist/domain/state/pointers.d.ts +97 -0
  1247. package/node_modules/@nklisch/pi-plugins/dist/domain/state/pointers.js +108 -0
  1248. package/node_modules/@nklisch/pi-plugins/dist/domain/state/pointers.js.map +1 -0
  1249. package/node_modules/@nklisch/pi-plugins/dist/domain/state/portable-project-declaration.d.ts +275 -0
  1250. package/node_modules/@nklisch/pi-plugins/dist/domain/state/portable-project-declaration.js +389 -0
  1251. package/node_modules/@nklisch/pi-plugins/dist/domain/state/portable-project-declaration.js.map +1 -0
  1252. package/node_modules/@nklisch/pi-plugins/dist/domain/state/project-state.d.ts +329 -0
  1253. package/node_modules/@nklisch/pi-plugins/dist/domain/state/project-state.js +185 -0
  1254. package/node_modules/@nklisch/pi-plugins/dist/domain/state/project-state.js.map +1 -0
  1255. package/node_modules/@nklisch/pi-plugins/dist/domain/state/references.d.ts +85 -0
  1256. package/node_modules/@nklisch/pi-plugins/dist/domain/state/references.js +225 -0
  1257. package/node_modules/@nklisch/pi-plugins/dist/domain/state/references.js.map +1 -0
  1258. package/node_modules/@nklisch/pi-plugins/dist/domain/state/registry.d.ts +771 -0
  1259. package/node_modules/@nklisch/pi-plugins/dist/domain/state/registry.js +57 -0
  1260. package/node_modules/@nklisch/pi-plugins/dist/domain/state/registry.js.map +1 -0
  1261. package/node_modules/@nklisch/pi-plugins/dist/domain/state/scope.d.ts +53 -0
  1262. package/node_modules/@nklisch/pi-plugins/dist/domain/state/scope.js +270 -0
  1263. package/node_modules/@nklisch/pi-plugins/dist/domain/state/scope.js.map +1 -0
  1264. package/node_modules/@nklisch/pi-plugins/dist/domain/state/trust-state.d.ts +98 -0
  1265. package/node_modules/@nklisch/pi-plugins/dist/domain/state/trust-state.js +143 -0
  1266. package/node_modules/@nklisch/pi-plugins/dist/domain/state/trust-state.js.map +1 -0
  1267. package/node_modules/@nklisch/pi-plugins/dist/domain/time.d.ts +4 -0
  1268. package/node_modules/@nklisch/pi-plugins/dist/domain/time.js +4 -0
  1269. package/node_modules/@nklisch/pi-plugins/dist/domain/time.js.map +1 -0
  1270. package/node_modules/@nklisch/pi-plugins/dist/domain/trust-policy.d.ts +181 -0
  1271. package/node_modules/@nklisch/pi-plugins/dist/domain/trust-policy.js +237 -0
  1272. package/node_modules/@nklisch/pi-plugins/dist/domain/trust-policy.js.map +1 -0
  1273. package/node_modules/@nklisch/pi-plugins/dist/domain/update-policy.d.ts +818 -0
  1274. package/node_modules/@nklisch/pi-plugins/dist/domain/update-policy.js +315 -0
  1275. package/node_modules/@nklisch/pi-plugins/dist/domain/update-policy.js.map +1 -0
  1276. package/node_modules/@nklisch/pi-plugins/dist/formats/adoption-reader-support.d.ts +40 -0
  1277. package/node_modules/@nklisch/pi-plugins/dist/formats/adoption-reader-support.js +100 -0
  1278. package/node_modules/@nklisch/pi-plugins/dist/formats/adoption-reader-support.js.map +1 -0
  1279. package/node_modules/@nklisch/pi-plugins/dist/formats/agent-skills/frontmatter-reader.d.ts +18 -0
  1280. package/node_modules/@nklisch/pi-plugins/dist/formats/agent-skills/frontmatter-reader.js +345 -0
  1281. package/node_modules/@nklisch/pi-plugins/dist/formats/agent-skills/frontmatter-reader.js.map +1 -0
  1282. package/node_modules/@nklisch/pi-plugins/dist/formats/agent-skills/skill-reader.d.ts +18 -0
  1283. package/node_modules/@nklisch/pi-plugins/dist/formats/agent-skills/skill-reader.js +197 -0
  1284. package/node_modules/@nklisch/pi-plugins/dist/formats/agent-skills/skill-reader.js.map +1 -0
  1285. package/node_modules/@nklisch/pi-plugins/dist/formats/claude/hook-reader.d.ts +5 -0
  1286. package/node_modules/@nklisch/pi-plugins/dist/formats/claude/hook-reader.js +12 -0
  1287. package/node_modules/@nklisch/pi-plugins/dist/formats/claude/hook-reader.js.map +1 -0
  1288. package/node_modules/@nklisch/pi-plugins/dist/formats/claude/manifest-reader.d.ts +4 -0
  1289. package/node_modules/@nklisch/pi-plugins/dist/formats/claude/manifest-reader.js +50 -0
  1290. package/node_modules/@nklisch/pi-plugins/dist/formats/claude/manifest-reader.js.map +1 -0
  1291. package/node_modules/@nklisch/pi-plugins/dist/formats/claude/marketplace-reader.d.ts +5 -0
  1292. package/node_modules/@nklisch/pi-plugins/dist/formats/claude/marketplace-reader.js +275 -0
  1293. package/node_modules/@nklisch/pi-plugins/dist/formats/claude/marketplace-reader.js.map +1 -0
  1294. package/node_modules/@nklisch/pi-plugins/dist/formats/claude/mcp-reader.d.ts +5 -0
  1295. package/node_modules/@nklisch/pi-plugins/dist/formats/claude/mcp-reader.js +5 -0
  1296. package/node_modules/@nklisch/pi-plugins/dist/formats/claude/mcp-reader.js.map +1 -0
  1297. package/node_modules/@nklisch/pi-plugins/dist/formats/claude/state-reader.d.ts +97 -0
  1298. package/node_modules/@nklisch/pi-plugins/dist/formats/claude/state-reader.js +139 -0
  1299. package/node_modules/@nklisch/pi-plugins/dist/formats/claude/state-reader.js.map +1 -0
  1300. package/node_modules/@nklisch/pi-plugins/dist/formats/claude/user-config-reader.d.ts +18 -0
  1301. package/node_modules/@nklisch/pi-plugins/dist/formats/claude/user-config-reader.js +240 -0
  1302. package/node_modules/@nklisch/pi-plugins/dist/formats/claude/user-config-reader.js.map +1 -0
  1303. package/node_modules/@nklisch/pi-plugins/dist/formats/codex/hook-reader.d.ts +5 -0
  1304. package/node_modules/@nklisch/pi-plugins/dist/formats/codex/hook-reader.js +12 -0
  1305. package/node_modules/@nklisch/pi-plugins/dist/formats/codex/hook-reader.js.map +1 -0
  1306. package/node_modules/@nklisch/pi-plugins/dist/formats/codex/manifest-reader.d.ts +4 -0
  1307. package/node_modules/@nklisch/pi-plugins/dist/formats/codex/manifest-reader.js +22 -0
  1308. package/node_modules/@nklisch/pi-plugins/dist/formats/codex/manifest-reader.js.map +1 -0
  1309. package/node_modules/@nklisch/pi-plugins/dist/formats/codex/marketplace-reader.d.ts +5 -0
  1310. package/node_modules/@nklisch/pi-plugins/dist/formats/codex/marketplace-reader.js +253 -0
  1311. package/node_modules/@nklisch/pi-plugins/dist/formats/codex/marketplace-reader.js.map +1 -0
  1312. package/node_modules/@nklisch/pi-plugins/dist/formats/codex/mcp-reader.d.ts +5 -0
  1313. package/node_modules/@nklisch/pi-plugins/dist/formats/codex/mcp-reader.js +5 -0
  1314. package/node_modules/@nklisch/pi-plugins/dist/formats/codex/mcp-reader.js.map +1 -0
  1315. package/node_modules/@nklisch/pi-plugins/dist/formats/codex/state-reader.d.ts +50 -0
  1316. package/node_modules/@nklisch/pi-plugins/dist/formats/codex/state-reader.js +111 -0
  1317. package/node_modules/@nklisch/pi-plugins/dist/formats/codex/state-reader.js.map +1 -0
  1318. package/node_modules/@nklisch/pi-plugins/dist/formats/foreign-declaration.d.ts +29 -0
  1319. package/node_modules/@nklisch/pi-plugins/dist/formats/foreign-declaration.js +121 -0
  1320. package/node_modules/@nklisch/pi-plugins/dist/formats/foreign-declaration.js.map +1 -0
  1321. package/node_modules/@nklisch/pi-plugins/dist/formats/hook-reader-support.d.ts +44 -0
  1322. package/node_modules/@nklisch/pi-plugins/dist/formats/hook-reader-support.js +456 -0
  1323. package/node_modules/@nklisch/pi-plugins/dist/formats/hook-reader-support.js.map +1 -0
  1324. package/node_modules/@nklisch/pi-plugins/dist/formats/marketplace-merger.d.ts +22 -0
  1325. package/node_modules/@nklisch/pi-plugins/dist/formats/marketplace-merger.js +570 -0
  1326. package/node_modules/@nklisch/pi-plugins/dist/formats/marketplace-merger.js.map +1 -0
  1327. package/node_modules/@nklisch/pi-plugins/dist/formats/marketplace-reader-support.d.ts +131 -0
  1328. package/node_modules/@nklisch/pi-plugins/dist/formats/marketplace-reader-support.js +783 -0
  1329. package/node_modules/@nklisch/pi-plugins/dist/formats/marketplace-reader-support.js.map +1 -0
  1330. package/node_modules/@nklisch/pi-plugins/dist/formats/mcp-reader-support.d.ts +19 -0
  1331. package/node_modules/@nklisch/pi-plugins/dist/formats/mcp-reader-support.js +215 -0
  1332. package/node_modules/@nklisch/pi-plugins/dist/formats/mcp-reader-support.js.map +1 -0
  1333. package/node_modules/@nklisch/pi-plugins/dist/formats/plugin-manifest.d.ts +24 -0
  1334. package/node_modules/@nklisch/pi-plugins/dist/formats/plugin-manifest.js +288 -0
  1335. package/node_modules/@nklisch/pi-plugins/dist/formats/plugin-manifest.js.map +1 -0
  1336. package/node_modules/@nklisch/pi-plugins/dist/formats/stable-component-id.d.ts +5 -0
  1337. package/node_modules/@nklisch/pi-plugins/dist/formats/stable-component-id.js +108 -0
  1338. package/node_modules/@nklisch/pi-plugins/dist/formats/stable-component-id.js.map +1 -0
  1339. package/node_modules/@nklisch/pi-plugins/dist/index.d.ts +335 -0
  1340. package/node_modules/@nklisch/pi-plugins/dist/index.js +181 -0
  1341. package/node_modules/@nklisch/pi-plugins/dist/index.js.map +1 -0
  1342. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/adoption/node-foreign-state-files.d.ts +28 -0
  1343. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/adoption/node-foreign-state-files.js +208 -0
  1344. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/adoption/node-foreign-state-files.js.map +1 -0
  1345. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/archive/tar-reader.d.ts +15 -0
  1346. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/archive/tar-reader.js +516 -0
  1347. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/archive/tar-reader.js.map +1 -0
  1348. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/configuration/node-configuration-path.d.ts +13 -0
  1349. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/configuration/node-configuration-path.js +49 -0
  1350. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/configuration/node-configuration-path.js.map +1 -0
  1351. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/configuration/sqlite-plugin-configuration-store.d.ts +13 -0
  1352. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/configuration/sqlite-plugin-configuration-store.js +165 -0
  1353. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/configuration/sqlite-plugin-configuration-store.js.map +1 -0
  1354. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/control/node-control-headless-runner.d.ts +20 -0
  1355. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/control/node-control-headless-runner.js +205 -0
  1356. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/control/node-control-headless-runner.js.map +1 -0
  1357. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/control/node-control-input.d.ts +10 -0
  1358. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/control/node-control-input.js +229 -0
  1359. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/control/node-control-input.js.map +1 -0
  1360. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/control/node-json-lines-sink.d.ts +7 -0
  1361. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/control/node-json-lines-sink.js +126 -0
  1362. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/control/node-json-lines-sink.js.map +1 -0
  1363. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/environment/node-mcp-launch-environment.d.ts +3 -0
  1364. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/environment/node-mcp-launch-environment.js +67 -0
  1365. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/environment/node-mcp-launch-environment.js.map +1 -0
  1366. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/content-root-resolver.d.ts +13 -0
  1367. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/content-root-resolver.js +156 -0
  1368. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/content-root-resolver.js.map +1 -0
  1369. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/content-store-durability.d.ts +15 -0
  1370. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/content-store-durability.js +165 -0
  1371. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/content-store-durability.js.map +1 -0
  1372. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/content-store-layout.d.ts +56 -0
  1373. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/content-store-layout.js +280 -0
  1374. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/content-store-layout.js.map +1 -0
  1375. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/create-content-store.d.ts +29 -0
  1376. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/create-content-store.js +50 -0
  1377. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/create-content-store.js.map +1 -0
  1378. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/immutable-content-store.d.ts +2029 -0
  1379. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/immutable-content-store.js +541 -0
  1380. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/immutable-content-store.js.map +1 -0
  1381. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/installed-plugin-loader.d.ts +15 -0
  1382. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/installed-plugin-loader.js +80 -0
  1383. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/installed-plugin-loader.js.map +1 -0
  1384. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/manifest-backed-file.d.ts +15 -0
  1385. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/manifest-backed-file.js +169 -0
  1386. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/manifest-backed-file.js.map +1 -0
  1387. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/manifest-content-reader.d.ts +7 -0
  1388. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/manifest-content-reader.js +55 -0
  1389. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/manifest-content-reader.js.map +1 -0
  1390. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/manifest-skill-path-verifier.d.ts +6 -0
  1391. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/manifest-skill-path-verifier.js +73 -0
  1392. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/manifest-skill-path-verifier.js.map +1 -0
  1393. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/marketplace-local-source.d.ts +3 -0
  1394. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/marketplace-local-source.js +24 -0
  1395. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/marketplace-local-source.js.map +1 -0
  1396. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/persistent-data-removal.d.ts +8 -0
  1397. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/persistent-data-removal.js +37 -0
  1398. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/persistent-data-removal.js.map +1 -0
  1399. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/prepared-tree-cleanup.d.ts +11 -0
  1400. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/prepared-tree-cleanup.js +76 -0
  1401. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/prepared-tree-cleanup.js.map +1 -0
  1402. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/runtime-projection-cache.d.ts +10 -0
  1403. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/runtime-projection-cache.js +119 -0
  1404. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/runtime-projection-cache.js.map +1 -0
  1405. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/runtime-root-store.d.ts +55 -0
  1406. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/runtime-root-store.js +682 -0
  1407. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/runtime-root-store.js.map +1 -0
  1408. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/secure-content-writer.d.ts +34 -0
  1409. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/secure-content-writer.js +803 -0
  1410. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/secure-content-writer.js.map +1 -0
  1411. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/staging-allocator.d.ts +27 -0
  1412. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/staging-allocator.js +185 -0
  1413. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/staging-allocator.js.map +1 -0
  1414. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/git/git-source-acquirer.d.ts +15 -0
  1415. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/git/git-source-acquirer.js +560 -0
  1416. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/git/git-source-acquirer.js.map +1 -0
  1417. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/http/bounded-fetch.d.ts +59 -0
  1418. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/http/bounded-fetch.js +381 -0
  1419. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/http/bounded-fetch.js.map +1 -0
  1420. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/logging/redaction.d.ts +13 -0
  1421. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/logging/redaction.js +63 -0
  1422. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/logging/redaction.js.map +1 -0
  1423. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/network/network-egress-policy.d.ts +35 -0
  1424. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/network/network-egress-policy.js +251 -0
  1425. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/network/network-egress-policy.js.map +1 -0
  1426. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/node/node-control-timeout.d.ts +2 -0
  1427. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/node/node-control-timeout.js +26 -0
  1428. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/node/node-control-timeout.js.map +1 -0
  1429. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/node/node-identifiers.d.ts +16 -0
  1430. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/node/node-identifiers.js +47 -0
  1431. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/node/node-identifiers.js.map +1 -0
  1432. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/node/node-lifecycle-clock.d.ts +4 -0
  1433. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/node/node-lifecycle-clock.js +15 -0
  1434. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/node/node-lifecycle-clock.js.map +1 -0
  1435. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/npm/npm-registry-client.d.ts +28 -0
  1436. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/npm/npm-registry-client.js +392 -0
  1437. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/npm/npm-registry-client.js.map +1 -0
  1438. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/npm/npm-source-acquirer.d.ts +11 -0
  1439. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/npm/npm-source-acquirer.js +147 -0
  1440. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/npm/npm-source-acquirer.js.map +1 -0
  1441. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/process/command-runner.d.ts +17 -0
  1442. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/process/command-runner.js +334 -0
  1443. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/process/command-runner.js.map +1 -0
  1444. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/process/hook-executable-resolver.d.ts +13 -0
  1445. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/process/hook-executable-resolver.js +90 -0
  1446. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/process/hook-executable-resolver.js.map +1 -0
  1447. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/process/process-identity.d.ts +15 -0
  1448. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/process/process-identity.js +35 -0
  1449. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/process/process-identity.js.map +1 -0
  1450. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/process/refresh-claim-owner.d.ts +3 -0
  1451. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/process/refresh-claim-owner.js +13 -0
  1452. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/process/refresh-claim-owner.js.map +1 -0
  1453. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/project/node-project-intent-file.d.ts +7 -0
  1454. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/project/node-project-intent-file.js +314 -0
  1455. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/project/node-project-intent-file.js.map +1 -0
  1456. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/project/node-project-path-authority.d.ts +20 -0
  1457. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/project/node-project-path-authority.js +83 -0
  1458. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/project/node-project-path-authority.js.map +1 -0
  1459. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/project/node-project-root-resolver.d.ts +15 -0
  1460. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/project/node-project-root-resolver.js +73 -0
  1461. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/project/node-project-root-resolver.js.map +1 -0
  1462. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/create-node-recovery-adapters.d.ts +23 -0
  1463. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/create-node-recovery-adapters.js +81 -0
  1464. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/create-node-recovery-adapters.js.map +1 -0
  1465. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/local-recovery-filesystem.d.ts +17 -0
  1466. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/local-recovery-filesystem.js +84 -0
  1467. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/local-recovery-filesystem.js.map +1 -0
  1468. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/process-revision-leases.d.ts +7 -0
  1469. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/process-revision-leases.js +97 -0
  1470. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/process-revision-leases.js.map +1 -0
  1471. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/recovery-artifact-scanner.d.ts +3 -0
  1472. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/recovery-artifact-scanner.js +83 -0
  1473. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/recovery-artifact-scanner.js.map +1 -0
  1474. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/revision-artifact-store.d.ts +3 -0
  1475. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/revision-artifact-store.js +178 -0
  1476. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/revision-artifact-store.js.map +1 -0
  1477. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-revision-retention.d.ts +7 -0
  1478. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-revision-retention.js +73 -0
  1479. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-revision-retention.js.map +1 -0
  1480. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-transition-journal.d.ts +24 -0
  1481. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-transition-journal.js +463 -0
  1482. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-transition-journal.js.map +1 -0
  1483. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/secrets/create-platform-secret-store.d.ts +20 -0
  1484. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/secrets/create-platform-secret-store.js +23 -0
  1485. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/secrets/create-platform-secret-store.js.map +1 -0
  1486. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/secrets/unavailable-secret-store.d.ts +10 -0
  1487. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/secrets/unavailable-secret-store.js +22 -0
  1488. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/secrets/unavailable-secret-store.js.map +1 -0
  1489. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/source/create-source-materializers.d.ts +27 -0
  1490. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/source/create-source-materializers.js +75 -0
  1491. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/source/create-source-materializers.js.map +1 -0
  1492. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/identity-bound-sqlite.d.ts +22 -0
  1493. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/identity-bound-sqlite.js +256 -0
  1494. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/identity-bound-sqlite.js.map +1 -0
  1495. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/keyed-mutation-scheduler.d.ts +5 -0
  1496. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/keyed-mutation-scheduler.js +17 -0
  1497. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/keyed-mutation-scheduler.js.map +1 -0
  1498. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/lifecycle-state-defaults.d.ts +13 -0
  1499. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/lifecycle-state-defaults.js +36 -0
  1500. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/lifecycle-state-defaults.js.map +1 -0
  1501. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/local-lock-filesystem.d.ts +10 -0
  1502. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/local-lock-filesystem.js +101 -0
  1503. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/local-lock-filesystem.js.map +1 -0
  1504. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-lifecycle-state-store.d.ts +30 -0
  1505. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-lifecycle-state-store.js +502 -0
  1506. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-lifecycle-state-store.js.map +1 -0
  1507. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-scope-lock.d.ts +25 -0
  1508. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-scope-lock.js +826 -0
  1509. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-scope-lock.js.map +1 -0
  1510. package/node_modules/@nklisch/pi-plugins/dist/pi/extension.d.ts +3 -0
  1511. package/node_modules/@nklisch/pi-plugins/dist/pi/extension.js +40 -0
  1512. package/node_modules/@nklisch/pi-plugins/dist/pi/extension.js.map +1 -0
  1513. package/node_modules/@nklisch/pi-plugins/dist/pi/hooks/pi-command-hook-runtime.d.ts +18 -0
  1514. package/node_modules/@nklisch/pi-plugins/dist/pi/hooks/pi-command-hook-runtime.js +181 -0
  1515. package/node_modules/@nklisch/pi-plugins/dist/pi/hooks/pi-command-hook-runtime.js.map +1 -0
  1516. package/node_modules/@nklisch/pi-plugins/dist/pi/hooks/pi-hook-decision-adapter.d.ts +23 -0
  1517. package/node_modules/@nklisch/pi-plugins/dist/pi/hooks/pi-hook-decision-adapter.js +118 -0
  1518. package/node_modules/@nklisch/pi-plugins/dist/pi/hooks/pi-hook-decision-adapter.js.map +1 -0
  1519. package/node_modules/@nklisch/pi-plugins/dist/pi/hooks/pi-hook-event-adapter.d.ts +25 -0
  1520. package/node_modules/@nklisch/pi-plugins/dist/pi/hooks/pi-hook-event-adapter.js +48 -0
  1521. package/node_modules/@nklisch/pi-plugins/dist/pi/hooks/pi-hook-event-adapter.js.map +1 -0
  1522. package/node_modules/@nklisch/pi-plugins/dist/pi/hooks/pi-session-evidence.d.ts +5 -0
  1523. package/node_modules/@nklisch/pi-plugins/dist/pi/hooks/pi-session-evidence.js +28 -0
  1524. package/node_modules/@nklisch/pi-plugins/dist/pi/hooks/pi-session-evidence.js.map +1 -0
  1525. package/node_modules/@nklisch/pi-plugins/dist/pi/index.d.ts +4 -0
  1526. package/node_modules/@nklisch/pi-plugins/dist/pi/index.js +3 -0
  1527. package/node_modules/@nklisch/pi-plugins/dist/pi/index.js.map +1 -0
  1528. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/confirmation-surface.d.ts +36 -0
  1529. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/confirmation-surface.js +106 -0
  1530. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/confirmation-surface.js.map +1 -0
  1531. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/masked-input-surface.d.ts +32 -0
  1532. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/masked-input-surface.js +114 -0
  1533. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/masked-input-surface.js.map +1 -0
  1534. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/pi-control-input.d.ts +30 -0
  1535. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/pi-control-input.js +196 -0
  1536. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/pi-control-input.js.map +1 -0
  1537. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/pi-manager-frame-sink.d.ts +7 -0
  1538. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/pi-manager-frame-sink.js +22 -0
  1539. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/pi-manager-frame-sink.js.map +1 -0
  1540. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/pi-terminal-text.d.ts +13 -0
  1541. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/pi-terminal-text.js +32 -0
  1542. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/pi-terminal-text.js.map +1 -0
  1543. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-install-component.d.ts +42 -0
  1544. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-install-component.js +339 -0
  1545. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-install-component.js.map +1 -0
  1546. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-install-flow.d.ts +76 -0
  1547. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-install-flow.js +115 -0
  1548. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-install-flow.js.map +1 -0
  1549. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-actions.d.ts +93 -0
  1550. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-actions.js +193 -0
  1551. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-actions.js.map +1 -0
  1552. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-commands.d.ts +29 -0
  1553. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-commands.js +86 -0
  1554. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-commands.js.map +1 -0
  1555. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-component.d.ts +41 -0
  1556. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-component.js +290 -0
  1557. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-component.js.map +1 -0
  1558. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-controller.d.ts +40 -0
  1559. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-controller.js +477 -0
  1560. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-controller.js.map +1 -0
  1561. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-model.d.ts +291 -0
  1562. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-model.js +301 -0
  1563. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-model.js.map +1 -0
  1564. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-render.d.ts +10 -0
  1565. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-render.js +310 -0
  1566. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-render.js.map +1 -0
  1567. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-session.d.ts +14 -0
  1568. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-session.js +722 -0
  1569. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-session.js.map +1 -0
  1570. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-status.d.ts +73 -0
  1571. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-status.js +102 -0
  1572. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-status.js.map +1 -0
  1573. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-operation-view.d.ts +41 -0
  1574. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-operation-view.js +178 -0
  1575. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-operation-view.js.map +1 -0
  1576. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/text-input-surface.d.ts +32 -0
  1577. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/text-input-surface.js +119 -0
  1578. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/text-input-surface.js.map +1 -0
  1579. package/node_modules/@nklisch/pi-plugins/dist/pi/native-control-human.d.ts +7 -0
  1580. package/node_modules/@nklisch/pi-plugins/dist/pi/native-control-human.js +103 -0
  1581. package/node_modules/@nklisch/pi-plugins/dist/pi/native-control-human.js.map +1 -0
  1582. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-control-channel.d.ts +15 -0
  1583. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-control-channel.js +132 -0
  1584. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-control-channel.js.map +1 -0
  1585. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-manager-reload-handoff.d.ts +28 -0
  1586. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-manager-reload-handoff.js +110 -0
  1587. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-manager-reload-handoff.js.map +1 -0
  1588. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-project-context.d.ts +22 -0
  1589. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-project-context.js +79 -0
  1590. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-project-context.js.map +1 -0
  1591. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-reload-broker.d.ts +24 -0
  1592. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-reload-broker.js +77 -0
  1593. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-reload-broker.js.map +1 -0
  1594. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-session-binding.d.ts +4 -0
  1595. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-session-binding.js +59 -0
  1596. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-session-binding.js.map +1 -0
  1597. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-subagent-session-context.d.ts +8 -0
  1598. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-subagent-session-context.js +20 -0
  1599. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-subagent-session-context.js.map +1 -0
  1600. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-update-notification-publisher.d.ts +16 -0
  1601. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-update-notification-publisher.js +66 -0
  1602. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-update-notification-publisher.js.map +1 -0
  1603. package/node_modules/@nklisch/pi-plugins/dist/pi/plain-language.d.ts +23 -0
  1604. package/node_modules/@nklisch/pi-plugins/dist/pi/plain-language.js +97 -0
  1605. package/node_modules/@nklisch/pi-plugins/dist/pi/plain-language.js.map +1 -0
  1606. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-command.d.ts +40 -0
  1607. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-command.js +162 -0
  1608. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-command.js.map +1 -0
  1609. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-host-bootstrap.d.ts +28 -0
  1610. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-host-bootstrap.js +119 -0
  1611. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-host-bootstrap.js.map +1 -0
  1612. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-host-runtime-delegates.d.ts +16 -0
  1613. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-host-runtime-delegates.js +79 -0
  1614. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-host-runtime-delegates.js.map +1 -0
  1615. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-manager-lifecycle.d.ts +19 -0
  1616. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-manager-lifecycle.js +41 -0
  1617. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-manager-lifecycle.js.map +1 -0
  1618. package/node_modules/@nklisch/pi-plugins/dist/pi/production-subagents-extension.d.ts +7 -0
  1619. package/node_modules/@nklisch/pi-plugins/dist/pi/production-subagents-extension.js +11 -0
  1620. package/node_modules/@nklisch/pi-plugins/dist/pi/production-subagents-extension.js.map +1 -0
  1621. package/node_modules/@nklisch/pi-plugins/dist/pi/skill-resource-discovery.d.ts +4 -0
  1622. package/node_modules/@nklisch/pi-plugins/dist/pi/skill-resource-discovery.js +45 -0
  1623. package/node_modules/@nklisch/pi-plugins/dist/pi/skill-resource-discovery.js.map +1 -0
  1624. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/event-contract.d.ts +3155 -0
  1625. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/event-contract.js +156 -0
  1626. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/event-contract.js.map +1 -0
  1627. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/event-input.d.ts +105 -0
  1628. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/event-input.js +103 -0
  1629. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/event-input.js.map +1 -0
  1630. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/guarded-command-executor.d.ts +29 -0
  1631. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/guarded-command-executor.js +229 -0
  1632. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/guarded-command-executor.js.map +1 -0
  1633. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/hook-decision-aggregator.d.ts +15 -0
  1634. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/hook-decision-aggregator.js +123 -0
  1635. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/hook-decision-aggregator.js.map +1 -0
  1636. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/hook-event-planner.d.ts +13 -0
  1637. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/hook-event-planner.js +248 -0
  1638. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/hook-event-planner.js.map +1 -0
  1639. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/hook-failure-log.d.ts +27 -0
  1640. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/hook-failure-log.js +63 -0
  1641. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/hook-failure-log.js.map +1 -0
  1642. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/hook-launch-contract.d.ts +27 -0
  1643. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/hook-launch-contract.js +98 -0
  1644. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/hook-launch-contract.js.map +1 -0
  1645. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/hook-output-parser.d.ts +18 -0
  1646. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/hook-output-parser.js +182 -0
  1647. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/hook-output-parser.js.map +1 -0
  1648. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/hook-runtime-diagnostic.d.ts +107 -0
  1649. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/hook-runtime-diagnostic.js +64 -0
  1650. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/hook-runtime-diagnostic.js.map +1 -0
  1651. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/stop-continuation-guard.d.ts +11 -0
  1652. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/stop-continuation-guard.js +27 -0
  1653. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/stop-continuation-guard.js.map +1 -0
  1654. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/tool-event-input.d.ts +38 -0
  1655. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/tool-event-input.js +129 -0
  1656. package/node_modules/@nklisch/pi-plugins/dist/runtime/hooks/tool-event-input.js.map +1 -0
  1657. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/launch-error.d.ts +5 -0
  1658. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/launch-error.js +29 -0
  1659. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/launch-error.js.map +1 -0
  1660. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/launch-value-provider.d.ts +16 -0
  1661. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/launch-value-provider.js +405 -0
  1662. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/launch-value-provider.js.map +1 -0
  1663. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/lifecycle-participant.d.ts +336 -0
  1664. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/lifecycle-participant.js +544 -0
  1665. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/lifecycle-participant.js.map +1 -0
  1666. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/pi-mcp-adapter-package.d.ts +5 -0
  1667. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/pi-mcp-adapter-package.js +50 -0
  1668. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/pi-mcp-adapter-package.js.map +1 -0
  1669. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/pi-mcp-adapter-runtime.d.ts +23 -0
  1670. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/pi-mcp-adapter-runtime.js +366 -0
  1671. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/pi-mcp-adapter-runtime.js.map +1 -0
  1672. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/revision-lease-provider.d.ts +18 -0
  1673. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/revision-lease-provider.js +180 -0
  1674. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/revision-lease-provider.js.map +1 -0
  1675. package/node_modules/@nklisch/pi-plugins/dist/runtime/plugin-launch-roots.d.ts +11 -0
  1676. package/node_modules/@nklisch/pi-plugins/dist/runtime/plugin-launch-roots.js +12 -0
  1677. package/node_modules/@nklisch/pi-plugins/dist/runtime/plugin-launch-roots.js.map +1 -0
  1678. package/node_modules/@nklisch/pi-plugins/dist/runtime/published-package-receipt.d.ts +35 -0
  1679. package/node_modules/@nklisch/pi-plugins/dist/runtime/published-package-receipt.js +180 -0
  1680. package/node_modules/@nklisch/pi-plugins/dist/runtime/published-package-receipt.js.map +1 -0
  1681. package/node_modules/@nklisch/pi-plugins/dist/runtime/skill-hook/lifecycle-participant.d.ts +30 -0
  1682. package/node_modules/@nklisch/pi-plugins/dist/runtime/skill-hook/lifecycle-participant.js +180 -0
  1683. package/node_modules/@nklisch/pi-plugins/dist/runtime/skill-hook/lifecycle-participant.js.map +1 -0
  1684. package/node_modules/@nklisch/pi-plugins/dist/runtime/skill-hook/runtime-catalog.d.ts +35 -0
  1685. package/node_modules/@nklisch/pi-plugins/dist/runtime/skill-hook/runtime-catalog.js +72 -0
  1686. package/node_modules/@nklisch/pi-plugins/dist/runtime/skill-hook/runtime-catalog.js.map +1 -0
  1687. package/node_modules/@nklisch/pi-plugins/dist/runtime/skill-hook/runtime-snapshot.d.ts +57 -0
  1688. package/node_modules/@nklisch/pi-plugins/dist/runtime/skill-hook/runtime-snapshot.js +223 -0
  1689. package/node_modules/@nklisch/pi-plugins/dist/runtime/skill-hook/runtime-snapshot.js.map +1 -0
  1690. package/node_modules/@nklisch/pi-plugins/dist/runtime/skills/contribution-observation.d.ts +158 -0
  1691. package/node_modules/@nklisch/pi-plugins/dist/runtime/skills/contribution-observation.js +177 -0
  1692. package/node_modules/@nklisch/pi-plugins/dist/runtime/skills/contribution-observation.js.map +1 -0
  1693. package/node_modules/@nklisch/pi-plugins/dist/runtime/skills/resource-discovery.d.ts +59 -0
  1694. package/node_modules/@nklisch/pi-plugins/dist/runtime/skills/resource-discovery.js +263 -0
  1695. package/node_modules/@nklisch/pi-plugins/dist/runtime/skills/resource-discovery.js.map +1 -0
  1696. package/node_modules/@nklisch/pi-plugins/dist/runtime/subagents/pi-subagents-lifecycle.d.ts +12 -0
  1697. package/node_modules/@nklisch/pi-plugins/dist/runtime/subagents/pi-subagents-lifecycle.js +353 -0
  1698. package/node_modules/@nklisch/pi-plugins/dist/runtime/subagents/pi-subagents-lifecycle.js.map +1 -0
  1699. package/node_modules/@nklisch/pi-plugins/dist/runtime/subagents/pi-subagents-package.d.ts +8 -0
  1700. package/node_modules/@nklisch/pi-plugins/dist/runtime/subagents/pi-subagents-package.js +91 -0
  1701. package/node_modules/@nklisch/pi-plugins/dist/runtime/subagents/pi-subagents-package.js.map +1 -0
  1702. package/node_modules/@nklisch/pi-plugins/dist/runtime/subagents/subagent-hook-coordinator.d.ts +22 -0
  1703. package/node_modules/@nklisch/pi-plugins/dist/runtime/subagents/subagent-hook-coordinator.js +318 -0
  1704. package/node_modules/@nklisch/pi-plugins/dist/runtime/subagents/subagent-hook-coordinator.js.map +1 -0
  1705. package/node_modules/@nklisch/pi-plugins/dist/runtime/subagents/subagent-hook-session-context.d.ts +8 -0
  1706. package/node_modules/@nklisch/pi-plugins/dist/runtime/subagents/subagent-hook-session-context.js +2 -0
  1707. package/node_modules/@nklisch/pi-plugins/dist/runtime/subagents/subagent-hook-session-context.js.map +1 -0
  1708. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/CHANGELOG.md +2197 -0
  1709. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/LICENSE +21 -0
  1710. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/README.md +430 -0
  1711. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/dist/public.d.ts +255 -0
  1712. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/dist/settings.d.ts +82 -0
  1713. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/FORK-MAINTENANCE.md +38 -0
  1714. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/VISION.md +32 -0
  1715. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/architecture.md +1246 -0
  1716. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/client-server-opportunities.md +127 -0
  1717. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/history/phase-1-api-boundary.md +8 -0
  1718. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/history/phase-10-structural-decomposition.md +141 -0
  1719. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/history/phase-11-closure-to-class.md +100 -0
  1720. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/history/phase-12-complexity-test-fixtures.md +55 -0
  1721. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/history/phase-13-remaining-smells.md +88 -0
  1722. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/history/phase-14-strip-policy.md +49 -0
  1723. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/history/phase-15-domain-model-evolution.md +73 -0
  1724. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/history/phase-16-invert-dependencies.md +144 -0
  1725. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/history/phase-17-core-consolidation.md +214 -0
  1726. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/history/phase-18-reconsider-ui.md +166 -0
  1727. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/history/phase-19-implement-ui-decisions.md +282 -0
  1728. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/history/phase-2-remove-scheduling.md +9 -0
  1729. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/history/phase-3-remove-rpc-groupjoin.md +11 -0
  1730. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/history/phase-4-implement-service.md +8 -0
  1731. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/history/phase-5-decompose-index.md +42 -0
  1732. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/history/phase-7-encapsulation.md +173 -0
  1733. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/history/phase-8-testability.md +103 -0
  1734. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/architecture/history/phase-9-observation-ctx.md +122 -0
  1735. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/comparison-with-upstream.md +77 -0
  1736. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/decisions/0001-deferred-patches.md +80 -0
  1737. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/decisions/0002-extensions-on-a-minimal-core.md +98 -0
  1738. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/decisions/0003-publish-bundled-type-declarations.md +71 -0
  1739. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/decisions/0004-reconsider-ui-direction.md +279 -0
  1740. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/docs/decisions/0005-ordered-lifecycle-interceptors.md +40 -0
  1741. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/package.json +89 -0
  1742. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/config/agent-types.ts +133 -0
  1743. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/config/custom-agents.ts +106 -0
  1744. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/config/default-agents.ts +120 -0
  1745. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/config/invocation-config.ts +30 -0
  1746. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/debug.ts +14 -0
  1747. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/handlers/index.ts +3 -0
  1748. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/handlers/interrupt.ts +49 -0
  1749. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/handlers/lifecycle.ts +63 -0
  1750. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/handlers/tool-start.ts +32 -0
  1751. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/index.ts +188 -0
  1752. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/layered-settings.ts +105 -0
  1753. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/lifecycle/child-lifecycle.ts +90 -0
  1754. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/lifecycle/concurrency-limiter.ts +60 -0
  1755. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/lifecycle/create-subagent-session.ts +245 -0
  1756. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/lifecycle/lifecycle-interceptor.ts +407 -0
  1757. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/lifecycle/parent-snapshot.ts +48 -0
  1758. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/lifecycle/run-listeners.ts +37 -0
  1759. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/lifecycle/subagent-manager.ts +397 -0
  1760. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/lifecycle/subagent-session.ts +368 -0
  1761. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/lifecycle/subagent-state.ts +201 -0
  1762. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/lifecycle/subagent.ts +531 -0
  1763. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/lifecycle/turn-limits.ts +13 -0
  1764. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/lifecycle/usage.ts +60 -0
  1765. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/lifecycle/workspace-bracket.ts +59 -0
  1766. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/lifecycle/workspace.ts +47 -0
  1767. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/observation/composite-subagent-observer.ts +49 -0
  1768. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/observation/notification.ts +205 -0
  1769. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/observation/record-observer.ts +78 -0
  1770. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/observation/renderer.ts +67 -0
  1771. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/observation/subagent-events-observer.ts +92 -0
  1772. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/runtime.ts +79 -0
  1773. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/service/service-adapter.ts +156 -0
  1774. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/service/service.ts +154 -0
  1775. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/session/content-items.ts +53 -0
  1776. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/session/context.ts +80 -0
  1777. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/session/conversation.ts +49 -0
  1778. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/session/env.ts +40 -0
  1779. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/session/model-resolver.ts +122 -0
  1780. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/session/prompts.ts +92 -0
  1781. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/session/session-config.ts +187 -0
  1782. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/session/session-dir.ts +38 -0
  1783. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/settings.ts +228 -0
  1784. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/tools/agent-tool.ts +247 -0
  1785. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/tools/background-spawner.ts +72 -0
  1786. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/tools/foreground-runner.ts +133 -0
  1787. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/tools/get-result-report.ts +60 -0
  1788. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/tools/get-result-tool.ts +108 -0
  1789. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/tools/helpers.ts +121 -0
  1790. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/tools/result-renderer.ts +122 -0
  1791. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/tools/spawn-config.ts +157 -0
  1792. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/tools/steer-tool.ts +109 -0
  1793. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/types.ts +119 -0
  1794. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/ui/agent-widget.ts +300 -0
  1795. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/ui/display.ts +177 -0
  1796. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/ui/session-navigation.ts +145 -0
  1797. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/ui/session-navigator.ts +402 -0
  1798. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/ui/subagents-settings.ts +83 -0
  1799. package/node_modules/@nklisch/pi-plugins/node_modules/@nklisch/pi-subagents/src/ui/widget-renderer.ts +292 -0
  1800. package/node_modules/@nklisch/pi-plugins/package.json +95 -0
  1801. package/node_modules/pi-catppuccin-tui/LICENSE +21 -0
  1802. package/node_modules/pi-catppuccin-tui/README.md +115 -0
  1803. package/node_modules/pi-catppuccin-tui/assets/preview.svg +49 -0
  1804. package/node_modules/pi-catppuccin-tui/extensions/catppuccin-tui.ts +336 -0
  1805. package/node_modules/pi-catppuccin-tui/package.json +41 -0
  1806. package/node_modules/pi-catppuccin-tui/scripts/generate-themes.mjs +217 -0
  1807. package/node_modules/pi-catppuccin-tui/scripts/validate-extension.mjs +33 -0
  1808. package/node_modules/pi-catppuccin-tui/scripts/validate-themes.mjs +140 -0
  1809. package/node_modules/pi-catppuccin-tui/themes/catppuccin-tui-frappe.json +90 -0
  1810. package/node_modules/pi-catppuccin-tui/themes/catppuccin-tui-latte.json +90 -0
  1811. package/node_modules/pi-catppuccin-tui/themes/catppuccin-tui-macchiato.json +90 -0
  1812. package/node_modules/pi-catppuccin-tui/themes/catppuccin-tui-mocha.json +90 -0
  1813. package/node_modules/pi-tool-display/CHANGELOG.md +326 -0
  1814. package/node_modules/pi-tool-display/LICENSE +21 -0
  1815. package/node_modules/pi-tool-display/README.md +413 -0
  1816. package/node_modules/pi-tool-display/config/config.example.json +39 -0
  1817. package/node_modules/pi-tool-display/index.ts +3 -0
  1818. package/node_modules/pi-tool-display/package.json +86 -0
  1819. package/node_modules/pi-tool-display/src/agent-dir.ts +32 -0
  1820. package/node_modules/pi-tool-display/src/ansi-utils.ts +116 -0
  1821. package/node_modules/pi-tool-display/src/bash-display.ts +212 -0
  1822. package/node_modules/pi-tool-display/src/capabilities.ts +85 -0
  1823. package/node_modules/pi-tool-display/src/config-modal.ts +514 -0
  1824. package/node_modules/pi-tool-display/src/config-store.ts +303 -0
  1825. package/node_modules/pi-tool-display/src/debug-logger.ts +150 -0
  1826. package/node_modules/pi-tool-display/src/diff-presentation.ts +72 -0
  1827. package/node_modules/pi-tool-display/src/diff-renderer.ts +2517 -0
  1828. package/node_modules/pi-tool-display/src/disposable.ts +34 -0
  1829. package/node_modules/pi-tool-display/src/extension-lifecycle.ts +14 -0
  1830. package/node_modules/pi-tool-display/src/index.ts +109 -0
  1831. package/node_modules/pi-tool-display/src/line-width-safety.ts +93 -0
  1832. package/node_modules/pi-tool-display/src/modal-icons.ts +57 -0
  1833. package/node_modules/pi-tool-display/src/pending-diff-preview.ts +370 -0
  1834. package/node_modules/pi-tool-display/src/presets.ts +108 -0
  1835. package/node_modules/pi-tool-display/src/render-utils.ts +186 -0
  1836. package/node_modules/pi-tool-display/src/settings-inspector-modal.ts +475 -0
  1837. package/node_modules/pi-tool-display/src/thinking-label.ts +343 -0
  1838. package/node_modules/pi-tool-display/src/tool-metadata.ts +139 -0
  1839. package/node_modules/pi-tool-display/src/tool-overrides.ts +2121 -0
  1840. package/node_modules/pi-tool-display/src/types.ts +105 -0
  1841. package/node_modules/pi-tool-display/src/user-message-box-markdown.ts +64 -0
  1842. package/node_modules/pi-tool-display/src/user-message-box-native.ts +66 -0
  1843. package/node_modules/pi-tool-display/src/user-message-box-patch.ts +72 -0
  1844. package/node_modules/pi-tool-display/src/user-message-box-renderer.ts +419 -0
  1845. package/node_modules/pi-tool-display/src/user-message-box-utils.ts +106 -0
  1846. package/node_modules/pi-tool-display/src/write-display-utils.ts +31 -0
  1847. package/node_modules/pi-tool-display/src/zellij-modal.ts +1027 -0
  1848. package/node_modules/pi-tool-display/tool-display-api-consumer.d.ts +30 -0
  1849. package/node_modules/pi-tool-display/tool-display-api-consumer.js +40 -0
  1850. package/node_modules/pi-web-access/CHANGELOG.md +437 -0
  1851. package/node_modules/pi-web-access/LICENSE +21 -0
  1852. package/node_modules/pi-web-access/README.md +357 -0
  1853. package/node_modules/pi-web-access/activity.ts +101 -0
  1854. package/node_modules/pi-web-access/banner.png +0 -0
  1855. package/node_modules/pi-web-access/brave.ts +210 -0
  1856. package/node_modules/pi-web-access/chrome-cookies.ts +322 -0
  1857. package/node_modules/pi-web-access/curator-page.ts +3399 -0
  1858. package/node_modules/pi-web-access/curator-server.ts +657 -0
  1859. package/node_modules/pi-web-access/exa.ts +454 -0
  1860. package/node_modules/pi-web-access/extract.ts +704 -0
  1861. package/node_modules/pi-web-access/fetch-params.ts +67 -0
  1862. package/node_modules/pi-web-access/gemini-api.ts +163 -0
  1863. package/node_modules/pi-web-access/gemini-search.ts +431 -0
  1864. package/node_modules/pi-web-access/gemini-url-context.ts +126 -0
  1865. package/node_modules/pi-web-access/gemini-web-config.ts +51 -0
  1866. package/node_modules/pi-web-access/gemini-web.ts +411 -0
  1867. package/node_modules/pi-web-access/github-api.ts +196 -0
  1868. package/node_modules/pi-web-access/github-extract.ts +634 -0
  1869. package/node_modules/pi-web-access/index.ts +2598 -0
  1870. package/node_modules/pi-web-access/openai-search.ts +399 -0
  1871. package/node_modules/pi-web-access/package.json +51 -0
  1872. package/node_modules/pi-web-access/parallel.ts +360 -0
  1873. package/node_modules/pi-web-access/pdf-extract.ts +192 -0
  1874. package/node_modules/pi-web-access/perplexity.ts +194 -0
  1875. package/node_modules/pi-web-access/pi-web-fetch-demo.mp4 +0 -0
  1876. package/node_modules/pi-web-access/render-search-error.ts +170 -0
  1877. package/node_modules/pi-web-access/rsc-extract.ts +338 -0
  1878. package/node_modules/pi-web-access/skills/librarian/SKILL.md +195 -0
  1879. package/node_modules/pi-web-access/ssrf-protection.ts +280 -0
  1880. package/node_modules/pi-web-access/storage.ts +72 -0
  1881. package/node_modules/pi-web-access/summary-model-scope.ts +88 -0
  1882. package/node_modules/pi-web-access/summary-review.ts +326 -0
  1883. package/node_modules/pi-web-access/tavily.ts +205 -0
  1884. package/node_modules/pi-web-access/test/auto-summary-source.test.mjs +26 -0
  1885. package/node_modules/pi-web-access/test/config-path.test.mjs +177 -0
  1886. package/node_modules/pi-web-access/test/curator-fallback.test.mjs +33 -0
  1887. package/node_modules/pi-web-access/test/curator-server-timeout.test.mjs +106 -0
  1888. package/node_modules/pi-web-access/test/fetch-params.test.mjs +68 -0
  1889. package/node_modules/pi-web-access/test/gemini-web-cookie-opt-in.test.mjs +43 -0
  1890. package/node_modules/pi-web-access/test/parallel-curator-state.test.mjs +22 -0
  1891. package/node_modules/pi-web-access/test/parallel.test.mjs +145 -0
  1892. package/node_modules/pi-web-access/test/pdf-extract.test.mjs +95 -0
  1893. package/node_modules/pi-web-access/test/search-error-render.test.mjs +155 -0
  1894. package/node_modules/pi-web-access/test/search-providers.test.mjs +285 -0
  1895. package/node_modules/pi-web-access/test/ssrf-allow-ranges-config.test.mjs +111 -0
  1896. package/node_modules/pi-web-access/test/ssrf-protection.test.mjs +213 -0
  1897. package/node_modules/pi-web-access/test/summary-model-scope.test.mjs +72 -0
  1898. package/node_modules/pi-web-access/test/tool-registration-config.test.mjs +24 -0
  1899. package/node_modules/pi-web-access/test/youtube-extract-errors.test.mjs +64 -0
  1900. package/node_modules/pi-web-access/utils.ts +57 -0
  1901. package/node_modules/pi-web-access/video-extract.ts +377 -0
  1902. package/node_modules/pi-web-access/youtube-extract.ts +326 -0
  1903. package/package.json +90 -0
  1904. package/test/verify-bundle.mjs +55 -0
@@ -0,0 +1,2517 @@
1
+ import { Text, truncateToWidth, visibleWidth, wrapTextWithAnsi, type Component } from "@earendil-works/pi-tui";
2
+ import { getLanguageFromPath, highlightCode, type EditToolDetails } from "@earendil-works/pi-coding-agent";
3
+ import { ANSI_SGR_PATTERN, STYLE_RESET_PARAMS, filterSgrSequences, toSgrParams, readSgrColorSequence, isFiniteSgrParam, expandSgrReset } from "./ansi-utils.js";
4
+ import {
5
+ buildCollapsedDiffHintText,
6
+ clampRenderedLineToWidth,
7
+ clampRenderedLinesToWidth,
8
+ } from "./line-width-safety.js";
9
+ import {
10
+ buildDiffSummaryText,
11
+ normalizeDiffRenderWidth,
12
+ resolveDiffPresentationMode,
13
+ type DiffPresentationMode,
14
+ } from "./diff-presentation.js";
15
+ import { pluralize, sanitizeAnsiForThemedOutput } from "./render-utils.js";
16
+ import { splitWriteContentLines } from "./write-display-utils.js";
17
+ import { DEFAULT_TOOL_DISPLAY_CONFIG, type DiffIndicatorMode, type ToolDisplayConfig } from "./types.js";
18
+
19
+ interface DiffTheme {
20
+ fg(color: string, text: string): string;
21
+ bg?(color: string, text: string): string;
22
+ bold?(text: string): string;
23
+ getFgAnsi?(color: string): string;
24
+ getBgAnsi?(color: string): string;
25
+ }
26
+
27
+ type DiffLineKind = "add" | "remove" | "context";
28
+ type DiffEntryKind = "line" | "meta" | "hunk" | "file";
29
+
30
+ interface DiffLineEntry {
31
+ kind: "line";
32
+ lineKind: DiffLineKind;
33
+ oldLineNumber: number | null;
34
+ newLineNumber: number | null;
35
+ fallbackLineNumber: string;
36
+ content: string;
37
+ hashlineAnchorContent?: string;
38
+ raw: string;
39
+ hunkIndex: number;
40
+ }
41
+
42
+ interface DiffMetaEntry {
43
+ kind: Exclude<DiffEntryKind, "line">;
44
+ raw: string;
45
+ hunkIndex: number;
46
+ }
47
+
48
+ type ParsedDiffEntry = DiffLineEntry | DiffMetaEntry;
49
+
50
+ interface ParsedDiff {
51
+ entries: ParsedDiffEntry[];
52
+ stats: DiffStats;
53
+ }
54
+
55
+ interface DiffStats {
56
+ added: number;
57
+ removed: number;
58
+ context: number;
59
+ hunks: number;
60
+ files: number;
61
+ lines: number;
62
+ }
63
+
64
+ interface RenderedRow {
65
+ text: string;
66
+ hunkIndex: number | null;
67
+ }
68
+
69
+ interface SplitDiffRow {
70
+ left?: DiffLineEntry;
71
+ right?: DiffLineEntry;
72
+ meta?: DiffMetaEntry;
73
+ hunkIndex: number | null;
74
+ }
75
+
76
+ interface DiffSpan {
77
+ start: number;
78
+ end: number;
79
+ }
80
+
81
+ interface RgbColor {
82
+ r: number;
83
+ g: number;
84
+ b: number;
85
+ }
86
+
87
+ interface DiffPalette {
88
+ addRowBgAnsi: string;
89
+ removeRowBgAnsi: string;
90
+ addEmphasisBgAnsi: string;
91
+ removeEmphasisBgAnsi: string;
92
+ }
93
+
94
+ interface DiffRenderOptions {
95
+ expanded: boolean;
96
+ filePath?: string;
97
+ previousContent?: string;
98
+ fileExistedBeforeWrite?: boolean;
99
+ headerLabel?: string;
100
+ }
101
+
102
+ type CodeLineHighlighter = (line: string) => string;
103
+
104
+ const CANONICAL_LINE_PATTERN = /^([+\- ])(\s*\d+)\|(.*)$/;
105
+ const HASHLINE_ANCHOR_LINE_PATTERN = /^([+\- ])(\s*\d+)#([A-Za-z0-9]+| {2}):(.*)$/;
106
+ const LEGACY_LINE_PATTERN = /^([+\- ])(\s*\d+)\s(.*)$/;
107
+ const HUNK_HEADER_PATTERN = /^@@\s+-(\d+)(?:,(\d+))?\s+\+(\d+)(?:,(\d+))?\s+@@(.*)$/;
108
+ const SPLIT_SEPARATOR = " │ ";
109
+ const MIN_LINE_NUMBER_WIDTH = 2;
110
+ const MIN_SPLIT_COLUMN_WIDTH = 24;
111
+ const MAX_INLINE_DIFF_LINE_LENGTH = 700;
112
+ const ADD_ROW_BACKGROUND_MIX_RATIO = 0.12;
113
+ const REMOVE_ROW_BACKGROUND_MIX_RATIO = 0.12;
114
+ const ADD_INLINE_EMPHASIS_MIX_RATIO = 0.26;
115
+ const REMOVE_INLINE_EMPHASIS_MIX_RATIO = 0.26;
116
+ const ADDITION_TINT_TARGET: RgbColor = { r: 84, g: 190, b: 118 };
117
+ const DELETION_TINT_TARGET: RgbColor = { r: 232, g: 95, b: 122 };
118
+ const ANSI_BG_RESET = "\x1b[49m";
119
+ const DIFF_WIDTH_OPS = {
120
+ measure: visibleWidth,
121
+ truncate: (text: string, maxWidth: number): string => truncateToWidth(text, maxWidth, ""),
122
+ };
123
+
124
+ function clampDiffLineToWidth(text: string, width: number): string {
125
+ return stabilizeBackgroundResets(clampRenderedLineToWidth(text, width, DIFF_WIDTH_OPS));
126
+ }
127
+
128
+ function clampDiffLinesToWidth(lines: string[], width: number): string[] {
129
+ return clampRenderedLinesToWidth(lines, width, DIFF_WIDTH_OPS).map((line) => stabilizeBackgroundResets(line));
130
+ }
131
+
132
+ function normalizeCodeWhitespace(text: string): string {
133
+ return text.replace(/\t/g, " ");
134
+ }
135
+
136
+ function emphasis(theme: DiffTheme, text: string): string {
137
+ return typeof theme.bold === "function" ? theme.bold(text) : text;
138
+ }
139
+
140
+
141
+
142
+ function sequenceResetsBackground(params: number[]): boolean {
143
+ let index = 0;
144
+ while (index < params.length) {
145
+ const param = params[index] ?? 0;
146
+ if (param === 0 || param === 49) {
147
+ return true;
148
+ }
149
+
150
+ const colorSequence = readSgrColorSequence(params, index);
151
+ index += colorSequence ? colorSequence.length : 1;
152
+ }
153
+
154
+ return false;
155
+ }
156
+
157
+ function stripBackgroundResetParams(params: number[]): number[] {
158
+ const filtered: number[] = [];
159
+
160
+ for (let i = 0; i < params.length; i++) {
161
+ const param = params[i] ?? 0;
162
+
163
+ if (param === 0) {
164
+ filtered.push(...expandSgrReset(param)!);
165
+ continue;
166
+ }
167
+
168
+ if (param === 49) {
169
+ continue;
170
+ }
171
+
172
+ const colorSequence = readSgrColorSequence(params, i);
173
+ if (colorSequence) {
174
+ filtered.push(...colorSequence);
175
+ i += colorSequence.length - 1;
176
+ continue;
177
+ }
178
+
179
+ filtered.push(param);
180
+ }
181
+
182
+ return filtered;
183
+ }
184
+
185
+ function stabilizeBackgroundResets(text: string): string {
186
+ if (!text) {
187
+ return text;
188
+ }
189
+ return filterSgrSequences(text, stripBackgroundResetParams);
190
+ }
191
+
192
+ function fitToWidth(text: string, width: number): string {
193
+ const trimmed = truncateToWidth(text, width, "");
194
+ const gap = Math.max(0, width - visibleWidth(trimmed));
195
+ return gap > 0 ? `${trimmed}${" ".repeat(gap)}` : trimmed;
196
+ }
197
+
198
+ function applyBackgroundToVisualRow(
199
+ text: string,
200
+ width: number,
201
+ rowBgAnsi: string,
202
+ restoreBgAnsi: string,
203
+ ): string {
204
+ if (width <= 0) {
205
+ return "";
206
+ }
207
+
208
+ const fitted = fitToWidth(text, width);
209
+ const withStableBackground = keepBackgroundAcrossResets(fitted, rowBgAnsi);
210
+ return stabilizeBackgroundResets(`${rowBgAnsi}${withStableBackground}${restoreBgAnsi}`);
211
+ }
212
+
213
+ function applyLineBackgroundToWrappedRows(
214
+ rows: string[],
215
+ width: number,
216
+ rowBgAnsi: string,
217
+ restoreBgAnsi: string,
218
+ ): string[] {
219
+ if (rows.length === 0) {
220
+ return [applyBackgroundToVisualRow("", width, rowBgAnsi, restoreBgAnsi)];
221
+ }
222
+
223
+ return rows.map((row) => applyBackgroundToVisualRow(row, width, rowBgAnsi, restoreBgAnsi));
224
+ }
225
+
226
+ function wrapToWidth(text: string, width: number, wordWrap: boolean): string[] {
227
+ if (width <= 0) {
228
+ return [""];
229
+ }
230
+
231
+ if (!wordWrap) {
232
+ return [fitToWidth(text, width)];
233
+ }
234
+
235
+ const wrapped = wrapTextWithAnsi(text, width);
236
+ if (wrapped.length === 0) {
237
+ return [fitToWidth("", width)];
238
+ }
239
+
240
+ return wrapped.map((line) => fitToWidth(line, width));
241
+ }
242
+
243
+ function resolveLanguageFromPath(rawPath: string | undefined): string | undefined {
244
+ if (!rawPath || !rawPath.trim()) {
245
+ return undefined;
246
+ }
247
+ const normalizedPath = rawPath.replace(/^@/, "").trim();
248
+ if (!normalizedPath) {
249
+ return undefined;
250
+ }
251
+ try {
252
+ return getLanguageFromPath(normalizedPath);
253
+ } catch {
254
+ return undefined;
255
+ }
256
+ }
257
+
258
+ function createCodeLineHighlighter(language: string | undefined): CodeLineHighlighter {
259
+ if (!language) {
260
+ return (line) => sanitizeAnsiForThemedOutput(line);
261
+ }
262
+
263
+ const cache = new Map<string, string>();
264
+ return (line) => {
265
+ if (!line) {
266
+ return line;
267
+ }
268
+ const cached = cache.get(line);
269
+ if (cached !== undefined) {
270
+ return cached;
271
+ }
272
+ try {
273
+ const highlighted = highlightCode(line, language)[0] ?? line;
274
+ const sanitized = sanitizeAnsiForThemedOutput(highlighted);
275
+ cache.set(line, sanitized);
276
+ return sanitized;
277
+ } catch {
278
+ const sanitizedFallback = sanitizeAnsiForThemedOutput(line);
279
+ cache.set(line, sanitizedFallback);
280
+ return sanitizedFallback;
281
+ }
282
+ };
283
+ }
284
+
285
+ function toParsedDiffLine(
286
+ prefix: string,
287
+ lineNumber: string,
288
+ content: string,
289
+ ): {
290
+ lineKind: DiffLineKind;
291
+ lineNumber: string;
292
+ content: string;
293
+ } {
294
+ const normalizedLineNumber = lineNumber.trim();
295
+ if (prefix === "+") {
296
+ return { lineKind: "add", lineNumber: normalizedLineNumber, content };
297
+ }
298
+ if (prefix === "-") {
299
+ return { lineKind: "remove", lineNumber: normalizedLineNumber, content };
300
+ }
301
+ return { lineKind: "context", lineNumber: normalizedLineNumber, content };
302
+ }
303
+
304
+ function parseCanonicalDiffLine(line: string): {
305
+ lineKind: DiffLineKind;
306
+ lineNumber: string;
307
+ content: string;
308
+ hashlineAnchorContent?: string;
309
+ } | null {
310
+ const hashlineAnchorMatch = line.match(HASHLINE_ANCHOR_LINE_PATTERN);
311
+ if (hashlineAnchorMatch) {
312
+ const lineNumber = hashlineAnchorMatch[2] ?? "";
313
+ const hash = hashlineAnchorMatch[3] ?? "";
314
+ const content = hashlineAnchorMatch[4] ?? "";
315
+ const parsed = toParsedDiffLine(
316
+ hashlineAnchorMatch[1] ?? " ",
317
+ lineNumber,
318
+ content,
319
+ );
320
+ return {
321
+ ...parsed,
322
+ hashlineAnchorContent: `${lineNumber.trim()}#${hash}:${content}`,
323
+ };
324
+ }
325
+
326
+ const canonicalMatch = line.match(CANONICAL_LINE_PATTERN);
327
+ const legacyMatch = canonicalMatch ? null : line.match(LEGACY_LINE_PATTERN);
328
+ const matched = canonicalMatch ?? legacyMatch;
329
+ if (!matched) {
330
+ return null;
331
+ }
332
+
333
+ return toParsedDiffLine(
334
+ matched[1] ?? " ",
335
+ matched[2] ?? "",
336
+ matched[3] ?? "",
337
+ );
338
+ }
339
+
340
+ function toNumber(value: string | undefined): number | null {
341
+ if (!value) {
342
+ return null;
343
+ }
344
+ const parsed = Number.parseInt(value, 10);
345
+ return Number.isNaN(parsed) ? null : parsed;
346
+ }
347
+
348
+ function anchorCanonicalLineCursors(
349
+ kind: DiffLineKind,
350
+ parsedNumber: number | null,
351
+ oldLineCursor: number | null,
352
+ newLineCursor: number | null,
353
+ lineNumberDelta: number,
354
+ ): { oldLineCursor: number | null; newLineCursor: number | null } {
355
+ if (parsedNumber === null) {
356
+ return { oldLineCursor, newLineCursor };
357
+ }
358
+
359
+ if (kind === "add") {
360
+ return {
361
+ oldLineCursor,
362
+ newLineCursor: newLineCursor ?? parsedNumber,
363
+ };
364
+ }
365
+
366
+ return {
367
+ oldLineCursor: parsedNumber,
368
+ newLineCursor: parsedNumber + lineNumberDelta,
369
+ };
370
+ }
371
+
372
+ function classifyMetaLine(raw: string): DiffMetaEntry["kind"] {
373
+ if (raw.startsWith("@@")) {
374
+ return "hunk";
375
+ }
376
+ if (
377
+ raw.startsWith("diff --git")
378
+ || raw.startsWith("index ")
379
+ || raw.startsWith("--- ")
380
+ || raw.startsWith("+++ ")
381
+ || raw.startsWith("rename from ")
382
+ || raw.startsWith("rename to ")
383
+ || raw.startsWith("new file mode ")
384
+ || raw.startsWith("deleted file mode ")
385
+ ) {
386
+ return "file";
387
+ }
388
+ return "meta";
389
+ }
390
+
391
+ function pushParsedLineEntry(
392
+ entries: ParsedDiffEntry[],
393
+ lineKind: DiffLineKind,
394
+ oldLineNumber: number | null,
395
+ newLineNumber: number | null,
396
+ fallbackLineNumber: string,
397
+ rawLine: string,
398
+ hunkIndex: number,
399
+ ): void {
400
+ entries.push({
401
+ kind: "line",
402
+ lineKind,
403
+ oldLineNumber,
404
+ newLineNumber,
405
+ fallbackLineNumber,
406
+ content: rawLine.slice(1),
407
+ raw: rawLine,
408
+ hunkIndex,
409
+ });
410
+ }
411
+
412
+ function createMetaEntry(raw: string, hunkIndex: number): DiffMetaEntry {
413
+ return {
414
+ kind: classifyMetaLine(raw),
415
+ raw,
416
+ hunkIndex,
417
+ };
418
+ }
419
+
420
+ function ensureImplicitHunk(currentHunk: number): number {
421
+ return currentHunk > 0 ? currentHunk : 1;
422
+ }
423
+
424
+ function parseDiff(diffText: string): ParsedDiff {
425
+ const stats: DiffStats = {
426
+ added: 0,
427
+ removed: 0,
428
+ context: 0,
429
+ hunks: 0,
430
+ files: 0,
431
+ lines: 0,
432
+ };
433
+ const entries: ParsedDiffEntry[] = [];
434
+
435
+ if (!diffText.trim()) {
436
+ return { entries, stats };
437
+ }
438
+
439
+ let hunkIndex = 0;
440
+ let oldLineCursor: number | null = null;
441
+ let newLineCursor: number | null = null;
442
+ let lineNumberDelta = 0;
443
+
444
+ for (const rawLine of diffText.replace(/\r/g, "").split("\n")) {
445
+ stats.lines++;
446
+
447
+ const hunkMatch = rawLine.match(HUNK_HEADER_PATTERN);
448
+ if (hunkMatch) {
449
+ hunkIndex++;
450
+ stats.hunks = Math.max(stats.hunks, hunkIndex);
451
+ oldLineCursor = toNumber(hunkMatch[1]);
452
+ newLineCursor = toNumber(hunkMatch[3]);
453
+ lineNumberDelta = (newLineCursor ?? 0) - (oldLineCursor ?? 0);
454
+ entries.push({ kind: "hunk", raw: rawLine, hunkIndex });
455
+ continue;
456
+ }
457
+
458
+ if (rawLine.startsWith("diff --git ")) {
459
+ stats.files++;
460
+ oldLineCursor = null;
461
+ newLineCursor = null;
462
+ lineNumberDelta = 0;
463
+ entries.push({ kind: "file", raw: rawLine, hunkIndex });
464
+ continue;
465
+ }
466
+
467
+ if (rawLine.startsWith("--- ") || rawLine.startsWith("+++ ")) {
468
+ oldLineCursor = null;
469
+ newLineCursor = null;
470
+ lineNumberDelta = 0;
471
+ }
472
+
473
+ const canonical = parseCanonicalDiffLine(rawLine);
474
+ if (canonical) {
475
+ hunkIndex = ensureImplicitHunk(hunkIndex);
476
+ stats.hunks = Math.max(stats.hunks, hunkIndex);
477
+
478
+ const parsedNumber = toNumber(canonical.lineNumber);
479
+ const anchoredCursors = anchorCanonicalLineCursors(
480
+ canonical.lineKind,
481
+ parsedNumber,
482
+ oldLineCursor,
483
+ newLineCursor,
484
+ lineNumberDelta,
485
+ );
486
+ oldLineCursor = anchoredCursors.oldLineCursor;
487
+ newLineCursor = anchoredCursors.newLineCursor;
488
+
489
+ const oldLineNumber = canonical.lineKind === "add" ? null : oldLineCursor;
490
+ const newLineNumber = canonical.lineKind === "remove" ? null : newLineCursor;
491
+
492
+ if (canonical.lineKind === "add") {
493
+ stats.added++;
494
+ if (newLineCursor !== null) {
495
+ newLineCursor++;
496
+ }
497
+ lineNumberDelta++;
498
+ } else if (canonical.lineKind === "remove") {
499
+ stats.removed++;
500
+ if (oldLineCursor !== null) {
501
+ oldLineCursor++;
502
+ }
503
+ lineNumberDelta--;
504
+ } else {
505
+ stats.context++;
506
+ if (oldLineCursor !== null) {
507
+ oldLineCursor++;
508
+ }
509
+ if (newLineCursor !== null) {
510
+ newLineCursor++;
511
+ }
512
+ }
513
+
514
+ entries.push({
515
+ kind: "line",
516
+ lineKind: canonical.lineKind,
517
+ oldLineNumber,
518
+ newLineNumber,
519
+ fallbackLineNumber: canonical.lineNumber,
520
+ content: canonical.content,
521
+ hashlineAnchorContent: canonical.hashlineAnchorContent,
522
+ raw: rawLine,
523
+ hunkIndex,
524
+ });
525
+ continue;
526
+ }
527
+
528
+ if (rawLine.startsWith("-") && !rawLine.startsWith("---")) {
529
+ hunkIndex = ensureImplicitHunk(hunkIndex);
530
+ stats.hunks = Math.max(stats.hunks, hunkIndex);
531
+ stats.removed++;
532
+ const oldLineNumber = oldLineCursor;
533
+ if (oldLineCursor !== null) {
534
+ oldLineCursor++;
535
+ }
536
+ lineNumberDelta--;
537
+ pushParsedLineEntry(
538
+ entries,
539
+ "remove",
540
+ oldLineNumber,
541
+ null,
542
+ oldLineNumber !== null ? `${oldLineNumber}` : "",
543
+ rawLine,
544
+ hunkIndex,
545
+ );
546
+ continue;
547
+ }
548
+
549
+ if (rawLine.startsWith("+") && !rawLine.startsWith("+++")) {
550
+ hunkIndex = ensureImplicitHunk(hunkIndex);
551
+ stats.hunks = Math.max(stats.hunks, hunkIndex);
552
+ stats.added++;
553
+ const newLineNumber = newLineCursor;
554
+ if (newLineCursor !== null) {
555
+ newLineCursor++;
556
+ }
557
+ lineNumberDelta++;
558
+ pushParsedLineEntry(
559
+ entries,
560
+ "add",
561
+ null,
562
+ newLineNumber,
563
+ newLineNumber !== null ? `${newLineNumber}` : "",
564
+ rawLine,
565
+ hunkIndex,
566
+ );
567
+ continue;
568
+ }
569
+
570
+ if (rawLine.startsWith(" ")) {
571
+ hunkIndex = ensureImplicitHunk(hunkIndex);
572
+ stats.hunks = Math.max(stats.hunks, hunkIndex);
573
+ stats.context++;
574
+ const oldLineNumber = oldLineCursor;
575
+ const newLineNumber = newLineCursor;
576
+ if (oldLineCursor !== null) {
577
+ oldLineCursor++;
578
+ }
579
+ if (newLineCursor !== null) {
580
+ newLineCursor++;
581
+ }
582
+ pushParsedLineEntry(
583
+ entries,
584
+ "context",
585
+ oldLineNumber,
586
+ newLineNumber,
587
+ oldLineNumber !== null ? `${oldLineNumber}` : newLineNumber !== null ? `${newLineNumber}` : "",
588
+ rawLine,
589
+ hunkIndex,
590
+ );
591
+ continue;
592
+ }
593
+
594
+ entries.push(createMetaEntry(rawLine, hunkIndex));
595
+ }
596
+
597
+ if (stats.hunks === 0 && (stats.added > 0 || stats.removed > 0 || stats.context > 0)) {
598
+ stats.hunks = 1;
599
+ }
600
+ if (stats.files === 0) {
601
+ const patchStyleFileHeaders = entries.filter(
602
+ (entry) => entry.kind === "file" && entry.raw.startsWith("+++ "),
603
+ ).length;
604
+ if (patchStyleFileHeaders > 0) {
605
+ stats.files = patchStyleFileHeaders;
606
+ } else if (stats.hunks > 0) {
607
+ stats.files = 1;
608
+ }
609
+ }
610
+
611
+ return { entries, stats };
612
+ }
613
+
614
+ function getHashlineAnchorLabel(entry: DiffLineEntry): string | undefined {
615
+ if (!entry.hashlineAnchorContent) {
616
+ return undefined;
617
+ }
618
+ const separatorIndex = entry.hashlineAnchorContent.indexOf(":");
619
+ return separatorIndex >= 0
620
+ ? entry.hashlineAnchorContent.slice(0, separatorIndex)
621
+ : entry.hashlineAnchorContent;
622
+ }
623
+
624
+ function getLineNumberWidth(entries: ParsedDiffEntry[], showHashlineAnchors = false): number {
625
+ let maxWidth = MIN_LINE_NUMBER_WIDTH;
626
+
627
+ for (const entry of entries) {
628
+ if (entry.kind !== "line") {
629
+ continue;
630
+ }
631
+
632
+ if (showHashlineAnchors) {
633
+ const anchorLabel = getHashlineAnchorLabel(entry);
634
+ if (anchorLabel) {
635
+ maxWidth = Math.max(maxWidth, visibleWidth(anchorLabel));
636
+ continue;
637
+ }
638
+ }
639
+
640
+ const candidates = [
641
+ entry.oldLineNumber,
642
+ entry.newLineNumber,
643
+ toNumber(entry.fallbackLineNumber),
644
+ ].filter((value): value is number => value !== null);
645
+
646
+ for (const candidate of candidates) {
647
+ const digits = `${candidate}`.length;
648
+ if (digits > maxWidth) {
649
+ maxWidth = digits;
650
+ }
651
+ }
652
+ }
653
+
654
+ return maxWidth;
655
+ }
656
+
657
+ function formatLineNumber(value: number | null, fallback: string, width: number): string {
658
+ if (value !== null) {
659
+ return `${value}`.padStart(width, " ");
660
+ }
661
+ if (fallback.trim()) {
662
+ return fallback.trim().slice(-width).padStart(width, " ");
663
+ }
664
+ return " ".repeat(width);
665
+ }
666
+
667
+ function formatLineNumberLabel(
668
+ entry: DiffLineEntry,
669
+ value: number | null,
670
+ fallback: string,
671
+ width: number,
672
+ showHashlineAnchors: boolean,
673
+ ): string {
674
+ const anchorLabel = showHashlineAnchors ? getHashlineAnchorLabel(entry) : undefined;
675
+ if (anchorLabel) {
676
+ return fitToWidth(anchorLabel, width);
677
+ }
678
+ return formatLineNumber(value, fallback, width);
679
+ }
680
+
681
+ function formatMetaEntryRows(entry: DiffMetaEntry, width: number, theme: DiffTheme, wordWrap: boolean): RenderedRow[] {
682
+ const normalized = sanitizeAnsiForThemedOutput(normalizeCodeWhitespace(entry.raw));
683
+ const lines = wordWrap
684
+ ? wrapToWidth(normalized, width, true)
685
+ : [truncateToWidth(normalized, width)];
686
+
687
+ const mapColor = (line: string): string => {
688
+ if (entry.kind === "hunk") {
689
+ return stabilizeBackgroundResets(theme.fg("accent", line));
690
+ }
691
+ if (entry.kind === "file") {
692
+ return stabilizeBackgroundResets(theme.fg("muted", line));
693
+ }
694
+ return stabilizeBackgroundResets(theme.fg("toolDiffContext", line));
695
+ };
696
+
697
+ return lines.map((line) => ({
698
+ text: mapColor(line),
699
+ hunkIndex: entry.kind === "file" ? null : entry.hunkIndex || null,
700
+ }));
701
+ }
702
+
703
+ function collectConsecutiveLineEntries(
704
+ entries: ParsedDiffEntry[],
705
+ startIndex: number,
706
+ lineKind: DiffLineKind,
707
+ ): { collected: DiffLineEntry[]; nextIndex: number } {
708
+ const collected: DiffLineEntry[] = [];
709
+ let index = startIndex;
710
+ while (index < entries.length) {
711
+ const candidate = entries[index];
712
+ if (!candidate || candidate.kind !== "line" || candidate.lineKind !== lineKind) {
713
+ break;
714
+ }
715
+ collected.push(candidate);
716
+ index++;
717
+ }
718
+ return { collected, nextIndex: index };
719
+ }
720
+
721
+ function buildSplitRows(entries: ParsedDiffEntry[]): SplitDiffRow[] {
722
+ const rows: SplitDiffRow[] = [];
723
+ let index = 0;
724
+
725
+ while (index < entries.length) {
726
+ const entry = entries[index];
727
+ if (!entry) {
728
+ break;
729
+ }
730
+
731
+ if (entry.kind !== "line") {
732
+ rows.push({ meta: entry, hunkIndex: entry.hunkIndex || null });
733
+ index++;
734
+ continue;
735
+ }
736
+
737
+ if (entry.lineKind === "remove") {
738
+ const removedResult = collectConsecutiveLineEntries(entries, index, "remove");
739
+ const removed = removedResult.collected;
740
+ const addedResult = collectConsecutiveLineEntries(entries, removedResult.nextIndex, "add");
741
+ const added = addedResult.collected;
742
+ index = addedResult.nextIndex;
743
+
744
+ const pairCount = Math.max(removed.length, added.length);
745
+ for (let pairIndex = 0; pairIndex < pairCount; pairIndex++) {
746
+ const left = removed[pairIndex];
747
+ const right = added[pairIndex];
748
+ rows.push({
749
+ left,
750
+ right,
751
+ hunkIndex: left?.hunkIndex ?? right?.hunkIndex ?? null,
752
+ });
753
+ }
754
+ continue;
755
+ }
756
+
757
+ if (entry.lineKind === "add") {
758
+ rows.push({ right: entry, hunkIndex: entry.hunkIndex || null });
759
+ index++;
760
+ continue;
761
+ }
762
+
763
+ rows.push({ left: entry, right: entry, hunkIndex: entry.hunkIndex || null });
764
+ index++;
765
+ }
766
+
767
+ return rows;
768
+ }
769
+
770
+ function getCellLineNumber(line: DiffLineEntry, side: "left" | "right"): number | null {
771
+ if (side === "left") {
772
+ return line.oldLineNumber ?? (line.lineKind === "context" ? line.newLineNumber : null);
773
+ }
774
+ return line.newLineNumber ?? (line.lineKind === "context" ? line.oldLineNumber : null);
775
+ }
776
+
777
+ function tokenizeInlineDiff(input: string): Array<{ value: string; start: number; end: number }> {
778
+ if (!input) {
779
+ return [];
780
+ }
781
+
782
+ const tokens: Array<{ value: string; start: number; end: number }> = [];
783
+ const pattern = /(\s+|[A-Za-z0-9_]+|[^A-Za-z0-9_\s])/g;
784
+ let match: RegExpExecArray | null;
785
+
786
+ while ((match = pattern.exec(input)) !== null) {
787
+ const value = match[0] ?? "";
788
+ if (!value) {
789
+ continue;
790
+ }
791
+ tokens.push({
792
+ value,
793
+ start: match.index,
794
+ end: match.index + value.length,
795
+ });
796
+ }
797
+
798
+ if (tokens.length === 0 && input.length > 0) {
799
+ tokens.push({ value: input, start: 0, end: input.length });
800
+ }
801
+
802
+ return tokens;
803
+ }
804
+
805
+ function mergeSpans(spans: DiffSpan[]): DiffSpan[] {
806
+ if (spans.length <= 1) {
807
+ return spans;
808
+ }
809
+
810
+ const sorted = [...spans].sort((a, b) => a.start - b.start);
811
+ const merged: DiffSpan[] = [sorted[0]];
812
+
813
+ for (let index = 1; index < sorted.length; index++) {
814
+ const current = sorted[index];
815
+ const previous = merged[merged.length - 1];
816
+ if (!current || !previous) {
817
+ continue;
818
+ }
819
+
820
+ if (current.start <= previous.end) {
821
+ previous.end = Math.max(previous.end, current.end);
822
+ continue;
823
+ }
824
+
825
+ merged.push({ ...current });
826
+ }
827
+
828
+ return merged;
829
+ }
830
+
831
+ function tokensToDiffSpans(
832
+ text: string,
833
+ tokens: Array<{ value: string; start: number; end: number }>,
834
+ changedIndexes: Set<number>,
835
+ ): DiffSpan[] {
836
+ if (tokens.length === 0 || changedIndexes.size === 0) {
837
+ return [];
838
+ }
839
+
840
+ const spans: DiffSpan[] = [];
841
+ let start: number | null = null;
842
+ let end = -1;
843
+
844
+ for (let index = 0; index < tokens.length; index++) {
845
+ if (!changedIndexes.has(index)) {
846
+ if (start !== null && end > start) {
847
+ spans.push({ start, end });
848
+ start = null;
849
+ end = -1;
850
+ }
851
+ continue;
852
+ }
853
+
854
+ const token = tokens[index];
855
+ if (!token) {
856
+ continue;
857
+ }
858
+
859
+ if (start === null) {
860
+ start = token.start;
861
+ end = token.end;
862
+ } else {
863
+ end = token.end;
864
+ }
865
+ }
866
+
867
+ if (start !== null && end > start) {
868
+ spans.push({ start, end });
869
+ }
870
+
871
+ const trimmed: DiffSpan[] = [];
872
+ for (const span of spans) {
873
+ let spanStart = span.start;
874
+ let spanEnd = span.end;
875
+
876
+ while (spanStart < spanEnd && /\s/.test(text[spanStart] ?? "")) {
877
+ spanStart++;
878
+ }
879
+ while (spanEnd > spanStart && /\s/.test(text[spanEnd - 1] ?? "")) {
880
+ spanEnd--;
881
+ }
882
+ if (spanEnd > spanStart) {
883
+ trimmed.push({ start: spanStart, end: spanEnd });
884
+ }
885
+ }
886
+
887
+ return mergeSpans(trimmed);
888
+ }
889
+
890
+ function computeInlineDiffSpans(leftLine: string, rightLine: string): { left: DiffSpan[]; right: DiffSpan[] } {
891
+ if (leftLine === rightLine) {
892
+ return { left: [], right: [] };
893
+ }
894
+ if (leftLine.length > MAX_INLINE_DIFF_LINE_LENGTH || rightLine.length > MAX_INLINE_DIFF_LINE_LENGTH) {
895
+ return { left: [], right: [] };
896
+ }
897
+
898
+ const leftTokens = tokenizeInlineDiff(leftLine);
899
+ const rightTokens = tokenizeInlineDiff(rightLine);
900
+ const leftCount = leftTokens.length;
901
+ const rightCount = rightTokens.length;
902
+
903
+ if (leftCount === 0 || rightCount === 0) {
904
+ return {
905
+ left: leftLine.trim().length > 0 ? [{ start: 0, end: leftLine.length }] : [],
906
+ right: rightLine.trim().length > 0 ? [{ start: 0, end: rightLine.length }] : [],
907
+ };
908
+ }
909
+
910
+ const table: number[][] = Array.from({ length: leftCount + 1 }, () => Array<number>(rightCount + 1).fill(0));
911
+
912
+ for (let leftIndex = 1; leftIndex <= leftCount; leftIndex++) {
913
+ const leftToken = leftTokens[leftIndex - 1];
914
+ for (let rightIndex = 1; rightIndex <= rightCount; rightIndex++) {
915
+ const rightToken = rightTokens[rightIndex - 1];
916
+ if (leftToken?.value === rightToken?.value) {
917
+ table[leftIndex][rightIndex] = (table[leftIndex - 1]?.[rightIndex - 1] ?? 0) + 1;
918
+ } else {
919
+ const top = table[leftIndex - 1]?.[rightIndex] ?? 0;
920
+ const side = table[leftIndex]?.[rightIndex - 1] ?? 0;
921
+ table[leftIndex][rightIndex] = Math.max(top, side);
922
+ }
923
+ }
924
+ }
925
+
926
+ const changedLeft = new Set<number>();
927
+ const changedRight = new Set<number>();
928
+ let leftCursor = leftCount;
929
+ let rightCursor = rightCount;
930
+
931
+ while (leftCursor > 0 && rightCursor > 0) {
932
+ const leftToken = leftTokens[leftCursor - 1];
933
+ const rightToken = rightTokens[rightCursor - 1];
934
+ if (leftToken?.value === rightToken?.value) {
935
+ leftCursor--;
936
+ rightCursor--;
937
+ continue;
938
+ }
939
+
940
+ const top = table[leftCursor - 1]?.[rightCursor] ?? 0;
941
+ const side = table[leftCursor]?.[rightCursor - 1] ?? 0;
942
+ if (top >= side) {
943
+ changedLeft.add(leftCursor - 1);
944
+ leftCursor--;
945
+ } else {
946
+ changedRight.add(rightCursor - 1);
947
+ rightCursor--;
948
+ }
949
+ }
950
+
951
+ while (leftCursor > 0) {
952
+ changedLeft.add(leftCursor - 1);
953
+ leftCursor--;
954
+ }
955
+ while (rightCursor > 0) {
956
+ changedRight.add(rightCursor - 1);
957
+ rightCursor--;
958
+ }
959
+
960
+ return {
961
+ left: tokensToDiffSpans(leftLine, leftTokens, changedLeft),
962
+ right: tokensToDiffSpans(rightLine, rightTokens, changedRight),
963
+ };
964
+ }
965
+
966
+ function getCompactLineRenderContent(entry: DiffLineEntry, showHashlineAnchors: boolean): string {
967
+ return showHashlineAnchors && entry.hashlineAnchorContent
968
+ ? entry.hashlineAnchorContent
969
+ : entry.content;
970
+ }
971
+
972
+ function buildInlineHighlightMap(rows: SplitDiffRow[]): WeakMap<DiffLineEntry, DiffSpan[]> {
973
+ const highlights = new WeakMap<DiffLineEntry, DiffSpan[]>();
974
+
975
+ for (const row of rows) {
976
+ if (!row.left || !row.right) {
977
+ continue;
978
+ }
979
+ if (row.left.lineKind !== "remove" || row.right.lineKind !== "add") {
980
+ continue;
981
+ }
982
+
983
+ const leftText = normalizeCodeWhitespace(row.left.content);
984
+ const rightText = normalizeCodeWhitespace(row.right.content);
985
+ const inline = computeInlineDiffSpans(leftText, rightText);
986
+ if (inline.left.length > 0) {
987
+ highlights.set(row.left, inline.left);
988
+ }
989
+ if (inline.right.length > 0) {
990
+ highlights.set(row.right, inline.right);
991
+ }
992
+ }
993
+
994
+ return highlights;
995
+ }
996
+
997
+ function ansi256ToRgb(code: number): RgbColor {
998
+ if (code < 0) {
999
+ return { r: 0, g: 0, b: 0 };
1000
+ }
1001
+ if (code <= 15) {
1002
+ const base16: RgbColor[] = [
1003
+ { r: 0, g: 0, b: 0 },
1004
+ { r: 128, g: 0, b: 0 },
1005
+ { r: 0, g: 128, b: 0 },
1006
+ { r: 128, g: 128, b: 0 },
1007
+ { r: 0, g: 0, b: 128 },
1008
+ { r: 128, g: 0, b: 128 },
1009
+ { r: 0, g: 128, b: 128 },
1010
+ { r: 192, g: 192, b: 192 },
1011
+ { r: 128, g: 128, b: 128 },
1012
+ { r: 255, g: 0, b: 0 },
1013
+ { r: 0, g: 255, b: 0 },
1014
+ { r: 255, g: 255, b: 0 },
1015
+ { r: 0, g: 0, b: 255 },
1016
+ { r: 255, g: 0, b: 255 },
1017
+ { r: 0, g: 255, b: 255 },
1018
+ { r: 255, g: 255, b: 255 },
1019
+ ];
1020
+ return base16[code] ?? { r: 255, g: 255, b: 255 };
1021
+ }
1022
+ if (code >= 232) {
1023
+ const value = Math.max(0, Math.min(255, 8 + (code - 232) * 10));
1024
+ return { r: value, g: value, b: value };
1025
+ }
1026
+
1027
+ const cube = code - 16;
1028
+ const levels = [0, 95, 135, 175, 215, 255];
1029
+ const blue = cube % 6;
1030
+ const green = Math.floor(cube / 6) % 6;
1031
+ const red = Math.floor(cube / 36) % 6;
1032
+ return {
1033
+ r: levels[red] ?? 0,
1034
+ g: levels[green] ?? 0,
1035
+ b: levels[blue] ?? 0,
1036
+ };
1037
+ }
1038
+
1039
+ function parseAnsiColorCode(ansi: string | undefined): RgbColor | null {
1040
+ if (!ansi) {
1041
+ return null;
1042
+ }
1043
+ const rgbMatch = /\x1b\[(?:3|4)8;2;(\d{1,3});(\d{1,3});(\d{1,3})m/.exec(ansi);
1044
+ if (rgbMatch) {
1045
+ const r = Number.parseInt(rgbMatch[1] ?? "0", 10);
1046
+ const g = Number.parseInt(rgbMatch[2] ?? "0", 10);
1047
+ const b = Number.parseInt(rgbMatch[3] ?? "0", 10);
1048
+ if (Number.isFinite(r) && Number.isFinite(g) && Number.isFinite(b)) {
1049
+ return {
1050
+ r: Math.max(0, Math.min(255, r)),
1051
+ g: Math.max(0, Math.min(255, g)),
1052
+ b: Math.max(0, Math.min(255, b)),
1053
+ };
1054
+ }
1055
+ }
1056
+
1057
+ const bitMatch = /\x1b\[(?:3|4)8;5;(\d{1,3})m/.exec(ansi);
1058
+ if (bitMatch) {
1059
+ const code = Number.parseInt(bitMatch[1] ?? "0", 10);
1060
+ if (Number.isFinite(code)) {
1061
+ return ansi256ToRgb(code);
1062
+ }
1063
+ }
1064
+
1065
+ return null;
1066
+ }
1067
+
1068
+ function rgbToBgAnsi(color: RgbColor): string {
1069
+ const r = Math.max(0, Math.min(255, Math.round(color.r)));
1070
+ const g = Math.max(0, Math.min(255, Math.round(color.g)));
1071
+ const b = Math.max(0, Math.min(255, Math.round(color.b)));
1072
+ return `\x1b[48;2;${r};${g};${b}m`;
1073
+ }
1074
+
1075
+ function mixRgb(base: RgbColor, tint: RgbColor, ratio: number): RgbColor {
1076
+ const clamped = Math.max(0, Math.min(1, ratio));
1077
+ return {
1078
+ r: base.r * (1 - clamped) + tint.r * clamped,
1079
+ g: base.g * (1 - clamped) + tint.g * clamped,
1080
+ b: base.b * (1 - clamped) + tint.b * clamped,
1081
+ };
1082
+ }
1083
+
1084
+ function extractThemeBackgroundAnsi(text: string): string | undefined {
1085
+ if (!text || !text.includes("\x1b[")) {
1086
+ return undefined;
1087
+ }
1088
+
1089
+ ANSI_SGR_PATTERN.lastIndex = 0;
1090
+ let match: RegExpExecArray | null;
1091
+ while ((match = ANSI_SGR_PATTERN.exec(text)) !== null) {
1092
+ const parsed = toSgrParams(match[1] ?? "");
1093
+ for (let index = 0; index < parsed.length; index += 1) {
1094
+ const param = parsed[index] ?? 0;
1095
+ if ((param >= 40 && param <= 47) || (param >= 100 && param <= 107)) {
1096
+ return `\x1b[${param}m`;
1097
+ }
1098
+
1099
+ const colorSequence = readSgrColorSequence(parsed, index);
1100
+ if (colorSequence?.[0] === 48) {
1101
+ return `\x1b[${colorSequence.join(";")}m`;
1102
+ }
1103
+ if (colorSequence) {
1104
+ index += colorSequence.length - 1;
1105
+ }
1106
+ }
1107
+ }
1108
+
1109
+ return undefined;
1110
+ }
1111
+
1112
+ function readThemeAnsi(theme: DiffTheme, kind: "fg" | "bg", slot: string): string | undefined {
1113
+ try {
1114
+ if (kind === "fg" && typeof theme.getFgAnsi === "function") {
1115
+ return theme.getFgAnsi(slot);
1116
+ }
1117
+ if (kind === "bg") {
1118
+ if (typeof theme.getBgAnsi === "function") {
1119
+ return theme.getBgAnsi(slot);
1120
+ }
1121
+ if (typeof theme.bg === "function") {
1122
+ return extractThemeBackgroundAnsi(theme.bg(slot, " "));
1123
+ }
1124
+ }
1125
+ } catch {
1126
+ return undefined;
1127
+ }
1128
+ return undefined;
1129
+ }
1130
+
1131
+ function resolveContainerBackgroundAnsi(theme: DiffTheme): string | undefined {
1132
+ return readThemeAnsi(theme, "bg", "toolSuccessBg")
1133
+ ?? readThemeAnsi(theme, "bg", "toolPendingBg")
1134
+ ?? readThemeAnsi(theme, "bg", "toolErrorBg")
1135
+ ?? readThemeAnsi(theme, "bg", "userMessageBg");
1136
+ }
1137
+
1138
+ function resolveDiffPalette(theme: DiffTheme): DiffPalette {
1139
+ const baseBg = parseAnsiColorCode(readThemeAnsi(theme, "bg", "toolSuccessBg"))
1140
+ ?? parseAnsiColorCode(readThemeAnsi(theme, "bg", "toolPendingBg"))
1141
+ ?? parseAnsiColorCode(readThemeAnsi(theme, "bg", "userMessageBg"))
1142
+ ?? { r: 32, g: 35, b: 42 };
1143
+ const addFg = parseAnsiColorCode(readThemeAnsi(theme, "fg", "toolDiffAdded")) ?? { r: 88, g: 173, b: 88 };
1144
+ const removeFg = parseAnsiColorCode(readThemeAnsi(theme, "fg", "toolDiffRemoved")) ?? { r: 196, g: 98, b: 98 };
1145
+ const addTint = mixRgb(addFg, ADDITION_TINT_TARGET, 0.35);
1146
+ const removeTint = mixRgb(removeFg, DELETION_TINT_TARGET, 0.65);
1147
+
1148
+ const addRowBg = mixRgb(baseBg, addTint, ADD_ROW_BACKGROUND_MIX_RATIO);
1149
+ const removeRowBg = mixRgb(baseBg, removeTint, REMOVE_ROW_BACKGROUND_MIX_RATIO);
1150
+ const addEmphasisBg = mixRgb(baseBg, addTint, ADD_INLINE_EMPHASIS_MIX_RATIO);
1151
+ const removeEmphasisBg = mixRgb(baseBg, removeTint, REMOVE_INLINE_EMPHASIS_MIX_RATIO);
1152
+
1153
+ return {
1154
+ addRowBgAnsi: rgbToBgAnsi(addRowBg),
1155
+ removeRowBgAnsi: rgbToBgAnsi(removeRowBg),
1156
+ addEmphasisBgAnsi: rgbToBgAnsi(addEmphasisBg),
1157
+ removeEmphasisBgAnsi: rgbToBgAnsi(removeEmphasisBg),
1158
+ };
1159
+ }
1160
+
1161
+ function getLineBackground(kind: DiffLineKind, palette: DiffPalette, emphasis: boolean): string | undefined {
1162
+ if (kind === "add") {
1163
+ return emphasis ? palette.addEmphasisBgAnsi : palette.addRowBgAnsi;
1164
+ }
1165
+ if (kind === "remove") {
1166
+ return emphasis ? palette.removeEmphasisBgAnsi : palette.removeRowBgAnsi;
1167
+ }
1168
+ return undefined;
1169
+ }
1170
+
1171
+ function applyBackgroundToVisibleRange(
1172
+ ansiText: string,
1173
+ start: number,
1174
+ end: number,
1175
+ backgroundAnsi: string,
1176
+ restoreBackgroundAnsi: string,
1177
+ ): string {
1178
+ if (!ansiText || start >= end || end <= 0) {
1179
+ return ansiText;
1180
+ }
1181
+
1182
+ const rangeStart = Math.max(0, start);
1183
+ const rangeEnd = Math.max(rangeStart, end);
1184
+ let output = "";
1185
+ let visibleIndex = 0;
1186
+ let index = 0;
1187
+ let inRange = false;
1188
+
1189
+ while (index < ansiText.length) {
1190
+ if (ansiText[index] === "\x1b") {
1191
+ const sequenceEnd = ansiText.indexOf("m", index);
1192
+ if (sequenceEnd !== -1) {
1193
+ output += ansiText.slice(index, sequenceEnd + 1);
1194
+ index = sequenceEnd + 1;
1195
+ continue;
1196
+ }
1197
+ }
1198
+
1199
+ if (visibleIndex === rangeStart && !inRange) {
1200
+ output += backgroundAnsi;
1201
+ inRange = true;
1202
+ }
1203
+ if (visibleIndex === rangeEnd && inRange) {
1204
+ output += restoreBackgroundAnsi;
1205
+ inRange = false;
1206
+ }
1207
+
1208
+ output += ansiText[index] ?? "";
1209
+ visibleIndex++;
1210
+ index++;
1211
+ }
1212
+
1213
+ if (inRange) {
1214
+ output += restoreBackgroundAnsi;
1215
+ }
1216
+
1217
+ return output;
1218
+ }
1219
+
1220
+ function applyInlineSpanHighlight(
1221
+ plainText: string,
1222
+ renderedText: string,
1223
+ spans: DiffSpan[],
1224
+ emphasisBgAnsi: string | undefined,
1225
+ rowBgAnsi: string | undefined,
1226
+ fallbackBgAnsi: string | undefined,
1227
+ ): string {
1228
+ if (!renderedText || !plainText || spans.length === 0 || !emphasisBgAnsi) {
1229
+ return renderedText;
1230
+ }
1231
+
1232
+ const sorted = mergeSpans(
1233
+ spans
1234
+ .map((span) => ({
1235
+ start: Math.max(0, Math.min(plainText.length, span.start)),
1236
+ end: Math.max(0, Math.min(plainText.length, span.end)),
1237
+ }))
1238
+ .filter((span) => span.end > span.start),
1239
+ );
1240
+ if (sorted.length === 0) {
1241
+ return renderedText;
1242
+ }
1243
+
1244
+ const restoreBackgroundAnsi = rowBgAnsi ?? fallbackBgAnsi ?? ANSI_BG_RESET;
1245
+ let highlighted = renderedText;
1246
+ for (let index = sorted.length - 1; index >= 0; index--) {
1247
+ const span = sorted[index];
1248
+ if (!span) {
1249
+ continue;
1250
+ }
1251
+ highlighted = applyBackgroundToVisibleRange(
1252
+ highlighted,
1253
+ span.start,
1254
+ span.end,
1255
+ emphasisBgAnsi,
1256
+ restoreBackgroundAnsi,
1257
+ );
1258
+ }
1259
+
1260
+ return highlighted;
1261
+ }
1262
+
1263
+ function resolveDiffIndicatorMode(config: Partial<Pick<ToolDisplayConfig, "diffIndicatorMode">>): DiffIndicatorMode {
1264
+ return config.diffIndicatorMode ?? DEFAULT_TOOL_DISPLAY_CONFIG.diffIndicatorMode;
1265
+ }
1266
+
1267
+ function resolveIndicatorGlyph(kind: DiffLineKind, indicatorMode: DiffIndicatorMode, continuation: boolean): string {
1268
+ if (kind === "context") {
1269
+ return " ";
1270
+ }
1271
+
1272
+ switch (indicatorMode) {
1273
+ case "bars":
1274
+ return "▌";
1275
+ case "classic":
1276
+ if (continuation) {
1277
+ return " ";
1278
+ }
1279
+ return kind === "add" ? "+" : "-";
1280
+ case "none":
1281
+ default:
1282
+ return " ";
1283
+ }
1284
+ }
1285
+
1286
+ function colorizeSegment(
1287
+ theme: DiffTheme,
1288
+ color: "dim" | "toolDiffAdded" | "toolDiffRemoved",
1289
+ text: string,
1290
+ rowBg: string | undefined,
1291
+ ): string {
1292
+ let themedText: string;
1293
+ try {
1294
+ themedText = theme.fg(color, text);
1295
+ } catch {
1296
+ themedText = text;
1297
+ }
1298
+
1299
+ if (!rowBg) {
1300
+ return themedText;
1301
+ }
1302
+
1303
+ const stableText = keepBackgroundAcrossResets(themedText, rowBg);
1304
+ return `${rowBg}${stableText}${rowBg}`;
1305
+ }
1306
+
1307
+ function keepBackgroundAcrossResets(text: string, rowBg: string): string {
1308
+ if (!text) {
1309
+ return text;
1310
+ }
1311
+
1312
+ return text.replace(ANSI_SGR_PATTERN, (sequence, rawParams: string) => {
1313
+ const params = toSgrParams(rawParams);
1314
+ if (params.length === 0 || !sequenceResetsBackground(params)) {
1315
+ return sequence;
1316
+ }
1317
+ return `${sequence}${rowBg}`;
1318
+ });
1319
+ }
1320
+
1321
+ function renderChangeMarker(
1322
+ kind: DiffLineKind,
1323
+ theme: DiffTheme,
1324
+ rowBg: string | undefined,
1325
+ indicatorMode: DiffIndicatorMode,
1326
+ continuation = false,
1327
+ ): string {
1328
+ const glyph = resolveIndicatorGlyph(kind, indicatorMode, continuation);
1329
+ if (glyph === " ") {
1330
+ return rowBg ? `${rowBg} ${rowBg}` : " ";
1331
+ }
1332
+ if (kind === "add") {
1333
+ return colorizeSegment(theme, "toolDiffAdded", glyph, rowBg);
1334
+ }
1335
+ if (kind === "remove") {
1336
+ return colorizeSegment(theme, "toolDiffRemoved", glyph, rowBg);
1337
+ }
1338
+ return colorizeSegment(theme, "dim", glyph, rowBg);
1339
+ }
1340
+
1341
+ function usesHashlineGutter(showHashlineAnchors: boolean): boolean {
1342
+ return showHashlineAnchors;
1343
+ }
1344
+
1345
+ function getHashlineGutterMarkerWidth(_indicatorMode: DiffIndicatorMode): number {
1346
+ return 0;
1347
+ }
1348
+
1349
+ function getLineDividerPlainWidth(indicatorMode: DiffIndicatorMode, hashlineGutter = false): number {
1350
+ if (hashlineGutter) {
1351
+ return 2;
1352
+ }
1353
+ return indicatorMode === "classic" ? 1 : 2;
1354
+ }
1355
+
1356
+ function renderCodeDivider(
1357
+ theme: DiffTheme,
1358
+ rowBg: string | undefined,
1359
+ indicatorMode: DiffIndicatorMode,
1360
+ hashlineGutter = false,
1361
+ ): string {
1362
+ return colorizeSegment(theme, "dim", hashlineGutter || indicatorMode !== "classic" ? "│ " : "│", rowBg);
1363
+ }
1364
+
1365
+ function getLineNumberColor(kind: DiffLineKind): "dim" | "toolDiffAdded" | "toolDiffRemoved" {
1366
+ if (kind === "add") {
1367
+ return "toolDiffAdded";
1368
+ }
1369
+ if (kind === "remove") {
1370
+ return "toolDiffRemoved";
1371
+ }
1372
+ return "dim";
1373
+ }
1374
+
1375
+ function renderLineNumberSegment(
1376
+ kind: DiffLineKind,
1377
+ lineNumber: string,
1378
+ theme: DiffTheme,
1379
+ rowBg: string | undefined,
1380
+ ): string {
1381
+ return colorizeSegment(theme, getLineNumberColor(kind), lineNumber, rowBg);
1382
+ }
1383
+
1384
+ function getLinePrefixPlainWidth(lineNumberWidth: number, indicatorMode: DiffIndicatorMode, hashlineGutter = false): number {
1385
+ if (hashlineGutter) {
1386
+ return getHashlineGutterMarkerWidth(indicatorMode) + lineNumberWidth;
1387
+ }
1388
+ return indicatorMode === "bars"
1389
+ ? visibleWidth(`▌ ${" ".repeat(lineNumberWidth)} `)
1390
+ : visibleWidth(`${" ".repeat(lineNumberWidth)} `);
1391
+ }
1392
+
1393
+ function getLineContentIndicatorPrefixPlainWidth(indicatorMode: DiffIndicatorMode): number {
1394
+ return indicatorMode === "classic" ? 2 : 0;
1395
+ }
1396
+
1397
+ function renderClassicContentPrefix(
1398
+ kind: DiffLineKind,
1399
+ theme: DiffTheme,
1400
+ rowBg: string | undefined,
1401
+ continuation = false,
1402
+ ): string {
1403
+ if (kind === "context" || continuation) {
1404
+ return rowBg ? `${rowBg} ${rowBg}` : " ";
1405
+ }
1406
+
1407
+ const glyph = kind === "add" ? "+" : "-";
1408
+ const glyphColor = kind === "add" ? "toolDiffAdded" : "toolDiffRemoved";
1409
+ const spacer = rowBg ? `${rowBg} ` : " ";
1410
+ return `${colorizeSegment(theme, glyphColor, glyph, rowBg)}${spacer}`;
1411
+ }
1412
+
1413
+ function renderLinePrefix(
1414
+ kind: DiffLineKind,
1415
+ lineNumber: string,
1416
+ theme: DiffTheme,
1417
+ rowBg: string | undefined,
1418
+ indicatorMode: DiffIndicatorMode,
1419
+ continuation = false,
1420
+ hashlineGutter = false,
1421
+ ): string {
1422
+ const number = renderLineNumberSegment(kind, lineNumber, theme, rowBg);
1423
+ if (hashlineGutter) {
1424
+ return number;
1425
+ }
1426
+ const spacer = rowBg ? `${rowBg} ` : " ";
1427
+ if (indicatorMode !== "bars") {
1428
+ return `${number}${spacer}`;
1429
+ }
1430
+ const marker = renderChangeMarker(kind, theme, rowBg, indicatorMode, continuation);
1431
+ return `${marker}${spacer}${number}${spacer}`;
1432
+ }
1433
+
1434
+ function renderLineContinuationPrefix(
1435
+ kind: DiffLineKind,
1436
+ lineNumberWidth: number,
1437
+ rowBg: string | undefined,
1438
+ theme: DiffTheme,
1439
+ indicatorMode: DiffIndicatorMode,
1440
+ hashlineGutter = false,
1441
+ ): string {
1442
+ const blankLineNumber = " ".repeat(lineNumberWidth);
1443
+ return renderLinePrefix(kind, blankLineNumber, theme, rowBg, indicatorMode, true, hashlineGutter);
1444
+ }
1445
+
1446
+ function renderLineContentIndicatorPrefix(
1447
+ kind: DiffLineKind,
1448
+ theme: DiffTheme,
1449
+ rowBg: string | undefined,
1450
+ indicatorMode: DiffIndicatorMode,
1451
+ continuation = false,
1452
+ ): string {
1453
+ return indicatorMode === "classic"
1454
+ ? renderClassicContentPrefix(kind, theme, rowBg, continuation)
1455
+ : "";
1456
+ }
1457
+
1458
+ function renderCompactLinePrefix(
1459
+ kind: DiffLineKind,
1460
+ theme: DiffTheme,
1461
+ rowBg: string | undefined,
1462
+ indicatorMode: DiffIndicatorMode,
1463
+ continuation = false,
1464
+ ): string {
1465
+ const marker = renderChangeMarker(kind, theme, rowBg, indicatorMode, continuation);
1466
+ const spacer = rowBg ? `${rowBg} ` : " ";
1467
+ return `${marker}${spacer}`;
1468
+ }
1469
+
1470
+ interface LineCellRenderParams {
1471
+ kind: DiffLineKind;
1472
+ code: string;
1473
+ width: number;
1474
+ rowBg: string | undefined;
1475
+ restoreBgAnsi: string | undefined;
1476
+ theme: DiffTheme;
1477
+ wordWrap: boolean;
1478
+ indicatorMode: DiffIndicatorMode;
1479
+ }
1480
+
1481
+ function renderWrappedRowsWithOptionalBackground(
1482
+ wrappedCodeLines: string[],
1483
+ buildRow: (index: number, wrappedCodeLine: string) => string,
1484
+ width: number,
1485
+ rowBg: string | undefined,
1486
+ restoreBgAnsi: string | undefined,
1487
+ ): string[] {
1488
+ if (!rowBg) {
1489
+ return wrappedCodeLines.map((wrappedCodeLine, index) =>
1490
+ stabilizeBackgroundResets(buildRow(index, wrappedCodeLine)),
1491
+ );
1492
+ }
1493
+ const safeRestoreBgAnsi = restoreBgAnsi ?? rowBg ?? ANSI_BG_RESET;
1494
+ const visualRows = wrappedCodeLines.map((wrappedCodeLine, index) => buildRow(index, wrappedCodeLine));
1495
+ return applyLineBackgroundToWrappedRows(visualRows, width, rowBg, safeRestoreBgAnsi);
1496
+ }
1497
+
1498
+ function computeLineCellCodeWidth(
1499
+ width: number,
1500
+ lineNumberWidth: number,
1501
+ indicatorMode: DiffIndicatorMode,
1502
+ hashlineGutter: boolean,
1503
+ ): number {
1504
+ const prefixPlainWidth = getLinePrefixPlainWidth(lineNumberWidth, indicatorMode, hashlineGutter);
1505
+ const dividerPlainWidth = getLineDividerPlainWidth(indicatorMode, hashlineGutter);
1506
+ const contentIndicatorWidth = hashlineGutter ? 0 : getLineContentIndicatorPrefixPlainWidth(indicatorMode);
1507
+ return Math.max(0, width - prefixPlainWidth - dividerPlainWidth - contentIndicatorWidth);
1508
+ }
1509
+
1510
+ function buildLineCellParams(
1511
+ kind: DiffLineKind,
1512
+ code: string,
1513
+ width: number,
1514
+ rowBg: string | undefined,
1515
+ restoreBgAnsi: string | undefined,
1516
+ theme: DiffTheme,
1517
+ wordWrap: boolean,
1518
+ indicatorMode: DiffIndicatorMode,
1519
+ ): LineCellRenderParams {
1520
+ return { kind, code, width, rowBg, restoreBgAnsi, theme, wordWrap, indicatorMode };
1521
+ }
1522
+
1523
+ function renderCompactLineCell({ kind, code, width, rowBg, restoreBgAnsi, theme, wordWrap, indicatorMode }: LineCellRenderParams): string[] {
1524
+ if (width <= 0) {
1525
+ return [""];
1526
+ }
1527
+
1528
+ const prefix = renderCompactLinePrefix(kind, theme, undefined, indicatorMode);
1529
+ const continuationPrefix = renderCompactLinePrefix(kind, theme, undefined, indicatorMode, true);
1530
+ const prefixPlainWidth = 2;
1531
+ const codeWidth = Math.max(0, width - prefixPlainWidth);
1532
+ const wrappedCodeLines = wrapToWidth(code, codeWidth, wordWrap);
1533
+ return renderWrappedRowsWithOptionalBackground(
1534
+ wrappedCodeLines,
1535
+ (index, line) => `${index === 0 ? prefix : continuationPrefix}${line}`,
1536
+ width,
1537
+ rowBg,
1538
+ restoreBgAnsi,
1539
+ );
1540
+ }
1541
+
1542
+ function renderLineCell(
1543
+ { kind, code, width, rowBg, restoreBgAnsi, theme, wordWrap, indicatorMode }: LineCellRenderParams,
1544
+ lineNumber: string,
1545
+ hashlineGutter = false,
1546
+ ): string[] {
1547
+ if (width <= 0) {
1548
+ return [""];
1549
+ }
1550
+
1551
+ const codeWidth = computeLineCellCodeWidth(width, lineNumber.length, indicatorMode, hashlineGutter);
1552
+ const prefix = renderLinePrefix(kind, lineNumber, theme, undefined, indicatorMode, false, hashlineGutter);
1553
+ const continuationPrefix = renderLineContinuationPrefix(kind, lineNumber.length, undefined, theme, indicatorMode, hashlineGutter);
1554
+ const divider = renderCodeDivider(theme, undefined, indicatorMode, hashlineGutter);
1555
+ const firstContentPrefix = hashlineGutter ? "" : renderLineContentIndicatorPrefix(kind, theme, undefined, indicatorMode);
1556
+ const continuationContentPrefix = hashlineGutter ? "" : renderLineContentIndicatorPrefix(kind, theme, undefined, indicatorMode, true);
1557
+ const wrappedCodeLines = wrapToWidth(code, codeWidth, wordWrap);
1558
+ return renderWrappedRowsWithOptionalBackground(
1559
+ wrappedCodeLines,
1560
+ (index, line) => {
1561
+ const linePrefix = index === 0 ? prefix : continuationPrefix;
1562
+ const contentPrefix = index === 0 ? firstContentPrefix : continuationContentPrefix;
1563
+ return `${linePrefix}${divider}${contentPrefix}${line}`;
1564
+ },
1565
+ width,
1566
+ rowBg,
1567
+ restoreBgAnsi,
1568
+ );
1569
+ }
1570
+
1571
+ function highlightDiffLine(
1572
+ codeText: string,
1573
+ entry: DiffLineEntry,
1574
+ inlineHighlights: WeakMap<DiffLineEntry, DiffSpan[]>,
1575
+ palette: DiffPalette,
1576
+ highlightLine: CodeLineHighlighter,
1577
+ containerBgAnsi: string | undefined,
1578
+ ): { highlighted: string; rowBg: string | undefined } {
1579
+ const syntaxHighlighted = highlightLine(codeText);
1580
+ const rowBg = getLineBackground(entry.lineKind, palette, false);
1581
+ const emphasisBg = getLineBackground(entry.lineKind, palette, true);
1582
+ const inlineSpans = inlineHighlights.get(entry) ?? [];
1583
+ const highlighted = applyInlineSpanHighlight(codeText, syntaxHighlighted, inlineSpans, emphasisBg, rowBg, containerBgAnsi);
1584
+ return { highlighted, rowBg };
1585
+ }
1586
+
1587
+ function pushDiffLineRows(rows: RenderedRow[], lines: string[], entry: DiffLineEntry): void {
1588
+ rows.push(
1589
+ ...lines.map((text) => ({
1590
+ text,
1591
+ hunkIndex: entry.hunkIndex || null,
1592
+ })),
1593
+ );
1594
+ }
1595
+
1596
+ interface DiffRenderContext {
1597
+ width: number;
1598
+ theme: DiffTheme;
1599
+ inlineHighlights: WeakMap<DiffLineEntry, DiffSpan[]>;
1600
+ palette: DiffPalette;
1601
+ highlightLine: CodeLineHighlighter;
1602
+ containerBgAnsi: string | undefined;
1603
+ wordWrap: boolean;
1604
+ indicatorMode: DiffIndicatorMode;
1605
+ showHashlineAnchors: boolean;
1606
+ }
1607
+
1608
+ function processDiffEntries(
1609
+ entries: ParsedDiffEntry[],
1610
+ ctx: DiffRenderContext,
1611
+ processLine: (entry: DiffLineEntry) => string[],
1612
+ ): RenderedRow[] {
1613
+ const { width, theme, wordWrap } = ctx;
1614
+ const rows: RenderedRow[] = [];
1615
+ for (const entry of entries) {
1616
+ if (entry.kind !== "line") {
1617
+ rows.push(...formatMetaEntryRows(entry, width, theme, wordWrap));
1618
+ continue;
1619
+ }
1620
+ pushDiffLineRows(rows, processLine(entry), entry);
1621
+ }
1622
+ return rows;
1623
+ }
1624
+
1625
+ function renderUnified(
1626
+ entries: ParsedDiffEntry[],
1627
+ ctx: DiffRenderContext,
1628
+ lineNumberWidth: number,
1629
+ ): RenderedRow[] {
1630
+ return processDiffEntries(entries, ctx, (entry) => {
1631
+ const lineNumber = entry.lineKind === "add"
1632
+ ? formatLineNumberLabel(entry, entry.newLineNumber, entry.fallbackLineNumber, lineNumberWidth, ctx.showHashlineAnchors)
1633
+ : formatLineNumberLabel(entry, entry.oldLineNumber, entry.fallbackLineNumber, lineNumberWidth, ctx.showHashlineAnchors);
1634
+ const codeText = normalizeCodeWhitespace(entry.content);
1635
+ const { highlighted, rowBg } = highlightDiffLine(codeText, entry, ctx.inlineHighlights, ctx.palette, ctx.highlightLine, ctx.containerBgAnsi);
1636
+ return renderLineCell(
1637
+ buildLineCellParams(entry.lineKind, highlighted, ctx.width, rowBg, ctx.containerBgAnsi, ctx.theme, ctx.wordWrap, ctx.indicatorMode),
1638
+ lineNumber,
1639
+ usesHashlineGutter(ctx.showHashlineAnchors),
1640
+ );
1641
+ });
1642
+ }
1643
+
1644
+ function toUnifiedFallbackRows(
1645
+ rows: SplitDiffRow[],
1646
+ ctx: DiffRenderContext,
1647
+ lineNumberWidth: number,
1648
+ ): RenderedRow[] {
1649
+ const flattened: ParsedDiffEntry[] = [];
1650
+ for (const row of rows) {
1651
+ if (row.meta) {
1652
+ flattened.push(row.meta);
1653
+ continue;
1654
+ }
1655
+ if (row.left) {
1656
+ flattened.push(row.left);
1657
+ }
1658
+ if (row.right && row.right !== row.left) {
1659
+ flattened.push(row.right);
1660
+ }
1661
+ }
1662
+ return renderUnified(flattened, ctx, lineNumberWidth);
1663
+ }
1664
+
1665
+ function renderCompact(
1666
+ entries: ParsedDiffEntry[],
1667
+ ctx: DiffRenderContext,
1668
+ ): RenderedRow[] {
1669
+ return processDiffEntries(entries, ctx, (entry) => {
1670
+ const codeText = normalizeCodeWhitespace(getCompactLineRenderContent(entry, ctx.showHashlineAnchors));
1671
+ const { highlighted, rowBg } = highlightDiffLine(codeText, entry, ctx.inlineHighlights, ctx.palette, ctx.highlightLine, ctx.containerBgAnsi);
1672
+ return renderCompactLineCell(buildLineCellParams(entry.lineKind, highlighted, ctx.width, rowBg, ctx.containerBgAnsi, ctx.theme, ctx.wordWrap, ctx.indicatorMode));
1673
+ });
1674
+ }
1675
+
1676
+ function renderSplitBlankCell(
1677
+ columnWidth: number,
1678
+ lineNumberWidth: number,
1679
+ theme: DiffTheme,
1680
+ indicatorMode: DiffIndicatorMode,
1681
+ hashlineGutter = false,
1682
+ ): string {
1683
+ const codeWidth = computeLineCellCodeWidth(columnWidth, lineNumberWidth, indicatorMode, hashlineGutter);
1684
+ const prefix = renderLinePrefix("context", " ".repeat(lineNumberWidth), theme, undefined, indicatorMode, true, hashlineGutter);
1685
+ const divider = renderCodeDivider(theme, undefined, indicatorMode, hashlineGutter);
1686
+ const contentPrefix = hashlineGutter ? "" : renderLineContentIndicatorPrefix("context", theme, undefined, indicatorMode, true);
1687
+ return stabilizeBackgroundResets(`${prefix}${divider}${contentPrefix}${" ".repeat(codeWidth)}`);
1688
+ }
1689
+
1690
+ function renderSplitCell(
1691
+ line: DiffLineEntry | undefined,
1692
+ side: "left" | "right",
1693
+ columnWidth: number,
1694
+ lineNumberWidth: number,
1695
+ theme: DiffTheme,
1696
+ inlineHighlights: WeakMap<DiffLineEntry, DiffSpan[]>,
1697
+ palette: DiffPalette,
1698
+ highlightLine: CodeLineHighlighter,
1699
+ containerBgAnsi: string | undefined,
1700
+ wordWrap: boolean,
1701
+ indicatorMode: DiffIndicatorMode,
1702
+ showHashlineAnchors: boolean,
1703
+ ): string[] {
1704
+ const hashlineGutter = usesHashlineGutter(showHashlineAnchors);
1705
+ if (!line) {
1706
+ return [renderSplitBlankCell(columnWidth, lineNumberWidth, theme, indicatorMode, hashlineGutter)];
1707
+ }
1708
+
1709
+ const lineNumber = formatLineNumberLabel(line, getCellLineNumber(line, side), line.fallbackLineNumber, lineNumberWidth, showHashlineAnchors);
1710
+ const codeText = normalizeCodeWhitespace(line.content);
1711
+ const { highlighted, rowBg } = highlightDiffLine(codeText, line, inlineHighlights, palette, highlightLine, containerBgAnsi);
1712
+ return renderLineCell(
1713
+ buildLineCellParams(line.lineKind, highlighted, columnWidth, rowBg, containerBgAnsi, theme, wordWrap, indicatorMode),
1714
+ lineNumber,
1715
+ hashlineGutter,
1716
+ );
1717
+ }
1718
+
1719
+ function renderSplitDivider(
1720
+ theme: DiffTheme,
1721
+ containerBgAnsi: string | undefined,
1722
+ separatorText: string = SPLIT_SEPARATOR,
1723
+ ): string {
1724
+ const dimAnsi = readThemeAnsi(theme, "fg", "dim");
1725
+ if (!containerBgAnsi) {
1726
+ return stabilizeBackgroundResets(theme.fg("dim", separatorText));
1727
+ }
1728
+ if (!dimAnsi) {
1729
+ return stabilizeBackgroundResets(`${containerBgAnsi}${theme.fg("dim", separatorText)}${containerBgAnsi}`);
1730
+ }
1731
+ return stabilizeBackgroundResets(`${containerBgAnsi}${dimAnsi}${separatorText}\x1b[39m${containerBgAnsi}`);
1732
+ }
1733
+
1734
+ function renderSplitTopBorderCell(
1735
+ columnWidth: number,
1736
+ lineNumberWidth: number,
1737
+ theme: DiffTheme,
1738
+ indicatorMode: DiffIndicatorMode,
1739
+ hashlineGutter = false,
1740
+ ): string {
1741
+ const safeColumnWidth = Math.max(1, columnWidth);
1742
+ const chars = "─".repeat(safeColumnWidth).split("");
1743
+ const dividerIndex = getLinePrefixPlainWidth(lineNumberWidth, indicatorMode, hashlineGutter);
1744
+ if (dividerIndex >= 0 && dividerIndex < chars.length) {
1745
+ chars[dividerIndex] = "┬";
1746
+ }
1747
+ return stabilizeBackgroundResets(theme.fg("dim", chars.join("")));
1748
+ }
1749
+
1750
+ function renderSplitHeaderCell(
1751
+ label: string,
1752
+ columnWidth: number,
1753
+ lineNumberWidth: number,
1754
+ theme: DiffTheme,
1755
+ indicatorMode: DiffIndicatorMode,
1756
+ hashlineGutter = false,
1757
+ ): string {
1758
+ const markerPad = hashlineGutter
1759
+ ? " ".repeat(getHashlineGutterMarkerWidth(indicatorMode))
1760
+ : indicatorMode === "bars" ? " " : "";
1761
+ const lineNumberLabel = fitToWidth(label, lineNumberWidth);
1762
+ const lineNumberSpacer = hashlineGutter ? "" : " ";
1763
+ const divider = hashlineGutter || indicatorMode !== "classic" ? "│ " : "│";
1764
+ const prefix = `${theme.fg("dim", markerPad)}${theme.fg("muted", lineNumberLabel)}${theme.fg("dim", lineNumberSpacer)}${theme.fg("dim", divider)}`;
1765
+ const prefixWidth = visibleWidth(`${markerPad}${lineNumberLabel}${lineNumberSpacer}${divider}`);
1766
+ const contentIndicatorWidth = hashlineGutter ? 0 : getLineContentIndicatorPrefixPlainWidth(indicatorMode);
1767
+ const codeWidth = Math.max(0, columnWidth - prefixWidth - contentIndicatorWidth);
1768
+ const contentPad = !hashlineGutter && indicatorMode === "classic" ? " " : "";
1769
+ return stabilizeBackgroundResets(`${prefix}${contentPad}${" ".repeat(codeWidth)}`);
1770
+ }
1771
+
1772
+ function canRenderSplitLayout(width: number): boolean {
1773
+ const separatorWidth = visibleWidth(SPLIT_SEPARATOR);
1774
+ const minimumSplitWidth = MIN_SPLIT_COLUMN_WIDTH * 2 + separatorWidth;
1775
+ return width >= minimumSplitWidth;
1776
+ }
1777
+
1778
+ function renderSplit(
1779
+ rows: SplitDiffRow[],
1780
+ ctx: DiffRenderContext,
1781
+ lineNumberWidth: number,
1782
+ ): RenderedRow[] {
1783
+ const { width, theme, inlineHighlights, palette, highlightLine, containerBgAnsi, wordWrap, indicatorMode, showHashlineAnchors } = ctx;
1784
+ if (!canRenderSplitLayout(width)) {
1785
+ return toUnifiedFallbackRows(rows, ctx, lineNumberWidth);
1786
+ }
1787
+
1788
+ const separatorWidth = visibleWidth(SPLIT_SEPARATOR);
1789
+ const leftWidth = Math.max(MIN_SPLIT_COLUMN_WIDTH, Math.floor((width - separatorWidth) / 2));
1790
+ const rightWidth = Math.max(MIN_SPLIT_COLUMN_WIDTH, width - separatorWidth - leftWidth);
1791
+ const splitLineNumberWidth = Math.max(3, lineNumberWidth);
1792
+ const hashlineGutter = usesHashlineGutter(showHashlineAnchors);
1793
+ const separator = renderSplitDivider(theme, containerBgAnsi);
1794
+ const topSeparator = renderSplitDivider(theme, containerBgAnsi, "─┬─");
1795
+ const output: RenderedRow[] = [];
1796
+ output.push({
1797
+ text: `${renderSplitTopBorderCell(leftWidth, splitLineNumberWidth, theme, indicatorMode, hashlineGutter)}${topSeparator}${renderSplitTopBorderCell(rightWidth, splitLineNumberWidth, theme, indicatorMode, hashlineGutter)}`,
1798
+ hunkIndex: null,
1799
+ });
1800
+ output.push({
1801
+ text: `${renderSplitHeaderCell("old", leftWidth, splitLineNumberWidth, theme, indicatorMode, hashlineGutter)}${separator}${renderSplitHeaderCell("new", rightWidth, splitLineNumberWidth, theme, indicatorMode, hashlineGutter)}`,
1802
+ hunkIndex: null,
1803
+ });
1804
+
1805
+ for (const row of rows) {
1806
+ if (row.meta) {
1807
+ output.push(...formatMetaEntryRows(row.meta, width, theme, wordWrap));
1808
+ continue;
1809
+ }
1810
+
1811
+ const leftCells = renderSplitCell(
1812
+ row.left,
1813
+ "left",
1814
+ leftWidth,
1815
+ splitLineNumberWidth,
1816
+ theme,
1817
+ inlineHighlights,
1818
+ palette,
1819
+ highlightLine,
1820
+ containerBgAnsi,
1821
+ wordWrap,
1822
+ indicatorMode,
1823
+ showHashlineAnchors,
1824
+ );
1825
+ const rightCells = renderSplitCell(
1826
+ row.right,
1827
+ "right",
1828
+ rightWidth,
1829
+ splitLineNumberWidth,
1830
+ theme,
1831
+ inlineHighlights,
1832
+ palette,
1833
+ highlightLine,
1834
+ containerBgAnsi,
1835
+ wordWrap,
1836
+ indicatorMode,
1837
+ showHashlineAnchors,
1838
+ );
1839
+
1840
+ const rowCount = Math.max(leftCells.length, rightCells.length);
1841
+ for (let index = 0; index < rowCount; index++) {
1842
+ const leftCell = leftCells[index] ?? renderSplitBlankCell(leftWidth, splitLineNumberWidth, theme, indicatorMode, hashlineGutter);
1843
+ const rightCell = rightCells[index] ?? renderSplitBlankCell(rightWidth, splitLineNumberWidth, theme, indicatorMode, hashlineGutter);
1844
+ output.push({ text: `${leftCell}${separator}${rightCell}`, hunkIndex: row.hunkIndex });
1845
+ }
1846
+ }
1847
+
1848
+ return output;
1849
+ }
1850
+
1851
+ function renderDiffStatBar(stats: DiffStats, width: number, theme: DiffTheme): string | null {
1852
+ const totalChanges = stats.added + stats.removed;
1853
+ if (totalChanges === 0 || width < 20) {
1854
+ return null;
1855
+ }
1856
+
1857
+ const barSlots = Math.max(8, Math.min(24, Math.floor(width / 12)));
1858
+ let addedSlots = Math.max(0, Math.min(barSlots, Math.round((stats.added / totalChanges) * barSlots)));
1859
+ if (stats.added > 0 && addedSlots === 0) {
1860
+ addedSlots = 1;
1861
+ }
1862
+ if (stats.removed > 0 && addedSlots >= barSlots) {
1863
+ addedSlots = barSlots - 1;
1864
+ }
1865
+ const removedSlots = Math.max(0, barSlots - addedSlots);
1866
+
1867
+ const addedBar = addedSlots > 0 ? theme.fg("toolDiffAdded", "━".repeat(addedSlots)) : "";
1868
+ const removedBar = removedSlots > 0 ? theme.fg("toolDiffRemoved", "━".repeat(removedSlots)) : "";
1869
+ return stabilizeBackgroundResets(`${theme.fg("dim", "[")}${addedBar}${removedBar}${theme.fg("dim", "]")}`);
1870
+ }
1871
+
1872
+ function buildDiffSummaryBasePieces(stats: DiffStats, theme: DiffTheme): string[] {
1873
+ return [
1874
+ theme.fg("toolOutput", `↳ ${emphasis(theme, "diff")}`),
1875
+ theme.fg("toolDiffAdded", `+${stats.added}`),
1876
+ theme.fg("toolDiffRemoved", `-${stats.removed}`),
1877
+ ];
1878
+ }
1879
+
1880
+ function renderHeaderRows(stats: DiffStats, mode: Exclude<DiffPresentationMode, "summary">, width: number, theme: DiffTheme): RenderedRow[] {
1881
+ if (mode === "compact") {
1882
+ const summary = buildDiffSummaryBasePieces(stats, theme).join(" ");
1883
+ return [{ text: stabilizeBackgroundResets(truncateToWidth(summary, width)), hunkIndex: null }];
1884
+ }
1885
+
1886
+ const summaryPieces = mode === "split"
1887
+ ? [
1888
+ ...buildDiffSummaryBasePieces(stats, theme),
1889
+ theme.fg("muted", mode),
1890
+ ]
1891
+ : [
1892
+ ...buildDiffSummaryBasePieces(stats, theme),
1893
+ theme.fg("muted", `${stats.hunks} ${pluralize(stats.hunks, "hunk")}`),
1894
+ theme.fg("muted", `${stats.files} ${pluralize(stats.files, "file")}`),
1895
+ theme.fg("muted", mode),
1896
+ ];
1897
+
1898
+ const summary = summaryPieces.join(mode === "split" ? " " : theme.fg("muted", " • "));
1899
+ const meter = renderDiffStatBar(stats, width, theme);
1900
+ if (!meter) {
1901
+ return [{ text: stabilizeBackgroundResets(truncateToWidth(summary, width)), hunkIndex: null }];
1902
+ }
1903
+
1904
+ const meterSeparator = " ";
1905
+ const meterWidth = visibleWidth(meterSeparator) + visibleWidth(meter);
1906
+ if (meterWidth >= width) {
1907
+ return [{ text: stabilizeBackgroundResets(truncateToWidth(summary, width)), hunkIndex: null }];
1908
+ }
1909
+
1910
+ const summaryWidth = Math.max(0, width - meterWidth);
1911
+ const fittedSummary = truncateToWidth(summary, summaryWidth);
1912
+ return [{ text: stabilizeBackgroundResets(`${fittedSummary}${meterSeparator}${meter}`), hunkIndex: null }];
1913
+ }
1914
+
1915
+ function renderDiffFrameLine(width: number, theme: DiffTheme): string {
1916
+ const frameWidth = Math.max(0, width);
1917
+ if (frameWidth === 0) {
1918
+ return "";
1919
+ }
1920
+ return stabilizeBackgroundResets(theme.fg("dim", "─".repeat(frameWidth)));
1921
+ }
1922
+
1923
+ function renderDiffSpacerLine(width: number): string {
1924
+ const safeWidth = Math.max(0, width);
1925
+ return safeWidth > 0 ? " ".repeat(safeWidth) : "";
1926
+ }
1927
+
1928
+ function applyLineLimit(
1929
+ rows: RenderedRow[],
1930
+ width: number,
1931
+ expanded: boolean,
1932
+ maxCollapsedLines: number,
1933
+ maxExpandedLines: number,
1934
+ totalHunks: number,
1935
+ theme: DiffTheme,
1936
+ ): string[] {
1937
+ const expandedLimit = Number.isFinite(maxExpandedLines)
1938
+ ? maxExpandedLines
1939
+ : DEFAULT_TOOL_DISPLAY_CONFIG.expandedPreviewMaxLines;
1940
+ const collapsedLimit = Number.isFinite(maxCollapsedLines)
1941
+ ? maxCollapsedLines
1942
+ : DEFAULT_TOOL_DISPLAY_CONFIG.diffCollapsedLines;
1943
+ const limit = expanded ? Math.max(0, expandedLimit) : Math.max(1, collapsedLimit);
1944
+ if (limit === 0 || rows.length <= limit) {
1945
+ return rows.map((row) => clampDiffLineToWidth(row.text, width));
1946
+ }
1947
+
1948
+ const shown = rows.slice(0, limit);
1949
+ const remaining = rows.length - shown.length;
1950
+ const visibleHunks = new Set(
1951
+ shown
1952
+ .map((row) => row.hunkIndex)
1953
+ .filter((hunkIndex): hunkIndex is number => typeof hunkIndex === "number" && hunkIndex > 0),
1954
+ );
1955
+ const hiddenHunks = Math.max(0, totalHunks - visibleHunks.size);
1956
+ const hintText = buildCollapsedDiffHintText(
1957
+ {
1958
+ remainingLines: remaining,
1959
+ hiddenHunks,
1960
+ },
1961
+ width,
1962
+ DIFF_WIDTH_OPS,
1963
+ );
1964
+
1965
+ return [
1966
+ ...shown.map((row) => clampDiffLineToWidth(row.text, width)),
1967
+ renderDiffSpacerLine(width),
1968
+ clampDiffLineToWidth(theme.fg(expanded ? "warning" : "muted", hintText), width),
1969
+ ];
1970
+ }
1971
+
1972
+ function collectDiffStats(entries: ParsedDiffEntry[], fallbackHunks = 0, fallbackFiles = 0): DiffStats {
1973
+ const stats: DiffStats = {
1974
+ added: 0,
1975
+ removed: 0,
1976
+ context: 0,
1977
+ hunks: fallbackHunks,
1978
+ files: fallbackFiles,
1979
+ lines: entries.length,
1980
+ };
1981
+
1982
+ const hunkIndexes = new Set<number>();
1983
+ let explicitFileCount = 0;
1984
+
1985
+ for (const entry of entries) {
1986
+ if (entry.kind === "line") {
1987
+ if (entry.lineKind === "add") {
1988
+ stats.added++;
1989
+ } else if (entry.lineKind === "remove") {
1990
+ stats.removed++;
1991
+ } else {
1992
+ stats.context++;
1993
+ }
1994
+ if (entry.hunkIndex > 0) {
1995
+ hunkIndexes.add(entry.hunkIndex);
1996
+ }
1997
+ continue;
1998
+ }
1999
+
2000
+ if (entry.kind === "hunk" && entry.hunkIndex > 0) {
2001
+ hunkIndexes.add(entry.hunkIndex);
2002
+ }
2003
+ if (entry.kind === "file") {
2004
+ explicitFileCount++;
2005
+ }
2006
+ }
2007
+
2008
+ if (hunkIndexes.size > 0) {
2009
+ stats.hunks = Math.max(stats.hunks, hunkIndexes.size);
2010
+ }
2011
+ if (explicitFileCount > 0) {
2012
+ stats.files = Math.max(stats.files, explicitFileCount);
2013
+ } else if (entries.length > 0) {
2014
+ stats.files = Math.max(stats.files, 1);
2015
+ }
2016
+ if (stats.hunks === 0 && entries.some((entry) => entry.kind === "line")) {
2017
+ stats.hunks = 1;
2018
+ }
2019
+
2020
+ return stats;
2021
+ }
2022
+
2023
+ function renderSingleDiffRow(text: string, color: string, width: number, theme: DiffTheme): string[] {
2024
+ if (width <= 0) {
2025
+ return [""];
2026
+ }
2027
+ return [clampDiffLineToWidth(stabilizeBackgroundResets(theme.fg(color, text)), width)];
2028
+ }
2029
+
2030
+ function safeGetDiff(details: unknown): string {
2031
+ if (!details || typeof details !== "object") {
2032
+ return "";
2033
+ }
2034
+ const typed = details as Partial<EditToolDetails>;
2035
+ return typeof typed.diff === "string" ? typed.diff : "";
2036
+ }
2037
+
2038
+ function createDiffRenderCache() {
2039
+ let cachedWidth: number | undefined;
2040
+ let cachedExpanded: boolean | undefined;
2041
+ let cachedMode: DiffPresentationMode | undefined;
2042
+ let cachedLines: string[] | undefined;
2043
+
2044
+ return {
2045
+ get(width: number, expanded: boolean, mode: DiffPresentationMode): string[] | undefined {
2046
+ if (cachedLines && cachedWidth === width && cachedExpanded === expanded && cachedMode === mode) {
2047
+ return cachedLines;
2048
+ }
2049
+ return undefined;
2050
+ },
2051
+ set(width: number, expanded: boolean, mode: DiffPresentationMode, lines: string[]): string[] {
2052
+ cachedWidth = width;
2053
+ cachedExpanded = expanded;
2054
+ cachedMode = mode;
2055
+ cachedLines = lines;
2056
+ return lines;
2057
+ },
2058
+ invalidate(): void {
2059
+ cachedWidth = undefined;
2060
+ cachedExpanded = undefined;
2061
+ cachedMode = undefined;
2062
+ cachedLines = undefined;
2063
+ },
2064
+ };
2065
+ }
2066
+
2067
+ export function renderEditDiffResult(
2068
+ details: unknown,
2069
+ options: DiffRenderOptions,
2070
+ config: ToolDisplayConfig,
2071
+ theme: DiffTheme,
2072
+ fallbackText: string,
2073
+ ): Component {
2074
+ const diffText = safeGetDiff(details);
2075
+ if (!diffText.trim()) {
2076
+ if (!fallbackText.trim()) {
2077
+ return new Text(theme.fg("muted", "↳ edit completed (no diff payload)"), 0, 0);
2078
+ }
2079
+ return new Text(theme.fg("toolOutput", fallbackText), 0, 0);
2080
+ }
2081
+
2082
+ let parsed: ParsedDiff;
2083
+ try {
2084
+ parsed = parseDiff(diffText);
2085
+ } catch (error) {
2086
+ const message = error instanceof Error ? error.message : String(error);
2087
+ return new Text(theme.fg("warning", `↳ unable to render diff: ${message}`), 0, 0);
2088
+ }
2089
+
2090
+ if (parsed.entries.length === 0) {
2091
+ return new Text(theme.fg("muted", "↳ no diff data"), 0, 0);
2092
+ }
2093
+
2094
+ const splitRows = buildSplitRows(parsed.entries);
2095
+ const showHashlineAnchors = options.expanded === true
2096
+ && parsed.entries.some((entry) => entry.kind === "line" && !!entry.hashlineAnchorContent);
2097
+ const lineNumberWidth = getLineNumberWidth(parsed.entries, showHashlineAnchors);
2098
+ const palette = resolveDiffPalette(theme);
2099
+ const containerBgAnsi = resolveContainerBackgroundAnsi(theme);
2100
+ const language = resolveLanguageFromPath(options.filePath);
2101
+ const highlightLine = createCodeLineHighlighter(language);
2102
+ const wordWrap = config.diffWordWrap;
2103
+ const indicatorMode = resolveDiffIndicatorMode(config);
2104
+
2105
+ const cache = createDiffRenderCache();
2106
+
2107
+ return {
2108
+ render(width: number): string[] {
2109
+ const safeWidth = normalizeDiffRenderWidth(width);
2110
+ const mode = resolveDiffPresentationMode(config, safeWidth, canRenderSplitLayout(safeWidth));
2111
+ const cached = cache.get(safeWidth, options.expanded, mode);
2112
+ if (cached) {
2113
+ return cached;
2114
+ }
2115
+
2116
+ if (mode === "summary") {
2117
+ return cache.set(safeWidth, options.expanded, mode, clampDiffLinesToWidth(renderSingleDiffRow(buildDiffSummaryText(parsed.stats, safeWidth), "toolOutput", safeWidth, theme), safeWidth));
2118
+ }
2119
+
2120
+ const headerRows = renderHeaderRows(parsed.stats, mode, safeWidth, theme);
2121
+ const inlineHighlights = buildInlineHighlightMap(splitRows);
2122
+ const bodyRows = mode === "split"
2123
+ ? renderSplit(
2124
+ splitRows,
2125
+ { width: safeWidth, theme, inlineHighlights, palette, highlightLine, containerBgAnsi, wordWrap, indicatorMode, showHashlineAnchors },
2126
+ lineNumberWidth,
2127
+ )
2128
+ : mode === "compact"
2129
+ ? renderCompact(
2130
+ parsed.entries,
2131
+ { width: safeWidth, theme, inlineHighlights, palette, highlightLine, containerBgAnsi, wordWrap, indicatorMode, showHashlineAnchors },
2132
+ )
2133
+ : renderUnified(
2134
+ parsed.entries,
2135
+ { width: safeWidth, theme, inlineHighlights, palette, highlightLine, containerBgAnsi, wordWrap, indicatorMode, showHashlineAnchors },
2136
+ lineNumberWidth,
2137
+ );
2138
+ const bodyWithLimit = applyLineLimit(
2139
+ bodyRows,
2140
+ safeWidth,
2141
+ options.expanded,
2142
+ config.diffCollapsedLines,
2143
+ config.expandedPreviewMaxLines,
2144
+ parsed.stats.hunks,
2145
+ theme,
2146
+ );
2147
+ const frame = renderDiffFrameLine(safeWidth, theme);
2148
+ const renderedLines = mode === "unified"
2149
+ ? [...headerRows.map((row) => row.text), frame, ...bodyWithLimit, frame]
2150
+ : [...headerRows.map((row) => row.text), ...bodyWithLimit];
2151
+
2152
+ const clampedLines = clampDiffLinesToWidth(renderedLines, safeWidth);
2153
+ return cache.set(safeWidth, options.expanded, mode, clampedLines);
2154
+ },
2155
+ invalidate: cache.invalidate,
2156
+ };
2157
+ }
2158
+
2159
+ function renderWriteHeader(
2160
+ wasOverwrite: boolean,
2161
+ width: number,
2162
+ theme: DiffTheme,
2163
+ headerLabel?: string,
2164
+ ): string {
2165
+ const actionLabel = headerLabel?.trim() || (wasOverwrite ? "overwritten" : "created");
2166
+ return stabilizeBackgroundResets(
2167
+ truncateToWidth(theme.fg("toolOutput", `↳ ${emphasis(theme, actionLabel)}`), width),
2168
+ );
2169
+ }
2170
+
2171
+ type WriteDiffOperationKind = "context" | "remove" | "add";
2172
+
2173
+ interface WriteDiffOperation {
2174
+ kind: WriteDiffOperationKind;
2175
+ content: string;
2176
+ }
2177
+
2178
+ function buildWriteDiffOperations(oldLines: string[], newLines: string[]): WriteDiffOperation[] {
2179
+ const oldLength = oldLines.length;
2180
+ const newLength = newLines.length;
2181
+ const table: number[][] = Array.from({ length: oldLength + 1 }, () => Array<number>(newLength + 1).fill(0));
2182
+
2183
+ for (let oldIndex = 1; oldIndex <= oldLength; oldIndex++) {
2184
+ for (let newIndex = 1; newIndex <= newLength; newIndex++) {
2185
+ if ((oldLines[oldIndex - 1] ?? "") === (newLines[newIndex - 1] ?? "")) {
2186
+ table[oldIndex]![newIndex] = (table[oldIndex - 1]?.[newIndex - 1] ?? 0) + 1;
2187
+ continue;
2188
+ }
2189
+ const top = table[oldIndex - 1]?.[newIndex] ?? 0;
2190
+ const left = table[oldIndex]?.[newIndex - 1] ?? 0;
2191
+ table[oldIndex]![newIndex] = Math.max(top, left);
2192
+ }
2193
+ }
2194
+
2195
+ const operations: WriteDiffOperation[] = [];
2196
+ let oldCursor = oldLength;
2197
+ let newCursor = newLength;
2198
+
2199
+ while (oldCursor > 0 || newCursor > 0) {
2200
+ const oldLine = oldCursor > 0 ? (oldLines[oldCursor - 1] ?? "") : undefined;
2201
+ const newLine = newCursor > 0 ? (newLines[newCursor - 1] ?? "") : undefined;
2202
+
2203
+ if (oldCursor > 0 && newCursor > 0 && oldLine === newLine) {
2204
+ operations.push({ kind: "context", content: oldLine ?? "" });
2205
+ oldCursor--;
2206
+ newCursor--;
2207
+ continue;
2208
+ }
2209
+
2210
+ const top = oldCursor > 0 ? (table[oldCursor - 1]?.[newCursor] ?? 0) : -1;
2211
+ const left = newCursor > 0 ? (table[oldCursor]?.[newCursor - 1] ?? 0) : -1;
2212
+
2213
+ if (newCursor > 0 && left >= top) {
2214
+ operations.push({ kind: "add", content: newLine ?? "" });
2215
+ newCursor--;
2216
+ continue;
2217
+ }
2218
+
2219
+ if (oldCursor > 0) {
2220
+ operations.push({ kind: "remove", content: oldLine ?? "" });
2221
+ oldCursor--;
2222
+ }
2223
+ }
2224
+
2225
+ operations.reverse();
2226
+ return operations;
2227
+ }
2228
+
2229
+ function buildWriteEntries(lines: string[]): ParsedDiffEntry[] {
2230
+ return lines.map((line, index) => ({
2231
+ kind: "line",
2232
+ lineKind: "add",
2233
+ oldLineNumber: null,
2234
+ newLineNumber: index + 1,
2235
+ fallbackLineNumber: `${index + 1}`,
2236
+ content: line,
2237
+ raw: `+${line}`,
2238
+ hunkIndex: 1,
2239
+ }));
2240
+ }
2241
+
2242
+ function buildWriteOverwriteEntries(oldLines: string[], newLines: string[]): ParsedDiffEntry[] {
2243
+ const operations = buildWriteDiffOperations(oldLines, newLines);
2244
+ const entries: ParsedDiffEntry[] = [];
2245
+ let oldLineNumber = 1;
2246
+ let newLineNumber = 1;
2247
+
2248
+ for (const operation of operations) {
2249
+ if (operation.kind === "context") {
2250
+ entries.push({
2251
+ kind: "line",
2252
+ lineKind: "context",
2253
+ oldLineNumber,
2254
+ newLineNumber,
2255
+ fallbackLineNumber: `${newLineNumber}`,
2256
+ content: operation.content,
2257
+ raw: ` ${operation.content}`,
2258
+ hunkIndex: 1,
2259
+ });
2260
+ oldLineNumber++;
2261
+ newLineNumber++;
2262
+ continue;
2263
+ }
2264
+
2265
+ if (operation.kind === "remove") {
2266
+ entries.push({
2267
+ kind: "line",
2268
+ lineKind: "remove",
2269
+ oldLineNumber,
2270
+ newLineNumber: null,
2271
+ fallbackLineNumber: `${oldLineNumber}`,
2272
+ content: operation.content,
2273
+ raw: `-${operation.content}`,
2274
+ hunkIndex: 1,
2275
+ });
2276
+ oldLineNumber++;
2277
+ continue;
2278
+ }
2279
+
2280
+ entries.push({
2281
+ kind: "line",
2282
+ lineKind: "add",
2283
+ oldLineNumber: null,
2284
+ newLineNumber,
2285
+ fallbackLineNumber: `${newLineNumber}`,
2286
+ content: operation.content,
2287
+ raw: `+${operation.content}`,
2288
+ hunkIndex: 1,
2289
+ });
2290
+ newLineNumber++;
2291
+ }
2292
+
2293
+ return entries;
2294
+ }
2295
+
2296
+ interface WriteDiffData {
2297
+ entries: ParsedDiffEntry[];
2298
+ splitRows: SplitDiffRow[];
2299
+ inlineHighlights: WeakMap<DiffLineEntry, DiffSpan[]>;
2300
+ lineNumberWidth: number;
2301
+ stats: DiffStats;
2302
+ hunkCount: number;
2303
+ }
2304
+
2305
+ interface WriteOverwriteGuard {
2306
+ previousLineCount: number;
2307
+ nextLineCount: number;
2308
+ }
2309
+
2310
+ const MAX_WRITE_OVERWRITE_DIFF_LINES = 4000;
2311
+ const MAX_WRITE_OVERWRITE_DIFF_MATRIX_CELLS = 1_000_000;
2312
+
2313
+ function buildApproximateWriteStats(
2314
+ lineCount: number,
2315
+ previousLineCount: number,
2316
+ hasComparablePrevious: boolean,
2317
+ ): DiffStats {
2318
+ const removed = hasComparablePrevious ? previousLineCount : 0;
2319
+ const added = lineCount;
2320
+ const hasContent = lineCount > 0 || removed > 0;
2321
+ return {
2322
+ added,
2323
+ removed,
2324
+ context: 0,
2325
+ hunks: hasContent ? 1 : 0,
2326
+ files: 1,
2327
+ lines: added + removed,
2328
+ };
2329
+ }
2330
+
2331
+ function buildWriteDiffData(entries: ParsedDiffEntry[]): WriteDiffData {
2332
+ const splitRows = buildSplitRows(entries);
2333
+ const inlineHighlights = buildInlineHighlightMap(splitRows);
2334
+ const lineNumberWidth = getLineNumberWidth(entries);
2335
+ const hunkCount = entries.length > 0 ? 1 : 0;
2336
+ const stats = collectDiffStats(entries, hunkCount, 1);
2337
+ return {
2338
+ entries,
2339
+ splitRows,
2340
+ inlineHighlights,
2341
+ lineNumberWidth,
2342
+ stats,
2343
+ hunkCount,
2344
+ };
2345
+ }
2346
+
2347
+ function resolveWriteOverwriteGuard(
2348
+ previousLines: string[],
2349
+ nextLines: string[],
2350
+ ): WriteOverwriteGuard | undefined {
2351
+ const previousLineCount = previousLines.length;
2352
+ const nextLineCount = nextLines.length;
2353
+ if (previousLineCount > MAX_WRITE_OVERWRITE_DIFF_LINES || nextLineCount > MAX_WRITE_OVERWRITE_DIFF_LINES) {
2354
+ return { previousLineCount, nextLineCount };
2355
+ }
2356
+ if (previousLineCount === 0 || nextLineCount === 0) {
2357
+ return undefined;
2358
+ }
2359
+ return previousLineCount * nextLineCount > MAX_WRITE_OVERWRITE_DIFF_MATRIX_CELLS
2360
+ ? { previousLineCount, nextLineCount }
2361
+ : undefined;
2362
+ }
2363
+
2364
+ function buildWriteOverwriteGuardText(guard: WriteOverwriteGuard, width: number): string {
2365
+ const safeWidth = normalizeDiffRenderWidth(width);
2366
+ if (safeWidth === 0) {
2367
+ return "";
2368
+ }
2369
+
2370
+ const candidates = [
2371
+ `↳ overwrite diff omitted (${guard.previousLineCount} → ${guard.nextLineCount} lines)`,
2372
+ `↳ overwrite diff omitted (${guard.previousLineCount}→${guard.nextLineCount})`,
2373
+ "↳ overwrite diff omitted",
2374
+ "diff omitted",
2375
+ "…",
2376
+ ];
2377
+ for (const candidate of candidates) {
2378
+ if (visibleWidth(candidate) <= safeWidth) {
2379
+ return candidate;
2380
+ }
2381
+ }
2382
+ return truncateToWidth(candidates[candidates.length - 1] ?? "", safeWidth, "");
2383
+ }
2384
+
2385
+ function renderWriteOverwriteGuardRows(
2386
+ guard: WriteOverwriteGuard,
2387
+ width: number,
2388
+ theme: DiffTheme,
2389
+ ): string[] {
2390
+ return renderSingleDiffRow(buildWriteOverwriteGuardText(guard, width), "warning", width, theme);
2391
+ }
2392
+
2393
+ export function renderWriteDiffResult(
2394
+ content: string | undefined,
2395
+ options: DiffRenderOptions,
2396
+ config: ToolDisplayConfig,
2397
+ theme: DiffTheme,
2398
+ fallbackText: string,
2399
+ ): Component {
2400
+ if (typeof content !== "string") {
2401
+ if (!fallbackText.trim()) {
2402
+ return new Text(theme.fg("muted", "↳ write completed"), 0, 0);
2403
+ }
2404
+ return new Text(theme.fg("toolOutput", fallbackText), 0, 0);
2405
+ }
2406
+
2407
+ const filePath = options.filePath?.trim() || "(unknown path)";
2408
+ const lines = splitWriteContentLines(content);
2409
+ const previousLines = typeof options.previousContent === "string"
2410
+ ? splitWriteContentLines(options.previousContent)
2411
+ : [];
2412
+ const hasComparablePrevious = options.fileExistedBeforeWrite === true && typeof options.previousContent === "string";
2413
+ const approximateStats = buildApproximateWriteStats(
2414
+ lines.length,
2415
+ previousLines.length,
2416
+ hasComparablePrevious,
2417
+ );
2418
+ const overwriteGuard = hasComparablePrevious
2419
+ ? resolveWriteOverwriteGuard(previousLines, lines)
2420
+ : undefined;
2421
+ const palette = resolveDiffPalette(theme);
2422
+ const containerBgAnsi = resolveContainerBackgroundAnsi(theme);
2423
+ const language = resolveLanguageFromPath(filePath);
2424
+ const highlightLine = createCodeLineHighlighter(language);
2425
+ const wordWrap = config.diffWordWrap;
2426
+ const indicatorMode = resolveDiffIndicatorMode(config);
2427
+
2428
+ let detailedData: WriteDiffData | undefined;
2429
+ const cache = createDiffRenderCache();
2430
+
2431
+ function getDetailedData(): WriteDiffData {
2432
+ if (detailedData) {
2433
+ return detailedData;
2434
+ }
2435
+ const entries = hasComparablePrevious
2436
+ ? buildWriteOverwriteEntries(previousLines, lines)
2437
+ : buildWriteEntries(lines);
2438
+ detailedData = buildWriteDiffData(entries);
2439
+ return detailedData;
2440
+ }
2441
+
2442
+ return {
2443
+ render(width: number): string[] {
2444
+ const safeWidth = normalizeDiffRenderWidth(width);
2445
+ const resolvedMode = resolveDiffPresentationMode(config, safeWidth, canRenderSplitLayout(safeWidth));
2446
+ const mode: DiffPresentationMode = hasComparablePrevious
2447
+ ? resolvedMode
2448
+ : resolvedMode === "split"
2449
+ ? "unified"
2450
+ : resolvedMode;
2451
+ const cached = cache.get(safeWidth, options.expanded, mode);
2452
+ if (cached) {
2453
+ return cached;
2454
+ }
2455
+
2456
+ const header = renderWriteHeader(
2457
+ options.fileExistedBeforeWrite === true,
2458
+ safeWidth,
2459
+ theme,
2460
+ options.headerLabel,
2461
+ );
2462
+ if (overwriteGuard) {
2463
+ return cache.set(safeWidth, options.expanded, mode, clampDiffLinesToWidth(
2464
+ [header, ...renderWriteOverwriteGuardRows(overwriteGuard, safeWidth, theme)],
2465
+ safeWidth,
2466
+ ));
2467
+ }
2468
+
2469
+ if (mode === "summary") {
2470
+ const summaryRows = approximateStats.lines === 0
2471
+ ? [header]
2472
+ : [header, ...renderSingleDiffRow(buildDiffSummaryText(approximateStats, safeWidth), "toolOutput", safeWidth, theme)];
2473
+ return cache.set(safeWidth, options.expanded, mode, clampDiffLinesToWidth(summaryRows, safeWidth));
2474
+ }
2475
+
2476
+ const data = getDetailedData();
2477
+ const renderCtx: DiffRenderContext = {
2478
+ width: safeWidth, theme, inlineHighlights: data.inlineHighlights, palette, highlightLine, containerBgAnsi, wordWrap, indicatorMode, showHashlineAnchors: false,
2479
+ };
2480
+ const bodyRows: RenderedRow[] = data.entries.length === 0
2481
+ ? [{ text: theme.fg("muted", "(empty file)"), hunkIndex: null }]
2482
+ : mode === "split"
2483
+ ? renderSplit(
2484
+ data.splitRows,
2485
+ renderCtx,
2486
+ data.lineNumberWidth,
2487
+ )
2488
+ : mode === "compact"
2489
+ ? renderCompact(
2490
+ data.entries,
2491
+ renderCtx,
2492
+ )
2493
+ : renderUnified(
2494
+ data.entries,
2495
+ renderCtx,
2496
+ data.lineNumberWidth,
2497
+ );
2498
+
2499
+ const bodyWithLimit = applyLineLimit(
2500
+ bodyRows,
2501
+ safeWidth,
2502
+ options.expanded,
2503
+ config.diffCollapsedLines,
2504
+ config.expandedPreviewMaxLines,
2505
+ data.hunkCount,
2506
+ theme,
2507
+ );
2508
+ const frame = renderDiffFrameLine(safeWidth, theme);
2509
+ const renderedLines = mode === "unified"
2510
+ ? [header, frame, ...bodyWithLimit, frame]
2511
+ : [header, ...bodyWithLimit];
2512
+ const finalLines = clampDiffLinesToWidth(renderedLines, safeWidth);
2513
+ return cache.set(safeWidth, options.expanded, mode, finalLines);
2514
+ },
2515
+ invalidate: cache.invalidate,
2516
+ };
2517
+ }