pushary 1.9.27 → 1.9.28

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.
Files changed (100) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/bin/pushary-bell-hook.js +25 -25
  3. package/dist/bin/pushary-bell.js +9 -9
  4. package/dist/bin/pushary-claude.js +24 -24
  5. package/dist/bin/pushary-clean.js +29 -29
  6. package/dist/bin/pushary-codex-bridge.js +17 -17
  7. package/dist/bin/pushary-codex-hook.js +30 -30
  8. package/dist/bin/pushary-codex.js +12 -12
  9. package/dist/bin/pushary-connect.js +24 -24
  10. package/dist/bin/pushary-cowork.js +5 -5
  11. package/dist/bin/pushary-daemon.js +32 -32
  12. package/dist/bin/pushary-disconnect.js +24 -24
  13. package/dist/bin/pushary-doctor.js +33 -33
  14. package/dist/bin/pushary-elicitation-hook.js +25 -25
  15. package/dist/bin/pushary-gemini-bridge.js +13 -13
  16. package/dist/bin/pushary-gemini-hook.js +27 -27
  17. package/dist/bin/pushary-hook.js +40 -32
  18. package/dist/bin/pushary-login.js +12 -12
  19. package/dist/bin/pushary-logout.js +24 -24
  20. package/dist/bin/pushary-mcp.js +9 -9
  21. package/dist/bin/pushary-mode.js +12 -12
  22. package/dist/bin/pushary-notification-hook.js +24 -24
  23. package/dist/bin/pushary-opencode-hook.js +26 -26
  24. package/dist/bin/pushary-permission-denied-hook.js +29 -29
  25. package/dist/bin/pushary-permission-hook.js +28 -28
  26. package/dist/bin/pushary-post-hook.js +24 -24
  27. package/dist/bin/pushary-prompt-hook.js +24 -24
  28. package/dist/bin/pushary-session-end-hook.js +24 -24
  29. package/dist/bin/pushary-session-start-hook.js +28 -28
  30. package/dist/bin/pushary-setup.js +35 -35
  31. package/dist/bin/pushary-stats.js +5 -5
  32. package/dist/bin/pushary-status.js +26 -26
  33. package/dist/bin/pushary-stop-hook.js +24 -24
  34. package/dist/bin/pushary-stopfailure-hook.js +24 -24
  35. package/dist/bin/pushary-suggestions.js +12 -12
  36. package/dist/bin/pushary-transcript-register.js +17 -17
  37. package/dist/bin/pushary-transcripts.js +7 -7
  38. package/dist/bin/pushary-upgrade.js +30 -30
  39. package/dist/bin/pushary-wait.js +12 -12
  40. package/dist/bin/pushary.js +6 -6
  41. package/dist/{chunk-5ZR7XFTB.js → chunk-3OFFLLSJ.js} +21 -13
  42. package/dist/{chunk-AT4URLSU.js → chunk-3TF5FHAT.js} +5 -5
  43. package/dist/{chunk-H2ZHGK4F.js → chunk-43DOHHZZ.js} +2 -2
  44. package/dist/{chunk-W4LNR7LP.js → chunk-56U55YDV.js} +3 -3
  45. package/dist/{chunk-MSKJRRHY.js → chunk-5NXOJ3JG.js} +3 -3
  46. package/dist/{chunk-PQAA37YV.js → chunk-64LLZV5F.js} +6 -6
  47. package/dist/{chunk-JXOCD4MG.js → chunk-74YRZTGP.js} +2 -2
  48. package/dist/{chunk-ZQZRBPTP.js → chunk-7DXPQW2H.js} +59 -8
  49. package/dist/{chunk-Z5AAPX3O.js → chunk-7RKX7WRQ.js} +1 -1
  50. package/dist/{chunk-NK2URK5A.js → chunk-7TBCGHJT.js} +2 -2
  51. package/dist/{chunk-MDAJO2MP.js → chunk-7ZWU4BNG.js} +5 -5
  52. package/dist/{chunk-SLW45RGY.js → chunk-A24TEUD6.js} +11 -11
  53. package/dist/{chunk-2NQHGDK5.js → chunk-AR7XOG6W.js} +1 -1
  54. package/dist/{chunk-5LLH2TBR.js → chunk-AXGA3WJI.js} +1 -1
  55. package/dist/{chunk-LUJAURFP.js → chunk-BG7T5MNV.js} +1 -1
  56. package/dist/{chunk-KN5ULH4O.js → chunk-BXUYF5HB.js} +3 -3
  57. package/dist/{chunk-V6HQFOBS.js → chunk-CJTTAF4O.js} +3 -3
  58. package/dist/{chunk-TWCWRHNK.js → chunk-COEOZ2NC.js} +5 -5
  59. package/dist/{chunk-UQTQVH5X.js → chunk-EBO5KWWC.js} +1 -1
  60. package/dist/{chunk-QMMOVPUP.js → chunk-EP425PGA.js} +8 -8
  61. package/dist/{chunk-VGVMBY4V.js → chunk-FD3QASU3.js} +18 -9
  62. package/dist/{chunk-RZNJGCPR.js → chunk-FY2XCYLK.js} +5 -5
  63. package/dist/{chunk-JK42X2VL.js → chunk-FYYWKCPO.js} +2 -2
  64. package/dist/{chunk-MTODICDT.js → chunk-GXZFDZJG.js} +1 -1
  65. package/dist/{chunk-LY3KHTHS.js → chunk-HRAZMBUX.js} +1 -1
  66. package/dist/{chunk-YZ7D3P3M.js → chunk-ICMVPBRQ.js} +2 -2
  67. package/dist/{chunk-4LIOV4YP.js → chunk-IDXEDMWI.js} +3 -3
  68. package/dist/{chunk-U4Q3AKLU.js → chunk-IWPQBWFN.js} +1 -1
  69. package/dist/{chunk-WGTD4NZV.js → chunk-IWYBFBRW.js} +2 -2
  70. package/dist/{chunk-DY6AKR4W.js → chunk-JOZWN4YI.js} +4 -4
  71. package/dist/{chunk-UWEDDQHU.js → chunk-L5ZMZOQL.js} +2 -2
  72. package/dist/{chunk-GORB726L.js → chunk-ME2PKG7C.js} +2 -2
  73. package/dist/{chunk-VWTCGKMU.js → chunk-MNHY3EIN.js} +1 -1
  74. package/dist/{chunk-XTTMUQ4Z.js → chunk-OK4WDRGM.js} +1 -1
  75. package/dist/{chunk-4LO6OQZ4.js → chunk-OQKV3OXH.js} +1 -1
  76. package/dist/{chunk-IOTR2VQN.js → chunk-S3NAONBN.js} +4 -4
  77. package/dist/{chunk-MRMIGVUI.js → chunk-SGAQYFGS.js} +1 -1
  78. package/dist/{chunk-YTTPPJZW.js → chunk-TAPGV2YV.js} +4 -4
  79. package/dist/{chunk-HFGTWPAD.js → chunk-UJZ3KD4E.js} +2 -2
  80. package/dist/{chunk-OPSLFAKF.js → chunk-UMTGSFAI.js} +39 -10
  81. package/dist/{chunk-M463H5LN.js → chunk-URZOKMAV.js} +2 -2
  82. package/dist/{chunk-CSXWXXFJ.js → chunk-V5BIWNB3.js} +1 -1
  83. package/dist/{chunk-W4DFSUZG.js → chunk-VAJLOCFP.js} +2 -2
  84. package/dist/{chunk-TYPQUHIS.js → chunk-VU6O4P2N.js} +5 -5
  85. package/dist/{chunk-O2SMA3JN.js → chunk-VYKUGORF.js} +4 -4
  86. package/dist/{chunk-6CBKIF3S.js → chunk-W6MUIG6S.js} +3 -3
  87. package/dist/{chunk-BZYYTJ65.js → chunk-WIAWMH6T.js} +4 -4
  88. package/dist/{chunk-E4NITECV.js → chunk-YRB2VBKK.js} +2 -2
  89. package/dist/{chunk-XESMYZLU.js → chunk-YTCMVHW5.js} +1 -1
  90. package/dist/{chunk-5SKHXKIF.js → chunk-YW7JQ7Z4.js} +5 -5
  91. package/dist/{chunk-LOVDPKUU.js → chunk-ZH32OREM.js} +1 -1
  92. package/dist/{chunk-OXOT3CGW.js → chunk-ZMWCN3QS.js} +4 -4
  93. package/dist/{chunk-ZWDXBLEZ.js → chunk-ZREXC363.js} +3 -3
  94. package/dist/{chunk-TQE5VIDJ.js → chunk-ZX5ISG5O.js} +10 -9
  95. package/dist/{global-upgrade-FKQPJL5P.js → global-upgrade-MBW4MRJ2.js} +6 -6
  96. package/dist/{paths-TU47TCRS.js → paths-H4XMIYUS.js} +2 -2
  97. package/dist/{reapply-CTJZBUJY.js → reapply-JFEY77OC.js} +22 -20
  98. package/dist/src/index.js +19 -19
  99. package/dist/{upgrade-lock-2SQCRMDL.js → upgrade-lock-2RGMG5ZV.js} +3 -3
  100. package/package.json +1 -1
