@caupulican/pi-adaptative 0.80.42 → 0.80.45

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 (101) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/bundled-resources/prompts/extensionify.md +20 -0
  3. package/dist/bundled-resources/prompts/learn.md +27 -0
  4. package/dist/bundled-resources/prompts/skillify.md +21 -0
  5. package/dist/bundled-resources/skills/pi-harness-learning/SKILL.md +217 -0
  6. package/dist/bundled-resources/skills/skill-architect/SKILL.md +162 -0
  7. package/dist/config.d.ts +17 -0
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +30 -0
  10. package/dist/config.js.map +1 -1
  11. package/dist/core/agent-session.d.ts +37 -2
  12. package/dist/core/agent-session.d.ts.map +1 -1
  13. package/dist/core/agent-session.js +215 -9
  14. package/dist/core/agent-session.js.map +1 -1
  15. package/dist/core/context-gc.d.ts.map +1 -1
  16. package/dist/core/context-gc.js +27 -5
  17. package/dist/core/context-gc.js.map +1 -1
  18. package/dist/core/extensions/loader.d.ts +10 -3
  19. package/dist/core/extensions/loader.d.ts.map +1 -1
  20. package/dist/core/extensions/loader.js +38 -7
  21. package/dist/core/extensions/loader.js.map +1 -1
  22. package/dist/core/extensions/runner.d.ts +6 -0
  23. package/dist/core/extensions/runner.d.ts.map +1 -1
  24. package/dist/core/extensions/runner.js +53 -6
  25. package/dist/core/extensions/runner.js.map +1 -1
  26. package/dist/core/extensions/types.d.ts +16 -2
  27. package/dist/core/extensions/types.d.ts.map +1 -1
  28. package/dist/core/extensions/types.js.map +1 -1
  29. package/dist/core/profile-registry.d.ts +39 -0
  30. package/dist/core/profile-registry.d.ts.map +1 -0
  31. package/dist/core/profile-registry.js +230 -0
  32. package/dist/core/profile-registry.js.map +1 -0
  33. package/dist/core/profile-resource-selection.d.ts +19 -0
  34. package/dist/core/profile-resource-selection.d.ts.map +1 -0
  35. package/dist/core/profile-resource-selection.js +84 -0
  36. package/dist/core/profile-resource-selection.js.map +1 -0
  37. package/dist/core/resource-loader.d.ts +33 -3
  38. package/dist/core/resource-loader.d.ts.map +1 -1
  39. package/dist/core/resource-loader.js +68 -11
  40. package/dist/core/resource-loader.js.map +1 -1
  41. package/dist/core/settings-manager.d.ts +44 -2
  42. package/dist/core/settings-manager.d.ts.map +1 -1
  43. package/dist/core/settings-manager.js +557 -27
  44. package/dist/core/settings-manager.js.map +1 -1
  45. package/dist/core/skills.d.ts +5 -0
  46. package/dist/core/skills.d.ts.map +1 -1
  47. package/dist/core/skills.js +2 -2
  48. package/dist/core/skills.js.map +1 -1
  49. package/dist/core/slash-commands.d.ts.map +1 -1
  50. package/dist/core/slash-commands.js +1 -0
  51. package/dist/core/slash-commands.js.map +1 -1
  52. package/dist/core/system-prompt.d.ts.map +1 -1
  53. package/dist/core/system-prompt.js +5 -17
  54. package/dist/core/system-prompt.js.map +1 -1
  55. package/dist/core/tools/extensionify.d.ts +33 -0
  56. package/dist/core/tools/extensionify.d.ts.map +1 -0
  57. package/dist/core/tools/extensionify.js +146 -0
  58. package/dist/core/tools/extensionify.js.map +1 -0
  59. package/dist/core/tools/index.d.ts +10 -1
  60. package/dist/core/tools/index.d.ts.map +1 -1
  61. package/dist/core/tools/index.js +36 -1
  62. package/dist/core/tools/index.js.map +1 -1
  63. package/dist/core/tools/skill-audit.d.ts +63 -0
  64. package/dist/core/tools/skill-audit.d.ts.map +1 -0
  65. package/dist/core/tools/skill-audit.js +175 -0
  66. package/dist/core/tools/skill-audit.js.map +1 -0
  67. package/dist/core/tools/skillify.d.ts +30 -0
  68. package/dist/core/tools/skillify.d.ts.map +1 -0
  69. package/dist/core/tools/skillify.js +91 -0
  70. package/dist/core/tools/skillify.js.map +1 -0
  71. package/dist/index.d.ts +1 -0
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +4 -0
  74. package/dist/index.js.map +1 -1
  75. package/dist/modes/interactive/components/profile-resource-editor.d.ts +50 -0
  76. package/dist/modes/interactive/components/profile-resource-editor.d.ts.map +1 -0
  77. package/dist/modes/interactive/components/profile-resource-editor.js +232 -0
  78. package/dist/modes/interactive/components/profile-resource-editor.js.map +1 -0
  79. package/dist/modes/interactive/components/profile-selector.d.ts +8 -0
  80. package/dist/modes/interactive/components/profile-selector.d.ts.map +1 -0
  81. package/dist/modes/interactive/components/profile-selector.js +77 -0
  82. package/dist/modes/interactive/components/profile-selector.js.map +1 -0
  83. package/dist/modes/interactive/components/settings-selector.d.ts +8 -0
  84. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  85. package/dist/modes/interactive/components/settings-selector.js +75 -0
  86. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  87. package/dist/modes/interactive/interactive-mode.d.ts +14 -0
  88. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  89. package/dist/modes/interactive/interactive-mode.js +434 -24
  90. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  91. package/docs/settings.md +20 -1
  92. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  93. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  94. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  95. package/examples/extensions/sandbox/package-lock.json +2 -2
  96. package/examples/extensions/sandbox/package.json +1 -1
  97. package/examples/extensions/with-deps/package-lock.json +2 -2
  98. package/examples/extensions/with-deps/package.json +1 -1
  99. package/examples/sdk/12-full-control.ts +4 -0
  100. package/npm-shrinkwrap.json +12 -12
  101. package/package.json +6 -6
