@dev-sergeev/datalab-kit 0.1.2 → 0.1.4

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 (355) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +23 -5
  3. package/THIRD_PARTY_NOTICES.md +6 -2
  4. package/docs/adr/0001-user-settings-priority.md +2 -0
  5. package/docs/adr/0002-package-delivery.md +8 -0
  6. package/node_modules/@pi-plugins/elapsed/LICENSE +21 -0
  7. package/node_modules/@pi-plugins/elapsed/README.md +45 -0
  8. package/node_modules/@pi-plugins/elapsed/dist/index.d.mts +8 -0
  9. package/node_modules/@pi-plugins/elapsed/dist/index.d.mts.map +1 -0
  10. package/node_modules/@pi-plugins/elapsed/dist/index.mjs +47 -0
  11. package/node_modules/@pi-plugins/elapsed/dist/index.mjs.map +1 -0
  12. package/node_modules/@pi-plugins/elapsed/package.json +65 -0
  13. package/node_modules/@tifan/pi-recap/README.md +61 -0
  14. package/node_modules/@tifan/pi-recap/package.json +43 -0
  15. package/node_modules/@tifan/pi-recap/src/index.ts +586 -0
  16. package/node_modules/@tifan/pi-recap/src/model-picker.ts +234 -0
  17. package/node_modules/@tifan/pi-recap/src/models.ts +180 -0
  18. package/node_modules/@tifan/pi-recap/src/sanitize.ts +119 -0
  19. package/node_modules/@tifan/pi-recap/src/tui.ts +155 -0
  20. package/node_modules/@zigai/pi-extension-internals/README.md +24 -0
  21. package/node_modules/@zigai/pi-extension-internals/dist/editor-enhancer-registry.d.ts +21 -0
  22. package/node_modules/@zigai/pi-extension-internals/dist/editor-enhancer-registry.js +233 -0
  23. package/node_modules/@zigai/pi-extension-internals/dist/index.d.ts +6 -0
  24. package/node_modules/@zigai/pi-extension-internals/dist/index.js +3 -0
  25. package/node_modules/@zigai/pi-extension-internals/dist/linked-method-patch.d.ts +34 -0
  26. package/node_modules/@zigai/pi-extension-internals/dist/linked-method-patch.js +272 -0
  27. package/node_modules/@zigai/pi-extension-internals/dist/pi-internal-import.d.ts +11 -0
  28. package/node_modules/@zigai/pi-extension-internals/dist/pi-internal-import.js +139 -0
  29. package/node_modules/@zigai/pi-extension-internals/package.json +41 -0
  30. package/node_modules/@zigai/pi-extension-settings/LICENSE +21 -0
  31. package/node_modules/@zigai/pi-extension-settings/README.md +36 -0
  32. package/node_modules/@zigai/pi-extension-settings/dist/artifacts.d.ts +23 -0
  33. package/node_modules/@zigai/pi-extension-settings/dist/artifacts.d.ts.map +1 -0
  34. package/node_modules/@zigai/pi-extension-settings/dist/artifacts.js +75 -0
  35. package/node_modules/@zigai/pi-extension-settings/dist/artifacts.js.map +1 -0
  36. package/node_modules/@zigai/pi-extension-settings/dist/cli-entry.d.ts +3 -0
  37. package/node_modules/@zigai/pi-extension-settings/dist/cli-entry.d.ts.map +1 -0
  38. package/node_modules/@zigai/pi-extension-settings/dist/cli-entry.js +5 -0
  39. package/node_modules/@zigai/pi-extension-settings/dist/cli-entry.js.map +1 -0
  40. package/node_modules/@zigai/pi-extension-settings/dist/cli.d.ts +6 -0
  41. package/node_modules/@zigai/pi-extension-settings/dist/cli.d.ts.map +1 -0
  42. package/node_modules/@zigai/pi-extension-settings/dist/cli.js +87 -0
  43. package/node_modules/@zigai/pi-extension-settings/dist/cli.js.map +1 -0
  44. package/node_modules/@zigai/pi-extension-settings/dist/definition-marker.d.ts +2 -0
  45. package/node_modules/@zigai/pi-extension-settings/dist/definition-marker.d.ts.map +1 -0
  46. package/node_modules/@zigai/pi-extension-settings/dist/definition-marker.js +2 -0
  47. package/node_modules/@zigai/pi-extension-settings/dist/definition-marker.js.map +1 -0
  48. package/node_modules/@zigai/pi-extension-settings/dist/definition.d.ts +159 -0
  49. package/node_modules/@zigai/pi-extension-settings/dist/definition.d.ts.map +1 -0
  50. package/node_modules/@zigai/pi-extension-settings/dist/definition.js +248 -0
  51. package/node_modules/@zigai/pi-extension-settings/dist/definition.js.map +1 -0
  52. package/node_modules/@zigai/pi-extension-settings/dist/file-system.d.ts +10 -0
  53. package/node_modules/@zigai/pi-extension-settings/dist/file-system.d.ts.map +1 -0
  54. package/node_modules/@zigai/pi-extension-settings/dist/file-system.js +115 -0
  55. package/node_modules/@zigai/pi-extension-settings/dist/file-system.js.map +1 -0
  56. package/node_modules/@zigai/pi-extension-settings/dist/index.d.ts +2 -0
  57. package/node_modules/@zigai/pi-extension-settings/dist/index.d.ts.map +1 -0
  58. package/node_modules/@zigai/pi-extension-settings/dist/index.js +2 -0
  59. package/node_modules/@zigai/pi-extension-settings/dist/index.js.map +1 -0
  60. package/node_modules/@zigai/pi-extension-settings/dist/json-value.d.ts +18 -0
  61. package/node_modules/@zigai/pi-extension-settings/dist/json-value.d.ts.map +1 -0
  62. package/node_modules/@zigai/pi-extension-settings/dist/json-value.js +56 -0
  63. package/node_modules/@zigai/pi-extension-settings/dist/json-value.js.map +1 -0
  64. package/node_modules/@zigai/pi-extension-settings/dist/paths.d.ts +11 -0
  65. package/node_modules/@zigai/pi-extension-settings/dist/paths.d.ts.map +1 -0
  66. package/node_modules/@zigai/pi-extension-settings/dist/paths.js +23 -0
  67. package/node_modules/@zigai/pi-extension-settings/dist/paths.js.map +1 -0
  68. package/node_modules/@zigai/pi-extension-settings/dist/pi-host-paths.d.ts +5 -0
  69. package/node_modules/@zigai/pi-extension-settings/dist/pi-host-paths.d.ts.map +1 -0
  70. package/node_modules/@zigai/pi-extension-settings/dist/pi-host-paths.js +21 -0
  71. package/node_modules/@zigai/pi-extension-settings/dist/pi-host-paths.js.map +1 -0
  72. package/node_modules/@zigai/pi-extension-settings/dist/pi.d.ts +106 -0
  73. package/node_modules/@zigai/pi-extension-settings/dist/pi.d.ts.map +1 -0
  74. package/node_modules/@zigai/pi-extension-settings/dist/pi.js +122 -0
  75. package/node_modules/@zigai/pi-extension-settings/dist/pi.js.map +1 -0
  76. package/node_modules/@zigai/pi-extension-settings/dist/pi.ts +2537 -0
  77. package/node_modules/@zigai/pi-extension-settings/dist/pi.ts.map +7 -0
  78. package/node_modules/@zigai/pi-extension-settings/dist/projects.d.ts +10 -0
  79. package/node_modules/@zigai/pi-extension-settings/dist/projects.d.ts.map +1 -0
  80. package/node_modules/@zigai/pi-extension-settings/dist/projects.js +177 -0
  81. package/node_modules/@zigai/pi-extension-settings/dist/projects.js.map +1 -0
  82. package/node_modules/@zigai/pi-extension-settings/dist/runtime.d.ts +40 -0
  83. package/node_modules/@zigai/pi-extension-settings/dist/runtime.d.ts.map +1 -0
  84. package/node_modules/@zigai/pi-extension-settings/dist/runtime.js +158 -0
  85. package/node_modules/@zigai/pi-extension-settings/dist/runtime.js.map +1 -0
  86. package/node_modules/@zigai/pi-extension-settings/dist/runtime.ts +158 -0
  87. package/node_modules/@zigai/pi-extension-settings/dist/runtime.ts.map +7 -0
  88. package/node_modules/@zigai/pi-extension-settings/dist/schema-document.d.ts +19 -0
  89. package/node_modules/@zigai/pi-extension-settings/dist/schema-document.d.ts.map +1 -0
  90. package/node_modules/@zigai/pi-extension-settings/dist/schema-document.js +168 -0
  91. package/node_modules/@zigai/pi-extension-settings/dist/schema-document.js.map +1 -0
  92. package/node_modules/@zigai/pi-extension-settings/dist/settings-documentation.d.ts +9 -0
  93. package/node_modules/@zigai/pi-extension-settings/dist/settings-documentation.d.ts.map +1 -0
  94. package/node_modules/@zigai/pi-extension-settings/dist/settings-documentation.js +242 -0
  95. package/node_modules/@zigai/pi-extension-settings/dist/settings-documentation.js.map +1 -0
  96. package/node_modules/@zigai/pi-extension-settings/dist/settings-layer.d.ts +59 -0
  97. package/node_modules/@zigai/pi-extension-settings/dist/settings-layer.d.ts.map +1 -0
  98. package/node_modules/@zigai/pi-extension-settings/dist/settings-layer.js +98 -0
  99. package/node_modules/@zigai/pi-extension-settings/dist/settings-layer.js.map +1 -0
  100. package/node_modules/@zigai/pi-extension-settings/dist/settings-loader.d.ts +80 -0
  101. package/node_modules/@zigai/pi-extension-settings/dist/settings-loader.d.ts.map +1 -0
  102. package/node_modules/@zigai/pi-extension-settings/dist/settings-loader.js +144 -0
  103. package/node_modules/@zigai/pi-extension-settings/dist/settings-loader.js.map +1 -0
  104. package/node_modules/@zigai/pi-extension-settings/dist/settings-merge.d.ts +5 -0
  105. package/node_modules/@zigai/pi-extension-settings/dist/settings-merge.d.ts.map +1 -0
  106. package/node_modules/@zigai/pi-extension-settings/dist/settings-merge.js +30 -0
  107. package/node_modules/@zigai/pi-extension-settings/dist/settings-merge.js.map +1 -0
  108. package/node_modules/@zigai/pi-extension-settings/dist/settings-revision.d.ts +10 -0
  109. package/node_modules/@zigai/pi-extension-settings/dist/settings-revision.d.ts.map +1 -0
  110. package/node_modules/@zigai/pi-extension-settings/dist/settings-revision.js +16 -0
  111. package/node_modules/@zigai/pi-extension-settings/dist/settings-revision.js.map +1 -0
  112. package/node_modules/@zigai/pi-extension-settings/dist/settings-transaction.d.ts +54 -0
  113. package/node_modules/@zigai/pi-extension-settings/dist/settings-transaction.d.ts.map +1 -0
  114. package/node_modules/@zigai/pi-extension-settings/dist/settings-transaction.js +202 -0
  115. package/node_modules/@zigai/pi-extension-settings/dist/settings-transaction.js.map +1 -0
  116. package/node_modules/@zigai/pi-extension-settings/dist/typebox-runtime.d.ts +5 -0
  117. package/node_modules/@zigai/pi-extension-settings/dist/typebox-runtime.d.ts.map +1 -0
  118. package/node_modules/@zigai/pi-extension-settings/dist/typebox-runtime.js +9 -0
  119. package/node_modules/@zigai/pi-extension-settings/dist/typebox-runtime.js.map +1 -0
  120. package/node_modules/@zigai/pi-extension-settings/docs/generation.md +71 -0
  121. package/node_modules/@zigai/pi-extension-settings/docs/manual-setup.md +98 -0
  122. package/node_modules/@zigai/pi-extension-settings/docs/runtime.md +100 -0
  123. package/node_modules/@zigai/pi-extension-settings/docs/ui-controls.md +31 -0
  124. package/node_modules/@zigai/pi-extension-settings/package.json +97 -0
  125. package/node_modules/@zigai/pi-mention-anything/README.md +113 -0
  126. package/node_modules/@zigai/pi-mention-anything/config.schema.json +313 -0
  127. package/node_modules/@zigai/pi-mention-anything/docs/command-protocol.md +106 -0
  128. package/node_modules/@zigai/pi-mention-anything/docs/providers.md +128 -0
  129. package/node_modules/@zigai/pi-mention-anything/examples/query-command.mjs +96 -0
  130. package/node_modules/@zigai/pi-mention-anything/examples/recursive-tree.ts +28 -0
  131. package/node_modules/@zigai/pi-mention-anything/examples/static.ts +28 -0
  132. package/node_modules/@zigai/pi-mention-anything/examples/tmux.ts +90 -0
  133. package/node_modules/@zigai/pi-mention-anything/examples/tree-settings.json +25 -0
  134. package/node_modules/@zigai/pi-mention-anything/package.json +58 -0
  135. package/node_modules/@zigai/pi-mention-anything/src/api.ts +75 -0
  136. package/node_modules/@zigai/pi-mention-anything/src/autocomplete.ts +231 -0
  137. package/node_modules/@zigai/pi-mention-anything/src/chain-autocomplete.ts +596 -0
  138. package/node_modules/@zigai/pi-mention-anything/src/chain-syntax.ts +345 -0
  139. package/node_modules/@zigai/pi-mention-anything/src/command-provider.ts +291 -0
  140. package/node_modules/@zigai/pi-mention-anything/src/configured-source.ts +66 -0
  141. package/node_modules/@zigai/pi-mention-anything/src/editor.ts +180 -0
  142. package/node_modules/@zigai/pi-mention-anything/src/expand-mentions.ts +162 -0
  143. package/node_modules/@zigai/pi-mention-anything/src/index.ts +54 -0
  144. package/node_modules/@zigai/pi-mention-anything/src/initial-suggestions.ts +190 -0
  145. package/node_modules/@zigai/pi-mention-anything/src/list-provider.ts +71 -0
  146. package/node_modules/@zigai/pi-mention-anything/src/mention-hub.ts +307 -0
  147. package/node_modules/@zigai/pi-mention-anything/src/mention-resolution.ts +374 -0
  148. package/node_modules/@zigai/pi-mention-anything/src/mention-syntax.ts +105 -0
  149. package/node_modules/@zigai/pi-mention-anything/src/register-mention.ts +89 -0
  150. package/node_modules/@zigai/pi-mention-anything/src/rendering.ts +53 -0
  151. package/node_modules/@zigai/pi-mention-anything/src/selected-items.ts +21 -0
  152. package/node_modules/@zigai/pi-mention-anything/src/selection-history.ts +135 -0
  153. package/node_modules/@zigai/pi-mention-anything/src/settings-input.ts +317 -0
  154. package/node_modules/@zigai/pi-mention-anything/src/settings.prevalidated.ts +57 -0
  155. package/node_modules/@zigai/pi-mention-anything/src/settings.ts +52 -0
  156. package/node_modules/@zigai/pi-mention-anything/src/source-contract.ts +174 -0
  157. package/node_modules/@zigai/pi-mention-anything/src/source-controller.ts +1070 -0
  158. package/node_modules/@zigai/pi-mention-anything/src/source-runtime.ts +99 -0
  159. package/node_modules/@zigai/pi-mention-skill/README.md +60 -0
  160. package/node_modules/@zigai/pi-mention-skill/config.schema.json +81 -0
  161. package/node_modules/@zigai/pi-mention-skill/package.json +56 -0
  162. package/node_modules/@zigai/pi-mention-skill/src/index.ts +60 -0
  163. package/node_modules/@zigai/pi-mention-skill/src/settings-input.ts +74 -0
  164. package/node_modules/@zigai/pi-mention-skill/src/settings.prevalidated.ts +18 -0
  165. package/node_modules/@zigai/pi-mention-skill/src/settings.ts +54 -0
  166. package/node_modules/@zigai/pi-mention-skill/src/skill-commands.ts +18 -0
  167. package/node_modules/@zigai/pi-mention-skill/src/skill-content.ts +60 -0
  168. package/node_modules/@zigai/pi-mention-skill/src/skill-provider.ts +105 -0
  169. package/node_modules/@zigai/pi-mention-skill/src/slash-skill-filter.ts +29 -0
  170. package/node_modules/argparse/LICENSE +21 -0
  171. package/node_modules/argparse/README.md +257 -0
  172. package/node_modules/argparse/index.js +3 -0
  173. package/node_modules/argparse/lib/action/append/constant.js +47 -0
  174. package/node_modules/argparse/lib/action/append.js +53 -0
  175. package/node_modules/argparse/lib/action/count.js +40 -0
  176. package/node_modules/argparse/lib/action/help.js +47 -0
  177. package/node_modules/argparse/lib/action/store/constant.js +43 -0
  178. package/node_modules/argparse/lib/action/store/false.js +27 -0
  179. package/node_modules/argparse/lib/action/store/true.js +26 -0
  180. package/node_modules/argparse/lib/action/store.js +50 -0
  181. package/node_modules/argparse/lib/action/subparsers.js +149 -0
  182. package/node_modules/argparse/lib/action/version.js +47 -0
  183. package/node_modules/argparse/lib/action.js +146 -0
  184. package/node_modules/argparse/lib/action_container.js +482 -0
  185. package/node_modules/argparse/lib/argparse.js +14 -0
  186. package/node_modules/argparse/lib/argument/error.js +50 -0
  187. package/node_modules/argparse/lib/argument/exclusive.js +54 -0
  188. package/node_modules/argparse/lib/argument/group.js +75 -0
  189. package/node_modules/argparse/lib/argument_parser.js +1161 -0
  190. package/node_modules/argparse/lib/const.js +21 -0
  191. package/node_modules/argparse/lib/help/added_formatters.js +87 -0
  192. package/node_modules/argparse/lib/help/formatter.js +795 -0
  193. package/node_modules/argparse/lib/namespace.js +76 -0
  194. package/node_modules/argparse/lib/utils.js +57 -0
  195. package/node_modules/argparse/package.json +34 -0
  196. package/node_modules/esprima/LICENSE.BSD +21 -0
  197. package/node_modules/esprima/README.md +46 -0
  198. package/node_modules/esprima/bin/esparse.js +139 -0
  199. package/node_modules/esprima/bin/esvalidate.js +236 -0
  200. package/node_modules/esprima/dist/esprima.js +6709 -0
  201. package/node_modules/esprima/package.json +112 -0
  202. package/node_modules/extend-shallow/LICENSE +21 -0
  203. package/node_modules/extend-shallow/README.md +61 -0
  204. package/node_modules/extend-shallow/index.js +33 -0
  205. package/node_modules/extend-shallow/package.json +56 -0
  206. package/node_modules/graceful-fs/LICENSE +15 -0
  207. package/node_modules/graceful-fs/README.md +143 -0
  208. package/node_modules/graceful-fs/clone.js +23 -0
  209. package/node_modules/graceful-fs/graceful-fs.js +448 -0
  210. package/node_modules/graceful-fs/legacy-streams.js +118 -0
  211. package/node_modules/graceful-fs/package.json +53 -0
  212. package/node_modules/graceful-fs/polyfills.js +355 -0
  213. package/node_modules/gray-matter/LICENSE +21 -0
  214. package/node_modules/gray-matter/README.md +565 -0
  215. package/node_modules/gray-matter/gray-matter.d.ts +114 -0
  216. package/node_modules/gray-matter/index.js +228 -0
  217. package/node_modules/gray-matter/lib/defaults.js +18 -0
  218. package/node_modules/gray-matter/lib/engine.js +30 -0
  219. package/node_modules/gray-matter/lib/engines.js +54 -0
  220. package/node_modules/gray-matter/lib/excerpt.js +32 -0
  221. package/node_modules/gray-matter/lib/parse.js +13 -0
  222. package/node_modules/gray-matter/lib/stringify.js +56 -0
  223. package/node_modules/gray-matter/lib/to-file.js +43 -0
  224. package/node_modules/gray-matter/lib/utils.js +66 -0
  225. package/node_modules/gray-matter/package.json +127 -0
  226. package/node_modules/is-extendable/LICENSE +21 -0
  227. package/node_modules/is-extendable/README.md +72 -0
  228. package/node_modules/is-extendable/index.js +13 -0
  229. package/node_modules/is-extendable/package.json +51 -0
  230. package/node_modules/js-yaml/LICENSE +21 -0
  231. package/node_modules/js-yaml/README.md +302 -0
  232. package/node_modules/js-yaml/bin/js-yaml.js +132 -0
  233. package/node_modules/js-yaml/dist/js-yaml.js +4024 -0
  234. package/node_modules/js-yaml/dist/js-yaml.min.js +1 -0
  235. package/node_modules/js-yaml/index.js +7 -0
  236. package/node_modules/js-yaml/lib/js-yaml/common.js +59 -0
  237. package/node_modules/js-yaml/lib/js-yaml/dumper.js +850 -0
  238. package/node_modules/js-yaml/lib/js-yaml/exception.js +43 -0
  239. package/node_modules/js-yaml/lib/js-yaml/loader.js +1679 -0
  240. package/node_modules/js-yaml/lib/js-yaml/mark.js +76 -0
  241. package/node_modules/js-yaml/lib/js-yaml/schema/core.js +18 -0
  242. package/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +25 -0
  243. package/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +28 -0
  244. package/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +17 -0
  245. package/node_modules/js-yaml/lib/js-yaml/schema/json.js +25 -0
  246. package/node_modules/js-yaml/lib/js-yaml/schema.js +108 -0
  247. package/node_modules/js-yaml/lib/js-yaml/type/binary.js +138 -0
  248. package/node_modules/js-yaml/lib/js-yaml/type/bool.js +35 -0
  249. package/node_modules/js-yaml/lib/js-yaml/type/float.js +116 -0
  250. package/node_modules/js-yaml/lib/js-yaml/type/int.js +173 -0
  251. package/node_modules/js-yaml/lib/js-yaml/type/js/function.js +93 -0
  252. package/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +60 -0
  253. package/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +28 -0
  254. package/node_modules/js-yaml/lib/js-yaml/type/map.js +8 -0
  255. package/node_modules/js-yaml/lib/js-yaml/type/merge.js +12 -0
  256. package/node_modules/js-yaml/lib/js-yaml/type/null.js +34 -0
  257. package/node_modules/js-yaml/lib/js-yaml/type/omap.js +44 -0
  258. package/node_modules/js-yaml/lib/js-yaml/type/pairs.js +53 -0
  259. package/node_modules/js-yaml/lib/js-yaml/type/seq.js +8 -0
  260. package/node_modules/js-yaml/lib/js-yaml/type/set.js +29 -0
  261. package/node_modules/js-yaml/lib/js-yaml/type/str.js +8 -0
  262. package/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +88 -0
  263. package/node_modules/js-yaml/lib/js-yaml/type.js +61 -0
  264. package/node_modules/js-yaml/lib/js-yaml.js +39 -0
  265. package/node_modules/js-yaml/package.json +52 -0
  266. package/node_modules/kind-of/LICENSE +21 -0
  267. package/node_modules/kind-of/README.md +367 -0
  268. package/node_modules/kind-of/index.js +129 -0
  269. package/node_modules/kind-of/package.json +88 -0
  270. package/node_modules/node-addon-api/common 2.gypi +21 -0
  271. package/node_modules/node-addon-api/except 2.gypi +25 -0
  272. package/node_modules/node-addon-api/napi 2.h +3463 -0
  273. package/node_modules/node-addon-api/napi-inl 2.h +7250 -0
  274. package/node_modules/node-addon-api/napi-inl.deprecated 2.h +186 -0
  275. package/node_modules/node-addon-api/node_addon_api 2.gyp +42 -0
  276. package/node_modules/node-addon-api/node_api 2.gyp +9 -0
  277. package/node_modules/node-addon-api/noexcept 2.gypi +26 -0
  278. package/node_modules/node-addon-api/nothing 2.c +0 -0
  279. package/node_modules/pi-toggle-skills/README.md +213 -0
  280. package/node_modules/pi-toggle-skills/package.json +60 -0
  281. package/node_modules/pi-toggle-skills/src/index.ts +112 -0
  282. package/node_modules/pi-toggle-skills/src/skill-discovery.ts +258 -0
  283. package/node_modules/pi-toggle-skills/src/skill-selector.ts +435 -0
  284. package/node_modules/pi-toggle-skills/toggle-skills 2.ts +316 -0
  285. package/node_modules/pi-toggle-skills/toggle-skills.ts +316 -0
  286. package/node_modules/pi-toggle-skills/vitest.config 2.ts +15 -0
  287. package/node_modules/pi-toggle-skills/vitest.config.ts +15 -0
  288. package/node_modules/proper-lockfile/LICENSE +21 -0
  289. package/node_modules/proper-lockfile/README.md +183 -0
  290. package/node_modules/proper-lockfile/index.js +40 -0
  291. package/node_modules/proper-lockfile/lib/adapter.js +85 -0
  292. package/node_modules/proper-lockfile/lib/lockfile.js +342 -0
  293. package/node_modules/proper-lockfile/lib/mtime-precision.js +55 -0
  294. package/node_modules/proper-lockfile/node_modules/retry/.npmignore +3 -0
  295. package/node_modules/proper-lockfile/node_modules/retry/.travis.yml +15 -0
  296. package/node_modules/proper-lockfile/node_modules/retry/License +21 -0
  297. package/node_modules/proper-lockfile/node_modules/retry/Makefile +18 -0
  298. package/node_modules/proper-lockfile/node_modules/retry/README.md +227 -0
  299. package/node_modules/proper-lockfile/node_modules/retry/equation.gif +0 -0
  300. package/node_modules/proper-lockfile/node_modules/retry/example/dns.js +31 -0
  301. package/node_modules/proper-lockfile/node_modules/retry/example/stop.js +40 -0
  302. package/node_modules/proper-lockfile/node_modules/retry/index.js +1 -0
  303. package/node_modules/proper-lockfile/node_modules/retry/lib/retry.js +100 -0
  304. package/node_modules/proper-lockfile/node_modules/retry/lib/retry_operation.js +158 -0
  305. package/node_modules/proper-lockfile/node_modules/retry/package.json +32 -0
  306. package/node_modules/proper-lockfile/node_modules/retry/test/common.js +10 -0
  307. package/node_modules/proper-lockfile/node_modules/retry/test/integration/test-forever.js +24 -0
  308. package/node_modules/proper-lockfile/node_modules/retry/test/integration/test-retry-operation.js +258 -0
  309. package/node_modules/proper-lockfile/node_modules/retry/test/integration/test-retry-wrap.js +101 -0
  310. package/node_modules/proper-lockfile/node_modules/retry/test/integration/test-timeouts.js +69 -0
  311. package/node_modules/proper-lockfile/package.json +71 -0
  312. package/node_modules/section-matter/LICENSE +21 -0
  313. package/node_modules/section-matter/README.md +236 -0
  314. package/node_modules/section-matter/index.js +136 -0
  315. package/node_modules/section-matter/package.json +55 -0
  316. package/node_modules/signal-exit/LICENSE.txt +16 -0
  317. package/node_modules/signal-exit/README.md +39 -0
  318. package/node_modules/signal-exit/index.js +202 -0
  319. package/node_modules/signal-exit/package.json +38 -0
  320. package/node_modules/signal-exit/signals.js +53 -0
  321. package/node_modules/sprintf-js/.npmignore +1 -0
  322. package/node_modules/sprintf-js/.npmignore 2 +1 -0
  323. package/node_modules/sprintf-js/LICENSE +24 -0
  324. package/node_modules/sprintf-js/LICENSE 2 +24 -0
  325. package/node_modules/sprintf-js/README 2.md +88 -0
  326. package/node_modules/sprintf-js/README.md +88 -0
  327. package/node_modules/sprintf-js/bower 2.json +14 -0
  328. package/node_modules/sprintf-js/bower.json +14 -0
  329. package/node_modules/sprintf-js/demo/angular.html +20 -0
  330. package/node_modules/sprintf-js/dist/angular-sprintf.min.js +4 -0
  331. package/node_modules/sprintf-js/dist/angular-sprintf.min.js.map +1 -0
  332. package/node_modules/sprintf-js/dist/angular-sprintf.min.map +1 -0
  333. package/node_modules/sprintf-js/dist/sprintf.min.js +4 -0
  334. package/node_modules/sprintf-js/dist/sprintf.min.js.map +1 -0
  335. package/node_modules/sprintf-js/dist/sprintf.min.map +1 -0
  336. package/node_modules/sprintf-js/gruntfile 2.js +36 -0
  337. package/node_modules/sprintf-js/gruntfile.js +36 -0
  338. package/node_modules/sprintf-js/package 2.json +22 -0
  339. package/node_modules/sprintf-js/package.json +22 -0
  340. package/node_modules/sprintf-js/src/angular-sprintf.js +18 -0
  341. package/node_modules/sprintf-js/src/sprintf.js +208 -0
  342. package/node_modules/sprintf-js/test/test.js +82 -0
  343. package/node_modules/strip-bom-string/LICENSE +21 -0
  344. package/node_modules/strip-bom-string/README.md +66 -0
  345. package/node_modules/strip-bom-string/index.js +15 -0
  346. package/node_modules/strip-bom-string/package.json +60 -0
  347. package/node_modules/tree-sitter-bash/tree-sitter-bash 2.wasm +0 -0
  348. package/node_modules/typebox/license 2 +23 -0
  349. package/node_modules/typebox/package 2.json +87 -0
  350. package/node_modules/typebox/readme 2.md +370 -0
  351. package/node_modules/zod/compile 2.cjs +96 -0
  352. package/node_modules/zod/compile 2.js +52 -0
  353. package/node_modules/zod/index 2.cjs +52 -0
  354. package/node_modules/zod/index 2.js +7 -0
  355. package/package.json +13 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.4 — 2026-10-14