@@ -9,27 +9,27 @@ import {
9
9
  upgradeFinishOutcome,
10
10
  upgradeInstalledPackage,
11
11
  withUpgradeLock
12
- } from "../chunk-MDAJO2MP.js";
12
+ } from "../chunk-7ZWU4BNG.js";
13
13
  import {
14
14
  installWithUpgradeLock
15
- } from "../chunk-XESMYZLU.js";
15
+ } from "../chunk-YTCMVHW5.js";
16
16
  import {
17
17
  ensureCodexTrustAfterReapply,
18
18
  reapplyAllAgents
19
- } from "../chunk-OPSLFAKF.js";
19
+ } from "../chunk-UMTGSFAI.js";
20
20
  import {
21
21
  describeCodexTrustConfirmation
22
- } from "../chunk-H2ZHGK4F.js";
23
- import "../chunk-GORB726L.js";
22
+ } from "../chunk-43DOHHZZ.js";
23
+ import "../chunk-ME2PKG7C.js";
24
24
  import {
25
25
  waitForMachineReadiness
26
- } from "../chunk-PQAA37YV.js";
26
+ } from "../chunk-64LLZV5F.js";
27
27
  import {
28
28
  detectProviderLiveCapabilities,
29
29
  expectedLaunchCapabilities,
30
30
  hasSpawnProvider,
31
31
  resolveControlPolicy
32
- } from "../chunk-NK2URK5A.js";
32
+ } from "../chunk-7TBCGHJT.js";
33
33
  import "../chunk-RIVNNBEK.js";