package/docs/settings.md CHANGED
@@ -7,6 +7,7 @@ Pi uses JSON settings files with project settings overriding global settings. Pi
7
7
  | `~/.pi/agent/settings.json` | Global (all projects) |
8
8
  | `.pi/settings.json` | Project (current directory) |
9
9
  | `~/.pi/agent/resource-profiles/<hash>/settings.json` | User-level per repo/directory overlay; no repo files written |
10
+ | `~/.pi/agent/profiles/*.json` | Reusable named profile definitions |
10
11
 
11
12
  Edit directly or use `/settings` for common options.
12
13
 
@@ -313,6 +314,7 @@ Paths in `~/.pi/agent/settings.json` resolve relative to `~/.pi/agent`. Paths in
313
314
  | `themes` | string[] | `[]` | Local theme file paths or directories |
314
315
  | `enableSkillCommands` | boolean | `true` | Register skills as `/skill:name` commands |
315
316
  | `resourceProfiles` | object | `{}` | Named resource allow/block filters for `extensions`, `skills`, `prompts`, `themes`, `agents`, and `tools` |
317
+ | `~/.pi/agent/profiles/*.json` | files | - | Reusable named profile definitions with optional model/thinking metadata |
316
318
  | `activeResourceProfile` | string/string[] | - | Active profile name(s) |
317
319
  | `activeResourceProfiles` | string[] | - | Active profile names; equivalent to array form of `activeResourceProfile` |
318
320
  | `disabledResources` | object | `{}` | Legacy block filters; still supported and merged into resource profiles |
@@ -363,7 +365,7 @@ Resource profiles dynamically filter resources after discovery. Each resource ki
363
365
  }
364
366
  ```
365
367
 
366
- Use `--resource-profile lean` to select a profile for one session or subagent launch. Use `--resource-profile-json` for one-shot definitions that never touch disk:
368
+ Use `/profiles` in interactive mode to switch the current session profile without writing settings. Use `/profiles <name>` for a direct session-only switch, or `/settings` → **Profiles** to select from the settings menu. Use `--resource-profile lean` to select a profile for one session or subagent launch. Use `--resource-profile-json` for one-shot definitions that never touch disk:
367
369
 
368
370
  ```bash
369
371
  pi --resource-profile oneoff \
