pi-para 0.5.5 → 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 (227) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/package.json +8 -5
  3. package/scripts/build-assets.mjs +29 -0
  4. package/scripts/install.ps1 +27 -16
  5. package/scripts/install.sh +3 -2
  6. package/scripts/smoke-install.mjs +5 -3
  7. package/src/doctor.ts +5 -0
  8. package/dist/atomic-write.d.ts +0 -2
  9. package/dist/atomic-write.d.ts.map +0 -1
  10. package/dist/atomic-write.js +0 -18
  11. package/dist/atomic-write.js.map +0 -1
  12. package/dist/capture.d.ts +0 -34
  13. package/dist/capture.d.ts.map +0 -1
  14. package/dist/capture.js +0 -461
  15. package/dist/capture.js.map +0 -1
  16. package/dist/cli-legacy.d.ts +0 -4
  17. package/dist/cli-legacy.d.ts.map +0 -1
  18. package/dist/cli-legacy.js +0 -41
  19. package/dist/cli-legacy.js.map +0 -1
  20. package/dist/cli.d.ts +0 -8
  21. package/dist/cli.d.ts.map +0 -1
  22. package/dist/cli.js +0 -511
  23. package/dist/cli.js.map +0 -1
  24. package/dist/commands.d.ts +0 -15
  25. package/dist/commands.d.ts.map +0 -1
  26. package/dist/commands.js +0 -719
  27. package/dist/commands.js.map +0 -1
  28. package/dist/config.d.ts +0 -104
  29. package/dist/config.d.ts.map +0 -1
  30. package/dist/config.js +0 -242
  31. package/dist/config.js.map +0 -1
  32. package/dist/context.d.ts +0 -63
  33. package/dist/context.d.ts.map +0 -1
  34. package/dist/context.js +0 -311
  35. package/dist/context.js.map +0 -1
  36. package/dist/credentials.d.ts +0 -27
  37. package/dist/credentials.d.ts.map +0 -1
  38. package/dist/credentials.js +0 -85
  39. package/dist/credentials.js.map +0 -1
  40. package/dist/daemon.d.ts +0 -49
  41. package/dist/daemon.d.ts.map +0 -1
  42. package/dist/daemon.js +0 -226
  43. package/dist/daemon.js.map +0 -1
  44. package/dist/doctor.d.ts +0 -20
  45. package/dist/doctor.d.ts.map +0 -1
  46. package/dist/doctor.js +0 -171
  47. package/dist/doctor.js.map +0 -1
  48. package/dist/frontmatter.d.ts +0 -59
  49. package/dist/frontmatter.d.ts.map +0 -1
  50. package/dist/frontmatter.js +0 -170
  51. package/dist/frontmatter.js.map +0 -1
  52. package/dist/gepa/dataset.d.ts +0 -36
  53. package/dist/gepa/dataset.d.ts.map +0 -1
  54. package/dist/gepa/dataset.js +0 -148
  55. package/dist/gepa/dataset.js.map +0 -1
  56. package/dist/gepa/evaluator.d.ts +0 -51
  57. package/dist/gepa/evaluator.d.ts.map +0 -1
  58. package/dist/gepa/evaluator.js +0 -317
  59. package/dist/gepa/evaluator.js.map +0 -1
  60. package/dist/gepa/index.d.ts +0 -66
  61. package/dist/gepa/index.d.ts.map +0 -1
  62. package/dist/gepa/index.js +0 -240
  63. package/dist/gepa/index.js.map +0 -1
  64. package/dist/gepa/llm.d.ts +0 -35
  65. package/dist/gepa/llm.d.ts.map +0 -1
  66. package/dist/gepa/llm.js +0 -268
  67. package/dist/gepa/llm.js.map +0 -1
  68. package/dist/gepa/optimized/capture-prompt.txt +0 -65
  69. package/dist/gepa/optimizer.d.ts +0 -29
  70. package/dist/gepa/optimizer.d.ts.map +0 -1
  71. package/dist/gepa/optimizer.js +0 -249
  72. package/dist/gepa/optimizer.js.map +0 -1
  73. package/dist/gepa/targets.d.ts +0 -39
  74. package/dist/gepa/targets.d.ts.map +0 -1
  75. package/dist/gepa/targets.js +0 -326
  76. package/dist/gepa/targets.js.map +0 -1
  77. package/dist/gepa/types.d.ts +0 -168
  78. package/dist/gepa/types.d.ts.map +0 -1
  79. package/dist/gepa/types.js +0 -124
  80. package/dist/gepa/types.js.map +0 -1
  81. package/dist/index.d.ts +0 -21
  82. package/dist/index.d.ts.map +0 -1
  83. package/dist/index.js +0 -359
  84. package/dist/index.js.map +0 -1
  85. package/dist/ingest.d.ts +0 -88
  86. package/dist/ingest.d.ts.map +0 -1
  87. package/dist/ingest.js +0 -105
  88. package/dist/ingest.js.map +0 -1
  89. package/dist/link-discovery.d.ts +0 -40
  90. package/dist/link-discovery.d.ts.map +0 -1
  91. package/dist/link-discovery.js +0 -122
  92. package/dist/link-discovery.js.map +0 -1
  93. package/dist/link-utils.d.ts +0 -30
  94. package/dist/link-utils.d.ts.map +0 -1
  95. package/dist/link-utils.js +0 -145
  96. package/dist/link-utils.js.map +0 -1
  97. package/dist/lint.d.ts +0 -39
  98. package/dist/lint.d.ts.map +0 -1
  99. package/dist/lint.js +0 -827
  100. package/dist/lint.js.map +0 -1
  101. package/dist/maintainer.d.ts +0 -24
  102. package/dist/maintainer.d.ts.map +0 -1
  103. package/dist/maintainer.js +0 -358
  104. package/dist/maintainer.js.map +0 -1
  105. package/dist/model-resolver.d.ts +0 -30
  106. package/dist/model-resolver.d.ts.map +0 -1
  107. package/dist/model-resolver.js +0 -71
  108. package/dist/model-resolver.js.map +0 -1
  109. package/dist/paths.d.ts +0 -20
  110. package/dist/paths.d.ts.map +0 -1
  111. package/dist/paths.js +0 -33
  112. package/dist/paths.js.map +0 -1
  113. package/dist/processor.d.ts +0 -14
  114. package/dist/processor.d.ts.map +0 -1
  115. package/dist/processor.js +0 -361
  116. package/dist/processor.js.map +0 -1
  117. package/dist/qmd-providers.d.ts +0 -12
  118. package/dist/qmd-providers.d.ts.map +0 -1
  119. package/dist/qmd-providers.js +0 -45
  120. package/dist/qmd-providers.js.map +0 -1
  121. package/dist/query.d.ts +0 -69
  122. package/dist/query.d.ts.map +0 -1
  123. package/dist/query.js +0 -120
  124. package/dist/query.js.map +0 -1
  125. package/dist/raw.d.ts +0 -57
  126. package/dist/raw.d.ts.map +0 -1
  127. package/dist/raw.js +0 -219
  128. package/dist/raw.js.map +0 -1
  129. package/dist/redact.d.ts +0 -21
  130. package/dist/redact.d.ts.map +0 -1
  131. package/dist/redact.js +0 -143
  132. package/dist/redact.js.map +0 -1
  133. package/dist/repair.d.ts +0 -11
  134. package/dist/repair.d.ts.map +0 -1
  135. package/dist/repair.js +0 -41
  136. package/dist/repair.js.map +0 -1
  137. package/dist/scheduler/controls.d.ts +0 -35
  138. package/dist/scheduler/controls.d.ts.map +0 -1
  139. package/dist/scheduler/controls.js +0 -98
  140. package/dist/scheduler/controls.js.map +0 -1
  141. package/dist/scheduler/index.d.ts +0 -48
  142. package/dist/scheduler/index.d.ts.map +0 -1
  143. package/dist/scheduler/index.js +0 -193
  144. package/dist/scheduler/index.js.map +0 -1
  145. package/dist/scheduler/leases.d.ts +0 -22
  146. package/dist/scheduler/leases.d.ts.map +0 -1
  147. package/dist/scheduler/leases.js +0 -74
  148. package/dist/scheduler/leases.js.map +0 -1
  149. package/dist/scheduler/session-capture.d.ts +0 -33
  150. package/dist/scheduler/session-capture.d.ts.map +0 -1
  151. package/dist/scheduler/session-capture.js +0 -108
  152. package/dist/scheduler/session-capture.js.map +0 -1
  153. package/dist/scheduler/state.d.ts +0 -56
  154. package/dist/scheduler/state.d.ts.map +0 -1
  155. package/dist/scheduler/state.js +0 -210
  156. package/dist/scheduler/state.js.map +0 -1
  157. package/dist/scope.d.ts +0 -54
  158. package/dist/scope.d.ts.map +0 -1
  159. package/dist/scope.js +0 -161
  160. package/dist/scope.js.map +0 -1
  161. package/dist/scripts/bulk-link-fix.d.ts +0 -9
  162. package/dist/scripts/bulk-link-fix.d.ts.map +0 -1
  163. package/dist/scripts/bulk-link-fix.js +0 -106
  164. package/dist/scripts/bulk-link-fix.js.map +0 -1
  165. package/dist/session-tools.d.ts +0 -33
  166. package/dist/session-tools.d.ts.map +0 -1
  167. package/dist/session-tools.js +0 -211
  168. package/dist/session-tools.js.map +0 -1
  169. package/dist/settings.d.ts +0 -19
  170. package/dist/settings.d.ts.map +0 -1
  171. package/dist/settings.js +0 -106
  172. package/dist/settings.js.map +0 -1
  173. package/dist/setup.d.ts +0 -29
  174. package/dist/setup.d.ts.map +0 -1
  175. package/dist/setup.js +0 -90
  176. package/dist/setup.js.map +0 -1
  177. package/dist/state.d.ts +0 -54
  178. package/dist/state.d.ts.map +0 -1
  179. package/dist/state.js +0 -176
  180. package/dist/state.js.map +0 -1
  181. package/dist/status.d.ts +0 -22
  182. package/dist/status.d.ts.map +0 -1
  183. package/dist/status.js +0 -93
  184. package/dist/status.js.map +0 -1
  185. package/dist/store.d.ts +0 -71
  186. package/dist/store.d.ts.map +0 -1
  187. package/dist/store.js +0 -282
  188. package/dist/store.js.map +0 -1
  189. package/dist/summarize.d.ts +0 -60
  190. package/dist/summarize.d.ts.map +0 -1
  191. package/dist/summarize.js +0 -266
  192. package/dist/summarize.js.map +0 -1
  193. package/dist/tag-registry.d.ts +0 -56
  194. package/dist/tag-registry.d.ts.map +0 -1
  195. package/dist/tag-registry.js +0 -146
  196. package/dist/tag-registry.js.map +0 -1
  197. package/dist/templates/prompts.d.ts +0 -63
  198. package/dist/templates/prompts.d.ts.map +0 -1
  199. package/dist/templates/prompts.js +0 -260
  200. package/dist/templates/prompts.js.map +0 -1
  201. package/dist/tools.d.ts +0 -26
  202. package/dist/tools.d.ts.map +0 -1
  203. package/dist/tools.js +0 -1198
  204. package/dist/tools.js.map +0 -1
  205. package/dist/watcher.d.ts +0 -25
  206. package/dist/watcher.d.ts.map +0 -1
  207. package/dist/watcher.js +0 -84
  208. package/dist/watcher.js.map +0 -1
  209. package/dist/webui/client/dist/index.html +0 -1885
  210. package/dist/webui/server.d.ts +0 -31
  211. package/dist/webui/server.d.ts.map +0 -1
  212. package/dist/webui/server.js +0 -566
  213. package/dist/webui/server.js.map +0 -1
  214. package/dist/wiki-tool-guidance.d.ts +0 -6
  215. package/dist/wiki-tool-guidance.d.ts.map +0 -1
  216. package/dist/wiki-tool-guidance.js +0 -70
  217. package/dist/wiki-tool-guidance.js.map +0 -1
  218. package/dist/wiki.d.ts +0 -108
  219. package/dist/wiki.d.ts.map +0 -1
  220. package/dist/wiki.js +0 -497
  221. package/dist/wiki.js.map +0 -1
  222. package/scripts/gepa/__pycache__/dataset.cpython-313.pyc +0 -0
  223. package/scripts/gepa/__pycache__/lm_providers.cpython-313.pyc +0 -0
  224. package/scripts/gepa/__pycache__/metric.cpython-313.pyc +0 -0
  225. package/scripts/gepa/__pycache__/program.cpython-313.pyc +0 -0
  226. package/scripts/gepa/__pycache__/wiki_reader.cpython-313.pyc +0 -0
  227. package/scripts/gepa/uv.lock +0 -2241
