URL: https://api.github.com/repos/can1357/oh-my-pi/commits/e8d0a93d
Content-Type: application/json
Method: json

---

{
  "sha": "e8d0a93db61e756361aad84d4bcbc2dd2db88973",
  "node_id": "C_kwDOQxs0bdoAKGU4ZDBhOTNkYjYxZTc1NjM2MWFhZDg0ZDRiY2JjMmRkMmRiODg5NzM",
  "commit": {
    "author": {
      "name": "can1357",
      "email": "me@can.ac",
      "date": "2026-07-09T20:44:35Z"
    },
    "committer": {
      "name": "can1357",
      "email": "me@can.ac",
      "date": "2026-07-09T20:44:35Z"
    },
    "message": "chore: bump version to 16.3.15",
    "tree": {
      "sha": "c339832cbe72d0eca94c1a1530b47ec8cc85ca2c",
      "url": "https://api.github.com/repos/can1357/oh-my-pi/git/trees/c339832cbe72d0eca94c1a1530b47ec8cc85ca2c"
    },
    "url": "https://api.github.com/repos/can1357/oh-my-pi/git/commits/e8d0a93db61e756361aad84d4bcbc2dd2db88973",
    "comment_count": 0,
    "verification": {
      "verified": true,
      "reason": "valid",
      "signature": "-----BEGIN PGP SIGNATURE-----\n\niJEEABYKADkWIQSZwdufzCdx5wj5beZ4zhkIVPtKCgUCalAIMxsUgAAAAAAEAA5t\nYW51MiwyLjUrMS4xMiwwLDMACgkQeM4ZCFT7Sgp+FwEAmyuNUOJM6viquQQ7i1wT\nolCmgrW38t/yX+qyYgPS96MA/jUv09rjwbOsUGV03QB29gxXO2H4Op/39Ph8Dn1z\ngsEE\n=EZIc\n-----END PGP SIGNATURE-----",
      "payload": "tree c339832cbe72d0eca94c1a1530b47ec8cc85ca2c\nparent 46b8ee737f5f5165321e5f856a4e1b31d56e1758\nauthor can1357 <me@can.ac> 1783629875 +0200\ncommitter can1357 <me@can.ac> 1783629875 +0200\n\nchore: bump version to 16.3.15\n",
      "verified_at": "2026-07-09T20:44:45Z"
    }
  },
  "url": "https://api.github.com/repos/can1357/oh-my-pi/commits/e8d0a93db61e756361aad84d4bcbc2dd2db88973",
  "html_url": "https://github.com/can1357/oh-my-pi/commit/e8d0a93db61e756361aad84d4bcbc2dd2db88973",
  "comments_url": "https://api.github.com/repos/can1357/oh-my-pi/commits/e8d0a93db61e756361aad84d4bcbc2dd2db88973/comments",
  "author": {
    "login": "can1357",
    "id": 11807264,
    "node_id": "MDQ6VXNlcjExODA3MjY0",
    "avatar_url": "https://avatars.githubusercontent.com/u/11807264?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/can1357",
    "html_url": "https://github.com/can1357",
    "followers_url": "https://api.github.com/users/can1357/followers",
    "following_url": "https://api.github.com/users/can1357/following{/other_user}",
    "gists_url": "https://api.github.com/users/can1357/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/can1357/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/can1357/subscriptions",
    "organizations_url": "https://api.github.com/users/can1357/orgs",
    "repos_url": "https://api.github.com/users/can1357/repos",
    "events_url": "https://api.github.com/users/can1357/events{/privacy}",
    "received_events_url": "https://api.github.com/users/can1357/received_events",
    "type": "User",
    "user_view_type": "public",
    "site_admin": false
  },
  "committer": {
    "login": "can1357",
    "id": 11807264,
    "node_id": "MDQ6VXNlcjExODA3MjY0",
    "avatar_url": "https://avatars.githubusercontent.com/u/11807264?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/can1357",
    "html_url": "https://github.com/can1357",
    "followers_url": "https://api.github.com/users/can1357/followers",
    "following_url": "https://api.github.com/users/can1357/following{/other_user}",
    "gists_url": "https://api.github.com/users/can1357/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/can1357/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/can1357/subscriptions",
    "organizations_url": "https://api.github.com/users/can1357/orgs",
    "repos_url": "https://api.github.com/users/can1357/repos",
    "events_url": "https://api.github.com/users/can1357/events{/privacy}",
    "received_events_url": "https://api.github.com/users/can1357/received_events",
    "type": "User",
    "user_view_type": "public",
    "site_admin": false
  },
  "parents": [
    {
      "sha": "46b8ee737f5f5165321e5f856a4e1b31d56e1758",
      "url": "https://api.github.com/repos/can1357/oh-my-pi/commits/46b8ee737f5f5165321e5f856a4e1b31d56e1758",
      "html_url": "https://github.com/can1357/oh-my-pi/commit/46b8ee737f5f5165321e5f856a4e1b31d56e1758"
    }
  ],
  "stats": {
    "total": 130,
    "additions": 66,
    "deletions": 64
  },
  "files": [
    {
      "sha": "125f5b658c594a2fa9289a07faff8e76d65e4957",
      "filename": "Cargo.lock",
      "status": "modified",
      "additions": 5,
      "deletions": 5,
      "changes": 10,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/Cargo.lock",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/Cargo.lock",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/Cargo.lock?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -2881,7 +2881,7 @@ dependencies = [\n \n [[package]]\n name = \"pi-ast\"\n-version = \"16.3.14\"\n+version = \"16.3.15\"\n dependencies = [\n  \"anyhow\",\n  \"ast-grep-core\",\n@@ -2950,7 +2950,7 @@ dependencies = [\n \n [[package]]\n name = \"pi-iso\"\n-version = \"16.3.14\"\n+version = \"16.3.15\"\n dependencies = [\n  \"async-trait\",\n  \"libc\",\n@@ -2962,7 +2962,7 @@ dependencies = [\n \n [[package]]\n name = \"pi-natives\"\n-version = \"16.3.14\"\n+version = \"16.3.15\"\n dependencies = [\n  \"anyhow\",\n  \"arboard\",\n@@ -3015,7 +3015,7 @@ dependencies = [\n \n [[package]]\n name = \"pi-shell\"\n-version = \"16.3.14\"\n+version = \"16.3.15\"\n dependencies = [\n  \"anyhow\",\n  \"brush-builtins\",\n@@ -3064,7 +3064,7 @@ dependencies = [\n \n [[package]]\n name = \"pi-walker\"\n-version = \"16.3.14\"\n+version = \"16.3.15\"\n dependencies = [\n  \"dashmap\",\n  \"globset\","
    },
    {
      "sha": "652fd749f5cf25052b73ffbe959e1ddd32341867",
      "filename": "Cargo.toml",
      "status": "modified",
      "additions": 1,
      "deletions": 1,
      "changes": 2,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/Cargo.toml",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/Cargo.toml",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/Cargo.toml?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -4,7 +4,7 @@ exclude = [\"crates/vendor/brush-core\", \"crates/vendor/brush-builtins\"]\n resolver = \"3\"\n \n [workspace.package]\n-version = \"16.3.14\"\n+version = \"16.3.15\"\n edition = \"2024\"\n license = \"MIT\"\n authors = [\"Can Boluk\"]"
    },
    {
      "sha": "d179b61c4993e6686feabb18bb8c0c06258d31d1",
      "filename": "bun.lock",
      "status": "modified",
      "additions": 26,
      "deletions": 26,
      "changes": 52,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/bun.lock",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/bun.lock",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/bun.lock?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -21,7 +21,7 @@\n     },\n     \"packages/agent\": {\n       \"name\": \"@oh-my-pi/pi-agent-core\",\n-      \"version\": \"16.3.14\",\n+      \"version\": \"16.3.15\",\n       \"dependencies\": {\n         \"@oh-my-pi/pi-ai\": \"catalog:\",\n         \"@oh-my-pi/pi-catalog\": \"catalog:\",\n@@ -39,7 +39,7 @@\n     },\n     \"packages/ai\": {\n       \"name\": \"@oh-my-pi/pi-ai\",\n-      \"version\": \"16.3.14\",\n+      \"version\": \"16.3.15\",\n       \"dependencies\": {\n         \"@bufbuild/protobuf\": \"catalog:\",\n         \"@oh-my-pi/pi-catalog\": \"catalog:\",\n@@ -55,7 +55,7 @@\n     },\n     \"packages/catalog\": {\n       \"name\": \"@oh-my-pi/pi-catalog\",\n-      \"version\": \"16.3.14\",\n+      \"version\": \"16.3.15\",\n       \"dependencies\": {\n         \"@bufbuild/protobuf\": \"catalog:\",\n         \"@oh-my-pi/pi-utils\": \"catalog:\",\n@@ -69,7 +69,7 @@\n     },\n     \"packages/coding-agent\": {\n       \"name\": \"@oh-my-pi/pi-coding-agent\",\n-      \"version\": \"16.3.14\",\n+      \"version\": \"16.3.15\",\n       \"bin\": {\n         \"omp\": \"src/cli.ts\",\n       },\n@@ -137,7 +137,7 @@\n     },\n     \"packages/hashline\": {\n       \"name\": \"@oh-my-pi/hashline\",\n-      \"version\": \"16.3.14\",\n+      \"version\": \"16.3.15\",\n       \"dependencies\": {\n         \"diff\": \"catalog:\",\n         \"lru-cache\": \"catalog:\",\n@@ -148,7 +148,7 @@\n     },\n     \"packages/mnemopi\": {\n       \"name\": \"@oh-my-pi/pi-mnemopi\",\n-      \"version\": \"16.3.14\",\n+      \"version\": \"16.3.15\",\n       \"bin\": {\n         \"mnemopi\": \"src/cli.ts\",\n       },\n@@ -174,15 +174,15 @@\n     },\n     \"packages/natives\": {\n       \"name\": \"@oh-my-pi/pi-natives\",\n-      \"version\": \"16.3.14\",\n+      \"version\": \"16.3.15\",\n       \"devDependencies\": {\n         \"@napi-rs/cli\": \"catalog:\",\n         \"@types/bun\": \"catalog:\",\n       },\n     },\n     \"packages/snapcompact\": {\n       \"name\": \"@oh-my-pi/snapcompact\",\n-      \"version\": \"16.3.14\",\n+      \"version\": \"16.3.15\",\n       \"dependencies\": {\n         \"@oh-my-pi/pi-ai\": \"catalog:\",\n         \"@oh-my-pi/pi-natives\": \"catalog:\",\n@@ -195,7 +195,7 @@\n     },\n     \"packages/stats\": {\n       \"name\": \"@oh-my-pi/omp-stats\",\n-      \"version\": \"16.3.14\",\n+      \"version\": \"16.3.15\",\n       \"bin\": {\n         \"omp-stats\": \"./src/index.ts\",\n       },\n@@ -221,7 +221,7 @@\n     },\n     \"packages/swarm-extension\": {\n       \"name\": \"@oh-my-pi/swarm-extension\",\n-      \"version\": \"16.3.14\",\n+      \"version\": \"16.3.15\",\n       \"bin\": {\n         \"omp-swarm\": \"src/cli.ts\",\n       },\n@@ -247,7 +247,7 @@\n     },\n     \"packages/tui\": {\n       \"name\": \"@oh-my-pi/pi-tui\",\n-      \"version\": \"16.3.14\",\n+      \"version\": \"16.3.15\",\n       \"dependencies\": {\n         \"@oh-my-pi/pi-natives\": \"catalog:\",\n         \"@oh-my-pi/pi-utils\": \"catalog:\",\n@@ -288,7 +288,7 @@\n     },\n     \"packages/utils\": {\n       \"name\": \"@oh-my-pi/pi-utils\",\n-      \"version\": \"16.3.14\",\n+      \"version\": \"16.3.15\",\n       \"dependencies\": {\n         \"@oh-my-pi/pi-natives\": \"catalog:\",\n         \"handlebars\": \"catalog:\",\n@@ -301,7 +301,7 @@\n     },\n     \"packages/wire\": {\n       \"name\": \"@oh-my-pi/pi-wire\",\n-      \"version\": \"16.3.14\",\n+      \"version\": \"16.3.15\",\n       \"devDependencies\": {\n         \"@types/bun\": \"catalog:\",\n       },\n@@ -338,18 +338,18 @@\n     \"@huggingface/transformers\": \"^4.2.0\",\n     \"@mozilla/readability\": \"^0.6.0\",\n     \"@napi-rs/cli\": \"3.7.0\",\n-    \"@oh-my-pi/hashline\": \"16.3.14\",\n-    \"@oh-my-pi/omp-stats\": \"16.3.14\",\n-    \"@oh-my-pi/pi-agent-core\": \"16.3.14\",\n-    \"@oh-my-pi/pi-ai\": \"16.3.14\",\n-    \"@oh-my-pi/pi-catalog\": \"16.3.14\",\n-    \"@oh-my-pi/pi-coding-agent\": \"16.3.14\",\n-    \"@oh-my-pi/pi-mnemopi\": \"16.3.14\",\n-    \"@oh-my-pi/pi-natives\": \"16.3.14\",\n-    \"@oh-my-pi/pi-tui\": \"16.3.14\",\n-    \"@oh-my-pi/pi-utils\": \"16.3.14\",\n-    \"@oh-my-pi/pi-wire\": \"16.3.14\",\n-    \"@oh-my-pi/snapcompact\": \"16.3.14\",\n+    \"@oh-my-pi/hashline\": \"16.3.15\",\n+    \"@oh-my-pi/omp-stats\": \"16.3.15\",\n+    \"@oh-my-pi/pi-agent-core\": \"16.3.15\",\n+    \"@oh-my-pi/pi-ai\": \"16.3.15\",\n+    \"@oh-my-pi/pi-catalog\": \"16.3.15\",\n+    \"@oh-my-pi/pi-coding-agent\": \"16.3.15\",\n+    \"@oh-my-pi/pi-mnemopi\": \"16.3.15\",\n+    \"@oh-my-pi/pi-natives\": \"16.3.15\",\n+    \"@oh-my-pi/pi-tui\": \"16.3.15\",\n+    \"@oh-my-pi/pi-utils\": \"16.3.15\",\n+    \"@oh-my-pi/pi-wire\": \"16.3.15\",\n+    \"@oh-my-pi/snapcompact\": \"16.3.15\",\n     \"@opentelemetry/api\": \"^1.9.1\",\n     \"@opentelemetry/context-async-hooks\": \"^2.7.1\",\n     \"@opentelemetry/exporter-trace-otlp-proto\": \"^0.218.0\",\n@@ -791,7 +791,7 @@\n \n     \"@opentelemetry/sdk-trace-node\": [\"@opentelemetry/sdk-trace-node@2.9.0\", \"\", { \"dependencies\": { \"@opentelemetry/context-async-hooks\": \"2.9.0\", \"@opentelemetry/core\": \"2.9.0\", \"@opentelemetry/sdk-trace-base\": \"2.9.0\" }, \"peerDependencies\": { \"@opentelemetry/api\": \">=1.0.0 <1.10.0\" } }, \"sha512-ec9a7ps37huy5itYk0MalaZdSLlM6AXWp/FhtEjgMpp5leEGojBDvAl/UWttQnkMZOvFHKzRESn8TD3yKTF5nQ==\"],\n \n-    \"@opentelemetry/semantic-conventions\": [\"@opentelemetry/semantic-conventions@1.41.1\", \"\", {}, \"sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA==\"],\n+    \"@opentelemetry/semantic-conventions\": [\"@opentelemetry/semantic-conventions@1.42.0\", \"\", {}, \"sha512-icc5xCzndZfhuJMy5oqk5AvloWquR7jtae74qzpkKkhGp8BivK+oCcEXgGnjCdTfp8hA44l+w8gE8yYJbocJJw==\"],\n \n     \"@oxc-project/types\": [\"@oxc-project/types@0.138.0\", \"\", {}, \"sha512-1a7ZKmrRTCoN1XMZ4L0PyyqrMnrNlLyPuOkdSX2MZg7IiIGRUyurNhAm73ptDOraoBcIordsIGKNPKUzy3ZmfA==\"],\n "
    },
    {
      "sha": "5b93f45164a3107acdcac01894dac6b1287dd89b",
      "filename": "crates/pi-natives/src/lib.rs",
      "status": "modified",
      "additions": 1,
      "deletions": 1,
      "changes": 2,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/crates%2Fpi-natives%2Fsrc%2Flib.rs",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/crates%2Fpi-natives%2Fsrc%2Flib.rs",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/crates%2Fpi-natives%2Fsrc%2Flib.rs?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -248,7 +248,7 @@ fn create_windows_napi_tokio_runtime() -> Option<tokio::runtime::Runtime> {\n /// MUST stay in sync with `VERSION_SENTINEL_EXPORT` in\n /// `packages/natives/native/index.js` (which derives the name from\n /// `package.json#version`).\n-#[napi(js_name = \"__piNativesV16_3_14\")]\n+#[napi(js_name = \"__piNativesV16_3_15\")]\n pub const fn pi_natives_version_sentinel() {}\n \n /// Native module entry point: install crash diagnostics before any tool can"
    },
    {
      "sha": "a63330c5c1e4c54e0f7717970ff83a1e12570c64",
      "filename": "package.json",
      "status": "modified",
      "additions": 12,
      "deletions": 12,
      "changes": 24,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/package.json",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/package.json",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/package.json?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -25,18 +25,18 @@\n       \"@huggingface/transformers\": \"^4.2.0\",\n       \"@mozilla/readability\": \"^0.6.0\",\n       \"@napi-rs/cli\": \"3.7.0\",\n-      \"@oh-my-pi/hashline\": \"16.3.14\",\n-      \"@oh-my-pi/omp-stats\": \"16.3.14\",\n-      \"@oh-my-pi/pi-agent-core\": \"16.3.14\",\n-      \"@oh-my-pi/pi-ai\": \"16.3.14\",\n-      \"@oh-my-pi/pi-catalog\": \"16.3.14\",\n-      \"@oh-my-pi/pi-coding-agent\": \"16.3.14\",\n-      \"@oh-my-pi/pi-mnemopi\": \"16.3.14\",\n-      \"@oh-my-pi/pi-natives\": \"16.3.14\",\n-      \"@oh-my-pi/pi-tui\": \"16.3.14\",\n-      \"@oh-my-pi/pi-utils\": \"16.3.14\",\n-      \"@oh-my-pi/pi-wire\": \"16.3.14\",\n-      \"@oh-my-pi/snapcompact\": \"16.3.14\",\n+      \"@oh-my-pi/hashline\": \"16.3.15\",\n+      \"@oh-my-pi/omp-stats\": \"16.3.15\",\n+      \"@oh-my-pi/pi-agent-core\": \"16.3.15\",\n+      \"@oh-my-pi/pi-ai\": \"16.3.15\",\n+      \"@oh-my-pi/pi-catalog\": \"16.3.15\",\n+      \"@oh-my-pi/pi-coding-agent\": \"16.3.15\",\n+      \"@oh-my-pi/pi-mnemopi\": \"16.3.15\",\n+      \"@oh-my-pi/pi-natives\": \"16.3.15\",\n+      \"@oh-my-pi/pi-tui\": \"16.3.15\",\n+      \"@oh-my-pi/pi-utils\": \"16.3.15\",\n+      \"@oh-my-pi/pi-wire\": \"16.3.15\",\n+      \"@oh-my-pi/snapcompact\": \"16.3.15\",\n       \"@opentelemetry/api\": \"^1.9.1\",\n       \"@opentelemetry/context-async-hooks\": \"^2.7.1\",\n       \"@opentelemetry/exporter-trace-otlp-proto\": \"^0.218.0\","
    },
    {
      "sha": "0e5b1961ca66db21e3aa03ef5840ff11480b8b87",
      "filename": "packages/agent/package.json",
      "status": "modified",
      "additions": 1,
      "deletions": 1,
      "changes": 2,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fagent%2Fpackage.json",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fagent%2Fpackage.json",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/packages%2Fagent%2Fpackage.json?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -1,7 +1,7 @@\n {\n   \"type\": \"module\",\n   \"name\": \"@oh-my-pi/pi-agent-core\",\n-  \"version\": \"16.3.14\",\n+  \"version\": \"16.3.15\",\n   \"description\": \"General-purpose agent with transport abstraction, state management, and attachment support\",\n   \"homepage\": \"https://omp.sh\",\n   \"author\": \"Can Boluk\","
    },
    {
      "sha": "03dd313daec9238298d4c3b4770085ccf4d24be9",
      "filename": "packages/ai/CHANGELOG.md",
      "status": "modified",
      "additions": 2,
      "deletions": 1,
      "changes": 3,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fai%2FCHANGELOG.md",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fai%2FCHANGELOG.md",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/packages%2Fai%2FCHANGELOG.md?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -2,6 +2,8 @@\n \n ## [Unreleased]\n \n+## [16.3.15] - 2026-07-09\n+\n ### Breaking Changes\n \n - Renamed `OpenAIResponsesCacheOptions`, `normalizeOpenAIResponsesPromptCacheKey`, and `getOpenAIResponsesPromptCacheKey` to the endpoint-neutral `OpenAICacheOptions`, `normalizeOpenAIPromptCacheKey`, and `getOpenAIPromptCacheKey`.\n@@ -20,7 +22,6 @@\n \n - Improved account routing for GPT-5.6 models to better respect paid tier requirements\n - Refined account selection logic to correctly identify plan types from account metadata\n-\n - Fixed OpenAI Codex multi-account routing for GPT-5.6: Sol and Luna requests now prefer Plus-or-higher accounts while Terra remains available to Free/Go accounts; local pro-mode aliases inherit their base model's Codex plan eligibility.\n - Fixed xAI Grok OAuth login to use xAI's device authorization flow: `/login` now opens the verification URL, displays the device code, and polls for approval instead of asking for a pasted redirect or linking to Hermes Agent documentation.\n "
    },
    {
      "sha": "1124f3f138309dffde632d7deee3958803b7c87c",
      "filename": "packages/ai/package.json",
      "status": "modified",
      "additions": 1,
      "deletions": 1,
      "changes": 2,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fai%2Fpackage.json",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fai%2Fpackage.json",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/packages%2Fai%2Fpackage.json?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -1,7 +1,7 @@\n {\n   \"type\": \"module\",\n   \"name\": \"@oh-my-pi/pi-ai\",\n-  \"version\": \"16.3.14\",\n+  \"version\": \"16.3.15\",\n   \"description\": \"Unified LLM API with automatic model discovery and provider configuration\",\n   \"homepage\": \"https://omp.sh\",\n   \"author\": \"Can Boluk\","
    },
    {
      "sha": "b733a706cdb2454b9f942b3d460bb83b77e7e93e",
      "filename": "packages/catalog/CHANGELOG.md",
      "status": "modified",
      "additions": 2,
      "deletions": 2,
      "changes": 4,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fcatalog%2FCHANGELOG.md",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fcatalog%2FCHANGELOG.md",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/packages%2Fcatalog%2FCHANGELOG.md?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -2,10 +2,11 @@\n \n ## [Unreleased]\n \n+## [16.3.15] - 2026-07-09\n+\n ### Added\n \n - Added support for Grok 4.5 model\n-\n - Added `gpt-5.6` base models and `gpt-5.6-{luna,sol,terra}-pro` variants\n - Added `meta/muse-spark-1.1` model support\n - Added support for thinking modes on `poolside/laguna` models\n@@ -15,7 +16,6 @@\n \n - Updated cache read costs for Grok models\n - Reduced max token limit for Grok 4.3 model\n-\n - Enabled prompt cache affinity for Grok models via the x-grok-conv-id header in OpenAI compatible endpoints\n - Enabled prompt cache affinity for Grok models via the x-grok-conv-id header\n - Marked direct xAI Grok Chat Completions models for `x-grok-conv-id` prompt-cache affinity."
    },
    {
      "sha": "653aac2e62577788d8e873202d13e55ca7e040a1",
      "filename": "packages/catalog/package.json",
      "status": "modified",
      "additions": 1,
      "deletions": 1,
      "changes": 2,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fcatalog%2Fpackage.json",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fcatalog%2Fpackage.json",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/packages%2Fcatalog%2Fpackage.json?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -1,7 +1,7 @@\n {\n   \"type\": \"module\",\n   \"name\": \"@oh-my-pi/pi-catalog\",\n-  \"version\": \"16.3.14\",\n+  \"version\": \"16.3.15\",\n   \"description\": \"Model catalog for omp: bundled model database, provider discovery descriptors, model identity, classification, and equivalence\",\n   \"homepage\": \"https://omp.sh\",\n   \"author\": \"Can Boluk\","
    },
    {
      "sha": "6c5d526e214cf29a06fa4907d88a4c2cde7b8531",
      "filename": "packages/coding-agent/CHANGELOG.md",
      "status": "modified",
      "additions": 2,
      "deletions": 1,
      "changes": 3,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fcoding-agent%2FCHANGELOG.md",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fcoding-agent%2FCHANGELOG.md",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/packages%2Fcoding-agent%2FCHANGELOG.md?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -2,10 +2,11 @@\n \n ## [Unreleased]\n \n+## [16.3.15] - 2026-07-09\n+\n ### Changed\n \n - Integrated testing guidance directly into the main system prompt for improved workflow cohesion\n-\n - Moved testing guidance into the main system prompt and removed the bundled Tester subagent.\n \n ## [16.3.14] - 2026-07-09"
    },
    {
      "sha": "c66b13e2f5b6495a311a3b6eb1804113e3204d6d",
      "filename": "packages/coding-agent/package.json",
      "status": "modified",
      "additions": 1,
      "deletions": 1,
      "changes": 2,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fcoding-agent%2Fpackage.json",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fcoding-agent%2Fpackage.json",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/packages%2Fcoding-agent%2Fpackage.json?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -1,7 +1,7 @@\n {\n   \"type\": \"module\",\n   \"name\": \"@oh-my-pi/pi-coding-agent\",\n-  \"version\": \"16.3.14\",\n+  \"version\": \"16.3.15\",\n   \"description\": \"Coding agent CLI with read, bash, edit, write tools and session management\",\n   \"homepage\": \"https://omp.sh\",\n   \"author\": \"Can Boluk\","
    },
    {
      "sha": "73c31c71ad7af010e579a39e5ecad1a20c4fc831",
      "filename": "packages/hashline/package.json",
      "status": "modified",
      "additions": 1,
      "deletions": 1,
      "changes": 2,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fhashline%2Fpackage.json",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fhashline%2Fpackage.json",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/packages%2Fhashline%2Fpackage.json?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -1,7 +1,7 @@\n {\n   \"type\": \"module\",\n   \"name\": \"@oh-my-pi/hashline\",\n-  \"version\": \"16.3.14\",\n+  \"version\": \"16.3.15\",\n   \"description\": \"Hashline: a compact, line-anchored patch language and applier. Pluggable FS/IO so it works over disk, in-memory, or any custom backend.\",\n   \"homepage\": \"https://omp.sh\",\n   \"author\": \"Can Boluk\","
    },
    {
      "sha": "b5a62f06e45a9bebc2d3862b39980804c866c766",
      "filename": "packages/mnemopi/package.json",
      "status": "modified",
      "additions": 1,
      "deletions": 1,
      "changes": 2,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fmnemopi%2Fpackage.json",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fmnemopi%2Fpackage.json",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/packages%2Fmnemopi%2Fpackage.json?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -1,7 +1,7 @@\n {\n   \"type\": \"module\",\n   \"name\": \"@oh-my-pi/pi-mnemopi\",\n-  \"version\": \"16.3.14\",\n+  \"version\": \"16.3.15\",\n   \"description\": \"Local SQLite memory engine for Oh My Pi agents\",\n   \"homepage\": \"https://omp.sh\",\n   \"author\": \"Can Boluk\","
    },
    {
      "sha": "bb54f9bf51db22ecb53c20af5e05e216938048d9",
      "filename": "packages/natives/native/index.d.ts",
      "status": "modified",
      "additions": 1,
      "deletions": 1,
      "changes": 2,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fnatives%2Fnative%2Findex.d.ts",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fnatives%2Fnative%2Findex.d.ts",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/packages%2Fnatives%2Fnative%2Findex.d.ts?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -170,7 +170,7 @@ export declare function __ompInstallTokioRuntime(): void\n  * `packages/natives/native/index.js` (which derives the name from\n  * `package.json#version`).\n  */\n-export declare function __piNativesV16_3_14(): void\n+export declare function __piNativesV16_3_15(): void\n \n /**\n  * Apply conservative pre-execution rewrites to a bash command."
    },
    {
      "sha": "f439ff2c7d8706b82b91fb0dbc4550b600d1a19f",
      "filename": "packages/natives/native/index.js",
      "status": "modified",
      "additions": 1,
      "deletions": 1,
      "changes": 2,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fnatives%2Fnative%2Findex.js",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fnatives%2Fnative%2Findex.js",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/packages%2Fnatives%2Fnative%2Findex.js?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -24,7 +24,7 @@ export const Shell = nativeBindings.Shell;\n \n // functions\n export const __ompInstallTokioRuntime = nativeBindings.__ompInstallTokioRuntime;\n-export const __piNativesV16_3_14 = nativeBindings.__piNativesV16_3_14;\n+export const __piNativesV16_3_15 = nativeBindings.__piNativesV16_3_15;\n export const applyBashFixups = nativeBindings.applyBashFixups;\n export const astEdit = nativeBindings.astEdit;\n export const astGrep = nativeBindings.astGrep;"
    },
    {
      "sha": "183a3876d90f83a761b8e2ff93b58517c9c980a8",
      "filename": "packages/natives/package.json",
      "status": "modified",
      "additions": 1,
      "deletions": 1,
      "changes": 2,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fnatives%2Fpackage.json",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fnatives%2Fpackage.json",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/packages%2Fnatives%2Fpackage.json?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -1,6 +1,6 @@\n {\n   \"name\": \"@oh-my-pi/pi-natives\",\n-  \"version\": \"16.3.14\",\n+  \"version\": \"16.3.15\",\n   \"description\": \"Native Rust bindings for grep, clipboard, image processing, syntax highlighting, PTY, and shell operations via N-API\",\n   \"type\": \"module\",\n   \"homepage\": \"https://omp.sh\","
    },
    {
      "sha": "88b2c10be4dc7d263b66d6706648e4c23b983d81",
      "filename": "packages/snapcompact/package.json",
      "status": "modified",
      "additions": 1,
      "deletions": 1,
      "changes": 2,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fsnapcompact%2Fpackage.json",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fsnapcompact%2Fpackage.json",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/packages%2Fsnapcompact%2Fpackage.json?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -1,7 +1,7 @@\n {\n   \"type\": \"module\",\n   \"name\": \"@oh-my-pi/snapcompact\",\n-  \"version\": \"16.3.14\",\n+  \"version\": \"16.3.15\",\n   \"description\": \"Bitmap-frame context compression for vision-capable LLMs\",\n   \"homepage\": \"https://omp.sh\",\n   \"author\": \"Can Boluk\","
    },
    {
      "sha": "329574cb8b10f14a9dd686b077d7dc7fb8eef59d",
      "filename": "packages/stats/package.json",
      "status": "modified",
      "additions": 1,
      "deletions": 1,
      "changes": 2,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fstats%2Fpackage.json",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fstats%2Fpackage.json",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/packages%2Fstats%2Fpackage.json?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -1,7 +1,7 @@\n {\n   \"type\": \"module\",\n   \"name\": \"@oh-my-pi/omp-stats\",\n-  \"version\": \"16.3.14\",\n+  \"version\": \"16.3.15\",\n   \"description\": \"Local observability dashboard for pi AI usage statistics\",\n   \"homepage\": \"https://omp.sh\",\n   \"author\": \"Can Boluk\","
    },
    {
      "sha": "0e71287c13e0889f357ef897122c0811851bb793",
      "filename": "packages/swarm-extension/package.json",
      "status": "modified",
      "additions": 1,
      "deletions": 1,
      "changes": 2,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fswarm-extension%2Fpackage.json",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fswarm-extension%2Fpackage.json",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/packages%2Fswarm-extension%2Fpackage.json?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -1,7 +1,7 @@\n {\n   \"type\": \"module\",\n   \"name\": \"@oh-my-pi/swarm-extension\",\n-  \"version\": \"16.3.14\",\n+  \"version\": \"16.3.15\",\n   \"description\": \"Swarm orchestration extension for omp\",\n   \"homepage\": \"https://omp.sh\",\n   \"author\": \"Derek Rynd\","
    },
    {
      "sha": "fea5e808dcaf18ce2385dec21c801d5959979547",
      "filename": "packages/tui/package.json",
      "status": "modified",
      "additions": 1,
      "deletions": 1,
      "changes": 2,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Ftui%2Fpackage.json",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Ftui%2Fpackage.json",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/packages%2Ftui%2Fpackage.json?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -1,7 +1,7 @@\n {\n   \"type\": \"module\",\n   \"name\": \"@oh-my-pi/pi-tui\",\n-  \"version\": \"16.3.14\",\n+  \"version\": \"16.3.15\",\n   \"description\": \"Terminal User Interface library with differential rendering for efficient text-based applications\",\n   \"homepage\": \"https://omp.sh\",\n   \"author\": \"Can Boluk\","
    },
    {
      "sha": "2e186b008ee868dc56d92b039d56dc8c50f4ec1e",
      "filename": "packages/utils/package.json",
      "status": "modified",
      "additions": 1,
      "deletions": 1,
      "changes": 2,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Futils%2Fpackage.json",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Futils%2Fpackage.json",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/packages%2Futils%2Fpackage.json?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -1,7 +1,7 @@\n {\n   \"type\": \"module\",\n   \"name\": \"@oh-my-pi/pi-utils\",\n-  \"version\": \"16.3.14\",\n+  \"version\": \"16.3.15\",\n   \"description\": \"Shared utilities for pi packages\",\n   \"homepage\": \"https://omp.sh\",\n   \"author\": \"Can Boluk\","
    },
    {
      "sha": "51c90f13f0ed3fdd3b5b4c2064a043c3e5733a34",
      "filename": "packages/wire/package.json",
      "status": "modified",
      "additions": 1,
      "deletions": 1,
      "changes": 2,
      "blob_url": "https://github.com/can1357/oh-my-pi/blob/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fwire%2Fpackage.json",
      "raw_url": "https://github.com/can1357/oh-my-pi/raw/e8d0a93db61e756361aad84d4bcbc2dd2db88973/packages%2Fwire%2Fpackage.json",
      "contents_url": "https://api.github.com/repos/can1357/oh-my-pi/contents/packages%2Fwire%2Fpackage.json?ref=e8d0a93db61e756361aad84d4bcbc2dd2db88973",
      "patch": "@@ -1,7 +1,7 @@\n {\n   \"type\": \"module\",\n   \"name\": \"@oh-my-pi/pi-wire\",\n-  \"version\": \"16.3.14\",\n+  \"version\": \"16.3.15\",\n   \"description\": \"Shared wire protocol types for Oh My Pi packages\",\n   \"homepage\": \"https://omp.sh\",\n   \"author\": \"Can Boluk\","
    }
  ]
}