@primitive.ai/prim 0.1.0-alpha.62 → 0.1.0-alpha.64

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.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getSiteUrl
3
- } from "./chunk-I3HIPAIR.js";
3
+ } from "./chunk-CPX3BUOC.js";
4
4
 
5
5
  // src/journal.ts
6
6
  import {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-I3HIPAIR.js";
3
+ } from "./chunk-CPX3BUOC.js";
4
4
 
5
5
  // src/decisions/feedback.ts
6
6
  var FEEDBACK_PROTOCOL_VERSION = 1;
@@ -1,8 +1,3 @@
1
- // src/lib/bin-cache.ts
2
- import { chmodSync, mkdirSync, renameSync, writeFileSync } from "fs";
3
- import { homedir } from "os";
4
- import { join as join2 } from "path";
5
-
6
1
  // src/lib/bin-path.ts
7
2
  import { existsSync, readFileSync } from "fs";
8
3
  import { dirname, isAbsolute, join } from "path";
@@ -76,6 +71,9 @@ function commandMatchesBin(command, bin) {
76
71
  }
77
72
 
78
73
  // src/lib/bin-cache.ts
74
+ import { chmodSync, mkdirSync, renameSync, writeFileSync } from "fs";
75
+ import { homedir } from "os";
76
+ import { join as join2 } from "path";
79
77
  var CACHED_BINS = [
80
78
  "prim",
81
79
  "prim-hook",
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  getClient,
9
9
  withFileLock
10
- } from "./chunk-I3HIPAIR.js";
10
+ } from "./chunk-CPX3BUOC.js";
11
11
 
12
12
  // src/commands/skill.ts
13
13
  import { randomUUID } from "crypto";
@@ -649,6 +649,7 @@ if [ "$(git config --get prim.active 2>/dev/null)" = "true" ]; then
649
649
  case "$prim_commit_sha" in *[!0-9a-f]*|"") prim_commit_sha= ;; esac
650
650
  case "\${#prim_commit_sha}" in 40|64) ;; *) prim_commit_sha= ;; esac
651
651
  if [ -n "$prim_commit_sha" ]; then
652
+ prim_commit_observed_file=$(mktemp "\${TMPDIR:-/tmp}/prim-post-commit-observed.XXXXXXXX" 2>/dev/null) || prim_commit_observed_file=
652
653
  prim_commit_branch=$(git symbolic-ref --quiet --short HEAD 2>/dev/null) || prim_commit_branch=
653
654
  prim_cache_dir="\${XDG_CACHE_HOME:-$HOME/.cache}/prim/bin"
654
655
  prim_post_commit_ran=0
@@ -656,18 +657,23 @@ if [ "$(git config --get prim.active 2>/dev/null)" = "true" ]; then
656
657
  prim_node=$(cat "$prim_cache_dir/node")
657
658
  prim_entry=$(cat "$prim_cache_dir/prim-post-commit")
658
659
  if [ -x "$prim_node" ] && [ -f "$prim_entry" ]; then
659
- ( trap '' HUP; export PRIM_COMMIT_SHA="$prim_commit_sha" PRIM_COMMIT_BRANCH="$prim_commit_branch"; "$prim_node" "$prim_entry" ) </dev/null >/dev/null 2>&1 &
660
+ ( trap '' HUP; trap 'if [ -n "$prim_commit_observed_file" ]; then rm -f "$prim_commit_observed_file"; fi' 0; export PRIM_COMMIT_SHA="$prim_commit_sha" PRIM_COMMIT_BRANCH="$prim_commit_branch" PRIM_COMMIT_OBSERVED_FILE="$prim_commit_observed_file"; "$prim_node" "$prim_entry" ) </dev/null >/dev/null 2>&1 &
660
661
  prim_post_commit_ran=1
661
662
  fi
662
663
  fi
663
664
  if [ "$prim_post_commit_ran" -eq 0 ]; then
664
665
  if [ -x "./node_modules/.bin/prim-post-commit" ]; then
665
- ( trap '' HUP; export PRIM_COMMIT_SHA="$prim_commit_sha" PRIM_COMMIT_BRANCH="$prim_commit_branch"; ./node_modules/.bin/prim-post-commit ) </dev/null >/dev/null 2>&1 &
666
+ ( trap '' HUP; trap 'if [ -n "$prim_commit_observed_file" ]; then rm -f "$prim_commit_observed_file"; fi' 0; export PRIM_COMMIT_SHA="$prim_commit_sha" PRIM_COMMIT_BRANCH="$prim_commit_branch" PRIM_COMMIT_OBSERVED_FILE="$prim_commit_observed_file"; ./node_modules/.bin/prim-post-commit ) </dev/null >/dev/null 2>&1 &
667
+ prim_post_commit_ran=1
666
668
  elif command -v npx >/dev/null 2>&1; then
