@parall/daemon 1.58.0 → 1.58.1
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/bundle/manifest.json +11 -11
- package/bundle/parall-browser-pod.js +17 -4
- package/bundle/parall-claude-agent.js +53 -12
- package/bundle/parall-codex-agent.js +27 -9
- package/bundle/parall-daemon.js +23 -4
- package/package.json +6 -6
package/bundle/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.58.
|
|
3
|
-
"built_at": "2026-08-
|
|
2
|
+
"version": "1.58.1",
|
|
3
|
+
"built_at": "2026-08-31T06:18:26.328Z",
|
|
4
4
|
"min_node_version": "20.0.0",
|
|
5
5
|
"files": {
|
|
6
6
|
"bb-browser-daemon.js": {
|
|
@@ -16,29 +16,29 @@
|
|
|
16
16
|
"size": 18
|
|
17
17
|
},
|
|
18
18
|
"parall-browser-pod.js": {
|
|
19
|
-
"sha256": "
|
|
20
|
-
"size":
|
|
19
|
+
"sha256": "110e15542b7816fed7400a3cb1261d876a534fe756480e7a1a82f33d8bbd95dc",
|
|
20
|
+
"size": 2972173
|
|
21
21
|
},
|
|
22
22
|
"parall-channel-exec.js": {
|
|
23
23
|
"sha256": "7c2a6e12483a45e9eb4a42cd7d4cdd3c4fa21dd09ac1347d9a3e177b4ddee930",
|
|
24
24
|
"size": 7220
|
|
25
25
|
},
|
|
26
26
|
"parall-claude-agent.js": {
|
|
27
|
-
"sha256": "
|
|
28
|
-
"size":
|
|
27
|
+
"sha256": "0ed8b74b056eef72f4b3ff16d5a6278fc480fb80cfe8097ad47322cc04a68cc8",
|
|
28
|
+
"size": 2815581
|
|
29
29
|
},
|
|
30
30
|
"parall-codex-agent.js": {
|
|
31
|
-
"sha256": "
|
|
32
|
-
"size":
|
|
31
|
+
"sha256": "40da8f4df4790ff923aaf736aab173b1002585b4117e38bf2448e7bad6abec3c",
|
|
32
|
+
"size": 2844812
|
|
33
33
|
},
|
|
34
34
|
"parall-daemon.js": {
|
|
35
|
-
"sha256": "
|
|
36
|
-
"size":
|
|
35
|
+
"sha256": "8395ec40201b0dd60d798113947253c3ccf5d25f210470f6d024e8dbc7220e0c",
|
|
36
|
+
"size": 3041166
|
|
37
37
|
},
|
|
38
38
|
"parall-openclaw-agent.js": {
|
|
39
39
|
"sha256": "856a1c3a9ae0ffef8efe2481fa1171dbeb1d67cccb88616aa9bf16da96a69355",
|
|
40
40
|
"size": 9923
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
|
-
"signature": "
|
|
43
|
+
"signature": "M7Lk69BP79NRgmmdwtrMToFKNNCT6D44Oop6alLRJDXW6E66Cw0FCrmGo3fOFlLw7P055GiZ86ygM72OVh+xBw=="
|
|
44
44
|
}
|
|
@@ -63536,6 +63536,18 @@ function attachmentEndpoints(apiBase) {
|
|
|
63536
63536
|
};
|
|
63537
63537
|
}
|
|
63538
63538
|
|
|
63539
|
+
// ts/sdk/dist/wechat-endpoints.js
|
|
63540
|
+
function wechatEndpoints(apiBase) {
|
|
63541
|
+
const agentBase = (orgId) => `${apiBase}/orgs/${orgId}/agents/me/wechat`;
|
|
63542
|
+
return {
|
|
63543
|
+
WECHAT_CONTACTS: (orgId) => `${agentBase(orgId)}/contacts`,
|
|
63544
|
+
WECHAT_HISTORY: (orgId) => `${agentBase(orgId)}/history`,
|
|
63545
|
+
WECHAT_MEDIA: (orgId) => `${agentBase(orgId)}/media`,
|
|
63546
|
+
WECHAT_PROFILE: (orgId) => `${agentBase(orgId)}/profile`,
|
|
63547
|
+
WECHAT_STATUS: (orgId) => `${agentBase(orgId)}/status`
|
|
63548
|
+
};
|
|
63549
|
+
}
|
|
63550
|
+
|
|
63539
63551
|
// ts/sdk/dist/constants.js
|
|
63540
63552
|
var API_BASE = "/api/v1";
|
|
63541
63553
|
var WIKI_BASE = "/wiki/v1";
|
|
@@ -63789,10 +63801,7 @@ var ENDPOINTS = {
|
|
|
63789
63801
|
SLACK_MEMBERS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/members`,
|
|
63790
63802
|
SLACK_STATUS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/status`,
|
|
63791
63803
|
// WeChat tier-B read verbs (agent-only; internal research preview).
|
|
63792
|
-
|
|
63793
|
-
WECHAT_HISTORY: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/wechat/history`,
|
|
63794
|
-
WECHAT_PROFILE: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/wechat/profile`,
|
|
63795
|
-
WECHAT_STATUS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/wechat/status`,
|
|
63804
|
+
...wechatEndpoints(API_BASE),
|
|
63796
63805
|
// Invitations (org-scoped, admin)
|
|
63797
63806
|
ORG_INVITATIONS: (orgId) => `${API_BASE}/orgs/${orgId}/invitations`,
|
|
63798
63807
|
ORG_INVITATION: (orgId, invId) => `${API_BASE}/orgs/${orgId}/invitations/${invId}`,
|
|
@@ -64261,6 +64270,10 @@ var WechatClient = class extends TaskLabelClient {
|
|
|
64261
64270
|
params.set("limit", String(query.limit));
|
|
64262
64271
|
return this.request("GET", `${ENDPOINTS.WECHAT_HISTORY(orgId)}?${params.toString()}`);
|
|
64263
64272
|
}
|
|
64273
|
+
/** Fetch and cache one WeChat image or completed file on first explicit read. */
|
|
64274
|
+
async materializeWechatMedia(orgId, messageId) {
|
|
64275
|
+
return this.request("POST", ENDPOINTS.WECHAT_MEDIA(orgId), { message_id: messageId });
|
|
64276
|
+
}
|
|
64264
64277
|
/** Connected WeChat account identity. */
|
|
64265
64278
|
async wechatProfile(orgId) {
|
|
64266
64279
|
return this.request("GET", ENDPOINTS.WECHAT_PROFILE(orgId));
|
|
@@ -51544,6 +51544,18 @@ function attachmentEndpoints(apiBase) {
|
|
|
51544
51544
|
};
|
|
51545
51545
|
}
|
|
51546
51546
|
|
|
51547
|
+
// ts/sdk/dist/wechat-endpoints.js
|
|
51548
|
+
function wechatEndpoints(apiBase) {
|
|
51549
|
+
const agentBase = (orgId) => `${apiBase}/orgs/${orgId}/agents/me/wechat`;
|
|
51550
|
+
return {
|
|
51551
|
+
WECHAT_CONTACTS: (orgId) => `${agentBase(orgId)}/contacts`,
|
|
51552
|
+
WECHAT_HISTORY: (orgId) => `${agentBase(orgId)}/history`,
|
|
51553
|
+
WECHAT_MEDIA: (orgId) => `${agentBase(orgId)}/media`,
|
|
51554
|
+
WECHAT_PROFILE: (orgId) => `${agentBase(orgId)}/profile`,
|
|
51555
|
+
WECHAT_STATUS: (orgId) => `${agentBase(orgId)}/status`
|
|
51556
|
+
};
|
|
51557
|
+
}
|
|
51558
|
+
|
|
51547
51559
|
// ts/sdk/dist/constants.js
|
|
51548
51560
|
var API_BASE = "/api/v1";
|
|
51549
51561
|
var WIKI_BASE = "/wiki/v1";
|
|
@@ -51797,10 +51809,7 @@ var ENDPOINTS = {
|
|
|
51797
51809
|
SLACK_MEMBERS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/members`,
|
|
51798
51810
|
SLACK_STATUS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/status`,
|
|
51799
51811
|
// WeChat tier-B read verbs (agent-only; internal research preview).
|
|
51800
|
-
|
|
51801
|
-
WECHAT_HISTORY: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/wechat/history`,
|
|
51802
|
-
WECHAT_PROFILE: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/wechat/profile`,
|
|
51803
|
-
WECHAT_STATUS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/wechat/status`,
|
|
51812
|
+
...wechatEndpoints(API_BASE),
|
|
51804
51813
|
// Invitations (org-scoped, admin)
|
|
51805
51814
|
ORG_INVITATIONS: (orgId) => `${API_BASE}/orgs/${orgId}/invitations`,
|
|
51806
51815
|
ORG_INVITATION: (orgId, invId) => `${API_BASE}/orgs/${orgId}/invitations/${invId}`,
|
|
@@ -52360,6 +52369,10 @@ var WechatClient = class extends TaskLabelClient {
|
|
|
52360
52369
|
params.set("limit", String(query.limit));
|
|
52361
52370
|
return this.request("GET", `${ENDPOINTS.WECHAT_HISTORY(orgId)}?${params.toString()}`);
|
|
52362
52371
|
}
|
|
52372
|
+
/** Fetch and cache one WeChat image or completed file on first explicit read. */
|
|
52373
|
+
async materializeWechatMedia(orgId, messageId) {
|
|
52374
|
+
return this.request("POST", ENDPOINTS.WECHAT_MEDIA(orgId), { message_id: messageId });
|
|
52375
|
+
}
|
|
52363
52376
|
/** Connected WeChat account identity. */
|
|
52364
52377
|
async wechatProfile(orgId) {
|
|
52365
52378
|
return this.request("GET", ENDPOINTS.WECHAT_PROFILE(orgId));
|
|
@@ -59304,6 +59317,14 @@ function resolveRuntimeContextWindow(resolvedModel, defaults, llmSource2) {
|
|
|
59304
59317
|
const contextWindow = defaults.contextWindow;
|
|
59305
59318
|
return typeof contextWindow === "number" && Number.isSafeInteger(contextWindow) && contextWindow > 0 ? contextWindow : void 0;
|
|
59306
59319
|
}
|
|
59320
|
+
function resolveRuntimeMaxTokens(resolvedModel, defaults, llmSource2) {
|
|
59321
|
+
if (llmSource2 !== "parall")
|
|
59322
|
+
return void 0;
|
|
59323
|
+
if (!resolvedModel || resolvedModel !== defaults.model)
|
|
59324
|
+
return void 0;
|
|
59325
|
+
const maxTokens = defaults.maxTokens;
|
|
59326
|
+
return typeof maxTokens === "number" && Number.isSafeInteger(maxTokens) && maxTokens > 0 ? maxTokens : void 0;
|
|
59327
|
+
}
|
|
59307
59328
|
function deriveModelIsPin(defaults, profile) {
|
|
59308
59329
|
return defaults.modelIsPin !== void 0 ? defaults.modelIsPin : isPlatformModelOverride(profile);
|
|
59309
59330
|
}
|
|
@@ -59341,38 +59362,42 @@ function runtimeModelConfig(canonicalModel, runtimeType, config) {
|
|
|
59341
59362
|
const catalog = Array.isArray(parall.models) ? parall.models : [];
|
|
59342
59363
|
const match = catalog.find((model) => model.id === canonicalModel);
|
|
59343
59364
|
if (!match) {
|
|
59344
|
-
return !runtime || runtime === "openclaw" || runtime === "hermes" ? { model: canonicalModel, contextWindow: null } : null;
|
|
59365
|
+
return !runtime || runtime === "openclaw" || runtime === "hermes" ? { model: canonicalModel, contextWindow: null, maxTokens: null } : null;
|
|
59345
59366
|
}
|
|
59346
59367
|
const contextWindow = typeof match.contextWindow === "number" && Number.isSafeInteger(match.contextWindow) && match.contextWindow > 0 ? match.contextWindow : null;
|
|
59368
|
+
const maxTokens = typeof match.maxTokens === "number" && Number.isSafeInteger(match.maxTokens) && match.maxTokens > 0 ? match.maxTokens : null;
|
|
59347
59369
|
if (!runtime || runtime === "openclaw" || runtime === "hermes") {
|
|
59348
|
-
return { model: canonicalModel, contextWindow };
|
|
59370
|
+
return { model: canonicalModel, contextWindow, maxTokens };
|
|
59349
59371
|
}
|
|
59350
59372
|
const runtimeNames = match.runtime_names ?? {};
|
|
59351
59373
|
const runtimeName = runtimeNames[runtime];
|
|
59352
59374
|
if (typeof runtimeName === "string" && runtimeName) {
|
|
59353
59375
|
return {
|
|
59354
59376
|
model: runtimeName,
|
|
59355
|
-
contextWindow: runtimeName === canonicalModel ? contextWindow : null
|
|
59377
|
+
contextWindow: runtimeName === canonicalModel ? contextWindow : null,
|
|
59378
|
+
maxTokens: runtimeName === canonicalModel ? maxTokens : null
|
|
59356
59379
|
};
|
|
59357
59380
|
}
|
|
59358
|
-
return { model: canonicalModel, contextWindow };
|
|
59381
|
+
return { model: canonicalModel, contextWindow, maxTokens };
|
|
59359
59382
|
}
|
|
59360
59383
|
function extractDefaults(config, runtimeType) {
|
|
59361
59384
|
const agents = config.agents ?? {};
|
|
59362
59385
|
const defaults = agents.defaults ?? {};
|
|
59363
59386
|
let model = null;
|
|
59364
59387
|
let contextWindow = null;
|
|
59388
|
+
let maxTokens = null;
|
|
59365
59389
|
if (typeof defaults.model === "string" && defaults.model) {
|
|
59366
59390
|
const canonicalModel = defaults.model.replace(/^parall-anthropic\//, "").replace(/^parall\//, "");
|
|
59367
59391
|
const resolved = runtimeModelConfig(canonicalModel, runtimeType, config);
|
|
59368
59392
|
model = resolved?.model ?? null;
|
|
59369
59393
|
contextWindow = resolved?.contextWindow ?? null;
|
|
59394
|
+
maxTokens = resolved?.maxTokens ?? null;
|
|
59370
59395
|
}
|
|
59371
59396
|
let thinkingEffort = null;
|
|
59372
59397
|
if (typeof defaults.thinking_effort === "string" && defaults.thinking_effort) {
|
|
59373
59398
|
thinkingEffort = defaults.thinking_effort;
|
|
59374
59399
|
}
|
|
59375
|
-
return { model, thinkingEffort, contextWindow };
|
|
59400
|
+
return { model, thinkingEffort, contextWindow, maxTokens };
|
|
59376
59401
|
}
|
|
59377
59402
|
function createPlatformConfigManager(opts) {
|
|
59378
59403
|
const { client, stateDir, runtimeType, log: log2 } = opts;
|
|
@@ -59381,6 +59406,7 @@ function createPlatformConfigManager(opts) {
|
|
|
59381
59406
|
model: null,
|
|
59382
59407
|
thinkingEffort: null,
|
|
59383
59408
|
contextWindow: null,
|
|
59409
|
+
maxTokens: null,
|
|
59384
59410
|
modelIsPin: void 0
|
|
59385
59411
|
};
|
|
59386
59412
|
let currentRawConfig = null;
|
|
@@ -61938,7 +61964,11 @@ function buildSpawnEnv(parentEnv, claudeHome, context2, opts) {
|
|
|
61938
61964
|
result.CLAUDE_CODE_EFFORT_LEVEL = opts.effortLevel;
|
|
61939
61965
|
}
|
|
61940
61966
|
if (typeof opts.contextWindow === "number" && Number.isSafeInteger(opts.contextWindow) && opts.contextWindow > 0) {
|
|
61941
|
-
|
|
61967
|
+
let inputBudget = opts.contextWindow;
|
|
61968
|
+
if (typeof opts.maxTokens === "number" && Number.isSafeInteger(opts.maxTokens) && opts.maxTokens > 0 && opts.maxTokens < opts.contextWindow) {
|
|
61969
|
+
inputBudget = opts.contextWindow - opts.maxTokens;
|
|
61970
|
+
}
|
|
61971
|
+
result.CLAUDE_CODE_MAX_CONTEXT_TOKENS = String(inputBudget);
|
|
61942
61972
|
}
|
|
61943
61973
|
if (opts.capabilityBinDir) {
|
|
61944
61974
|
const pathKey = process.platform === "win32" ? Object.keys(result).find((k) => k.toUpperCase() === "PATH") ?? "PATH" : "PATH";
|
|
@@ -62101,10 +62131,12 @@ var ClaudeCodeAdapter = class {
|
|
|
62101
62131
|
_model;
|
|
62102
62132
|
_effortLevel;
|
|
62103
62133
|
_contextWindow;
|
|
62134
|
+
_maxTokens;
|
|
62104
62135
|
constructor(opts) {
|
|
62105
62136
|
this.opts = opts;
|
|
62106
62137
|
this._model = opts.model;
|
|
62107
62138
|
this._contextWindow = opts.contextWindow;
|
|
62139
|
+
this._maxTokens = opts.maxTokens;
|
|
62108
62140
|
}
|
|
62109
62141
|
get currentModel() {
|
|
62110
62142
|
return this._model;
|
|
@@ -62116,13 +62148,16 @@ var ClaudeCodeAdapter = class {
|
|
|
62116
62148
|
const modelChanged = config.model !== void 0 && config.model !== this._model;
|
|
62117
62149
|
const effortChanged = config.effort !== void 0 && config.effort !== this._effortLevel;
|
|
62118
62150
|
const contextWindowChanged = config.contextWindow !== void 0 && config.contextWindow !== this._contextWindow;
|
|
62151
|
+
const maxTokensChanged = config.maxTokens !== void 0 && config.maxTokens !== this._maxTokens;
|
|
62119
62152
|
if (modelChanged)
|
|
62120
62153
|
this._model = config.model ?? void 0;
|
|
62121
62154
|
if (effortChanged)
|
|
62122
62155
|
this._effortLevel = config.effort ?? void 0;
|
|
62123
62156
|
if (contextWindowChanged)
|
|
62124
62157
|
this._contextWindow = config.contextWindow ?? void 0;
|
|
62125
|
-
if (
|
|
62158
|
+
if (maxTokensChanged)
|
|
62159
|
+
this._maxTokens = config.maxTokens ?? void 0;
|
|
62160
|
+
if (modelChanged || effortChanged || contextWindowChanged || maxTokensChanged) {
|
|
62126
62161
|
this.requestProcessRestart();
|
|
62127
62162
|
}
|
|
62128
62163
|
}
|
|
@@ -62528,11 +62563,12 @@ var ClaudeCodeAdapter = class {
|
|
|
62528
62563
|
const env = buildSpawnEnv(process.env, this.opts.claudeHome, this.buildPlaceholderContext(sessionKey), {
|
|
62529
62564
|
allowApiKey: this.opts.allowApiKey,
|
|
62530
62565
|
contextWindow: this._contextWindow,
|
|
62566
|
+
maxTokens: this._maxTokens,
|
|
62531
62567
|
effortLevel: this._effortLevel,
|
|
62532
62568
|
wikiMountRoot: this.opts.workspaceDir,
|
|
62533
62569
|
capabilityBinDir: this.opts.capabilityBinDir
|
|
62534
62570
|
});
|
|
62535
|
-
log2?.info(`spawn long-lived ${this.opts.claudeBin} (session ${sessionKey}, model=${this._model || "default"}, context=${this._contextWindow || "cli-default"}, effort=${this._effortLevel || "default"}, mode=${this.opts.permissionMode})`);
|
|
62571
|
+
log2?.info(`spawn long-lived ${this.opts.claudeBin} (session ${sessionKey}, model=${this._model || "default"}, context=${this._contextWindow || "cli-default"}, maxOut=${this._maxTokens || "cli-default"}, effort=${this._effortLevel || "default"}, mode=${this.opts.permissionMode})`);
|
|
62536
62572
|
const proc = spawn(IS_WIN32 ? quoteWin32Arg(this.opts.claudeBin) : this.opts.claudeBin, IS_WIN32 ? args.map(quoteWin32Arg) : args, {
|
|
62537
62573
|
cwd: this.opts.workspaceDir,
|
|
62538
62574
|
env,
|
|
@@ -62939,6 +62975,7 @@ async function main() {
|
|
|
62939
62975
|
const platformModelOverride = deriveModelIsPin(platformDefaults, me.agent_profile);
|
|
62940
62976
|
const resolvedModel = resolveRuntimeModel(platformModelOverride, platformDefaults.model, config.model);
|
|
62941
62977
|
const resolvedContextWindow = resolveRuntimeContextWindow(resolvedModel, platformDefaults, activeLLMSource);
|
|
62978
|
+
const resolvedMaxTokens = resolveRuntimeMaxTokens(resolvedModel, platformDefaults, activeLLMSource);
|
|
62942
62979
|
const resolvedEffort = platformDefaults.thinkingEffort ?? (process.env.CLAUDE_CODE_EFFORT_LEVEL?.trim() || void 0);
|
|
62943
62980
|
if (platformDefaults.model)
|
|
62944
62981
|
agentLog.info(`platform config: model=${platformDefaults.model} \u2192 resolved=${resolvedModel ?? "cli-default"} (${platformModelOverride ? "pin/override" : "floor"})`);
|
|
@@ -62946,12 +62983,15 @@ async function main() {
|
|
|
62946
62983
|
agentLog.info(`platform config: thinking_effort=${platformDefaults.thinkingEffort}`);
|
|
62947
62984
|
if (resolvedContextWindow)
|
|
62948
62985
|
agentLog.info(`platform config: context_window=${resolvedContextWindow}`);
|
|
62986
|
+
if (resolvedMaxTokens)
|
|
62987
|
+
agentLog.info(`platform config: max_tokens=${resolvedMaxTokens}`);
|
|
62949
62988
|
const adapter = new ClaudeCodeAdapter({
|
|
62950
62989
|
claudeBin: config.claudeBin,
|
|
62951
62990
|
claudeHome: config.claudeHome,
|
|
62952
62991
|
workspaceDir: config.workspaceDir,
|
|
62953
62992
|
model: resolvedModel,
|
|
62954
62993
|
contextWindow: resolvedContextWindow,
|
|
62994
|
+
maxTokens: resolvedMaxTokens,
|
|
62955
62995
|
permissionMode: config.permissionMode,
|
|
62956
62996
|
allowedTools: config.allowedTools,
|
|
62957
62997
|
disallowedTools: config.disallowedTools,
|
|
@@ -62993,6 +63033,7 @@ async function main() {
|
|
|
62993
63033
|
adapter.updateConfig({
|
|
62994
63034
|
model,
|
|
62995
63035
|
contextWindow: resolveRuntimeContextWindow(model, updated, activeLLMSource) ?? null,
|
|
63036
|
+
maxTokens: resolveRuntimeMaxTokens(model, updated, activeLLMSource) ?? null,
|
|
62996
63037
|
effort: updated.thinkingEffort ?? localEffort
|
|
62997
63038
|
});
|
|
62998
63039
|
const fragments = applyChannelCapabilities();
|
|
@@ -51544,6 +51544,18 @@ function attachmentEndpoints(apiBase) {
|
|
|
51544
51544
|
};
|
|
51545
51545
|
}
|
|
51546
51546
|
|
|
51547
|
+
// ts/sdk/dist/wechat-endpoints.js
|
|
51548
|
+
function wechatEndpoints(apiBase) {
|
|
51549
|
+
const agentBase = (orgId) => `${apiBase}/orgs/${orgId}/agents/me/wechat`;
|
|
51550
|
+
return {
|
|
51551
|
+
WECHAT_CONTACTS: (orgId) => `${agentBase(orgId)}/contacts`,
|
|
51552
|
+
WECHAT_HISTORY: (orgId) => `${agentBase(orgId)}/history`,
|
|
51553
|
+
WECHAT_MEDIA: (orgId) => `${agentBase(orgId)}/media`,
|
|
51554
|
+
WECHAT_PROFILE: (orgId) => `${agentBase(orgId)}/profile`,
|
|
51555
|
+
WECHAT_STATUS: (orgId) => `${agentBase(orgId)}/status`
|
|
51556
|
+
};
|
|
51557
|
+
}
|
|
51558
|
+
|
|
51547
51559
|
// ts/sdk/dist/constants.js
|
|
51548
51560
|
var API_BASE = "/api/v1";
|
|
51549
51561
|
var WIKI_BASE = "/wiki/v1";
|
|
@@ -51797,10 +51809,7 @@ var ENDPOINTS = {
|
|
|
51797
51809
|
SLACK_MEMBERS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/members`,
|
|
51798
51810
|
SLACK_STATUS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/status`,
|
|
51799
51811
|
// WeChat tier-B read verbs (agent-only; internal research preview).
|
|
51800
|
-
|
|
51801
|
-
WECHAT_HISTORY: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/wechat/history`,
|
|
51802
|
-
WECHAT_PROFILE: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/wechat/profile`,
|
|
51803
|
-
WECHAT_STATUS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/wechat/status`,
|
|
51812
|
+
...wechatEndpoints(API_BASE),
|
|
51804
51813
|
// Invitations (org-scoped, admin)
|
|
51805
51814
|
ORG_INVITATIONS: (orgId) => `${API_BASE}/orgs/${orgId}/invitations`,
|
|
51806
51815
|
ORG_INVITATION: (orgId, invId) => `${API_BASE}/orgs/${orgId}/invitations/${invId}`,
|
|
@@ -52360,6 +52369,10 @@ var WechatClient = class extends TaskLabelClient {
|
|
|
52360
52369
|
params.set("limit", String(query.limit));
|
|
52361
52370
|
return this.request("GET", `${ENDPOINTS.WECHAT_HISTORY(orgId)}?${params.toString()}`);
|
|
52362
52371
|
}
|
|
52372
|
+
/** Fetch and cache one WeChat image or completed file on first explicit read. */
|
|
52373
|
+
async materializeWechatMedia(orgId, messageId) {
|
|
52374
|
+
return this.request("POST", ENDPOINTS.WECHAT_MEDIA(orgId), { message_id: messageId });
|
|
52375
|
+
}
|
|
52363
52376
|
/** Connected WeChat account identity. */
|
|
52364
52377
|
async wechatProfile(orgId) {
|
|
52365
52378
|
return this.request("GET", ENDPOINTS.WECHAT_PROFILE(orgId));
|
|
@@ -59333,38 +59346,42 @@ function runtimeModelConfig(canonicalModel, runtimeType, config) {
|
|
|
59333
59346
|
const catalog = Array.isArray(parall.models) ? parall.models : [];
|
|
59334
59347
|
const match = catalog.find((model) => model.id === canonicalModel);
|
|
59335
59348
|
if (!match) {
|
|
59336
|
-
return !runtime || runtime === "openclaw" || runtime === "hermes" ? { model: canonicalModel, contextWindow: null } : null;
|
|
59349
|
+
return !runtime || runtime === "openclaw" || runtime === "hermes" ? { model: canonicalModel, contextWindow: null, maxTokens: null } : null;
|
|
59337
59350
|
}
|
|
59338
59351
|
const contextWindow = typeof match.contextWindow === "number" && Number.isSafeInteger(match.contextWindow) && match.contextWindow > 0 ? match.contextWindow : null;
|
|
59352
|
+
const maxTokens = typeof match.maxTokens === "number" && Number.isSafeInteger(match.maxTokens) && match.maxTokens > 0 ? match.maxTokens : null;
|
|
59339
59353
|
if (!runtime || runtime === "openclaw" || runtime === "hermes") {
|
|
59340
|
-
return { model: canonicalModel, contextWindow };
|
|
59354
|
+
return { model: canonicalModel, contextWindow, maxTokens };
|
|
59341
59355
|
}
|
|
59342
59356
|
const runtimeNames = match.runtime_names ?? {};
|
|
59343
59357
|
const runtimeName = runtimeNames[runtime];
|
|
59344
59358
|
if (typeof runtimeName === "string" && runtimeName) {
|
|
59345
59359
|
return {
|
|
59346
59360
|
model: runtimeName,
|
|
59347
|
-
contextWindow: runtimeName === canonicalModel ? contextWindow : null
|
|
59361
|
+
contextWindow: runtimeName === canonicalModel ? contextWindow : null,
|
|
59362
|
+
maxTokens: runtimeName === canonicalModel ? maxTokens : null
|
|
59348
59363
|
};
|
|
59349
59364
|
}
|
|
59350
|
-
return { model: canonicalModel, contextWindow };
|
|
59365
|
+
return { model: canonicalModel, contextWindow, maxTokens };
|
|
59351
59366
|
}
|
|
59352
59367
|
function extractDefaults(config, runtimeType) {
|
|
59353
59368
|
const agents = config.agents ?? {};
|
|
59354
59369
|
const defaults = agents.defaults ?? {};
|
|
59355
59370
|
let model = null;
|
|
59356
59371
|
let contextWindow = null;
|
|
59372
|
+
let maxTokens = null;
|
|
59357
59373
|
if (typeof defaults.model === "string" && defaults.model) {
|
|
59358
59374
|
const canonicalModel = defaults.model.replace(/^parall-anthropic\//, "").replace(/^parall\//, "");
|
|
59359
59375
|
const resolved = runtimeModelConfig(canonicalModel, runtimeType, config);
|
|
59360
59376
|
model = resolved?.model ?? null;
|
|
59361
59377
|
contextWindow = resolved?.contextWindow ?? null;
|
|
59378
|
+
maxTokens = resolved?.maxTokens ?? null;
|
|
59362
59379
|
}
|
|
59363
59380
|
let thinkingEffort = null;
|
|
59364
59381
|
if (typeof defaults.thinking_effort === "string" && defaults.thinking_effort) {
|
|
59365
59382
|
thinkingEffort = defaults.thinking_effort;
|
|
59366
59383
|
}
|
|
59367
|
-
return { model, thinkingEffort, contextWindow };
|
|
59384
|
+
return { model, thinkingEffort, contextWindow, maxTokens };
|
|
59368
59385
|
}
|
|
59369
59386
|
function createPlatformConfigManager(opts) {
|
|
59370
59387
|
const { client, stateDir, runtimeType, log: log2 } = opts;
|
|
@@ -59373,6 +59390,7 @@ function createPlatformConfigManager(opts) {
|
|
|
59373
59390
|
model: null,
|
|
59374
59391
|
thinkingEffort: null,
|
|
59375
59392
|
contextWindow: null,
|
|
59393
|
+
maxTokens: null,
|
|
59376
59394
|
modelIsPin: void 0
|
|
59377
59395
|
};
|
|
59378
59396
|
let currentRawConfig = null;
|
package/bundle/parall-daemon.js
CHANGED
|
@@ -215,12 +215,30 @@ var init_attachment_endpoints = __esm({
|
|
|
215
215
|
}
|
|
216
216
|
});
|
|
217
217
|
|
|
218
|
+
// ts/sdk/dist/wechat-endpoints.js
|
|
219
|
+
function wechatEndpoints(apiBase) {
|
|
220
|
+
const agentBase = (orgId) => `${apiBase}/orgs/${orgId}/agents/me/wechat`;
|
|
221
|
+
return {
|
|
222
|
+
WECHAT_CONTACTS: (orgId) => `${agentBase(orgId)}/contacts`,
|
|
223
|
+
WECHAT_HISTORY: (orgId) => `${agentBase(orgId)}/history`,
|
|
224
|
+
WECHAT_MEDIA: (orgId) => `${agentBase(orgId)}/media`,
|
|
225
|
+
WECHAT_PROFILE: (orgId) => `${agentBase(orgId)}/profile`,
|
|
226
|
+
WECHAT_STATUS: (orgId) => `${agentBase(orgId)}/status`
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
var init_wechat_endpoints = __esm({
|
|
230
|
+
"ts/sdk/dist/wechat-endpoints.js"() {
|
|
231
|
+
"use strict";
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
|
|
218
235
|
// ts/sdk/dist/constants.js
|
|
219
236
|
var API_BASE, WIKI_BASE, CLIP_BASE, ENDPOINTS, WS_EVENTS;
|
|
220
237
|
var init_constants = __esm({
|
|
221
238
|
"ts/sdk/dist/constants.js"() {
|
|
222
239
|
"use strict";
|
|
223
240
|
init_attachment_endpoints();
|
|
241
|
+
init_wechat_endpoints();
|
|
224
242
|
API_BASE = "/api/v1";
|
|
225
243
|
WIKI_BASE = "/wiki/v1";
|
|
226
244
|
CLIP_BASE = "/clip/v1";
|
|
@@ -473,10 +491,7 @@ var init_constants = __esm({
|
|
|
473
491
|
SLACK_MEMBERS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/members`,
|
|
474
492
|
SLACK_STATUS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/status`,
|
|
475
493
|
// WeChat tier-B read verbs (agent-only; internal research preview).
|
|
476
|
-
|
|
477
|
-
WECHAT_HISTORY: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/wechat/history`,
|
|
478
|
-
WECHAT_PROFILE: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/wechat/profile`,
|
|
479
|
-
WECHAT_STATUS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/wechat/status`,
|
|
494
|
+
...wechatEndpoints(API_BASE),
|
|
480
495
|
// Invitations (org-scoped, admin)
|
|
481
496
|
ORG_INVITATIONS: (orgId) => `${API_BASE}/orgs/${orgId}/invitations`,
|
|
482
497
|
ORG_INVITATION: (orgId, invId) => `${API_BASE}/orgs/${orgId}/invitations/${invId}`,
|
|
@@ -1059,6 +1074,10 @@ var init_wechat_client = __esm({
|
|
|
1059
1074
|
params.set("limit", String(query.limit));
|
|
1060
1075
|
return this.request("GET", `${ENDPOINTS.WECHAT_HISTORY(orgId)}?${params.toString()}`);
|
|
1061
1076
|
}
|
|
1077
|
+
/** Fetch and cache one WeChat image or completed file on first explicit read. */
|
|
1078
|
+
async materializeWechatMedia(orgId, messageId) {
|
|
1079
|
+
return this.request("POST", ENDPOINTS.WECHAT_MEDIA(orgId), { message_id: messageId });
|
|
1080
|
+
}
|
|
1062
1081
|
/** Connected WeChat account identity. */
|
|
1063
1082
|
async wechatProfile(orgId) {
|
|
1064
1083
|
return this.request("GET", ENDPOINTS.WECHAT_PROFILE(orgId));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@parall/daemon",
|
|
3
|
-
"version": "1.58.
|
|
3
|
+
"version": "1.58.1",
|
|
4
4
|
"description": "Parall local agent runtime — daemon supervisor + bridge runtimes, bundled as standalone JS files",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -33,11 +33,11 @@
|
|
|
33
33
|
"@aws-sdk/client-s3": "3.984.0",
|
|
34
34
|
"@pinixai/bb-browser-pro": "0.15.0",
|
|
35
35
|
"ws": "^8.18.0",
|
|
36
|
-
"@parall/sdk": "1.58.
|
|
37
|
-
"@parall/
|
|
38
|
-
"@parall/
|
|
39
|
-
"@parall/
|
|
40
|
-
"@parall/agent
|
|
36
|
+
"@parall/sdk": "1.58.1",
|
|
37
|
+
"@parall/agent-core": "1.58.1",
|
|
38
|
+
"@parall/claude-agent": "1.58.1",
|
|
39
|
+
"@parall/codex-agent": "1.58.1",
|
|
40
|
+
"@parall/openclaw-agent": "1.58.1"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/node": "^22.0.0",
|