pi-para 0.5.2 → 0.6.0

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 (195) hide show
  1. package/ARCHITECTURE.md +160 -0
  2. package/CHANGELOG.md +51 -0
  3. package/CONFIGURATION.md +243 -0
  4. package/README.md +140 -237
  5. package/SETUP.md +196 -112
  6. package/STRUCTURE.md +140 -0
  7. package/package.json +86 -18
  8. package/scripts/build-assets.mjs +29 -0
  9. package/scripts/install.ps1 +55 -0
  10. package/scripts/install.sh +63 -0
  11. package/scripts/smoke-install.mjs +63 -0
  12. package/skills/para/SKILL.md +1 -1
  13. package/skills/setup/SKILL.md +1 -1
  14. package/src/atomic-write.ts +17 -0
  15. package/src/capture.ts +4 -4
  16. package/src/cli-legacy.ts +43 -0
  17. package/src/cli.ts +133 -28
  18. package/src/commands.ts +203 -243
  19. package/src/config.ts +355 -0
  20. package/src/context.ts +29 -14
  21. package/src/credentials.ts +100 -0
  22. package/src/daemon.ts +1 -1
  23. package/src/doctor.ts +209 -0
  24. package/src/gepa/index.ts +1 -1
  25. package/src/index.ts +119 -40
  26. package/src/maintainer.ts +4 -4
  27. package/src/model-resolver.ts +96 -0
  28. package/src/paths.ts +48 -0
  29. package/src/processor.ts +4 -4
  30. package/src/qmd-providers.ts +63 -0
  31. package/src/query.ts +15 -1
  32. package/src/repair.ts +49 -0
  33. package/src/scheduler/controls.ts +125 -0
  34. package/src/scheduler/index.ts +210 -0
  35. package/src/scheduler/leases.ts +98 -0
  36. package/src/scheduler/session-capture.ts +146 -0
  37. package/src/scheduler/state.ts +304 -0
  38. package/src/session-tools.ts +1 -1
  39. package/src/settings.ts +126 -0
  40. package/src/setup.ts +116 -0
  41. package/src/status.ts +115 -0
  42. package/src/store.ts +116 -31
  43. package/src/summarize.ts +72 -16
  44. package/src/templates/prompts.ts +1 -1
  45. package/src/tools.ts +280 -90
  46. package/src/wiki-tool-guidance.ts +84 -0
  47. package/src/wiki.ts +98 -26
  48. package/dist/capture.d.ts +0 -34
  49. package/dist/capture.d.ts.map +0 -1
  50. package/dist/capture.js +0 -461
  51. package/dist/capture.js.map +0 -1
  52. package/dist/cli.d.ts +0 -15
  53. package/dist/cli.d.ts.map +0 -1
  54. package/dist/cli.js +0 -405
  55. package/dist/cli.js.map +0 -1
  56. package/dist/commands.d.ts +0 -15
  57. package/dist/commands.d.ts.map +0 -1
  58. package/dist/commands.js +0 -786
  59. package/dist/commands.js.map +0 -1
  60. package/dist/context.d.ts +0 -61
  61. package/dist/context.d.ts.map +0 -1
  62. package/dist/context.js +0 -289
  63. package/dist/context.js.map +0 -1
  64. package/dist/daemon.d.ts +0 -49
  65. package/dist/daemon.d.ts.map +0 -1
  66. package/dist/daemon.js +0 -226
  67. package/dist/daemon.js.map +0 -1
  68. package/dist/frontmatter.d.ts +0 -59
  69. package/dist/frontmatter.d.ts.map +0 -1
  70. package/dist/frontmatter.js +0 -170
  71. package/dist/frontmatter.js.map +0 -1
  72. package/dist/gepa/dataset.d.ts +0 -36
  73. package/dist/gepa/dataset.d.ts.map +0 -1
  74. package/dist/gepa/dataset.js +0 -148
  75. package/dist/gepa/dataset.js.map +0 -1
  76. package/dist/gepa/evaluator.d.ts +0 -51
  77. package/dist/gepa/evaluator.d.ts.map +0 -1
  78. package/dist/gepa/evaluator.js +0 -317
  79. package/dist/gepa/evaluator.js.map +0 -1
  80. package/dist/gepa/index.d.ts +0 -66
  81. package/dist/gepa/index.d.ts.map +0 -1
  82. package/dist/gepa/index.js +0 -240
  83. package/dist/gepa/index.js.map +0 -1
  84. package/dist/gepa/llm.d.ts +0 -35
  85. package/dist/gepa/llm.d.ts.map +0 -1
  86. package/dist/gepa/llm.js +0 -268
  87. package/dist/gepa/llm.js.map +0 -1
  88. package/dist/gepa/optimized/capture-prompt.txt +0 -65
  89. package/dist/gepa/optimizer.d.ts +0 -29
  90. package/dist/gepa/optimizer.d.ts.map +0 -1
  91. package/dist/gepa/optimizer.js +0 -249
  92. package/dist/gepa/optimizer.js.map +0 -1
  93. package/dist/gepa/targets.d.ts +0 -39
  94. package/dist/gepa/targets.d.ts.map +0 -1
  95. package/dist/gepa/targets.js +0 -326
  96. package/dist/gepa/targets.js.map +0 -1
  97. package/dist/gepa/types.d.ts +0 -168
  98. package/dist/gepa/types.d.ts.map +0 -1
  99. package/dist/gepa/types.js +0 -124
  100. package/dist/gepa/types.js.map +0 -1
  101. package/dist/index.d.ts +0 -21
  102. package/dist/index.d.ts.map +0 -1
  103. package/dist/index.js +0 -294
  104. package/dist/index.js.map +0 -1
  105. package/dist/ingest.d.ts +0 -88
  106. package/dist/ingest.d.ts.map +0 -1
  107. package/dist/ingest.js +0 -105
  108. package/dist/ingest.js.map +0 -1
  109. package/dist/link-discovery.d.ts +0 -40
  110. package/dist/link-discovery.d.ts.map +0 -1
  111. package/dist/link-discovery.js +0 -122
  112. package/dist/link-discovery.js.map +0 -1
  113. package/dist/link-utils.d.ts +0 -30
  114. package/dist/link-utils.d.ts.map +0 -1
  115. package/dist/link-utils.js +0 -145
  116. package/dist/link-utils.js.map +0 -1
  117. package/dist/lint.d.ts +0 -39
  118. package/dist/lint.d.ts.map +0 -1
  119. package/dist/lint.js +0 -827
  120. package/dist/lint.js.map +0 -1
  121. package/dist/maintainer.d.ts +0 -24
  122. package/dist/maintainer.d.ts.map +0 -1
  123. package/dist/maintainer.js +0 -358
  124. package/dist/maintainer.js.map +0 -1
  125. package/dist/processor.d.ts +0 -14
  126. package/dist/processor.d.ts.map +0 -1
  127. package/dist/processor.js +0 -361
  128. package/dist/processor.js.map +0 -1
  129. package/dist/query.d.ts +0 -69
  130. package/dist/query.d.ts.map +0 -1
  131. package/dist/query.js +0 -107
  132. package/dist/query.js.map +0 -1
  133. package/dist/raw.d.ts +0 -57
  134. package/dist/raw.d.ts.map +0 -1
  135. package/dist/raw.js +0 -219
  136. package/dist/raw.js.map +0 -1
  137. package/dist/redact.d.ts +0 -21
  138. package/dist/redact.d.ts.map +0 -1
  139. package/dist/redact.js +0 -143
  140. package/dist/redact.js.map +0 -1
  141. package/dist/scope.d.ts +0 -54
  142. package/dist/scope.d.ts.map +0 -1
  143. package/dist/scope.js +0 -161
  144. package/dist/scope.js.map +0 -1
  145. package/dist/scripts/bulk-link-fix.d.ts +0 -9
  146. package/dist/scripts/bulk-link-fix.d.ts.map +0 -1
  147. package/dist/scripts/bulk-link-fix.js +0 -106
  148. package/dist/scripts/bulk-link-fix.js.map +0 -1
  149. package/dist/session-tools.d.ts +0 -33
  150. package/dist/session-tools.d.ts.map +0 -1
  151. package/dist/session-tools.js +0 -211
  152. package/dist/session-tools.js.map +0 -1
  153. package/dist/state.d.ts +0 -54
  154. package/dist/state.d.ts.map +0 -1
  155. package/dist/state.js +0 -176
  156. package/dist/state.js.map +0 -1
  157. package/dist/store.d.ts +0 -56
  158. package/dist/store.d.ts.map +0 -1
  159. package/dist/store.js +0 -227
  160. package/dist/store.js.map +0 -1
  161. package/dist/summarize.d.ts +0 -56
  162. package/dist/summarize.d.ts.map +0 -1
  163. package/dist/summarize.js +0 -231
  164. package/dist/summarize.js.map +0 -1
  165. package/dist/tag-registry.d.ts +0 -56
  166. package/dist/tag-registry.d.ts.map +0 -1
  167. package/dist/tag-registry.js +0 -146
  168. package/dist/tag-registry.js.map +0 -1
  169. package/dist/templates/prompts.d.ts +0 -63
  170. package/dist/templates/prompts.d.ts.map +0 -1
  171. package/dist/templates/prompts.js +0 -260
  172. package/dist/templates/prompts.js.map +0 -1
  173. package/dist/tools.d.ts +0 -26
  174. package/dist/tools.d.ts.map +0 -1
  175. package/dist/tools.js +0 -1033
  176. package/dist/tools.js.map +0 -1
  177. package/dist/watcher.d.ts +0 -25
  178. package/dist/watcher.d.ts.map +0 -1
  179. package/dist/watcher.js +0 -84
  180. package/dist/watcher.js.map +0 -1
  181. package/dist/webui/client/dist/index.html +0 -1885
  182. package/dist/webui/server.d.ts +0 -31
  183. package/dist/webui/server.d.ts.map +0 -1
  184. package/dist/webui/server.js +0 -566
  185. package/dist/webui/server.js.map +0 -1
  186. package/dist/wiki.d.ts +0 -103
  187. package/dist/wiki.d.ts.map +0 -1
  188. package/dist/wiki.js +0 -428
  189. package/dist/wiki.js.map +0 -1
  190. package/scripts/gepa/__pycache__/dataset.cpython-313.pyc +0 -0
  191. package/scripts/gepa/__pycache__/lm_providers.cpython-313.pyc +0 -0
  192. package/scripts/gepa/__pycache__/metric.cpython-313.pyc +0 -0
  193. package/scripts/gepa/__pycache__/program.cpython-313.pyc +0 -0
  194. package/scripts/gepa/__pycache__/wiki_reader.cpython-313.pyc +0 -0
  195. package/scripts/gepa/uv.lock +0 -2241