667
- ( trap '' HUP; export PRIM_COMMIT_SHA="$prim_commit_sha" PRIM_COMMIT_BRANCH="$prim_commit_branch"; npx --yes -p @primitive.ai/prim@latest prim-post-commit ) </dev/null >/dev/null 2>&1 &
669
+ ( trap '' HUP; trap 'if [ -n "$prim_commit_observed_file" ]; then rm -f "$prim_commit_observed_file"; fi' 0; export PRIM_COMMIT_SHA="$prim_commit_sha" PRIM_COMMIT_BRANCH="$prim_commit_branch" PRIM_COMMIT_OBSERVED_FILE="$prim_commit_observed_file"; npx --yes -p @primitive.ai/prim@latest prim-post-commit ) </dev/null >/dev/null 2>&1 &
670
+ prim_post_commit_ran=1
668
671
  fi
669
672
  fi
670
- unset prim_cache_dir prim_post_commit_ran prim_node prim_entry prim_commit_branch
673
+ if [ "$prim_post_commit_ran" -eq 0 ] && [ -n "$prim_commit_observed_file" ]; then
674
+ rm -f "$prim_commit_observed_file"
675
+ fi
676
+ unset prim_cache_dir prim_post_commit_ran prim_node prim_entry prim_commit_branch prim_commit_observed_file
671
677
  fi
672
678
  unset prim_commit_sha
673
679
  fi
@@ -1211,7 +1217,7 @@ function uninstallPostCommitHookAtPath(hookPath) {
1211
1217
  }
1212
1218
 
1213
1219
  // src/lib/repository-binding.ts
1214
- async function bindRepository(root, options) {
1220
+ async function resolveRepositoryBinding(root, options) {
1215
1221
  const repositoryFullName = githubRepositoryFullName(root);
1216
1222
  if (!repositoryFullName) {
1217
1223
  throw new Error("origin must be a GitHub HTTPS/SSH remote in owner/name form");
@@ -1224,9 +1230,13 @@ async function bindRepository(root, options) {
1224
1230
  if (!isValidRepoSyncId(response.repoSyncId)) {
1225
1231
  throw new Error("server returned no repository binding");
1226
1232
  }
1227
- setRepoSyncId(root, response.repoSyncId);
1228
1233
  return { repoSyncId: response.repoSyncId, repositoryFullName };
1229
1234
  }
1235
+ async function bindRepository(root, options) {
1236
+ const binding = await resolveRepositoryBinding(root, options);
1237
+ setRepoSyncId(root, binding.repoSyncId);
1238
+ return binding;
1239
+ }
1230
1240
 
1231
1241
  export {
1232
1242
  postCommitHookBlock,
@@ -1235,6 +1245,7 @@ export {
1235
1245
  inspectEffectivePostCommitHook,
1236
1246
  uninstallProjectPostCommitHook,
1237
1247
  uninstallPostCommitHookAtPath,
1248
+ resolveRepositoryBinding,
1238
1249
  bindRepository,
1239
1250
  printJson,
1240
1251
  compareSemver,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  analyzeShellTargets,
3
3
  extractFileTargets
4
- } from "./chunk-GF5QII7T.js";
4
+ } from "./chunk-G5D3FF3D.js";
5
5
  import {
6
6
  canonicalRepositoryPath
7
7
  } from "./chunk-XTNMSS4C.js";
@@ -26,7 +26,7 @@ function preserveHookFileMetadata(payload, resolution) {
26
26
  return { ...payload, primitive };
27
27
  }
28
28
  function resolveHookFileRefs(args) {
29
- const command = args.agent === "claude_code" && args.toolName === "Bash" && args.toolInput && typeof args.toolInput === "object" && typeof args.toolInput.command === "string" ? args.toolInput.command : void 0;
29
+ const command = (args.agent === "claude_code" || args.agent === "codex") && args.toolName === "Bash" && args.toolInput && typeof args.toolInput === "object" && typeof args.toolInput.command === "string" ? args.toolInput.command : void 0;
30
30
  const shell = command === void 0 ? void 0 : analyzeShellTargets(command);
31
31
  const shellMutation = shell?.mutation === "none" ? "none" : shell?.coverage === "complete" ? "resolved" : shell ? "unresolved" : void 0;
32
32
  const readPath = args.agent === "claude_code" && args.toolName === "Read" && args.toolInput && typeof args.toolInput === "object" && typeof args.toolInput.file_path === "string" ? [args.toolInput.file_path] : void 0;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getClient,
3
3
  getSiteUrl
4
- } from "./chunk-I3HIPAIR.js";
4
+ } from "./chunk-CPX3BUOC.js";
5
5
  import {
6
6
  daemonRequest
7
7
  } from "./chunk-UTKQTZHL.js";