@phyzess/pappra 0.1.0-beta.13 → 0.1.0-beta.18

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 (357) hide show
  1. package/README.md +134 -15
  2. package/assets/integrations/skills/pappra/SKILL.md +28 -7
  3. package/assets/integrations/skills/pappra/references/collaboration.md +633 -0
  4. package/assets/integrations/skills/pappra/references/environment.md +360 -0
  5. package/assets/integrations/skills/pappra/references/hosts.md +20 -0
  6. package/assets/integrations/skills/pappra/references/operations.md +36 -5
  7. package/dist/adapters/pi/recovery-extension.d.ts +65 -0
  8. package/dist/adapters/pi/recovery-extension.js +238 -0
  9. package/dist/adapters/pi/session-transition-extension.d.ts +30 -0
  10. package/dist/adapters/pi/session-transition-extension.js +265 -0
  11. package/dist/app/automatic-handoff-events.d.ts +26 -0
  12. package/dist/app/automatic-handoff-events.js +134 -0
  13. package/dist/app/bounded-file.d.ts +2 -0
  14. package/dist/app/bounded-file.js +2 -0
  15. package/dist/app/capability-evidence/claude.d.ts +37 -0
  16. package/dist/app/capability-evidence/claude.js +206 -0
  17. package/dist/app/capability-evidence/codex.d.ts +35 -0
  18. package/dist/app/capability-evidence/codex.js +193 -0
  19. package/dist/app/capability-evidence/index.d.ts +33 -0
  20. package/dist/app/capability-evidence/index.js +117 -0
  21. package/dist/app/capability-evidence/pi.d.ts +73 -0
  22. package/dist/app/capability-evidence/pi.js +669 -0
  23. package/dist/app/capability-evidence/shared.d.ts +69 -0
  24. package/dist/app/capability-evidence/shared.js +195 -0
  25. package/dist/app/collab-auto-handoff.d.ts +55 -0
  26. package/dist/app/collab-auto-handoff.js +384 -0
  27. package/dist/app/collab-bindings.d.ts +57 -0
  28. package/dist/app/collab-bindings.js +1006 -0
  29. package/dist/app/collab-bootstrap-transport.d.ts +163 -0
  30. package/dist/app/collab-bootstrap-transport.js +769 -0
  31. package/dist/app/collab-bootstrap.d.ts +137 -0
  32. package/dist/app/collab-bootstrap.js +3455 -0
  33. package/dist/app/collab-handoff.d.ts +12 -0
  34. package/dist/app/collab-handoff.js +511 -0
  35. package/dist/app/collab-messages.d.ts +2 -0
  36. package/dist/app/collab-messages.js +2 -0
  37. package/dist/app/collab-notify.d.ts +156 -0
  38. package/dist/app/collab-notify.js +1208 -0
  39. package/dist/app/collab-preflight.d.ts +34 -0
  40. package/dist/app/collab-preflight.js +96 -0
  41. package/dist/app/collab-recovery-executor.d.ts +161 -0
  42. package/dist/app/collab-recovery-executor.js +1153 -0
  43. package/dist/app/collab-recovery-projection.d.ts +103 -0
  44. package/dist/app/collab-recovery-projection.js +659 -0
  45. package/dist/app/collab-recovery.d.ts +25 -0
  46. package/dist/app/collab-recovery.js +429 -0
  47. package/dist/app/collab-resources.d.ts +16 -0
  48. package/dist/app/collab-resources.js +278 -0
  49. package/dist/app/collab-role-events.d.ts +22 -0
  50. package/dist/app/collab-role-events.js +329 -0
  51. package/dist/app/collab-role-orchestration.d.ts +53 -0
  52. package/dist/app/collab-role-orchestration.js +601 -0
  53. package/dist/app/collab-role-plan.d.ts +81 -0
  54. package/dist/app/collab-role-plan.js +504 -0
  55. package/dist/app/collab-role-repair.d.ts +109 -0
  56. package/dist/app/collab-role-repair.js +821 -0
  57. package/dist/app/collab-rollover.d.ts +263 -0
  58. package/dist/app/collab-rollover.js +1112 -0
  59. package/dist/app/collab-route.d.ts +64 -0
  60. package/dist/app/collab-route.js +240 -0
  61. package/dist/app/collab-session-transition.d.ts +221 -0
  62. package/dist/app/collab-session-transition.js +3334 -0
  63. package/dist/app/collab-state.d.ts +7 -0
  64. package/dist/app/collab-state.js +162 -0
  65. package/dist/app/collab-task-store.d.ts +22 -0
  66. package/dist/app/collab-task-store.js +204 -0
  67. package/dist/app/collab-work-execution.d.ts +127 -0
  68. package/dist/app/collab-work-execution.js +1027 -0
  69. package/dist/app/collab-work-plan.d.ts +87 -0
  70. package/dist/app/collab-work-plan.js +437 -0
  71. package/dist/app/collaboration.d.ts +8 -2
  72. package/dist/app/collaboration.js +101 -12
  73. package/dist/app/doctor.js +108 -5
  74. package/dist/app/host-mcp.js +34 -8
  75. package/dist/app/host-probe.js +4 -4
  76. package/dist/app/init.d.ts +58 -4
  77. package/dist/app/init.js +768 -155
  78. package/dist/app/managed-pi-bootstrap-admission.d.ts +14 -0
  79. package/dist/app/managed-pi-bootstrap-admission.js +104 -0
  80. package/dist/app/managed-pi-bootstrap-refresh.d.ts +10 -0
  81. package/dist/app/managed-pi-bootstrap-refresh.js +78 -0
  82. package/dist/app/managed-pi-delivery.d.ts +8 -0
  83. package/dist/app/managed-pi-delivery.js +110 -0
  84. package/dist/app/managed-pi-handoff-receiver.d.ts +15 -0
  85. package/dist/app/managed-pi-handoff-receiver.js +263 -0
  86. package/dist/app/managed-pi-handoff-reference.d.ts +3 -0
  87. package/dist/app/managed-pi-handoff-reference.js +60 -0
  88. package/dist/app/managed-pi-herdr.d.ts +21 -0
  89. package/dist/app/managed-pi-herdr.js +185 -0
  90. package/dist/app/managed-pi-initial-admission.d.ts +28 -0
  91. package/dist/app/managed-pi-initial-admission.js +416 -0
  92. package/dist/app/managed-pi-initial-launch.d.ts +5 -0
  93. package/dist/app/managed-pi-initial-launch.js +61 -0
  94. package/dist/app/managed-pi-native-observation.d.ts +36 -0
  95. package/dist/app/managed-pi-native-observation.js +191 -0
  96. package/dist/app/managed-pi-readiness.d.ts +29 -0
  97. package/dist/app/managed-pi-readiness.js +288 -0
  98. package/dist/app/managed-pi-repair-stop.d.ts +21 -0
  99. package/dist/app/managed-pi-repair-stop.js +371 -0
  100. package/dist/app/managed-pi-resume-admission.d.ts +32 -0
  101. package/dist/app/managed-pi-resume-admission.js +618 -0
  102. package/dist/app/managed-pi-retirement.d.ts +28 -0
  103. package/dist/app/managed-pi-retirement.js +112 -0
  104. package/dist/app/managed-pi-sdk-control.d.ts +7 -0
  105. package/dist/app/managed-pi-sdk-control.js +169 -0
  106. package/dist/app/managed-pi-sdk-runtime.d.ts +3 -0
  107. package/dist/app/managed-pi-sdk-runtime.js +483 -0
  108. package/dist/app/managed-pi-source-admission.d.ts +14 -0
  109. package/dist/app/managed-pi-source-admission.js +323 -0
  110. package/dist/app/managed-pi-transition-host.d.ts +36 -0
  111. package/dist/app/managed-pi-transition-host.js +292 -0
  112. package/dist/app/managed-pi.d.ts +54 -0
  113. package/dist/app/managed-pi.js +248 -0
  114. package/dist/app/shell-readiness.d.ts +66 -0
  115. package/dist/app/shell-readiness.js +368 -0
  116. package/dist/app/task-pin.d.ts +2 -23
  117. package/dist/app/task-pin.js +2 -113
  118. package/dist/cli/commands/collaboration-binding.d.ts +13 -0
  119. package/dist/cli/commands/collaboration-binding.js +118 -0
  120. package/dist/cli/commands/collaboration-bootstrap.d.ts +10 -0
  121. package/dist/cli/commands/collaboration-bootstrap.js +84 -0
  122. package/dist/cli/commands/collaboration-capabilities.d.ts +13 -0
  123. package/dist/cli/commands/collaboration-capabilities.js +127 -0
  124. package/dist/cli/commands/collaboration-handoff.d.ts +13 -0
  125. package/dist/cli/commands/collaboration-handoff.js +102 -0
  126. package/dist/cli/commands/collaboration-message.d.ts +17 -0
  127. package/dist/cli/commands/collaboration-message.js +177 -0
  128. package/dist/cli/commands/collaboration-plan.d.ts +8 -0
  129. package/dist/cli/commands/collaboration-plan.js +108 -0
  130. package/dist/cli/commands/collaboration-preflight.d.ts +10 -0
  131. package/dist/cli/commands/collaboration-preflight.js +167 -0
  132. package/dist/cli/commands/collaboration-recovery-run.d.ts +46 -0
  133. package/dist/cli/commands/collaboration-recovery-run.js +224 -0
  134. package/dist/cli/commands/collaboration-recovery.d.ts +11 -0
  135. package/dist/cli/commands/collaboration-recovery.js +104 -0
  136. package/dist/cli/commands/collaboration-resources.d.ts +11 -0
  137. package/dist/cli/commands/collaboration-resources.js +96 -0
  138. package/dist/cli/commands/collaboration-role-plan.d.ts +9 -0
  139. package/dist/cli/commands/collaboration-role-plan.js +69 -0
  140. package/dist/cli/commands/collaboration-role-run.d.ts +11 -0
  141. package/dist/cli/commands/collaboration-role-run.js +128 -0
  142. package/dist/cli/commands/collaboration-rollover.d.ts +10 -0
  143. package/dist/cli/commands/collaboration-rollover.js +103 -0
  144. package/dist/cli/commands/collaboration-state.d.ts +10 -0
  145. package/dist/cli/commands/collaboration-state.js +96 -0
  146. package/dist/cli/commands/collaboration-transition.d.ts +10 -0
  147. package/dist/cli/commands/collaboration-transition.js +75 -0
  148. package/dist/cli/commands/collaboration-work-run.d.ts +34 -0
  149. package/dist/cli/commands/collaboration-work-run.js +178 -0
  150. package/dist/cli/commands/collaboration.d.ts +4 -0
  151. package/dist/cli/commands/collaboration.js +39 -4
  152. package/dist/cli/commands/continuity.js +2 -6
  153. package/dist/cli/commands/docs.d.ts +2 -0
  154. package/dist/cli/commands/docs.js +89 -15
  155. package/dist/cli/commands/host.d.ts +7 -1
  156. package/dist/cli/commands/host.js +122 -7
  157. package/dist/cli/commands/init.d.ts +20 -3
  158. package/dist/cli/commands/init.js +897 -232
  159. package/dist/cli/commands/mcp.d.ts +1 -0
  160. package/dist/cli/commands/mcp.js +11 -5
  161. package/dist/cli/commands/repair.d.ts +12 -0
  162. package/dist/cli/commands/repair.js +41 -0
  163. package/dist/cli/commands/runtime.d.ts +1 -1
  164. package/dist/cli/commands/runtime.js +139 -38
  165. package/dist/cli/commands/session.d.ts +7 -0
  166. package/dist/cli/commands/session.js +82 -0
  167. package/dist/cli/commands/task.js +19 -5
  168. package/dist/cli/run.js +866 -24
  169. package/dist/code/identity.d.ts +7 -0
  170. package/dist/code/identity.js +7 -3
  171. package/dist/code/registration.js +7 -0
  172. package/dist/code/service.d.ts +9 -0
  173. package/dist/code/service.js +16 -3
  174. package/dist/code/text.js +19 -7
  175. package/dist/collab/admission.d.ts +91 -66
  176. package/dist/collab/admission.js +21 -6
  177. package/dist/collab/canonical.d.ts +1 -1
  178. package/dist/collab/canonical.js +44 -3
  179. package/dist/collab/envelope.d.ts +2 -2
  180. package/dist/collab/envelope.js +12 -12
  181. package/dist/collab/first-work.d.ts +3 -0
  182. package/dist/collab/first-work.js +15 -0
  183. package/dist/collab/handoff.d.ts +16 -0
  184. package/dist/collab/handoff.js +39 -5
  185. package/dist/collab/index.d.ts +97 -1
  186. package/dist/collab/index.js +9 -1
  187. package/dist/collab/messages.js +126 -3
  188. package/dist/collab/persisted-messages.d.ts +123 -0
  189. package/dist/collab/persisted-messages.js +496 -0
  190. package/dist/collab/preflight.d.ts +1 -1
  191. package/dist/collab/resources.d.ts +13 -3
  192. package/dist/collab/resources.js +37 -6
  193. package/dist/collab/rollover.d.ts +311 -0
  194. package/dist/collab/rollover.js +1024 -0
  195. package/dist/collab/store.d.ts +1 -0
  196. package/dist/collab/store.js +1 -4
  197. package/dist/collab/types.d.ts +2 -354
  198. package/dist/collab/validation.d.ts +2 -10
  199. package/dist/collab/validation.js +2 -303
  200. package/dist/collab/work-plan.d.ts +105 -0
  201. package/dist/collab/work-plan.js +843 -0
  202. package/dist/continuity/context.d.ts +11 -2
  203. package/dist/continuity/context.js +100 -13
  204. package/dist/continuity/handoff-bundle.d.ts +296 -0
  205. package/dist/continuity/handoff-bundle.js +477 -0
  206. package/dist/continuity/index.d.ts +2 -0
  207. package/dist/continuity/index.js +1 -0
  208. package/dist/continuity/paths.js +10 -2
  209. package/dist/continuity/service.js +91 -15
  210. package/dist/continuity/task-pin.d.ts +24 -0
  211. package/dist/continuity/task-pin.js +590 -0
  212. package/dist/doctor.d.ts +1 -0
  213. package/dist/doctor.js +6 -0
  214. package/dist/experimental/index.d.ts +13 -0
  215. package/dist/experimental/index.js +25 -0
  216. package/dist/experimental/pi.d.ts +4 -0
  217. package/dist/experimental/pi.js +12 -0
  218. package/dist/hosts/claude/native.js +1 -1
  219. package/dist/hosts/codex/native.js +1 -1
  220. package/dist/hosts/codex/protocol.js +1 -1
  221. package/dist/hosts/integration/bootstrap-config.d.ts +58 -0
  222. package/dist/hosts/integration/bootstrap-config.js +254 -0
  223. package/dist/hosts/integration/bundle-export.d.ts +44 -0
  224. package/dist/hosts/integration/bundle-export.js +366 -3
  225. package/dist/hosts/integration/bundle.js +3 -0
  226. package/dist/hosts/integration/hook.js +36 -9
  227. package/dist/hosts/integration/pappra-bootstrap-extension.mjs +80 -0
  228. package/dist/hosts/integration/pappra-extension-runtime.mjs +59 -24631
  229. package/dist/hosts/integration/pappra-hook.mjs +61 -24749
  230. package/dist/hosts/integration/pappra-recovery-extension.mjs +259 -0
  231. package/dist/hosts/integration/pappra-session-transition-extension.mjs +276 -0
  232. package/dist/hosts/integration/pi-bootstrap-extension.d.ts +36 -0
  233. package/dist/hosts/integration/pi-bootstrap-extension.js +101 -0
  234. package/dist/hosts/integration/pi-bootstrap-guard.d.ts +125 -0
  235. package/dist/hosts/integration/pi-bootstrap-guard.js +438 -0
  236. package/dist/hosts/integration/pi-bootstrap-runtime.d.ts +63 -0
  237. package/dist/hosts/integration/pi-bootstrap-runtime.js +223 -0
  238. package/dist/hosts/integration/pi-native-events.d.ts +112 -0
  239. package/dist/hosts/integration/pi-native-events.js +348 -0
  240. package/dist/hosts/integration/pi-rollover-extension.d.ts +166 -0
  241. package/dist/hosts/integration/pi-rollover-extension.js +431 -0
  242. package/dist/hosts/integration/recovery-config.d.ts +48 -0
  243. package/dist/hosts/integration/recovery-config.js +117 -0
  244. package/dist/hosts/integration/service.d.ts +6 -1
  245. package/dist/hosts/integration/service.js +485 -35
  246. package/dist/hosts/integration/support.d.ts +7 -0
  247. package/dist/hosts/integration/support.js +9 -1
  248. package/dist/hosts/integration/templates.d.ts +3 -0
  249. package/dist/hosts/integration/templates.js +26 -3
  250. package/dist/hosts/pi/managed-host-identity.d.ts +2 -0
  251. package/dist/hosts/pi/managed-host-identity.js +40 -0
  252. package/dist/hosts/pi/managed-provider-diagnostics.d.ts +6 -0
  253. package/dist/hosts/pi/managed-provider-diagnostics.js +184 -0
  254. package/dist/hosts/pi/managed-sdk-session.d.ts +335 -0
  255. package/dist/hosts/pi/managed-sdk-session.js +1639 -0
  256. package/dist/hosts/pi/managed-session-extension.d.ts +20 -0
  257. package/dist/hosts/pi/managed-session-extension.js +84 -0
  258. package/dist/hosts/pi/managed-session.d.ts +177 -0
  259. package/dist/hosts/pi/managed-session.js +1557 -0
  260. package/dist/hosts/pi/protocol.js +1 -1
  261. package/dist/hosts/pi/query-result.js +1 -1
  262. package/dist/hosts/pi/resume-capability.d.ts +41 -0
  263. package/dist/hosts/pi/resume-capability.js +33 -0
  264. package/dist/hosts/pi/rpc.d.ts +182 -134
  265. package/dist/hosts/pi/rpc.js +230 -37
  266. package/dist/hosts/pilot.d.ts +97 -74
  267. package/dist/hosts/pilot.js +5 -1
  268. package/dist/hosts/version.d.ts +3 -0
  269. package/dist/hosts/version.js +18 -0
  270. package/dist/index.d.ts +0 -1
  271. package/dist/index.js +0 -1
  272. package/dist/infra/bounded-file.d.ts +19 -0
  273. package/dist/infra/bounded-file.js +66 -0
  274. package/dist/infra/fs.js +10 -2
  275. package/dist/infra/git.d.ts +29 -0
  276. package/dist/infra/git.js +45 -9
  277. package/dist/infra/json-property.d.ts +2 -0
  278. package/dist/infra/json-property.js +69 -0
  279. package/dist/infra/json.d.ts +4 -0
  280. package/dist/infra/json.js +24 -0
  281. package/dist/infra/owned-process-group.js +1 -1
  282. package/dist/infra/private-lock.d.ts +16 -0
  283. package/dist/infra/private-lock.js +148 -0
  284. package/dist/infra/private-state.d.ts +7 -0
  285. package/dist/infra/private-state.js +146 -0
  286. package/dist/infra/process-identity.d.ts +12 -0
  287. package/dist/infra/process-identity.js +142 -0
  288. package/dist/infra/validation.d.ts +5 -0
  289. package/dist/infra/validation.js +15 -0
  290. package/dist/init.d.ts +1 -0
  291. package/dist/init.js +6 -0
  292. package/dist/install/apply.d.ts +9 -1
  293. package/dist/install/apply.js +176 -12
  294. package/dist/install/dependencies.d.ts +38 -0
  295. package/dist/install/dependencies.js +282 -0
  296. package/dist/install/ownership.js +30 -1
  297. package/dist/install/references.d.ts +31 -0
  298. package/dist/install/references.js +208 -0
  299. package/dist/install/repair.d.ts +37 -0
  300. package/dist/install/repair.js +798 -0
  301. package/dist/install/reset-local.d.ts +16 -0
  302. package/dist/install/reset-local.js +304 -0
  303. package/dist/install/rollback.d.ts +3 -0
  304. package/dist/install/rollback.js +9 -3
  305. package/dist/install/runtime.d.ts +10 -6
  306. package/dist/install/runtime.js +299 -59
  307. package/dist/install/source-fingerprint.d.ts +2 -0
  308. package/dist/install/source-fingerprint.js +103 -0
  309. package/dist/knowledge/catalog.d.ts +1 -0
  310. package/dist/knowledge/catalog.js +143 -10
  311. package/dist/knowledge/journal.js +17 -7
  312. package/dist/knowledge/paths.js +2 -1
  313. package/dist/knowledge/refs.js +4 -0
  314. package/dist/knowledge/register-batch.d.ts +4 -0
  315. package/dist/knowledge/register-batch.js +225 -0
  316. package/dist/knowledge/relocate.d.ts +5 -0
  317. package/dist/knowledge/relocate.js +92 -0
  318. package/dist/knowledge/scan.js +103 -47
  319. package/dist/knowledge/service.d.ts +3 -0
  320. package/dist/knowledge/service.js +33 -1
  321. package/dist/knowledge/write.d.ts +4 -1
  322. package/dist/knowledge/write.js +1 -1
  323. package/dist/mcp/server.d.ts +4 -2
  324. package/dist/mcp/server.js +87 -136
  325. package/dist/schemas/collaboration-state-validation.d.ts +6 -0
  326. package/dist/schemas/collaboration-state-validation.js +342 -0
  327. package/dist/schemas/collaboration-state.d.ts +436 -0
  328. package/dist/schemas/collaboration-state.js +1 -0
  329. package/dist/schemas/collaboration.d.ts +335 -0
  330. package/dist/schemas/collaboration.js +272 -0
  331. package/dist/schemas/continuity.d.ts +8 -0
  332. package/dist/schemas/continuity.js +13 -3
  333. package/dist/schemas/doctor.d.ts +1 -0
  334. package/dist/schemas/doctor.js +1 -0
  335. package/dist/schemas/document.d.ts +61 -0
  336. package/dist/schemas/document.js +9 -0
  337. package/dist/schemas/errors.d.ts +1 -0
  338. package/dist/schemas/errors.js +1 -0
  339. package/dist/schemas/host.d.ts +24 -0
  340. package/dist/schemas/host.js +19 -0
  341. package/dist/schemas/install.d.ts +8 -2
  342. package/dist/schemas/install.js +11 -1
  343. package/dist/schemas/managed-pi-execution.d.ts +16 -0
  344. package/dist/schemas/managed-pi-execution.js +2 -0
  345. package/dist/schemas/outcome.d.ts +9 -5
  346. package/dist/workspace/config-file.js +1 -3
  347. package/dist/workspace/documents.js +12 -2
  348. package/dist/workspace/repositories.d.ts +7 -0
  349. package/dist/workspace/repositories.js +14 -5
  350. package/package.json +35 -35
  351. package/skills/pappra/SKILL.md +28 -7
  352. package/skills/pappra/references/collaboration.md +633 -0
  353. package/skills/pappra/references/environment.md +360 -0
  354. package/skills/pappra/references/hosts.md +20 -0
  355. package/skills/pappra/references/operations.md +36 -5
  356. package/dist/app/collab-from.d.ts +0 -35
  357. package/dist/app/collab-from.js +0 -84
