@elyracode/coding-agent 0.9.18 → 0.9.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.
@@ -53,6 +53,7 @@ import { formatKeyText, keyDisplayText, keyHint, keyText, rawKeyHint } from "./c
53
53
  import { LoginDialogComponent } from "./components/login-dialog.js";
54
54
  import { ModelSelectorComponent } from "./components/model-selector.js";
55
55
  import { OAuthSelectorComponent } from "./components/oauth-selector.js";
56
+ import { PackageBrowserComponent } from "./components/package-browser.js";
56
57
  import { RewindSelectorComponent } from "./components/rewind-selector.js";
57
58
  import { ScopedModelsSelectorComponent } from "./components/scoped-models-selector.js";
58
59
  import { SessionSelectorComponent } from "./components/session-selector.js";
@@ -5501,60 +5502,83 @@ export class InteractiveMode {
5501
5502
  // Command handlers
5502
5503
  // =========================================================================
5503
5504
  handlePackageBrowser() {
5504
- const packages = [
5505
- "@elyracode/stack-tall -- TALL: Livewire 4, Flux UI, Alpine.js, Tailwind",
5506
- "@elyracode/stack-vilt -- VILT: Vue 3, Inertia.js, Laravel, Tailwind",
5507
- "@elyracode/stack-rilt -- RILT: React 19, Inertia.js 2, Laravel, shadcn/ui",
5508
- "@elyracode/stack-primevue -- PrimeVue 4: 80+ UI components for Vue 3",
5509
- "@elyracode/stack-filament -- Filament v5: admin panels, CRUD, tables, forms",
5510
- "@elyracode/stack-laravel-ai -- Laravel AI SDK: agents, sub-agents, embeddings",
5511
- "@elyracode/db-tools -- Database: MySQL, ClickHouse, SQLite, schema discovery",
5512
- "@elyracode/laravel-starters -- Laravel starter kits from GitHub",
5513
- "@elyracode/flux-ui -- Flux UI: component index, Blade converter, page gen",
5514
- "@elyracode/doctor -- Project health: audit, deps, code debt, auto-heal",
5515
- "@elyracode/http-tools -- HTTP: API testing, docs fetching, OpenAPI parsing",
5516
- "@elyracode/design-tools -- Design: browser preview, screenshots, Tailwind QA",
5517
- "@elyracode/subagents -- Subagents: scout, reviewer, planner, worker, oracle",
5518
- "@elyracode/git-intel -- Git: session briefings, commit messages, PR descriptions",
5519
- "@elyracode/test-gen -- Testing: Pest for Laravel, Vitest for TypeScript",
5520
- "@elyracode/perf-tools -- Performance: N+1 queries, slow queries, indexes",
5521
- "@elyracode/i18n-tools -- Localization: hardcoded strings, missing translations",
5522
- "@elyracode/herd -- Laravel Herd: services, logs, PHP version, .env sync",
5523
- "@elyracode/anna -- Presentations: Anna.js slides, terminal demos, diagrams",
5524
- "@elyracode/swarm -- Swarm: automated build, review, and refactor pipelines",
5525
- "@elyracode/docker -- Docker: container exec, logs, compose, env sync",
5526
- "@elyracode/design-lookup -- Design extraction: colors, typography, spacing, components from any URL",
5527
- "@elyracode/lsp-typescript -- TypeScript LSP: go-to-definition, find-references, diagnostics, hover",
5528
- "@elyracode/lsp-php -- PHP LSP: go-to-definition, find-references, diagnostics, hover (Intelephense)",
5529
- "@elyracode/lsp-rust -- Rust LSP: go-to-definition, find-references, diagnostics, hover (rust-analyzer)",
5530
- "@elyracode/stack-silt -- SILT: Svelte 5, Inertia.js, Laravel, Tailwind CSS",
5531
- "@elyracode/seo -- SEO and LLM optimization: audit, structured data, llms.txt, meta tags",
5532
- "@elyracode/workflows -- Code-orchestrated workflows: multi-step pipelines in JSON",
5533
- "@elyracode/laravel -- Deep Laravel understanding: models, routes, architecture analysis",
5534
- "@elyracode/btw -- Side conversations: ask questions in parallel without affecting the main session",
5535
- "@elyracode/youtrack -- YouTrack: issues, comments, tags, links, projects, time tracking",
5536
- "@elyracode/semantic-index -- Semantic code search: find code by meaning via local embeddings",
5505
+ const mk = (name, description) => ({
5506
+ value: `@elyracode/${name}`,
5507
+ name,
5508
+ description,
5509
+ });
5510
+ const items = [
5511
+ mk("stack-tall", "TALL: Livewire 4, Flux UI, Alpine.js, Tailwind"),
5512
+ mk("stack-vilt", "VILT: Vue 3, Inertia.js, Laravel, Tailwind"),
5513
+ mk("stack-rilt", "RILT: React 19, Inertia.js 2, Laravel, shadcn/ui"),
5514
+ mk("stack-silt", "SILT: Svelte 5, Inertia.js, Laravel, Tailwind CSS"),
5515
+ mk("stack-elyra-framework", "Elyra Framework: Rust + Svelte 5 desktop apps"),
5516
+ mk("stack-primevue", "PrimeVue 4: 80+ UI components for Vue 3"),
5517
+ mk("stack-filament", "Filament v5: admin panels, CRUD, tables, forms"),
5518
+ mk("stack-laravel-ai", "Laravel AI SDK: agents, sub-agents, embeddings"),
5519
+ mk("lsp-typescript", "TypeScript LSP: go-to-definition, find-references, diagnostics, hover"),
5520
+ mk("lsp-php", "PHP LSP: go-to-definition, find-references, diagnostics, hover (Intelephense)"),
5521
+ mk("lsp-rust", "Rust LSP: go-to-definition, find-references, diagnostics, hover (rust-analyzer)"),
5522
+ mk("db-tools", "Database: MySQL, ClickHouse, SQLite, schema discovery"),
5523
+ mk("laravel", "Deep Laravel understanding: models, routes, architecture analysis"),
5524
+ mk("laravel-starters", "Laravel starter kits from GitHub"),
5525
+ mk("flux-ui", "Flux UI: component index, Blade converter, page gen"),
5526
+ mk("doctor", "Project health: audit, deps, code debt, auto-heal"),
5527
+ mk("http-tools", "HTTP: API testing, docs fetching, OpenAPI parsing"),
5528
+ mk("design-tools", "Design: browser preview, screenshots, Tailwind QA"),
5529
+ mk("design-lookup", "Design extraction: colors, typography, spacing, components from any URL"),
5530
+ mk("subagents", "Subagents: scout, reviewer, planner, worker, oracle"),
5531
+ mk("git-intel", "Git: session briefings, commit messages, PR descriptions"),
5532
+ mk("test-gen", "Testing: Pest for Laravel, Vitest for TypeScript"),
5533
+ mk("perf-tools", "Performance: N+1 queries, slow queries, indexes"),
5534
+ mk("i18n-tools", "Localization: hardcoded strings, missing translations"),
5535
+ mk("herd", "Laravel Herd: services, logs, PHP version, .env sync"),
5536
+ mk("anna", "Presentations: Anna.js slides, terminal demos, diagrams"),
5537
+ mk("swarm", "Swarm: automated build, review, and refactor pipelines"),
5538
+ mk("docker", "Docker: container exec, logs, compose, env sync"),
5539
+ mk("seo", "SEO and LLM optimization: audit, structured data, llms.txt, meta tags"),
5540
+ mk("workflows", "Code-orchestrated workflows: multi-step pipelines in JSON"),
5541
+ mk("btw", "Side conversations: ask questions in parallel without affecting the main session"),
5542
+ mk("youtrack", "YouTrack: issues, comments, tags, links, projects, time tracking"),
5543
+ mk("semantic-index", "Semantic code search: find code by meaning via local embeddings"),
5537
5544
  ];
5538
5545
  this.showSelector((done) => {
5539
- const selector = new ExtensionSelectorComponent("Install Extension", packages, (selected) => {
5546
+ const browser = new PackageBrowserComponent(items, (values) => {
5540
5547
  done();
5541
- const pkgName = selected.split(" -- ")[0];
5542
- this.showStatus(`Installing ${pkgName}...`);
5543
- try {
5544
- spawnSync("elyra", ["install", `npm:${pkgName}`], {
5545
- cwd: process.cwd(),
5546
- timeout: 60000,
5547
- stdio: "pipe",
5548
- });
5549
- this.showStatus(`Installed ${pkgName}. Run /reload to activate.`);
5550
- }
5551
- catch {
5552
- this.showError(`Failed to install ${pkgName}`);
5553
- }
5548
+ this.installPackages(values);
5554
5549
  }, () => done());
5555
- return { component: selector, focus: selector };
5550
+ return { component: browser, focus: browser };
5556
5551
  });
5557
5552
  }
5553
+ installPackages(values) {
5554
+ const installed = [];
5555
+ const failed = [];
5556
+ for (const pkgName of values) {
5557
+ this.showStatus(`Installing ${pkgName}...`);
5558
+ try {
5559
+ const result = spawnSync("elyra", ["install", `npm:${pkgName}`], {
5560
+ cwd: process.cwd(),
5561
+ timeout: 60000,
5562
+ stdio: "pipe",
5563
+ });
5564
+ if (result.status === 0) {
5565
+ installed.push(pkgName);
5566
+ }
5567
+ else {
5568
+ failed.push(pkgName);
5569
+ }
5570
+ }
5571
+ catch {
5572
+ failed.push(pkgName);
5573
+ }
5574
+ }
5575
+ if (installed.length > 0) {
5576
+ this.showStatus(`Installed ${installed.join(", ")}. Run /reload to activate.`);
5577
+ }
5578
+ if (failed.length > 0) {
5579
+ this.showError(`Failed to install ${failed.join(", ")}`);
5580
+ }
5581
+ }
5558
5582
  async handleReloadCommand() {
5559
5583
  if (this.session.isStreaming) {
5560
5584
  this.showWarning("Wait for the current response to finish before reloading.");