@cremini/skillpack 1.2.12 → 1.2.13

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 (2) hide show
  1. package/dist/cli.js +42 -9
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -4014,12 +4014,36 @@ var PackAgent = class {
4014
4014
  const run = async () => {
4015
4015
  cs.running = true;
4016
4016
  let turnHadVisibleOutput = false;
4017
+ let sawAgentStart = false;
4018
+ let sawAgentEnd = false;
4017
4019
  const runId = randomUUID4();
4018
4020
  let unsubscribe = () => void 0;
4021
+ const waitForQueuedAgentEvents = async () => {
4022
+ const maybeQueue = cs.session._agentEventQueue;
4023
+ if (!maybeQueue || typeof maybeQueue.then !== "function") {
4024
+ return;
4025
+ }
4026
+ try {
4027
+ await maybeQueue;
4028
+ } catch (error) {
4029
+ log("[PackAgent] Waiting for queued agent events failed:", error);
4030
+ }
4031
+ };
4019
4032
  try {
4020
- cs.fileOutputCallbackRef.current = (event) => {
4033
+ const forwardAgentEvent = (event) => {
4034
+ if (event.type === "agent_start") {
4035
+ sawAgentStart = true;
4036
+ } else if (event.type === "agent_end") {
4037
+ if (sawAgentEnd) {
4038
+ return;
4039
+ }
4040
+ sawAgentEnd = true;
4041
+ }
4021
4042
  onEvent(event);
4022
4043
  };
4044
+ cs.fileOutputCallbackRef.current = (event) => {
4045
+ forwardAgentEvent(event);
4046
+ };
4023
4047
  cs.delegatedToolRunContextRef.current = {
4024
4048
  runId,
4025
4049
  channelId,
@@ -4031,7 +4055,7 @@ var PackAgent = class {
4031
4055
  log("\n=== [AGENT SESSION START] ===");
4032
4056
  log("System Prompt:\n", cs.session.systemPrompt);
4033
4057
  log("============================\n");
4034
- onEvent({ type: "agent_start" });
4058
+ forwardAgentEvent({ type: "agent_start" });
4035
4059
  break;
4036
4060
  case "message_start":
4037
4061
  log(`
@@ -4039,7 +4063,7 @@ var PackAgent = class {
4039
4063
  if (event.message?.role === "user") {
4040
4064
  log(JSON.stringify(event.message.content, null, 2));
4041
4065
  }
4042
- onEvent({
4066
+ forwardAgentEvent({
4043
4067
  type: "message_start",
4044
4068
  role: event.message?.role ?? ""
4045
4069
  });
@@ -4048,13 +4072,13 @@ var PackAgent = class {
4048
4072
  if (event.assistantMessageEvent?.type === "text_delta") {
4049
4073
  turnHadVisibleOutput = true;
4050
4074
  write(event.assistantMessageEvent.delta);
4051
- onEvent({
4075
+ forwardAgentEvent({
4052
4076
  type: "text_delta",
4053
4077
  delta: event.assistantMessageEvent.delta
4054
4078
  });
4055
4079
  } else if (event.assistantMessageEvent?.type === "thinking_delta") {
4056
4080
  turnHadVisibleOutput = true;
4057
- onEvent({
4081
+ forwardAgentEvent({
4058
4082
  type: "thinking_delta",
4059
4083
  delta: event.assistantMessageEvent.delta
4060
4084
  });
@@ -4074,14 +4098,17 @@ var PackAgent = class {
4074
4098
  }
4075
4099
  }
4076
4100
  }
4077
- onEvent({ type: "message_end", role: event.message?.role ?? "" });
4101
+ forwardAgentEvent({
4102
+ type: "message_end",
4103
+ role: event.message?.role ?? ""
4104
+ });
4078
4105
  break;
4079
4106
  case "tool_execution_start":
4080
4107
  turnHadVisibleOutput = true;
4081
4108
  log(`
4082
4109
  >>> [Tool Start: ${event.toolName}] >>>`);
4083
4110
  log("Args:", JSON.stringify(event.args, null, 2));
4084
- onEvent({
4111
+ forwardAgentEvent({
4085
4112
  type: "tool_start",
4086
4113
  toolCallId: event.toolCallId ?? "",
4087
4114
  toolName: event.toolName,
@@ -4092,7 +4119,7 @@ var PackAgent = class {
4092
4119
  turnHadVisibleOutput = true;
4093
4120
  log(`<<< [Tool End: ${event.toolName}] <<<`);
4094
4121
  log(`Error: ${event.isError ? "Yes" : "No"}`);
4095
- onEvent({
4122
+ forwardAgentEvent({
4096
4123
  type: "tool_end",
4097
4124
  toolCallId: event.toolCallId ?? "",
4098
4125
  toolName: event.toolName,
@@ -4102,7 +4129,7 @@ var PackAgent = class {
4102
4129
  break;
4103
4130
  case "agent_end":
4104
4131
  log("\n=== [AGENT SESSION END] ===\n");
4105
- onEvent({ type: "agent_end" });
4132
+ forwardAgentEvent({ type: "agent_end" });
4106
4133
  break;
4107
4134
  }
4108
4135
  });
@@ -4149,6 +4176,12 @@ ${text}`;
4149
4176
  }
4150
4177
  return { stopReason: diagnostics?.stopReason ?? "unknown" };
4151
4178
  } finally {
4179
+ await waitForQueuedAgentEvents();
4180
+ if (sawAgentStart && !sawAgentEnd) {
4181
+ sawAgentEnd = true;
4182
+ log(`[PackAgent] Synthesizing terminal agent_end for ${channelId}`);
4183
+ onEvent({ type: "agent_end" });
4184
+ }
4152
4185
  cs.running = false;
4153
4186
  cs.fileOutputCallbackRef.current = null;
4154
4187
  cs.delegatedToolRunContextRef.current = null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cremini/skillpack",
3
- "version": "1.2.12",
3
+ "version": "1.2.13",
4
4
  "description": "Pack AI Skills into Local Agents",
5
5
  "type": "module",
6
6
  "repository": {