package/README.md CHANGED
@@ -20,23 +20,32 @@ curl -fsSL https://raw.githubusercontent.com/phyzess/pappra/main/examples/minima
20
20
  npx @phyzess/pappra@beta init --config ./minimal-choices.json --json
21
21
 
22
22
  # Apply the same choices. Apply also installs and binds a durable runtime copy,
23
- # so this converges with exit code 0; add --no-runtime to leave it pending.
23
+ # so this converges with exit code 0; add --no-runtime to skip that work and
24
+ # leave a still-required runtime action pending.
24
25
  npx @phyzess/pappra@beta init --config ./minimal-choices.json --apply --json
25
26
  npx @phyzess/pappra@beta doctor --json
26
27
  ```
27
28
 
28
29
  `examples/minimal-choices.json` is complete for a host-free, no-graph, single-directory workspace. The example intentionally has no repositories or optional hosts.
29
30
 
30
- For a non-interactive derived setup, `npx @phyzess/pappra@beta init --yes --apply --json` derives repositories, knowledge sources, code engine, validation commands, excludes and hosts from discovery. `--print-choices` prints that `pappra/init-choices/1` document and writes nothing, and `init --json` without selections returns the discovery candidates plus the suggested document. JSON mode never prompts; only a TTY without selections opens the wizard.
31
+ For a non-interactive derived setup, `npx @phyzess/pappra@beta init --yes --apply --json` derives repositories, knowledge sources, code engine, validation commands, excludes and hosts from discovery; with an existing workspace plus `--reconfigure` it keeps the current represented selections instead of deriving new ones, and `--print-choices --reconfigure` prints those current choices. `--print-choices` normally prints the derived `pappra/init-choices/1` document and writes nothing, and `init --json` without selections returns the discovery candidates plus the suggested document. JSON mode never prompts.
31
32
 
32
33
  Development from a checkout works the same way: `pnpm install --frozen-lockfile`, `pnpm build`, then invoke `dist/cli/main.js` by absolute path from the target workspace.
33
34
 
34
- `init --apply` also installs a durable runtime copy of the executing package under the
35
- Pappra data directory and binds it in `machine.json`, so an npx/dlx bootstrap survives
36
- cache eviction and the command converges with exit code `0`. Pass `--no-runtime` to leave
37
- that action pending instead; the result is then `ok:true` with
38
- `status:"external-actions-pending"` and a nonzero exit, which is a partial configuration
39
- write rather than a claim that a runtime exists.
35
+ `init` never writes during planning. `--apply` writes the planned files through a managed
36
+ journal. By default it then verifies an existing runtime for the workspace's recorded runtime
37
+ version and reuses it when the manifest, package contents, executable and smoke check all pass;
38
+ otherwise it packs and installs the current package under the Pappra data directory and binds
39
+ that runtime in `machine.json`. So an npx/dlx bootstrap survives cache eviction. If the current
40
+ package version differs from the workspace target, a previously installed verified target
41
+ runtime may still be reused; when none is reusable the configuration is applied and runtime
42
+ setup fails afterwards with a nonzero exit. Pass `--no-runtime` to suppress runtime verification,
43
+ installation and binding for that invocation. When a runtime action is still required afterwards,
44
+ the configuration is applied, that action stays pending, and the result is `ok:true` with
45
+ `status:"external-actions-pending"` and exit `0` for the requested configuration-only work.
46
+ A workspace that already has a bound runtime for its target and needs no file changes can instead
47
+ report `ok:true`, apply status `no-changes` and exit `0`; `initComplete` then stays `false`,
48
+ because that invocation verified no runtime.
40
49
 
41
50
  For a new workspace or a new machine, `pappra onboard --dry-run --json` shows the plan and
42
51
  the host version matrix; `pappra onboard --yes --apply-host --json` applies config, runtime
@@ -51,12 +60,101 @@ npx @phyzess/pappra@beta runtime status --json
51
60
  npx @phyzess/pappra@beta runtime verify --json
52
61
  ```
