@rubytech/taskmaster 1.0.31 → 1.0.33
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/dist/agents/workspace.js +7 -1
- package/dist/build-info.json +3 -3
- package/dist/control-ui/assets/{index-BTi4rBlY.js → index-D9HCutTJ.js} +234 -212
- package/dist/control-ui/assets/index-D9HCutTJ.js.map +1 -0
- package/dist/control-ui/index.html +1 -1
- package/dist/gateway/server-methods/system.js +26 -12
- package/extensions/diagnostics-otel/node_modules/.bin/acorn +0 -0
- package/extensions/googlechat/node_modules/.bin/taskmaster +0 -0
- package/extensions/line/node_modules/.bin/taskmaster +0 -0
- package/extensions/matrix/node_modules/.bin/markdown-it +0 -0
- package/extensions/matrix/node_modules/.bin/taskmaster +0 -0
- package/extensions/memory-lancedb/node_modules/.bin/arrow2csv +0 -0
- package/extensions/memory-lancedb/node_modules/.bin/openai +0 -0
- package/extensions/msteams/node_modules/.bin/taskmaster +0 -0
- package/extensions/nostr/node_modules/.bin/taskmaster +0 -0
- package/extensions/nostr/node_modules/.bin/tsc +0 -0
- package/extensions/nostr/node_modules/.bin/tsserver +0 -0
- package/extensions/zalo/node_modules/.bin/taskmaster +0 -0
- package/extensions/zalouser/node_modules/.bin/taskmaster +0 -0
- package/package.json +54 -64
- package/scripts/install.sh +5 -1
- package/taskmaster-docs/USER-GUIDE.md +2 -2
- package/templates/.DS_Store +0 -0
- package/templates/customer/.DS_Store +0 -0
- package/templates/customer/agents/.DS_Store +0 -0
- package/templates/customer/agents/admin/BOOTSTRAP.md +1 -1
- package/templates/taskmaster/.gitignore +1 -0
- package/templates/taskmaster/agents/admin/BOOTSTRAP.md +1 -1
- package/templates/tradesupport/agents/admin/BOOTSTRAP.md +1 -1
- package/dist/control-ui/assets/index-BTi4rBlY.js.map +0 -1
- package/dist/control-ui/assets/uninstall-mUk7IPTt.js +0 -2
- package/dist/control-ui/assets/uninstall-mUk7IPTt.js.map +0 -1
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<title>Taskmaster Control</title>
|
|
7
7
|
<meta name="color-scheme" content="dark light" />
|
|
8
8
|
<link rel="icon" type="image/png" href="./favicon.png" />
|
|
9
|
-
<script type="module" crossorigin src="./assets/index-
|
|
9
|
+
<script type="module" crossorigin src="./assets/index-D9HCutTJ.js"></script>
|
|
10
10
|
<link rel="stylesheet" crossorigin href="./assets/index-BQEnHucA.css">
|
|
11
11
|
</head>
|
|
12
12
|
<body>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { resolveMainSessionKeyFromConfig } from "../../config/sessions.js";
|
|
2
2
|
import { uninstallCommand } from "../../commands/uninstall.js";
|
|
3
|
+
import { resolveGatewayService } from "../../daemon/service.js";
|
|
3
4
|
import { defaultRuntime } from "../../runtime.js";
|
|
4
5
|
import { getLastHeartbeatEvent } from "../../infra/heartbeat-events.js";
|
|
5
6
|
import { setHeartbeatsEnabled } from "../../infra/heartbeat-runner.js";
|
|
@@ -127,28 +128,41 @@ export const systemHandlers = {
|
|
|
127
128
|
const scopes = Array.isArray(params.scopes)
|
|
128
129
|
? params.scopes.filter((s) => validScopes.has(s))
|
|
129
130
|
: ["service", "state", "workspace"];
|
|
130
|
-
const opts = {
|
|
131
|
-
service: scopes.includes("service"),
|
|
132
|
-
state: scopes.includes("state"),
|
|
133
|
-
workspace: scopes.includes("workspace"),
|
|
134
|
-
app: scopes.includes("app"),
|
|
135
|
-
purge,
|
|
136
|
-
yes: true,
|
|
137
|
-
nonInteractive: true,
|
|
138
|
-
};
|
|
139
131
|
const log = context.logGateway;
|
|
140
132
|
log.info(`system.uninstall: scopes=${scopes.join(",")} purge=${purge}`);
|
|
141
133
|
// Respond before running uninstall — the gateway will exit afterward
|
|
142
134
|
respond(true, { ok: true, scopes, purge }, undefined);
|
|
143
135
|
// Small delay to let the response reach the client
|
|
144
136
|
await new Promise((r) => setTimeout(r, 500));
|
|
137
|
+
// Run state + workspace + purge first, WITHOUT the service scope.
|
|
138
|
+
// We cannot stop our own service — systemd would SIGTERM this process
|
|
139
|
+
// before workspace/state removal runs.
|
|
145
140
|
try {
|
|
146
|
-
await uninstallCommand(defaultRuntime,
|
|
141
|
+
await uninstallCommand(defaultRuntime, {
|
|
142
|
+
service: false,
|
|
143
|
+
state: scopes.includes("state"),
|
|
144
|
+
workspace: scopes.includes("workspace"),
|
|
145
|
+
app: scopes.includes("app"),
|
|
146
|
+
purge,
|
|
147
|
+
yes: true,
|
|
148
|
+
nonInteractive: true,
|
|
149
|
+
});
|
|
147
150
|
}
|
|
148
151
|
catch (err) {
|
|
149
|
-
log.error(`system.uninstall failed: ${String(err)}`);
|
|
152
|
+
log.error(`system.uninstall (data removal) failed: ${String(err)}`);
|
|
153
|
+
}
|
|
154
|
+
// Now uninstall the service files (without stopping — we ARE the service).
|
|
155
|
+
// The process.exit below handles the actual stop.
|
|
156
|
+
if (scopes.includes("service")) {
|
|
157
|
+
try {
|
|
158
|
+
const service = resolveGatewayService();
|
|
159
|
+
await service.uninstall({ env: process.env, stdout: process.stdout });
|
|
160
|
+
log.info("Gateway service uninstalled");
|
|
161
|
+
}
|
|
162
|
+
catch (err) {
|
|
163
|
+
log.error(`Service uninstall failed: ${String(err)}`);
|
|
164
|
+
}
|
|
150
165
|
}
|
|
151
|
-
// Exit the gateway process — everything has been removed
|
|
152
166
|
log.info("system.uninstall complete, exiting gateway");
|
|
153
167
|
process.exit(0);
|
|
154
168
|
},
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rubytech/taskmaster",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.33",
|
|
4
4
|
"description": "AI-powered business assistant for small businesses",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -77,66 +77,12 @@
|
|
|
77
77
|
"dist/filler/**",
|
|
78
78
|
"dist/license/**"
|
|
79
79
|
],
|
|
80
|
-
"scripts": {
|
|
81
|
-
"dev": "node scripts/run-node.mjs",
|
|
82
|
-
"postinstall": "node scripts/postinstall.js",
|
|
83
|
-
"prepack": "pnpm build && pnpm ui:build",
|
|
84
|
-
"docs:list": "node scripts/docs-list.js",
|
|
85
|
-
"docs:bin": "node scripts/build-docs-list.mjs",
|
|
86
|
-
"docs:dev": "cd docs && mint dev",
|
|
87
|
-
"docs:build": "cd docs && pnpm dlx --reporter append-only mint broken-links",
|
|
88
|
-
"build": "tsc -p tsconfig.json && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts",
|
|
89
|
-
"plugins:sync": "node --import tsx scripts/sync-plugin-versions.ts",
|
|
90
|
-
"release:check": "node --import tsx scripts/release-check.ts",
|
|
91
|
-
"ui:install": "node scripts/ui.js install",
|
|
92
|
-
"ui:dev": "node scripts/ui.js dev",
|
|
93
|
-
"ui:build": "node scripts/ui.js build",
|
|
94
|
-
"start": "node scripts/run-node.mjs",
|
|
95
|
-
"taskmaster": "node scripts/run-node.mjs",
|
|
96
|
-
"gateway:watch": "node scripts/watch-node.mjs gateway --force",
|
|
97
|
-
"logs": "npx tsx scripts/session-viewer.ts",
|
|
98
|
-
"gateway:dev": "TASKMASTER_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway",
|
|
99
|
-
"gateway:dev:reset": "TASKMASTER_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset",
|
|
100
|
-
"tui": "node scripts/run-node.mjs tui",
|
|
101
|
-
"tui:dev": "TASKMASTER_PROFILE=dev node scripts/run-node.mjs tui",
|
|
102
|
-
"taskmaster:rpc": "node scripts/run-node.mjs agent --mode rpc --json",
|
|
103
|
-
"lint": "oxlint --type-aware src test",
|
|
104
|
-
"lint:fix": "pnpm format:fix && oxlint --type-aware --fix src test",
|
|
105
|
-
"format": "oxfmt --check src test",
|
|
106
|
-
"format:fix": "oxfmt --write src test",
|
|
107
|
-
"test": "node scripts/test-parallel.mjs",
|
|
108
|
-
"test:watch": "vitest",
|
|
109
|
-
"test:ui": "pnpm --dir ui test",
|
|
110
|
-
"test:force": "node --import tsx scripts/test-force.ts",
|
|
111
|
-
"test:coverage": "vitest run --coverage",
|
|
112
|
-
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
113
|
-
"test:live": "TASKMASTER_LIVE_TEST=1 vitest run --config vitest.live.config.ts",
|
|
114
|
-
"test:docker:onboard": "bash scripts/e2e/onboard-docker.sh",
|
|
115
|
-
"test:docker:gateway-network": "bash scripts/e2e/gateway-network-docker.sh",
|
|
116
|
-
"test:docker:live-models": "bash scripts/test-live-models-docker.sh",
|
|
117
|
-
"test:docker:live-gateway": "bash scripts/test-live-gateway-models-docker.sh",
|
|
118
|
-
"test:docker:qr": "bash scripts/e2e/qr-import-docker.sh",
|
|
119
|
-
"test:docker:doctor-switch": "bash scripts/e2e/doctor-install-switch-docker.sh",
|
|
120
|
-
"test:docker:plugins": "bash scripts/e2e/plugins-docker.sh",
|
|
121
|
-
"test:docker:cleanup": "bash scripts/test-cleanup-docker.sh",
|
|
122
|
-
"test:docker:all": "pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup",
|
|
123
|
-
"test:all": "pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all",
|
|
124
|
-
"test:install:e2e": "bash scripts/test-install-sh-e2e-docker.sh",
|
|
125
|
-
"test:install:smoke": "bash scripts/test-install-sh-docker.sh",
|
|
126
|
-
"test:install:e2e:openai": "TASKMASTER_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh",
|
|
127
|
-
"test:install:e2e:anthropic": "TASKMASTER_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh",
|
|
128
|
-
"protocol:gen": "node --import tsx scripts/protocol-gen.ts",
|
|
129
|
-
"protocol:check": "pnpm protocol:gen && git diff --exit-code -- dist/protocol.schema.json",
|
|
130
|
-
"canvas:a2ui:bundle": "bash scripts/bundle-a2ui.sh",
|
|
131
|
-
"check:loc": "node --import tsx scripts/check-ts-max-loc.ts --max 500"
|
|
132
|
-
},
|
|
133
80
|
"keywords": [],
|
|
134
81
|
"author": "",
|
|
135
82
|
"license": "MIT",
|
|
136
83
|
"engines": {
|
|
137
84
|
"node": ">=22.12.0"
|
|
138
85
|
},
|
|
139
|
-
"packageManager": "pnpm@10.23.0",
|
|
140
86
|
"dependencies": {
|
|
141
87
|
"@agentclientprotocol/sdk": "0.13.1",
|
|
142
88
|
"@aws-sdk/client-bedrock": "^3.975.0",
|
|
@@ -226,14 +172,6 @@
|
|
|
226
172
|
"vitest": "^4.0.18",
|
|
227
173
|
"wireit": "^0.14.12"
|
|
228
174
|
},
|
|
229
|
-
"pnpm": {
|
|
230
|
-
"minimumReleaseAge": 2880,
|
|
231
|
-
"overrides": {
|
|
232
|
-
"@sinclair/typebox": "0.34.47",
|
|
233
|
-
"hono": "4.11.4",
|
|
234
|
-
"tar": "7.5.4"
|
|
235
|
-
}
|
|
236
|
-
},
|
|
237
175
|
"vitest": {
|
|
238
176
|
"coverage": {
|
|
239
177
|
"provider": "v8",
|
|
@@ -262,5 +200,57 @@
|
|
|
262
200
|
"**/vendor/**",
|
|
263
201
|
"dist/Taskmaster.app/**"
|
|
264
202
|
]
|
|
203
|
+
},
|
|
204
|
+
"scripts": {
|
|
205
|
+
"dev": "node scripts/run-node.mjs",
|
|
206
|
+
"postinstall": "node scripts/postinstall.js",
|
|
207
|
+
"docs:list": "node scripts/docs-list.js",
|
|
208
|
+
"docs:bin": "node scripts/build-docs-list.mjs",
|
|
209
|
+
"docs:dev": "cd docs && mint dev",
|
|
210
|
+
"docs:build": "cd docs && pnpm dlx --reporter append-only mint broken-links",
|
|
211
|
+
"build": "tsc -p tsconfig.json && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts",
|
|
212
|
+
"plugins:sync": "node --import tsx scripts/sync-plugin-versions.ts",
|
|
213
|
+
"release:check": "node --import tsx scripts/release-check.ts",
|
|
214
|
+
"ui:install": "node scripts/ui.js install",
|
|
215
|
+
"ui:dev": "node scripts/ui.js dev",
|
|
216
|
+
"ui:build": "node scripts/ui.js build",
|
|
217
|
+
"start": "node scripts/run-node.mjs",
|
|
218
|
+
"taskmaster": "node scripts/run-node.mjs",
|
|
219
|
+
"gateway:watch": "node scripts/watch-node.mjs gateway --force",
|
|
220
|
+
"logs": "npx tsx scripts/session-viewer.ts",
|
|
221
|
+
"gateway:dev": "TASKMASTER_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway",
|
|
222
|
+
"gateway:dev:reset": "TASKMASTER_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset",
|
|
223
|
+
"tui": "node scripts/run-node.mjs tui",
|
|
224
|
+
"tui:dev": "TASKMASTER_PROFILE=dev node scripts/run-node.mjs tui",
|
|
225
|
+
"taskmaster:rpc": "node scripts/run-node.mjs agent --mode rpc --json",
|
|
226
|
+
"lint": "oxlint --type-aware src test",
|
|
227
|
+
"lint:fix": "pnpm format:fix && oxlint --type-aware --fix src test",
|
|
228
|
+
"format": "oxfmt --check src test",
|
|
229
|
+
"format:fix": "oxfmt --write src test",
|
|
230
|
+
"test": "node scripts/test-parallel.mjs",
|
|
231
|
+
"test:watch": "vitest",
|
|
232
|
+
"test:ui": "pnpm --dir ui test",
|
|
233
|
+
"test:force": "node --import tsx scripts/test-force.ts",
|
|
234
|
+
"test:coverage": "vitest run --coverage",
|
|
235
|
+
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
236
|
+
"test:live": "TASKMASTER_LIVE_TEST=1 vitest run --config vitest.live.config.ts",
|
|
237
|
+
"test:docker:onboard": "bash scripts/e2e/onboard-docker.sh",
|
|
238
|
+
"test:docker:gateway-network": "bash scripts/e2e/gateway-network-docker.sh",
|
|
239
|
+
"test:docker:live-models": "bash scripts/test-live-models-docker.sh",
|
|
240
|
+
"test:docker:live-gateway": "bash scripts/test-live-gateway-models-docker.sh",
|
|
241
|
+
"test:docker:qr": "bash scripts/e2e/qr-import-docker.sh",
|
|
242
|
+
"test:docker:doctor-switch": "bash scripts/e2e/doctor-install-switch-docker.sh",
|
|
243
|
+
"test:docker:plugins": "bash scripts/e2e/plugins-docker.sh",
|
|
244
|
+
"test:docker:cleanup": "bash scripts/test-cleanup-docker.sh",
|
|
245
|
+
"test:docker:all": "pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup",
|
|
246
|
+
"test:all": "pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all",
|
|
247
|
+
"test:install:e2e": "bash scripts/test-install-sh-e2e-docker.sh",
|
|
248
|
+
"test:install:smoke": "bash scripts/test-install-sh-docker.sh",
|
|
249
|
+
"test:install:e2e:openai": "TASKMASTER_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh",
|
|
250
|
+
"test:install:e2e:anthropic": "TASKMASTER_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh",
|
|
251
|
+
"protocol:gen": "node --import tsx scripts/protocol-gen.ts",
|
|
252
|
+
"protocol:check": "pnpm protocol:gen && git diff --exit-code -- dist/protocol.schema.json",
|
|
253
|
+
"canvas:a2ui:bundle": "bash scripts/bundle-a2ui.sh",
|
|
254
|
+
"check:loc": "node --import tsx scripts/check-ts-max-loc.ts --max 500"
|
|
265
255
|
}
|
|
266
|
-
}
|
|
256
|
+
}
|
package/scripts/install.sh
CHANGED
|
@@ -99,7 +99,11 @@ fi
|
|
|
99
99
|
|
|
100
100
|
echo ""
|
|
101
101
|
echo "Installing Taskmaster..."
|
|
102
|
-
|
|
102
|
+
if [ "$(id -u)" = "0" ]; then
|
|
103
|
+
npm install -g @rubytech/taskmaster
|
|
104
|
+
else
|
|
105
|
+
sudo npm install -g @rubytech/taskmaster
|
|
106
|
+
fi
|
|
103
107
|
|
|
104
108
|
# Verify
|
|
105
109
|
if ! command -v taskmaster >/dev/null 2>&1; then
|
|
@@ -45,7 +45,7 @@ curl -fsSL https://taskmaster.bot/install.sh | sudo bash
|
|
|
45
45
|
3. Wait for it to finish (a few minutes — it installs Node.js if needed)
|
|
46
46
|
4. Open a browser on any device on the same Wi-Fi network and go to: **http://taskmaster.local:18789/setup**
|
|
47
47
|
|
|
48
|
-
> After installation, Taskmaster runs in the background and starts automatically when the Pi restarts. You can disconnect the monitor and keyboard.
|
|
48
|
+
> After installation, Taskmaster runs in the background and starts automatically when the Pi restarts. It can take up to 2 minutes to come back online after a power cycle. You can disconnect the monitor and keyboard.
|
|
49
49
|
|
|
50
50
|
### Option C: Install on a Mac
|
|
51
51
|
|
|
@@ -79,7 +79,7 @@ taskmaster provision
|
|
|
79
79
|
|
|
80
80
|
4. Open your browser and go to: **http://taskmaster.local:18789/setup**
|
|
81
81
|
|
|
82
|
-
> Taskmaster runs in the background and starts automatically when your device restarts. You can close the terminal after installation.
|
|
82
|
+
> Taskmaster runs in the background and starts automatically when your device restarts. It can take up to 2 minutes to come back online after a power cycle. You can close the terminal after installation.
|
|
83
83
|
|
|
84
84
|
---
|
|
85
85
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -56,7 +56,7 @@ Tell them:
|
|
|
56
56
|
|
|
57
57
|
## Step 7: Delete This File
|
|
58
58
|
|
|
59
|
-
Once setup is complete, delete this file.
|
|
59
|
+
Once setup is complete, create a file called `.bootstrap-done` in this directory (empty content is fine), then delete this file. The `.bootstrap-done` marker prevents this onboarding from reappearing.
|
|
60
60
|
|
|
61
61
|
---
|
|
62
62
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.DS_Store
|
|
@@ -32,7 +32,7 @@ If yes, use the `authorize_admin` tool with the phone number (international form
|
|
|
32
32
|
|
|
33
33
|
## Step 5: Delete This File
|
|
34
34
|
|
|
35
|
-
Once setup is complete, delete this file.
|
|
35
|
+
Once setup is complete, create a file called `.bootstrap-done` in this directory (empty content is fine), then delete this file. The `.bootstrap-done` marker prevents this onboarding from reappearing.
|
|
36
36
|
|
|
37
37
|
---
|
|
38
38
|
|
|
@@ -57,7 +57,7 @@ Tell them:
|
|
|
57
57
|
|
|
58
58
|
## Step 7: Delete This File
|
|
59
59
|
|
|
60
|
-
Once setup is complete, delete this file.
|
|
60
|
+
Once setup is complete, create a file called `.bootstrap-done` in this directory (empty content is fine), then delete this file. The `.bootstrap-done` marker prevents this onboarding from reappearing.
|
|
61
61
|
|
|
62
62
|
---
|
|
63
63
|
|