@phyzess/pappra 0.0.0-stage → 0.1.0-beta.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 (227) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +99 -2
  3. package/THIRD_PARTY_NOTICES.md +16 -0
  4. package/assets/integrations/skills/pappra/SKILL.md +71 -0
  5. package/assets/integrations/skills/pappra/references/hosts.md +40 -0
  6. package/assets/integrations/skills/pappra/references/lifecycle.md +41 -0
  7. package/assets/integrations/skills/pappra/references/operations.md +27 -0
  8. package/assets/manifest.json +4 -0
  9. package/dist/app/collaboration.d.ts +170 -0
  10. package/dist/app/collaboration.js +1643 -0
  11. package/dist/app/doctor.d.ts +9 -0
  12. package/dist/app/doctor.js +1030 -0
  13. package/dist/app/init.d.ts +171 -0
  14. package/dist/app/init.js +1442 -0
  15. package/dist/cli/commands/code.d.ts +16 -0
  16. package/dist/cli/commands/code.js +127 -0
  17. package/dist/cli/commands/collaboration.d.ts +13 -0
  18. package/dist/cli/commands/collaboration.js +186 -0
  19. package/dist/cli/commands/continuity.d.ts +29 -0
  20. package/dist/cli/commands/continuity.js +133 -0
  21. package/dist/cli/commands/docs.d.ts +12 -0
  22. package/dist/cli/commands/docs.js +234 -0
  23. package/dist/cli/commands/doctor.d.ts +14 -0
  24. package/dist/cli/commands/doctor.js +57 -0
  25. package/dist/cli/commands/host.d.ts +17 -0
  26. package/dist/cli/commands/host.js +199 -0
  27. package/dist/cli/commands/init.d.ts +59 -0
  28. package/dist/cli/commands/init.js +845 -0
  29. package/dist/cli/commands/runtime.d.ts +14 -0
  30. package/dist/cli/commands/runtime.js +263 -0
  31. package/dist/cli/main.d.ts +2 -0
  32. package/dist/cli/main.js +10 -0
  33. package/dist/cli/output.d.ts +4 -0
  34. package/dist/cli/output.js +1 -0
  35. package/dist/cli/run.d.ts +2 -0
  36. package/dist/cli/run.js +749 -0
  37. package/dist/code/budget.d.ts +14 -0
  38. package/dist/code/budget.js +39 -0
  39. package/dist/code/exec.d.ts +23 -0
  40. package/dist/code/exec.js +133 -0
  41. package/dist/code/identity.d.ts +13 -0
  42. package/dist/code/identity.js +214 -0
  43. package/dist/code/index.d.ts +6 -0
  44. package/dist/code/index.js +3 -0
  45. package/dist/code/providers/codegraph.d.ts +59 -0
  46. package/dist/code/providers/codegraph.js +567 -0
  47. package/dist/code/registration.d.ts +9 -0
  48. package/dist/code/registration.js +293 -0
  49. package/dist/code/service.d.ts +53 -0
  50. package/dist/code/service.js +633 -0
  51. package/dist/code/text.d.ts +3 -0
  52. package/dist/code/text.js +202 -0
  53. package/dist/collab/admission.d.ts +450 -0
  54. package/dist/collab/admission.js +797 -0
  55. package/dist/collab/canonical.d.ts +26 -0
  56. package/dist/collab/canonical.js +136 -0
  57. package/dist/collab/contracts.d.ts +73 -0
  58. package/dist/collab/contracts.js +76 -0
  59. package/dist/collab/envelope.d.ts +52 -0
  60. package/dist/collab/envelope.js +241 -0
  61. package/dist/collab/fingerprint.d.ts +7 -0
  62. package/dist/collab/fingerprint.js +58 -0
  63. package/dist/collab/handoff.d.ts +350 -0
  64. package/dist/collab/handoff.js +513 -0
  65. package/dist/collab/index.d.ts +9 -0
  66. package/dist/collab/index.js +8 -0
  67. package/dist/collab/lifecycle.d.ts +449 -0
  68. package/dist/collab/lifecycle.js +534 -0
  69. package/dist/collab/messages.d.ts +148 -0
  70. package/dist/collab/messages.js +583 -0
  71. package/dist/collab/notify.d.ts +47 -0
  72. package/dist/collab/notify.js +140 -0
  73. package/dist/collab/preflight.d.ts +31 -0
  74. package/dist/collab/preflight.js +271 -0
  75. package/dist/collab/resources.d.ts +119 -0
  76. package/dist/collab/resources.js +451 -0
  77. package/dist/collab/store.d.ts +143 -0
  78. package/dist/collab/store.js +606 -0
  79. package/dist/collab/types.d.ts +354 -0
  80. package/dist/collab/types.js +1 -0
  81. package/dist/collab/validation.d.ts +10 -0
  82. package/dist/collab/validation.js +303 -0
  83. package/dist/continuity/context.d.ts +24 -0
  84. package/dist/continuity/context.js +179 -0
  85. package/dist/continuity/index.d.ts +3 -0
  86. package/dist/continuity/index.js +1 -0
  87. package/dist/continuity/paths.d.ts +37 -0
  88. package/dist/continuity/paths.js +258 -0
  89. package/dist/continuity/service.d.ts +59 -0
  90. package/dist/continuity/service.js +1258 -0
  91. package/dist/hosts/claude/native.d.ts +79 -0
  92. package/dist/hosts/claude/native.js +853 -0
  93. package/dist/hosts/codex/native.d.ts +345 -0
  94. package/dist/hosts/codex/native.js +1528 -0
  95. package/dist/hosts/codex/protocol.d.ts +51 -0
  96. package/dist/hosts/codex/protocol.js +42 -0
  97. package/dist/hosts/detect.d.ts +29 -0
  98. package/dist/hosts/detect.js +73 -0
  99. package/dist/hosts/index.d.ts +10 -0
  100. package/dist/hosts/index.js +10 -0
  101. package/dist/hosts/integration/bundle-export.d.ts +24 -0
  102. package/dist/hosts/integration/bundle-export.js +128 -0
  103. package/dist/hosts/integration/bundle.d.ts +19 -0
  104. package/dist/hosts/integration/bundle.js +99 -0
  105. package/dist/hosts/integration/hook-entry.d.ts +1 -0
  106. package/dist/hosts/integration/hook-entry.js +68 -0
  107. package/dist/hosts/integration/hook.d.ts +32 -0
  108. package/dist/hosts/integration/hook.js +781 -0
  109. package/dist/hosts/integration/pappra-extension-runtime.mjs +24610 -0
  110. package/dist/hosts/integration/pappra-hook.mjs +24728 -0
  111. package/dist/hosts/integration/pi-extension-runtime.d.ts +18 -0
  112. package/dist/hosts/integration/pi-extension-runtime.js +89 -0
  113. package/dist/hosts/integration/pi-template.d.ts +3 -0
  114. package/dist/hosts/integration/pi-template.js +5 -0
  115. package/dist/hosts/integration/service.d.ts +49 -0
  116. package/dist/hosts/integration/service.js +1421 -0
  117. package/dist/hosts/integration/support.d.ts +59 -0
  118. package/dist/hosts/integration/support.js +66 -0
  119. package/dist/hosts/integration/templates.d.ts +22 -0
  120. package/dist/hosts/integration/templates.js +75 -0
  121. package/dist/hosts/pi/protocol.d.ts +22 -0
  122. package/dist/hosts/pi/protocol.js +28 -0
  123. package/dist/hosts/pi/query-result.d.ts +22 -0
  124. package/dist/hosts/pi/query-result.js +710 -0
  125. package/dist/hosts/pi/rpc.d.ts +939 -0
  126. package/dist/hosts/pi/rpc.js +1659 -0
  127. package/dist/hosts/pilot.d.ts +485 -0
  128. package/dist/hosts/pilot.js +593 -0
  129. package/dist/index.d.ts +5 -0
  130. package/dist/index.js +4 -0
  131. package/dist/infra/fs.d.ts +27 -0
  132. package/dist/infra/fs.js +130 -0
  133. package/dist/infra/git.d.ts +60 -0
  134. package/dist/infra/git.js +358 -0
  135. package/dist/infra/owned-process-group.d.ts +173 -0
  136. package/dist/infra/owned-process-group.js +571 -0
  137. package/dist/install/apply.d.ts +65 -0
  138. package/dist/install/apply.js +663 -0
  139. package/dist/install/index.d.ts +5 -0
  140. package/dist/install/index.js +5 -0
  141. package/dist/install/ownership.d.ts +85 -0
  142. package/dist/install/ownership.js +430 -0
  143. package/dist/install/plan.d.ts +39 -0
  144. package/dist/install/plan.js +97 -0
  145. package/dist/install/rollback.d.ts +18 -0
  146. package/dist/install/rollback.js +544 -0
  147. package/dist/install/runtime.d.ts +76 -0
  148. package/dist/install/runtime.js +1252 -0
  149. package/dist/knowledge/catalog.d.ts +47 -0
  150. package/dist/knowledge/catalog.js +308 -0
  151. package/dist/knowledge/context.d.ts +28 -0
  152. package/dist/knowledge/context.js +61 -0
  153. package/dist/knowledge/index.d.ts +3 -0
  154. package/dist/knowledge/index.js +1 -0
  155. package/dist/knowledge/journal.d.ts +16 -0
  156. package/dist/knowledge/journal.js +109 -0
  157. package/dist/knowledge/lifecycle.d.ts +8 -0
  158. package/dist/knowledge/lifecycle.js +1001 -0
  159. package/dist/knowledge/paths.d.ts +37 -0
  160. package/dist/knowledge/paths.js +236 -0
  161. package/dist/knowledge/refs.d.ts +36 -0
  162. package/dist/knowledge/refs.js +267 -0
  163. package/dist/knowledge/service.d.ts +21 -0
  164. package/dist/knowledge/service.js +393 -0
  165. package/dist/knowledge/types.d.ts +171 -0
  166. package/dist/knowledge/types.js +1 -0
  167. package/dist/knowledge/write.d.ts +8 -0
  168. package/dist/knowledge/write.js +1223 -0
  169. package/dist/package-info.d.ts +8 -0
  170. package/dist/package-info.js +25 -0
  171. package/dist/schemas/code.d.ts +377 -0
  172. package/dist/schemas/code.js +145 -0
  173. package/dist/schemas/collaboration.d.ts +115 -0
  174. package/dist/schemas/collaboration.js +106 -0
  175. package/dist/schemas/continuity.d.ts +315 -0
  176. package/dist/schemas/continuity.js +199 -0
  177. package/dist/schemas/diagnostics.d.ts +28 -0
  178. package/dist/schemas/diagnostics.js +27 -0
  179. package/dist/schemas/doctor.d.ts +157 -0
  180. package/dist/schemas/doctor.js +75 -0
  181. package/dist/schemas/document.d.ts +644 -0
  182. package/dist/schemas/document.js +296 -0
  183. package/dist/schemas/errors.d.ts +177 -0
  184. package/dist/schemas/errors.js +176 -0
  185. package/dist/schemas/evidence.d.ts +24 -0
  186. package/dist/schemas/evidence.js +16 -0
  187. package/dist/schemas/host.d.ts +436 -0
  188. package/dist/schemas/host.js +203 -0
  189. package/dist/schemas/index.d.ts +15 -0
  190. package/dist/schemas/index.js +15 -0
  191. package/dist/schemas/init.d.ts +121 -0
  192. package/dist/schemas/init.js +94 -0
  193. package/dist/schemas/install.d.ts +227 -0
  194. package/dist/schemas/install.js +147 -0
  195. package/dist/schemas/machine.d.ts +43 -0
  196. package/dist/schemas/machine.js +96 -0
  197. package/dist/schemas/outcome.d.ts +23 -0
  198. package/dist/schemas/outcome.js +17 -0
  199. package/dist/schemas/paths.d.ts +19 -0
  200. package/dist/schemas/paths.js +63 -0
  201. package/dist/schemas/workspace.d.ts +120 -0
  202. package/dist/schemas/workspace.js +201 -0
  203. package/dist/workspace/config-file.d.ts +36 -0
  204. package/dist/workspace/config-file.js +237 -0
  205. package/dist/workspace/config.d.ts +28 -0
  206. package/dist/workspace/config.js +79 -0
  207. package/dist/workspace/discover.d.ts +34 -0
  208. package/dist/workspace/discover.js +195 -0
  209. package/dist/workspace/documents.d.ts +21 -0
  210. package/dist/workspace/documents.js +395 -0
  211. package/dist/workspace/ignore.d.ts +10 -0
  212. package/dist/workspace/ignore.js +48 -0
  213. package/dist/workspace/index.d.ts +7 -0
  214. package/dist/workspace/index.js +3 -0
  215. package/dist/workspace/repositories.d.ts +24 -0
  216. package/dist/workspace/repositories.js +411 -0
  217. package/dist/workspace/resolve.d.ts +24 -0
  218. package/dist/workspace/resolve.js +268 -0
  219. package/dist/workspace/types.d.ts +71 -0
  220. package/dist/workspace/types.js +1 -0
  221. package/dist/workspace/validation.d.ts +18 -0
  222. package/dist/workspace/validation.js +197 -0
  223. package/package.json +111 -4
  224. package/skills/pappra/SKILL.md +71 -0
  225. package/skills/pappra/references/hosts.md +40 -0
  226. package/skills/pappra/references/lifecycle.md +41 -0
  227. package/skills/pappra/references/operations.md +27 -0
