@wrongstack/core 0.73.1 → 0.77.0

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.
Files changed (41) hide show
  1. package/dist/{agent-bridge-C0Ze7Ldm.d.ts → agent-bridge-EWdqs8v6.d.ts} +1 -1
  2. package/dist/{agent-subagent-runner-BmITbs1Q.d.ts → agent-subagent-runner-D8qW8OSC.d.ts} +2 -2
  3. package/dist/coordination/index.d.ts +7 -7
  4. package/dist/coordination/index.js +64 -6
  5. package/dist/coordination/index.js.map +1 -1
  6. package/dist/defaults/index.d.ts +11 -11
  7. package/dist/defaults/index.js +107 -45
  8. package/dist/defaults/index.js.map +1 -1
  9. package/dist/{events-BBAlxBuw.d.ts → events-CYaoLN5_.d.ts} +37 -0
  10. package/dist/execution/index.d.ts +6 -6
  11. package/dist/extension/index.d.ts +2 -2
  12. package/dist/{index-yQbZ2NQx.d.ts → index-DIxjTOga.d.ts} +2 -2
  13. package/dist/{index-BN6i2Nfg.d.ts → index-Dsda0uCn.d.ts} +1 -1
  14. package/dist/index.d.ts +96 -23
  15. package/dist/index.js +234 -25
  16. package/dist/index.js.map +1 -1
  17. package/dist/infrastructure/index.d.ts +3 -3
  18. package/dist/infrastructure/index.js +16 -2
  19. package/dist/infrastructure/index.js.map +1 -1
  20. package/dist/kernel/index.d.ts +3 -3
  21. package/dist/kernel/index.js.map +1 -1
  22. package/dist/{logger-bOzkF5LL.d.ts → logger-BppKxDqZ.d.ts} +9 -0
  23. package/dist/{multi-agent-coordinator-BSBbZt0e.d.ts → multi-agent-coordinator-DpbG3wiy.d.ts} +1 -1
  24. package/dist/{null-fleet-bus-BCIRT_nV.d.ts → null-fleet-bus-u5ys3lW_.d.ts} +13 -4
  25. package/dist/observability/index.d.ts +1 -1
  26. package/dist/{parallel-eternal-engine-CjAYGaCw.d.ts → parallel-eternal-engine-Dn0P8Pbj.d.ts} +3 -3
  27. package/dist/{path-resolver-BnqXa9Ze.d.ts → path-resolver-B32v2JIq.d.ts} +1 -1
  28. package/dist/{plan-templates-DBgrTGPu.d.ts → plan-templates-BcUwLlMQ.d.ts} +7 -2
  29. package/dist/{provider-runner-n3KkHT_w.d.ts → provider-runner-CSi_7l0h.d.ts} +1 -1
  30. package/dist/sdd/index.d.ts +3 -3
  31. package/dist/storage/index.d.ts +3 -3
  32. package/dist/storage/index.js +22 -6
  33. package/dist/storage/index.js.map +1 -1
  34. package/dist/types/index.d.ts +10 -10
  35. package/dist/types/index.js +16 -2
  36. package/dist/types/index.js.map +1 -1
  37. package/dist/utils/index.d.ts +1 -1
  38. package/dist/utils/index.js +12 -2
  39. package/dist/utils/index.js.map +1 -1
  40. package/dist/{wstack-paths-eMXnY1_X.d.ts → wstack-paths-D7evAFWM.d.ts} +8 -1
  41. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { f as BridgeTransport, B as BridgeMessage, a as AgentBridge, b as AgentBridgeConfig } from './agent-subagent-runner-BmITbs1Q.js';
1
+ import { f as BridgeTransport, B as BridgeMessage, a as AgentBridge, b as AgentBridgeConfig } from './agent-subagent-runner-D8qW8OSC.js';
2
2
 
