pi-para 0.5.2 → 0.6.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 (195) hide show
  1. package/ARCHITECTURE.md +160 -0
  2. package/CHANGELOG.md +51 -0
  3. package/CONFIGURATION.md +243 -0
  4. package/README.md +140 -237
  5. package/SETUP.md +196 -112
  6. package/STRUCTURE.md +140 -0
  7. package/package.json +86 -18
  8. package/scripts/build-assets.mjs +29 -0
  9. package/scripts/install.ps1 +55 -0
  10. package/scripts/install.sh +63 -0
  11. package/scripts/smoke-install.mjs +63 -0
  12. package/skills/para/SKILL.md +1 -1
  13. package/skills/setup/SKILL.md +1 -1
  14. package/src/atomic-write.ts +17 -0
  15. package/src/capture.ts +4 -4
  16. package/src/cli-legacy.ts +43 -0
  17. package/src/cli.ts +133 -28
  18. package/src/commands.ts +203 -243
  19. package/src/config.ts +355 -0
  20. package/src/context.ts +29 -14
  21. package/src/credentials.ts +100 -0
  22. package/src/daemon.ts +1 -1
  23. package/src/doctor.ts +209 -0
  24. package/src/gepa/index.ts +1 -1
  25. package/src/index.ts +119 -40
  26. package/src/maintainer.ts +4 -4
  27. package/src/model-resolver.ts +96 -0
  28. package/src/paths.ts +48 -0
  29. package/src/processor.ts +4 -4
  30. package/src/qmd-providers.ts +63 -0
  31. package/src/query.ts +15 -1
  32. package/src/repair.ts +49 -0
  33. package/src/scheduler/controls.ts +125 -0
  34. package/src/scheduler/index.ts +210 -0
  35. package/src/scheduler/leases.ts +98 -0
  36. package/src/scheduler/session-capture.ts +146 -0
  37. package/src/scheduler/state.ts +304 -0
  38. package/src/session-tools.ts +1 -1
  39. package/src/settings.ts +126 -0
  40. package/src/setup.ts +116 -0
  41. package/src/status.ts +115 -0
  42. package/src/store.ts +116 -31
  43. package/src/summarize.ts +72 -16
  44. package/src/templates/prompts.ts +1 -1
  45. package/src/tools.ts +280 -90
  46. package/src/wiki-tool-guidance.ts +84 -0
  47. package/src/wiki.ts +98 -26
  48. package/dist/capture.d.ts +0 -34
  49. package/dist/capture.d.ts.map +0 -1
  50. package/dist/capture.js +0 -461
  51. package/dist/capture.js.map +0 -1
  52. package/dist/cli.d.ts +0 -15
  53. package/dist/cli.d.ts.map +0 -1
  54. package/dist/cli.js +0 -405
  55. package/dist/cli.js.map +0 -1
  56. package/dist/commands.d.ts +0 -15
  57. package/dist/commands.d.ts.map +0 -1
  58. package/dist/commands.js +0 -786
  59. package/dist/commands.js.map +0 -1
  60. package/dist/context.d.ts +0 -61
  61. package/dist/context.d.ts.map +0 -1
  62. package/dist/context.js +0 -289
  63. package/dist/context.js.map +0 -1
  64. package/dist/daemon.d.ts +0 -49
  65. package/dist/daemon.d.ts.map +0 -1
  66. package/dist/daemon.js +0 -226
  67. package/dist/daemon.js.map +0 -1
  68. package/dist/frontmatter.d.ts +0 -59
  69. package/dist/frontmatter.d.ts.map +0 -1
  70. package/dist/frontmatter.js +0 -170
  71. package/dist/frontmatter.js.map +0 -1
  72. package/dist/gepa/dataset.d.ts +0 -36
  73. package/dist/gepa/dataset.d.ts.map +0 -1
  74. package/dist/gepa/dataset.js +0 -148
  75. package/dist/gepa/dataset.js.map +0 -1
  76. package/dist/gepa/evaluator.d.ts +0 -51
  77. package/dist/gepa/evaluator.d.ts.map +0 -1
  78. package/dist/gepa/evaluator.js +0 -317
  79. package/dist/gepa/evaluator.js.map +0 -1
  80. package/dist/gepa/index.d.ts +0 -66
  81. package/dist/gepa/index.d.ts.map +0 -1
  82. package/dist/gepa/index.js +0 -240
  83. package/dist/gepa/index.js.map +0 -1
  84. package/dist/gepa/llm.d.ts +0 -35
  85. package/dist/gepa/llm.d.ts.map +0 -1
  86. package/dist/gepa/llm.js +0 -268
  87. package/dist/gepa/llm.js.map +0 -1
  88. package/dist/gepa/optimized/capture-prompt.txt +0 -65
  89. package/dist/gepa/optimizer.d.ts +0 -29
  90. package/dist/gepa/optimizer.d.ts.map +0 -1
  91. package/dist/gepa/optimizer.js +0 -249
  92. package/dist/gepa/optimizer.js.map +0 -1
  93. package/dist/gepa/targets.d.ts +0 -39
  94. package/dist/gepa/targets.d.ts.map +0 -1
  95. package/dist/gepa/targets.js +0 -326
  96. package/dist/gepa/targets.js.map +0 -1
  97. package/dist/gepa/types.d.ts +0 -168
  98. package/dist/gepa/types.d.ts.map +0 -1
  99. package/dist/gepa/types.js +0 -124
  100. package/dist/gepa/types.js.map +0 -1
  101. package/dist/index.d.ts +0 -21
  102. package/dist/index.d.ts.map +0 -1
  103. package/dist/index.js +0 -294
  104. package/dist/index.js.map +0 -1
  105. package/dist/ingest.d.ts +0 -88
  106. package/dist/ingest.d.ts.map +0 -1
  107. package/dist/ingest.js +0 -105
  108. package/dist/ingest.js.map +0 -1
  109. package/dist/link-discovery.d.ts +0 -40
  110. package/dist/link-discovery.d.ts.map +0 -1
  111. package/dist/link-discovery.js +0 -122
  112. package/dist/link-discovery.js.map +0 -1
  113. package/dist/link-utils.d.ts +0 -30
  114. package/dist/link-utils.d.ts.map +0 -1
  115. package/dist/link-utils.js +0 -145
  116. package/dist/link-utils.js.map +0 -1
  117. package/dist/lint.d.ts +0 -39
  118. package/dist/lint.d.ts.map +0 -1
  119. package/dist/lint.js +0 -827
  120. package/dist/lint.js.map +0 -1
  121. package/dist/maintainer.d.ts +0 -24
  122. package/dist/maintainer.d.ts.map +0 -1
  123. package/dist/maintainer.js +0 -358
  124. package/dist/maintainer.js.map +0 -1
  125. package/dist/processor.d.ts +0 -14
  126. package/dist/processor.d.ts.map +0 -1
  127. package/dist/processor.js +0 -361
  128. package/dist/processor.js.map +0 -1
  129. package/dist/query.d.ts +0 -69
  130. package/dist/query.d.ts.map +0 -1
  131. package/dist/query.js +0 -107
  132. package/dist/query.js.map +0 -1
  133. package/dist/raw.d.ts +0 -57
  134. package/dist/raw.d.ts.map +0 -1
  135. package/dist/raw.js +0 -219
  136. package/dist/raw.js.map +0 -1
  137. package/dist/redact.d.ts +0 -21
  138. package/dist/redact.d.ts.map +0 -1
  139. package/dist/redact.js +0 -143
  140. package/dist/redact.js.map +0 -1
  141. package/dist/scope.d.ts +0 -54
  142. package/dist/scope.d.ts.map +0 -1
  143. package/dist/scope.js +0 -161
  144. package/dist/scope.js.map +0 -1
  145. package/dist/scripts/bulk-link-fix.d.ts +0 -9
  146. package/dist/scripts/bulk-link-fix.d.ts.map +0 -1
  147. package/dist/scripts/bulk-link-fix.js +0 -106
  148. package/dist/scripts/bulk-link-fix.js.map +0 -1
  149. package/dist/session-tools.d.ts +0 -33
  150. package/dist/session-tools.d.ts.map +0 -1
  151. package/dist/session-tools.js +0 -211
  152. package/dist/session-tools.js.map +0 -1
  153. package/dist/state.d.ts +0 -54
  154. package/dist/state.d.ts.map +0 -1
  155. package/dist/state.js +0 -176
  156. package/dist/state.js.map +0 -1
  157. package/dist/store.d.ts +0 -56
  158. package/dist/store.d.ts.map +0 -1
  159. package/dist/store.js +0 -227
  160. package/dist/store.js.map +0 -1
  161. package/dist/summarize.d.ts +0 -56
  162. package/dist/summarize.d.ts.map +0 -1
  163. package/dist/summarize.js +0 -231
  164. package/dist/summarize.js.map +0 -1
  165. package/dist/tag-registry.d.ts +0 -56
  166. package/dist/tag-registry.d.ts.map +0 -1
  167. package/dist/tag-registry.js +0 -146
  168. package/dist/tag-registry.js.map +0 -1
  169. package/dist/templates/prompts.d.ts +0 -63
  170. package/dist/templates/prompts.d.ts.map +0 -1
  171. package/dist/templates/prompts.js +0 -260
  172. package/dist/templates/prompts.js.map +0 -1
  173. package/dist/tools.d.ts +0 -26
  174. package/dist/tools.d.ts.map +0 -1
  175. package/dist/tools.js +0 -1033
  176. package/dist/tools.js.map +0 -1
  177. package/dist/watcher.d.ts +0 -25
  178. package/dist/watcher.d.ts.map +0 -1
  179. package/dist/watcher.js +0 -84
  180. package/dist/watcher.js.map +0 -1
  181. package/dist/webui/client/dist/index.html +0 -1885
  182. package/dist/webui/server.d.ts +0 -31
  183. package/dist/webui/server.d.ts.map +0 -1
  184. package/dist/webui/server.js +0 -566
  185. package/dist/webui/server.js.map +0 -1
  186. package/dist/wiki.d.ts +0 -103
  187. package/dist/wiki.d.ts.map +0 -1
  188. package/dist/wiki.js +0 -428
  189. package/dist/wiki.js.map +0 -1
  190. package/scripts/gepa/__pycache__/dataset.cpython-313.pyc +0 -0
  191. package/scripts/gepa/__pycache__/lm_providers.cpython-313.pyc +0 -0
  192. package/scripts/gepa/__pycache__/metric.cpython-313.pyc +0 -0
  193. package/scripts/gepa/__pycache__/program.cpython-313.pyc +0 -0
  194. package/scripts/gepa/__pycache__/wiki_reader.cpython-313.pyc +0 -0
  195. package/scripts/gepa/uv.lock +0 -2241