53
62
 
54
- A workspace that already has a valid `.pappra/workspace.json` is never rewritten silently.
55
- `init --yes --reconfigure --apply` rebuilds it from discovery (for example to move the
56
- recorded runtime version to the running package), backing the previous file up under
57
- `.pappra/local/backups`. Apply also reports advisory `nextActions`: `pappra code prepare`
58
- for a selected code engine and `pappra docs scan --apply` to register documents from the
59
- configured knowledge sources.
63
+ Runtime content hashes now use UTF-8 byte ordering, independent of system locale.
64
+ Beta.15 uses `pappra/runtime-manifest/2` with an explicit digest scheme and does not
65
+ migrate old beta state. Unsupported formats are reported as incompatible, separately
66
+ from corrupted content. Use the current package with `init --reconfigure --apply` to
67
+ initialize its runtime; existing state is preserved until explicitly removed.
68
+ Verification never rewrites a manifest to adopt an unexpected digest.
69
+ Runtime removal refuses unknown cross-workspace references;
70
+ `--force` is an explicit override after checking other workspaces.
71
+
72
+ Interrupted installations can be inspected and recovered explicitly:
73
+
74
+ ```sh
75
+ pappra repair --root /path/to/workspace --json
76
+ pappra repair --root /path/to/workspace --apply
77
+ pappra repair --runtime-version 0.1.0 --json
78
+ pappra repair --runtime-version 0.1.0 --apply
79
+ ```
80
+
81
+ `repair` finds the nearest workspace from a subdirectory and previews incomplete journals plus
82
+ install, knowledge and checkpoint writer locks. Add `--install-id <uuid>`
83
+ to select one incomplete journal. `--apply` reclaims a lock only when its recorded owner is
84
+ provably dead, rolls back files with verified ownership, and restores journaled reconfiguration
85
+ backups. For runtimes it removes only journal-owned staging, or finalizes an already published
86
+ copy whose manifest and contents still match, without executing the runtime. Live or unknown
87
+ owners, modified files, invalid journals and unproven backup paths are preserved and reported.
88
+ Reconfiguration holds the same workspace lock and journal through replacements and creations.
89
+ Files created before their inode reached the journal remain in place, with an explicit
90
+ preservation audit; their ownership is not adopted. Lock publication is atomic, so a new
91
+ writer never exposes an empty named owner record. `doctor` reports dead or unknown writers
92
+ and points to the same repair surface.
93
+
94
+ For copied or moved beta workspaces, stop every affected writer before explicitly starting
95
+ fresh local state; this preserves the old bytes instead of migrating machine bindings:
96
+
97
+ ```sh
98
+ pappra repair --reset-local --json # read-only plan
99
+ pappra repair --reset-local --all-writers-stopped --apply
100
+ pappra init --yes --apply
101
+ ```
102
+
103
+ The old tree remains under ignored `.pappra/local-archive/<id>`. Reset has its own recoverable
104
+ journal and refuses verified live owners. The stopped-writers flag is an operator assertion
105
+ for unknown/imported ownership, not process stop proof. For a single malformed or empty lock,
106
+ `repair --quarantine-unowned-locks --apply` provides the same explicit stop-all-writers
107
+ precondition and preserves the lock plus a receipt in private quarantine. Never use either
108
+ escape while a writer is alive or paused.
109
+
110
+ Every first private-state write creates `.pappra/local/.gitignore` with a final `*`
111
+ rule, including writes performed without init. Checkpoint payloads retain tracked
112
+ diffs, but untracked files contribute only their path, object type and content digest;
113
+ their contents and symlink target text are not copied into the checkpoint.
114
+
115
+ A workspace that already has a valid `.pappra/workspace.json` is never rewritten silently: a
116
+ plain `init` reuses it and only plans missing local state. `--reconfigure` is the explicit opt-in
117
+ that re-derives `workspace.json` from the current selections, and it preserves the workspace
118
+ identity, `extensions`, `continuity`, custom validation entries with their original checkout
119
+ binding, and existing local machine settings; the previous file is backed up under
120
+ `.pappra/local/backups`. `--yes --reconfigure` therefore keeps the represented selections instead
121
+ of re-deriving them from discovery, while `--config <file> --reconfigure` applies explicitly
122
+ supplied edits.
123
+
124
+ Knowledge sources and the document destination are different settings. `knowledge.sources` lists
125
+ existing rules and documents that stay in place and are only registered later by
126
+ `pappra docs scan --apply`; `knowledge.newDocuments` is merely the destination for future
127
+ authored documents and is not created by `init`. Apply also reports advisory `nextActions`:
128
+ `pappra code prepare` for a selected code engine and `pappra docs scan --apply` to register
129
+ documents from the configured knowledge sources.
130
+
131
+ ### Interactive init
132
+
133
+ A TTY opens the full wizard only when selections are actually needed: a plain `init` in a
134
+ workspace that already has a valid configuration reuses it and asks only for missing local
135
+ state, and `--reconfigure` is what opens the editor. The workspace name, new-document
136
+ destination and excludes are editable text fields seeded with the current or derived value, so
137
+ the suggested value is visible and can be changed before submitting; an invalid entry is
138
+ reported at that field and re-asked. Repository and knowledge sections pre-select the current
139
+ choices and offer **Add existing repository…** and **Add existing knowledge file or folder…**.
140
+ That action inspects only the workspace-relative path you type: it checks portability,
141
+ canonical containment, workspace exclusions, nested-workspace boundaries, unsafe symlinks and,
142
+ for repositories, that the path is the exact Git checkout root. It never scans ancestors or the
143
+ home directory, never reads document bodies, and empty knowledge folders are valid sources.
144
+ Advanced preferences are opt-in (`Keep current advanced settings` is the default), sections after
145
+ the first offer `Back` alongside `Review selections`, the review screen can reopen one section, and
146
+ `Cancel` (also Ctrl-C) discards the draft before anything is written. Graph/symbols/preparation
147
+ choices, validation candidates and host declarations are recorded preferences only: `init` does not
148
+ install, index, execute or wire them.
149
+
150
+ A TTY run that collected selections without `--apply` prints the plan and then asks one
151
+ confirmation when configuration writes are planned; declining exits `130` with no files written.
152
+ `--apply` never prompts, `--config` without `--apply` stays a preview even on a TTY, and an empty
153
+ read-only plan performs no runtime work and asks nothing. `--print-choices` prints the
154
+ `pappra/init-choices/1` document and writes nothing, `--config` reads that document,
155
+ `--yes`/`--no-interactive` derive selections non-interactively, and `--json` never prompts.
156
+ Exit `0` means the requested work completed. `--no-runtime` deliberately defers runtime work
157
+ and keeps `initComplete:false`; a failure in a requested runtime step returns nonzero.
60
158
 