@@ -0,0 +1,71 @@
1
+ ---
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.
4
+ ---
5
+
6
+ # Pappra
7
+
8
+ Pappra keeps workspace knowledge, continuity, and code navigation outside the
9
+ host transcript. Use the installed `pappra` CLI for durable operations; hooks
10
+ only record bounded lifecycle observations and never start a model, download,
11
+ index, or new writer.
12
+
13
+ ## Start here
14
+
15
+ 1. Read `references/lifecycle.md` before relying on a host lifecycle event.
16
+ 2. Read `references/hosts.md` when the host surface is Pi, Codex, or Claude.
17
+ 3. Use `pappra checkpoint` / `pappra resume` for handoffs. A stored checkpoint
18
+ is context, not permission to execute or to trust a previous session.
19
+ 4. Use `pappra docs`, `pappra code`, `pappra runtime` and `pappra host` only for
20
+ the workspace selected by the current root. Never infer a workspace from an
21
+ unrelated session. `pappra docs scan --apply` registers discovered documents;
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.
29
+
30
+ ## One-request collaboration
31
+
32
+ `pappra collab prepare --goal <file> --domain-root <dir>` requires an explicit
33
+ shared domain. It validates the canonical domain/tasks/task/private namespace
34
+ before writing any task metadata and again around each write, so a task-root or
35
+ mid-write directory redirect fails closed instead of scattering artifacts. It
36
+ then writes a private task record, assignment, prompt, and resource claims; read
37
+ resources stay read claims. The captured identities also guard live query, finish, disposal and lower RPC artifact writes; after a redirect, no new query/execution/proof/current-result pathname is written. `pappra collab run` requires an explicit `--controller <fixture|pi-rpc>`,
38
+ performs the single admitted launch, and accepts bounded
39
+ `pappra/collaboration-command/1` JSONL on stdin; it emits
40
+ `pappra/collaboration-event/1` JSONL. `query` reads persisted history only and
41
+ reports live ownership as unknown. A `finish` produces one deterministic REPORT;
42
+ only a result whose stored classification was `applied` for the same fixed
43
+ identity/attempt/input may repeat successfully as a duplicate — repeated
44
+ rejections stay rejected. Cancel records and validates intent first: a denied
45
+ intent never calls the native controller. Claims are retained and stop proof is
46
+ never invented.
47
+
48
+ Use `--controller fixture` only for deterministic, no-model tests; it is a
49
+ restricted explicit fixture, never a silent default. The optional `pi-rpc` controller
50
+ uses the existing owned Pi RPC daily path and preserves required skills, tools,
51
+ MCP, hooks, and model settings; missing capabilities or stale/forged admission
52
+ fail before launch. A native run reports only the current prompt-correlated
53
+ result: terminal success requires a supported terminal reason and no pending
54
+ tool call, so text-plus-toolUse/intermediate, tool-only, empty, old, malformed or
55
+ missing answers are `unknown`; an explicit error is `failed` and an abort is
56
+ `cancelled`. The current result must be published as validated
57
+ `native-current-result/1` evidence; EIO/conflict/symlink/partial publication
58
+ makes delivery `unknown`, not success, and repeated finish reuses verified
59
+ content instead of overwriting it. A clean transport exit is not task success.
60
+ No approval is auto-answered, no cancel is inferred from an acknowledgement, and no new thread or
61
+ arbitrary PID is adopted. Do not launch a model or real user session without
62
+ the task's explicit authorization.
63
+
64
+ ## Boundaries
65
+
66
+ - Hooks are local and bounded. They do not read transcripts, run commands,
67
+ call models, fetch the network, or continue a conversation.
68
+ - Missing semantic context stays missing; do not fabricate summaries.
69
+ - Treat unknown ownership, stale bundles, untrusted hooks, and changed host
70
+ versions as visible conditions, not silent fallbacks.
71
+ - Preserve user settings and unrelated keys when integrating a host.
@@ -0,0 +1,40 @@
1
+ # Host surfaces
2
+
3
+ ## Pi
4
+
5
+ The project integration installs an extension plus a copied `pappra` skill; the
6
+ generated entrypoint imports the fixed Pappra runtime by absolute file URL.
7
+ `pappra host bundle --host pi` exports a self-contained package instead: the
8
+ entry imports `./runtime.mjs` next to it, so the package survives a moved
9
+ checkout. Pi 1.3.0 was verified in a real session through the packaged extension
10
+ (`pi install <dir> -l -a` + `pi -p -a`).
11
+
12
+ ## Codex
13
+
14
+ Codex 0.163.0 loads command hooks only from its user configuration directory.
15
+ Wire it with `pappra host install --host codex --scope user`, which merges only
16
+ Pappra-owned entries into `$CODEX_HOME/hooks.json` (existing hooks and unrelated
17
+ keys are preserved) and copies the bundled hook there. Project
18
+ `.codex/hooks.json` and plugin-bundle hooks are not loaded at this version.
19
+ Codex hook definitions are trusted individually; installation is not trust.
20
+ Observed 0.163.0 hook keys do not include a compact event, so compact and
21
+ automatic checkpoint requests remain unsupported.
22
+
23
+ ## Claude Code
24
+
25
+ The project integration installs a command-hook entry and merges only
26
+ Pappra-owned entries into `settings.json`; the command uses
27
+ `${CLAUDE_PROJECT_DIR}`. `pappra host bundle --host claude --marketplace` exports
28
+ a plugin whose hook uses `${CLAUDE_PLUGIN_ROOT}`; the marketplace validates with
29
+ `claude plugin validate` and startup was verified in a real session. `SessionStart`
30
+ and `PostCompact` are distinct; matchers, trust, timeout, and output behavior
31
+ remain host/version-specific. Installing a command is not proof it ran.
32
+
33
+ ## Common safety
34
+
35
+ All surfaces use the event's canonical cwd/root, bounded stdin, a one-second
36
+ local deadline, no transcript reads, no arbitrary configured commands, and no
37
+ network/model/index/session side effects. Paths with spaces or Unicode are
38
+ passed as argv/file URLs, never interpolated into a shell. Plugin registration is
39
+ host-specific; never claim a hook is loaded because files were written or a
40
+ validator passed.
@@ -0,0 +1,41 @@
1
+ # Lifecycle reference
2
+
3
+ ## Supported mapping
4
+
5
+ Pappra distinguishes four local lifecycle intents:
6
+
7
+ | Intent | Pi | Codex | Claude |
8
+ | -------------------- | ---------------------------- | ------------------------------------------ | ------------------------------------------ |
9
+ | `startup` | `session_start` | `SessionStart` with source `startup`/`new` | `SessionStart` with source `startup`/`new` |
10
+ | `resume` | `session_start` | `SessionStart` with source `resume` | `SessionStart` with source `resume` |
11
+ | `compact` | `session_before_compact` | unsupported in observed 0.163.0 hook keys | `PostCompact` |
12
+ | `checkpoint-request` | explicit Pappra command/hook | unsupported automatic event | unsupported automatic event |
13
+
14
+ The matrix is version-specific. A host version outside the observed support
15
+ range is `unsupported`/`unknown`, not a fallback to name similarity.
16
+
17
+ Codex 0.163.0 loads these hook keys only from its user configuration directory
18
+ (`$CODEX_HOME/hooks.json`); project `.codex/hooks.json` and plugin bundles are
19
+ not loaded by that version. Claude Code and Pi wire hooks in project scope.
20
+
21
+ ## What a hook does
22
+
23
+ A hook validates the host payload, resolves the current workspace from the
24
+ event cwd (never from a last-session cache), derives a bounded event identity,
25
+ suppresses a duplicate identity, and records a private local event observation.
26
+ It may print a short advisory context. It never starts a model, fetches,
27
+ indexes, runs arbitrary commands, creates a new agent, or writes a checkpoint
28
+ with invented semantics.
29
+
30
+ ## Manual continuity
31
+
32
+ `pappra checkpoint --task <id> ...` and `pappra resume <id>` remain available
33
+ without hooks. A hook observation is not a checkpoint and does not grant
34
+ `executionAllowed`. A resume packet is read-only context; an unknown or
35
+ non-stopped writer fails closed.
36
+
37
+ ## Reload and trust
38
+
39
+ Installing files does not prove the host loaded them or trusted their exact
40
+ definition. Report reload-needed and trust-needed separately. Do not approve a
41
+ host trust prompt on the user's behalf.
@@ -0,0 +1,27 @@
1
+ # Operations reference
2
+
3
+ - `pappra init` plans or applies workspace configuration. `--yes` derives
4
+ selections from discovery, `--print-choices` prints that document without
5
+ writing, `--reconfigure` rebuilds an existing valid `workspace.json`, and
6
+ `--no-runtime` leaves the durable runtime action pending.
7
+ - `pappra runtime <install|status|verify|remove>` manages the durable runtime
8
+ copy. `install --apply` defaults to `--from self`; writes require `--apply`.
9
+ - `pappra doctor` is passive: it does not install hooks, start hosts, or fix
10
+ state. `runtime verify` is the active runtime check.
11
+ - `pappra checkpoint` writes a task checkpoint; `pappra resume` reads a stored
12
+ snapshot and reports whether execution is allowed.
13
+ - `pappra docs <list|check|archive|scan>` manages the knowledge catalog.
14
+ `scan --apply` registers documents found under the configured sources.
15
+ - `pappra code` operates on an explicitly selected repository and keeps index
16
+ mutations behind an explicit `--apply`.
17
+ - `pappra host <detect|describe|plan|install|verify|bundle>` wires an optional
18
+ host. Codex 0.163.0 loads hooks only from `$CODEX_HOME/hooks.json`, so use
19
+ `install --host codex --scope user`; `bundle --marketplace` exports a plugin
20
+ directory without registering it, and `install --mode plugin` fails closed.
21
+ - `pappra collab <prepare|run|query>` runs one bounded collaboration request.
22
+ `run` requires `--controller fixture|pi-rpc`; `pi-rpc` launches a real Pi RPC
23
+ session.
24
+
25
+ Preserve user bytes. If an operation reports a conflict or residual path,
26
+ inspect that path and resolve ownership before retrying. Never delete an
27
+ unknown file to make a retry succeed.