pi-model-profiles 0.2.0 → 0.3.1
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.
- package/CHANGELOG.md +16 -2
- package/README.md +0 -1
- package/package.json +66 -66
- package/src/constants.ts +5 -5
- package/src/debug-logger.ts +383 -351
- package/src/index.ts +1 -1
- package/src/pi-api-utils.ts +1 -1
- package/src/profile-modal.ts +1062 -1175
- package/src/types-shims.d.ts +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,7 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
## [0.3.1] - 2026-05-22
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- Reworked debug logging to redact sensitive values and use asynchronous buffered file writes with safe shutdown.
|
|
14
|
+
- Updated Pi peer dependencies and runtime imports to the `@earendil-works` scope.
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
- Improved debug log writer lifecycle handling so buffered events flush reliably without opening logs when debug is disabled.
|
|
18
|
+
|
|
19
|
+
## [0.3.0] - 2026-04-30
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
- Refined the model profiles modal layout with wider sizing, a single bordered grid, and clearer model table columns.
|
|
23
|
+
- Updated the public README screenshot and usage details.
|
|
24
|
+
- Bumped Pi peer dependency ranges to `^0.70.6`.
|
|
11
25
|
|
|
12
26
|
## [0.2.0] - 2026-04-26
|
|
13
27
|
|
|
@@ -18,7 +32,7 @@ No unreleased changes.
|
|
|
18
32
|
|
|
19
33
|
### Fixed
|
|
20
34
|
- Confirmation prompts now accept typed input before update or removal actions run.
|
|
21
|
-
- Sort menu keyboard handling now works
|
|
35
|
+
- Sort menu keyboard handling now works consistently and closes without exiting the modal.
|
|
22
36
|
- Profile update and removal command handlers now avoid duplicate scans and duplicate removal events.
|
|
23
37
|
|
|
24
38
|
## [0.1.0] - 2026-04-25
|
package/README.md
CHANGED
|
@@ -56,7 +56,6 @@ Modal shortcuts:
|
|
|
56
56
|
| Shortcut | Action |
|
|
57
57
|
|----------|--------|
|
|
58
58
|
| `↑` / `↓` | Move through snapshots |
|
|
59
|
-
| `Tab` / `→` | Switch between snapshots and details panes |
|
|
60
59
|
| `Enter` | Apply selected snapshot |
|
|
61
60
|
| `s` | Save current agent state as a new snapshot |
|
|
62
61
|
| `r` | Rename selected snapshot |
|
package/package.json
CHANGED
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "pi-model-profiles",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"private": false,
|
|
5
|
-
"description": "Pi extension for saving, importing, and applying agent model frontmatter profiles.",
|
|
6
|
-
"type": "module",
|
|
7
|
-
"main": "./index.ts",
|
|
8
|
-
"exports": {
|
|
9
|
-
".": "./index.ts"
|
|
10
|
-
},
|
|
11
|
-
"files": [
|
|
12
|
-
"index.ts",
|
|
13
|
-
"src",
|
|
14
|
-
"README.md",
|
|
15
|
-
"CHANGELOG.md",
|
|
16
|
-
"config/config.example.json",
|
|
17
|
-
"LICENSE"
|
|
18
|
-
],
|
|
19
|
-
"scripts": {
|
|
20
|
-
"build": "npx --yes -p typescript@5.9.2 tsc -p tsconfig.json",
|
|
21
|
-
"lint": "npm run build",
|
|
22
|
-
"test:clean": "node -e \"require('node:fs').rmSync('.test-dist', { recursive: true, force: true })\"",
|
|
23
|
-
"prepublishOnly": "npm run test",
|
|
24
|
-
"pretest": "npm run test:clean",
|
|
25
|
-
"test": "npx --yes -p typescript@5.9.2 tsc --strict --skipLibCheck --module nodenext --moduleResolution nodenext --target ES2022 --outDir .test-dist src/types-shims.d.ts src/errors.ts src/types.ts src/constants.ts src/atomic-write.ts src/profile-fields.ts src/frontmatter-parser.ts src/profile-store.ts src/agent-writer.ts src/import-service.ts test/frontmatter-parser.test.ts test/import-service.test.ts test/agent-writer.test.ts test/profile-store.test.ts && node --test .test-dist/test/frontmatter-parser.test.js .test-dist/test/import-service.test.js .test-dist/test/agent-writer.test.js .test-dist/test/profile-store.test.js",
|
|
26
|
-
"posttest": "npm run test:clean",
|
|
27
|
-
"check": "npm run build && npm run test",
|
|
28
|
-
"package:dry-run": "npm pack --dry-run"
|
|
29
|
-
},
|
|
30
|
-
"keywords": [
|
|
31
|
-
"pi-package",
|
|
32
|
-
"pi",
|
|
33
|
-
"pi-extension",
|
|
34
|
-
"pi-coding-agent",
|
|
35
|
-
"coding-agent",
|
|
36
|
-
"model-profiles",
|
|
37
|
-
"frontmatter",
|
|
38
|
-
"agent-configuration",
|
|
39
|
-
"profiles"
|
|
40
|
-
],
|
|
41
|
-
"author": "MasuRii",
|
|
42
|
-
"license": "MIT",
|
|
43
|
-
"homepage": "https://github.com/MasuRii/pi-model-profiles#readme",
|
|
44
|
-
"repository": {
|
|
45
|
-
"type": "git",
|
|
46
|
-
"url": "git+https://github.com/MasuRii/pi-model-profiles.git"
|
|
47
|
-
},
|
|
48
|
-
"bugs": {
|
|
49
|
-
"url": "https://github.com/MasuRii/pi-model-profiles/issues"
|
|
50
|
-
},
|
|
51
|
-
"engines": {
|
|
52
|
-
"node": ">=20"
|
|
53
|
-
},
|
|
54
|
-
"pi": {
|
|
55
|
-
"extensions": [
|
|
56
|
-
"./index.ts"
|
|
57
|
-
]
|
|
58
|
-
},
|
|
59
|
-
"peerDependencies": {
|
|
60
|
-
"@
|
|
61
|
-
"@
|
|
62
|
-
},
|
|
63
|
-
"publishConfig": {
|
|
64
|
-
"access": "public"
|
|
65
|
-
}
|
|
66
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "pi-model-profiles",
|
|
3
|
+
"version": "0.3.1",
|
|
4
|
+
"private": false,
|
|
5
|
+
"description": "Pi extension for saving, importing, and applying agent model frontmatter profiles.",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./index.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": "./index.ts"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"index.ts",
|
|
13
|
+
"src",
|
|
14
|
+
"README.md",
|
|
15
|
+
"CHANGELOG.md",
|
|
16
|
+
"config/config.example.json",
|
|
17
|
+
"LICENSE"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "npx --yes -p typescript@5.9.2 tsc -p tsconfig.json",
|
|
21
|
+
"lint": "npm run build",
|
|
22
|
+
"test:clean": "node -e \"require('node:fs').rmSync('.test-dist', { recursive: true, force: true })\"",
|
|
23
|
+
"prepublishOnly": "npm run test",
|
|
24
|
+
"pretest": "npm run test:clean",
|
|
25
|
+
"test": "npx --yes -p typescript@5.9.2 tsc --strict --skipLibCheck --module nodenext --moduleResolution nodenext --target ES2022 --outDir .test-dist src/types-shims.d.ts src/errors.ts src/types.ts src/constants.ts src/atomic-write.ts src/profile-fields.ts src/frontmatter-parser.ts src/profile-store.ts src/agent-writer.ts src/import-service.ts src/config.ts src/debug-logger.ts test/frontmatter-parser.test.ts test/import-service.test.ts test/agent-writer.test.ts test/profile-store.test.ts test/debug-logger.test.ts && node --test .test-dist/test/frontmatter-parser.test.js .test-dist/test/import-service.test.js .test-dist/test/agent-writer.test.js .test-dist/test/profile-store.test.js .test-dist/test/debug-logger.test.js",
|
|
26
|
+
"posttest": "npm run test:clean",
|
|
27
|
+
"check": "npm run build && npm run test",
|
|
28
|
+
"package:dry-run": "npm pack --dry-run"
|
|
29
|
+
},
|
|
30
|
+
"keywords": [
|
|
31
|
+
"pi-package",
|
|
32
|
+
"pi",
|
|
33
|
+
"pi-extension",
|
|
34
|
+
"pi-coding-agent",
|
|
35
|
+
"coding-agent",
|
|
36
|
+
"model-profiles",
|
|
37
|
+
"frontmatter",
|
|
38
|
+
"agent-configuration",
|
|
39
|
+
"profiles"
|
|
40
|
+
],
|
|
41
|
+
"author": "MasuRii",
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"homepage": "https://github.com/MasuRii/pi-model-profiles#readme",
|
|
44
|
+
"repository": {
|
|
45
|
+
"type": "git",
|
|
46
|
+
"url": "git+https://github.com/MasuRii/pi-model-profiles.git"
|
|
47
|
+
},
|
|
48
|
+
"bugs": {
|
|
49
|
+
"url": "https://github.com/MasuRii/pi-model-profiles/issues"
|
|
50
|
+
},
|
|
51
|
+
"engines": {
|
|
52
|
+
"node": ">=20"
|
|
53
|
+
},
|
|
54
|
+
"pi": {
|
|
55
|
+
"extensions": [
|
|
56
|
+
"./index.ts"
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
"peerDependencies": {
|
|
60
|
+
"@earendil-works/pi-coding-agent": "^0.75.4",
|
|
61
|
+
"@earendil-works/pi-tui": "^0.75.4"
|
|
62
|
+
},
|
|
63
|
+
"publishConfig": {
|
|
64
|
+
"access": "public"
|
|
65
|
+
}
|
|
66
|
+
}
|
package/src/constants.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getAgentDir } from "@
|
|
1
|
+
import { getAgentDir } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { CONFIG_PATH, DEBUG_DIR, DEBUG_LOG_PATH, EXTENSION_ROOT } from "./config.js";
|
|
4
4
|
|
|
@@ -77,21 +77,21 @@ export function calculateModalHeight(agentCount: number): number {
|
|
|
77
77
|
/**
|
|
78
78
|
* Minimum modal width in columns
|
|
79
79
|
*/
|
|
80
|
-
export const MODAL_MIN_WIDTH =
|
|
80
|
+
export const MODAL_MIN_WIDTH = 100;
|
|
81
81
|
|
|
82
82
|
/**
|
|
83
83
|
* Maximum modal width in columns
|
|
84
84
|
*/
|
|
85
|
-
export const MODAL_MAX_WIDTH =
|
|
85
|
+
export const MODAL_MAX_WIDTH = 160;
|
|
86
86
|
|
|
87
87
|
/**
|
|
88
88
|
* Base width for modal (borders, padding, labels)
|
|
89
89
|
*/
|
|
90
|
-
export const MODAL_BASE_WIDTH =
|
|
90
|
+
export const MODAL_BASE_WIDTH = 100;
|
|
91
91
|
|
|
92
92
|
/**
|
|
93
93
|
* Calculate dynamic modal width based on content.
|
|
94
|
-
* Formula: base width (
|
|
94
|
+
* Formula: base width (100) + maxAgentNameLength clamped to min 100, max 160
|
|
95
95
|
*/
|
|
96
96
|
export function calculateModalWidth(maxAgentNameLength: number): number {
|
|
97
97
|
const calculatedWidth = MODAL_BASE_WIDTH + maxAgentNameLength;
|