aidevops 3.32.256 → 3.32.259
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/README.md +1 -1
- package/VERSION +1 -1
- package/aidevops.sh +1 -1
- package/bun.lock +2 -1
- package/package.json +2 -1
- package/packages/gui-web/src/AppNavigation.tsx +40 -17
- package/setup.sh +1 -1
package/README.md
CHANGED
|
@@ -60,7 +60,7 @@ The result: an AI operations platform that manages projects across every busines
|
|
|
60
60
|
[](https://github.com/marcusquinn)
|
|
61
61
|
|
|
62
62
|
<!-- Release & Version Info -->
|
|
63
|
-
[](https://github.com/marcusquinn/aidevops/releases)
|
|
64
64
|
[](https://www.npmjs.com/package/aidevops)
|
|
65
65
|
[](https://github.com/marcusquinn/homebrew-tap)
|
|
66
66
|
[](https://github.com/marcusquinn/aidevops)
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.32.
|
|
1
|
+
3.32.259
|
package/aidevops.sh
CHANGED
package/bun.lock
CHANGED
|
@@ -70,6 +70,7 @@
|
|
|
70
70
|
"esbuild": "0.28.1",
|
|
71
71
|
"fast-uri": "3.1.5",
|
|
72
72
|
"js-yaml": "4.3.1",
|
|
73
|
+
"nanoid": "3.3.18",
|
|
73
74
|
"postcss": "8.5.23",
|
|
74
75
|
},
|
|
75
76
|
"packages": {
|
|
@@ -427,7 +428,7 @@
|
|
|
427
428
|
|
|
428
429
|
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
|
|
429
430
|
|
|
430
|
-
"nanoid": ["nanoid@3.3.
|
|
431
|
+
"nanoid": ["nanoid@3.3.18", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w=="],
|
|
431
432
|
|
|
432
433
|
"node-releases": ["node-releases@2.0.48", "", {}, "sha512-1uz8041X6LoI6ZSdZacM9lVY28vuzDlSKitnpbSNK0RfKoIJkX29NBPVEFXhnuSuEOA9Ww0xnPJ+ILWbGAv8DA=="],
|
|
433
434
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aidevops",
|
|
3
|
-
"version": "3.32.
|
|
3
|
+
"version": "3.32.259",
|
|
4
4
|
"description": "AI DevOps Framework - AI-assisted development workflows, code quality, and deployment automation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "bun@1.3.11",
|
|
@@ -81,6 +81,7 @@
|
|
|
81
81
|
"esbuild": "0.28.1",
|
|
82
82
|
"fast-uri": "3.1.5",
|
|
83
83
|
"js-yaml": "4.3.1",
|
|
84
|
+
"nanoid": "3.3.18",
|
|
84
85
|
"postcss": "8.5.23"
|
|
85
86
|
},
|
|
86
87
|
"peerDependencies": {
|
|
@@ -211,6 +211,44 @@ function IconSwitch<TValue extends string>({ ariaLabel, options, value }: {
|
|
|
211
211
|
);
|
|
212
212
|
}
|
|
213
213
|
|
|
214
|
+
function LocalRepoSelector({ repos, selectedLocalRepoIndex, selectRepoByIndex, setSelectedLocalRepoIndex, setSelectedSessionId }: {
|
|
215
|
+
repos: GuiStatusData["local_repos"]["repos"];
|
|
216
|
+
selectedLocalRepoIndex: number;
|
|
217
|
+
selectRepoByIndex: (index: number) => void;
|
|
218
|
+
setSelectedLocalRepoIndex: (index: number) => void;
|
|
219
|
+
setSelectedSessionId: (id: string | undefined) => void;
|
|
220
|
+
}) {
|
|
221
|
+
return (
|
|
222
|
+
<section className="repo-session-selector" aria-label={text.localRepoSelector}>
|
|
223
|
+
<span className="repo-selector-heading" id="local-repo-selector-label">{text.localRepos}</span>
|
|
224
|
+
<div className="selector-with-stepper repo-selector-row">
|
|
225
|
+
<button aria-label="Previous local repo" className="selector-step-button" disabled={repos.length === 0} onClick={() => selectRepoByIndex(wrappedOptionIndex(selectedLocalRepoIndex, repos.length, -1))} type="button"><FiChevronLeft aria-hidden="true" /></button>
|
|
226
|
+
<select aria-labelledby="local-repo-selector-label" onChange={(event) => { setSelectedLocalRepoIndex(Number.parseInt(event.currentTarget.value, 10)); setSelectedSessionId(undefined); }} value={Math.min(selectedLocalRepoIndex, Math.max(0, repos.length - 1))}>
|
|
227
|
+
{repos.length === 0 ? <option value={0}>No local repos</option> : repos.map((repo, index) => <option key={repo.path_ref} value={index}>{repo.name}</option>)}
|
|
228
|
+
</select>
|
|
229
|
+
<button aria-label="Next local repo" className="selector-step-button" disabled={repos.length === 0} onClick={() => selectRepoByIndex(wrappedOptionIndex(selectedLocalRepoIndex, repos.length, 1))} type="button"><FiChevronRight aria-hidden="true" /></button>
|
|
230
|
+
</div>
|
|
231
|
+
</section>
|
|
232
|
+
);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
function SessionHistoryList({ activeSessionId, selectedRepo, sessions, setSelectedSessionId }: {
|
|
236
|
+
activeSessionId: string | undefined;
|
|
237
|
+
selectedRepo: GuiStatusData["local_repos"]["repos"][number] | undefined;
|
|
238
|
+
sessions: GuiStatusData["opencode_sessions"]["sessions"];
|
|
239
|
+
setSelectedSessionId: (id: string | undefined) => void;
|
|
240
|
+
}) {
|
|
241
|
+
return (
|
|
242
|
+
<section className="sidebar-group session-history-list">
|
|
243
|
+
{selectedRepo ? <ul>
|
|
244
|
+
{sessions.length === 0
|
|
245
|
+
? <li><button className="surface-link active" type="button"><span className="surface-icon" aria-hidden="true"><FiHash /></span><span className="surface-copy"><strong>{selectedRepo.name}</strong><small>No OpenCode sessions found for this repo yet.</small></span><em>{text.planned}</em></button></li>
|
|
246
|
+
: sessions.map((session) => <li key={session.id_ref}><button className={activeSessionId === session.id_ref ? "surface-link active" : "surface-link"} onClick={() => setSelectedSessionId(session.id_ref)} type="button"><span className="surface-icon" aria-hidden="true"><FiHash /></span><span className="surface-copy"><strong>{session.title}</strong><small>{session.updated_at}</small></span></button></li>)}
|
|
247
|
+
</ul> : <p className="empty-sidebar-state">No local repos discovered.</p>}
|
|
248
|
+
</section>
|
|
249
|
+
);
|
|
250
|
+
}
|
|
251
|
+
|
|
214
252
|
function ConversationSidebar({ conversationMode, selectedLocalRepoIndex, selectedSessionId, setConversationMode, setSelectedLocalRepoIndex, setSelectedSessionId, status }: {
|
|
215
253
|
conversationMode: ConversationMode;
|
|
216
254
|
selectedLocalRepoIndex: number;
|
|
@@ -245,23 +283,8 @@ function ConversationSidebar({ conversationMode, selectedLocalRepoIndex, selecte
|
|
|
245
283
|
<SidebarModeTabs mode={conversationMode} setMode={setConversationMode} />
|
|
246
284
|
{conversationMode === "people" ? <PeopleChannelList /> : <>
|
|
247
285
|
<button className="new-session-button" disabled title="Creating sessions needs an audited OpenCode write route." type="button">{text.newSession}</button>
|
|
248
|
-
<
|
|
249
|
-
|
|
250
|
-
<div className="selector-with-stepper repo-selector-row">
|
|
251
|
-
<button aria-label="Previous local repo" className="selector-step-button" disabled={repos.length === 0} onClick={() => selectRepoByIndex(wrappedOptionIndex(selectedLocalRepoIndex, repos.length, -1))} type="button"><FiChevronLeft aria-hidden="true" /></button>
|
|
252
|
-
<select aria-labelledby="local-repo-selector-label" onChange={(event) => { setSelectedLocalRepoIndex(Number.parseInt(event.currentTarget.value, 10)); setSelectedSessionId(undefined); }} value={Math.min(selectedLocalRepoIndex, Math.max(0, repos.length - 1))}>
|
|
253
|
-
{repos.length === 0 ? <option value={0}>No local repos</option> : repos.map((repo, index) => <option key={repo.path_ref} value={index}>{repo.name}</option>)}
|
|
254
|
-
</select>
|
|
255
|
-
<button aria-label="Next local repo" className="selector-step-button" disabled={repos.length === 0} onClick={() => selectRepoByIndex(wrappedOptionIndex(selectedLocalRepoIndex, repos.length, 1))} type="button"><FiChevronRight aria-hidden="true" /></button>
|
|
256
|
-
</div>
|
|
257
|
-
</section>
|
|
258
|
-
<section className="sidebar-group session-history-list">
|
|
259
|
-
{selectedRepo ? <ul>
|
|
260
|
-
{sessions.length === 0
|
|
261
|
-
? <li><button className="surface-link active" type="button"><span className="surface-icon" aria-hidden="true"><FiHash /></span><span className="surface-copy"><strong>{selectedRepo.name}</strong><small>No OpenCode sessions found for this repo yet.</small></span><em>{text.planned}</em></button></li>
|
|
262
|
-
: sessions.map((session) => <li key={session.id_ref}><button className={activeSessionId === session.id_ref ? "surface-link active" : "surface-link"} onClick={() => setSelectedSessionId(session.id_ref)} type="button"><span className="surface-icon" aria-hidden="true"><FiHash /></span><span className="surface-copy"><strong>{session.title}</strong><small>{session.updated_at}</small></span></button></li>)}
|
|
263
|
-
</ul> : <p className="empty-sidebar-state">No local repos discovered.</p>}
|
|
264
|
-
</section>
|
|
286
|
+
<LocalRepoSelector repos={repos} selectedLocalRepoIndex={selectedLocalRepoIndex} selectRepoByIndex={selectRepoByIndex} setSelectedLocalRepoIndex={setSelectedLocalRepoIndex} setSelectedSessionId={setSelectedSessionId} />
|
|
287
|
+
<SessionHistoryList activeSessionId={activeSessionId} selectedRepo={selectedRepo} sessions={sessions} setSelectedSessionId={setSelectedSessionId} />
|
|
265
288
|
</>}
|
|
266
289
|
</section>
|
|
267
290
|
);
|
package/setup.sh
CHANGED
|
@@ -17,7 +17,7 @@ fi
|
|
|
17
17
|
# AI Assistant Server Access Framework Setup Script
|
|
18
18
|
# Helps developers set up the framework for their infrastructure
|
|
19
19
|
#
|
|
20
|
-
# Version: 3.32.
|
|
20
|
+
# Version: 3.32.259
|
|
21
21
|
#
|
|
22
22
|
# Quick Install:
|
|
23
23
|
# npm install -g aidevops && aidevops update (recommended)
|