34
34
  import {
35
35
  AUTO_UPDATE_DISABLE_ENV,
@@ -40,7 +40,7 @@ import {
40
40
  parseAutoUpdateFlag,
41
41
  readAutoUpdateState,
42
42
  updateAutoUpdateState
43
- } from "../chunk-WGTD4NZV.js";
43
+ } from "../chunk-IWYBFBRW.js";
44
44
  import {
45
45
  DAEMON_COLD_START_TIMEOUT_MS,
46
46
  daemonHasRemoteProof,
@@ -52,39 +52,39 @@ import {
52
52
  replaceDaemonService,
53
53
  stopDaemonService,
54
54
  waitForDaemonRemoteProof
55
- } from "../chunk-TYPQUHIS.js";
55
+ } from "../chunk-VU6O4P2N.js";
56
56
  import "../chunk-XHKBHWLX.js";
57
57
  import {
58
58
  readMacAppAgentKey
59
- } from "../chunk-IOTR2VQN.js";
60
- import "../chunk-5SKHXKIF.js";
59
+ } from "../chunk-S3NAONBN.js";
60
+ import "../chunk-YW7JQ7Z4.js";
61
61
  import {
62
62
  exitOnHelpFlag
63
- } from "../chunk-JXOCD4MG.js";
64
- import "../chunk-TQE5VIDJ.js";
65
- import "../chunk-TWCWRHNK.js";
66
- import "../chunk-KN5ULH4O.js";
67
- import "../chunk-MRMIGVUI.js";
68
- import "../chunk-MTODICDT.js";
63
+ } from "../chunk-74YRZTGP.js";
64
+ import "../chunk-ZX5ISG5O.js";
65
+ import "../chunk-COEOZ2NC.js";
66
+ import "../chunk-BXUYF5HB.js";
67
+ import "../chunk-SGAQYFGS.js";
68
+ import "../chunk-GXZFDZJG.js";
69
69
  import "../chunk-GMXKITVA.js";
70
70
  import "../chunk-6ICPEJY5.js";
71
71
  import {
72
72
  readControlMode,
73
73
  recordMacAppKeyPrefix
74
- } from "../chunk-4LIOV4YP.js";
75
- import "../chunk-VGVMBY4V.js";
76
- import "../chunk-CSXWXXFJ.js";
77
- import "../chunk-AT4URLSU.js";
74
+ } from "../chunk-IDXEDMWI.js";
75
+ import "../chunk-FD3QASU3.js";
76
+ import "../chunk-V5BIWNB3.js";
77
+ import "../chunk-3TF5FHAT.js";
78
78
  import "../chunk-POFBE6ZY.js";
79
- import "../chunk-ZWDXBLEZ.js";
80
- import "../chunk-MSKJRRHY.js";
81
- import "../chunk-W4LNR7LP.js";
82
- import "../chunk-U4Q3AKLU.js";
79
+ import "../chunk-ZREXC363.js";
80
+ import "../chunk-5NXOJ3JG.js";
81
+ import "../chunk-56U55YDV.js";
82
+ import "../chunk-IWPQBWFN.js";
83
83
  import "../chunk-7QLSKOSU.js";
84
84
  import {
85
85
  EXIT
86
86
  } from "../chunk-KZERVKTD.js";
87
- import "../chunk-UWEDDQHU.js";
87
+ import "../chunk-L5ZMZOQL.js";
88
88
  import {
89
89
  LATEST_TAG,
90
90
  autoUpdateState,
@@ -94,19 +94,19 @@ import {
94
94
  fetchLatestPublishedVersion,
95
95
  geminiSettings,
96
96
  vscodePluginDir
97
- } from "../chunk-YTTPPJZW.js";
97
+ } from "../chunk-TAPGV2YV.js";
98
98
  import "../chunk-AQFEP65J.js";
99
99
  import {
100
100
  getApiKey
101
- } from "../chunk-XTTMUQ4Z.js";
101
+ } from "../chunk-OK4WDRGM.js";
102
102
  import {
103
103
  NPX_LATEST_COMMAND
104
- } from "../chunk-Z5AAPX3O.js";
104
+ } from "../chunk-7RKX7WRQ.js";
105
105
  import {
106
106
  CANONICAL_PACKAGE,
107
107
  LEGACY_PACKAGE,
108
108
  getPackageVersion
109
- } from "../chunk-ZQZRBPTP.js";
109
+ } from "../chunk-7DXPQW2H.js";
110
110
 
