@pi-orca/core 0.0.2-dev.20260414093420 → 0.0.2-dev.20260421080334
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/README.md +19 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/settings.d.ts +20 -0
- package/dist/utils/settings.d.ts.map +1 -0
- package/dist/utils/settings.js +40 -0
- package/dist/utils/settings.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -18,6 +18,7 @@ License: MIT
|
|
|
18
18
|
- **DAG Utilities** — Cycle detection and transitive dependency walking for task graphs
|
|
19
19
|
- **Heartbeat System** — Periodic status file writes with cost tracking
|
|
20
20
|
- **Duration Parsing** — Human-readable duration strings (`30s`, `5m`, `2h`, `7d`)
|
|
21
|
+
- **Settings I/O** — Atomic read/write of `~/.pi/agent/settings.json` shared across extensions
|
|
21
22
|
|
|
22
23
|
## Installation
|
|
23
24
|
|
|
@@ -172,6 +173,23 @@ const userDir = getUserOrcaDir(); // ~/.pi/agent/orca/
|
|
|
172
173
|
const projectDir = getProjectOrcaDir(); // <project>/.pi/orca/
|
|
173
174
|
```
|
|
174
175
|
|
|
176
|
+
### Settings I/O
|
|
177
|
+
|
|
178
|
+
```typescript
|
|
179
|
+
import { getPiSettingsPath, readPiSettings, writePiSettings } from "@pi-orca/core";
|
|
180
|
+
|
|
181
|
+
// Read current settings (returns {} if missing/unparseable)
|
|
182
|
+
const settings = await readPiSettings();
|
|
183
|
+
|
|
184
|
+
// Patch and write back atomically
|
|
185
|
+
settings.defaultProvider = "my-provider";
|
|
186
|
+
settings.defaultModel = "my-model";
|
|
187
|
+
await writePiSettings(settings);
|
|
188
|
+
|
|
189
|
+
// Override path for tests via PI_SETTINGS_PATH env var
|
|
190
|
+
const path = getPiSettingsPath(); // ~/.pi/agent/settings.json
|
|
191
|
+
```
|
|
192
|
+
|
|
175
193
|
## API Documentation
|
|
176
194
|
|
|
177
195
|
### Types
|
|
@@ -196,6 +214,7 @@ const projectDir = getProjectOrcaDir(); // <project>/.pi/orca/
|
|
|
196
214
|
- **Process**: `isPidAlive()`, `getCurrentPid()`
|
|
197
215
|
- **DAG**: `detectCycle()`, `getTransitiveDependents()`, `getTransitiveDependencies()`
|
|
198
216
|
- **Heartbeat**: `createHeartbeat()`
|
|
217
|
+
- **Settings**: `getPiSettingsPath()`, `readPiSettings()`, `writePiSettings()`
|
|
199
218
|
|
|
200
219
|
## Development
|
|
201
220
|
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC"}
|
package/dist/utils/index.js
CHANGED
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pi agent settings.json read/write utilities.
|
|
3
|
+
* Shared by extensions that need to read or patch settings.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Path to ~/.pi/agent/settings.json.
|
|
7
|
+
* Override with PI_SETTINGS_PATH env var (used by tests).
|
|
8
|
+
*/
|
|
9
|
+
export declare function getPiSettingsPath(): string;
|
|
10
|
+
/**
|
|
11
|
+
* Read and parse ~/.pi/agent/settings.json.
|
|
12
|
+
* Returns empty object if the file doesn't exist or is unparseable.
|
|
13
|
+
*/
|
|
14
|
+
export declare function readPiSettings(): Promise<Record<string, any>>;
|
|
15
|
+
/**
|
|
16
|
+
* Write settings.json atomically via tmp+rename.
|
|
17
|
+
* Caller is responsible for merging — this writes the full object.
|
|
18
|
+
*/
|
|
19
|
+
export declare function writePiSettings(settings: Record<string, any>): Promise<void>;
|
|
20
|
+
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/utils/settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C;AAED;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAOnE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC5B,OAAO,CAAC,IAAI,CAAC,CAEf"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pi agent settings.json read/write utilities.
|
|
3
|
+
* Shared by extensions that need to read or patch settings.
|
|
4
|
+
*/
|
|
5
|
+
import { readFile } from "fs/promises";
|
|
6
|
+
import { join } from "path";
|
|
7
|
+
import { getUserOrcaDir } from "./path.js";
|
|
8
|
+
import { atomicWrite } from "./filesystem.js";
|
|
9
|
+
/**
|
|
10
|
+
* Path to ~/.pi/agent/settings.json.
|
|
11
|
+
* Override with PI_SETTINGS_PATH env var (used by tests).
|
|
12
|
+
*/
|
|
13
|
+
export function getPiSettingsPath() {
|
|
14
|
+
if (process.env["PI_SETTINGS_PATH"]) {
|
|
15
|
+
return process.env["PI_SETTINGS_PATH"];
|
|
16
|
+
}
|
|
17
|
+
// getUserOrcaDir() → ~/.pi/agent/orca → parent is ~/.pi/agent
|
|
18
|
+
return join(getUserOrcaDir(), "..", "settings.json");
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Read and parse ~/.pi/agent/settings.json.
|
|
22
|
+
* Returns empty object if the file doesn't exist or is unparseable.
|
|
23
|
+
*/
|
|
24
|
+
export async function readPiSettings() {
|
|
25
|
+
try {
|
|
26
|
+
const content = await readFile(getPiSettingsPath(), "utf-8");
|
|
27
|
+
return JSON.parse(content);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Write settings.json atomically via tmp+rename.
|
|
35
|
+
* Caller is responsible for merging — this writes the full object.
|
|
36
|
+
*/
|
|
37
|
+
export async function writePiSettings(settings) {
|
|
38
|
+
await atomicWrite(getPiSettingsPath(), JSON.stringify(settings, null, 2) + "\n");
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/utils/settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACpC,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACzC,CAAC;IACD,gEAAgE;IAChE,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,EAAE,OAAO,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAA6B;IAE7B,MAAM,WAAW,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACnF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pi-orca/core",
|
|
3
|
-
"version": "0.0.2-dev.
|
|
3
|
+
"version": "0.0.2-dev.20260421080334",
|
|
4
4
|
"description": "Shared types and utilities for Pi Orca extension suite",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"repository": {
|
|
37
37
|
"type": "git",
|
|
38
38
|
"url": "https://github.com/bwavell/pi-orca.git",
|
|
39
|
-
"directory": "packages/
|
|
39
|
+
"directory": "packages/core"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"yaml": "^2.4.0"
|