package/CHANGELOG.md CHANGED
@@ -2,7 +2,29 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## [0.6.0] — 2026-07-14
6
+
7
+ ### Breaking
8
+ - Node.js >= 22 is now required (`engines.node`), matching the embedded qmd-engine SDK. Installers reject Node 20/21.
9
+
5
10
  ### Changed
11
+ - Upgraded `qmd-engine` to ^2.5.0 — `node-llama-cpp` is now an optional peer dependency upstream, so API-provider installs no longer pull the native llama.cpp toolchain.
12
+ - Upgraded `better-sqlite3` to ^12.8.0 (prebuilt binaries for current Node majors, including Node 25 on Windows).
13
+ - Wiki context is injected as a named `<system-reminder name="pi-para-wiki-context">` block with explicit wiki operating rules (search first, verify stale claims, persist decisions, prefer wiki_edit, no secrets).
14
+
15
+ ### Performance
16
+ - `wiki_write` inline overhead cut from ~2.3s to ~0.6s on 500+ page wikis: single-pass parallel `rebuildIndex`, readdir-only slug scan for auto-linking, and QMD reindex deferred to the debounced background maintenance queue (same as `wiki_edit`).
17
+ - `wiki_query` self-heals stale search state: on zero results it refreshes the QMD filesystem index once and retries before reporting no matches.
18
+
19
+ ### Fixed (Windows)
20
+ - `scripts/install.ps1` requires Node >= 22, invokes `npx.cmd` explicitly (bare `npx` resolves to npx.ps1 and is blocked under restricted execution policies), and propagates `$LASTEXITCODE`.
21
+ - `scripts/install.sh` minimum Node raised to 22.
22
+ - Build/clean npm scripts are cross-platform (Node-based asset copy instead of POSIX `mkdir -p`/`cp`/`rm -rf`).
23
+ - Fresh-install smoke test works on Windows (`fileURLToPath` for paths; sets both `HOME` and `USERPROFILE`).
24
+ - `pi-para doctor` no longer emits a false secrets-permission warning on Windows/NTFS.
25
+ - CI now includes a `windows-latest` job (typecheck, build, fresh-install smoke).
26
+
27
+ ### Changed (docs/infra)
6
28
  - Primary setup/runtime documentation now targets the no-daemon in-process scheduler architecture.