111
111
  // bin/pushary-upgrade.ts
112
112
  import { existsSync } from "fs";
@@ -4,36 +4,36 @@ import {
4
4
  } from "../chunk-CVWG2N3Y.js";
5
5
  import {
6
6
  exitOnFailedSettingsRequest
7
- } from "../chunk-O2SMA3JN.js";
8
- import "../chunk-HFGTWPAD.js";
7
+ } from "../chunk-VYKUGORF.js";
8
+ import "../chunk-UJZ3KD4E.js";
9
9
  import {
10
10
  createIo
11
11
  } from "../chunk-FO3MDD26.js";
12
12
  import {
13
13
  exitOnHelpFlag
14
- } from "../chunk-JXOCD4MG.js";
14
+ } from "../chunk-74YRZTGP.js";
15
15
  import {
16
16
  rejectUnknownFlags
17
17
  } from "../chunk-GMXKITVA.js";
18
- import "../chunk-4LIOV4YP.js";
19
- import "../chunk-MSKJRRHY.js";
20
- import "../chunk-W4LNR7LP.js";
21
- import "../chunk-U4Q3AKLU.js";
18
+ import "../chunk-IDXEDMWI.js";
19
+ import "../chunk-5NXOJ3JG.js";
20
+ import "../chunk-56U55YDV.js";
21
+ import "../chunk-IWPQBWFN.js";
22
22
  import {
23
23
  UsageError
24
24
  } from "../chunk-7QLSKOSU.js";
25
25
  import {
26
26
  EXIT
27
27
  } from "../chunk-KZERVKTD.js";
28
- import "../chunk-UWEDDQHU.js";
29
- import "../chunk-YTTPPJZW.js";
28
+ import "../chunk-L5ZMZOQL.js";
29
+ import "../chunk-TAPGV2YV.js";
30
30
  import "../chunk-AQFEP65J.js";
31
31
  import {
32
32
  getApiKey,
33
33
  getBaseUrl
34
- } from "../chunk-XTTMUQ4Z.js";
35
- import "../chunk-Z5AAPX3O.js";
36
- import "../chunk-ZQZRBPTP.js";
34
+ } from "../chunk-OK4WDRGM.js";
35
+ import "../chunk-7RKX7WRQ.js";
36
+ import "../chunk-7DXPQW2H.js";
37
37
 
38
38
  // bin/pushary-wait.ts
39
39
  exitOnHelpFlag("wait");
@@ -1,23 +1,23 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  installNetworkDefaults
4
- } from "../chunk-W4LNR7LP.js";
5
- import "../chunk-U4Q3AKLU.js";
4
+ } from "../chunk-56U55YDV.js";
5
+ import "../chunk-IWPQBWFN.js";
6
6
  import "../chunk-7QLSKOSU.js";
7
7
  import {
8
8
  EXIT
9
9
  } from "../chunk-KZERVKTD.js";
10
- import "../chunk-YTTPPJZW.js";
10
+ import "../chunk-TAPGV2YV.js";
11
11
  import "../chunk-AQFEP65J.js";
12
- import "../chunk-XTTMUQ4Z.js";
12
+ import "../chunk-OK4WDRGM.js";
13
13
  import {
14
14
  COMMANDS,
15
15
  renderHelp,
16
16
  resolveCommandName
17
- } from "../chunk-Z5AAPX3O.js";
17
+ } from "../chunk-7RKX7WRQ.js";
18
18
  import {
19
19
  getPackageVersion
20
- } from "../chunk-ZQZRBPTP.js";
20
+ } from "../chunk-7DXPQW2H.js";
21
21
 
22
22
  // src/cli/runtime.ts
23
23
  var supportsRuntime = (version) => {
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  registerTranscript
3
- } from "./chunk-QMMOVPUP.js";
3
+ } from "./chunk-EP425PGA.js";
4
4
  import {
5
5
  namedEvent
6
- } from "./chunk-TQE5VIDJ.js";
6
+ } from "./chunk-ZX5ISG5O.js";
7
7
  import {
8
8
  writeDegraded
9
- } from "./chunk-AT4URLSU.js";
9
+ } from "./chunk-3TF5FHAT.js";
10
10
  import {
11
11
  claudeShapedHookInput,
12
12
  hookCompatibleProfileBySource
13
- } from "./chunk-ZQZRBPTP.js";
13
+ } from "./chunk-7DXPQW2H.js";
14
14
 
15
15
  // src/tool-hook-input.ts
16
16
  var OPTIONAL_TEXT_FIELDS = ["hook_event_name", "session_id", "cwd", "transcript_path", "tool_use_id", "permission_mode"];
@@ -68,33 +68,37 @@ var matches = (rule, source, event) => {
68
68
  return (ruleSource === "*" || ruleSource === source) && (ruleEvent === "*" || ruleEvent === event);
69
69
  };
70
70
  var isAdmitted = (rules, source, event) => !rules.disabled.some((rule) => matches(rule, source, event));