61
159
  Optional examples have prerequisites rather than generated files: code-graph and
62
160
  host commands require the selected external CLI/support, and collaboration
@@ -64,6 +162,22 @@ requires an explicit controller. `--controller pi-rpc` is the host-directs/Pi-ex
64
162
  path, verified end to end against Pi 1.3.0; see [Pi RPC collaboration](docs/pi-rpc.md).
65
163
  They are not needed for the core workflow above.
66
164
 
165
+ For a fresh controller-owned visible Pi TUI, use `pappra session plan` then
166
+ `pappra session start --config <absolute-file>`. The controller preserves normal
167
+ Pi configuration, selects an explicit OpenRouter model, journals terminal input
168
+ and exposes a private status/fence/stop endpoint. See
169
+ [managed Pi sessions](docs/managed-pi-session.md). Opt-in SDK mode pins Pi 1.4.0
170
+ and observes native queues and dialogs within its owned runtime. External writers
171
+ and unowned descendants remain outside that proof. [Controlled resume](docs/managed-pi-resume.md)
172
+ checks process death and current task authority before reopening an idle session;
173
+ [provider diagnostics](docs/managed-provider-diagnostics.md) retain redacted transport details.
174
+ Threshold-driven checkpoint
175
+ and bundle capture are available through [automatic handoff](docs/automatic-handoff.md);
176
+ ownership transfer still requires the existing supported transition contract.
177
+ [Role plans](docs/collaboration-role-plan.md) support an optional planner before
178
+ independent writers and a final reviewer; [event orchestration](docs/collaboration-role-orchestration.md)
179
+ dispatches ready assignments and aggregates authoritative results.
180
+
67
181
  ## What it manages
