@herbertgao/pi-extensions 2026.8.8 → 2026.8.10

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 (266) hide show
  1. package/README.md +6 -3
  2. package/node_modules/@czottmann/pi-automode/CHANGELOG.md +24 -0
  3. package/node_modules/@czottmann/pi-automode/README.md +78 -112
  4. package/node_modules/@czottmann/pi-automode/docs/GLOSSARY.md +18 -14
  5. package/node_modules/@czottmann/pi-automode/docs/adr/ADR-001-permission-precedence-and-trust-boundaries.md +44 -0
  6. package/node_modules/@czottmann/pi-automode/docs/adr/INDEX.md +5 -0
  7. package/node_modules/@czottmann/pi-automode/docs/automode-classifier-flow.md +198 -104
  8. package/node_modules/@czottmann/pi-automode/docs/configuration.md +155 -0
  9. package/node_modules/@czottmann/pi-automode/docs/defaults.md +55 -14
  10. package/node_modules/@czottmann/pi-automode/docs/diagnostics.md +90 -0
  11. package/node_modules/@czottmann/pi-automode/docs/observability-logging.md +61 -26
  12. package/node_modules/@czottmann/pi-automode/examples/automode.local.json +5 -0
  13. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/classifier.ts +172 -18
  14. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/config.ts +127 -30
  15. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/constants.ts +3 -0
  16. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/extension.ts +273 -31
  17. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/log.ts +60 -5
  18. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/paths.ts +92 -8
  19. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/permissions.ts +203 -13
  20. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/state.ts +1 -0
  21. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/types.ts +11 -0
  22. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/utils.ts +9 -1
  23. package/node_modules/@czottmann/pi-automode/package.json +9 -2
  24. package/node_modules/@czottmann/pi-automode/skills/automode-diagnostics/SKILL.md +63 -0
  25. package/node_modules/@herbertgao/pi-cc-extensions/README.en.md +3 -3
  26. package/node_modules/@herbertgao/pi-cc-extensions/README.md +3 -3
  27. package/node_modules/@herbertgao/pi-cc-extensions/extensions/config/panel.ts +8 -3
  28. package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/context.ts +56 -29
  29. package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/message-display.ts +1 -1
  30. package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/mouse/interaction.ts +15 -13
  31. package/node_modules/@herbertgao/pi-cc-extensions/package.json +3 -3
  32. package/node_modules/@herbertgao/pi-handoff/CHANGELOG.md +29 -0
  33. package/node_modules/@herbertgao/pi-handoff/README.md +15 -18
  34. package/node_modules/@herbertgao/pi-handoff/package.json +11 -4
  35. package/node_modules/@herbertgao/pi-handoff/src/complete-text.ts +33 -0
  36. package/node_modules/@herbertgao/pi-handoff/src/index.ts +127 -232
  37. package/node_modules/@herbertgao/pi-handoff/src/session-query.ts +15 -30
  38. package/node_modules/@herbertgao/pi-mermaid-open/CHANGELOG.md +14 -0
  39. package/node_modules/@herbertgao/pi-mermaid-open/README.md +21 -4
  40. package/node_modules/@herbertgao/pi-mermaid-open/herdr-plugin/herdr-plugin.toml +11 -0
  41. package/node_modules/@herbertgao/pi-mermaid-open/herdr-plugin/viewer.mjs +305 -0
  42. package/node_modules/@herbertgao/pi-mermaid-open/package.json +15 -4
  43. package/node_modules/@herbertgao/pi-mermaid-open/src/index.ts +351 -101
  44. package/node_modules/@herbertgao/pi-preferred-thinking/CHANGELOG.md +12 -0
  45. package/node_modules/@herbertgao/pi-preferred-thinking/README.md +30 -14
  46. package/node_modules/@herbertgao/pi-preferred-thinking/package.json +7 -4
  47. package/node_modules/@herbertgao/pi-preferred-thinking/src/index.ts +140 -85
  48. package/node_modules/@herbertgao/pi-recap/CHANGELOG.md +12 -0
  49. package/node_modules/@herbertgao/pi-recap/README.md +5 -3
  50. package/node_modules/@herbertgao/pi-recap/package.json +9 -3
  51. package/node_modules/@herbertgao/pi-recap/src/index.ts +3 -7
  52. package/node_modules/@herbertgao/pi-recap/src/model-picker.ts +6 -19
  53. package/node_modules/@herbertgao/pi-recap/src/models.ts +9 -21
  54. package/node_modules/@herbertgao/pi-recap/src/tui.ts +1 -1
  55. package/node_modules/@herbertgao/pi-rename/CHANGELOG.md +49 -0
  56. package/node_modules/@herbertgao/pi-rename/README.md +13 -11
  57. package/node_modules/@herbertgao/pi-rename/package.json +13 -3
  58. package/node_modules/@herbertgao/pi-rename/src/index.ts +135 -59
  59. package/node_modules/@herbertgao/pi-rename/src/models.ts +5 -13
  60. package/node_modules/@herbertgao/pi-rename/src/naming.ts +2 -6
  61. package/node_modules/@herbertgao/pi-stash/package.json +3 -3
  62. package/node_modules/@herbertgao/pi-subagents/CHANGELOG.md +8 -0
  63. package/node_modules/@herbertgao/pi-subagents/README.md +16 -3
  64. package/node_modules/@herbertgao/pi-subagents/package.json +1 -1
  65. package/node_modules/@herbertgao/pi-subagents/src/cross-extension-rpc.ts +15 -4
  66. package/node_modules/@herbertgao/pi-subagents/src/index.ts +16 -0
  67. package/node_modules/@herbertgao/pi-subagents/src/ui/conversation-viewer.ts +5 -1
  68. package/node_modules/pi-web-access/CHANGELOG.md +13 -0
  69. package/node_modules/pi-web-access/README.md +2 -2
  70. package/node_modules/pi-web-access/chrome-cookies.ts +12 -7
  71. package/node_modules/pi-web-access/gemini-search.ts +28 -10
  72. package/node_modules/pi-web-access/index.ts +24 -10
  73. package/node_modules/pi-web-access/package.json +1 -1
  74. package/node_modules/resume-from/LICENSE +21 -0
  75. package/node_modules/resume-from/README.md +161 -0
  76. package/node_modules/resume-from/dist/adapters/claude-code/adapter.d.ts +25 -0
  77. package/node_modules/resume-from/dist/adapters/claude-code/adapter.js +60 -0
  78. package/node_modules/resume-from/dist/adapters/claude-code/contract.d.ts +8 -0
  79. package/node_modules/resume-from/dist/adapters/claude-code/contract.js +4 -0
  80. package/node_modules/resume-from/dist/adapters/claude-code/entries.d.ts +30 -0
  81. package/node_modules/resume-from/dist/adapters/claude-code/entries.js +107 -0
  82. package/node_modules/resume-from/dist/adapters/claude-code/index.d.ts +3 -0
  83. package/node_modules/resume-from/dist/adapters/claude-code/index.js +2 -0
  84. package/node_modules/resume-from/dist/adapters/claude-code/layout.d.ts +29 -0
  85. package/node_modules/resume-from/dist/adapters/claude-code/layout.js +80 -0
  86. package/node_modules/resume-from/dist/adapters/claude-code/readback.d.ts +9 -0
  87. package/node_modules/resume-from/dist/adapters/claude-code/readback.js +39 -0
  88. package/node_modules/resume-from/dist/adapters/claude-code/reader.d.ts +37 -0
  89. package/node_modules/resume-from/dist/adapters/claude-code/reader.js +415 -0
  90. package/node_modules/resume-from/dist/adapters/claude-code/redaction.d.ts +26 -0
  91. package/node_modules/resume-from/dist/adapters/claude-code/redaction.js +132 -0
  92. package/node_modules/resume-from/dist/adapters/claude-code/validation.d.ts +4 -0
  93. package/node_modules/resume-from/dist/adapters/claude-code/validation.js +39 -0
  94. package/node_modules/resume-from/dist/adapters/claude-code/writer.d.ts +23 -0
  95. package/node_modules/resume-from/dist/adapters/claude-code/writer.js +306 -0
  96. package/node_modules/resume-from/dist/adapters/codex/contract.d.ts +15 -0
  97. package/node_modules/resume-from/dist/adapters/codex/contract.js +4 -0
  98. package/node_modules/resume-from/dist/adapters/codex/index.d.ts +6 -0
  99. package/node_modules/resume-from/dist/adapters/codex/index.js +44 -0
  100. package/node_modules/resume-from/dist/adapters/codex/read.d.ts +28 -0
  101. package/node_modules/resume-from/dist/adapters/codex/read.js +270 -0
  102. package/node_modules/resume-from/dist/adapters/codex/readback.d.ts +9 -0
  103. package/node_modules/resume-from/dist/adapters/codex/readback.js +47 -0
  104. package/node_modules/resume-from/dist/adapters/codex/redaction.d.ts +26 -0
  105. package/node_modules/resume-from/dist/adapters/codex/redaction.js +132 -0
  106. package/node_modules/resume-from/dist/adapters/codex/rollout.d.ts +75 -0
  107. package/node_modules/resume-from/dist/adapters/codex/rollout.js +185 -0
  108. package/node_modules/resume-from/dist/adapters/codex/validation.d.ts +7 -0
  109. package/node_modules/resume-from/dist/adapters/codex/validation.js +78 -0
  110. package/node_modules/resume-from/dist/adapters/codex/write.d.ts +17 -0
  111. package/node_modules/resume-from/dist/adapters/codex/write.js +141 -0
  112. package/node_modules/resume-from/dist/adapters/contract.d.ts +74 -0
  113. package/node_modules/resume-from/dist/adapters/contract.js +4 -0
  114. package/node_modules/resume-from/dist/adapters/pi/adapter.d.ts +15 -0
  115. package/node_modules/resume-from/dist/adapters/pi/adapter.js +209 -0
  116. package/node_modules/resume-from/dist/adapters/pi/contract.d.ts +24 -0
  117. package/node_modules/resume-from/dist/adapters/pi/contract.js +4 -0
  118. package/node_modules/resume-from/dist/adapters/pi/format.d.ts +162 -0
  119. package/node_modules/resume-from/dist/adapters/pi/format.js +223 -0
  120. package/node_modules/resume-from/dist/adapters/pi/index.d.ts +7 -0
  121. package/node_modules/resume-from/dist/adapters/pi/index.js +10 -0
  122. package/node_modules/resume-from/dist/adapters/pi/parse.d.ts +41 -0
  123. package/node_modules/resume-from/dist/adapters/pi/parse.js +371 -0
  124. package/node_modules/resume-from/dist/adapters/pi/redaction.d.ts +26 -0
  125. package/node_modules/resume-from/dist/adapters/pi/redaction.js +132 -0
  126. package/node_modules/resume-from/dist/adapters/pi/serialize.d.ts +22 -0
  127. package/node_modules/resume-from/dist/adapters/pi/serialize.js +87 -0
  128. package/node_modules/resume-from/dist/adapters/pi/validate.d.ts +14 -0
  129. package/node_modules/resume-from/dist/adapters/pi/validate.js +134 -0
  130. package/node_modules/resume-from/dist/bin.d.ts +35 -0
  131. package/node_modules/resume-from/dist/bin.js +135 -0
  132. package/node_modules/resume-from/dist/contract.d.ts +10 -0
  133. package/node_modules/resume-from/dist/contract.js +4 -0
  134. package/node_modules/resume-from/dist/host/agents.d.ts +29 -0
  135. package/node_modules/resume-from/dist/host/agents.js +20 -0
  136. package/node_modules/resume-from/dist/host/cli/args.d.ts +21 -0
  137. package/node_modules/resume-from/dist/host/cli/args.js +187 -0
  138. package/node_modules/resume-from/dist/host/cli/contract.d.ts +27 -0
  139. package/node_modules/resume-from/dist/host/cli/contract.js +4 -0
  140. package/node_modules/resume-from/dist/host/cli/index.d.ts +2 -0
  141. package/node_modules/resume-from/dist/host/cli/index.js +1 -0
  142. package/node_modules/resume-from/dist/host/cli/presentation.d.ts +2 -0
  143. package/node_modules/resume-from/dist/host/cli/presentation.js +11 -0
  144. package/node_modules/resume-from/dist/host/cli/render.d.ts +3 -0
  145. package/node_modules/resume-from/dist/host/cli/render.js +70 -0
  146. package/node_modules/resume-from/dist/host/cli/runner.d.ts +8 -0
  147. package/node_modules/resume-from/dist/host/cli/runner.js +125 -0
  148. package/node_modules/resume-from/dist/host/contract.d.ts +42 -0
  149. package/node_modules/resume-from/dist/host/contract.js +4 -0
  150. package/node_modules/resume-from/dist/host/entry.d.ts +52 -0
  151. package/node_modules/resume-from/dist/host/entry.js +91 -0
  152. package/node_modules/resume-from/dist/host/index.d.ts +11 -0
  153. package/node_modules/resume-from/dist/host/index.js +10 -0
  154. package/node_modules/resume-from/dist/host/pi-extension/command.d.ts +18 -0
  155. package/node_modules/resume-from/dist/host/pi-extension/command.js +103 -0
  156. package/node_modules/resume-from/dist/host/pi-extension/contract.d.ts +34 -0
  157. package/node_modules/resume-from/dist/host/pi-extension/contract.js +4 -0
  158. package/node_modules/resume-from/dist/host/pi-extension/index.d.ts +6 -0
  159. package/node_modules/resume-from/dist/host/pi-extension/index.js +4 -0
  160. package/node_modules/resume-from/dist/host/pi-extension/picker.d.ts +16 -0
  161. package/node_modules/resume-from/dist/host/pi-extension/picker.js +35 -0
  162. package/node_modules/resume-from/dist/host/pi-extension/presentation.d.ts +2 -0
  163. package/node_modules/resume-from/dist/host/pi-extension/presentation.js +11 -0
  164. package/node_modules/resume-from/dist/host/pi-extension/register.d.ts +25 -0
  165. package/node_modules/resume-from/dist/host/pi-extension/register.js +11 -0
  166. package/node_modules/resume-from/dist/host/pi-extension/ui.d.ts +20 -0
  167. package/node_modules/resume-from/dist/host/pi-extension/ui.js +1 -0
  168. package/node_modules/resume-from/dist/host/profile.d.ts +8 -0
  169. package/node_modules/resume-from/dist/host/profile.js +31 -0
  170. package/node_modules/resume-from/dist/host/registry.d.ts +8 -0
  171. package/node_modules/resume-from/dist/host/registry.js +33 -0
  172. package/node_modules/resume-from/dist/host/wiring.d.ts +41 -0
  173. package/node_modules/resume-from/dist/host/wiring.js +67 -0
  174. package/node_modules/resume-from/dist/import/confirmation.d.ts +6 -0
  175. package/node_modules/resume-from/dist/import/confirmation.js +27 -0
  176. package/node_modules/resume-from/dist/import/contract.d.ts +41 -0
  177. package/node_modules/resume-from/dist/import/contract.js +4 -0
  178. package/node_modules/resume-from/dist/import/discovery/contract.d.ts +58 -0
  179. package/node_modules/resume-from/dist/import/discovery/contract.js +4 -0
  180. package/node_modules/resume-from/dist/import/discovery/errors.d.ts +9 -0
  181. package/node_modules/resume-from/dist/import/discovery/errors.js +12 -0
  182. package/node_modules/resume-from/dist/import/discovery/finder.d.ts +10 -0
  183. package/node_modules/resume-from/dist/import/discovery/finder.js +129 -0
  184. package/node_modules/resume-from/dist/import/discovery/homes.d.ts +23 -0
  185. package/node_modules/resume-from/dist/import/discovery/homes.js +83 -0
  186. package/node_modules/resume-from/dist/import/discovery/index.d.ts +2 -0
  187. package/node_modules/resume-from/dist/import/discovery/index.js +2 -0
  188. package/node_modules/resume-from/dist/import/discovery/ordering.d.ts +3 -0
  189. package/node_modules/resume-from/dist/import/discovery/ordering.js +21 -0
  190. package/node_modules/resume-from/dist/import/errors.d.ts +22 -0
  191. package/node_modules/resume-from/dist/import/errors.js +20 -0
  192. package/node_modules/resume-from/dist/import/index.d.ts +3 -0
  193. package/node_modules/resume-from/dist/import/index.js +5 -0
  194. package/node_modules/resume-from/dist/import/landing/contract.d.ts +44 -0
  195. package/node_modules/resume-from/dist/import/landing/contract.js +4 -0
  196. package/node_modules/resume-from/dist/import/landing/errors.d.ts +15 -0
  197. package/node_modules/resume-from/dist/import/landing/errors.js +15 -0
  198. package/node_modules/resume-from/dist/import/landing/handover.d.ts +5 -0
  199. package/node_modules/resume-from/dist/import/landing/handover.js +12 -0
  200. package/node_modules/resume-from/dist/import/landing/index.d.ts +4 -0
  201. package/node_modules/resume-from/dist/import/landing/index.js +4 -0
  202. package/node_modules/resume-from/dist/import/landing/lander.d.ts +7 -0
  203. package/node_modules/resume-from/dist/import/landing/lander.js +133 -0
  204. package/node_modules/resume-from/dist/import/landing/marker.d.ts +9 -0
  205. package/node_modules/resume-from/dist/import/landing/marker.js +46 -0
  206. package/node_modules/resume-from/dist/import/pipeline.d.ts +17 -0
  207. package/node_modules/resume-from/dist/import/pipeline.js +134 -0
  208. package/node_modules/resume-from/dist/import/preview/builder.d.ts +6 -0
  209. package/node_modules/resume-from/dist/import/preview/builder.js +76 -0
  210. package/node_modules/resume-from/dist/import/preview/contract.d.ts +39 -0
  211. package/node_modules/resume-from/dist/import/preview/contract.js +4 -0
  212. package/node_modules/resume-from/dist/import/preview/format.d.ts +19 -0
  213. package/node_modules/resume-from/dist/import/preview/format.js +45 -0
  214. package/node_modules/resume-from/dist/import/preview/index.d.ts +2 -0
  215. package/node_modules/resume-from/dist/import/preview/index.js +1 -0
  216. package/node_modules/resume-from/dist/import/preview/warnings.d.ts +11 -0
  217. package/node_modules/resume-from/dist/import/preview/warnings.js +80 -0
  218. package/node_modules/resume-from/dist/import/transfer/contract.d.ts +48 -0
  219. package/node_modules/resume-from/dist/import/transfer/contract.js +4 -0
  220. package/node_modules/resume-from/dist/import/transfer/index.d.ts +2 -0
  221. package/node_modules/resume-from/dist/import/transfer/index.js +1 -0
  222. package/node_modules/resume-from/dist/import/transfer/rules.d.ts +3 -0
  223. package/node_modules/resume-from/dist/import/transfer/rules.js +228 -0
  224. package/node_modules/resume-from/dist/import/wiring.d.ts +24 -0
  225. package/node_modules/resume-from/dist/import/wiring.js +27 -0
  226. package/node_modules/resume-from/dist/index.d.ts +36 -0
  227. package/node_modules/resume-from/dist/index.js +36 -0
  228. package/node_modules/resume-from/dist/platform/config/contract.d.ts +35 -0
  229. package/node_modules/resume-from/dist/platform/config/contract.js +4 -0
  230. package/node_modules/resume-from/dist/platform/config/defaults.d.ts +16 -0
  231. package/node_modules/resume-from/dist/platform/config/defaults.js +22 -0
  232. package/node_modules/resume-from/dist/platform/config/errors.d.ts +9 -0
  233. package/node_modules/resume-from/dist/platform/config/errors.js +12 -0
  234. package/node_modules/resume-from/dist/platform/config/index.d.ts +5 -0
  235. package/node_modules/resume-from/dist/platform/config/index.js +6 -0
  236. package/node_modules/resume-from/dist/platform/config/loader.d.ts +10 -0
  237. package/node_modules/resume-from/dist/platform/config/loader.js +47 -0
  238. package/node_modules/resume-from/dist/platform/config/paths.d.ts +13 -0
  239. package/node_modules/resume-from/dist/platform/config/paths.js +37 -0
  240. package/node_modules/resume-from/dist/platform/config/validate.d.ts +9 -0
  241. package/node_modules/resume-from/dist/platform/config/validate.js +117 -0
  242. package/node_modules/resume-from/dist/platform/repo/contract.d.ts +30 -0
  243. package/node_modules/resume-from/dist/platform/repo/contract.js +4 -0
  244. package/node_modules/resume-from/dist/platform/repo/git.d.ts +21 -0
  245. package/node_modules/resume-from/dist/platform/repo/git.js +74 -0
  246. package/node_modules/resume-from/dist/platform/repo/index.d.ts +2 -0
  247. package/node_modules/resume-from/dist/platform/repo/index.js +1 -0
  248. package/node_modules/resume-from/dist/platform/repo/reader.d.ts +8 -0
  249. package/node_modules/resume-from/dist/platform/repo/reader.js +130 -0
  250. package/node_modules/resume-from/dist/platform/store/contract.d.ts +31 -0
  251. package/node_modules/resume-from/dist/platform/store/contract.js +4 -0
  252. package/node_modules/resume-from/dist/platform/store/file-committer.d.ts +3 -0
  253. package/node_modules/resume-from/dist/platform/store/file-committer.js +391 -0
  254. package/node_modules/resume-from/dist/platform/store/index.d.ts +2 -0
  255. package/node_modules/resume-from/dist/platform/store/index.js +2 -0
  256. package/node_modules/resume-from/dist/platform/tokens/contract.d.ts +12 -0
  257. package/node_modules/resume-from/dist/platform/tokens/contract.js +4 -0
  258. package/node_modules/resume-from/dist/platform/tokens/estimator.d.ts +12 -0
  259. package/node_modules/resume-from/dist/platform/tokens/estimator.js +111 -0
  260. package/node_modules/resume-from/dist/platform/tokens/index.d.ts +2 -0
  261. package/node_modules/resume-from/dist/platform/tokens/index.js +1 -0
  262. package/node_modules/resume-from/dist/session/contract.d.ts +109 -0
  263. package/node_modules/resume-from/dist/session/contract.js +4 -0
  264. package/node_modules/resume-from/package.json +80 -0
  265. package/node_modules/resume-from/shims/pi/extensions/resume-from.js +118 -0
  266. package/package.json +19 -14