71
- var readHookInput = async (source, fallbackEvent = "", stdin = process.stdin, parseInput) => {
71
+ var UNREADABLE = { kind: "unreadable" };
72
+ var UNKNOWN_AGENT = { kind: "unknown_agent" };
73
+ var readHookInputOutcome = async (source, fallbackEvent = "", stdin = process.stdin, parseInput) => {
72
74
  if (source === null) {
73
75
  writeDegraded("hook", {
74
76
  reason: "unknown_agent",
75
77
  fallback: "stood aside, so nothing is gated or reported for this call",
76
78
  event: fallbackEvent
77
79
  });
78
- return null;
80
+ return UNKNOWN_AGENT;
79
81
  }
80
82
  let raw = "";
81
83
  for await (const chunk of stdin) raw += chunk;
82
- if (!raw.trim()) return null;
84
+ if (!raw.trim()) return UNREADABLE;
83
85
  let parsed;
84
86
  try {
85
87
  parsed = JSON.parse(raw);
86
88
  } catch {
87
- return null;
89
+ return UNREADABLE;
88
90
  }
89
- if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) return null;
91
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) return UNREADABLE;
90
92
  const shaped = inClaudeShape(source, namedEvent(process.argv) ?? fallbackEvent, parsed);
91
93
  const input = parseInput ? parseInput(shaped) : shaped;
92
- if (input === null) return null;
94
+ if (input === null) return UNREADABLE;
93
95
  const event = eventNameOf(input) ?? fallbackEvent;
94
- if (!isAdmitted(readAdmissionRules(), source, event)) return null;
96
+ if (!isAdmitted(readAdmissionRules(), source, event)) return { kind: "not_admitted", input };
95
97
  if (stdin === process.stdin) registerTranscript(source, input);
96
- return input;
98
+ return { kind: "admitted", input };
97
99
  };
100
+ var admittedInput = (read) => read.kind === "admitted" ? read.input : null;
101
+ var readHookInput = async (source, fallbackEvent = "", stdin = process.stdin, parseInput) => admittedInput(await readHookInputOutcome(source, fallbackEvent, stdin, parseInput));
98
102
  var inClaudeShape = (source, event, parsed) => {
99
103
  const profile = hookCompatibleProfileBySource(source);
100
104
  return profile ? claudeShapedHookInput(profile.payload, event, parsed) : parsed;
@@ -107,8 +111,12 @@ var eventNameOf = (input) => {
107
111
  function readToolHookInput(source, event, stdin = process.stdin) {
108
112
  return readHookInput(source, event, stdin, parseToolHookInput);
109
113
  }
114
+ function readToolHookCall(source, event, stdin = process.stdin) {
115
+ return readHookInputOutcome(source, event, stdin, parseToolHookInput);
116
+ }
110
117
 
111
118
  export {
112
119
  readHookInput,
113
- readToolHookInput
120
+ readToolHookInput,
121
+ readToolHookCall
114
122
  };
@@ -5,18 +5,18 @@ import {
5
5
  import {
6
6
  SubscriptionRequiredError,
7
7
  callMcpTool
8
- } from "./chunk-ZWDXBLEZ.js";
8
+ } from "./chunk-ZREXC363.js";
9
9
  import {
10
10
  installNetworkDefaults,
11
11
  isNetworkFailure
12
- } from "./chunk-W4LNR7LP.js";
12
+ } from "./chunk-56U55YDV.js";
13
13
  import {
14
14
  clientReportClaims
15
- } from "./chunk-YTTPPJZW.js";
15
+ } from "./chunk-TAPGV2YV.js";
16
16
  import {
17
17
  getApiKey,
18
18
  getBaseUrl
19
- } from "./chunk-XTTMUQ4Z.js";
19
+ } from "./chunk-OK4WDRGM.js";
20
20
  import {
21
21
  ASK_AGENT_NAME_MAX,
22
22
  ASK_QUESTION_MAX,
@@ -25,7 +25,7 @@ import {
25
25
  GATE_PERMISSION_MODE_MAX_LENGTH,
26
26
  degradedLine,
27
27
  truncateLine
28
- } from "./chunk-ZQZRBPTP.js";
28
+ } from "./chunk-7DXPQW2H.js";
29
29
 
30
30
  // src/client-report-claim.ts
31
31
  import { createHash } from "crypto";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  CODEX_HOOK_STATUS
3
- } from "./chunk-GORB726L.js";
3
+ } from "./chunk-ME2PKG7C.js";
4
4
  import {
5
5
  NPX_LATEST_COMMAND
6
- } from "./chunk-Z5AAPX3O.js";
6
+ } from "./chunk-7RKX7WRQ.js";
7
7
 
8
8
  // src/setup/codex-trust.ts
9
9
  var CODEX_TRUST_TELEMETRY = {
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  readExistingMachineId
3
- } from "./chunk-U4Q3AKLU.js";
3
+ } from "./chunk-IWPQBWFN.js";
4
4
  import {
5
5
  NetworkError
6
6
  } from "./chunk-7QLSKOSU.js";