4
+
5
+ - GigaChat загружается через штатную точку входа расширения: доступны `/login`, мастер `/gigachat`, встроенные модели и собственная политика выбора default-модели. Lockfile обновлён до `pi-gigachat` 0.5.1; зависимость остаётся `latest`.
6
+ - Recap без отдельной настройки использует текущую модель основной сессии, включая смену через `/model`; явный выбор recap сохраняет приоритет. `Use default` немедленно возвращает наследование.
7
+ - Таймаут recap увеличен до 60 секунд. Для GigaChat запросы выполняются без reasoning, если его не переопределяют параметры провайдера; thinking основной сессии не меняется.
8
+ - Автоматический recap запускается через 2 минуты бездействия вместо штатных 5 минут.
9
+ - Конфиг recap не создаётся автоматически; сохранённые настройки и авторизация не очищаются. Устаревший модуль `dist/recap` удаляется при сборке.
10
+
11
+ ## 0.1.3 — 2026-10-03
12
+
13
+ - Добавлены `@tifan/pi-recap` 0.4.7, `@pi-plugins/elapsed` 0.1.1, `pi-toggle-skills` 0.1.20 и `@zigai/pi-mention-skill` 0.10.4; пакеты и зависимости включены в архив набора.
14
+ - Recap по умолчанию использует Qwen без reasoning через GigaChat, включая сброс через `Use default`. Явная модель recap сохраняется; штатный таймаут 4 секунды не изменён.
15
+ - При подключении GigaChat внутри набора регистрируется публичный провайдер без переключения основной модели со стороны его standalone-расширения.
16
+
3
17
  ## 0.1.2 — 2026-10-01
