praxis-agent 0.45.2 → 0.45.3
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.
|
@@ -2990,11 +2990,13 @@ export class ClaudeSessionService {
|
|
|
2990
2990
|
let projectMemoryRecallMessages = [];
|
|
2991
2991
|
let observeModelRequestUsage = () => undefined;
|
|
2992
2992
|
const durableFollowUps = new DurableFollowUpTracker();
|
|
2993
|
+
const claimedToolCallIds = new Set();
|
|
2993
2994
|
const observer = {
|
|
2994
2995
|
...(nativeLease
|
|
2995
2996
|
? {
|
|
2996
2997
|
toolExecutionStarted: async (call) => {
|
|
2997
2998
|
await nativeLease.beginToolExecution(call.id);
|
|
2999
|
+
claimedToolCallIds.add(call.id);
|
|
2998
3000
|
},
|
|
2999
3001
|
}
|
|
3000
3002
|
: {}),
|
|
@@ -3087,6 +3089,10 @@ export class ClaudeSessionService {
|
|
|
3087
3089
|
await refreshRuntimeContext();
|
|
3088
3090
|
}
|
|
3089
3091
|
if (nativeLease) {
|
|
3092
|
+
if (!claimedToolCallIds.has(call.id) && !signal?.aborted) {
|
|
3093
|
+
await nativeLease.beginToolExecution(call.id);
|
|
3094
|
+
claimedToolCallIds.add(call.id);
|
|
3095
|
+
}
|
|
3090
3096
|
await nativeLease.appendToolCompletion({
|
|
3091
3097
|
callId: call.id,
|
|
3092
3098
|
result: toolResult,
|
|
@@ -9,7 +9,7 @@ function workflowDefinition() {
|
|
|
9
9
|
name: 'Workflow',
|
|
10
10
|
description: `Run an explicitly requested, sandboxed JavaScript workflow in the background. Use only when the user asks for a workflow or named saved workflow; for ordinary delegation use Agent.
|
|
11
11
|
|
|
12
|
-
Every script starts with a pure-literal \`export const meta = { name, description, phases? }\`. Its async body may use \`args\`, \`agent(prompt, options?)\`, \`parallel(thunks)\`, \`pipeline(items, ...stages)\`, \`workflow(nameOrScriptPath, args)\`, \`phase(title)\`, \`log(message)\`, and \`budget.{total,spent(),remaining()}\`. Agent options are \`label\`, \`phase\`, \`model\`, \`effort\`, \`agentType\`, \`schema\`, and \`isolation: 'worktree'\`. Pipeline stages receive \`(previousResult, originalItem, index)\`; failed parallel or pipeline items become null. Nested workflows are limited to one level.
|
|
12
|
+
Every script starts with a pure-literal \`export const meta = { name, description, phases? }\`. \`phases\` is optional and must be an array of objects shaped \`{ title: string, detail?: string, model?: string }\`, never an array of strings. Its async body may use \`args\`, \`agent(prompt, options?)\`, \`parallel(thunks)\`, \`pipeline(items, ...stages)\`, \`workflow(nameOrScriptPath, args)\`, \`phase(title)\`, \`log(message)\`, and \`budget.{total,spent(),remaining()}\`. Agent options are \`label\`, \`phase\`, \`model\`, \`effort\`, \`agentType\`, \`schema\`, and \`isolation: 'worktree'\`. Pipeline stages receive \`(previousResult, originalItem, index)\`; failed parallel or pipeline items become null. Nested workflows are limited to one level.
|
|
13
13
|
|
|
14
14
|
Provide one source: \`scriptPath\` takes precedence over \`script\`, which takes precedence over \`name\`. Saved names resolve from project \`${projectDirectory}/workflows\`, then user workflows, followed by built-ins. The call returns a task ID immediately; use TaskOutput/TaskStop for lifecycle. Resume a terminal or interrupted run with its script path and \`resumeFromRunId\`; completed matching agents replay from journal. Workflows allow at most 1000 agents, 4096 collection items, and bounded concurrency. Scripts have no Node.js, filesystem, network, ambient time, or randomness.`,
|
|
15
15
|
inputSchema: {
|