@cydm/pie 1.0.3 → 1.0.5

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.
@@ -85,11 +85,15 @@ function markCompletedSteps(text, todoItems2) {
85
85
  }
86
86
  var PLAN_MODE_TOOLS = ["read", "bash", "grep", "find", "ls", "questionnaire"];
87
87
  var NORMAL_MODE_TOOLS = ["read", "bash", "edit", "write", "grep", "find", "ls", "questionnaire"];
88
+ var SESSION_METADATA_KEY = "planModeEnabled";
88
89
  var planModeEnabled = false;
89
90
  var executionMode = false;
90
91
  var todoItems = [];
91
92
  function planModeExtension(ctx) {
92
93
  ctx.log("Plan mode extension loaded");
94
+ function readPersistedPlanMode() {
95
+ return ctx.getSessionMetadata()?.[SESSION_METADATA_KEY] === true;
96
+ }
93
97
  function updateStatus() {
94
98
  if (executionMode && todoItems.length > 0) {
95
99
  const completed = todoItems.filter((t) => t.completed).length;
@@ -102,6 +106,7 @@ function planModeExtension(ctx) {
102
106
  planModeEnabled = !planModeEnabled;
103
107
  executionMode = false;
104
108
  todoItems = [];
109
+ ctx.setSessionMetadata(SESSION_METADATA_KEY, planModeEnabled);
105
110
  ctx.setPlanMode(planModeEnabled);
106
111
  if (planModeEnabled) {
107
112
  ctx.setActiveTools(PLAN_MODE_TOOLS);
@@ -112,6 +117,19 @@ function planModeExtension(ctx) {
112
117
  }
113
118
  updateStatus();
114
119
  }
120
+ function applyPlanModeState(enabled, options = {}) {
121
+ planModeEnabled = enabled;
122
+ executionMode = false;
123
+ todoItems = [];
124
+ ctx.setPlanMode(enabled, { forcePromptInjection: options.forcePromptInjection });
125
+ ctx.setActiveTools(enabled ? PLAN_MODE_TOOLS : NORMAL_MODE_TOOLS);
126
+ if (options.notify) {
127
+ ctx.ui.notify(
128
+ enabled ? `Plan mode enabled. Available tools: ${PLAN_MODE_TOOLS.join(", ")}` : "Plan mode disabled. Full access restored."
129
+ );
130
+ }
131
+ updateStatus();
132
+ }
115
133
  ctx.registerCommand({
116
134
  path: ["tools", "plan"],
117
135
  description: "Toggle plan mode (read-only exploration)",
@@ -138,10 +156,18 @@ Command: ${command}`,
138
156
  }
139
157
  });
140
158
  ctx.on("agent:start", async () => {
159
+ const persisted = readPersistedPlanMode();
160
+ if (persisted !== planModeEnabled) {
161
+ applyPlanModeState(persisted);
162
+ }
141
163
  if (planModeEnabled) {
142
164
  ctx.log("[plan-mode] Injecting plan mode context");
143
165
  }
144
166
  });
167
+ ctx.on("session:changed", async () => {
168
+ const enabled = readPersistedPlanMode();
169
+ applyPlanModeState(enabled, { forcePromptInjection: enabled });
170
+ });
145
171
  ctx.on("turn:end", async (event) => {
146
172
  if (!executionMode || todoItems.length === 0) return;
147
173
  const message = event.message;
@@ -189,6 +215,7 @@ ${todoListText}`, "info");
189
215
  if (choice?.startsWith("Execute")) {
190
216
  planModeEnabled = false;
191
217
  executionMode = todoItems.length > 0;
218
+ ctx.setSessionMetadata(SESSION_METADATA_KEY, false);
192
219
  ctx.setPlanMode(false);
193
220
  ctx.setActiveTools(NORMAL_MODE_TOOLS);
194
221
  updateStatus();