@phyzess/pappra 0.0.0-stage → 0.1.0-beta.2

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 (221) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +80 -2
  3. package/THIRD_PARTY_NOTICES.md +16 -0
  4. package/assets/integrations/skills/pappra/SKILL.md +68 -0
  5. package/assets/integrations/skills/pappra/references/hosts.md +30 -0
  6. package/assets/integrations/skills/pappra/references/lifecycle.md +37 -0
  7. package/assets/integrations/skills/pappra/references/operations.md +14 -0
  8. package/assets/manifest.json +4 -0
  9. package/dist/app/collaboration.d.ts +170 -0
  10. package/dist/app/collaboration.js +1650 -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 +143 -0
  14. package/dist/app/init.js +1111 -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 +11 -0
  22. package/dist/cli/commands/docs.js +133 -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 +13 -0
  26. package/dist/cli/commands/host.js +125 -0
  27. package/dist/cli/commands/init.d.ts +51 -0
  28. package/dist/cli/commands/init.js +668 -0
  29. package/dist/cli/main.d.ts +2 -0
  30. package/dist/cli/main.js +10 -0
  31. package/dist/cli/output.d.ts +4 -0
  32. package/dist/cli/output.js +1 -0
  33. package/dist/cli/run.d.ts +2 -0
  34. package/dist/cli/run.js +597 -0
  35. package/dist/code/budget.d.ts +14 -0
  36. package/dist/code/budget.js +39 -0
  37. package/dist/code/exec.d.ts +23 -0
  38. package/dist/code/exec.js +133 -0
  39. package/dist/code/identity.d.ts +13 -0
  40. package/dist/code/identity.js +214 -0
  41. package/dist/code/index.d.ts +6 -0
  42. package/dist/code/index.js +3 -0
  43. package/dist/code/providers/codegraph.d.ts +59 -0
  44. package/dist/code/providers/codegraph.js +567 -0
  45. package/dist/code/registration.d.ts +9 -0
  46. package/dist/code/registration.js +293 -0
  47. package/dist/code/service.d.ts +53 -0
  48. package/dist/code/service.js +633 -0
  49. package/dist/code/text.d.ts +3 -0
  50. package/dist/code/text.js +202 -0
  51. package/dist/collab/admission.d.ts +450 -0
  52. package/dist/collab/admission.js +797 -0
  53. package/dist/collab/canonical.d.ts +26 -0
  54. package/dist/collab/canonical.js +136 -0
  55. package/dist/collab/contracts.d.ts +73 -0
  56. package/dist/collab/contracts.js +76 -0
  57. package/dist/collab/envelope.d.ts +52 -0
  58. package/dist/collab/envelope.js +241 -0
  59. package/dist/collab/fingerprint.d.ts +7 -0
  60. package/dist/collab/fingerprint.js +58 -0
  61. package/dist/collab/handoff.d.ts +350 -0
  62. package/dist/collab/handoff.js +513 -0
  63. package/dist/collab/index.d.ts +9 -0
  64. package/dist/collab/index.js +8 -0
  65. package/dist/collab/lifecycle.d.ts +449 -0
  66. package/dist/collab/lifecycle.js +534 -0
  67. package/dist/collab/messages.d.ts +148 -0
  68. package/dist/collab/messages.js +583 -0
  69. package/dist/collab/notify.d.ts +47 -0
  70. package/dist/collab/notify.js +140 -0
  71. package/dist/collab/preflight.d.ts +31 -0
  72. package/dist/collab/preflight.js +271 -0
  73. package/dist/collab/resources.d.ts +119 -0
  74. package/dist/collab/resources.js +451 -0
  75. package/dist/collab/store.d.ts +143 -0
  76. package/dist/collab/store.js +606 -0
  77. package/dist/collab/types.d.ts +354 -0
  78. package/dist/collab/types.js +1 -0
  79. package/dist/collab/validation.d.ts +10 -0
  80. package/dist/collab/validation.js +303 -0
  81. package/dist/continuity/context.d.ts +24 -0
  82. package/dist/continuity/context.js +179 -0
  83. package/dist/continuity/index.d.ts +3 -0
  84. package/dist/continuity/index.js +1 -0
  85. package/dist/continuity/paths.d.ts +37 -0
  86. package/dist/continuity/paths.js +258 -0
  87. package/dist/continuity/service.d.ts +59 -0
  88. package/dist/continuity/service.js +1258 -0
  89. package/dist/hosts/claude/native.d.ts +79 -0
  90. package/dist/hosts/claude/native.js +853 -0
  91. package/dist/hosts/codex/native.d.ts +345 -0
  92. package/dist/hosts/codex/native.js +1528 -0
  93. package/dist/hosts/codex/protocol.d.ts +51 -0
  94. package/dist/hosts/codex/protocol.js +42 -0
  95. package/dist/hosts/detect.d.ts +28 -0
  96. package/dist/hosts/detect.js +73 -0
  97. package/dist/hosts/index.d.ts +10 -0
  98. package/dist/hosts/index.js +10 -0
  99. package/dist/hosts/integration/bundle.d.ts +16 -0
  100. package/dist/hosts/integration/bundle.js +81 -0
  101. package/dist/hosts/integration/hook-entry.d.ts +1 -0
  102. package/dist/hosts/integration/hook-entry.js +68 -0
  103. package/dist/hosts/integration/hook.d.ts +32 -0
  104. package/dist/hosts/integration/hook.js +781 -0
  105. package/dist/hosts/integration/pi-extension-runtime.d.ts +18 -0
  106. package/dist/hosts/integration/pi-extension-runtime.js +89 -0
  107. package/dist/hosts/integration/pi-template.d.ts +3 -0
  108. package/dist/hosts/integration/pi-template.js +5 -0
  109. package/dist/hosts/integration/service.d.ts +41 -0
  110. package/dist/hosts/integration/service.js +1381 -0
  111. package/dist/hosts/integration/support.d.ts +36 -0
  112. package/dist/hosts/integration/support.js +41 -0
  113. package/dist/hosts/integration/templates.d.ts +22 -0
  114. package/dist/hosts/integration/templates.js +70 -0
  115. package/dist/hosts/pi/protocol.d.ts +22 -0
  116. package/dist/hosts/pi/protocol.js +28 -0
  117. package/dist/hosts/pi/query-result.d.ts +22 -0
  118. package/dist/hosts/pi/query-result.js +710 -0
  119. package/dist/hosts/pi/rpc.d.ts +937 -0
  120. package/dist/hosts/pi/rpc.js +1621 -0
  121. package/dist/hosts/pilot.d.ts +485 -0
  122. package/dist/hosts/pilot.js +593 -0
  123. package/dist/index.d.ts +5 -0
  124. package/dist/index.js +4 -0
  125. package/dist/infra/fs.d.ts +27 -0
  126. package/dist/infra/fs.js +130 -0
  127. package/dist/infra/git.d.ts +60 -0
  128. package/dist/infra/git.js +358 -0
  129. package/dist/infra/owned-process-group.d.ts +173 -0
  130. package/dist/infra/owned-process-group.js +571 -0
  131. package/dist/install/apply.d.ts +65 -0
  132. package/dist/install/apply.js +663 -0
  133. package/dist/install/index.d.ts +5 -0
  134. package/dist/install/index.js +5 -0
  135. package/dist/install/ownership.d.ts +85 -0
  136. package/dist/install/ownership.js +430 -0
  137. package/dist/install/plan.d.ts +39 -0
  138. package/dist/install/plan.js +97 -0
  139. package/dist/install/rollback.d.ts +18 -0
  140. package/dist/install/rollback.js +544 -0
  141. package/dist/install/runtime.d.ts +76 -0
  142. package/dist/install/runtime.js +1145 -0
  143. package/dist/knowledge/catalog.d.ts +47 -0
  144. package/dist/knowledge/catalog.js +308 -0
  145. package/dist/knowledge/context.d.ts +28 -0
  146. package/dist/knowledge/context.js +61 -0
  147. package/dist/knowledge/index.d.ts +3 -0
  148. package/dist/knowledge/index.js +1 -0
  149. package/dist/knowledge/journal.d.ts +16 -0
  150. package/dist/knowledge/journal.js +109 -0
  151. package/dist/knowledge/lifecycle.d.ts +8 -0
  152. package/dist/knowledge/lifecycle.js +1001 -0
  153. package/dist/knowledge/paths.d.ts +37 -0
  154. package/dist/knowledge/paths.js +236 -0
  155. package/dist/knowledge/refs.d.ts +36 -0
  156. package/dist/knowledge/refs.js +267 -0
  157. package/dist/knowledge/service.d.ts +21 -0
  158. package/dist/knowledge/service.js +393 -0
  159. package/dist/knowledge/types.d.ts +171 -0
  160. package/dist/knowledge/types.js +1 -0
  161. package/dist/knowledge/write.d.ts +8 -0
  162. package/dist/knowledge/write.js +1223 -0
  163. package/dist/package-info.d.ts +6 -0
  164. package/dist/package-info.js +19 -0
  165. package/dist/schemas/code.d.ts +377 -0
  166. package/dist/schemas/code.js +145 -0
  167. package/dist/schemas/collaboration.d.ts +115 -0
  168. package/dist/schemas/collaboration.js +106 -0
  169. package/dist/schemas/continuity.d.ts +315 -0
  170. package/dist/schemas/continuity.js +199 -0
  171. package/dist/schemas/diagnostics.d.ts +28 -0
  172. package/dist/schemas/diagnostics.js +27 -0
  173. package/dist/schemas/doctor.d.ts +157 -0
  174. package/dist/schemas/doctor.js +75 -0
  175. package/dist/schemas/document.d.ts +644 -0
  176. package/dist/schemas/document.js +296 -0
  177. package/dist/schemas/errors.d.ts +177 -0
  178. package/dist/schemas/errors.js +176 -0
  179. package/dist/schemas/evidence.d.ts +24 -0
  180. package/dist/schemas/evidence.js +16 -0
  181. package/dist/schemas/host.d.ts +436 -0
  182. package/dist/schemas/host.js +201 -0
  183. package/dist/schemas/index.d.ts +15 -0
  184. package/dist/schemas/index.js +15 -0
  185. package/dist/schemas/init.d.ts +121 -0
  186. package/dist/schemas/init.js +94 -0
  187. package/dist/schemas/install.d.ts +213 -0
  188. package/dist/schemas/install.js +139 -0
  189. package/dist/schemas/machine.d.ts +43 -0
  190. package/dist/schemas/machine.js +96 -0
  191. package/dist/schemas/outcome.d.ts +23 -0
  192. package/dist/schemas/outcome.js +17 -0
  193. package/dist/schemas/paths.d.ts +19 -0
  194. package/dist/schemas/paths.js +63 -0
  195. package/dist/schemas/workspace.d.ts +120 -0
  196. package/dist/schemas/workspace.js +201 -0
  197. package/dist/workspace/config-file.d.ts +36 -0
  198. package/dist/workspace/config-file.js +237 -0
  199. package/dist/workspace/config.d.ts +28 -0
  200. package/dist/workspace/config.js +79 -0
  201. package/dist/workspace/discover.d.ts +34 -0
  202. package/dist/workspace/discover.js +195 -0
  203. package/dist/workspace/documents.d.ts +21 -0
  204. package/dist/workspace/documents.js +395 -0
  205. package/dist/workspace/ignore.d.ts +10 -0
  206. package/dist/workspace/ignore.js +48 -0
  207. package/dist/workspace/index.d.ts +7 -0
  208. package/dist/workspace/index.js +3 -0
  209. package/dist/workspace/repositories.d.ts +24 -0
  210. package/dist/workspace/repositories.js +411 -0
  211. package/dist/workspace/resolve.d.ts +24 -0
  212. package/dist/workspace/resolve.js +268 -0
  213. package/dist/workspace/types.d.ts +71 -0
  214. package/dist/workspace/types.js +1 -0
  215. package/dist/workspace/validation.d.ts +18 -0
  216. package/dist/workspace/validation.js +197 -0
  217. package/package.json +105 -4
  218. package/skills/pappra/SKILL.md +68 -0
  219. package/skills/pappra/references/hosts.md +30 -0
  220. package/skills/pappra/references/lifecycle.md +37 -0
  221. package/skills/pappra/references/operations.md +14 -0
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Minimal structural surface used by the generated Pi extension. The host SDK
3
+ * remains the authority for exact event payloads; this runtime validates the
4
+ * normalized fields before any local write.
5
+ */
6
+ export interface PiExtensionLike {
7
+ on(event: string, handler: (event: unknown, context: unknown) => Promise<void> | void): void;
8
+ registerCommand(name: string, options: {
9
+ readonly description: string;
10
+ readonly handler: (args: string, context: unknown) => Promise<void> | void;
11
+ }): void;
12
+ }
13
+ /**
14
+ * Registers only bounded local lifecycle observations. It deliberately does
15
+ * not start processes, read transcripts, call models, fetch, index or continue
16
+ * a session.
17
+ */
18
+ export declare function createPiExtension(pi: PiExtensionLike): void;
@@ -0,0 +1,89 @@
1
+ import { runHostHook } from './hook.js';
2
+ function contextCwd(context) {
3
+ if (typeof context === 'object' &&
4
+ context !== null &&
5
+ 'cwd' in context &&
6
+ typeof context.cwd === 'string') {
7
+ return context.cwd;
8
+ }
9
+ return null;
10
+ }
11
+ function contextSessionId(context) {
12
+ if (typeof context !== 'object' || context === null)
13
+ return null;
14
+ if ('sessionManager' in context &&
15
+ typeof context.sessionManager === 'object' &&
16
+ context.sessionManager !== null) {
17
+ const manager = context.sessionManager;
18
+ if ('getSessionId' in manager &&
19
+ typeof manager.getSessionId === 'function') {
20
+ const value = manager.getSessionId();
21
+ if (typeof value === 'string')
22
+ return value;
23
+ }
24
+ }
25
+ return null;
26
+ }
27
+ function notifyContext(context, message) {
28
+ if (typeof context !== 'object' || context === null)
29
+ return;
30
+ if ('ui' in context &&
31
+ typeof context.ui === 'object' &&
32
+ context.ui !== null &&
33
+ 'notify' in context.ui &&
34
+ typeof context.ui.notify === 'function') {
35
+ context.ui.notify(message, 'info');
36
+ }
37
+ }
38
+ async function observe(event, context, taskId = null) {
39
+ const cwd = contextCwd(context);
40
+ if (cwd === null)
41
+ return;
42
+ const input = {
43
+ schema: 'pappra/host-hook-input/1',
44
+ host: 'pi',
45
+ event,
46
+ nativeEvent: event === 'startup'
47
+ ? 'session_start'
48
+ : event === 'compact'
49
+ ? 'session_before_compact'
50
+ : 'pappra-checkpoint',
51
+ eventId: null,
52
+ sessionId: contextSessionId(context),
53
+ cwd,
54
+ root: null,
55
+ taskId,
56
+ source: 'pi-extension',
57
+ observedAt: new Date().toISOString(),
58
+ };
59
+ try {
60
+ const result = await runHostHook(input);
61
+ if (result.context !== null)
62
+ notifyContext(context, result.context);
63
+ }
64
+ catch {
65
+ // A hook failure must not replace the host's own lifecycle failure.
66
+ }
67
+ }
68
+ /**
69
+ * Registers only bounded local lifecycle observations. It deliberately does
70
+ * not start processes, read transcripts, call models, fetch, index or continue
71
+ * a session.
72
+ */
73
+ export function createPiExtension(pi) {
74
+ pi.on('session_start', async (_event, context) => {
75
+ await observe('startup', context);
76
+ });
77
+ pi.on('session_before_compact', async (_event, context) => {
78
+ await observe('compact', context);
79
+ });
80
+ pi.registerCommand('pappra-checkpoint', {
81
+ description: 'Record a bounded Pappra checkpoint request; manual pappra checkpoint/resume remains required.',
82
+ handler: async (_args, context) => {
83
+ const taskId = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/.test(_args.trim())
84
+ ? _args.trim()
85
+ : null;
86
+ await observe('checkpoint-request', context, taskId);
87
+ },
88
+ });
89
+ }
@@ -0,0 +1,3 @@
1
+ import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';
2
+ /** Typechecked native-template shape; renderHostTemplate emits the same surface. */
3
+ export default function (pi: ExtensionAPI): void;
@@ -0,0 +1,5 @@
1
+ import { createPiExtension } from './pi-extension-runtime.js';
2
+ /** Typechecked native-template shape; renderHostTemplate emits the same surface. */
3
+ export default function (pi) {
4
+ createPiExtension(pi);
5
+ }
@@ -0,0 +1,41 @@
1
+ import type { HostCapabilities, HostInstallManifest, HostIntegrationPlan, HostIntegrationResult, HostName, HostVerification } from '../../schemas/host.js';
2
+ export interface HostIntegrationOptions {
3
+ readonly root: string;
4
+ readonly homeDir: string;
5
+ readonly pathEnv: string;
6
+ readonly runtimeEntry?: string;
7
+ readonly hostVersion?: string | null;
8
+ readonly selectedHosts?: readonly HostName[];
9
+ readonly observedAt?: string;
10
+ }
11
+ export interface HostTargetOptions {
12
+ readonly hostRoot?: string;
13
+ readonly runtimeEntry?: string;
14
+ readonly hostVersion?: string | null;
15
+ }
16
+ export interface HostPlanBundle {
17
+ readonly plan: HostIntegrationPlan;
18
+ readonly contents: ReadonlyMap<string, Buffer>;
19
+ }
20
+ export declare class HostIntegrationService {
21
+ #private;
22
+ constructor(options: HostIntegrationOptions);
23
+ detect(): readonly HostCapabilities[];
24
+ describe(host: HostName): HostCapabilities;
25
+ adapter(host: HostName): HostAdapter;
26
+ plan(host: HostName, options?: HostTargetOptions): Promise<HostIntegrationPlan>;
27
+ install(host: HostName, options: HostTargetOptions & {
28
+ readonly apply: boolean;
29
+ }): Promise<HostIntegrationResult>;
30
+ verify(host: HostName, options?: HostTargetOptions): Promise<HostVerification>;
31
+ readManifest(hostRoot: string): Promise<HostInstallManifest | null>;
32
+ }
33
+ export declare class HostAdapter {
34
+ #private;
35
+ readonly host: HostName;
36
+ constructor(service: HostIntegrationService, host: HostName);
37
+ detect(): HostCapabilities;
38
+ describeCapabilities(): HostCapabilities;
39
+ planIntegration(options?: HostTargetOptions): Promise<HostIntegrationPlan>;
40
+ verifyIntegration(options?: HostTargetOptions): Promise<HostVerification>;
41
+ }