@pi-orca/core 0.0.2-dev.20260414093420 → 0.0.2-dev.20260422150519

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 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
 
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete.d.ts","sourceRoot":"","sources":["../../src/utils/autocomplete.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,cAAc,EAAE,CAAC;IACtC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC3C;AA4BD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,GACnB,cAAc,EAAE,GAAG,IAAI,CAuEzB"}
1
+ {"version":3,"file":"autocomplete.d.ts","sourceRoot":"","sources":["../../src/utils/autocomplete.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,cAAc,EAAE,CAAC;IACtC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC3C;AA4BD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,GACnB,cAAc,EAAE,GAAG,IAAI,CA0EzB"}
@@ -88,11 +88,12 @@ export function resolveCompletions(prefix, tree) {
88
88
  return null;
89
89
  // Substring filter across value, label, and description
90
90
  const lowerFilter = filter.toLowerCase();
91
- const filtered = lowerFilter
92
- ? rawItems.filter((item) => item.value.toLowerCase().includes(lowerFilter) ||
93
- item.label.toLowerCase().includes(lowerFilter) ||
94
- (item.description?.toLowerCase().includes(lowerFilter) ?? false))
95
- : rawItems;
91
+ const filtered = (lowerFilter
92
+ ? rawItems.filter((item) => typeof item.value === "string" &&
93
+ (item.value.toLowerCase().includes(lowerFilter) ||
94
+ item.label.toLowerCase().includes(lowerFilter) ||
95
+ (item.description?.toLowerCase().includes(lowerFilter) ?? false)))
96
+ : rawItems.filter((item) => typeof item.value === "string"));
96
97
  if (filtered.length === 0)
97
98
  return null;
98
99
  // Reconstruct values with full prefix and optional trailing space
@@ -102,7 +103,7 @@ export function resolveCompletions(prefix, tree) {
102
103
  const childNode = findChild(current, item.value);
103
104
  const trailingSpace = childNode && isCompletable(childNode) ? " " : "";
104
105
  return {
105
- value: tokenPrefix + item.value + trailingSpace,
106
+ value: String(tokenPrefix + item.value + trailingSpace),
106
107
  label: item.label,
107
108
  description: item.description,
108
109
  };
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete.js","sourceRoot":"","sources":["../../src/utils/autocomplete.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autocomplete.js","sourceRoot":"","sources":["../../src/utils/autocomplete.ts"],"names":[],"mappings":"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"}
@@ -11,4 +11,6 @@ export * from "./dag.js";
11
11
  export * from "./heartbeat.js";
12
12
  export * from "./config-loader.js";
13
13
  export * from "./autocomplete.js";
14
+ export * from "./settings.js";
15
+ export * from "./tool-result.js";
14
16
  //# sourceMappingURL=index.d.ts.map
@@ -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;AAC9B,cAAc,kBAAkB,CAAC"}
@@ -11,4 +11,6 @@ export * from "./dag.js";
11
11
  export * from "./heartbeat.js";
12
12
  export * from "./config-loader.js";
13
13
  export * from "./autocomplete.js";
14
+ export * from "./settings.js";
15
+ export * from "./tool-result.js";
14
16
  //# sourceMappingURL=index.js.map
@@ -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;AAC9B,cAAc,kBAAkB,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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Wraps a plain result object into the AgentToolResult format
3
+ * expected by the pi-coding-agent runtime.
4
+ *
5
+ * Tools must return { content: [...], details: T }, not plain objects.
6
+ */
7
+ export declare function wrapToolResult<T extends Record<string, unknown>>(result: T): {
8
+ content: {
9
+ type: "text";
10
+ text: string;
11
+ }[];
12
+ details: T;
13
+ };
14
+ //# sourceMappingURL=tool-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-result.d.ts","sourceRoot":"","sources":["../../src/utils/tool-result.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,MAAM,EAAE,CAAC,GACR;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,OAAO,EAAE,CAAC,CAAA;CAAE,CAK3D"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Wraps a plain result object into the AgentToolResult format
3
+ * expected by the pi-coding-agent runtime.
4
+ *
5
+ * Tools must return { content: [...], details: T }, not plain objects.
6
+ */
7
+ export function wrapToolResult(result) {
8
+ return {
9
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
10
+ details: result,
11
+ };
12
+ }
13
+ //# sourceMappingURL=tool-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-result.js","sourceRoot":"","sources":["../../src/utils/tool-result.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAS;IAET,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,MAAM;KAChB,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-orca/core",
3
- "version": "0.0.2-dev.20260414093420",
3
+ "version": "0.0.2-dev.20260422150519",
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/pi-orca-core"
39
+ "directory": "packages/core"
40
40
  },
41
41
  "dependencies": {
42
42
  "yaml": "^2.4.0"