68
182
 
69
183
  - **Workspace configuration:** `.pappra/workspace.json` and checkout-local `.pappra/local/machine.json`.
@@ -95,7 +209,12 @@ The check runs the source policy, type checks, formatting, deterministic tests a
95
209
 
96
210
  ## Status and limits
97
211
 
98
- Pappra is development software (`0.1.0-beta.13`) published as `@phyzess/pappra` under the `beta` dist-tag. Releases are published from GitHub Actions with npm trusted publishing (OIDC), so no npm token is stored in this repository. Pin either the moving `beta` tag or an exact version such as `@phyzess/pappra@0.1.0-beta.13`, because pre-release versions are never republished.
212
+ Pappra is development software (`0.1.0-beta.14`) published as `@phyzess/pappra` under the `beta` dist-tag. Releases are published from GitHub Actions with npm trusted publishing (OIDC), so no npm token is stored in this repository. Pin either the moving `beta` tag or an exact version such as `@phyzess/pappra@0.1.0-beta.14`, because pre-release versions are never republished.
213
+
214
+ The deterministic runner removes inherited `PAPPRA_*` controls and isolates global/system
215
+ Git configuration. Test cases inject required Pappra variables explicitly. Native provider
216
+ acceptance is run separately against its selected test file, rather than enabled by ambient
217
+ opt-in flags during `pnpm check`.
99
218
 