7
7
  import {
8
8
  getBaseUrl
9
- } from "./chunk-XTTMUQ4Z.js";
9
+ } from "./chunk-OK4WDRGM.js";
10
10
  import {
11
11
  clientContextHeaders,
12
12
  getPackageVersion
13
- } from "./chunk-ZQZRBPTP.js";
13
+ } from "./chunk-7DXPQW2H.js";
14
14
 
15
15
  // src/cli/net.ts
16
16
  import { createRequire } from "module";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pusharyFetch
3
- } from "./chunk-W4LNR7LP.js";
3
+ } from "./chunk-56U55YDV.js";
4
4
  import {
5
5
  NetworkError
6
6
  } from "./chunk-7QLSKOSU.js";
@@ -9,11 +9,11 @@ import {
9
9
  } from "./chunk-KZERVKTD.js";
10
10
  import {
11
11
  getBaseUrl
12
- } from "./chunk-XTTMUQ4Z.js";
12
+ } from "./chunk-OK4WDRGM.js";
13
13
  import {
14
14
  isValidApiKey,
15
15
  normalizeKeyScope
16
- } from "./chunk-ZQZRBPTP.js";
16
+ } from "./chunk-7DXPQW2H.js";
17
17
 
18
18
  // src/session.ts
19
19
  var samePusharyAccount = (left, right) => left.kind === "ok" && right.kind === "ok" && left.identity.workspaceId !== "" && left.identity.workspaceId === right.identity.workspaceId && left.identity.siteId === right.identity.siteId;
@@ -3,27 +3,27 @@ import {
3
3
  expectedLaunchCapabilities,
4
4
  hasSpawnProvider,
5
5
  resolveControlPolicy
6
- } from "./chunk-NK2URK5A.js";
6
+ } from "./chunk-7TBCGHJT.js";
7
7
  import {
8
8
  daemonHasRemoteProof,
9
9
  daemonServiceManagerAvailable,
10
10
  hasDaemonServiceDefinition,
11
11
  readDaemonNeedsLogin,
12
12
  readDaemonStatus
13
- } from "./chunk-TYPQUHIS.js";
13
+ } from "./chunk-VU6O4P2N.js";
14
14
  import {
15
15
  readControlMode,
16
16
  readKeySource
17
- } from "./chunk-4LIOV4YP.js";
17
+ } from "./chunk-IDXEDMWI.js";
18
18
  import {
19
19
  getMachineId
20
- } from "./chunk-U4Q3AKLU.js";
20
+ } from "./chunk-IWPQBWFN.js";
21
21
  import {
22
22
  getBaseUrl
23
- } from "./chunk-XTTMUQ4Z.js";
23
+ } from "./chunk-OK4WDRGM.js";
24
24
  import {
25
25
  getPackageVersion
26
- } from "./chunk-ZQZRBPTP.js";
26
+ } from "./chunk-7DXPQW2H.js";
27
27
 
28
28
  // src/machines.ts
29
29
  import { hostname } from "os";
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-KZERVKTD.js";
4
4
  import {
5
5
  renderCommandHelp
6
- } from "./chunk-Z5AAPX3O.js";
6
+ } from "./chunk-7RKX7WRQ.js";
7
7
  import {
8
8
  getPackageVersion
9
- } from "./chunk-ZQZRBPTP.js";
9
+ } from "./chunk-7DXPQW2H.js";
10
10
 
11
11
  // src/cli/usage.ts