@@ -0,0 +1,80 @@
1
+ {
2
+ "name": "resume-from",
3
+ "version": "0.2.0",
4
+ "description": "Continue a coding session in a different agent, or a different profile.",
5
+ "keywords": [
6
+ "pi-package",
7
+ "coding-agent",
8
+ "session-handoff",
9
+ "claude-code",
10
+ "codex"
11
+ ],
12
+ "type": "module",
13
+ "packageManager": "pnpm@11.20.0",
14
+ "license": "MIT",
15
+ "engines": {
16
+ "node": ">=24"
17
+ },
18
+ "bin": {
19
+ "resume-from": "./dist/bin.js"
20
+ },
21
+ "types": "./dist/index.d.ts",
22
+ "exports": {
23
+ ".": {
24
+ "types": "./dist/index.d.ts",
25
+ "import": "./dist/index.js"
26
+ },
27
+ "./pi-extension": {
28
+ "types": "./dist/host/pi-extension/index.d.ts",
29
+ "import": "./dist/host/pi-extension/index.js"
30
+ }
31
+ },
32
+ "files": [
33
+ "dist",
34
+ "shims/pi"
35
+ ],
36
+ "scripts": {
37
+ "build": "node scripts/clean-dist.mjs && tsc -p tsconfig.build.json",
38
+ "typecheck": "tsc --noEmit",
39
+ "test": "vitest run",
40
+ "test:watch": "vitest",
41
+ "lint": "biome check . && eslint . --cache --cache-strategy content",
42
+ "lint:fix": "biome check --write .",
43
+ "packages:stage": "npm run build && node scripts/release/stage-npm-packages.mjs",
44
+ "packages:check": "npm run packages:stage && node scripts/release/check-npm-packages.mjs",
45
+ "pack:dry": "npm pack --dry-run",
46
+ "prepack": "npm run build"
47
+ },
48
+ "devDependencies": {
49
+ "@biomejs/biome": "2.5.7",
50
+ "@eslint/js": "^10.0.1",
51
+ "@types/node": "^24.13.3",
52
+ "esbuild": "0.28.1",
53
+ "eslint": "^10.8.0",
54
+ "globals": "^17.9.0",
55
+ "typescript": "^7.0.2",
56
+ "typescript-compiler-api": "npm:typescript@6.0.3",
57
+ "vitest": "^4.1.10"
58
+ },
59
+ "dependencies": {
60
+ "@earendil-works/pi-tui": "^0.84.1",
61
+ "gpt-tokenizer": "^3.4.0"
62
+ },
63
+ "pi": {
64
+ "extensions": [
65
+ "./shims/pi/extensions/resume-from.js"
66
+ ],
67
+ "image": "https://raw.githubusercontent.com/alexei-led/resume-from/fa0bfa778b52c64accc53155f12f3b895476ea08/assets/resume-from-card.png"
68
+ },
69
+ "repository": {
70
+ "type": "git",
71
+ "url": "git+https://github.com/alexei-led/resume-from.git"
72
+ },
73
+ "homepage": "https://github.com/alexei-led/resume-from#readme",
74
+ "bugs": {
75
+ "url": "https://github.com/alexei-led/resume-from/issues"
76
+ },
77
+ "publishConfig": {
78
+ "access": "public"
79
+ }
80
+ }
@@ -0,0 +1,118 @@
1
+ import { homedir } from "node:os";
2
+ import { isAbsolute, join, resolve } from "node:path";
3
+ import { truncateToWidth } from "@earendil-works/pi-tui";
4
+ import { activatePiExtension } from "resume-from";
5
+ import { formatRow, safeLines, safeText } from "resume-from/pi-extension";
6
+
7
+ const COMMAND_NAME = "resume-from";
8
+ const DESCRIPTION =
9
+ "Continue another session. Use /resume-from --help for accepted arguments.";
10
+ const PROVENANCE_CUSTOM_TYPE = "resume-from-provenance";
11
+
12
+ function provenanceLines(data) {
13
+ const lines = data?.lines;
14
+ return Array.isArray(lines) && lines.every((line) => typeof line === "string")
15
+ ? lines
16
+ : null;
17
+ }
18
+
19
+ function renderProvenance(entry, { expanded }, theme) {
20
+ const lines = provenanceLines(entry.data);
21
+ const visible =
22
+ lines === null
23
+ ? ["Imported session"]
24
+ : expanded
25
+ ? lines
26
+ : [`${lines[0] ?? "Imported session"} · ${lines.at(-1) ?? ""}`];
27
+ return {
28
+ render(width) {
29
+ return visible.map((line) =>
30
+ theme.bg("customMessageBg", truncateToWidth(safeText(line), Math.max(0, width), "")),
31
+ );
32
+ },
33
+ invalidate() {},
34
+ };
35
+ }
36
+
37
+ function agentHome() {
38
+ const configured = process.env.PI_CODING_AGENT_DIR;
39
+ if (configured === undefined) return join(homedir(), ".pi", "agent");
40
+ return isAbsolute(configured) ? configured : resolve(configured);
41
+ }
42
+
43
+ function commandArgs(raw) {
44
+ const trimmed = raw.trim();
45
+ return trimmed === "" ? [] : [trimmed];
46
+ }
47
+
48
+ function uiFor(context) {
49
+ return {
50
+ show(lines) {
51
+ context.ui.notify(safeLines(lines).join("\n"), "info");
52
+ },
53
+ async confirm(question) {
54
+ return (await context.ui.confirm("Resume session", safeText(question)))
55
+ ? "selected"
56
+ : "cancelled";
57
+ },
58
+ };
59
+ }
60
+
61
+ function pickerFor(context) {
62
+ return {
63
+ async pick(listing) {
64
+ if (!context.hasUI) return { choice: "cancelled", selected: null };
65
+
66
+ const options = listing.rows.map((row, index) =>
67
+ safeText(`${index + 1}. ${formatRow(row)}`),
68
+ );
69
+ const selected = await context.ui.select(
70
+ "Select a session to import",
71
+ options,
72
+ );
73
+ const row =
74
+ listing.rows[selected === undefined ? -1 : options.indexOf(selected)];
75
+ return row === undefined
76
+ ? { choice: "cancelled", selected: null }
77
+ : { choice: "selected", selected: row };
78
+ },
79
+ };
80
+ }
81
+
82
+ export default function resumeFrom(pi) {
83
+ // Provenance is already persisted as a custom entry. Render it in the transcript,
84
+ // not as a widget, so it scrolls away and never occupies the footer/editor area.
85
+ pi.registerEntryRenderer(PROVENANCE_CUSTOM_TYPE, renderProvenance);
86
+
87
+ pi.registerCommand(COMMAND_NAME, {
88
+ description: DESCRIPTION,
89
+ async handler(rawArgs, context) {
90
+ const home = agentHome();
91
+ let command;
92
+ await activatePiExtension({
93
+ agent: "pi",
94
+ registrar: { registerCommand: (definition) => (command = definition) },
95
+ ui: uiFor(context),
96
+ picker: pickerFor(context),
97
+ home,
98
+ cwd: context.cwd,
99
+ });
100
+
101
+ if (command === undefined) {
102
+ throw new Error(
103
+ "resume-from: extension activation did not register /resume-from.",
104
+ );
105
+ }
106
+
107
+ await command.run(
108
+ {
109
+ cwd: context.cwd,
110
+ home,
111
+ switchSession: (path, options) =>
112
+ context.switchSession(path, options),
113
+ },
114
+ commandArgs(rawArgs),
115
+ );
116
+ },
117
+ });
118
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@herbertgao/pi-extensions",
3
- "version": "2026.8.8",
3
+ "version": "2026.8.10",
4
4
  "description": "Aggregate installer for HerbertGao-maintained Pi extensions.",
5
5
  "keywords": [
6
6
  "extensions",
@@ -36,22 +36,22 @@
36
36
  "dependencies": {
37
37
  "@ast-grep/cli": "^0.45.0",
38
38
  "@ast-grep/napi": "^0.45.0",
39
- "@czottmann/pi-automode": "1.11.0",
39
+ "@czottmann/pi-automode": "1.12.0",
40
40
  "@dietrichgebert/ponytail": "4.9.0",
41
41
  "@earendil-works/pi-coding-agent": "^0.84.2",
42
42
  "@earendil-works/pi-tui": "^0.84.2",
43
43
  "@effect/platform-node": "4.0.0-beta.103",
44
44
  "@effect/platform-node-shared": "4.0.0-beta.103",
45
- "@herbertgao/pi-cc-extensions": "0.8.57",
45
+ "@herbertgao/pi-cc-extensions": "0.8.58",
46
46
  "@herbertgao/pi-copy-response": "0.2.6",
47
- "@herbertgao/pi-handoff": "1.1.2",
47
+ "@herbertgao/pi-handoff": "2.0.0",
48
48
  "@herbertgao/pi-inline-skills": "1.0.5",
49
- "@herbertgao/pi-mermaid-open": "0.1.3",
50
- "@herbertgao/pi-preferred-thinking": "0.3.0",
51
- "@herbertgao/pi-recap": "0.4.4",
52
- "@herbertgao/pi-rename": "0.4.2",
53
- "@herbertgao/pi-stash": "0.1.1",
54
- "@herbertgao/pi-subagents": "0.16.0",
49
+ "@herbertgao/pi-mermaid-open": "0.2.0",
50
+ "@herbertgao/pi-preferred-thinking": "0.4.0",
51
+ "@herbertgao/pi-recap": "0.4.5",
52
+ "@herbertgao/pi-rename": "0.5.0",
53
+ "@herbertgao/pi-stash": "0.1.2",
54
+ "@herbertgao/pi-subagents": "0.16.1",
55
55
  "@herbertgao/pi-titlebar-spinner": "0.1.3",
56
56
  "@juicesharp/rpiv-ask-user-question": "2.7.0",
57
57
  "@juicesharp/rpiv-config": "^2.7.0",
@@ -73,7 +73,8 @@
73
73
  "croner": "^10.0.1",
74
74
  "cross-spawn": "^7.0.6",
75
75
  "effect": "4.0.0-beta.103",
76
- "grok-mermaid": "^0.2.2",
76
+ "gpt-tokenizer": "^3.4.0",
77
+ "grok-mermaid": "0.2.2",
77
78
  "jiti": "^2.7.0",
78
79
  "js-yaml": "^5.2.2",
79
80
  "linkedom": "^0.16.0",
@@ -84,12 +85,13 @@
84
85
  "pi-footer": "0.5.1",
85
86
  "pi-lens": "4.1.1",
86
87
  "pi-mcp-adapter": "2.27.0",
87
- "pi-web-access": "0.24.1",
88
+ "pi-web-access": "0.24.2",
88
89
  "pidusage": "^4.0.1",
89
90
  "promise.try": "^2.0.1",
90
91
  "qrcode-terminal": "^0.12.0",
91
92
  "recheck": "^4.5.0",
92
93
  "remote-pi": "0.7.0",
94
+ "resume-from": "0.2.0",
93
95
  "smol-toml": "^1.6.1",
94
96
  "strip-json-comments": "^5.0.3",
95
97
  "turndown": "^7.2.0",
@@ -124,10 +126,11 @@
124
126
  "pi-lens",
125
127
  "pi-mcp-adapter",
126
128
  "pi-web-access",
127
- "remote-pi"
129
+ "remote-pi",
130
+ "resume-from"
128
131
  ],
129
132
  "engines": {
130
- "node": ">=22.19.0"
133
+ "node": ">=24"
131
134
  },
132
135
  "pi": {
133
136
  "extensions": [
@@ -151,6 +154,7 @@
151
154
  "./node_modules/pi-lens/dist/index.js",
152
155
  "./node_modules/pi-web-access/index.ts",
153
156
  "./node_modules/remote-pi/dist/index.js",
157
+ "./node_modules/resume-from/shims/pi/extensions/resume-from.js",
154
158
  "./node_modules/@czottmann/pi-automode/extensions/auto-mode.ts",
155
159
  "./node_modules/pi-footer/src/index.ts"
156
160
  ],
@@ -159,6 +163,7 @@
159
163
  "./node_modules/@herbertgao/pi-cc-extensions/themes/cc-light.json"
160
164
  ],
161
165
  "skills": [
166
+ "./node_modules/@czottmann/pi-automode/skills",
162
167
  "./node_modules/@dietrichgebert/ponytail/skills",
163
168
  "./node_modules/pi-mcp-adapter/skills",
164
169
  "./node_modules/pi-lens/skills"