@rubytech/taskmaster 1.0.16 → 1.0.18

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,5 +1,5 @@
1
1
  {
2
- "version": "1.0.16",
3
- "commit": "29d7bb96c371e7d6f1b015993e7354b0dc5bd563",
4
- "builtAt": "2026-02-16T08:08:27.128Z"
2
+ "version": "1.0.18",
3
+ "commit": "8e4a65bb3773a3a682f70cbf3167bb0ccbf4b00b",
4
+ "builtAt": "2026-02-16T08:16:40.811Z"
5
5
  }
@@ -124,8 +124,11 @@ export const updateHandlers = {
124
124
  const timeoutMs = typeof timeoutMsRaw === "number" && Number.isFinite(timeoutMsRaw)
125
125
  ? Math.max(1000, Math.floor(timeoutMsRaw))
126
126
  : undefined;
127
+ const log = context.logGateway;
128
+ log.info(`software update started`);
127
129
  const progress = {
128
130
  onStepStart: (step) => {
131
+ log.info(`update step ${step.index + 1}/${step.total}: ${step.name}`);
129
132
  context.broadcast("update.progress", {
130
133
  phase: "step-start",
131
134
  name: step.name,
@@ -134,13 +137,15 @@ export const updateHandlers = {
134
137
  });
135
138
  },
136
139
  onStepComplete: (step) => {
140
+ const ok = step.exitCode === 0 || step.exitCode === null;
141
+ log.info(`update step ${step.index + 1}/${step.total}: ${step.name} ${ok ? "ok" : `FAILED (exit ${step.exitCode})`} (${step.durationMs}ms)`);
137
142
  context.broadcast("update.progress", {
138
143
  phase: "step-done",
139
144
  name: step.name,
140
145
  index: step.index,
141
146
  total: step.total,
142
147
  durationMs: step.durationMs,
143
- ok: step.exitCode === 0 || step.exitCode === null,
148
+ ok,
144
149
  });
145
150
  },
146
151
  };
@@ -167,6 +172,12 @@ export const updateHandlers = {
167
172
  durationMs: 0,
168
173
  };
169
174
  }
175
+ if (result.status === "ok") {
176
+ log.info(`software update completed (${result.mode}, ${result.durationMs}ms)`);
177
+ }
178
+ else {
179
+ log.warn(`software update ${result.status}: ${result.reason ?? "unknown"} (${result.mode}, ${result.durationMs}ms)`);
180
+ }
170
181
  const payload = {
171
182
  kind: "update",
172
183
  status: result.status,
@@ -36,7 +36,7 @@ export async function resolveGlobalPackageRoot(manager, runCommand, timeoutMs) {
36
36
  const root = await resolveGlobalRoot(manager, runCommand, timeoutMs);
37
37
  if (!root)
38
38
  return null;
39
- return path.join(root, "taskmaster");
39
+ return path.join(root, "@rubytech", "taskmaster");
40
40
  }
41
41
  export async function detectGlobalInstallManagerForRoot(runCommand, pkgRoot, timeoutMs) {
42
42
  const pkgReal = await tryRealpath(pkgRoot);
@@ -52,13 +52,13 @@ export async function detectGlobalInstallManagerForRoot(runCommand, pkgRoot, tim
52
52
  if (!globalRoot)
53
53
  continue;
54
54
  const globalReal = await tryRealpath(globalRoot);
55
- const expected = path.join(globalReal, "taskmaster");
55
+ const expected = path.join(globalReal, "@rubytech", "taskmaster");
56
56
  if (path.resolve(expected) === path.resolve(pkgReal))
57
57
  return manager;
58
58
  }
59
59
  const bunGlobalRoot = resolveBunGlobalRoot();
60
60
  const bunGlobalReal = await tryRealpath(bunGlobalRoot);
61
- const bunExpected = path.join(bunGlobalReal, "taskmaster");
61
+ const bunExpected = path.join(bunGlobalReal, "@rubytech", "taskmaster");
62
62
  if (path.resolve(bunExpected) === path.resolve(pkgReal))
63
63
  return "bun";
64
64
  return null;
@@ -68,7 +68,7 @@ export async function detectGlobalInstallManagerByPresence(runCommand, timeoutMs
68
68
  const root = await resolveGlobalRoot(manager, runCommand, timeoutMs);
69
69
  if (!root)
70
70
  continue;
71
- if (await pathExists(path.join(root, "taskmaster")))
71
+ if (await pathExists(path.join(root, "@rubytech", "taskmaster")))
72
72
  return manager;
73
73
  }
74
74
  const bunRoot = resolveBunGlobalRoot();
@@ -114,7 +114,7 @@ async function findPackageRoot(candidates) {
114
114
  try {
115
115
  const raw = await fs.readFile(pkgPath, "utf-8");
116
116
  const parsed = JSON.parse(raw);
117
- if (parsed?.name === "taskmaster")
117
+ if (parsed?.name === "@rubytech/taskmaster" || parsed?.name === "taskmaster")
118
118
  return current;
119
119
  }
120
120
  catch {
@@ -521,7 +521,7 @@ export async function runGatewayUpdate(opts = {}) {
521
521
  const beforeVersion = await readPackageVersion(pkgRoot);
522
522
  const globalManager = await detectGlobalInstallManagerForRoot(runCommand, pkgRoot, timeoutMs);
523
523
  if (globalManager) {
524
- const spec = `taskmaster@${normalizeTag(opts.tag)}`;
524
+ const spec = `@rubytech/taskmaster@${normalizeTag(opts.tag)}`;
525
525
  const updateStep = await runStep({
526
526
  runCommand,
527
527
  name: "global update",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubytech/taskmaster",
3
- "version": "1.0.16",
3
+ "version": "1.0.18",
4
4
  "description": "AI-powered business assistant for small businesses",
5
5
  "publishConfig": {
6
6
  "access": "public"