3
3
  /**
4
4
  * In-memory pub/sub transport for agent-to-agent messaging.
@@ -1,6 +1,6 @@
1
- import { t as ToolRegistry, m as ProviderRegistry, f as AgentPipelines, q as ToolExecutorLike, E as ExtensionRegistry, d as AgentInit, e as AgentInput, R as RunResult, p as ToolCallPipelinePayload, u as ToolWrapper, S as SystemPromptContributor } from './index-BN6i2Nfg.js';
1
+ import { t as ToolRegistry, m as ProviderRegistry, f as AgentPipelines, q as ToolExecutorLike, E as ExtensionRegistry, d as AgentInit, e as AgentInput, R as RunResult, p as ToolCallPipelinePayload, u as ToolWrapper, S as SystemPromptContributor } from './index-Dsda0uCn.js';
2
2
  import { C as Container, e as Renderer, R as ReadonlyPipeline } from './system-prompt-CA11g6Jo.js';
3
- import { E as EventBus, k as EventName, L as Listener } from './events-BBAlxBuw.js';
3
+ import { E as EventBus, k as EventName, L as Listener } from './events-CYaoLN5_.js';
4
4
  import { a as RetryPolicy, E as ErrorHandler } from './retry-policy-CG3qvH_e.js';
5
5
  import { a as Logger } from './logger-DDd5C--Z.js';
6
6
  import { T as Tracer } from './observability-BhnVLBLS.js';
@@ -1,15 +1,15 @@
1
- export { B as BrainArbiter, a as BrainDecision, b as BrainDecisionOption, c as BrainDecisionQueue, d as BrainDecisionRequest, e as BrainDecisionSource, f as BrainFallback, g as BrainRisk, D as DefaultBrainArbiter, h as DefaultBrainArbiterOptions, H as HumanEscalatingBrainArbiter, O as ObservableBrainArbiter, l as formatHumanPrompt } from '../events-BBAlxBuw.js';
2
- export { A as ACP_AGENTS, a as AGENTS_BY_PHASE, b as AGENT_CATALOG, c as ALL_AGENT_DEFINITIONS, d as ALL_FLEET_AGENTS, e as AUDIT_LOG_AGENT, f as AutoExtendCeiling, g as AutoExtendPolicy, B as BUG_HUNTER_AGENT, h as BugFinding, C as CollabBudgetConfig, i as CollabBudgetOverrides, j as CollabBudgetWarningPayload, k as CollabDebugReport, l as CollabSession, m as CollabSessionOptions, n as CreateDelegateToolOptions, o as CriticConcern, p as CriticEvaluation, D as DEFAULT_DIRECTOR_PREAMBLE, q as DEFAULT_SUBAGENT_BASELINE, r as DelegateHost, s as Director, t as DirectorAlert, u as DirectorAlertLevel, v as DirectorCancelCollabPayload, w as DirectorPromptParts, x as DirectorSessionFactory, y as DirectorSessionFactoryOptions, F as FLEET_ROSTER, z as FLEET_ROSTER_BUDGETS, E as FLEET_ROSTER_WITHACP, G as FleetCostCapError, H as FleetManager, I as FleetManagerOptions, J as FleetRosterBudget, K as FleetSpawnBudgetError, L as ICoordinator, M as IFleetManager, N as LargeAnswerStore, O as NULL_FLEET_BUS, R as REFACTOR_PLANNER_AGENT, P as RefactorPhase, Q as RefactorPlan, S as SECURITY_SCANNER_AGENT, T as SharedFileEntry, U as SharedFileSnapshot, V as SubagentPromptParts, W as applyRosterBudget, X as attachAutoExtend, Y as composeDirectorPrompt, Z as composeSubagentPrompt, _ as createDelegateTool, $ as getAgentDefinition, a0 as makeAskResultTool, a1 as makeAskTool, a2 as makeAssignTool, a3 as makeAwaitTasksTool, a4 as makeCollabDebugTool, a5 as makeDirectorSessionFactory, a6 as makeFleetEmitTool, a7 as makeFleetHealthTool, a8 as makeFleetSessionTool, a9 as makeFleetStatusTool, aa as makeFleetUsageTool, ab as makeRollUpTool, ac as makeSpawnTool, ad as makeTerminateTool, ae as makeWorkCompleteTool, af as rosterSummaryFromConfigs } from '../null-fleet-bus-BCIRT_nV.js';
3
- import { b as AgentDefinition } from '../multi-agent-coordinator-BSBbZt0e.js';
4
- export { T as AGENT_TOOL_PRESETS, A as AgentBudgetTier, a as AgentCapability, c as AgentPhase, D as DEFAULT_DISPATCH_ROLE, d as DefaultMultiAgentCoordinator, e as DispatchCandidate, f as DispatchClassifier, g as DispatchMethod, h as DispatchOptions, i as DispatchResult, H as HEAVY_BUDGET, L as LIGHT_BUDGET, M as MEDIUM_BUDGET, j as MultiAgentCoordinatorOptions, k as dispatchAgent, m as makeLLMClassifier, s as scoreAgents } from '../multi-agent-coordinator-BSBbZt0e.js';
5
- export { c as AgentFactory, d as AgentFactoryResult, e as AgentRunnerOptions, g as BudgetExceededError, h as BudgetKind, i as BudgetLimits, j as BudgetNegotiationMode, k as BudgetThresholdDecision, l as BudgetThresholdHandler, m as BudgetThresholdSignal, n as BudgetUsage, F as FleetBus, p as FleetEvent, q as FleetHandler, r as FleetUsage, s as FleetUsageAggregator, K as SubagentBudget, V as SubagentUsageSnapshot, _ as makeAgentSubagentRunner } from '../agent-subagent-runner-BmITbs1Q.js';
6
- export { I as InMemoryAgentBridge, a as InMemoryBridgeTransport, c as createMessage } from '../agent-bridge-C0Ze7Ldm.js';
1
+ export { B as BrainArbiter, a as BrainDecision, b as BrainDecisionOption, c as BrainDecisionQueue, d as BrainDecisionRequest, e as BrainDecisionSource, f as BrainFallback, g as BrainRisk, D as DefaultBrainArbiter, h as DefaultBrainArbiterOptions, H as HumanEscalatingBrainArbiter, O as ObservableBrainArbiter, l as formatHumanPrompt } from '../events-CYaoLN5_.js';
2
+ export { A as ACP_AGENTS, a as AGENTS_BY_PHASE, b as AGENT_CATALOG, c as ALL_AGENT_DEFINITIONS, d as ALL_FLEET_AGENTS, e as AUDIT_LOG_AGENT, f as AutoExtendCeiling, g as AutoExtendPolicy, B as BUG_HUNTER_AGENT, h as BugFinding, C as CollabBudgetConfig, i as CollabBudgetOverrides, j as CollabBudgetWarningPayload, k as CollabDebugReport, l as CollabSession, m as CollabSessionOptions, n as CreateDelegateToolOptions, o as CriticConcern, p as CriticEvaluation, D as DEFAULT_DIRECTOR_PREAMBLE, q as DEFAULT_SUBAGENT_BASELINE, r as DelegateHost, s as Director, t as DirectorAlert, u as DirectorAlertLevel, v as DirectorCancelCollabPayload, w as DirectorPromptParts, x as DirectorSessionFactory, y as DirectorSessionFactoryOptions, F as FLEET_ROSTER, z as FLEET_ROSTER_BUDGETS, E as FLEET_ROSTER_WITHACP, G as FleetCostCapError, H as FleetManager, I as FleetManagerOptions, J as FleetRosterBudget, K as FleetSpawnBudgetError, L as ICoordinator, M as IFleetManager, N as LargeAnswerStore, O as NULL_FLEET_BUS, R as REFACTOR_PLANNER_AGENT, P as RefactorPhase, Q as RefactorPlan, S as SECURITY_SCANNER_AGENT, T as SharedFileEntry, U as SharedFileSnapshot, V as SubagentPromptParts, W as applyRosterBudget, X as attachAutoExtend, Y as composeDirectorPrompt, Z as composeSubagentPrompt, _ as createDelegateTool, $ as getAgentDefinition, a0 as makeAskResultTool, a1 as makeAskTool, a2 as makeAssignTool, a3 as makeAwaitTasksTool, a4 as makeCollabDebugTool, a5 as makeDirectorSessionFactory, a6 as makeFleetEmitTool, a7 as makeFleetHealthTool, a8 as makeFleetSessionTool, a9 as makeFleetStatusTool, aa as makeFleetUsageTool, ab as makeRollUpTool, ac as makeSpawnTool, ad as makeTerminateTool, ae as makeWorkCompleteTool, af as rosterSummaryFromConfigs } from '../null-fleet-bus-u5ys3lW_.js';
3
+ import { b as AgentDefinition } from '../multi-agent-coordinator-DpbG3wiy.js';
4
+ export { T as AGENT_TOOL_PRESETS, A as AgentBudgetTier, a as AgentCapability, c as AgentPhase, D as DEFAULT_DISPATCH_ROLE, d as DefaultMultiAgentCoordinator, e as DispatchCandidate, f as DispatchClassifier, g as DispatchMethod, h as DispatchOptions, i as DispatchResult, H as HEAVY_BUDGET, L as LIGHT_BUDGET, M as MEDIUM_BUDGET, j as MultiAgentCoordinatorOptions, k as dispatchAgent, m as makeLLMClassifier, s as scoreAgents } from '../multi-agent-coordinator-DpbG3wiy.js';
5
+ export { c as AgentFactory, d as AgentFactoryResult, e as AgentRunnerOptions, g as BudgetExceededError, h as BudgetKind, i as BudgetLimits, j as BudgetNegotiationMode, k as BudgetThresholdDecision, l as BudgetThresholdHandler, m as BudgetThresholdSignal, n as BudgetUsage, F as FleetBus, p as FleetEvent, q as FleetHandler, r as FleetUsage, s as FleetUsageAggregator, K as SubagentBudget, V as SubagentUsageSnapshot, _ as makeAgentSubagentRunner } from '../agent-subagent-runner-D8qW8OSC.js';
6
+ export { I as InMemoryAgentBridge, a as InMemoryBridgeTransport, c as createMessage } from '../agent-bridge-EWdqs8v6.js';
7
7
  import '../context-y87Jc5ei.js';
8
8
  import 'node:events';
9
9
  import '../director-state-BmYi3DGA.js';
10
10
  import '../config-Dy0CK_o6.js';
11
11
  import '../models-registry-BcYJDKLm.js';
12
- import '../index-BN6i2Nfg.js';
12
+ import '../index-Dsda0uCn.js';
13
13
  import '../logger-DDd5C--Z.js';
14
14
  import '../system-prompt-CA11g6Jo.js';
15
15
  import '../observability-BhnVLBLS.js';
@@ -7131,6 +7131,7 @@ function createDelegateTool(opts) {
7131
7131
  if (typeof i.task !== "string" || !i.task.trim()) {
7132
7132
  return { ok: false, error: "`task` is required." };
7133
7133
  }
7134
+ const target = i.role ?? i.name ?? "subagent";
7134
7135
  try {
7135
7136
  let director = await opts.host.ensureDirector();
7136
7137
  if (!director) {
@@ -7191,6 +7192,7 @@ function createDelegateTool(opts) {
7191
7192
  if (!cfg.timeoutMs) {
7192
7193
  cfg.timeoutMs = Math.max(3e4, timeoutMs - SUBAGENT_TIMEOUT_BUFFER_MS);
7193
7194
  }
7195
+ opts.events?.emit("delegate.started", { target, task: i.task });
7194
7196
  const subagentId = await director.spawn(cfg);
7195
7197
  const taskId = await director.assign({
7196
7198
  id: `${randomUUID()}`,
@@ -7225,6 +7227,17 @@ function createDelegateTool(opts) {
7225
7227
  });
7226
7228
  if ("__timeout" in result) {
7227
7229
  const partial2 = await readSubagentPartial(opts, subagentId);
7230
+ opts.events?.emit("delegate.completed", {
7231
+ target,
7232
+ task: i.task,
7233
+ ok: false,
7234
+ status: "host_timeout",
7235
+ summary: `[${target}] timed out \u2014 no result within ${Math.round(timeoutMs / 1e3)}s`,
7236
+ durationMs: timeoutMs,
7237
+ iterations: partial2?.events ?? 0,
7238
+ toolCalls: partial2?.toolUsesObserved ?? 0,
7239
+ subagentId
7240
+ });
7228
7241
  return {
7229
7242
  ok: false,
7230
7243
  stopReason: "host_timeout",
@@ -7241,6 +7254,24 @@ function createDelegateTool(opts) {
7241
7254
  const retryable = result.error?.retryable;
7242
7255
  const backoffMs = result.error?.backoffMs;
7243
7256
  const summary = buildDelegateSummary(i.role, result);
7257
+ let costUsd;
7258
+ try {
7259
+ costUsd = dir.snapshot().perSubagent[result.subagentId]?.cost;
7260
+ } catch {
7261
+ costUsd = void 0;
7262
+ }
7263
+ opts.events?.emit("delegate.completed", {
7264
+ target,
7265
+ task: i.task,
7266
+ ok: result.status === "success",
7267
+ status: result.status,
7268
+ summary,
7269
+ durationMs: result.durationMs,
7270
+ iterations: result.iterations,
7271
+ toolCalls: result.toolCalls,
7272
+ costUsd,
7273
+ subagentId: result.subagentId
7274
+ });
7244
7275
  return {
7245
7276
  ok: result.status === "success",
7246
7277
  status: result.status,
@@ -7262,10 +7293,21 @@ function createDelegateTool(opts) {
7262
7293
  summary
7263
7294
  };
7264
7295
  } catch (err) {
7296
+ const message = err instanceof Error ? err.message : String(err);
7297
+ opts.events?.emit("delegate.completed", {
7298
+ target,
7299
+ task: i.task,
7300
+ ok: false,
7301
+ status: "error",
7302
+ summary: `[${target}] failed \u2014 ${message}`,
7303
+ durationMs: 0,
7304
+ iterations: 0,
7305
+ toolCalls: 0
7306
+ });
7265
7307
  return {
7266
7308
  ok: false,
7267
7309
  stopReason: "error",
7268
- error: err instanceof Error ? err.message : String(err)
7310
+ error: message
7269
7311
  };
7270
7312
  }
7271
7313
  }
@@ -7663,6 +7705,16 @@ function isEmptyMessage(msg) {
7663
7705
  }
7664
7706
 
7665
7707
  // src/storage/session-store.ts
7708
+ function sanitizeModel(model) {
7709
+ return model.replace(/[^a-zA-Z0-9_-]/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "").slice(0, 40);
7710
+ }
7711
+ function generateSessionId(startedAt, model) {
7712
+ const date = startedAt.slice(0, 10);
7713
+ const time = startedAt.slice(11, 19).replace(/:/g, "-");
7714
+ const suffix = randomBytes(2).toString("hex");
7715
+ const modelPart = model ? `_${sanitizeModel(model)}` : "";
7716
+ return `${date}/${time}Z${modelPart}_${suffix}`;
7717
+ }
7666
7718
  var DefaultSessionStore = class {
7667
7719
  dir;
7668
7720
  events;
@@ -7676,15 +7728,21 @@ var DefaultSessionStore = class {
7676
7728
  sessionPath(id, ext) {
7677
7729
  return path4.join(this.dir, `${id}${ext}`);
7678
7730
  }
7679
- async ensureShardDir(_id) {
7680
- await ensureDir(this.dir);
7681
- return this.dir;
7731
+ /**
7732
+ * Ensure the directory implied by the session ID exists. When the ID
7733
+ * contains a date prefix like `2026-06-06/...`, this creates the date
7734
+ * subdirectory so sessions group naturally by day.
7735
+ */
7736
+ async ensureShardDir(id) {
7737
+ const dirPath = path4.dirname(path4.join(this.dir, id));
7738
+ await ensureDir(dirPath);
7739
+ return dirPath;
7682
7740
  }
7683
7741
  async create(meta) {
7684
7742
  const startedAt = (/* @__PURE__ */ new Date()).toISOString();
7685
- const id = meta.id ?? `${startedAt.replace(/[:.]/g, "-")}-${randomBytes(2).toString("hex")}`;
7743
+ const id = meta.id && meta.id.length > 0 ? meta.id : generateSessionId(startedAt, meta.model ?? meta.provider);
7686
7744
  const shardDir = await this.ensureShardDir(id);
7687
- const file = path4.join(shardDir, `${id}.jsonl`);
7745
+ const file = path4.join(shardDir, `${path4.basename(id)}.jsonl`);
7688
7746
  let handle;
7689
7747
  try {
7690
7748
  handle = await fsp6.open(file, "a", 384);