100
219
  The deterministic suite covers synthetic workspaces, fixtures and local process boundaries. It does not establish real-model behavior, native host callability on every platform, CodeGraph completeness, Windows/Linux parity or production performance. A host adapter version pin is an observed support claim, not proof that a particular native installation will load or run correctly.
101
220
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: pappra
3
- description: Use Pappra workspace knowledge, checkpoint/resume, and selected-repository code intelligence from any supported coding agent. Use when a task needs durable handoff context, workspace documents, or bounded code navigation.
3
+ description: Use Pappra workspace knowledge, checkpoint/resume, selected-repository code intelligence, and task-scoped cross-harness collaboration from any supported coding agent. Use when a task needs durable handoff context, workspace documents, bounded code navigation, or a visible/direct multi-agent collaboration workflow.
4
4
  ---
5
5
 
6
6
  # Pappra
@@ -20,15 +20,28 @@ index, or new writer.
20
20
  the workspace selected by the current root. Never infer a workspace from an
21
21
  unrelated session. `pappra docs scan --apply` registers discovered documents;
22
22
  `pappra runtime install --apply` keeps a durable copy of this package.
23
- 5. For a new bounded collaboration request, build an explicit
24
- `pappra/collaboration-goal/1` from the user's objective and named choices,
25
- run `pappra collab prepare --goal <file> --domain-root <dir>`, admit against a fresh capability
26
- card, then use `pappra collab run` with the reviewed controller. `--controller
27
- pi-rpc` launches a real owned Pi session and is verified for Pi 1.3.0. Never
28
- turn prose into identity, approval, or capability claims.
23
+ 5. For task-scoped collaboration, read `references/environment.md` first to
24
+ choose direct versus visible Herdr operation, bootstrap or reuse the
25
+ receiving instance, and bind its routing identity. Then read
26
+ `references/collaboration.md` and build the shared strict
27
+ `pappra/collaboration-goal/1` from explicit choices. The installed CLI accepts
28
+ `pappra collab prepare --goal <file> --domain-root <dir>`; it has no preview
29
+ mode, so it mutates task state, claims resources and registers the initial
30
+ ASSIGN once authorized. MCP `collab_prepare` accepts `{ domainRoot, goal }`
31
+ and rejects the retired flat objective form. Neither prepares a capability
32
+ card; derive and preflight actual runtime evidence separately, and notify the
33
+ already-registered ASSIGN rather than sending a duplicate. Visible peers are
34
+ the default collaboration channel; the owned Pi `pi-rpc` run remains a
35
+ separate explicit option, and fixtures are explicit only. Never turn prose
36
+ into identity, approval, or capability claims.
29
37
 