12
12
  var exitOnHelpFlag = (command) => {
@@ -298,6 +298,7 @@ var normalizeAgentId = (value, accepted) => {
298
298
 
299
299
  // ../contracts/src/agent-wiring.ts
300
300
  var COMPATIBLE_AGENT_TYPES = ["qwen_code", "codebuddy", "qoder", "droid", "devin", "antigravity_cli"];
301
+ var isCompatibleAgentType = (value) => typeof value === "string" && COMPATIBLE_AGENT_TYPES.includes(value);
301
302
  var CANONICAL_PATH_KEYS = ["file_path", "path", "notebook_path"];
302
303
  var CANONICAL_COMMAND_KEYS = ["command"];
303
304
  var SHELL_TOOLS = /* @__PURE__ */ new Set(["Bash", "PowerShell"]);
@@ -315,7 +316,34 @@ var withCanonicalInputKeys = (profile, toolInput) => {
315
316
  return renamed.length === 0 ? toolInput : { ...toolInput, ...Object.fromEntries(renamed) };
316
317
  };
317
318
  var canonicalToolName = (profile, toolName) => profile.toolAliases[toolName] ?? toolName;
319
+ var TASK_OUTPUT_TOOL = "BashOutput";
320
+ var TASK_STOP_TOOL = "KillShell";
321
+ var BLANK_TASK_INPUT_TOOL = "TaskInput";
322
+ var SHELL_TOOL = "Bash";
323
+ var typesText = (value) => typeof value === "string" && value.trim().length > 0;
324
+ var taskIdOf = (control, toolInput) => typeof toolInput[control.taskKey] === "string" ? { task_id: toolInput[control.taskKey] } : {};
325
+ var typedIntoTask = (control, toolInput) => {
326
+ const text = toolInput[control.inputKey];
327
+ if (typesText(text)) return { tool: SHELL_TOOL, input: { command: text }, unreadable: false };
328
+ return {
329
+ tool: BLANK_TASK_INPUT_TOOL,
330
+ input: { ...taskIdOf(control, toolInput), input: typeof text === "string" ? text : "" },
331
+ unreadable: false
332
+ };
333
+ };
334
+ var taskControlLookup = (control, toolInput) => {
335
+ const action = toolInput[control.actionKey];
336
+ if (action === control.typingAction) return typedIntoTask(control, toolInput);
337
+ if (action === control.stopAction) return { tool: TASK_STOP_TOOL, input: taskIdOf(control, toolInput), unreadable: false };
338
+ if (typeof action === "string" && control.outputActions.includes(action)) {
339
+ return { tool: TASK_OUTPUT_TOOL, input: taskIdOf(control, toolInput), unreadable: false };
340
+ }
341
+ return { tool: control.name, input: toolInput, unreadable: false };
342
+ };
343
+ var controlsTasks = (profile, toolName) => profile.taskControl?.name === toolName ? profile.taskControl : void 0;
318
344
  var toToolLookup = (profile, toolName, toolInput, resolvePath = (path) => path) => {
345
+ const taskControl = controlsTasks(profile, toolName);
346
+ if (taskControl) return taskControlLookup(taskControl, toolInput);
319
347
  const tool = canonicalToolName(profile, toolName);
320
348
  if (SHELL_TOOLS.has(tool)) {
321
349
  const command = firstString(toolInput, [...profile.shellCommandKeys, ...CANONICAL_COMMAND_KEYS]);
@@ -453,7 +481,8 @@ var QWEN_CODE = {
453
481
  instructions: { file: [".qwen", "QWEN.md"], label: "Qwen Code" },
454
482
  permissionRuleFile: null,
455
483
  configDirIsShared: false,
456
- soleGate: null
484
+ soleGate: null,
485
+ taskControl: null
457
486
  };
458
487
  var CODEBUDDY = {
459
488
  agentType: "codebuddy",
@@ -476,7 +505,8 @@ var CODEBUDDY = {
476
505
  instructions: { file: [".codebuddy", "CODEBUDDY.md"], label: "CodeBuddy" },
477
506
  permissionRuleFile: [".codebuddy", "settings.json"],
478
507
  configDirIsShared: false,
479
- soleGate: null
508
+ soleGate: null,
509
+ taskControl: null
480
510
  };
481
511
  var QODER = {
482
512
  agentType: "qoder",
@@ -499,7 +529,8 @@ var QODER = {
499
529
  instructions: null,
500
530
  permissionRuleFile: null,
501
531
  configDirIsShared: false,
502
- soleGate: null
532
+ soleGate: null,
533
+ taskControl: null
503
534
  };
504
535
  var DROID = {
505
536
  agentType: "droid",
@@ -527,7 +558,8 @@ var DROID = {
527
558
  instructions: null,
528
559
  permissionRuleFile: null,
529
560
  configDirIsShared: false,
530
- soleGate: null
561
+ soleGate: null,
562
+ taskControl: null
531
563
  };
532
564
  var DEVIN = {
533
565
  agentType: "devin",
@@ -560,7 +592,17 @@ var DEVIN = {
560
592
  instructions: null,
561
593
  permissionRuleFile: null,
562
594
  configDirIsShared: false,
563
- soleGate: null
595
+ soleGate: null,
596
+ taskControl: null
597
+ };
598
+ var ANTIGRAVITY_TASK_CONTROL = {
599
+ name: "manage_task",
600
+ actionKey: "Action",
601
+ taskKey: "TaskId",
602
+ inputKey: "Input",
603
+ typingAction: "send_input",
604
+ outputActions: ["list", "status"],
605
+ stopAction: "kill"
564
606
  };
565
607
  var ANTIGRAVITY_CLI = {
566
608
  agentType: "antigravity_cli",
@@ -599,8 +641,10 @@ var ANTIGRAVITY_CLI = {
599
641
  file: [".gemini", "antigravity-cli", "settings.json"],
600
642
  key: "toolPermission",
601
643
  value: "always-proceed",
602
- receipt: [".pushary", "setup", "antigravity-tool-permission.json"]
603
- }
644
+ receipt: [".pushary", "setup", "antigravity-tool-permission.json"],
645
+ coveredTools: [ANTIGRAVITY_TASK_CONTROL.name]
646
+ },
647
+ taskControl: ANTIGRAVITY_TASK_CONTROL
604
648
  };
605
649
  var HOOK_COMPATIBLE_PROFILES = Object.freeze([QWEN_CODE, CODEBUDDY, QODER, DROID, DEVIN, ANTIGRAVITY_CLI]);
606
650
  var hookCompatibleProfile = (agentType) => HOOK_COMPATIBLE_PROFILES.find((profile) => profile.agentType === agentType);
@@ -3452,7 +3496,10 @@ var isCodexCoordinationTool = (toolName) => CODEX_COORDINATION_TOOL_NAMES.has(to
3452
3496
  var isNamedByARule = (rank) => rank !== void 0 && rank !== "wildcard";
3453
3497
  var isSpecificArgumentRank = (rank) => rank === "exact" || rank === "prefix";
3454
3498
  var shellReadOnlyFloorApplies = (toolName, arg, rank) => !isSpecificArgumentRank(rank) && toolName === "Bash" && typeof arg === "string" && isSafeReadOnlyCommand(arg);
3455
- var coordinationFloorApplies = (toolName, rank) => isCodexCoordinationTool(toolName) && !isNamedByARule(rank);
3499
+ var AGENT_TASK_CONTROL_TOOLS = [TASK_OUTPUT_TOOL, TASK_STOP_TOOL];
3500
+ var AGENT_TASK_CONTROL_TOOL_NAMES = new Set(AGENT_TASK_CONTROL_TOOLS);
3501
+ var readsOrStopsItsOwnWork = (toolName) => isCodexCoordinationTool(toolName) || AGENT_TASK_CONTROL_TOOL_NAMES.has(toolName);
3502
+ var coordinationFloorApplies = (toolName, rank) => readsOrStopsItsOwnWork(toolName) && !isNamedByARule(rank);
3456
3503
  var POSIX_SHELL_TOOLS = /* @__PURE__ */ new Set(["Bash", "Monitor"]);
3457
3504
  var argumentsAsWritten = (args) => ({ forms: args, hidesWhatItRuns: false });
3458
3505
  var namesAnArgumentOf = (pattern, toolName) => pattern.startsWith(`${toolName}(`);
@@ -4256,8 +4303,12 @@ export {
4256
4303
  MANAGED_PROVIDERS,
4257
4304
  DISCONNECT_AGENT_IDS,
4258
4305
  normalizeAgentId,
4306
+ isCompatibleAgentType,
4259
4307
  PHONE_ANSWERED_TOOLS,
4260
4308
  canonicalToolName,
4309
+ TASK_OUTPUT_TOOL,
4310
+ TASK_STOP_TOOL,
4311
+ BLANK_TASK_INPUT_TOOL,
4261
4312
  toToolLookup,
4262
4313
  SOLE_GATE_UNDECIDED_REASON,
4263
4314
  SOLE_GATE_SUBSCRIPTION_REASON,
@@ -2,7 +2,7 @@ import {
2
2
  DISCONNECT_AGENT_IDS,
3
3
  SETUP_AGENT_CHOICES,
4
4
  isApprovalMode
5
- } from "./chunk-ZQZRBPTP.js";
5
+ } from "./chunk-7DXPQW2H.js";
6
6
 
7
7
  // src/cli/mode-request.ts
8
8
  var parseDuration = (value) => {
@@ -10,10 +10,10 @@ import {
10
10
  resolvePackageVersionFromBinary,
11
11
  resolvePathBinary,
12
12
  resolvePathBinaryAsync
13
- } from "./chunk-YTTPPJZW.js";
13
+ } from "./chunk-TAPGV2YV.js";
14
14
  import {
15
15
  MANAGED_PROVIDERS
16
- } from "./chunk-ZQZRBPTP.js";
16
+ } from "./chunk-7DXPQW2H.js";
17
17
 
18
18
  // src/setup/codex-install.ts
19
19
  var NATIVE_BINARY_MIN_BYTES = 20 * 1024 * 1024;
@@ -4,7 +4,7 @@ import {
4
4
  forkFinishWithUpgradeLock,
5
5
  installWithUpgradeLock,
6
6
  releaseAutoUpdateLock
7
- } from "./chunk-XESMYZLU.js";
7
+ } from "./chunk-YTCMVHW5.js";
8
8
  import {
9
9
  describeAutoUpdateCheck,
10
10
  globalInstallLocation,
@@ -14,7 +14,7 @@ import {
14
14
  readAutoUpdateState,
15
15
  updateAutoUpdateState,
16
16
  upgradeEntryFor
17
- } from "./chunk-WGTD4NZV.js";
17
+ } from "./chunk-IWYBFBRW.js";
18
18
  import {
19
19
  EXIT
20
20
  } from "./chunk-KZERVKTD.js";
@@ -27,10 +27,10 @@ import {
27
27
  npmErrorMessage,
28
28
  readGlobalCliInstallAt,
29
29
  readGlobalPrefix
30
- } from "./chunk-YTTPPJZW.js";
30
+ } from "./chunk-TAPGV2YV.js";
31
31
  import {
32
32
  NPX_LATEST_COMMAND
33
- } from "./chunk-Z5AAPX3O.js";
33
+ } from "./chunk-7RKX7WRQ.js";
34
34
  import {
35
35
  commandsPackage,
36
36
  globalUpgradeEntry,
@@ -39,7 +39,7 @@ import {
39
39
  isSameMajorVersion,
40
40
  ownPackageRoot,
41
41
  packageVersionAt
42
- } from "./chunk-ZQZRBPTP.js";
42
+ } from "./chunk-7DXPQW2H.js";
43
43
 
44
44
  // src/global-upgrade.ts
45
45
  import { existsSync } from "fs";