@@ -380,6 +382,23 @@ Resource files may also carry profile blocks. Pi parses only the matching `<reso
380
382
 
381
383
  Supported carriers: extension files (`.ts`/`.js`, usually inside comments), prompt templates, skill files, and context agent files (`AGENTS.md`, `CLAUDE.md`, `GEMINI.md`). Resource-profile block contents are data, not instructions.
382
384
 
385
+ Reusable profile files live under `~/.pi/agent/profiles/<name>.json`. They use a wrapper shape so metadata can live next to resource filters:
386
+
387
+ ```json
388
+ {
389
+ "name": "reviewer",
390
+ "description": "Safe review profile",
391
+ "model": "anthropic/claude-sonnet-4",
392
+ "thinking": "low",
393
+ "resources": {
394
+ "tools": { "allow": ["read", "grep", "context_audit"] },
395
+ "skills": { "allow": ["code-review"] }
396
+ }
397
+ }
398
+ ```
399
+
400
+ `resources` uses the same allow/block filter shape as `resourceProfiles`. Relative paths that start with `./` or `../` resolve from the profile file directory.
401
+
383
402
  Zero-footprint repo/directory overlays live under `~/.pi/agent/resource-profiles/<hash>/settings.json`, where `<hash>` is derived from the nearest VCS root (or current directory when no VCS root exists). These files are user-level settings; Pi does not write `.pi/settings.json` just to remember directory profiles.
384
403
 
385
404
  ## Example
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-custom-provider",
3
- "version": "0.80.39",
3
+ "version": "0.80.42",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-custom-provider",
9
- "version": "0.80.39",
9
+ "version": "0.80.42",
10
10
  "dependencies": {
11
11
  "@anthropic-ai/sdk": "^0.52.0"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-custom-provider-anthropic",
3
3
  "private": true,
4
- "version": "0.80.39",
4
+ "version": "0.80.42",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-custom-provider-gitlab-duo",
3
3
  "private": true,
4
- "version": "0.80.39",
4
+ "version": "0.80.42",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-sandbox",
3
- "version": "0.80.39",
3
+ "version": "0.80.42",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-sandbox",
9
- "version": "0.80.39",
9
+ "version": "0.80.42",
10
10
  "dependencies": {
11
11
  "@anthropic-ai/sandbox-runtime": "^0.0.26"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-sandbox",
3
3
  "private": true,
4
- "version": "0.80.39",
4
+ "version": "0.80.42",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-with-deps",
3
- "version": "0.80.39",
3
+ "version": "0.80.42",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-with-deps",
9
- "version": "0.80.39",
9
+ "version": "0.80.42",
10
10
  "dependencies": {
11
11
  "ms": "^2.1.3"
12
12
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-with-deps",
3
3
  "private": true,
4
- "version": "0.80.39",
4
+ "version": "0.80.42",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -46,8 +46,12 @@ const resourceLoader: ResourceLoader = {
46
46
  getSystemPrompt: () => `You are a minimal assistant.
