pilotswarm-sdk 0.3.0 → 0.3.2

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 (102) hide show
  1. package/dist/cms-migrations.d.ts.map +1 -1
  2. package/dist/cms-migrations.js +840 -1
  3. package/dist/cms-migrations.js.map +1 -1
  4. package/dist/cms.d.ts +31 -1
  5. package/dist/cms.d.ts.map +1 -1
  6. package/dist/cms.js +46 -1
  7. package/dist/cms.js.map +1 -1
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/inspect-tools.d.ts.map +1 -1
  11. package/dist/inspect-tools.js +27 -0
  12. package/dist/inspect-tools.js.map +1 -1
  13. package/dist/managed-session.d.ts +1 -0
  14. package/dist/managed-session.d.ts.map +1 -1
  15. package/dist/managed-session.js +243 -21
  16. package/dist/managed-session.js.map +1 -1
  17. package/dist/management-client.d.ts +14 -1
  18. package/dist/management-client.d.ts.map +1 -1
  19. package/dist/management-client.js +49 -1
  20. package/dist/management-client.js.map +1 -1
  21. package/dist/orchestration/index.d.ts +2 -2
  22. package/dist/orchestration/index.js +1 -1
  23. package/dist/orchestration/lifecycle.d.ts.map +1 -1
  24. package/dist/orchestration/lifecycle.js +74 -4
  25. package/dist/orchestration/lifecycle.js.map +1 -1
  26. package/dist/orchestration/runtime.d.ts +1 -1
  27. package/dist/orchestration/state.d.ts +1 -0
  28. package/dist/orchestration/state.d.ts.map +1 -1
  29. package/dist/orchestration/state.js +1 -0
  30. package/dist/orchestration/state.js.map +1 -1
  31. package/dist/orchestration/turn.d.ts +11 -0
  32. package/dist/orchestration/turn.d.ts.map +1 -1
  33. package/dist/orchestration/turn.js +61 -4
  34. package/dist/orchestration/turn.js.map +1 -1
  35. package/dist/orchestration-registry.d.ts.map +1 -1
  36. package/dist/orchestration-registry.js +4 -2
  37. package/dist/orchestration-registry.js.map +1 -1
  38. package/dist/orchestration-version.d.ts +1 -1
  39. package/dist/orchestration-version.js +1 -1
  40. package/dist/orchestration.d.ts +2 -2
  41. package/dist/orchestration.js +1 -1
  42. package/dist/orchestration_1_0_46.d.ts +1 -1
  43. package/dist/orchestration_1_0_47.d.ts +1 -1
  44. package/dist/orchestration_1_0_48.d.ts +1 -1
  45. package/dist/orchestration_1_0_49.d.ts +1 -1
  46. package/dist/orchestration_1_0_50.d.ts +1 -1
  47. package/dist/orchestration_1_0_54/agents.d.ts +41 -0
  48. package/dist/orchestration_1_0_54/agents.d.ts.map +1 -0
  49. package/dist/orchestration_1_0_54/agents.js +758 -0
  50. package/dist/orchestration_1_0_54/agents.js.map +1 -0
  51. package/dist/orchestration_1_0_54/index.d.ts +24 -0
  52. package/dist/orchestration_1_0_54/index.d.ts.map +1 -0
  53. package/dist/orchestration_1_0_54/index.js +13 -0
  54. package/dist/orchestration_1_0_54/index.js.map +1 -0
  55. package/dist/orchestration_1_0_54/lifecycle.d.ts +41 -0
  56. package/dist/orchestration_1_0_54/lifecycle.d.ts.map +1 -0
  57. package/dist/orchestration_1_0_54/lifecycle.js +510 -0
  58. package/dist/orchestration_1_0_54/lifecycle.js.map +1 -0
  59. package/dist/orchestration_1_0_54/queue.d.ts +7 -0
  60. package/dist/orchestration_1_0_54/queue.d.ts.map +1 -0
  61. package/dist/orchestration_1_0_54/queue.js +644 -0
  62. package/dist/orchestration_1_0_54/queue.js.map +1 -0
  63. package/dist/orchestration_1_0_54/runtime.d.ts +29 -0
  64. package/dist/orchestration_1_0_54/runtime.d.ts.map +1 -0
  65. package/dist/orchestration_1_0_54/runtime.js +194 -0
  66. package/dist/orchestration_1_0_54/runtime.js.map +1 -0
  67. package/dist/orchestration_1_0_54/state.d.ts +125 -0
  68. package/dist/orchestration_1_0_54/state.d.ts.map +1 -0
  69. package/dist/orchestration_1_0_54/state.js +105 -0
  70. package/dist/orchestration_1_0_54/state.js.map +1 -0
  71. package/dist/orchestration_1_0_54/turn.d.ts +6 -0
  72. package/dist/orchestration_1_0_54/turn.d.ts.map +1 -0
  73. package/dist/orchestration_1_0_54/turn.js +864 -0
  74. package/dist/orchestration_1_0_54/turn.js.map +1 -0
  75. package/dist/orchestration_1_0_54/utils.d.ts +22 -0
  76. package/dist/orchestration_1_0_54/utils.d.ts.map +1 -0
  77. package/dist/orchestration_1_0_54/utils.js +226 -0
  78. package/dist/orchestration_1_0_54/utils.js.map +1 -0
  79. package/dist/session-manager.d.ts +4 -0
  80. package/dist/session-manager.d.ts.map +1 -1
  81. package/dist/session-manager.js +22 -0
  82. package/dist/session-manager.js.map +1 -1
  83. package/dist/session-proxy.d.ts +12 -0
  84. package/dist/session-proxy.d.ts.map +1 -1
  85. package/dist/session-proxy.js +137 -13
  86. package/dist/session-proxy.js.map +1 -1
  87. package/dist/sweeper-tools.d.ts +1 -1
  88. package/dist/sweeper-tools.d.ts.map +1 -1
  89. package/dist/sweeper-tools.js +153 -92
  90. package/dist/sweeper-tools.js.map +1 -1
  91. package/dist/system-agents.d.ts +2 -0
  92. package/dist/system-agents.d.ts.map +1 -1
  93. package/dist/system-agents.js +3 -0
  94. package/dist/system-agents.js.map +1 -1
  95. package/dist/types.d.ts +14 -1
  96. package/dist/types.d.ts.map +1 -1
  97. package/dist/types.js.map +1 -1
  98. package/package.json +3 -2
  99. package/plugins/mgmt/agents/agent-tuner.agent.md +36 -2
  100. package/plugins/mgmt/agents/sweeper.agent.md +7 -4
  101. package/plugins/mgmt/skills/sweeper/SKILL.md +4 -1
  102. package/plugins/system/agents/default.agent.md +3 -1
