tiller-app 1.0.5 → 1.0.7

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/LICENSE-T3-CODE CHANGED
@@ -1,6 +1,7 @@
1
1
  MIT License
2
2
 
3
3
  Copyright (c) 2026 T3 Tools Inc.
4
+ Copyright (c) 2026 Antler Web Studios and Tiller contributors
4
5
 
5
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
7
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,7 +1,9 @@
1
1
  # Tiller
2
2
 
3
- Tiller is a paid, closed-source Mac app built on T3 Code. This package installs the Tiller CLI for Apple Silicon Macs.
3
+ Tiller is a free, open-source (MIT) app for coding agents, built on T3 Code. This package installs the Tiller CLI for Apple Silicon Macs.
4
4
 
5
5
  https://tiller.shipr.app
6
6
 
7
- T3 Code's MIT notice is included in LICENSE-T3-CODE; it does not license Tiller.
7
+ Source: https://github.com/0xNull-ops/tiller
8
+
9
+ The MIT license, including T3 Code's notice, is in LICENSE-T3-CODE.
package/bin/tiller.mjs CHANGED
@@ -12,6 +12,8 @@ const { version } = JSON.parse(
12
12
 
13
13
  // fork(launch)
14
14
  const SUPPORTED = ["darwin-arm64"];
15
+ // Well inside launchd's 20 s ExitTimeOut, which SIGKILLs only the launcher and orphans the runtime.
16
+ const TERMINATE_GRACE_MS = 5_000;
15
17
 
16
18
  function t3Home() {
17
19
  const raw = (process.env.TILLER_HOME || "").trim();
@@ -214,8 +216,13 @@ async function main() {
214
216
  child.on("message", (message) => process.connected && process.send(message));
215
217
  process.on("disconnect", () => child.connected && child.disconnect());
216
218
  }
219
+ let force;
217
220
  for (const signal of ["SIGINT", "SIGTERM", "SIGHUP"]) {
218
- process.on(signal, () => (ipc || signal !== "SIGINT") && child.kill(signal));
221
+ process.on(signal, () => {
222
+ if (!ipc && signal === "SIGINT") return;
223
+ child.kill(signal);
224
+ force ??= setTimeout(() => killTree(child), TERMINATE_GRACE_MS).unref();
225
+ });
219
226
  }
220
227
  child.on("error", (error) => fail(executableError(key, error.message)));
221
228
  child.on("exit", (code, signal) =>
@@ -223,6 +230,29 @@ async function main() {
223
230
  );
224
231
  }
225
232
 
233
+ /** SIGKILL the runtime and its providers, which a runtime stuck on shutdown never stops. */
234
+ function killTree(child) {
235
+ const pids = [child.pid];
236
+ if (process.platform !== "win32") {
237
+ const table =
238
+ spawnSync("ps", ["-A", "-o", "pid=,ppid="], { encoding: "utf8", timeout: 2_000 }).stdout ||
239
+ "";
240
+ const rows = table
241
+ .trim()
242
+ .split("\n")
243
+ .map((line) => line.trim().split(/\s+/).map(Number));
244
+ for (let i = 0; i < pids.length; i++) {
245
+ for (const [pid, ppid] of rows) if (ppid === pids[i]) pids.push(pid);
246
+ }
247
+ }
248
+ for (const pid of pids.slice(1)) {
249
+ try {
250
+ process.kill(pid, "SIGKILL");
251
+ } catch {}
252
+ }
253
+ child.kill("SIGKILL");
254
+ }
255
+
226
256
  function executableError(key, detail) {
227
257
  return new Error(
228
258
  `could not run T3 Code ${version} for ${key}: ${detail}` +
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "tiller-app",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "Tiller CLI (Apple Silicon Macs only). Downloads the self-contained executable for this platform from the GitHub Release.",
5
- "license": "UNLICENSED",
5
+ "license": "MIT",
6
6
  "repository": "github:Antler-Web-Studios/tiller",
7
7
  "bin": {
8
8
  "tiller": "./bin/tiller.mjs"
@@ -17,6 +17,6 @@
17
17
  "node": ">=20.11"
18
18
  },
19
19
  "t3code": {
20
- "databaseMigration": 85
20
+ "databaseMigration": 92
21
21
  }
22
22
  }