47
47
  Available: read, bash. Be concise.`,
48
48
  getAppendSystemPrompt: () => [],
49
+ getLoadedExtension: () => undefined,
50
+ removeLoadedExtension: () => undefined,
51
+ loadSingleExtension: async () => ({ extension: null, error: "Not implemented" }),
49
52
  extendResources: () => {},
50
53
  reload: async () => {},
54
+ getDiscoverableExtensionPaths: async () => [],
51
55
  };
52
56
 
53
57
  const { session } = await createAgentSession({
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@caupulican/pi-adaptative",
3
- "version": "0.80.42",
3
+ "version": "0.80.45",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@caupulican/pi-adaptative",
9
- "version": "0.80.42",
9
+ "version": "0.80.45",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@caupulican/pi-agent-core": "^0.80.42",
13
- "@caupulican/pi-ai": "^0.80.42",
14
- "@caupulican/pi-tui": "^0.80.42",
12
+ "@caupulican/pi-agent-core": "^0.80.45",
13
+ "@caupulican/pi-ai": "^0.80.45",
14
+ "@caupulican/pi-tui": "^0.80.45",
15
15
  "@silvia-odwyer/photon-node": "0.3.4",
16
16
  "chalk": "5.6.2",
17
17
  "cross-spawn": "7.0.6",
@@ -474,11 +474,11 @@
474
474
  }
475
475
  },
476
476
  "node_modules/@caupulican/pi-agent-core": {
477
- "version": "0.80.42",
478
- "resolved": "https://registry.npmjs.org/@caupulican/pi-agent-core/-/pi-agent-core-0.80.42.tgz",
477
+ "version": "0.80.45",
478
+ "resolved": "https://registry.npmjs.org/@caupulican/pi-agent-core/-/pi-agent-core-0.80.45.tgz",
479
479
  "license": "MIT",
480
480
  "dependencies": {
481
- "@caupulican/pi-ai": "^0.80.42",
481
+ "@caupulican/pi-ai": "^0.80.45",
482
482
  "ignore": "7.0.5",
483
483
  "typebox": "1.1.38",
484
484
  "yaml": "2.9.0"
@@ -488,8 +488,8 @@
488
488
  }
489
489
  },
490
490
  "node_modules/@caupulican/pi-ai": {
491
- "version": "0.80.42",
492
- "resolved": "https://registry.npmjs.org/@caupulican/pi-ai/-/pi-ai-0.80.42.tgz",
491
+ "version": "0.80.45",
492
+ "resolved": "https://registry.npmjs.org/@caupulican/pi-ai/-/pi-ai-0.80.45.tgz",
493
493
  "license": "MIT",
494
494
  "dependencies": {
495
495
  "@anthropic-ai/sdk": "0.91.1",
@@ -511,8 +511,8 @@
511
511
  }
512
512
  },
513
513
  "node_modules/@caupulican/pi-tui": {
514
- "version": "0.80.42",
515
- "resolved": "https://registry.npmjs.org/@caupulican/pi-tui/-/pi-tui-0.80.42.tgz",
514
+ "version": "0.80.45",
515
+ "resolved": "https://registry.npmjs.org/@caupulican/pi-tui/-/pi-tui-0.80.45.tgz",
516
516
  "license": "MIT",
517
517
  "dependencies": {
518
518
  "get-east-asian-width": "1.6.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@caupulican/pi-adaptative",
3
- "version": "0.80.42",
3
+ "version": "0.80.45",
4
4
  "description": "Adaptive fork of Pi coding agent for self-evolving agent harness experiments",
5
5
  "type": "module",
6
6
  "piConfig": {
@@ -34,16 +34,16 @@
34
34
  "clean": "shx rm -rf dist",
35
35
  "build": "node ../../scripts/tsgo-or-tsc.mjs -p tsconfig.build.json && shx chmod +x dist/cli.js && npm run copy-assets",
36
36
  "build:binary": "npm --prefix ../tui run build && npm --prefix ../ai run build && npm --prefix ../agent run build && npm run build && bun build --compile ./dist/bun/cli.js ./src/utils/image-resize-worker.ts --outfile dist/pi && npm run copy-binary-assets",
37
- "copy-assets": "shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/modes/interactive/assets && shx cp src/modes/interactive/assets/*.png dist/modes/interactive/assets/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/",
38
- "copy-binary-assets": "shx cp package.json dist/ && shx cp README.md dist/ && shx cp CHANGELOG.md dist/ && shx mkdir -p dist/theme && shx cp src/modes/interactive/theme/*.json dist/theme/ && shx mkdir -p dist/assets && shx cp src/modes/interactive/assets/*.png dist/assets/ && shx mkdir -p dist/export-html/vendor && shx cp src/core/export-html/template.html dist/export-html/ && shx cp src/core/export-html/vendor/*.js dist/export-html/vendor/ && shx cp -r docs dist/ && shx cp -r examples dist/ && shx cp ../../node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm dist/",
37
+ "copy-assets": "shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/modes/interactive/assets && shx cp src/modes/interactive/assets/*.png dist/modes/interactive/assets/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/ && shx mkdir -p dist/bundled-resources && shx cp -r src/bundled-resources/* dist/bundled-resources/",
38
+ "copy-binary-assets": "shx cp package.json dist/ && shx cp README.md dist/ && shx cp CHANGELOG.md dist/ && shx mkdir -p dist/theme && shx cp src/modes/interactive/theme/*.json dist/theme/ && shx mkdir -p dist/assets && shx cp src/modes/interactive/assets/*.png dist/assets/ && shx mkdir -p dist/export-html/vendor && shx cp src/core/export-html/template.html dist/export-html/ && shx cp src/core/export-html/vendor/*.js dist/export-html/vendor/ && shx mkdir -p dist/bundled-resources && shx cp -r src/bundled-resources/* dist/bundled-resources/ && shx cp -r docs dist/ && shx cp -r examples dist/ && shx cp ../../node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm dist/",
39
39
  "test": "vitest --run",
40
40
  "shrinkwrap": "node ../../scripts/generate-coding-agent-shrinkwrap.mjs",
41
41
  "prepublishOnly": "npm run clean && npm run build && npm run shrinkwrap"
42
42
  },
43
43
  "dependencies": {
44
- "@caupulican/pi-agent-core": "^0.80.42",
45
- "@caupulican/pi-ai": "^0.80.42",
46
- "@caupulican/pi-tui": "^0.80.42",
44
+ "@caupulican/pi-agent-core": "^0.80.45",
45
+ "@caupulican/pi-ai": "^0.80.45",
46
+ "@caupulican/pi-tui": "^0.80.45",
47
47
  "@silvia-odwyer/photon-node": "0.3.4",
48
48
  "chalk": "5.6.2",
49
49
  "cross-spawn": "7.0.6",