@@ -1 +0,0 @@
1
- {"version":3,"file":"targets.js","sourceRoot":"","sources":["../../src/gepa/targets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,+EAA+E;AAE/E,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,2EAA2E;AAC3E,SAAS,cAAc;IACrB,8DAA8D;IAC9D,4DAA4D;IAC5D,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,mCAAmC;AACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAExD,oEAAoE;AACpE,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY;IAC5C,OAAO,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,+EAA+E;AAE/E;;;;;GAKG;AACH,KAAK,UAAU,6BAA6B,CAC1C,QAAgB,EAChB,OAAe;IAEf,6CAA6C;IAC7C,IAAI,UAAU,GAAG,QAAQ,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,+BAA+B;QAC/B,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;QAC9B,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAEnD,mEAAmE;IACnE,MAAM,OAAO,GAAG,IAAI,MAAM,CACxB,wBAAwB,OAAO,gCAAgC,CAChE,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEpC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,6BAA6B,OAAO,UAAU,UAAU,IAAI;YAC5D,0DAA0D,CAC3D,CAAC;IACJ,CAAC;IAED,oCAAoC;IACpC,OAAO,KAAK,CAAC,CAAC,CAAC;SACZ,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IAC9C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE9C,uCAAuC;IACvC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACzD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAQD,SAAS,kBAAkB,CAAC,CAAoB;IAC9C,OAAO,CAAC,CAAC,gBAAgB,CAAC;AAC5B,CAAC;AAcD,SAAS,YAAY;IACnB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAE9B,OAAO;QACL;YACE,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,oBAAoB;YACjC,WAAW,EAAE,0FAA0F;YACvG,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,0BAA0B,CAAC;YAChD,WAAW,EAAE;gBACX,gBAAgB,EAAE;oBAChB,wDAAwD;oBACxD,uCAAuC;oBACvC,yBAAyB;oBACzB,oCAAoC;oBACpC,mCAAmC;oBACnC,qBAAqB;oBACrB,uBAAuB;iBACxB;aACF;YACD,KAAK,CAAC,UAAU;gBACd,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;gBACvE,OAAO,kBAAkB,CAAC;YAC5B,CAAC;SACF;QACD;YACE,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,eAAe;YAC5B,WAAW,EAAE,gEAAgE;YAC7E,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,0BAA0B,CAAC;YAChD,WAAW,EAAE;gBACX,gBAAgB,EAAE;oBAChB,gDAAgD;oBAChD,oDAAoD;oBACpD,wFAAwF;oBACxF,qBAAqB;oBACrB,0BAA0B;oBAC1B,mCAAmC;iBACpC;aACF;YACD,KAAK,CAAC,UAAU;gBACd,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;gBAClE,OAAO,aAAa,CAAC;YACvB,CAAC;SACF;QACD;YACE,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,cAAc;YAC3B,WAAW,EAAE,gEAAgE;YAC7E,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,0BAA0B,CAAC;YAChD,WAAW,EAAE;gBACX,gBAAgB,EAAE;oBAChB,+CAA+C;oBAC/C,wBAAwB;oBACxB,yCAAyC;oBACzC,4BAA4B;iBAC7B;aACF;YACD,KAAK,CAAC,UAAU;gBACd,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;gBACjE,OAAO,YAAY,CAAC;YACtB,CAAC;SACF;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,uBAAuB;YACpC,WAAW,EAAE,wEAAwE;YACrF,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,0BAA0B,CAAC;YAChD,WAAW,EAAE;gBACX,gBAAgB,EAAE;oBAChB,qBAAqB;oBACrB,uCAAuC;oBACvC,uDAAuD;oBACvD,yCAAyC;oBACzC,sDAAsD;oBACtD,qBAAqB;oBACrB,uBAAuB;oBACvB,8EAA8E;iBAC/E;aACF;YACD,KAAK,CAAC,UAAU;gBACd,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;gBAC1E,OAAO,qBAAqB,CAAC;YAC/B,CAAC;SACF;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,gBAAgB;YAC7B,WAAW,EAAE,sDAAsD;YACnE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,0BAA0B,CAAC;YAChD,WAAW,EAAE;gBACX,gBAAgB,EAAE;oBAChB,wCAAwC;oBACxC,mDAAmD;oBACnD,+BAA+B;oBAC/B,sCAAsC;oBACtC,0BAA0B;iBAC3B;aACF;YACD,KAAK,CAAC,UAAU;gBACd,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;gBACnE,OAAO,cAAc,CAAC;YACxB,CAAC;SACF;QACD;YACE,IAAI,EAAE,2BAA2B;YACjC,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,2BAA2B;YACxC,WAAW,EAAE,+EAA+E;YAC5F,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC;YACzC,WAAW,EAAE;gBACX,gBAAgB,EAAE;oBAChB,iCAAiC;oBACjC,oBAAoB;oBACpB,gDAAgD;oBAChD,wBAAwB;oBACxB,iDAAiD;oBACjD,kBAAkB;oBAClB,0BAA0B;oBAC1B,oDAAoD;oBACpD,uBAAuB;iBACxB;aACF;YACD,KAAK,CAAC,UAAU;gBACd,OAAO,6BAA6B,CAClC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAC/B,2BAA2B,CAC5B,CAAC;YACJ,CAAC;SACF;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,0BAA0B;YACvC,WAAW,EAAE,sFAAsF;YACnG,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC;YACxC,WAAW,EAAE;gBACX,gBAAgB,EAAE;oBAChB,qBAAqB;oBACrB,uCAAuC;oBACvC,uDAAuD;oBACvD,yCAAyC;oBACzC,gDAAgD;oBAChD,0EAA0E;oBAC1E,2DAA2D;iBAC5D;aACF;YACD,KAAK,CAAC,UAAU;gBACd,OAAO,6BAA6B,CAClC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAC9B,uBAAuB,CACxB,CAAC;YACJ,CAAC;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,kFAAkF;YAC/F,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,sBAAsB,CAAC;YAC5C,WAAW,EAAE;gBACX,gBAAgB,EAAE;oBAChB,4BAA4B;oBAC5B,wCAAwC;oBACxC,iCAAiC;oBACjC,wCAAwC;oBACxC,uCAAuC;oBACvC,WAAW;iBACZ;aACF;YACD,KAAK,CAAC,UAAU;gBACd,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC;YAC9D,CAAC;SACF;QACD;YACE,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,gEAAgE;YAC7E,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,uBAAuB,CAAC;YAC7C,WAAW,EAAE;gBACX,gBAAgB,EAAE;oBAChB,mBAAmB;oBACnB,qBAAqB;oBACrB,QAAQ;iBACT;aACF;YACD,KAAK,CAAC,UAAU;gBACd,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC,CAAC;YAC/D,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAUD;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,qBAAqB,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,UAAU,EAAE,GAAG,CAAC,QAAQ;QACxB,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC;QAChD,iBAAiB,EAAE,GAAG,CAAC,UAAU;QACjC,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACvB,CAAC;AACJ,CAAC;AAED,wBAAwB;AACxB,MAAM,UAAU,WAAW;IACzB,OAAO,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,UAAU,EAAE,GAAG,CAAC,QAAQ;QACxB,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC;QAChD,iBAAiB,EAAE,GAAG,CAAC,UAAU;QACjC,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACvB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,4BAA4B;AAC5B,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC"}
@@ -1,168 +0,0 @@
1
- /**
2
- * GEPA (Genetic-Evolutionary Prompt Adaptation) — shared types.
3
- *
4
- * All types used across the GEPA optimizer pipeline:
5
- * config, targets, candidates, evaluation, Pareto frontier, and deployment.
6
- */
7
- /** GEPA optimizer configuration (stored in config.json under "gepa" key). */
8
- export interface GEPAConfig {
9
- /** Model for reflection/mutation. Format: "provider/model-id".
10
- * Resolution: this → daemonModel → AuthStorage auto-detect → qmd config. */
11
- reflectionModel: string | null;
12
- /** Maximum optimization iterations per target. */
13
- maxIterations: number;
14
- /** Maximum number of candidates retained on the Pareto frontier. */
15
- paretoSize: number;
16
- /** When true, optimized prompts are loaded at runtime instead of originals. */
17
- useOptimized: boolean;
18
- }
19
- /** Default GEPA config values. */
20
- export declare const DEFAULT_GEPA_CONFIG: GEPAConfig;
21
- /** The kind of content being optimized. */
22
- export type TargetType = "prompt" | "skill";
23
- /** An optimization target — a prompt template or skill document to improve. */
24
- export interface Target {
25
- /** Unique identifier (e.g. "wiki-system-prompt", "para-skill"). */
26
- name: string;
27
- /** Whether this is a prompt template or a skill document. */
28
- type: TargetType;
29
- /** Retrieve the current (original) content of this target. */
30
- getCurrentContent: () => Promise<string>;
31
- /** Constraints the optimizer must respect (e.g. "must include PARA categories"). */
32
- constraints: string[];
33
- /** Optional description of what this target does (used in reflection). */
34
- description?: string;
35
- /** File path where the original content lives (for reference/logging). */
36
- sourcePath?: string;
37
- }
38
- /** A unique identifier for a candidate in the optimization run. */
39
- export type CandidateId = string;
40
- /** A mutated version of a target's content, with evaluation scores. */
41
- export interface Candidate {
42
- /** Unique identifier for this candidate. */
43
- id: CandidateId;
44
- /** The mutated prompt/skill content. */
45
- content: string;
46
- /** Composite score (0-1), computed from dimension scores. */
47
- score: number;
48
- /** Per-dimension evaluation results. */
49
- dimensions: EvalDimension[];
50
- /** Which iteration produced this candidate. */
51
- iteration: number;
52
- /** ID of the parent candidate this was mutated from (null for the original). */
53
- parentId: CandidateId | null;
54
- /** The mutation description applied to produce this candidate. */
55
- mutationDescription?: string;
56
- }
57
- /** A single scored dimension from the LLM judge. */
58
- export interface EvalDimension {
59
- /** Dimension name (e.g. "clarity", "actionability"). */
60
- name: string;
61
- /** Score from 0 (worst) to 1 (best). */
62
- score: number;
63
- /** Brief textual feedback from the judge for this dimension. */
64
- feedback: string;
65
- /** Weight of this dimension in the composite score (0-1, should sum to 1). */
66
- weight: number;
67
- }
68
- /** Full evaluation result returned by the LLM judge. */
69
- export interface EvalResult {
70
- /** Composite score (0-1), weighted average of dimension scores. */
71
- score: number;
72
- /** Per-dimension scores and feedback. */
73
- dimensions: EvalDimension[];
74
- /** Overall textual feedback from the judge. */
75
- overallFeedback: string;
76
- }
77
- /** Standard evaluation dimensions used across all targets. */
78
- export declare const STANDARD_DIMENSIONS: ReadonlyArray<{
79
- name: string;
80
- weight: number;
81
- }>;
82
- /**
83
- * Pareto frontier — maintains the best non-dominated candidates.
84
- *
85
- * A candidate dominates another if it scores >= on ALL dimensions
86
- * and strictly > on at least one. The frontier keeps only non-dominated
87
- * candidates, capped at `maxSize`.
88
- */
89
- export declare class ParetoFrontier {
90
- private _candidates;
91
- private readonly maxSize;
92
- constructor(maxSize?: number);
93
- /** Current candidates on the frontier. */
94
- get candidates(): ReadonlyArray<Candidate>;
95
- /** Number of candidates on the frontier. */
96
- get size(): number;
97
- /**
98
- * Attempt to add a candidate to the frontier.
99
- * Returns true if the candidate was added (i.e., it is non-dominated).
100
- */
101
- add(candidate: Candidate): boolean;
102
- /**
103
- * Get the best candidate by composite score.
104
- * Returns undefined if the frontier is empty.
105
- */
106
- best(): Candidate | undefined;
107
- /**
108
- * Get the top N candidates by composite score.
109
- */
110
- topN(n: number): Candidate[];
111
- /** Serialize the frontier for persistence. */
112
- toJSON(): CandidateJSON[];
113
- /** Restore the frontier from persisted data. */
114
- static fromJSON(data: CandidateJSON[], maxSize: number): ParetoFrontier;
115
- }
116
- /** JSON-serializable candidate shape (same as Candidate). */
117
- type CandidateJSON = Omit<Candidate, never>;
118
- /** A saved optimized prompt, ready for deployment. */
119
- export interface OptimizedPrompt {
120
- /** Target name this optimized prompt belongs to. */
121
- targetName: string;
122
- /** The optimized content. */
123
- content: string;
124
- /** Composite score achieved. */
125
- score: number;
126
- /** ISO timestamp when optimization completed. */
127
- optimizedAt: string;
128
- /** Number of iterations run. */
129
- iterationsRun: number;
130
- /** Model used for optimization (e.g. "anthropic/claude-opus-4-6"). */
131
- modelUsed: string;
132
- /** Original score before optimization (for comparison). */
133
- originalScore?: number;
134
- /** The dimensions breakdown. */
135
- dimensions?: EvalDimension[];
136
- }
137
- /** Summary of a complete optimization run. */
138
- export interface OptimizationRunSummary {
139
- /** Target that was optimized. */
140
- targetName: string;
141
- /** Total iterations executed. */
142
- iterations: number;
143
- /** Original (baseline) score. */
144
- originalScore: number;
145
- /** Best score achieved. */
146
- bestScore: number;
147
- /** Score improvement (best - original). */
148
- improvement: number;
149
- /** Model used. */
150
- model: string;
151
- /** ISO timestamp when the run started. */
152
- startedAt: string;
153
- /** ISO timestamp when the run completed. */
154
- completedAt: string;
155
- /** Duration in seconds. */
156
- durationSeconds: number;
157
- /** Number of candidates that made it to the Pareto frontier. */
158
- frontierSize: number;
159
- }
160
- /** Minimal LLM completion client interface used by the optimizer. */
161
- export interface LLMClient {
162
- /** Send a prompt to the LLM and get a text response. */
163
- complete(prompt: string, system?: string): Promise<string>;
164
- /** The model identifier being used (e.g. "anthropic/claude-opus-4-6"). */
165
- modelId: string;
166
- }
167
- export {};
168
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/gepa/types.ts"],"names":[],"mappings":"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"}
@@ -1,124 +0,0 @@
1
- /**
2
- * GEPA (Genetic-Evolutionary Prompt Adaptation) — shared types.
3
- *
4
- * All types used across the GEPA optimizer pipeline:
5
- * config, targets, candidates, evaluation, Pareto frontier, and deployment.
6
- */
7
- /** Default GEPA config values. */
8
- export const DEFAULT_GEPA_CONFIG = {
9
- reflectionModel: null,
10
- maxIterations: 50,
11
- paretoSize: 10,
12
- useOptimized: false,
13
- };
14
- /** Standard evaluation dimensions used across all targets. */
15
- export const STANDARD_DIMENSIONS = [
16
- { name: "structure", weight: 0.15 },
17
- { name: "clarity", weight: 0.25 },
18
- { name: "actionability", weight: 0.25 },
19
- { name: "completeness", weight: 0.20 },
20
- { name: "error-prevention", weight: 0.15 },
21
- ];
22
- // -- Pareto Frontier ---------------------------------------------------------
23
- /**
24
- * Pareto frontier — maintains the best non-dominated candidates.
25
- *
26
- * A candidate dominates another if it scores >= on ALL dimensions
27
- * and strictly > on at least one. The frontier keeps only non-dominated
28
- * candidates, capped at `maxSize`.
29
- */
30
- export class ParetoFrontier {
31
- _candidates = [];
32
- maxSize;
33
- constructor(maxSize = 10) {
34
- this.maxSize = maxSize;
35
- }
36
- /** Current candidates on the frontier. */
37
- get candidates() {
38
- return this._candidates;
39
- }
40
- /** Number of candidates on the frontier. */
41
- get size() {
42
- return this._candidates.length;
43
- }
44
- /**
45
- * Attempt to add a candidate to the frontier.
46
- * Returns true if the candidate was added (i.e., it is non-dominated).
47
- */
48
- add(candidate) {
49
- // Check if the new candidate is dominated by any existing candidate
50
- for (const existing of this._candidates) {
51
- if (dominates(existing, candidate)) {
52
- return false; // dominated — don't add
53
- }
54
- }
55
- // Remove any existing candidates that are dominated by the new one
56
- this._candidates = this._candidates.filter((existing) => !dominates(candidate, existing));
57
- // Add the new candidate
58
- this._candidates.push(candidate);
59
- // If over capacity, remove the lowest-scoring candidate
60
- if (this._candidates.length > this.maxSize) {
61
- this._candidates.sort((a, b) => b.score - a.score);
62
- this._candidates = this._candidates.slice(0, this.maxSize);
63
- }
64
- return true;
65
- }
66
- /**
67
- * Get the best candidate by composite score.
68
- * Returns undefined if the frontier is empty.
69
- */
70
- best() {
71
- if (this._candidates.length === 0)
72
- return undefined;
73
- return this._candidates.reduce((best, c) => (c.score > best.score ? c : best));
74
- }
75
- /**
76
- * Get the top N candidates by composite score.
77
- */
78
- topN(n) {
79
- return [...this._candidates]
80
- .sort((a, b) => b.score - a.score)
81
- .slice(0, n);
82
- }
83
- /** Serialize the frontier for persistence. */
84
- toJSON() {
85
- return this._candidates.map((c) => ({
86
- id: c.id,
87
- content: c.content,
88
- score: c.score,
89
- dimensions: c.dimensions,
90
- iteration: c.iteration,
91
- parentId: c.parentId,
92
- mutationDescription: c.mutationDescription,
93
- }));
94
- }
95
- /** Restore the frontier from persisted data. */
96
- static fromJSON(data, maxSize) {
97
- const frontier = new ParetoFrontier(maxSize);
98
- for (const c of data) {
99
- frontier._candidates.push(c);
100
- }
101
- return frontier;
102
- }
103
- }
104
- /**
105
- * Check if candidate `a` dominates candidate `b`.
106
- * `a` dominates `b` if a.score >= b.score on ALL dimensions
107
- * and strictly > on at least one.
108
- */
109
- function dominates(a, b) {
110
- if (a.dimensions.length !== b.dimensions.length)
111
- return false;
112
- let strictlyBetterOnAtLeastOne = false;
113
- for (let i = 0; i < a.dimensions.length; i++) {
114
- const aDim = a.dimensions.find((d) => d.name === b.dimensions[i].name);
115
- if (!aDim)
116
- return false; // different dimension sets — can't compare
117
- if (aDim.score < b.dimensions[i].score)
118
- return false; // a is worse on this dim
119
- if (aDim.score > b.dimensions[i].score)
120
- strictlyBetterOnAtLeastOne = true;
121
- }
122
- return strictlyBetterOnAtLeastOne;
123
- }
124
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/gepa/types.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,21 +0,0 @@
1
- /**
2
- * pi-para — PARA Knowledge Base Extension for pi
3
- *
4
- * Main extension entry point. Wires together wiki filesystem, qmd store,
5
- * scope detection, context injection, tools, and commands.
6
- *
7
- * Session capture is handled by a separate daemon (pi-para-daemon).
8
- * This extension registers completed sessions for the daemon to process.
9
- */
10
- import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
11
- export type { ParaCategory, WikiPage, PageFrontmatter, PageRef, LogEntry } from "./wiki.js";
12
- export type { WikiSearchOptions, WikiSearchResult } from "./store.js";
13
- export type { ProjectScope, ScopeConfig } from "./scope.js";
14
- export type { IngestOptions, IngestReport, IngestResult } from "./ingest.js";
15
- export type { QueryOptions, QueryResult } from "./query.js";
16
- export type { LintOptions, LintReport, LintIssue, WikiStats } from "./lint.js";
17
- export type { ContextOptions } from "./context.js";
18
- export type { RawSource, SessionDigest } from "./raw.js";
19
- export type { SummarizeOptions } from "./summarize.js";
20
- export default function piPara(pi: ExtensionAPI): Promise<void>;
21
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,+BAA+B,CAAC;AAcpF,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC5F,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACtE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC5D,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7E,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC5D,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC/E,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzD,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAqJvD,wBAA8B,MAAM,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsMpE"}
package/dist/index.js DELETED
@@ -1,294 +0,0 @@
1
- /**
2
- * pi-para — PARA Knowledge Base Extension for pi
3
- *
4
- * Main extension entry point. Wires together wiki filesystem, qmd store,
5
- * scope detection, context injection, tools, and commands.
6
- *
7
- * Session capture is handled by a separate daemon (pi-para-daemon).
8
- * This extension registers completed sessions for the daemon to process.
9
- */
10
- import { readFile, writeFile, mkdir, appendFile } from "node:fs/promises";
11
- import { join, dirname } from "node:path";
12
- import { homedir, networkInterfaces } from "node:os";
13
- import { detectScope } from "./scope.js";
14
- import { initWiki } from "./wiki.js";
15
- import { openStore, closeStore } from "./store.js";
16
- import { registerTools } from "./tools.js";
17
- import { setupContextInjection, markContextDirty } from "./context.js";
18
- import { registerCommands } from "./commands.js";
19
- import { createServer } from "node:http";
20
- function getDefaultConfig() {
21
- return {
22
- wikiDir: join(homedir(), ".pi", "wiki"),
23
- contextMaxTokens: 4000,
24
- contextIncludeSchema: true,
25
- contextIncludeIndex: true,
26
- lintAutoFix: true,
27
- lintStaleDays: 90,
28
- searchLimit: 10,
29
- searchIncludeArchives: false,
30
- searchGraphBoost: true,
31
- daemonModel: null,
32
- webWiki: {
33
- enabled: false,
34
- host: "0.0.0.0",
35
- port: 10973,
36
- },
37
- gepa: {
38
- useOptimized: true,
39
- studentModel: null,
40
- teacherModel: null,
41
- judgeModel: null,
42
- auto: "light",
43
- threads: 2,
44
- seed: 42,
45
- },
46
- };
47
- }
48
- async function loadConfig() {
49
- const defaults = getDefaultConfig();
50
- const configPath = join(defaults.wikiDir, "config.json");
51
- try {
52
- const raw = await readFile(configPath, "utf-8");
53
- const parsed = JSON.parse(raw);
54
- const wikiDir = parsed.wikiDir
55
- ? parsed.wikiDir.replace(/^~\//, `${homedir()}/`)
56
- : defaults.wikiDir;
57
- return { ...defaults, ...parsed, wikiDir };
58
- }
59
- catch {
60
- try {
61
- await mkdir(dirname(configPath), { recursive: true });
62
- await writeFile(configPath, JSON.stringify(defaults, null, 2), "utf-8");
63
- }
64
- catch {
65
- // Non-fatal
66
- }
67
- return { ...defaults };
68
- }
69
- }
70
- // -- LAN IP detection --------------------------------------------------------
71
- /** Check if the daemon's web server is alive on the given port. */
72
- function checkWebServerAlive(port) {
73
- return new Promise((resolve) => {
74
- const req = createServer().listen(port, "127.0.0.1");
75
- req.on("error", (err) => {
76
- req.close();
77
- // EADDRINUSE means something is already listening — daemon is running
78
- resolve(err.code === "EADDRINUSE");
79
- });
80
- req.on("listening", () => {
81
- // Port is free — no daemon web server
82
- req.close();
83
- resolve(false);
84
- });
85
- });
86
- }
87
- function getLanIp() {
88
- const interfaces = networkInterfaces();
89
- for (const name of Object.keys(interfaces)) {
90
- const addrs = interfaces[name];
91
- if (!addrs)
92
- continue;
93
- for (const addr of addrs) {
94
- if (addr.family === "IPv4" && !addr.internal) {
95
- return addr.address;
96
- }
97
- }
98
- }
99
- return null;
100
- }
101
- const ENTRY_TYPE = "pi-para-state";
102
- function reconstructState(ctx) {
103
- let latest = null;
104
- for (const entry of ctx.sessionManager.getBranch()) {
105
- if (entry.type === "custom" && entry.customType === ENTRY_TYPE) {
106
- latest = entry.data;
107
- }
108
- }
109
- return latest;
110
- }
111
- // -- Extension entry point ---------------------------------------------------
112
- export default async function piPara(pi) {
113
- const config = await loadConfig();
114
- const wikiDir = config.wikiDir;
115
- let store = null;
116
- let currentScope = null;
117
- let storeDisabled = false;
118
- const getScope = () => {
119
- if (!currentScope) {
120
- return { name: "unknown", include: ["unknown"], exclude: [], source: "dirname" };
121
- }
122
- return currentScope;
123
- };
124
- const setScope = (scope) => {
125
- currentScope = scope;
126
- markContextDirty();
127
- pi.appendEntry(ENTRY_TYPE, {
128
- lastScope: scope,
129
- sessionFile: null,
130
- });
131
- };
132
- const getConfig = () => ({
133
- contextMaxTokens: config.contextMaxTokens,
134
- contextIncludeSchema: config.contextIncludeSchema,
135
- contextIncludeIndex: config.contextIncludeIndex,
136
- });
137
- // Lazy retry: if the store failed at startup, try reopening on first tool use.
138
- // This handles cases where the db was temporarily locked or had transient errors.
139
- let storeRetrying = false;
140
- async function retryStoreOpen() {
141
- if (storeRetrying)
142
- return false;
143
- storeRetrying = true;
144
- try {
145
- store = await openStore(wikiDir);
146
- storeDisabled = false;
147
- markContextDirty(); // rebuild context now that store works
148
- return true;
149
- }
150
- catch {
151
- return false;
152
- }
153
- finally {
154
- storeRetrying = false;
155
- }
156
- }
157
- // Store proxy — delegates to real store once opened, with lazy retry on failure
158
- const storeProxy = new Proxy({}, {
159
- get(_target, prop) {
160
- if (!store) {
161
- if (storeDisabled) {
162
- // Return an async function that retries opening the store first
163
- return async (...args) => {
164
- const reopened = await retryStoreOpen();
165
- if (reopened && store) {
166
- const method = store[prop];
167
- if (typeof method === "function") {
168
- return method.apply(store, args);
169
- }
170
- return method;
171
- }
172
- throw new Error("Wiki search is disabled: qmd store failed to open.");
173
- };
174
- }
175
- return (..._args) => {
176
- throw new Error("Wiki store not initialized yet.");
177
- };
178
- }
179
- return store[prop];
180
- },
181
- });
182
- // Register tools, context injection, commands
183
- registerTools(pi, wikiDir, storeProxy, getScope, markContextDirty, () => config.searchGraphBoost);
184
- setupContextInjection(pi, wikiDir, storeProxy, () => currentScope, getConfig);
185
- registerCommands(pi, wikiDir, storeProxy, getScope, setScope);
186
- // -- session_start ---------------------------------------------------------
187
- pi.on("session_start", async (_event, ctx) => {
188
- ctx.ui.setStatus("pi-para", "wiki: loading...");
189
- try {
190
- await initWiki(wikiDir);
191
- }
192
- catch (err) {
193
- ctx.ui.notify(`Wiki init failed: ${err instanceof Error ? err.message : String(err)}`, "error");
194
- }
195
- ctx.ui.setStatus("pi-para", "wiki: indexing...");
196
- storeDisabled = false;
197
- try {
198
- store = await openStore(wikiDir);
199
- }
200
- catch (err) {
201
- store = null;
202
- storeDisabled = true;
203
- ctx.ui.notify(`Wiki search disabled: ${err instanceof Error ? err.message : String(err)}`, "warning");
204
- }
205
- currentScope = await detectScope(ctx.cwd);
206
- const savedState = reconstructState(ctx);
207
- if (savedState?.lastScope.source === "config") {
208
- currentScope = savedState.lastScope;
209
- }
210
- pi.appendEntry(ENTRY_TYPE, {
211
- lastScope: currentScope,
212
- sessionFile: ctx.sessionManager.getSessionFile() ?? null,
213
- });
214
- // Check if daemon's web wiki server is running (don't start our own)
215
- if (config.webWiki.enabled) {
216
- const port = config.webWiki.port;
217
- try {
218
- const alive = await checkWebServerAlive(port);
219
- if (alive) {
220
- const lanIp = getLanIp();
221
- const url = lanIp ? `http://${lanIp}:${port}` : `http://localhost:${port}`;
222
- ctx.ui.setStatus("pi-para", `wiki: ${url}`);
223
- }
224
- else {
225
- ctx.ui.setStatus("pi-para", "wiki: ready (start daemon for web UI)");
226
- setTimeout(() => ctx.ui.setStatus("pi-para", undefined), 5000);
227
- }
228
- }
229
- catch {
230
- ctx.ui.setStatus("pi-para", "wiki: ready");
231
- setTimeout(() => ctx.ui.setStatus("pi-para", undefined), 3000);
232
- }
233
- }
234
- else {
235
- ctx.ui.setStatus("pi-para", "wiki: ready");
236
- setTimeout(() => ctx.ui.setStatus("pi-para", undefined), 3000);
237
- }
238
- });
239
- // -- session_tree ----------------------------------------------------------
240
- pi.on("session_tree", async (_event, ctx) => {
241
- const savedState = reconstructState(ctx);
242
- if (savedState?.lastScope.source === "config") {
243
- currentScope = savedState.lastScope;
244
- }
245
- else {
246
- currentScope = await detectScope(ctx.cwd);
247
- }
248
- markContextDirty();
249
- });
250
- // -- session_compact: register session for daemon capture on compaction ----
251
- pi.on("session_compact", async (_event, ctx) => {
252
- // Compaction means the session has accumulated enough content that details
253
- // are about to be compressed/lost. Perfect time to capture knowledge.
254
- const sessionFile = ctx.sessionManager.getSessionFile();
255
- if (sessionFile) {
256
- try {
257
- const registry = join(wikiDir, ".completed-sessions");
258
- const entry = `${new Date().toISOString()}|${sessionFile}\n`;
259
- await appendFile(registry, entry);
260
- ctx.ui.setStatus("pi-para", "wiki: capture queued (compaction)");
261
- setTimeout(() => ctx.ui.setStatus("pi-para", undefined), 5000);
262
- }
263
- catch {
264
- // Non-fatal
265
- }
266
- }
267
- });
268
- // -- session_shutdown: register session for daemon, close store ------------
269
- pi.on("session_shutdown", async (_event, ctx) => {
270
- // 1. Register session as completed (for daemon to process later)
271
- const sessionFile = ctx.sessionManager.getSessionFile();
272
- if (sessionFile) {
273
- try {
274
- const registry = join(wikiDir, ".completed-sessions");
275
- const entry = `${new Date().toISOString()}|${sessionFile}\n`;
276
- await appendFile(registry, entry);
277
- }
278
- catch {
279
- // Non-fatal — daemon can also discover sessions via filesystem scan
280
- }
281
- }
282
- // 2. Close the store (instant)
283
- if (store) {
284
- try {
285
- await closeStore(store);
286
- }
287
- catch {
288
- // Non-fatal
289
- }
290
- store = null;
291
- }
292
- });
293
- }
294
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}