@lazyingart/agintiflow 0.20.17 → 0.20.19

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lazyingart/agintiflow",
3
- "version": "0.20.17",
3
+ "version": "0.20.19",
4
4
  "type": "module",
5
5
  "description": "AgInTiFlow is a web-first coding agent and CLI with DeepSeek routing, sandboxed tools, model providers, canvas artifacts, and optional wrappers.",
6
6
  "license": "Apache-2.0",
package/public/index.html CHANGED
@@ -85,6 +85,22 @@
85
85
  </section>
86
86
 
87
87
  <form id="run-form">
88
+ <label>
89
+ <span data-i18n="goalLabel">Goal</span>
90
+ <textarea
91
+ id="goal"
92
+ name="goal"
93
+ rows="5"
94
+ data-i18n-placeholder="goalPlaceholder"
95
+ placeholder="Open a site and summarize it, or use run_command for simple terminal inspection."
96
+ ></textarea>
97
+ </label>
98
+
99
+ <div class="actions run-start-actions">
100
+ <button type="submit" data-i18n="startRunButton">Start run</button>
101
+ <span id="key-status" class="subtle"></span>
102
+ </div>
103
+
88
104
  <label>
89
105
  <span data-i18n="routingModeLabel">Routing policy</span>
90
106
  <select id="routingMode" name="routingMode">
@@ -126,17 +142,6 @@
126
142
  </select>
127
143
  </label>
128
144
 
129
- <label>
130
- <span data-i18n="goalLabel">Goal</span>
131
- <textarea
132
- id="goal"
133
- name="goal"
134
- rows="5"
135
- data-i18n-placeholder="goalPlaceholder"
136
- placeholder="Open a site and summarize it, or use run_command for simple terminal inspection."
137
- ></textarea>
138
- </label>
139
-
140
145
  <div class="grid">
141
146
  <label>
142
147
  <span data-i18n="commandCwdLabel">Working directory</span>
@@ -187,11 +192,6 @@
187
192
  </div>
188
193
 
189
194
  <button id="open-settings" type="button" class="secondary settings-button">Advanced settings</button>
190
-
191
- <div class="actions">
192
- <button type="submit" data-i18n="startRunButton">Start run</button>
193
- <span id="key-status" class="subtle"></span>
194
- </div>
195
195
  </form>
196
196
  </section>
197
197
 
package/public/styles.css CHANGED
@@ -596,6 +596,19 @@ button.danger {
596
596
  justify-content: space-between;
597
597
  }
598
598
 
599
+ .run-start-actions {
600
+ display: grid;
601
+ gap: 8px;
602
+ }
603
+
604
+ .run-start-actions button {
605
+ width: 100%;
606
+ }
607
+
608
+ .run-start-actions #key-status {
609
+ min-height: 1.2em;
610
+ }
611
+
599
612
  .run-header-actions {
600
613
  display: flex;
601
614
  min-width: 0;
@@ -303,9 +303,12 @@ try {
303
303
  if (!latest.stdout.includes("session=") || !latest.stdout.includes("Interactive agent chat")) {
304
304
  throw new Error("bare aginti resume did not open the latest session interactively");
305
305
  }
306
- if (!latest.stdout.includes("resume history") || !latest.stdout.includes("Mock run complete")) {
306
+ if (!latest.stdout.includes("resume history") || !latest.stdout.includes("chat=") || !latest.stdout.includes("Mock run complete")) {
307
307
  throw new Error("bare aginti resume did not preview saved chat history");
308
308
  }
309
+ if (!latest.stdout.includes("resume note=showing chat transcript only")) {
310
+ throw new Error("bare aginti resume did not clarify that tool/run events are separate from chat history");
311
+ }
309
312
  if (latest.stdout.includes("showing=") || latest.stdout.includes("…")) {
310
313
  throw new Error("resume history should render full saved messages instead of compact previews");
311
314
  }
@@ -341,6 +344,7 @@ try {
341
344
  "mock-file-write",
342
345
  "run-status",
343
346
  "resume-latest",
347
+ "resume-history-metadata",
344
348
  "resume-history-full",
345
349
  ],
346
350
  },
@@ -1583,16 +1583,24 @@ async function printResumeHistory(state, { limit = 0 } = {}) {
1583
1583
  if (!state.sessionId) return;
1584
1584
  const store = new SessionStore(projectPaths(process.cwd()).sessionsDir, state.sessionId);
1585
1585
  const saved = await store.loadState().catch(() => null);
1586
+ const events = await store.loadEvents().catch(() => []);
1586
1587
  const chat = Array.isArray(saved?.chat) ? saved.chat.filter((entry) => entry?.content) : [];
1588
+ const metadata = `chat=${chat.length}${events.length > 0 ? ` events=${events.length}` : ""}`;
1587
1589
  if (chat.length === 0) {
1588
- printSystemLine(`resume history session=${state.sessionId} messages=0`);
1590
+ printSystemLine(`resume history session=${state.sessionId} ${metadata}`);
1591
+ if (events.length > 0) {
1592
+ printSystemLine("resume note=showing chat transcript only; model/tool/run events are saved in events.jsonl and artifacts/");
1593
+ }
1589
1594
  return;
1590
1595
  }
1591
1596
 
1592
1597
  const shown = limit > 0 ? chat.slice(-limit) : chat;
1593
1598
  printSystemLine(
1594
- `resume history session=${state.sessionId} messages=${chat.length}${limit > 0 ? ` showing=${shown.length}/${chat.length}` : ""}`
1599
+ `resume history session=${state.sessionId} ${metadata}${limit > 0 ? ` showing=${shown.length}/${chat.length}` : ""}`
1595
1600
  );
1601
+ if (events.length > chat.length) {
1602
+ printSystemLine("resume note=showing chat transcript only; model/tool/run events are saved in events.jsonl and artifacts/");
1603
+ }
1596
1604
  for (const entry of shown) printHistoryEntry(entry);
1597
1605
  }
1598
1606