4
18
 
5
19
  - Возвращён штатный диалог `@gotgenes/pi-permission-system`, включая разрешение на сессию и отказ с причиной. Собственный диалог Datalab Kit удалён.
package/README.md CHANGED
@@ -17,7 +17,7 @@ pi
17
17
  npm ci --ignore-scripts --legacy-peer-deps
18
18
  npm run build
19
19
  npm pack
20
- pi install ./dev-sergeev-datalab-kit-0.1.2.tgz
20
+ pi install ./dev-sergeev-datalab-kit-0.1.4.tgz
21
21
  ```
22
22
 
23
23
  Целевые системы — Linux и macOS; локальные интеграционные проверки выполнены на Linux. Проверка macOS включена в CI. Windows пока не заявляется.
@@ -34,10 +34,14 @@ pi install ./dev-sergeev-datalab-kit-0.1.2.tgz
34
34
  | `@gotgenes/pi-subagents` | 21.7.5 |
35
35
  | `@capdiem/pi-todo` | 0.3.2 |
36
36
  | `pi-rewind` | 0.5.0 |
37
+ | `@tifan/pi-recap` | 0.4.7 |
38
+ | `@pi-plugins/elapsed` | 0.1.1 |
39
+ | `pi-toggle-skills` | 0.1.20 |
40
+ | `@zigai/pi-mention-skill` | 0.10.4 |
37
41
 
38
- Семь фиксированных компонентов включены в архив npm вместе с их зависимостями. GigaChat устанавливается отдельно без закрепления версии. Дополнительные расширения не добавляются.
42
+ Одиннадцать фиксированных компонентов включены в архив npm вместе с их зависимостями. GigaChat устанавливается отдельно без закрепления версии.
39
43
 
40
- Текущие модель и провайдер сохраняются. Для доступа к GigaChat используйте штатные `/login`, затем `/model`.
44
+ Datalab Kit загружает штатное расширение GigaChat, не заменяя его регистрацию только провайдером. Сохраняются встроенные модели и собственная политика выбора модели пакета. Для авторизации используйте `/login` → GigaChat; `/gigachat` открывает мастер подключений, авторизации и выбора моделей из каталогов серверов. Основную модель выбирают через `/model`.
41
45
 
42
46
  ## Значения по умолчанию
43
47
 
@@ -51,10 +55,22 @@ pi install ./dev-sergeev-datalab-kit-0.1.2.tgz
51
55
  - Подтверждения показывает штатный диалог `@gotgenes/pi-permission-system`: разрешение одного запуска или на сессию, отказ и отказ с причиной. Настройки клавиш и повторного нажатия управляются самим расширением; собственного диалога Datalab Kit нет.
52
56
  - Одновременно работает один субагент. Инструмент `subagent` принимает одну задачу за вызов.
53
57
 
54
- Уже заданные пользователем настройки имеют приоритет, включая разрешения, настройки штатного диалога и число субагентов. Значения набора действуют в памяти; существующие конфиги расширений не перезаписываются. Настройки разрешений остаются в штатных `extensions/pi-permission-system/config.json` внутри каталога агента и `.pi/extensions/pi-permission-system/config.json` внутри проекта. Субагенты используют `<agentDir>/subagents.json` и `<project>/.pi/subagents.json`.
58
+ Уже заданные пользователем настройки имеют приоритет над значениями Datalab Kit, включая разрешения, настройки штатного диалога и число субагентов. Собственная политика установки и выбора модели GigaChat остаётся штатной; подробнее ниже. Значения разрешений и числа субагентов действуют в памяти. Настройки разрешений остаются в штатных `extensions/pi-permission-system/config.json` внутри каталога агента и `.pi/extensions/pi-permission-system/config.json` внутри проекта. Субагенты используют `<agentDir>/subagents.json` и `<project>/.pi/subagents.json`.
55
59
 
56
60
  В **Plan mode** допустимые инструменты и команды проверяет pi-plan-mode без дополнительных подтверждений по правилам набора. Явные пользовательские `ask` и `deny` продолжают действовать; некорректная конфигурация разрешений также не обходится. После выхода из Plan mode или перехода к реализации правила набора снова действуют. Это поведение сохраняется при восстановлении сессии и смене ветки. Plan mode допускает некоторые тесты и проверки, которые могут создавать артефакты.
57
61
 
62
+ ## Recap, время работы и навыки
63
+
64
+ `/recap` показывает краткое резюме сессии над редактором. По умолчанию используется текущая модель основной сессии; смена через `/model` учитывается при следующем запросе recap. Явный выбор через `/recap config` имеет приоритет. Пункт `Use default` возвращает наследование модели сессии сразу, без `/reload`. Проверить выбор можно через `/recap status`. Datalab Kit не создаёт и не дополняет `<agentDir>/extensions/pi-recap.json`; уже сохранённые настройки, включая Qwen от прежней версии набора, не очищаются автоматически. Если текущей модели или её авторизации нет, recap не переключается на другую модель.
65
+
66
+ Таймаут запроса recap — 60 секунд; задержка автоматического резюме после бездействия — 2 минуты. Recap не наследует thinking основной сессии и не передаёт уровень reasoning: для GigaChat это означает `off`, не меняя режим основного чата. Явные параметры тела запроса провайдера могут переопределить это поведение. Для других провайдеров и моделей отключение reasoning зависит от возможностей их адаптеров. `GIGACHAT_TIMEOUT` не переопределяет явно переданный recap лимит.
67
+
68
+ `elapsed` показывает время полного запроса в индикаторе `Working...`, включая все шаги агента и вызовы инструментов. Счётчик обнуляется для следующего запроса и исчезает после завершения. Работает только в TUI, не заменяет powerline footer и не требует настройки.
69
+
70
+ `/toggle-skills` управляет видимостью навыков для модели. Изменения сохраняются в `disable-model-invocation` внутри `SKILL.md`; после сохранения выполните `/reload`. Общие навыки в `~/.agents/skills` изменяются и для других агентов, учитывающих этот флаг. Расширение сканирует стандартные каталоги навыков; навыки из npm-пакетов и произвольных путей настроек не перечисляются.
71
+
72
+ Введите `$` для выбора навыка через `pi-mention-skill`. Скрытый от модели навык остаётся доступен через явное `$имя-навыка`. По умолчанию `/skill:*` скрываются из slash autocomplete; настройки самого расширения сохраняют приоритет над штатными значениями.
73
+
58
74
  ## YOLO
59
75
 
60
76
  YOLO управляется штатным `@gotgenes/pi-permission-system`: откройте `/permission-system` → **YOLO mode** или задайте `"yoloMode": true` в конфигурации расширения. Собственные сессионные команды `/yolo on|off|status`, добавленные в 0.1.1, удалены в 0.1.2.
@@ -75,6 +91,8 @@ GigaChat обновляется независимо от версии набо
75
91
 
76
92
  Явно закреплённый пользователем источник GigaChat сохраняется. При удалении набора отдельная запись GigaChat остаётся; её можно удалить стандартным `pi remove npm:@dev-sergeev/pi-gigachat`. Установка с `-l` пока не проверена.
77
93
 
94
+ GigaChat загружается со своей политикой как внутри набора, так и через отдельную запись пакета. В проверенной версии 0.5.1 встроены GLM и Qwen; собственная инициализация пакета назначает основной default `gigachat/Qwen3.5-397b`, с его штатными исключениями для сохранённых частных подключений и выбора сессии. Это может изменить ранее сохранённые `defaultProvider` и `defaultModel`; Datalab Kit не блокирует такое поведение и не переписывает исходники GigaChat. Авторизация и ранее сохранённые подключения не очищаются. Модель recap настраивается независимо.
95
+
78
96
  ## Разработка
79
97
 
80
98
  ```bash