7
29
  - Added cross-platform install wrappers in `scripts/install.sh` and `scripts/install.ps1`.
8
30
  - Deprecated legacy daemon setup artifacts: `setup.sh` now delegates to the current setup flow, and `pi-para-daemon.service` / `DAEMON-PLAN.md` are marked legacy.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-para",
3
- "version": "0.5.5",
3
+ "version": "0.6.0",
4
4
  "description": "PARA Knowledge Base Extension for pi — persistent, LLM-curated personal wiki",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -144,8 +144,8 @@
144
144
  "skills"
145
145
  ],
146
146
  "scripts": {
147
- "clean": "rm -rf dist",
148
- "build": "tsc -p tsconfig.json && mkdir -p dist/webui/client/dist && cp src/webui/client/dist/index.html dist/webui/client/dist/index.html && mkdir -p dist/gepa/optimized && cp -r src/gepa/optimized/*.txt dist/gepa/optimized/ 2>/dev/null || true",
147
+ "clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
148
+ "build": "tsc -p tsconfig.json && node scripts/build-assets.mjs",
149
149
  "check": "tsc --noEmit",
150
150
  "test": "vitest --run",
151
151
  "test:coverage": "vitest --run --coverage",
@@ -155,10 +155,13 @@
155
155
  },
156
156
  "dependencies": {
157
157
  "@types/better-sqlite3": "^7.6.13",
158
- "better-sqlite3": "^11.9.1",
159
- "qmd-engine": "^2.3.3",
158
+ "better-sqlite3": "^12.11.1",
159
+ "qmd-engine": "^2.5.0",
160
160
  "yaml": "^2.8.2"
161
161
  },