30
38
  ## One-request collaboration
31
39
 
40
+ Visible collaboration uses `references/environment.md` plus the persisted
41
+ message/notify loop in `references/collaboration.md`. The owned `collab run`
42
+ flow described here is the separate Pi RPC option, not a substitute for a
43
+ visible participant.
44
+
32
45
  `pappra collab prepare --goal <file> --domain-root <dir>` requires an explicit
33
46
  shared domain. It validates the canonical domain/tasks/task/private namespace
34
47
  before writing any task metadata and again around each write, so a task-root or
@@ -61,6 +74,14 @@ No approval is auto-answered, no cancel is inferred from an acknowledgement, and
61
74
  arbitrary PID is adopted. Do not launch a model or real user session without
62
75
  the task's explicit authorization.
63
76
 
77
+ ## Recovery and parallel work
78
+
79
+ Use `pappra collab work-run --request <abs-request.json>` for a read-only plan and add `--apply` only when the existing assignments, current capability cards, coordinator authority, resource claims and visible participant binding are ready. Work-run notifies only registered participants; it does not create sessions, merge, accept reports, or replay ambiguous delivery.
80
+
81
+ Use `pappra collab recovery-run --request <abs-request.json>` to inspect one guarded recovery action; add `--apply` only with exact current session/cwd/harness/pane and a digest-pinned task-local binding. Recovery is a bounded single wake, not generic outage recovery: there is no reconnect trigger, hidden worker, approval automation, or replay after an unknown effect.
82
+
83
+ For an explicitly selected Pi package, `pappra host bundle --host pi --out <new-private-dir> --recovery-config <abs-private-config.json>` exports the recovery extension and its private sibling config. Add `--transition-extension` to export the separate `/collab-transition` command extension. Exports do not install, trust, enable, load, launch, or transfer anything; review and install packages explicitly. Native quiescence and interactive Pi session takeover remain unsupported, and task retirement is not native session archive.
84
+
64
85
  ## Boundaries
65
86
 
66
87
  - Hooks are local and bounded. They do not read transcripts, run commands,