@pipod/cli 0.1.14 → 0.1.16

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/dist/cli.js CHANGED
@@ -5185,6 +5185,11 @@ async function runSeed(opts) {
5185
5185
  info("reusing this pod's warm workspace \u2014 nothing copied");
5186
5186
  return { kind: "skipped", reason: "reused pod" };
5187
5187
  }
5188
+ const settled = opts.pod.resolvedConfig.workspaceSeed;
5189
+ if (settled?.status === "skipped") {
5190
+ info("workspace already populated (an init script filled it) \u2014 nothing sent");
5191
+ return { kind: "skipped", reason: "workspace not empty" };
5192
+ }
5188
5193
  switch (plan.kind) {
5189
5194
  case "copy":
5190
5195
  return copyWorkspaceIntoPod(opts, plan.root);
@@ -11153,7 +11158,16 @@ function createRemoteRuntime(opts) {
11153
11158
  get isStreaming() {
11154
11159
  return cache.state.isStreaming;
11155
11160
  },
11161
+ /**
11162
+ * Once an ending is recorded (§6.2) the client has no turn left to wait for, so it reads
11163
+ * as idle. InteractiveMode's extension shutdown requester only shuts down when the session
11164
+ * is idle and otherwise waits for `agent_settled`; without this a `/pod detach` or its
11165
+ * chord would sit until the pod's turn ended, though a leave never touches pod-side pi, and
11166
+ * a dropped transport or a pod-side pi exit may never settle the stream at all. A local
11167
+ * extension's `ctx.shutdown()` records no ending, so it still waits for the turn as in pi.
11168
+ */
11156
11169
  get isIdle() {
11170
+ if (bridge.intent) return true;
11157
11171
  return !cache.state.isStreaming && !cache.state.isCompacting;
11158
11172
  },
11159
11173
  get isCompacting() {