162
+ "engines": {
163
+ "node": ">=22.0.0"
164
+ },
162
165
  "peerDependencies": {
163
166
  "@earendil-works/pi-agent-core": "^0.80.2",
164
167
  "@earendil-works/pi-ai": "^0.80.2",
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env node
2
+ /* v8 ignore start */
3
+ // Cross-platform post-tsc asset copy (replaces POSIX mkdir -p/cp in npm build).
4
+ import { cp, mkdir, readdir } from "node:fs/promises";
5
+ import { existsSync } from "node:fs";
6
+ import { fileURLToPath } from "node:url";
7
+ import { join, resolve, dirname } from "node:path";
8
+
9
+ const root = resolve(dirname(fileURLToPath(import.meta.url)), "..");
10
+
11
+ // 1. Web UI client bundle
12
+ const webuiSrc = join(root, "src", "webui", "client", "dist", "index.html");
13
+ const webuiDestDir = join(root, "dist", "webui", "client", "dist");
14
+ await mkdir(webuiDestDir, { recursive: true });
15
+ if (existsSync(webuiSrc)) {
16
+ await cp(webuiSrc, join(webuiDestDir, "index.html"));
17
+ }
18
+
19
+ // 2. GEPA optimized prompt text files (optional)
20
+ const gepaSrcDir = join(root, "src", "gepa", "optimized");
21
+ const gepaDestDir = join(root, "dist", "gepa", "optimized");
22
+ await mkdir(gepaDestDir, { recursive: true });
23
+ if (existsSync(gepaSrcDir)) {
24
+ for (const entry of await readdir(gepaSrcDir)) {
25
+ if (entry.endsWith(".txt")) {
26
+ await cp(join(gepaSrcDir, entry), join(gepaDestDir, entry));
27
+ }
28
+ }
29
+ }
@@ -9,36 +9,47 @@ Write-Host ""
9
9
 
10
10
  $package = "pi-para"
11
11
  $packageLatest = "$package@latest"
12
- $minMajor = 20
13
- $minMinor = 12
14
-
15
- if (-not (Get-Command npx -ErrorAction SilentlyContinue)) {
16
- Write-Host " ✗ npx not found." -ForegroundColor Red
17
- Write-Host ""
18
- Write-Host " Install Node.js (>= $minMajor.$minMinor) from https://nodejs.org, then re-run." -ForegroundColor Yellow
19
- Write-Host ""
20
- exit 1
21
- }
12
+ # qmd-engine (embedded search SDK) requires Node >= 22.
13
+ $minMajor = 22
22
14
 
23
15
  $nodeVer = (node -v 2>$null) -replace '^v',''
24
16
  if (-not $nodeVer) {
25
17
  Write-Host " ✗ Node.js not found on PATH." -ForegroundColor Red
26
- Write-Host " Install Node.js (>= $minMajor.$minMinor) from https://nodejs.org, then re-run." -ForegroundColor Yellow
18
+ Write-Host " Install Node.js (>= $minMajor) from https://nodejs.org, then re-run." -ForegroundColor Yellow
27
19
  exit 1
28
20
  }
29
21
 
30
22
  $parts = $nodeVer.Split('.')
31
23
  $major = [int]$parts[0]
32
- $minor = [int]$parts[1]
33
- if ($major -lt $minMajor -or ($major -eq $minMajor -and $minor -lt $minMinor)) {
34
- Write-Host " ✗ Node.js $nodeVer is too old (requires >= $minMajor.$minMinor)" -ForegroundColor Red
24
+ if ($major -lt $minMajor) {
25
+ Write-Host " ✗ Node.js $nodeVer is too old (pi-para requires Node >= $minMajor)" -ForegroundColor Red
35
26
  Write-Host " Upgrade Node.js: https://nodejs.org" -ForegroundColor Yellow
36
27
  exit 1
37
28
  }
38
29
 
39
- Write-Host " → Using npx (Node $nodeVer)" -ForegroundColor Gray
30
+ # Resolve npx.cmd explicitly. Bare `npx` resolves to npx.ps1, which fails
31
+ # under restricted PowerShell execution policies.
32
+ $npx = $null
33
+ $npxCmd = Get-Command npx.cmd -ErrorAction SilentlyContinue
34
+ if ($npxCmd) {
35
+ $npx = $npxCmd.Source
36
+ } else {
37
+ $nodeCmd = Get-Command node -ErrorAction SilentlyContinue
38
+ if ($nodeCmd) {
39
+ $candidate = Join-Path (Split-Path $nodeCmd.Source) "npx.cmd"
40
+ if (Test-Path $candidate) { $npx = $candidate }
41
+ }
42
+ }
43
+ if (-not $npx) {
44
+ Write-Host " ✗ npx.cmd not found." -ForegroundColor Red
45
+ Write-Host " Install Node.js (>= $minMajor) from https://nodejs.org, then re-run." -ForegroundColor Yellow
46
+ exit 1
47
+ }
48
+
49
+ Write-Host " → Using $npx (Node $nodeVer)" -ForegroundColor Gray
40
50
  Write-Host ""
41
51
 
42
52
  # Always pin @latest so npx does a registry lookup instead of reusing an older
43
53
  # cached package.
44
- & npx -y $packageLatest setup @args
54
+ & $npx -y $packageLatest setup @args
55
+ exit $LASTEXITCODE
@@ -6,8 +6,9 @@ set -euo pipefail
6
6
  # curl -fsSL https://raw.githubusercontent.com/picassio/pi-para/main/scripts/install.sh | bash
7
7
 
8
8
  PACKAGE="pi-para"
9
- MIN_NODE_MAJOR=20
10
- MIN_NODE_MINOR=12
9
+ # qmd-engine (embedded search SDK) requires Node >= 22.
10
+ MIN_NODE_MAJOR=22
11
+ MIN_NODE_MINOR=0
11
12
 
12
13
  check_node_version() {
13
14
  if ! command -v node >/dev/null 2>&1; then
@@ -3,12 +3,13 @@
3
3
  import { mkdtemp, rm, access } from "node:fs/promises";
4
4
  import { constants } from "node:fs";
5
5
  import { tmpdir } from "node:os";
6
- import { join, resolve } from "node:path";
6
+ import { join, resolve, dirname } from "node:path";
7
+ import { fileURLToPath } from "node:url";
7
8
  import { execFile } from "node:child_process";
8
9
  import { promisify } from "node:util";
9
10
 
10
11
  const execFileAsync = promisify(execFile);
11
- const root = resolve(new URL("..", import.meta.url).pathname);
12
+ const root = resolve(dirname(fileURLToPath(import.meta.url)), "..");
12
13
  const cli = join(root, "dist", "cli.js");
13
14
 
14
15
  async function main() {
@@ -17,7 +18,8 @@ async function main() {
17
18
  });
18
19
 
19
20
  const home = await mkdtemp(join(tmpdir(), "pi-para-smoke-"));
20
- const env = { ...process.env, HOME: home };
21
+ // os.homedir() reads HOME on POSIX and USERPROFILE on Windows — set both.
22
+ const env = { ...process.env, HOME: home, USERPROFILE: home };
21
23
 
22
24
  try {
23
25
  await run([cli, "setup", "--yes", "--local", root], env);
package/src/doctor.ts CHANGED
@@ -101,6 +101,11 @@ async function checkSecrets(secretsPath: string): Promise<DoctorCheck> {
101
101
  try {
102
102
  const store = await readSecretStore(secretsPath);
103
103
  if (!existsSync(secretsPath)) return { name: "secrets", status: "ok", message: "no local pi-para secrets configured" };
104
+ // POSIX mode bits are meaningless on Windows/NTFS — stat reports 666 and
105
+ // chmod is a no-op, so a permissions warning there is a false positive.
106
+ if (process.platform === "win32") {
107
+ return { name: "secrets", status: "ok", message: `${Object.keys(store.secrets).length} local secret(s) (POSIX permission check skipped on Windows)` };
108
+ }
104
109
  const mode = statSync(secretsPath).mode & 0o777;
105
110
  if (mode & 0o077) {
106
111
  return { name: "secrets", status: "warn", message: `${secretsPath} permissions are too open (${mode.toString(8)})`, fixable: true };
@@ -1,2 +0,0 @@
1
- export declare function atomicWriteFile(path: string, content: string, mode?: number): Promise<void>;
2
- //# sourceMappingURL=atomic-write.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"atomic-write.d.ts","sourceRoot":"","sources":["../src/atomic-write.ts"],"names":[],"mappings":"AAKA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWjG"}
@@ -1,18 +0,0 @@
1
- import { closeSync, fsyncSync, openSync, renameSync, writeFileSync } from "node:fs";
2
- import { mkdir } from "node:fs/promises";
3
- import { dirname, join } from "node:path";
4
- import { randomUUID } from "node:crypto";
5
- export async function atomicWriteFile(path, content, mode) {
6
- await mkdir(dirname(path), { recursive: true });
7
- const tempPath = join(dirname(path), `.${randomUUID()}.tmp`);
8
- const fd = openSync(tempPath, "w", mode);
9
- try {
10
- writeFileSync(fd, content, "utf-8");
11
- fsyncSync(fd);
12
- }
13
- finally {
14
- closeSync(fd);
15
- }
16
- renameSync(tempPath, path);
17
- }
18
- //# sourceMappingURL=atomic-write.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"atomic-write.js","sourceRoot":"","sources":["../src/atomic-write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpF,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,OAAe,EAAE,IAAa;IAChF,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC;QACH,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACpC,SAAS,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;IACD,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC"}
package/dist/capture.d.ts DELETED
@@ -1,34 +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 type { Model } from "@earendil-works/pi-ai";
11
- import type { AgentMessage } from "@earendil-works/pi-agent-core";
12
- import type { ModelRegistry } from "@earendil-works/pi-coding-agent";
13
- import type { QMDStore } from "qmd-engine";
14
- import type { ProjectScope } from "./scope.js";
15
- import type { PageRef } from "./wiki.js";
16
- import type { SessionDigest } from "./raw.js";
17
- export interface CaptureResult {
18
- pagesCreated: PageRef[];
19
- pagesUpdated: PageRef[];
20
- skipped: boolean;
21
- reason?: string;
22
- digestEntry?: SessionDigest;
23
- }
24
- /**
25
- * Called automatically on session_shutdown.
26
- * Spins up a standalone Agent with wiki tools, aborts after timeoutMs.
27
- */
28
- export declare function autoCapture(wikiDir: string, store: QMDStore, messages: AgentMessage[], scope: ProjectScope, sessionFile: string, model: Model<any>, modelRegistry: ModelRegistry, timeoutMs?: number, alreadyCaptured?: string[]): Promise<CaptureResult>;
29
- /**
30
- * Called when user explicitly requests capture mid-session via /wiki-capture.
31
- * Spins up a standalone Agent with wiki tools.
32
- */
33
- export declare function explicitCapture(wikiDir: string, store: QMDStore, topic: string | undefined, messages: AgentMessage[], scope: ProjectScope, sessionFile: string, model: Model<any>, modelRegistry: ModelRegistry, alreadyCaptured?: string[]): Promise<CaptureResult>;
34
- //# sourceMappingURL=capture.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../src/capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,+BAA+B,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,WAAW,CAAC;AAGvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAO9C,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,aAAa,CAAC;CAC7B;AAqMD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,YAAY,EAAE,EACxB,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,aAAa,EAAE,aAAa,EAC5B,SAAS,CAAC,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,MAAM,EAAE,GACzB,OAAO,CAAC,aAAa,CAAC,CAkJxB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,EAAE,YAAY,EAAE,EACxB,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,aAAa,EAAE,aAAa,EAC5B,eAAe,CAAC,EAAE,MAAM,EAAE,GACzB,OAAO,CAAC,aAAa,CAAC,CAqHxB"}