package/dist/capture.js DELETED
@@ -1,461 +0,0 @@
1
- /**
2
- * Session knowledge capture — extracts insights from sessions into the wiki.
3
- *
4
- * Two modes:
5
- * - Auto-capture on session_shutdown (standalone Agent with wiki tools)
6
- * - Explicit capture via /wiki-capture command (standalone Agent)
7
- *
8
- * Both are fully automatic — no user confirmation prompts.
9
- */
10
- import { Agent } from "@mariozechner/pi-agent-core";
11
- import { readPage, PARA_CATEGORIES } from "./wiki.js";
12
- import { appendSessionDigest } from "./raw.js";
13
- import { createStandaloneTools } from "./tools.js";
14
- import { serializeSessionForWiki, generateSummary } from "./summarize.js";
15
- import { CAPTURE_SYSTEM_PROMPT, EXPLICIT_CAPTURE_PROMPT } from "./templates/prompts.js";
16
- // -- Constants ---------------------------------------------------------------
17
- const DEFAULT_TIMEOUT_MS = 60_000;
18
- const NOTHING_PATTERN = /nothing to capture/i;
19
- // -- Helpers -----------------------------------------------------------------
20
- /**
21
- * Parse a page path like "projects/auth-refactor" into category + slug.
22
- * Returns null for invalid paths.
23
- */
24
- function parsePagePath(pagePath) {
25
- const parts = pagePath.split("/");
26
- if (parts.length !== 2)
27
- return null;
28
- const [cat, slug] = parts;
29
- if (!PARA_CATEGORIES.includes(cat))
30
- return null;
31
- if (!slug)
32
- return null;
33
- return { category: cat, slug };
34
- }
35
- /** Estimate total text chars in user + assistant messages. */
36
- function estimateSessionChars(messages) {
37
- let total = 0;
38
- for (const m of messages) {
39
- if (m.role !== "user" && m.role !== "assistant")
40
- continue;
41
- const content = "content" in m ? m.content : undefined;
42
- if (typeof content === "string") {
43
- total += content.length;
44
- continue;
45
- }
46
- if (Array.isArray(content)) {
47
- for (const block of content) {
48
- if (typeof block === "object" && block !== null && "type" in block && block.type === "text" && "text" in block) {
49
- total += block.text.length;
50
- }
51
- }
52
- }
53
- }
54
- return total;
55
- }
56
- /**
57
- * Extract pages written from agent messages by inspecting tool results.
58
- *
59
- * After the standalone agent finishes, its messages contain tool calls and
60
- * tool results. We inspect wiki_write tool results to find pagesWritten.
61
- */
62
- function extractWrittenPages(messages) {
63
- const pages = [];
64
- for (const msg of messages) {
65
- if (typeof msg !== "object" || msg === null || !("role" in msg))
66
- continue;
67
- const m = msg;
68
- // Look for toolResult messages that contain pagesWritten info
69
- if (m.role === "toolResult") {
70
- // The content of a wiki_write tool result mentions "Wrote N page(s): path1, path2"
71
- const content = m.content;
72
- if (!Array.isArray(content))
73
- continue;
74
- for (const block of content) {
75
- if (typeof block !== "object" || block === null)
76
- continue;
77
- const b = block;
78
- if (b.type === "text" && typeof b.text === "string") {
79
- const match = b.text.match(/Wrote \d+ page\(s\): (.+)/);
80
- if (match) {
81
- const paths = match[1].split(", ").map((p) => p.trim());
82
- pages.push(...paths);
83
- }
84
- }
85
- }
86
- }
87
- }
88
- return [...new Set(pages)];
89
- }
90
- /**
91
- * Check if the agent's final assistant message indicates nothing was captured.
92
- */
93
- function isNothingCaptured(messages) {
94
- // Walk messages backwards to find the last assistant message
95
- for (let i = messages.length - 1; i >= 0; i--) {
96
- const msg = messages[i];
97
- if (typeof msg !== "object" || msg === null || !("role" in msg))
98
- continue;
99
- const m = msg;
100
- if (m.role !== "assistant")
101
- continue;
102
- const content = m.content;
103
- if (!Array.isArray(content))
104
- continue;
105
- for (const block of content) {
106
- if (typeof block !== "object" || block === null)
107
- continue;
108
- const b = block;
109
- if (b.type === "text" && typeof b.text === "string") {
110
- if (NOTHING_PATTERN.test(b.text))
111
- return true;
112
- }
113
- }
114
- break; // only check the last assistant message
115
- }
116
- return false;
117
- }
118
- /**
119
- * Build PageRef objects from page paths by reading actual pages from disk.
120
- * Pages that don't exist on disk get a minimal PageRef.
121
- */
122
- async function buildPageRefs(wikiDir, pagePaths) {
123
- const created = [];
124
- const updated = [];
125
- for (const pagePath of pagePaths) {
126
- const parsed = parsePagePath(pagePath);
127
- if (!parsed)
128
- continue;
129
- const page = await readPage(wikiDir, parsed.category, parsed.slug);
130
- const ref = {
131
- category: parsed.category,
132
- slug: parsed.slug,
133
- title: page?.frontmatter.title ?? parsed.slug,
134
- path: `${parsed.category}/${parsed.slug}.md`,
135
- };
136
- // If created date == updated date, it's newly created; otherwise updated.
137
- // In practice, all pages written in capture are "created" from capture's
138
- // perspective — the wiki_write tool handles create vs update internally.
139
- // We heuristically check: if the page was created within the last minute,
140
- // treat it as newly created.
141
- if (page) {
142
- const createdTime = new Date(page.frontmatter.created).getTime();
143
- const updatedTime = new Date(page.frontmatter.updated).getTime();
144
- // If created and updated are within 2 seconds, it was just created
145
- if (Math.abs(updatedTime - createdTime) < 2000) {
146
- created.push(ref);
147
- }
148
- else {
149
- updated.push(ref);
150
- }
151
- }
152
- else {
153
- // Page was written but we can't read it — treat as created
154
- created.push(ref);
155
- }
156
- }
157
- return { created, updated };
158
- }
159
- /**
160
- * Run a standalone capture agent with the given prompt and tools.
161
- * Returns the agent's final messages for analysis.
162
- */
163
- async function runCaptureAgent(wikiDir, store, scope, model, modelRegistry, userPrompt, timeoutMs) {
164
- const tools = createStandaloneTools(wikiDir, store, () => scope);
165
- const agent = new Agent({
166
- initialState: {
167
- systemPrompt: CAPTURE_SYSTEM_PROMPT,
168
- model,
169
- tools,
170
- messages: [],
171
- },
172
- getApiKey: (provider) => modelRegistry.getApiKeyForProvider(provider),
173
- });
174
- const timeout = timeoutMs ?? DEFAULT_TIMEOUT_MS;
175
- const abortController = new AbortController();
176
- const timer = setTimeout(() => abortController.abort(), timeout);
177
- // Wire abort into agent
178
- const unsubscribe = agent.subscribe(async (_event, _signal) => {
179
- if (abortController.signal.aborted) {
180
- agent.abort();
181
- }
182
- });
183
- try {
184
- // Prompt the agent — this runs the full tool loop
185
- await agent.prompt(userPrompt);
186
- }
187
- catch {
188
- // Agent was aborted or encountered an error — non-fatal
189
- }
190
- finally {
191
- clearTimeout(timer);
192
- unsubscribe();
193
- }
194
- return agent.state.messages;
195
- }
196
- // -- Public API --------------------------------------------------------------
197
- /**
198
- * Called automatically on session_shutdown.
199
- * Spins up a standalone Agent with wiki tools, aborts after timeoutMs.
200
- */
201
- export async function autoCapture(wikiDir, store, messages, scope, sessionFile, model, modelRegistry, timeoutMs, alreadyCaptured) {
202
- // Short-circuit only truly empty sessions (greetings, single-word exchanges).
203
- // Even short sessions can contain valuable operational knowledge (deploy keys,
204
- // server configs, build commands, architecture decisions).
205
- //
206
- // We also check for tool usage — if the LLM read files, ran commands, or
207
- // searched code, the session likely has project-specific knowledge.
208
- const totalChars = estimateSessionChars(messages);
209
- const hasToolCalls = messages.some(m => m.role === "assistant" && Array.isArray(m.content) &&
210
- m.content.some((b) => typeof b === "object" && b !== null && "type" in b && b.type === "toolCall"));
211
- // Skip only if: very short AND no tool usage
212
- if (!hasToolCalls && (messages.length < 4 || totalChars < 200)) {
213
- return {
214
- pagesCreated: [],
215
- pagesUpdated: [],
216
- skipped: true,
217
- reason: `trivial session (${messages.length} messages, ${totalChars} chars, no tools)`,
218
- };
219
- }
220
- // Serialize recent messages only. For long sessions, the already-captured
221
- // wiki pages serve as context for earlier work — no need to re-serialize
222
- // old conversation. The wiki IS the summary.
223
- const MAX_CAPTURE_CHARS = 60_000; // ~15k tokens for recent messages
224
- let serialized = serializeSessionForWiki(messages);
225
- if (!serialized.trim()) {
226
- return {
227
- pagesCreated: [],
228
- pagesUpdated: [],
229
- skipped: true,
230
- reason: "empty session",
231
- };
232
- }
233
- // If serialized is too long even after collecting only messages, the session
234
- // is too massive for auto-capture to handle well. Skip it — rely on
235
- // mid-session wiki_write and /wiki-capture for knowledge persistence.
236
- if (serialized.length > MAX_CAPTURE_CHARS) {
237
- return {
238
- pagesCreated: [],
239
- pagesUpdated: [],
240
- skipped: true,
241
- reason: `session too large for auto-capture (${Math.round(serialized.length / 1000)}K chars). Use /wiki-capture or wiki_write during the session instead.`,
242
- };
243
- }
244
- // Build context from already-captured wiki pages — these ARE the
245
- // distilled summary of earlier work, better than raw conversation.
246
- let priorContext = "";
247
- if (alreadyCaptured && alreadyCaptured.length > 0) {
248
- const pageContents = [];
249
- for (const slug of alreadyCaptured) {
250
- // Try to find the page in any PARA category
251
- for (const cat of ["projects", "areas", "resources", "archives"]) {
252
- const page = await readPage(wikiDir, cat, slug);
253
- if (page) {
254
- pageContents.push(`### [[${slug}]] (${cat})\n${page.body.slice(0, 2000)}`);
255
- break;
256
- }
257
- }
258
- }
259
- if (pageContents.length > 0) {
260
- priorContext = [
261
- "<already-captured-pages>",
262
- "These wiki pages were already captured from earlier in this session.",
263
- "Focus on NEW knowledge not yet in these pages. Update existing pages if there is significant new information.",
264
- "",
265
- ...pageContents,
266
- "</already-captured-pages>",
267
- ].join("\n");
268
- }
269
- }
270
- // Build the capture prompt
271
- const userPrompt = generateSummary(serialized, {
272
- mode: "session",
273
- scope,
274
- });
275
- const fullPrompt = [
276
- userPrompt,
277
- priorContext,
278
- "",
279
- `Session file: ${sessionFile}`,
280
- `Project scope: ${scope.name}`,
281
- ].join("\n");
282
- const agentMessages = await runCaptureAgent(wikiDir, store, scope, model, modelRegistry, fullPrompt, timeoutMs);
283
- // Analyze what the agent did
284
- if (isNothingCaptured(agentMessages)) {
285
- return {
286
- pagesCreated: [],
287
- pagesUpdated: [],
288
- skipped: true,
289
- reason: "trivial session",
290
- };
291
- }
292
- const writtenPaths = extractWrittenPages(agentMessages);
293
- if (writtenPaths.length === 0) {
294
- return {
295
- pagesCreated: [],
296
- pagesUpdated: [],
297
- skipped: true,
298
- reason: "no pages written",
299
- };
300
- }
301
- const { created, updated } = await buildPageRefs(wikiDir, writtenPaths);
302
- const allPageSlugs = writtenPaths.map((p) => p.split("/").pop() ?? p);
303
- // Build a summary from the last assistant message text
304
- const summary = extractAssistantSummary(agentMessages);
305
- // Append session digest
306
- const digestEntry = {
307
- date: new Date().toISOString().split("T")[0],
308
- project: scope.name,
309
- sessionFile,
310
- scope: scope.name,
311
- capturedPages: allPageSlugs,
312
- summary: summary || `Captured ${writtenPaths.length} page(s) from session.`,
313
- };
314
- await appendSessionDigest(wikiDir, digestEntry);
315
- return {
316
- pagesCreated: created,
317
- pagesUpdated: updated,
318
- skipped: false,
319
- digestEntry,
320
- };
321
- }
322
- /**
323
- * Called when user explicitly requests capture mid-session via /wiki-capture.
324
- * Spins up a standalone Agent with wiki tools.
325
- */
326
- export async function explicitCapture(wikiDir, store, topic, messages, scope, sessionFile, model, modelRegistry, alreadyCaptured) {
327
- const MAX_EXPLICIT_CHARS = 60_000;
328
- let serialized = serializeSessionForWiki(messages);
329
- if (!serialized.trim()) {
330
- return {
331
- pagesCreated: [],
332
- pagesUpdated: [],
333
- skipped: true,
334
- reason: "empty session",
335
- };
336
- }
337
- // For large sessions, keep only the recent tail
338
- if (serialized.length > MAX_EXPLICIT_CHARS) {
339
- serialized = "[... earlier conversation omitted ...]\n\n"
340
- + serialized.slice(-MAX_EXPLICIT_CHARS);
341
- }
342
- // Build context from already-captured wiki pages
343
- let priorContext = "";
344
- if (alreadyCaptured && alreadyCaptured.length > 0) {
345
- const pageContents = [];
346
- for (const slug of alreadyCaptured) {
347
- for (const cat of ["projects", "areas", "resources", "archives"]) {
348
- const page = await readPage(wikiDir, cat, slug);
349
- if (page) {
350
- pageContents.push(`### [[${slug}]] (${cat})\n${page.body.slice(0, 2000)}`);
351
- break;
352
- }
353
- }
354
- }
355
- if (pageContents.length > 0) {
356
- priorContext = [
357
- "<already-captured-pages>",
358
- "These pages were already captured. Focus on NEW knowledge.",
359
- "",
360
- ...pageContents,
361
- "</already-captured-pages>",
362
- "",
363
- ].join("\n");
364
- }
365
- }
366
- // Build the explicit capture prompt
367
- const topicInstruction = topic
368
- ? `\n\nFocus on capturing knowledge about: ${topic}`
369
- : "\n\nIdentify and capture any valuable knowledge from this session.";
370
- const userPrompt = [
371
- EXPLICIT_CAPTURE_PROMPT,
372
- topicInstruction,
373
- priorContext,
374
- "",
375
- `Session file: ${sessionFile}`,
376
- `Project scope: ${scope.name}`,
377
- "",
378
- "<session-conversation>",
379
- serialized,
380
- "</session-conversation>",
381
- ].join("\n");
382
- const agentMessages = await runCaptureAgent(wikiDir, store, scope, model, modelRegistry, userPrompt,
383
- // Explicit capture gets a generous timeout (60s)
384
- 60_000);
385
- // Analyze what the agent did
386
- if (isNothingCaptured(agentMessages)) {
387
- return {
388
- pagesCreated: [],
389
- pagesUpdated: [],
390
- skipped: true,
391
- reason: "trivial session",
392
- };
393
- }
394
- const writtenPaths = extractWrittenPages(agentMessages);
395
- if (writtenPaths.length === 0) {
396
- return {
397
- pagesCreated: [],
398
- pagesUpdated: [],
399
- skipped: true,
400
- reason: "no pages written",
401
- };
402
- }
403
- const { created, updated } = await buildPageRefs(wikiDir, writtenPaths);
404
- const allPageSlugs = writtenPaths.map((p) => p.split("/").pop() ?? p);
405
- const summary = extractAssistantSummary(agentMessages);
406
- // Append session digest
407
- const digestEntry = {
408
- date: new Date().toISOString().split("T")[0],
409
- project: scope.name,
410
- sessionFile,
411
- scope: scope.name,
412
- capturedPages: allPageSlugs,
413
- summary: summary || `Captured ${writtenPaths.length} page(s) from session.`,
414
- };
415
- await appendSessionDigest(wikiDir, digestEntry);
416
- return {
417
- pagesCreated: created,
418
- pagesUpdated: updated,
419
- skipped: false,
420
- digestEntry,
421
- };
422
- }
423
- // -- Internal helpers --------------------------------------------------------
424
- /**
425
- * Extract a summary string from the agent's last assistant message.
426
- * Used for the session digest summary field.
427
- */
428
- function extractAssistantSummary(messages) {
429
- // Walk backwards to find the last assistant text
430
- for (let i = messages.length - 1; i >= 0; i--) {
431
- const msg = messages[i];
432
- if (typeof msg !== "object" || msg === null || !("role" in msg))
433
- continue;
434
- const m = msg;
435
- if (m.role !== "assistant")
436
- continue;
437
- const content = m.content;
438
- if (!Array.isArray(content))
439
- continue;
440
- const texts = [];
441
- for (const block of content) {
442
- if (typeof block !== "object" || block === null)
443
- continue;
444
- const b = block;
445
- if (b.type === "text" && typeof b.text === "string") {
446
- texts.push(b.text);
447
- }
448
- }
449
- if (texts.length > 0) {
450
- const full = texts.join(" ").trim();
451
- // Truncate to a reasonable summary length
452
- if (full.length > 300) {
453
- return full.slice(0, 297) + "...";
454
- }
455
- return full;
456
- }
457
- break;
458
- }
459
- return "";
460
- }
461
- //# sourceMappingURL=capture.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"capture.js","sourceRoot":"","sources":["../src/capture.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts DELETED
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * CLI for pi-para-daemon.
4
- *
5
- * Usage:
6
- * pi-para-daemon start [--foreground]
7
- * pi-para-daemon stop
8
- * pi-para-daemon status
9
- * pi-para-daemon process <session_file>
10
- * pi-para-daemon process-recent [--hours N]
11
- * pi-para-daemon retry-failed
12
- * pi-para-daemon history [--scope NAME]
13
- */
14
- export {};
15
- //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG"}