portable-agent-layer 0.60.0 → 0.60.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "portable-agent-layer",
3
- "version": "0.60.0",
3
+ "version": "0.60.1",
4
4
  "description": "PAL — Portable Agent Layer: persistent personal context for AI coding assistants",
5
5
  "type": "module",
6
6
  "bin": {
package/src/cli/index.ts CHANGED
@@ -1311,7 +1311,9 @@ async function importState(args: string[]) {
1311
1311
  }
1312
1312
 
1313
1313
  async function update() {
1314
- const { checkForUpdate } = await import("../hooks/handlers/update-check");
1314
+ const { checkForUpdate, clearUpdateCache } = await import(
1315
+ "../hooks/handlers/update-check"
1316
+ );
1315
1317
  const result = await checkForUpdate(true);
1316
1318
 
1317
1319
  log.info(`Current: ${result.current} (${result.mode} mode)`);
@@ -1351,6 +1353,7 @@ async function update() {
1351
1353
  throw new Error(`Failed to read updated package.json: ${e}`);
1352
1354
  }
1353
1355
  log.success(`Updated: ${result.current} → ${newPkg.version}`);
1356
+ clearUpdateCache();
1354
1357
 
1355
1358
  log.info("Reinstalling...");
1356
1359
  await install(resolveTargets([]));
@@ -7,7 +7,7 @@
7
7
  * Caches result in state/update-available.json. Checked at most once per hour.
8
8
  */
9
9
 
10
- import { existsSync, readFileSync, writeFileSync } from "node:fs";
10
+ import { existsSync, readFileSync, rmSync, writeFileSync } from "node:fs";
11
11
  import { resolve } from "node:path";
12
12
  import { logDebug } from "../lib/log";
13
13
  import { ensureDir, palPkg, paths } from "../lib/paths";
@@ -179,6 +179,15 @@ export async function checkForUpdate(force = false): Promise<UpdateCache> {
179
179
  return result;
180
180
  }
181
181
 
182
+ /** Invalidate the cached update status — call after a successful update so the notice clears immediately. */
183
+ export function clearUpdateCache(): void {
184
+ try {
185
+ rmSync(cachePath(), { force: true });
186
+ } catch {
187
+ /* non-critical */
188
+ }
189
+ }
190
+
182
191
  /** Read cached update status for greeting display. Returns null if no update. */
183
192
  export function getUpdateNotice(): string | null {
184
193
  try {
@@ -44,6 +44,20 @@ export const MODEL_PRICING: Record<
44
44
  cacheWrite1h: 2,
45
45
  cacheRead: 0.1,
46
46
  },
47
+ [FABLE_MODEL]: {
48
+ input: 10,
49
+ output: 50,
50
+ cacheWrite5m: 12.5,
51
+ cacheWrite1h: 20,
52
+ cacheRead: 1,
53
+ },
54
+ "claude-opus-4-8": {
55
+ input: 5,
56
+ output: 25,
57
+ cacheWrite5m: 6.25,
58
+ cacheWrite1h: 10,
59
+ cacheRead: 0.5,
60
+ },
47
61
  "claude-opus-4-7": {
48
62
  input: 5,
49
63
  output: 25,
@@ -58,6 +72,14 @@ export const MODEL_PRICING: Record<
58
72
  cacheWrite1h: 10,
59
73
  cacheRead: 0.5,
60
74
  },
75
+ // Claude Sonnet 5 — introductory pricing through 2026-08-31; standard (3/15/3.75/6/0.30) applies from 2026-09-01.
76
+ "claude-sonnet-5": {
77
+ input: 2,
78
+ output: 10,
79
+ cacheWrite5m: 2.5,
80
+ cacheWrite1h: 4,
81
+ cacheRead: 0.2,
82
+ },
61
83
  "claude-sonnet-4-6": {
62
84
  input: 3,
63
85
  output: 15,