@@ -5,6 +5,16 @@ import type { StorageConfig } from "./storage-config.js";
5
5
  import { type SerializableSessionConfig } from "./types.js";
6
6
  import type { AgentConfig } from "./agent-loader.js";
7
7
  import { type CronAtSchedule } from "./cron-at.js";
8
+ export declare function prepareStickySessionTitleUpdate(catalog: Pick<SessionCatalog, "getSession">, sessionId: string, requestedTitle: unknown): Promise<{
9
+ ok: true;
10
+ updates: {
11
+ title: string;
12
+ titleLocked: true;
13
+ };
14
+ } | {
15
+ ok: false;
16
+ message: string;
17
+ }>;
8
18
  export declare function createSessionProxy(ctx: any, sessionId: string, affinityKey: string, config: SerializableSessionConfig): {
9
19
  runTurn(prompt: string, bootstrap?: boolean, turnIndex?: number, turnMeta?: {
10
20
  parentSessionId?: string;
@@ -93,6 +103,8 @@ export declare function createSessionManagerProxy(ctx: any): {
93
103
  deleteSession(sessionId: string, reason?: string): any;
94
104
  /** Update a session's CMS state (e.g. "rejected" for policy violations). */
95
105
  updateCmsState(sessionId: string, state: string, lastError?: string | null, waitReason?: string | null): any;
106
+ /** Persist this session's model metadata in CMS. */
107
+ updateSessionModel(sessionId: string, model: string, reasoningEffort?: string | null): any;
96
108
  /** Get the worker's authoritative session policy + allowed agent names. */
97
109
  getWorkerSessionPolicy(): any;
98
110
  /** Load curated skills and open asks from the knowledge pipeline. */
@@ -1 +1 @@
1
- {"version":3,"file":"session-proxy.d.ts","sourceRoot":"","sources":["../src/session-proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-proxy.d.ts","sourceRoot":"","sources":["../src/session-proxy.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,7 @@ function normalizeJsonObject(value) {
29
29
  return value;
30
30
  }
31
31
  const SUMMARY_STATE_TEMPLATE = '{"schemaVersion":1,"updatedAt":"2026-05-18T00:00:00.000Z","intent":"...","summary":"...","state":{},"openQuestions":[],"blockers":[],"nextActions":[],"links":[],"structureChangeLog":[]}';
32
+ const MAX_SESSION_TITLE_LENGTH = 60;
32
33
  function normalizeSummaryArray(value) {
33
34
  if (Array.isArray(value))
34
35
  return value;
@@ -74,6 +75,42 @@ function normalizeSummaryState(value) {
74
75
  },
75
76
  };
76
77
  }
78
+ function normalizeSessionTitleInput(title, maxLength = MAX_SESSION_TITLE_LENGTH) {
79
+ return String(title || "").trim().slice(0, maxLength);
80
+ }
81
+ function getNamedAgentTitlePrefix(session) {
82
+ if (!session?.agentId)
83
+ return null;
84
+ const currentTitle = String(session.title || "").trim();
85
+ if (!currentTitle)
86
+ return null;
87
+ const separatorIndex = currentTitle.indexOf(": ");
88
+ if (separatorIndex > 0)
89
+ return currentTitle.slice(0, separatorIndex).trim() || null;
90
+ return currentTitle || null;
91
+ }
92
+ function buildStickySessionTitle(session, requestedTitle) {
93
+ const normalizedTitle = normalizeSessionTitleInput(requestedTitle);
94
+ const prefix = getNamedAgentTitlePrefix(session);
95
+ if (!prefix)
96
+ return normalizedTitle;
97
+ const prefixLabel = `${prefix}: `;
98
+ const maxSuffixLength = Math.max(0, MAX_SESSION_TITLE_LENGTH - prefixLabel.length);
99
+ if (maxSuffixLength <= 0)
100
+ return prefix.slice(0, MAX_SESSION_TITLE_LENGTH);
101
+ return `${prefixLabel}${normalizedTitle.slice(0, maxSuffixLength)}`;
102
+ }
103
+ export async function prepareStickySessionTitleUpdate(catalog, sessionId, requestedTitle) {
104
+ const session = await catalog.getSession(sessionId);
105
+ if (!session)
106
+ return { ok: false, message: `Session ${sessionId.slice(0, 8)} was not found.` };
107
+ if (session.isSystem)
108
+ return { ok: false, message: "System session titles are fixed" };
109
+ const title = buildStickySessionTitle(session, requestedTitle);
110
+ if (!title)
111
+ return { ok: false, message: "Title cannot be empty" };
112
+ return { ok: true, updates: { title, titleLocked: true } };
113
+ }
77
114
  function buildContractJson(contract, parentSessionId, childSessionId) {
78
115
  const normalized = normalizeJsonObject(contract);
79
116
  if (!normalized)
@@ -543,6 +580,10 @@ export function createSessionManagerProxy(ctx) {
543
580
  payload.waitReason = waitReason;
544
581
  return ctx.scheduleActivity("updateCmsState", payload);
545
582
  },
583
+ /** Persist this session's model metadata in CMS. */
584
+ updateSessionModel(sessionId, model, reasoningEffort) {
585
+ return ctx.scheduleActivity("updateSessionModel", { sessionId, model, reasoningEffort });
586
+ },
546
587
  /** Get the worker's authoritative session policy + allowed agent names. */
547
588
  getWorkerSessionPolicy() {
548
589
  return ctx.scheduleActivity("getWorkerSessionPolicy", {});
@@ -608,6 +649,7 @@ workerNodeId) {
608
649
  toolNames: new Set(),
609
650
  modelSummary: sessionManager.getModelSummary(),
610
651
  };
652
+ const turnStartedAt = new Date();
611
653
  const turnSpan = otelTrace.getTracer("pilotswarm-turns").startSpan("session.turn", {
612
654
  attributes: {
613
655
  "pilotswarm.session_id": input.sessionId,
@@ -992,6 +1034,38 @@ workerNodeId) {
992
1034
  return `[SYSTEM: spawn_agent failed: ${err?.message || String(err)}]`;
993
1035
  }
994
1036
  },
1037
+ setSessionModel: async (args) => {
1038
+ try {
1039
+ const requestedModel = String(args.model || "").trim();
1040
+ if (!requestedModel)
1041
+ return "[SYSTEM: set_session_model failed: model is required.]";
1042
+ if (!storeUrl)
1043
+ return "[SYSTEM: set_session_model failed: no storeUrl is configured.]";
1044
+ const resolved = sessionManager.resolveModelSwitchConfig(requestedModel, "reasoning_effort" in args ? args.reasoning_effort ?? null : undefined);
1045
+ const sdkClient = new PilotSwarmClient(internalClientConfig());
1046
+ try {
1047
+ await sdkClient.start();
1048
+ await sdkClient.duroxideClient.enqueueEvent(`session-${input.sessionId}`, "messages", JSON.stringify({
1049
+ type: "cmd",
1050
+ cmd: "set_model",
1051
+ id: `set-model-tool-${randomUUID()}`,
1052
+ args: {
1053
+ model: resolved.model,
1054
+ reasoningEffort: resolved.reasoningEffort,
1055
+ source: "tool",
1056
+ },
1057
+ }));
1058
+ }
1059
+ finally {
1060
+ await sdkClient.stop().catch(() => { });
1061
+ }
1062
+ const effortText = resolved.reasoningEffort ? `:${resolved.reasoningEffort}` : "";
1063
+ return `[SYSTEM: Model switch accepted. Stop this turn now; the runtime will automatically continue on ${resolved.model}${effortText}.]`;
1064
+ }
1065
+ catch (err) {
1066
+ return `[SYSTEM: set_session_model failed: ${err?.message || String(err)}]`;
1067
+ }
1068
+ },
995
1069
  messageAgent: async (args) => {
996
1070
  try {
997
1071
  const child = await resolveManagedChild(args.agent_id);
@@ -1128,11 +1202,33 @@ workerNodeId) {
1128
1202
  return `[SYSTEM: update_session_summary is disabled for read-only agent-tuner sessions.]`;
1129
1203
  if (!catalog)
1130
1204
  return `[SYSTEM: update_session_summary failed: CMS catalog is unavailable.]`;
1131
- const normalizedSummary = normalizeSummaryState(args.summary_state);
1132
- if (!normalizedSummary.ok)
1133
- return `[SYSTEM: update_session_summary failed: ${normalizedSummary.message}]`;
1134
- await catalog.updateSessionSummary(input.sessionId, normalizedSummary.summaryState, args.short_summary);
1135
- return `[SYSTEM: Session summary updated.]`;
1205
+ const hasSummaryState = Object.prototype.hasOwnProperty.call(args ?? {}, "summary_state") && args.summary_state !== undefined && args.summary_state !== null;
1206
+ const hasTitle = Object.prototype.hasOwnProperty.call(args ?? {}, "title");
1207
+ if (!hasSummaryState && !hasTitle) {
1208
+ return `[SYSTEM: update_session_summary failed: summary_state or title is required.]`;
1209
+ }
1210
+ let normalizedSummary;
1211
+ if (hasSummaryState) {
1212
+ const summaryResult = normalizeSummaryState(args.summary_state);
1213
+ if (!summaryResult.ok)
1214
+ return `[SYSTEM: update_session_summary failed: ${summaryResult.message}]`;
1215
+ normalizedSummary = summaryResult;
1216
+ }
1217
+ const titleUpdate = hasTitle
1218
+ ? await prepareStickySessionTitleUpdate(catalog, input.sessionId, args.title)
1219
+ : undefined;
1220
+ if (titleUpdate && !titleUpdate.ok)
1221
+ return `[SYSTEM: update_session_summary failed: ${titleUpdate.message}]`;
1222
+ const updated = [];
1223
+ if (normalizedSummary) {
1224
+ await catalog.updateSessionSummary(input.sessionId, normalizedSummary.summaryState, args.short_summary);
1225
+ updated.push("summary");
1226
+ }
1227
+ if (titleUpdate?.ok) {
1228
+ await catalog.updateSession(input.sessionId, titleUpdate.updates);
1229
+ updated.push("title");
1230
+ }
1231
+ return `[SYSTEM: Session ${updated.join(" and ")} updated.]`;
1136
1232
  }
1137
1233
  catch (err) {
1138
1234
  return `[SYSTEM: update_session_summary failed: ${err?.message || String(err)}]`;
@@ -1343,7 +1439,6 @@ workerNodeId) {
1343
1439
  turnTelemetry.tokensOutput += usageUpsert.tokensOutputIncrement ?? 0;
1344
1440
  turnTelemetry.tokensCacheRead += usageUpsert.tokensCacheReadIncrement ?? 0;
1345
1441
  turnTelemetry.tokensCacheWrite += usageUpsert.tokensCacheWriteIncrement ?? 0;
1346
- void cmsRetryBestEffort(`runTurn.onEvent upsertSummary usage session=${input.sessionId}`, () => catalog.upsertSessionMetricSummary(input.sessionId, usageUpsert), (msg) => activityCtx.traceInfo(msg));
1347
1442
  }
1348
1443
  }
1349
1444
  else if (event.eventType === "tool.execution_start") {
@@ -1514,7 +1609,8 @@ workerNodeId) {
1514
1609
  };
1515
1610
  }
1516
1611
  activityCtx.traceInfo(`[runTurn] ManagedSession.runTurn completed for ${input.sessionId} type=${result.type}`);
1517
- // Record turn_completed CMS event.
1612
+ // Drain event writes before the atomic post-turn writeback records
1613
+ // session.turn_completed.
1518
1614
  //
1519
1615
  // Ordering matters here: every per-event CMS write fired by the
1520
1616
  // SDK's onEvent callback (assistant.message, tool calls, usage,
@@ -1543,10 +1639,6 @@ workerNodeId) {
1543
1639
  if (pendingWritesAtBarrier.length > 0) {
1544
1640
  await Promise.allSettled(pendingWritesAtBarrier);
1545
1641
  }
1546
- await cmsRetryBestEffort(`runTurn.recordEvent turn_completed session=${input.sessionId}`, () => catalog.recordEvents(input.sessionId, [{
1547
- eventType: "session.turn_completed",
1548
- data: { iteration: input.turnIndex ?? 0 },
1549
- }], workerNodeId), (msg) => activityCtx.traceInfo(msg));
1550
1642
  }
1551
1643
  if (cancelled)
1552
1644
  return { type: "cancelled" };
@@ -1591,8 +1683,32 @@ workerNodeId) {
1591
1683
  updates.waitReason = null;
1592
1684
  updates.lastError = null;
1593
1685
  }
1594
- const capturedUpdates = updates;
1595
- await cmsRetryBestEffort(`runTurn.postTurn updateSession state=${capturedUpdates.state} session=${input.sessionId}`, () => catalog.updateSession(input.sessionId, capturedUpdates), (msg) => activityCtx.traceInfo(msg));
1686
+ const turnEndedAt = new Date();
1687
+ await cmsRetryBestEffort(`runTurn.postTurn completeTurnWriteback state=${updates.state} session=${input.sessionId}`, () => catalog.completeTurnWriteback({
1688
+ sessionId: input.sessionId,
1689
+ agentId: null,
1690
+ model: input.config.model ?? null,
1691
+ reasoningEffort: input.config.reasoningEffort ?? null,
1692
+ turnIndex: input.turnIndex ?? 0,
1693
+ startedAt: turnStartedAt,
1694
+ endedAt: turnEndedAt,
1695
+ durationMs: Math.max(0, turnEndedAt.getTime() - turnStartedAt.getTime()),
1696
+ tokensInput: turnTelemetry.tokensInput,
1697
+ tokensOutput: turnTelemetry.tokensOutput,
1698
+ tokensCacheRead: turnTelemetry.tokensCacheRead,
1699
+ tokensCacheWrite: turnTelemetry.tokensCacheWrite,
1700
+ toolCalls: turnTelemetry.toolCalls,
1701
+ toolErrors: turnTelemetry.toolErrors,
1702
+ toolNames: Array.from(turnTelemetry.toolNames).sort(),
1703
+ resultType: result.type,
1704
+ errorMessage: result.type === "error" ? (result.message ?? null) : null,
1705
+ workerNodeId: workerNodeId ?? null,
1706
+ state: updates.state ?? "idle",
1707
+ lastActiveAt: updates.lastActiveAt ?? turnEndedAt,
1708
+ lastError: updates.lastError ?? null,
1709
+ waitReason: updates.waitReason ?? null,
1710
+ currentIteration: input.turnIndex ?? 0,
1711
+ }), (msg) => activityCtx.traceInfo(msg));
1596
1712
  }
1597
1713
  return result;
1598
1714
  }, { trace });
@@ -2110,6 +2226,7 @@ workerNodeId) {
2110
2226
  parentSessionId: input.parentSessionId,
2111
2227
  nestingLevel: input.nestingLevel,
2112
2228
  model: input.config.model,
2229
+ reasoningEffort: input.config.reasoningEffort,
2113
2230
  systemMessage: input.config.systemMessage,
2114
2231
  boundAgentName: input.config.boundAgentName,
2115
2232
  promptLayering: input.config.promptLayering,
@@ -2399,6 +2516,13 @@ workerNodeId) {
2399
2516
  updates.waitReason = input.waitReason ?? null;
2400
2517
  await cmsRetryCritical(`updateCmsState session=${input.sessionId} state=${input.state}`, () => catalog.updateSession(input.sessionId, { ...updates }), (msg) => activityCtx.traceInfo(msg));
2401
2518
  });
2519
+ runtime.registerActivity("updateSessionModel", async (activityCtx, input) => {
2520
+ activityCtx.traceInfo(`[updateSessionModel] session=${input.sessionId} model=${input.model}`);
2521
+ await cmsRetryCritical(`updateSessionModel session=${input.sessionId}`, () => catalog.updateSession(input.sessionId, {
2522
+ model: input.model,
2523
+ reasoningEffort: input.reasoningEffort ?? null,
2524
+ }), (msg) => activityCtx.traceInfo(msg));
2525
+ });
2402
2526
  }
2403
2527
  // ── getWorkerSessionPolicy ──────────────────────────────
2404
2528
  // Returns the worker's session policy and allowed agent names.