@rubytech/taskmaster 1.44.4 → 1.44.6
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/pi-embedded-subscribe.handlers.tools.js +4 -1
- package/dist/agents/pi-tools.js +44 -28
- package/dist/agents/system-prompt.js +1 -1
- package/dist/agents/tool-policy.js +2 -0
- package/dist/build-info.json +3 -3
- package/dist/gateway/server.impl.js +25 -2
- package/dist/license/revalidation.js +16 -0
- package/extensions/.npmignore +1 -0
- package/package.json +52 -62
- package/scripts/install.sh +0 -0
- package/templates/.DS_Store +0 -0
- package/templates/beacons/.DS_Store +0 -0
- package/templates/beacons/agents/.DS_Store +0 -0
- package/templates/beacons/memory/.DS_Store +0 -0
- package/templates/beacons/skills/.DS_Store +0 -0
- package/templates/beacons/skills/buyer-management/.DS_Store +0 -0
- package/templates/beagle-taxi/.DS_Store +0 -0
- package/templates/beagle-taxi/agents/.DS_Store +0 -0
- package/templates/beagle-taxi/memory/.DS_Store +0 -0
- package/templates/beagle-taxi/skills/.DS_Store +0 -0
- package/templates/beagle-zanzibar/.DS_Store +0 -0
- package/templates/beagle-zanzibar/agents/.DS_Store +0 -0
- package/templates/beagle-zanzibar/memory/.DS_Store +0 -0
- package/templates/beagle-zanzibar/skills/.DS_Store +0 -0
- package/templates/customer/.DS_Store +0 -0
- package/templates/customer/agents/.DS_Store +0 -0
- package/templates/education-hero/.DS_Store +0 -0
- package/templates/education-hero/agents/.DS_Store +0 -0
- package/templates/education-hero/agents/admin/.DS_Store +0 -0
- package/templates/education-hero/skills/.DS_Store +0 -0
- package/templates/education-hero/skills/education-hero/.DS_Store +0 -0
- package/templates/maxy/.DS_Store +0 -0
- package/templates/maxy/.gitignore +1 -0
- package/templates/maxy/agents/.DS_Store +0 -0
- package/templates/maxy/agents/admin/.DS_Store +0 -0
- package/templates/maxy/memory/.DS_Store +0 -0
- package/templates/maxy/skills/.DS_Store +0 -0
- package/templates/muvin/.DS_Store +0 -0
- package/templates/muvin/skills/.DS_Store +0 -0
- package/templates/muvin/skills/buyer-management/.DS_Store +0 -0
- package/templates/real-agent/.DS_Store +0 -0
- package/templates/real-agent/skills/.DS_Store +0 -0
- package/templates/real-agent/skills/buyer-management/.DS_Store +0 -0
- package/templates/taskmaster/.DS_Store +0 -0
- package/templates/taskmaster/.gitignore +1 -0
- package/templates/taskmaster/skills/.DS_Store +0 -0
|
@@ -166,7 +166,10 @@ export function handleToolExecutionEnd(ctx, evt) {
|
|
|
166
166
|
isError: isToolError,
|
|
167
167
|
},
|
|
168
168
|
});
|
|
169
|
-
|
|
169
|
+
const errorSuffix = isToolError
|
|
170
|
+
? ` error=${extractToolErrorMessage(sanitizedResult) ?? "unknown"}`
|
|
171
|
+
: "";
|
|
172
|
+
ctx.log.debug(`embedded run tool end: runId=${ctx.params.runId} tool=${toolName} toolCallId=${toolCallId} isError=${isToolError}${errorSuffix}`);
|
|
170
173
|
if (ctx.params.onToolResult && ctx.shouldEmitToolOutput()) {
|
|
171
174
|
const outputText = extractToolResultText(sanitizedResult);
|
|
172
175
|
if (outputText) {
|
package/dist/agents/pi-tools.js
CHANGED
|
@@ -11,7 +11,7 @@ import { assertRequiredParams, CLAUDE_PARAM_GROUPS, createTaskmasterReadTool, cr
|
|
|
11
11
|
import { cleanToolSchemaForGemini, normalizeToolParameters } from "./pi-tools.schema.js";
|
|
12
12
|
import { buildPluginToolGroups, collectExplicitAllowlist, expandPolicyWithPluginGroups, normalizeToolName, resolveToolProfilePolicy, stripPluginOnlyAllowlist, } from "./tool-policy.js";
|
|
13
13
|
import { getPluginToolMeta } from "../plugins/tools.js";
|
|
14
|
-
import { logWarn } from "../logger.js";
|
|
14
|
+
import { logInfo, logWarn } from "../logger.js";
|
|
15
15
|
function isOpenAIProvider(provider) {
|
|
16
16
|
const normalized = provider?.trim().toLowerCase();
|
|
17
17
|
return normalized === "openai" || normalized === "openai-codex";
|
|
@@ -254,33 +254,49 @@ export function createTaskmasterCodingTools(options) {
|
|
|
254
254
|
const groupPolicyExpanded = resolvePolicy(groupPolicy, "group tools.allow");
|
|
255
255
|
const sandboxPolicyExpanded = expandPolicyWithPluginGroups(sandbox?.tools, pluginGroups);
|
|
256
256
|
const subagentPolicyExpanded = expandPolicyWithPluginGroups(subagentPolicy, pluginGroups);
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
const
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
:
|
|
257
|
+
// ── Cascading tool filter with diagnostic logging ─────────────────────
|
|
258
|
+
const filterStage = (input, policy, label) => {
|
|
259
|
+
if (!policy)
|
|
260
|
+
return input;
|
|
261
|
+
const output = filterToolsByPolicy(input, policy);
|
|
262
|
+
const inputNames = new Set(input.map((t) => normalizeToolName(t.name)));
|
|
263
|
+
const outputNames = new Set(output.map((t) => normalizeToolName(t.name)));
|
|
264
|
+
const removed = [...inputNames].filter((n) => !outputNames.has(n));
|
|
265
|
+
if (removed.length > 0) {
|
|
266
|
+
const sessionLabel = options?.sessionKey ?? "unknown-session";
|
|
267
|
+
logInfo(`[tool-filter] ${sessionLabel} | ${label} removed ${removed.length} tools: ${removed.join(", ")}`);
|
|
268
|
+
}
|
|
269
|
+
return output;
|
|
270
|
+
};
|
|
271
|
+
// When the agent has an explicit allow list, merge it with the profile's
|
|
272
|
+
// allow list so the agent can grant tools beyond the profile baseline.
|
|
273
|
+
// The profile sets a default scope; the agent config can expand it.
|
|
274
|
+
// Deny lists and PROFILE_NEVER_GRANT still restrict regardless.
|
|
275
|
+
const effectiveProfilePolicy = (() => {
|
|
276
|
+
if (!profilePolicyExpanded || !agentPolicyExpanded?.allow?.length) {
|
|
277
|
+
return profilePolicyExpanded;
|
|
278
|
+
}
|
|
279
|
+
const mergedAllow = [
|
|
280
|
+
...(profilePolicyExpanded.allow ?? []),
|
|
281
|
+
...(agentPolicyExpanded.allow ?? []),
|
|
282
|
+
];
|
|
283
|
+
return { ...profilePolicyExpanded, allow: mergedAllow };
|
|
284
|
+
})();
|
|
285
|
+
const toolsFiltered = filterStage(tools, effectiveProfilePolicy, `profile(${effectiveProfile ?? "none"})+agent`);
|
|
286
|
+
const providerProfileFiltered = filterStage(toolsFiltered, providerProfileExpanded, "providerProfile");
|
|
287
|
+
const globalFiltered = filterStage(providerProfileFiltered, globalPolicyExpanded, "global");
|
|
288
|
+
const globalProviderFiltered = filterStage(globalFiltered, globalProviderExpanded, "globalProvider");
|
|
289
|
+
const agentFiltered = filterStage(globalProviderFiltered, agentPolicyExpanded, `agent(${agentId ?? "?"})`);
|
|
290
|
+
const agentProviderFiltered = filterStage(agentFiltered, agentProviderExpanded, "agentProvider");
|
|
291
|
+
const groupFiltered = filterStage(agentProviderFiltered, groupPolicyExpanded, "group");
|
|
292
|
+
const sandboxed = filterStage(groupFiltered, sandboxPolicyExpanded, "sandbox");
|
|
293
|
+
const subagentFiltered = filterStage(sandboxed, subagentPolicyExpanded, "subagent");
|
|
294
|
+
// Log final tool set for observability.
|
|
295
|
+
{
|
|
296
|
+
const sessionLabel = options?.sessionKey ?? "unknown-session";
|
|
297
|
+
const finalNames = subagentFiltered.map((t) => normalizeToolName(t.name)).sort();
|
|
298
|
+
logInfo(`[tool-filter] ${sessionLabel} | profile=${effectiveProfile ?? "none"} | final tools (${finalNames.length}): ${finalNames.join(", ")}`);
|
|
299
|
+
}
|
|
284
300
|
// Always normalize tool JSON Schemas before handing them to pi-agent/pi-ai.
|
|
285
301
|
// Without this, some providers (notably OpenAI) will reject root-level union schemas.
|
|
286
302
|
const normalized = subagentFiltered.map(normalizeToolParameters);
|
|
@@ -343,7 +343,7 @@ export function buildAgentSystemPrompt(params) {
|
|
|
343
343
|
"- `spawn:documents` — read and produce documents: PDFs, spreadsheets, QR codes",
|
|
344
344
|
"- `spawn:contacts` — manage contacts: lookup, create, update, verify",
|
|
345
345
|
"- `spawn:web` — research online: web search, URL fetch, file access",
|
|
346
|
-
"- `spawn:admin` — system administration and diagnostics: manage admins, status checks, settings, log review, error triage, performance analysis, automation",
|
|
346
|
+
"- `spawn:admin` — system administration, licensing, and diagnostics: manage admins, generate licenses, status checks, settings, log review, error triage, performance analysis, automation",
|
|
347
347
|
"- `spawn:automation` — scheduled tasks: cron jobs, gateway management, updates, tunnel",
|
|
348
348
|
"- `spawn:ui` — visual work: browser control, canvas",
|
|
349
349
|
"- `spawn:worker` — general-purpose (files, memory, web, docs, images, skills)",
|
|
@@ -68,6 +68,7 @@ export const TOOL_GROUPS = {
|
|
|
68
68
|
"account_manage",
|
|
69
69
|
"access_manage",
|
|
70
70
|
"license_manage",
|
|
71
|
+
"license_generate",
|
|
71
72
|
],
|
|
72
73
|
// All Taskmaster native tools (excludes provider plugins).
|
|
73
74
|
"group:taskmaster": [
|
|
@@ -123,6 +124,7 @@ export const TOOL_GROUPS = {
|
|
|
123
124
|
"account_manage",
|
|
124
125
|
"access_manage",
|
|
125
126
|
"license_manage",
|
|
127
|
+
"license_generate",
|
|
126
128
|
"tunnel_status",
|
|
127
129
|
"tunnel_enable",
|
|
128
130
|
"tunnel_disable",
|
package/dist/build-info.json
CHANGED
|
@@ -68,9 +68,10 @@ import { loadGatewayTlsRuntime } from "./server/tls.js";
|
|
|
68
68
|
import { isLoopbackHost } from "./net.js";
|
|
69
69
|
import { createWizardSessionTracker } from "./server-wizard-sessions.js";
|
|
70
70
|
import { attachGatewayWsHandlers } from "./server-ws-runtime.js";
|
|
71
|
-
import { isLicenseValid } from "../license/validate.js";
|
|
71
|
+
import { isLicenseValid, validateLicenseKey } from "../license/validate.js";
|
|
72
72
|
import { setLicensed } from "../license/state.js";
|
|
73
73
|
import { startLicenseRevalidation, stopLicenseRevalidation } from "../license/revalidation.js";
|
|
74
|
+
import { getDeviceId } from "../license/device-id.js";
|
|
74
75
|
export { __resetModelCatalogCacheForTest } from "./server-model-catalog.js";
|
|
75
76
|
ensureTaskmasterCliOnPath();
|
|
76
77
|
const log = createSubsystemLogger("gateway");
|
|
@@ -331,7 +332,29 @@ export async function startGatewayServer(port = 18789, opts = {}) {
|
|
|
331
332
|
// License check — gateway always starts (so setup UI is reachable),
|
|
332
333
|
// but pages other than /setup will redirect until a license is activated.
|
|
333
334
|
const logLicense = log.child("license");
|
|
334
|
-
|
|
335
|
+
let licenseOk = isLicenseValid(cfgAtStart);
|
|
336
|
+
// If stored state is stale but the token is cryptographically valid,
|
|
337
|
+
// refresh validatedAt so the license doesn't appear expired on restart.
|
|
338
|
+
if (!licenseOk && cfgAtStart.license?.key) {
|
|
339
|
+
const deviceId = getDeviceId();
|
|
340
|
+
const freshCheck = validateLicenseKey(cfgAtStart.license.key, deviceId);
|
|
341
|
+
if (freshCheck.valid) {
|
|
342
|
+
logLicense.info("refreshing stale validatedAt — token is still valid");
|
|
343
|
+
try {
|
|
344
|
+
const freshCfg = loadConfig();
|
|
345
|
+
if (freshCfg.license) {
|
|
346
|
+
void writeConfigFile({
|
|
347
|
+
...freshCfg,
|
|
348
|
+
license: { ...freshCfg.license, validatedAt: new Date().toISOString() },
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
catch (err) {
|
|
353
|
+
logLicense.warn(`failed to refresh validatedAt: ${String(err)}`);
|
|
354
|
+
}
|
|
355
|
+
licenseOk = true;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
335
358
|
setLicensed(licenseOk);
|
|
336
359
|
if (!licenseOk) {
|
|
337
360
|
logLicense.warn("no valid license — setup wizard will require activation");
|
|
@@ -15,6 +15,22 @@ function revalidate(log, onChange) {
|
|
|
15
15
|
const result = validateLicenseKey(lic.key, deviceId);
|
|
16
16
|
if (result.valid) {
|
|
17
17
|
log.info("license still valid");
|
|
18
|
+
// Refresh validatedAt so the 30-day staleness window doesn't expire
|
|
19
|
+
try {
|
|
20
|
+
const freshConfig = loadConfig();
|
|
21
|
+
if (freshConfig.license) {
|
|
22
|
+
void writeConfigFile({
|
|
23
|
+
...freshConfig,
|
|
24
|
+
license: {
|
|
25
|
+
...freshConfig.license,
|
|
26
|
+
validatedAt: new Date().toISOString(),
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
log.warn(`failed to refresh validatedAt: ${String(err)}`);
|
|
33
|
+
}
|
|
18
34
|
return;
|
|
19
35
|
}
|
|
20
36
|
// Token is no longer valid (expired, wrong device, bad signature)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
node_modules/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rubytech/taskmaster",
|
|
3
|
-
"version": "1.44.
|
|
3
|
+
"version": "1.44.6",
|
|
4
4
|
"description": "AI-powered business assistant for small businesses",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -79,64 +79,12 @@
|
|
|
79
79
|
"dist/license/**",
|
|
80
80
|
"dist/suggestions/**"
|
|
81
81
|
],
|
|
82
|
-
"scripts": {
|
|
83
|
-
"dev": "node scripts/run-node.mjs",
|
|
84
|
-
"postinstall": "node scripts/postinstall.js",
|
|
85
|
-
"prepack": "pnpm build && pnpm ui:build",
|
|
86
|
-
"docs:list": "node scripts/docs-list.js",
|
|
87
|
-
"docs:bin": "node scripts/build-docs-list.mjs",
|
|
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
82
|
"keywords": [],
|
|
134
83
|
"author": "",
|
|
135
84
|
"license": "MIT",
|
|
136
85
|
"engines": {
|
|
137
86
|
"node": ">=22.12.0"
|
|
138
87
|
},
|
|
139
|
-
"packageManager": "pnpm@10.23.0",
|
|
140
88
|
"dependencies": {
|
|
141
89
|
"@agentclientprotocol/sdk": "0.13.1",
|
|
142
90
|
"@aws-sdk/client-bedrock": "^3.975.0",
|
|
@@ -231,14 +179,6 @@
|
|
|
231
179
|
"vitest": "^4.0.18",
|
|
232
180
|
"wireit": "^0.14.12"
|
|
233
181
|
},
|
|
234
|
-
"pnpm": {
|
|
235
|
-
"minimumReleaseAge": 2880,
|
|
236
|
-
"overrides": {
|
|
237
|
-
"@sinclair/typebox": "0.34.47",
|
|
238
|
-
"hono": "4.11.4",
|
|
239
|
-
"tar": "7.5.4"
|
|
240
|
-
}
|
|
241
|
-
},
|
|
242
182
|
"vitest": {
|
|
243
183
|
"coverage": {
|
|
244
184
|
"provider": "v8",
|
|
@@ -267,5 +207,55 @@
|
|
|
267
207
|
"**/vendor/**",
|
|
268
208
|
"dist/Taskmaster.app/**"
|
|
269
209
|
]
|
|
210
|
+
},
|
|
211
|
+
"scripts": {
|
|
212
|
+
"dev": "node scripts/run-node.mjs",
|
|
213
|
+
"postinstall": "node scripts/postinstall.js",
|
|
214
|
+
"docs:list": "node scripts/docs-list.js",
|
|
215
|
+
"docs:bin": "node scripts/build-docs-list.mjs",
|
|
216
|
+
"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",
|
|
217
|
+
"plugins:sync": "node --import tsx scripts/sync-plugin-versions.ts",
|
|
218
|
+
"release:check": "node --import tsx scripts/release-check.ts",
|
|
219
|
+
"ui:install": "node scripts/ui.js install",
|
|
220
|
+
"ui:dev": "node scripts/ui.js dev",
|
|
221
|
+
"ui:build": "node scripts/ui.js build",
|
|
222
|
+
"start": "node scripts/run-node.mjs",
|
|
223
|
+
"taskmaster": "node scripts/run-node.mjs",
|
|
224
|
+
"gateway:watch": "node scripts/watch-node.mjs gateway --force",
|
|
225
|
+
"logs": "npx tsx scripts/session-viewer.ts",
|
|
226
|
+
"gateway:dev": "TASKMASTER_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway",
|
|
227
|
+
"gateway:dev:reset": "TASKMASTER_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset",
|
|
228
|
+
"tui": "node scripts/run-node.mjs tui",
|
|
229
|
+
"tui:dev": "TASKMASTER_PROFILE=dev node scripts/run-node.mjs tui",
|
|
230
|
+
"taskmaster:rpc": "node scripts/run-node.mjs agent --mode rpc --json",
|
|
231
|
+
"lint": "oxlint --type-aware src test",
|
|
232
|
+
"lint:fix": "pnpm format:fix && oxlint --type-aware --fix src test",
|
|
233
|
+
"format": "oxfmt --check src test",
|
|
234
|
+
"format:fix": "oxfmt --write src test",
|
|
235
|
+
"test": "node scripts/test-parallel.mjs",
|
|
236
|
+
"test:watch": "vitest",
|
|
237
|
+
"test:ui": "pnpm --dir ui test",
|
|
238
|
+
"test:force": "node --import tsx scripts/test-force.ts",
|
|
239
|
+
"test:coverage": "vitest run --coverage",
|
|
240
|
+
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
241
|
+
"test:live": "TASKMASTER_LIVE_TEST=1 vitest run --config vitest.live.config.ts",
|
|
242
|
+
"test:docker:onboard": "bash scripts/e2e/onboard-docker.sh",
|
|
243
|
+
"test:docker:gateway-network": "bash scripts/e2e/gateway-network-docker.sh",
|
|
244
|
+
"test:docker:live-models": "bash scripts/test-live-models-docker.sh",
|
|
245
|
+
"test:docker:live-gateway": "bash scripts/test-live-gateway-models-docker.sh",
|
|
246
|
+
"test:docker:qr": "bash scripts/e2e/qr-import-docker.sh",
|
|
247
|
+
"test:docker:doctor-switch": "bash scripts/e2e/doctor-install-switch-docker.sh",
|
|
248
|
+
"test:docker:plugins": "bash scripts/e2e/plugins-docker.sh",
|
|
249
|
+
"test:docker:cleanup": "bash scripts/test-cleanup-docker.sh",
|
|
250
|
+
"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",
|
|
251
|
+
"test:all": "pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all",
|
|
252
|
+
"test:install:e2e": "bash scripts/test-install-sh-e2e-docker.sh",
|
|
253
|
+
"test:install:smoke": "bash scripts/test-install-sh-docker.sh",
|
|
254
|
+
"test:install:e2e:openai": "TASKMASTER_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh",
|
|
255
|
+
"test:install:e2e:anthropic": "TASKMASTER_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh",
|
|
256
|
+
"protocol:gen": "node --import tsx scripts/protocol-gen.ts",
|
|
257
|
+
"protocol:check": "pnpm protocol:gen && git diff --exit-code -- dist/protocol.schema.json",
|
|
258
|
+
"canvas:a2ui:bundle": "bash scripts/bundle-a2ui.sh",
|
|
259
|
+
"check:loc": "node --import tsx scripts/check-ts-max-loc.ts --max 500"
|
|
270
260
|
}
|
|
271
|
-
}
|
|
261
|
+
}
|
package/scripts/install.sh
CHANGED
|
File without changes
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.DS_Store
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.DS_Store
|
|
Binary file
|