@@ -84,6 +102,6 @@ npm run typecheck
84
102
  npm test
85
103
  ```
86
104
 
87
- `build` применяет проверяемые адаптации к локальным permission-system, plan-mode и subagents перед упаковкой. Номера версий и единственность каждого места изменения проверяются; несовпадение завершает сборку с ошибкой. Адаптации не меняют глобально установленные пакеты. Интеграционный тест использует изолированный каталог агента и локальный реестр npm, устанавливает настоящий архив штатной командой Pi и проверяет штатное обновление.
105
+ `build` применяет проверяемые адаптации к локальным permission-system, plan-mode, subagents и recap перед упаковкой. Для recap адаптируются наследование модели сессии, подпись пункта `Use default` и таймаут 60 секунд; исходный конфиг пользователя не переписывается. Номера версий и единственность каждого места изменения проверяются; несовпадение завершает сборку с ошибкой. Устаревшие выходные модули удаляются. Адаптации не меняют глобально установленные пакеты. Интеграционный тест использует изолированный каталог агента и локальный реестр npm, устанавливает настоящий архив штатной командой Pi и проверяет штатное обновление.
88
106
 
89
107
  Тесты запускаются последовательно с `--liftoff-only`, чтобы оптимизирующая компиляция WASM-парсера bash не исчерпывала память в ограниченной среде CI. Параметр относится к тестовому процессу; запуск пользователя не меняется.
@@ -1,8 +1,8 @@
1
1
  # Third-party notices
2
2
 
3
- Datalab Kit includes the following upstream components. Their licenses and copyright notices remain in their package directories and apply to those components and their transitive dependencies. Datalab Kit modifies permission-system, plan-mode and subagents during build; see scripts/prepare-upstream.mjs. GigaChat is downloaded separately.
3
+ Datalab Kit includes the following upstream components. Their licenses and copyright notices remain in their package directories and apply to those components and their transitive dependencies. Datalab Kit modifies permission-system, plan-mode, subagents and recap's default model during build; see scripts/prepare-upstream.mjs. GigaChat is downloaded separately.
4
4
 
5
- - @dev-sergeev/pi-gigachat@0.3.3: MIT, git+https://github.com/dev-sergeev/pi-gigachat.git.
5
+ - @dev-sergeev/pi-gigachat (latest, independently installed): MIT, git+https://github.com/dev-sergeev/pi-gigachat.git.
6
6
  - @juicesharp/rpiv-ask-user-question@2.11.0: MIT, git+https://github.com/juicesharp/rpiv-mono.git.
7
7
  - pi-powerline-footer@0.17.2: MIT, git+https://github.com/nicobailon/pi-powerline-footer.git.
8
8
  - @gotgenes/pi-permission-system@33.0.5: MIT, git+https://github.com/gotgenes/pi-packages.git.
@@ -10,6 +10,10 @@ Datalab Kit includes the following upstream components. Their licenses and copyr
10
10
  - @gotgenes/pi-subagents@21.7.5: MIT, git+https://github.com/gotgenes/pi-packages.git.
11
11
  - @capdiem/pi-todo@0.3.2: MIT, git+https://github.com/capdiem/pi-extensions.git.
12
12
  - pi-rewind@0.5.0: MIT, git+https://github.com/arpagon/pi-rewind.git.
13
+ - @tifan/pi-recap@0.4.7: MIT, git+https://github.com/tifandotme/pi-extensions.git.
14
+ - @pi-plugins/elapsed@0.1.1: MIT, git+https://github.com/k3dom/pi-plugins.git.
15
+ - pi-toggle-skills@0.1.20: MIT, git+https://github.com/monotykamary/pi-toggle-skills.git.
16
+ - @zigai/pi-mention-skill@0.10.4: MIT, git+https://github.com/zigai/pi-tweaks.git.
13
17
 
14
18
  For the adapted subagents component, the upstream MIT notice is reproduced below:
15
19
 
@@ -1,3 +1,5 @@
1
1
  # Пользовательские настройки имеют приоритет
2
2
 
3
3
  Datalab Kit поставляет настройки как значения по умолчанию, а уже заданные пользователем значения имеют приоритет, включая правила разрешений и предел числа субагентов. Выбрали этот подход вместо обязательного применения политики набора, чтобы установка готового набора дополняла конфигурацию пользователя и сохраняла его явные решения. Следствие: настройки набора не являются неизменяемыми ограничениями и могут быть переопределены пользователем.
4
+
5
+ Уточнение от 2026-10-12: приоритет относится к значениям, задаваемым самим Datalab Kit. Набор сохраняет штатное поведение `pi-gigachat`, включая собственное назначение модели по умолчанию этим пакетом; он может менять сохранённые настройки основной модели по своей политике. Datalab Kit не добавляет отдельного назначения модели и не очищает существующие конфиги recap или авторизацию.
@@ -12,6 +12,14 @@ Pi 0.85.1 загружает ресурсы из `pi.extensions`, но не пр
12
12
 
13
13
  Семь фиксированных компонентов поставляются через `bundleDependencies` и явно перечисленные ресурсы. Сборка адаптирует два компонента: permission-system получает нижний слой значений набора и диалог с отменой по умолчанию; subagents получает значение `maxConcurrent = 1`. Пользовательские слои остаются выше; файлы конфигурации не переписываются. Изменения исходников воспроизводимы и проверяют версию и уникальность места изменения.
14
14
 
15
+ Дополнение от 2026-10-02: схема доставки распространяется ещё на четыре фиксированных компонента — recap, elapsed, toggle-skills и mention-skill (всего одиннадцать). Recap получает Qwen через свой штатный конфиг при отсутствии явного выбора модели. Сборка также меняет только встроенное значение default-модели, чтобы штатный `Use default` возвращал Qwen без перезапуска; таймаут сохраняется. При подключении GigaChat самим набором используется экспорт `gigachatProvider`, чтобы standalone-обработчик провайдера не менял выбранную основную модель.
16
+
17
+ Пересмотр от 2026-10-12: назначения моделей со стороны набора отменены. Datalab Kit не создаёт конфиг recap и не подменяет его встроенную default-модель; сохранённые конфиги не очищаются. При подключении GigaChat вызывается штатная default-точка входа расширения вместо регистрации только `gigachatProvider`. Это сохраняет мастер `/gigachat`, авторизацию, встроенные модели и собственную инициализацию default-модели пакета. Решение принято вместо фильтрации моделей и подавления upstream-обработчиков: набор должен сохранять базовое поведение `pi-gigachat`, а не задавать ему вторую политику. Recap остаётся независимым от основной модели сессии; наследование не входит в изменение.
18
+
19
+ Пересмотр от 2026-10-14: пользователь согласовал наследование текущей модели основной сессии для recap при отсутствии отдельного выбора. Явный конфиг recap имеет приоритет, а `Use default` немедленно возвращает наследование. При отсутствии текущей модели или её авторизации другая модель автоматически не выбирается. Сборка адаптирует recap 0.4.7: разрешение default-модели через контекст сессии, подпись picker и таймаут 60 секунд. Конфиги пользователя не изменяются. Уровень thinking основной сессии не наследуется и не переключается; отсутствие request-level reasoning оставляет GigaChat в `off`, если параметры провайдера не переопределяют тело запроса. Штатное поведение самого `pi-gigachat` остаётся без изменений.
20
+
21
+ Дополнительное согласование от 2026-10-14: задержка автоматического recap после бездействия сокращена с 5 до 2 минут. Таймаут отдельного запроса остаётся 60 секунд.
22
+
15
23
  GigaChat остаётся зависимостью `latest`. При явной установке postinstall проверяет актуальную версию, устанавливает её в управляемый каталог Pi и добавляет незакреплённый источник. При первой активации расширение восстанавливает запись, которую установщик Pi мог затереть; загрузка не выполняет сетевых запросов. До появления отдельной записи провайдер подключается через расширение набора. После её появления его загружает Pi самостоятельно.
16
24
 
17
25
  ## Последствия и пределы
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 kedom
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,45 @@
1
+ # `@pi-plugins/elapsed`
2
+
3
+ A [pi-agent](https://github.com/earendil-works/pi) extension that shows how long the
4
+ agent has been working on the current prompt, as a live clock in pi's working
5
+ indicator.
6
+
7
+ ```text
8
+ ⠹ Working... 1m 04s
9
+ ```
10
+
11
+ ## Install
12
+
13
+ ```bash
14
+ pi install npm:@pi-plugins/elapsed
15
+ ```
16
+
17
+ For a one-off run without adding it to settings:
18
+
19
+ ```bash
20
+ pi -e npm:@pi-plugins/elapsed
21
+ ```
22
+
23
+ For local development, load it straight from this directory:
24
+
25
+ ```bash
26
+ pi -e ./plugins/elapsed
27
+ ```
28
+
29
+ ## Usage
30
+
31
+ Nothing to configure. Send a prompt and the working indicator counts up next to the
32
+ spinner, restarting at `0s` for every prompt and disappearing when the agent is done.
33
+
34
+ ## Notes
35
+
36
+ - The clock covers one full prompt — the whole agent run, including every turn and
37
+ tool call — not a single LLM request. For per-request timings use
38
+ [`speed`](../speed).
39
+ - It ticks once per second and replaces pi's default `Working...` message; pi's own
40
+ message is restored when the run ends.
41
+ - Interactive (TUI) mode only. In RPC, print, and JSON modes there is no working
42
+ indicator, so the extension stays idle.
43
+ - While pi shows a different status row — retrying, compacting, summarizing a branch
44
+ — that row is displayed instead. Time keeps accruing and the clock reappears with
45
+ the working indicator.
@@ -0,0 +1,8 @@
1
+ import { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
+ //#region src/index.d.ts
3
+ /** `4s`, `1m 04s`, `2h 07m 30s` — padded so the row keeps its width while counting. */
4
+ declare function formatElapsed(ms: number): string;
5
+ declare function elapsed(pi: ExtensionAPI): void;
6
+ //#endregion
7
+ export { elapsed as default, formatElapsed };
8
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"mappings":";;;iBAWgB,cAAc;iBAeN,QAAQ,IAAI"}
@@ -0,0 +1,47 @@
1
+ //#region src/index.ts
2
+ /** pi's own default working message, so the clock reads as an extension of it. */
3
+ const WORKING_LABEL = "Working...";
4
+ const TICK_MS = 1e3;
5
+ function pad(value) {
6
+ return value.toString().padStart(2, "0");
7
+ }
8
+ /** `4s`, `1m 04s`, `2h 07m 30s` — padded so the row keeps its width while counting. */
9
+ function formatElapsed(ms) {
10
+ const totalSeconds = Math.floor(ms / 1e3);
11
+ const seconds = totalSeconds % 60;
12
+ const minutes = Math.floor(totalSeconds / 60) % 60;
13
+ const hours = Math.floor(totalSeconds / 3600);
14
+ if (hours > 0) return `${hours}h ${pad(minutes)}m ${pad(seconds)}s`;
15
+ if (minutes > 0) return `${minutes}m ${pad(seconds)}s`;
16
+ return `${seconds}s`;
17
+ }
18
+ function elapsed(pi) {
19
+ let ticker;
20
+ function stop(ctx) {
21
+ if (ticker === void 0) return;
22
+ clearInterval(ticker);
23
+ ticker = void 0;
24
+ ctx.ui.setWorkingMessage();
25
+ }
26
+ pi.on("agent_start", (_event, ctx) => {
27
+ if (ctx.mode !== "tui") return;
28
+ stop(ctx);
29
+ const startedAt = performance.now();
30
+ const show = () => {
31
+ ctx.ui.setWorkingMessage(`${WORKING_LABEL} ${formatElapsed(performance.now() - startedAt)}`);
32
+ };
33
+ show();
34
+ ticker = setInterval(show, TICK_MS);
35
+ ticker.unref();
36
+ });
37
+ pi.on("agent_end", (_event, ctx) => {
38
+ stop(ctx);
39
+ });
40
+ pi.on("session_shutdown", (_event, ctx) => {
41
+ stop(ctx);
42
+ });
43
+ }
44
+ //#endregion
45
+ export { elapsed as default, formatElapsed };
46
+
47
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type { ExtensionAPI, ExtensionContext } from '@earendil-works/pi-coding-agent'\n\n/** pi's own default working message, so the clock reads as an extension of it. */\nconst WORKING_LABEL = 'Working...'\nconst TICK_MS = 1000\n\nfunction pad(value: number): string {\n return value.toString().padStart(2, '0')\n}\n\n/** `4s`, `1m 04s`, `2h 07m 30s` — padded so the row keeps its width while counting. */\nexport function formatElapsed(ms: number): string {\n const totalSeconds = Math.floor(ms / 1000)\n const seconds = totalSeconds % 60\n const minutes = Math.floor(totalSeconds / 60) % 60\n const hours = Math.floor(totalSeconds / 3600)\n\n if (hours > 0) {\n return `${hours}h ${pad(minutes)}m ${pad(seconds)}s`\n }\n if (minutes > 0) {\n return `${minutes}m ${pad(seconds)}s`\n }\n return `${seconds}s`\n}\n\nexport default function elapsed(pi: ExtensionAPI) {\n let ticker: NodeJS.Timeout | undefined\n\n function stop(ctx: ExtensionContext): void {\n if (ticker === undefined) {\n return\n }\n clearInterval(ticker)\n ticker = undefined\n ctx.ui.setWorkingMessage()\n }\n\n pi.on('agent_start', (_event, ctx) => {\n // Only the interactive loader renders a working message; elsewhere it is a no-op.\n if (ctx.mode !== 'tui') {\n return\n }\n stop(ctx)\n\n const startedAt = performance.now()\n const show = () => {\n ctx.ui.setWorkingMessage(\n `${WORKING_LABEL} ${formatElapsed(performance.now() - startedAt)}`,\n )\n }\n\n // Each write repaints the loader, so the tick is what animates the clock.\n show()\n ticker = setInterval(show, TICK_MS)\n ticker.unref()\n })\n\n pi.on('agent_end', (_event, ctx) => {\n stop(ctx)\n })\n\n pi.on('session_shutdown', (_event, ctx) => {\n stop(ctx)\n })\n}\n"],"mappings":";;AAGA,MAAM,gBAAgB;AACtB,MAAM,UAAU;AAEhB,SAAS,IAAI,OAAuB;CAClC,OAAO,MAAM,SAAS,CAAC,CAAC,SAAS,GAAG,GAAG;AACzC;;AAGA,SAAgB,cAAc,IAAoB;CAChD,MAAM,eAAe,KAAK,MAAM,KAAK,GAAI;CACzC,MAAM,UAAU,eAAe;CAC/B,MAAM,UAAU,KAAK,MAAM,eAAe,EAAE,IAAI;CAChD,MAAM,QAAQ,KAAK,MAAM,eAAe,IAAI;CAE5C,IAAI,QAAQ,GACV,OAAO,GAAG,MAAM,IAAI,IAAI,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE;CAEpD,IAAI,UAAU,GACZ,OAAO,GAAG,QAAQ,IAAI,IAAI,OAAO,EAAE;CAErC,OAAO,GAAG,QAAQ;AACpB;AAEA,SAAwB,QAAQ,IAAkB;CAChD,IAAI;CAEJ,SAAS,KAAK,KAA6B;EACzC,IAAI,WAAW,KAAA,GACb;EAEF,cAAc,MAAM;EACpB,SAAS,KAAA;EACT,IAAI,GAAG,kBAAkB;CAC3B;CAEA,GAAG,GAAG,gBAAgB,QAAQ,QAAQ;EAEpC,IAAI,IAAI,SAAS,OACf;EAEF,KAAK,GAAG;EAER,MAAM,YAAY,YAAY,IAAI;EAClC,MAAM,aAAa;GACjB,IAAI,GAAG,kBACL,GAAG,cAAc,GAAG,cAAc,YAAY,IAAI,IAAI,SAAS,GACjE;EACF;EAGA,KAAK;EACL,SAAS,YAAY,MAAM,OAAO;EAClC,OAAO,MAAM;CACf,CAAC;CAED,GAAG,GAAG,cAAc,QAAQ,QAAQ;EAClC,KAAK,GAAG;CACV,CAAC;CAED,GAAG,GAAG,qBAAqB,QAAQ,QAAQ;EACzC,KAAK,GAAG;CACV,CAAC;AACH"}
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "@pi-plugins/elapsed",
3
+ "version": "0.1.1",
4
+ "description": "Working timer extension for pi-agent: shows how long the agent has been working.",
5
+ "keywords": [
6
+ "duration",
7
+ "elapsed",
8
+ "pi",
9
+ "pi-agent",
10
+ "pi-extension",
11
+ "pi-package",
12
+ "timer",
13
+ "working-indicator"
14
+ ],
15
+ "homepage": "https://github.com/k3dom/pi-plugins/tree/main/plugins/elapsed#readme",
16
+ "bugs": {
17
+ "url": "https://github.com/k3dom/pi-plugins/issues"
18
+ },
19
+ "license": "MIT",
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "git+https://github.com/k3dom/pi-plugins.git",
23
+ "directory": "plugins/elapsed"
24
+ },
25
+ "files": [
26
+ "dist",
27
+ "README.md"
28
+ ],
29
+ "type": "module",
30
+ "types": "./dist/index.d.mts",
31
+ "exports": {
32
+ ".": "./dist/index.mjs",
33
+ "./package.json": "./package.json"
34
+ },
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
38
+ "devDependencies": {
39
+ "@earendil-works/pi-coding-agent": "0.83.0",
40
+ "@types/node": "26.1.2",
41
+ "oxfmt": "0.62.0",
42
+ "oxlint": "1.77.0",
43
+ "tsdown": "0.22.14",
44
+ "typescript": "7.0.2",
45
+ "@pi-plugins/fmt": "0.0.0",
46
+ "@pi-plugins/lint": "0.0.0",
47
+ "@pi-plugins/tsconfig": "0.0.0"
48
+ },
49
+ "peerDependencies": {
50
+ "@earendil-works/pi-coding-agent": "*"
51
+ },
52
+ "pi": {
53
+ "extensions": [
54
+ "./dist/index.mjs"
55
+ ]
56
+ },
57
+ "scripts": {
58
+ "build": "tsdown",
59
+ "check": "pnpm run lint && pnpm run check-types && pnpm run format:check",
60
+ "check-types": "tsc -b",
61
+ "lint": "oxlint",
62
+ "format": "oxfmt",
63
+ "format:check": "oxfmt --check"
64
+ }
65
+ }
@@ -0,0 +1,61 @@
1
+ # @tifan/pi-recap
2
+
3
+ Re-enter a session without rereading the transcript.
4
+
5
+ `pi-recap` shows a one-line recap on demand or after you have been away. It starts with why you opened the session, then adds the current state, important decisions, relevant files or commands, and the likely next action.
6
+
7
+ ![Recap widget showing a generated session recap](https://raw.githubusercontent.com/tifandotme/pi-extensions/refs/heads/master/packages/pi-recap/assets/recap-widget.webp)
8
+
9
+ ## Install
10
+
11
+ ```bash
12
+ pi install npm:@tifan/pi-recap
13
+ ```
14
+
15
+ This package requires Pi 0.84.2 or newer.
16
+
17
+ ## How it works
18
+
19
+ - `/recap` generates a fresh, goal-first recap and shows it above the editor.
20
+ - After the agent settles, `pi-recap` waits 5 minutes. If you stay idle, it generates one automatic recap.
21
+ - On resume, `pi-recap` shows the saved recap if it is current. If it is stale or missing, it generates a fresh recap.
22
+ - The recap clears when you send a non-`/recap` message.
23
+
24
+ Recaps use pi's current session context, so they follow the active branch and respect compaction. They do not scrape the full session file or terminal history. The latest recap is stored outside LLM context.
25
+
26
+ A good recap should answer "what was I trying to do here?". For example:
27
+
28
+ > Deciding whether pi-inline-skills should switch from `$skill` to `/skill`. Recommendation is `/` only with commands winning; next decide whether leading `/skill` should expand.
29
+
30
+ ## Commands
31
+
32
+ - `/recap`: Generate and show a fresh recap.
33
+ - `/recap status`: Show the selected model, active model, recap freshness, and whether the recap is visible. A recap is current when it still matches the latest session state; otherwise it is stale.
34
+ - `/recap config`: Choose a recap model.
35
+ - `/recap help`: List recap commands.
36
+
37
+ ## Configuration
38
+
39
+ Out of the box, `pi-recap` uses this default model: `openai-codex/gpt-5.6-luna`.
40
+
41
+ Run `/recap config` to choose a different model.
42
+
43
+ ![Recap model selector showing available model choices](https://raw.githubusercontent.com/tifandotme/pi-extensions/refs/heads/master/packages/pi-recap/assets/recap-model-selector.webp)
44
+
45
+ After you choose a model, `pi-recap` uses only that model. Choose `Use default` in `/recap config` to return to the default.
46
+
47
+ You can also edit `$PI_CODING_AGENT_DIR/extensions/pi-recap.json` manually:
48
+
49
+ ```json
50
+ {
51
+ "model": "openai-codex/gpt-5.6-luna"
52
+ }
53
+ ```
54
+
55
+ ## Release notes
56
+
57
+ See [CHANGELOG.md](https://github.com/tifandotme/pi-extensions/blob/master/packages/pi-recap/CHANGELOG.md)
58
+
59
+ ## License
60
+
61
+ [MIT](https://github.com/tifandotme/pi-extensions/blob/master/LICENSE)
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@tifan/pi-recap",
3
+ "version": "0.4.7",
4
+ "description": "One-line session recap on demand or after you have been away.",
5
+ "keywords": [
6
+ "pi",
7
+ "pi-extension",
8
+ "pi-package",
9
+ "recap",
10
+ "summary"
11
+ ],
12
+ "homepage": "https://github.com/tifandotme/pi-extensions/tree/master/packages/pi-recap#readme",
13
+ "bugs": "https://github.com/tifandotme/pi-extensions/issues",
14
+ "license": "MIT",
15
+ "author": "Tifan Dwi Avianto <hi@tifan.me>",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/tifandotme/pi-extensions.git",
19
+ "directory": "packages/pi-recap"
20
+ },
21
+ "files": [
22
+ "src/**/*.ts",
23
+ "README.md",
24
+ "LICENSE"
25
+ ],
26
+ "type": "module",
27
+ "publishConfig": {
28
+ "access": "public",
29
+ "provenance": true
30
+ },
31
+ "peerDependencies": {
32
+ "@earendil-works/pi-coding-agent": ">=0.84.3"
33
+ },
34
+ "engines": {
35
+ "node": ">=20"
36
+ },
37
+ "pi": {
38
+ "extensions": [
39
+ "./src/index.ts"
40
+ ],
41
+ "image": "https://raw.githubusercontent.com/tifandotme/pi-extensions/refs/heads/master/packages/pi-recap/assets/recap-widget.webp"
42
+ }
43
+ }