@mrpatronz/nexusflow 2.2.1 → 2.3.0
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 +80 -17
- package/dist/commands/ui.d.ts +1 -0
- package/dist/commands/ui.d.ts.map +1 -1
- package/dist/commands/ui.js +24 -13
- package/dist/commands/ui.js.map +1 -1
- package/dist/commands/ui.test.d.ts +2 -0
- package/dist/commands/ui.test.d.ts.map +1 -0
- package/dist/commands/ui.test.js +58 -0
- package/dist/commands/ui.test.js.map +1 -0
- package/dist/core/workspace-skills-workflow.integration.test.d.ts +2 -0
- package/dist/core/workspace-skills-workflow.integration.test.d.ts.map +1 -0
- package/dist/core/workspace-skills-workflow.integration.test.js +162 -0
- package/dist/core/workspace-skills-workflow.integration.test.js.map +1 -0
- package/dist/core/worktree.test.js +1 -1
- package/dist/core/worktree.test.js.map +1 -1
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +4 -8
- package/dist/generators/index.js.map +1 -1
- package/dist/generators/skills-generator.d.ts +2 -2
- package/dist/generators/skills-generator.d.ts.map +1 -1
- package/dist/generators/skills-generator.js +84 -89
- package/dist/generators/skills-generator.js.map +1 -1
- package/dist/generators/skills-generator.test.d.ts +2 -0
- package/dist/generators/skills-generator.test.d.ts.map +1 -0
- package/dist/generators/skills-generator.test.js +79 -0
- package/dist/generators/skills-generator.test.js.map +1 -0
- package/dist/gui/assets/AgentsPage-BtrTgIyU.js +3 -0
- package/dist/gui/assets/{DashboardPage-CUspfCap.js → DashboardPage-CeUkMdxc.js} +1 -1
- package/dist/gui/assets/{GettingStartedPage-BqtgARZW.js → GettingStartedPage-YwJXpsc6.js} +1 -1
- package/dist/gui/assets/ProjectsPage-D8kEHb-m.js +1 -0
- package/dist/gui/assets/ScaffoldRepoInline-ij7JLzmx.js +1 -0
- package/dist/gui/assets/SettingsPage-BQhAP4go.js +1 -0
- package/dist/gui/assets/SkillsPage-DJ-dXfcC.js +6 -0
- package/dist/gui/assets/StartWorkPage-DGWZzF4H.js +1 -0
- package/dist/gui/assets/{StrategiesPage-D0Y6A4Tw.js → StrategiesPage-CLOjDRbX.js} +2 -2
- package/dist/gui/assets/WorkspaceLauncher-CjNI4vqn.js +1 -0
- package/dist/gui/assets/WorkspacesPage-MDzm2JUh.js +6 -0
- package/dist/gui/assets/alert-dialog-DjwFcE6b.js +1 -0
- package/dist/gui/assets/bot-wH0FKlic.js +1 -0
- package/dist/gui/assets/chevron-down-DDmhvRLr.js +1 -0
- package/dist/gui/assets/code-xml-Chu1p81J.js +1 -0
- package/dist/gui/assets/index-CfQEnn52.js +52 -0
- package/dist/gui/assets/index-k7inKaui.css +2 -0
- package/dist/gui/assets/{spinner-DXt6mnJk.js → spinner-BCEaGbib.js} +1 -1
- package/dist/gui/assets/terminal-gK6BMl3E.js +1 -0
- package/dist/gui/assets/{textarea-BLU5HXmZ.js → textarea-D3-elOAa.js} +1 -1
- package/dist/gui/assets/{useAriaLabelledBy-CjNlctb9.js → useAriaLabelledBy-DmwmZIqb.js} +1 -1
- package/dist/gui/assets/useCompositeListItem-CZnlZ-eF.js +1 -0
- package/dist/gui/assets/useValueChanged-BfI2s7NX.js +1 -0
- package/dist/gui/assets/zap-FQrDnrgb.js +1 -0
- package/dist/gui/index.html +6 -4
- package/dist/resources/agents-catalog.d.ts +7 -0
- package/dist/resources/agents-catalog.d.ts.map +1 -0
- package/dist/resources/agents-catalog.js +141 -0
- package/dist/resources/agents-catalog.js.map +1 -0
- package/dist/resources/agents-catalog.test.d.ts +2 -0
- package/dist/resources/agents-catalog.test.d.ts.map +1 -0
- package/dist/resources/agents-catalog.test.js +50 -0
- package/dist/resources/agents-catalog.test.js.map +1 -0
- package/dist/resources/codex-agent.d.ts +6 -0
- package/dist/resources/codex-agent.d.ts.map +1 -0
- package/dist/resources/codex-agent.js +55 -0
- package/dist/resources/codex-agent.js.map +1 -0
- package/dist/resources/codex-agent.test.d.ts +2 -0
- package/dist/resources/codex-agent.test.d.ts.map +1 -0
- package/dist/resources/codex-agent.test.js +27 -0
- package/dist/resources/codex-agent.test.js.map +1 -0
- package/dist/resources/contracts.d.ts +116 -0
- package/dist/resources/contracts.d.ts.map +1 -0
- package/dist/resources/contracts.js +103 -0
- package/dist/resources/contracts.js.map +1 -0
- package/dist/resources/fs-safety.d.ts +11 -0
- package/dist/resources/fs-safety.d.ts.map +1 -0
- package/dist/resources/fs-safety.js +77 -0
- package/dist/resources/fs-safety.js.map +1 -0
- package/dist/resources/materializer.d.ts +17 -0
- package/dist/resources/materializer.d.ts.map +1 -0
- package/dist/resources/materializer.js +439 -0
- package/dist/resources/materializer.js.map +1 -0
- package/dist/resources/materializer.test.d.ts +2 -0
- package/dist/resources/materializer.test.d.ts.map +1 -0
- package/dist/resources/materializer.test.js +149 -0
- package/dist/resources/materializer.test.js.map +1 -0
- package/dist/resources/service.d.ts +8 -0
- package/dist/resources/service.d.ts.map +1 -0
- package/dist/resources/service.js +45 -0
- package/dist/resources/service.js.map +1 -0
- package/dist/resources/service.test.d.ts +2 -0
- package/dist/resources/service.test.d.ts.map +1 -0
- package/dist/resources/service.test.js +58 -0
- package/dist/resources/service.test.js.map +1 -0
- package/dist/server.d.ts +5 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +310 -4
- package/dist/server.js.map +1 -1
- package/dist/server.test.js +349 -1
- package/dist/server.test.js.map +1 -1
- package/dist/types.d.ts +107 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/resources.d.ts +2 -1
- package/dist/utils/resources.d.ts.map +1 -1
- package/dist/utils/resources.js +4 -3
- package/dist/utils/resources.js.map +1 -1
- package/dist/utils/session-finder.d.ts +6 -0
- package/dist/utils/session-finder.d.ts.map +1 -1
- package/dist/utils/session-finder.js +56 -0
- package/dist/utils/session-finder.js.map +1 -1
- package/dist/utils/session-finder.test.js +34 -1
- package/dist/utils/session-finder.test.js.map +1 -1
- package/dist/utils/skills-catalog.d.ts +77 -0
- package/dist/utils/skills-catalog.d.ts.map +1 -0
- package/dist/utils/skills-catalog.js +871 -0
- package/dist/utils/skills-catalog.js.map +1 -0
- package/dist/utils/skills-catalog.test.d.ts +2 -0
- package/dist/utils/skills-catalog.test.d.ts.map +1 -0
- package/dist/utils/skills-catalog.test.js +281 -0
- package/dist/utils/skills-catalog.test.js.map +1 -0
- package/package.json +4 -1
- package/dist/gui/assets/ProjectsPage-UBoQxI2G.js +0 -1
- package/dist/gui/assets/ScaffoldRepoInline-DqoourJe.js +0 -1
- package/dist/gui/assets/SettingsPage-BZl24tqD.js +0 -1
- package/dist/gui/assets/StartWorkPage-BGNFdBfj.js +0 -1
- package/dist/gui/assets/WorkspaceLauncher-Cxv0O_wt.js +0 -1
- package/dist/gui/assets/WorkspacesPage-Cvb1rOeh.js +0 -6
- package/dist/gui/assets/index-CllPiiFL.js +0 -52
- package/dist/gui/assets/index-DGCBhMAn.css +0 -2
- package/dist/gui/assets/useCompositeListItem-DWGFLKqA.js +0 -1
- /package/dist/{resources → static-resources}/workflows/plan-implement-review.md +0 -0
- /package/dist/{resources → static-resources}/workflows/research-verify.md +0 -0
- /package/dist/{resources → static-resources}/workflows/solo-developer.md +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-catalog.js","sourceRoot":"","sources":["../../src/utils/skills-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-catalog.test.d.ts","sourceRoot":"","sources":["../../src/utils/skills-catalog.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import * as fs from 'node:fs/promises';
|
|
3
|
+
import * as path from 'node:path';
|
|
4
|
+
import * as os from 'node:os';
|
|
5
|
+
import fse from 'fs-extra';
|
|
6
|
+
import { parseSkillMarkdown, serializeSkillMarkdown, getSkillCategories, saveSkillCategory, deleteSkillCategory, getAllSkills, saveSkill, deleteSkill, getWorkspaceSkillsConfig, saveWorkspaceSkillsConfig, DEFAULT_CATEGORIES, DEFAULT_SKILLS, } from './skills-catalog.js';
|
|
7
|
+
describe('Skills Catalog & Frontmatter Utils', () => {
|
|
8
|
+
let tempHome;
|
|
9
|
+
const originalEnv = process.env.NEXUSFLOW_HOME;
|
|
10
|
+
beforeEach(async () => {
|
|
11
|
+
tempHome = await fs.mkdtemp(path.join(os.tmpdir(), 'nexusflow-skills-test-home-'));
|
|
12
|
+
process.env.NEXUSFLOW_HOME = tempHome;
|
|
13
|
+
});
|
|
14
|
+
afterEach(async () => {
|
|
15
|
+
if (originalEnv !== undefined) {
|
|
16
|
+
process.env.NEXUSFLOW_HOME = originalEnv;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
delete process.env.NEXUSFLOW_HOME;
|
|
20
|
+
}
|
|
21
|
+
await fse.remove(tempHome);
|
|
22
|
+
});
|
|
23
|
+
describe('parseSkillMarkdown & serializeSkillMarkdown', () => {
|
|
24
|
+
it('should parse simple frontmatter, CRLF line endings, and markdown body', () => {
|
|
25
|
+
const raw = `---\r\nname: test-skill\r\ntitle: Test Skill\r\ncategory: pull-requests\r\ndescription: "A test skill for testing."\r\ntags:\r\n - git\r\n - test\r\nallowed-tools:\r\n - run_command\r\n - view_file\r\n---\r\n\r\n# Test Playbook\r\n\r\nSome instructions here.`;
|
|
26
|
+
const { metadata, content } = parseSkillMarkdown(raw);
|
|
27
|
+
expect(metadata.name).toBe('test-skill');
|
|
28
|
+
expect(metadata.title).toBe('Test Skill');
|
|
29
|
+
expect(metadata.category).toBe('pull-requests');
|
|
30
|
+
expect(metadata.description).toBe('A test skill for testing.');
|
|
31
|
+
expect(metadata.tags).toEqual(['git', 'test']);
|
|
32
|
+
expect(metadata['allowed-tools']).toEqual(['run_command', 'view_file']);
|
|
33
|
+
expect(content).toContain('# Test Playbook');
|
|
34
|
+
expect(content).toContain('Some instructions here.');
|
|
35
|
+
});
|
|
36
|
+
it('should serialize metadata with objects/parameters and markdown body into valid frontmatter markdown', () => {
|
|
37
|
+
const metadata = {
|
|
38
|
+
name: 'custom-skill',
|
|
39
|
+
title: 'Custom Skill',
|
|
40
|
+
category: 'custom-category',
|
|
41
|
+
description: 'Testing multiline\ndescription with "quotes"',
|
|
42
|
+
tags: ['alpha', 'beta'],
|
|
43
|
+
parameters: [
|
|
44
|
+
{ name: 'target_env', type: 'string', default: 'staging' },
|
|
45
|
+
],
|
|
46
|
+
};
|
|
47
|
+
const content = '# Custom Playbook\n\nSteps to follow.';
|
|
48
|
+
const output = serializeSkillMarkdown(metadata, content);
|
|
49
|
+
expect(output).toContain('name: custom-skill');
|
|
50
|
+
expect(output).toContain('title: Custom Skill');
|
|
51
|
+
expect(output).toContain('category: custom-category');
|
|
52
|
+
expect(output).toContain('# Custom Playbook');
|
|
53
|
+
// Roundtrip verification
|
|
54
|
+
const parsed = parseSkillMarkdown(output);
|
|
55
|
+
expect(parsed.metadata.name).toBe('custom-skill');
|
|
56
|
+
expect(parsed.metadata.title).toBe('Custom Skill');
|
|
57
|
+
expect(parsed.metadata.category).toBe('custom-category');
|
|
58
|
+
expect(parsed.metadata.tags).toEqual(['alpha', 'beta']);
|
|
59
|
+
expect(parsed.metadata.parameters).toEqual([
|
|
60
|
+
{ name: 'target_env', type: 'string', default: 'staging' },
|
|
61
|
+
]);
|
|
62
|
+
expect(parsed.content).toContain('# Custom Playbook');
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
describe('Categories Management', () => {
|
|
66
|
+
it('should return default template categories when no custom categories exist', async () => {
|
|
67
|
+
const categories = await getSkillCategories();
|
|
68
|
+
expect(categories.length).toBe(DEFAULT_CATEGORIES.length);
|
|
69
|
+
const prCat = categories.find((c) => c.id === 'pull-requests');
|
|
70
|
+
expect(prCat).toBeDefined();
|
|
71
|
+
expect(prCat?.name).toBe('Pull Requests & Review');
|
|
72
|
+
expect(prCat?.isTemplate).toBe(true);
|
|
73
|
+
});
|
|
74
|
+
it('should create, save, and delete a new user custom category', async () => {
|
|
75
|
+
const newCat = await saveSkillCategory({
|
|
76
|
+
name: 'DevOps & Cloud',
|
|
77
|
+
description: 'Kubernetes, Terraform, and Docker workflows',
|
|
78
|
+
icon: 'zap',
|
|
79
|
+
color: '#10b981',
|
|
80
|
+
});
|
|
81
|
+
expect(newCat.id).toBe('devops-cloud');
|
|
82
|
+
expect(newCat.name).toBe('DevOps & Cloud');
|
|
83
|
+
expect(newCat.custom).toBe(true);
|
|
84
|
+
const all = await getSkillCategories();
|
|
85
|
+
const found = all.find((c) => c.id === 'devops-cloud');
|
|
86
|
+
expect(found).toBeDefined();
|
|
87
|
+
expect(found?.description).toBe('Kubernetes, Terraform, and Docker workflows');
|
|
88
|
+
// Clean up
|
|
89
|
+
await deleteSkillCategory('devops-cloud');
|
|
90
|
+
const afterDelete = await getSkillCategories();
|
|
91
|
+
expect(afterDelete.find((c) => c.id === 'devops-cloud')).toBeUndefined();
|
|
92
|
+
});
|
|
93
|
+
it('should allow customizing a template category and deleting the override to reset to defaults', async () => {
|
|
94
|
+
// 1. Customize a template category
|
|
95
|
+
const overridden = await saveSkillCategory({
|
|
96
|
+
id: 'pull-requests',
|
|
97
|
+
name: 'Customized PR Workflow',
|
|
98
|
+
description: 'Company-specific PR flow',
|
|
99
|
+
});
|
|
100
|
+
expect(overridden.name).toBe('Customized PR Workflow');
|
|
101
|
+
let current = await getSkillCategories();
|
|
102
|
+
expect(current.find((c) => c.id === 'pull-requests')?.name).toBe('Customized PR Workflow');
|
|
103
|
+
// 2. Delete override (resets back to default built-in template)
|
|
104
|
+
await deleteSkillCategory('pull-requests');
|
|
105
|
+
current = await getSkillCategories();
|
|
106
|
+
expect(current.find((c) => c.id === 'pull-requests')?.name).toBe('Pull Requests & Review');
|
|
107
|
+
});
|
|
108
|
+
it('should reject deleting un-customized built-in template categories', async () => {
|
|
109
|
+
await expect(deleteSkillCategory('database-migrations')).rejects.toThrow(/Cannot delete built-in/i);
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
describe('Skills Management', () => {
|
|
113
|
+
it('should list all default built-in template skills', async () => {
|
|
114
|
+
const skills = await getAllSkills();
|
|
115
|
+
expect(skills.length).toBe(DEFAULT_SKILLS.length);
|
|
116
|
+
const prSkill = skills.find((s) => s.id === 'pr-review-toolkit');
|
|
117
|
+
expect(prSkill).toBeDefined();
|
|
118
|
+
expect(prSkill?.category).toBe('pull-requests');
|
|
119
|
+
expect(prSkill?.allowedTools).toContain('run_command');
|
|
120
|
+
});
|
|
121
|
+
it('should save and delete a custom skill package with references and scripts', async () => {
|
|
122
|
+
const customSkill = await saveSkill({
|
|
123
|
+
name: 'unit-test-generator',
|
|
124
|
+
title: 'Unit Test Generator',
|
|
125
|
+
category: 'testing-qa',
|
|
126
|
+
description: 'Auto-generates unit tests with mocks',
|
|
127
|
+
tags: ['test', 'generator'],
|
|
128
|
+
content: '# Unit Test Generator\n\nGenerate tests with Vitest.',
|
|
129
|
+
references: [{ name: 'checklist.md', relativePath: 'references/checklist.md', content: '# Checklist' }],
|
|
130
|
+
scripts: [{ name: 'gen.sh', relativePath: 'scripts/gen.sh', content: '#!/bin/bash\necho "generating"' }],
|
|
131
|
+
});
|
|
132
|
+
expect(customSkill.id).toBe('unit-test-generator');
|
|
133
|
+
expect(customSkill.custom).toBe(true);
|
|
134
|
+
const all = await getAllSkills();
|
|
135
|
+
const found = all.find((s) => s.id === 'unit-test-generator');
|
|
136
|
+
expect(found).toBeDefined();
|
|
137
|
+
expect(found?.title).toBe('Unit Test Generator');
|
|
138
|
+
expect(found?.references?.length).toBe(1);
|
|
139
|
+
expect(found?.scripts?.length).toBe(1);
|
|
140
|
+
// Clean up
|
|
141
|
+
await deleteSkill('unit-test-generator');
|
|
142
|
+
const afterDelete = await getAllSkills();
|
|
143
|
+
expect(afterDelete.find((s) => s.id === 'unit-test-generator')).toBeUndefined();
|
|
144
|
+
});
|
|
145
|
+
it('should reject path traversal in skill ID and references', async () => {
|
|
146
|
+
await expect(saveSkill({
|
|
147
|
+
name: '../../evil-skill',
|
|
148
|
+
content: 'evil',
|
|
149
|
+
})).rejects.toThrow();
|
|
150
|
+
await expect(deleteSkill('../../evil-skill')).rejects.toThrow();
|
|
151
|
+
});
|
|
152
|
+
it('rejects personal packages that would shadow a built-in skill', async () => {
|
|
153
|
+
await expect(saveSkill({
|
|
154
|
+
name: 'pr-review-toolkit',
|
|
155
|
+
description: 'Attempted override.',
|
|
156
|
+
content: '# Override',
|
|
157
|
+
})).rejects.toThrow(/built-in skills cannot be overwritten/i);
|
|
158
|
+
expect(await fse.pathExists(path.join(tempHome, 'skills', 'pr-review-toolkit'))).toBe(false);
|
|
159
|
+
});
|
|
160
|
+
it('rejects mismatched skill identities', async () => {
|
|
161
|
+
await expect(saveSkill({
|
|
162
|
+
id: 'stable-id',
|
|
163
|
+
name: 'different-name',
|
|
164
|
+
description: 'Mismatched identity.',
|
|
165
|
+
content: '# Mismatch',
|
|
166
|
+
})).rejects.toThrow(/id and name must match/i);
|
|
167
|
+
expect(await fse.pathExists(path.join(tempHome, 'skills', 'stable-id'))).toBe(false);
|
|
168
|
+
});
|
|
169
|
+
it('rejects persisted metadata identities that do not match their directory', async () => {
|
|
170
|
+
const skillDir = path.join(tempHome, 'skills', 'safe-directory');
|
|
171
|
+
await fse.ensureDir(skillDir);
|
|
172
|
+
await fs.writeFile(path.join(skillDir, 'SKILL.md'), '---\nname: ../../outside\ndescription: malicious\n---\n\nDo something.\n', 'utf-8');
|
|
173
|
+
const skills = await getAllSkills();
|
|
174
|
+
expect(skills.some((skill) => skill.sourcePath === skillDir)).toBe(false);
|
|
175
|
+
expect(await fse.pathExists(path.join(tempHome, 'outside'))).toBe(false);
|
|
176
|
+
});
|
|
177
|
+
it('preserves support folders on metadata edits and removes them only when explicitly cleared', async () => {
|
|
178
|
+
await saveSkill({
|
|
179
|
+
name: 'snapshot-skill',
|
|
180
|
+
description: 'Initial snapshot.',
|
|
181
|
+
content: '# Initial',
|
|
182
|
+
scripts: [{ name: 'old.sh', relativePath: 'scripts/old.sh', content: 'echo old' }],
|
|
183
|
+
});
|
|
184
|
+
await saveSkill({
|
|
185
|
+
name: 'snapshot-skill',
|
|
186
|
+
description: 'Updated snapshot.',
|
|
187
|
+
content: '# Updated',
|
|
188
|
+
});
|
|
189
|
+
expect(await fs.readFile(path.join(tempHome, 'skills', 'snapshot-skill', 'scripts', 'old.sh'), 'utf-8')).toBe('echo old');
|
|
190
|
+
await saveSkill({
|
|
191
|
+
name: 'snapshot-skill',
|
|
192
|
+
description: 'Updated snapshot.',
|
|
193
|
+
content: '# Updated',
|
|
194
|
+
scripts: [],
|
|
195
|
+
});
|
|
196
|
+
expect(await fse.pathExists(path.join(tempHome, 'skills', 'snapshot-skill', 'scripts', 'old.sh'))).toBe(false);
|
|
197
|
+
});
|
|
198
|
+
it('preserves portable frontmatter owned by other tools during edits', async () => {
|
|
199
|
+
const skillDir = path.join(tempHome, 'skills', 'portable-metadata');
|
|
200
|
+
await fse.ensureDir(skillDir);
|
|
201
|
+
await fs.writeFile(path.join(skillDir, 'SKILL.md'), '---\nname: portable-metadata\ndescription: Original trigger.\nlicense: Apache-2.0\ncompatibility: Requires git.\nmetadata:\n owner: platform-team\n nexusflow:\n custom-field: keep\n---\n\n# Original\n', 'utf-8');
|
|
202
|
+
const existing = (await getAllSkills()).find((item) => item.id === 'portable-metadata');
|
|
203
|
+
expect(existing).toBeDefined();
|
|
204
|
+
await saveSkill({
|
|
205
|
+
id: existing.id,
|
|
206
|
+
name: existing.name,
|
|
207
|
+
title: 'Updated title',
|
|
208
|
+
category: 'general',
|
|
209
|
+
description: 'Updated trigger.',
|
|
210
|
+
content: '# Updated',
|
|
211
|
+
});
|
|
212
|
+
const written = parseSkillMarkdown(await fs.readFile(path.join(skillDir, 'SKILL.md'), 'utf-8'));
|
|
213
|
+
expect(written.metadata).toMatchObject({
|
|
214
|
+
license: 'Apache-2.0',
|
|
215
|
+
compatibility: 'Requires git.',
|
|
216
|
+
metadata: {
|
|
217
|
+
owner: 'platform-team',
|
|
218
|
+
nexusflow: { 'custom-field': 'keep', title: 'Updated title' },
|
|
219
|
+
},
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
describe('Workspace Skills Config', () => {
|
|
224
|
+
it('should load an empty workspace configuration when file does not exist', async () => {
|
|
225
|
+
const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'nexusflow-ws-skills-test-'));
|
|
226
|
+
try {
|
|
227
|
+
const config = await getWorkspaceSkillsConfig(tempDir);
|
|
228
|
+
expect(config.enabledSkills).toEqual([]);
|
|
229
|
+
expect(config.enabledAgents).toEqual([]);
|
|
230
|
+
expect(config.revision).toBe(0);
|
|
231
|
+
}
|
|
232
|
+
finally {
|
|
233
|
+
await fse.remove(tempDir);
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
it('should save and load workspace skill assignments', async () => {
|
|
237
|
+
const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'nexusflow-ws-skills-test-'));
|
|
238
|
+
try {
|
|
239
|
+
await saveWorkspaceSkillsConfig(tempDir, {
|
|
240
|
+
enabledSkills: ['pr-review-toolkit', 'verifier-workspace'],
|
|
241
|
+
enabledAgents: ['docs_researcher'],
|
|
242
|
+
enabledCategories: ['pull-requests', 'testing-qa'],
|
|
243
|
+
});
|
|
244
|
+
const loaded = await getWorkspaceSkillsConfig(tempDir);
|
|
245
|
+
expect(loaded.enabledSkills).toEqual(['pr-review-toolkit', 'verifier-workspace']);
|
|
246
|
+
expect(loaded.enabledAgents).toEqual(['docs_researcher']);
|
|
247
|
+
expect(loaded.enabledCategories).toEqual(['pull-requests', 'testing-qa']);
|
|
248
|
+
expect(loaded.revision).toBe(1);
|
|
249
|
+
}
|
|
250
|
+
finally {
|
|
251
|
+
await fse.remove(tempDir);
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
it('rejects stale assignment revisions', async () => {
|
|
255
|
+
const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'nexusflow-ws-skills-test-'));
|
|
256
|
+
try {
|
|
257
|
+
await saveWorkspaceSkillsConfig(tempDir, { enabledSkills: ['pr-review-toolkit'] }, 0);
|
|
258
|
+
await expect(saveWorkspaceSkillsConfig(tempDir, { enabledSkills: ['verifier-workspace'] }, 0)).rejects.toThrow(/expected revision 0, current 1/i);
|
|
259
|
+
}
|
|
260
|
+
finally {
|
|
261
|
+
await fse.remove(tempDir);
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
it('serializes concurrent writes so only one request can claim a revision', async () => {
|
|
265
|
+
const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'nexusflow-ws-skills-test-'));
|
|
266
|
+
try {
|
|
267
|
+
const results = await Promise.allSettled([
|
|
268
|
+
saveWorkspaceSkillsConfig(tempDir, { enabledSkills: ['pr-review-toolkit'] }, 0),
|
|
269
|
+
saveWorkspaceSkillsConfig(tempDir, { enabledSkills: ['verifier-workspace'] }, 0),
|
|
270
|
+
]);
|
|
271
|
+
expect(results.filter((result) => result.status === 'fulfilled')).toHaveLength(1);
|
|
272
|
+
expect(results.filter((result) => result.status === 'rejected')).toHaveLength(1);
|
|
273
|
+
expect((await getWorkspaceSkillsConfig(tempDir)).revision).toBe(1);
|
|
274
|
+
}
|
|
275
|
+
finally {
|
|
276
|
+
await fse.remove(tempDir);
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
//# sourceMappingURL=skills-catalog.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-catalog.test.js","sourceRoot":"","sources":["../../src/utils/skills-catalog.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mrpatronz/nexusflow",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "Combine multiple repos into a workspace with rich AI assistant context",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -60,9 +60,11 @@
|
|
|
60
60
|
"fs-extra": "^11.3.6",
|
|
61
61
|
"globby": "^16.2.0",
|
|
62
62
|
"hono": "^4.12.27",
|
|
63
|
+
"js-yaml": "^5.2.3",
|
|
63
64
|
"openai": "^6.45.0",
|
|
64
65
|
"ora": "^9.4.1",
|
|
65
66
|
"pm2": "^7.0.3",
|
|
67
|
+
"smol-toml": "^1.8.0",
|
|
66
68
|
"zod": "^4.4.3"
|
|
67
69
|
},
|
|
68
70
|
"overrides": {
|
|
@@ -72,6 +74,7 @@
|
|
|
72
74
|
},
|
|
73
75
|
"devDependencies": {
|
|
74
76
|
"@types/fs-extra": "^11.0.4",
|
|
77
|
+
"@types/js-yaml": "^4.0.9",
|
|
75
78
|
"@types/node": "^26.1.0",
|
|
76
79
|
"rimraf": "^6.1.3",
|
|
77
80
|
"typescript": "^6.0.3",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as e,b as t,g as n,h as r,m as i,t as a}from"./button-cPldH5S4.js";import{St as o,t as s}from"./spinner-DXt6mnJk.js";import{n as c,t as l}from"./ScaffoldRepoInline-DqoourJe.js";import{t as u}from"./trash-2-Da8F2gKd.js";import{$ as d,B as f,C as p,D as m,E as h,G as g,T as _,U as v,Y as y,b,d as x,dt as ee,f as S,g as C,h as te,lt as w,m as T,p as E,q as D,rt as O,u as k,ut as A,w as j,x as M,y as N}from"./index-CllPiiFL.js";import{a as P,i as F,n as I,r as L,t as R}from"./empty-DWyDwDYB.js";import{t as z}from"./badge-BnkhqVEF.js";var ne=r(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]);function B(e){return M(e,`alert-dialog`)}var V=t(e(),1),H=n(),U=B,W=p;function G({className:e,...t}){return(0,H.jsx)(m,{forceRender:!0,className:i(`fixed inset-0 z-50 bg-background/60 backdrop-blur-xs transition-all duration-200 data-ending-style:opacity-0 data-starting-style:opacity-0`,e),"data-slot":`alert-dialog-backdrop`,...t})}function K({className:e,...t}){return(0,H.jsx)(b,{className:i(`fixed inset-0 z-50 grid grid-rows-[1fr_auto_1fr] justify-items-center p-4`,e),"data-slot":`alert-dialog-viewport`,...t})}function q({className:e,bottomStickOnMobile:t=!0,...n}){return(0,H.jsxs)(W,{children:[(0,H.jsx)(G,{}),(0,H.jsx)(K,{className:i(t&&`max-sm:grid-rows-[1fr_auto] max-sm:p-0 max-sm:pt-12`),children:(0,H.jsx)(j,{className:i(`-translate-y-[calc(1.25rem*var(--nested-dialogs))] relative row-start-2 flex max-h-full min-h-0 w-full min-w-0 max-w-lg scale-[calc(1-0.1*var(--nested-dialogs))] flex-col rounded-2xl border bg-popover not-dark:bg-clip-padding text-popover-foreground opacity-[calc(1-0.1*var(--nested-dialogs))] shadow-lg/5 transition-[scale,opacity,translate] duration-200 ease-in-out will-change-transform before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] data-nested:data-ending-style:translate-y-8 data-nested:data-starting-style:translate-y-8 data-nested-dialog-open:origin-top data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]`,t&&`max-sm:max-w-none max-sm:rounded-none max-sm:border-x-0 max-sm:border-t max-sm:border-b-0 max-sm:opacity-[calc(1-min(var(--nested-dialogs),1))] max-sm:data-ending-style:translate-y-4 max-sm:data-starting-style:translate-y-4 max-sm:before:hidden max-sm:before:rounded-none`,e),"data-slot":`alert-dialog-popup`,...n})})]})}function J({className:e,...t}){return(0,H.jsx)(`div`,{className:i(`flex flex-col gap-2 p-6 text-center max-sm:pb-4 sm:text-left`,e),"data-slot":`alert-dialog-header`,...t})}function Y({className:e,variant:t=`default`,...n}){return(0,H.jsx)(`div`,{className:i(`flex flex-col-reverse gap-2 px-6 sm:flex-row sm:justify-end sm:rounded-b-[calc(var(--radius-2xl)-1px)]`,t==="default"&&`border-t bg-muted/72 py-4`,t===`bare`&&`pb-6`,e),"data-slot":`alert-dialog-footer`,...n})}function X({className:e,...t}){return(0,H.jsx)(N,{className:i(`font-heading font-semibold text-xl leading-none`,e),"data-slot":`alert-dialog-title`,...t})}function Z({className:e,...t}){return(0,H.jsx)(_,{className:i(`text-muted-foreground text-sm`,e),"data-slot":`alert-dialog-description`,...t})}function re(e){return(0,H.jsx)(h,{"data-slot":`alert-dialog-close`,...e})}var ie={editingId:null,name:``,description:``,repoPaths:[]};function Q(){let e=O(),t=g(),n=D(),r=d(),i=f(),p=y(),m=v(),[h,_]=(0,V.useState)(null),[b,j]=(0,V.useState)(null),[M,N]=(0,V.useState)(null),B=(0,V.useMemo)(()=>{let e={};for(let t of r.data??[])t.projectId&&(e[t.projectId]=(e[t.projectId]??0)+1);return e},[r.data]),W=()=>{j(null),_(ie)},G=e=>{j(null),_({editingId:e.id,name:e.name,description:e.description??``,repoPaths:e.repos.map(e=>e.path)})},K=e=>{_(t=>t&&{...t,repoPaths:t.repoPaths.includes(e.path)?t.repoPaths.filter(t=>t!==e.path):[...t.repoPaths,e.path]})},Q=async()=>{if(h){j(null);try{h.editingId?await p.mutateAsync({id:h.editingId,name:h.name,description:h.description||null,repos:h.repoPaths}):await i.mutateAsync({name:h.name,description:h.description||void 0,repos:h.repoPaths}),_(null)}catch(e){j(e instanceof Error?e.message:String(e))}}},ae=async()=>{if(M)try{await m.mutateAsync(M.id)}finally{N(null)}},oe=!!(h&&h.name.trim()&&h.repoPaths.length>0),$=i.isPending||p.isPending;return(0,H.jsxs)(`div`,{className:`mx-auto max-w-4xl animate-fade-in`,children:[(0,H.jsxs)(`header`,{className:`mb-6 flex items-center justify-between gap-4`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`h1`,{className:`text-xl font-semibold`,children:`Projects`}),(0,H.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Named groups of repositories you start work from. Registered once, reused for every feature.`})]}),(0,H.jsxs)(a,{onClick:W,children:[(0,H.jsx)(w,{}),` New project`]})]}),t.isLoading?(0,H.jsx)(`div`,{className:`flex justify-center py-20`,children:(0,H.jsx)(s,{className:`size-6`})}):(t.data??[]).length===0?(0,H.jsxs)(R,{className:`border border-border border-dashed`,children:[(0,H.jsxs)(L,{children:[(0,H.jsx)(F,{variant:`icon`,children:(0,H.jsx)(ee,{})}),(0,H.jsx)(P,{children:`No projects yet`}),(0,H.jsx)(I,{children:`Register your first project to start work without re-picking repositories every time.`})]}),(0,H.jsxs)(a,{onClick:W,children:[(0,H.jsx)(w,{}),` New project`]})]}):(0,H.jsx)(`ul`,{className:`flex flex-col gap-3`,children:(t.data??[]).map(t=>(0,H.jsx)(`li`,{className:`rounded-xl border border-border bg-card p-4 transition-colors hover:border-foreground/15`,children:(0,H.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`h2`,{className:`truncate text-sm font-semibold`,children:t.name}),(B[t.id]??0)>0&&(0,H.jsxs)(z,{variant:`secondary`,children:[B[t.id],` workspace`,B[t.id]===1?``:`s`]})]}),t.description&&(0,H.jsx)(`p`,{className:`mt-0.5 truncate text-sm text-muted-foreground`,children:t.description}),(0,H.jsx)(`ul`,{className:`mt-2 flex flex-col gap-0.5`,children:t.repos.map(e=>(0,H.jsxs)(`li`,{className:`truncate font-mono text-xs text-muted-foreground`,children:[e.path,(0,H.jsxs)(`span`,{className:`ml-2 text-muted-foreground/60`,children:[`[`,e.defaultBranch,`]`]})]},e.path))})]}),(0,H.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:[(0,H.jsxs)(a,{size:`sm`,onClick:()=>e(`/new?project=${encodeURIComponent(t.id)}`),children:[(0,H.jsx)(A,{}),` Start work`]}),(0,H.jsx)(a,{size:`icon-sm`,variant:`ghost`,"aria-label":`Edit ${t.name}`,onClick:()=>G(t),children:(0,H.jsx)(ne,{})}),(0,H.jsx)(a,{size:`icon-sm`,variant:`ghost`,"aria-label":`Remove ${t.name}`,onClick:()=>N(t),children:(0,H.jsx)(u,{})})]})]})},t.id))}),(0,H.jsx)(k,{open:h!==null,onOpenChange:e=>!e&&_(null),children:(0,H.jsxs)(te,{className:`max-w-lg`,children:[(0,H.jsxs)(E,{children:[(0,H.jsx)(C,{children:h?.editingId?`Edit project`:`New project`}),(0,H.jsx)(x,{children:`A project is a reusable group of source repositories. Removing one later never touches disk.`})]}),(0,H.jsxs)(T,{className:`space-y-4`,children:[(0,H.jsxs)(`label`,{className:`block`,children:[(0,H.jsx)(`span`,{className:`mb-1 block text-sm font-medium`,children:`Name`}),(0,H.jsx)(o,{value:h?.name??``,onChange:e=>_(t=>t&&{...t,name:e.target.value}),placeholder:`e.g. Hogia Billing`,autoFocus:!0})]}),(0,H.jsxs)(`label`,{className:`block`,children:[(0,H.jsxs)(`span`,{className:`mb-1 block text-sm font-medium`,children:[`Description `,(0,H.jsx)(`span`,{className:`font-normal text-muted-foreground`,children:`(optional)`})]}),(0,H.jsx)(o,{value:h?.description??``,onChange:e=>_(t=>t&&{...t,description:e.target.value}),placeholder:`What this group of repos is for`})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`span`,{className:`mb-1 block text-sm font-medium`,children:`Repositories`}),(0,H.jsx)(c,{repos:n.data??[],selectedPaths:h?.repoPaths??[],onToggle:K,loading:n.isLoading,emptyHint:`No repositories found in your dev directory.`}),(0,H.jsx)(l,{onCreated:e=>_(t=>t&&{...t,repoPaths:[...t.repoPaths,e.path]})})]}),b&&(0,H.jsx)(`p`,{className:`text-sm text-destructive-foreground`,children:b})]}),(0,H.jsxs)(S,{children:[(0,H.jsx)(a,{variant:`outline`,onClick:()=>_(null),children:`Cancel`}),(0,H.jsxs)(a,{onClick:Q,disabled:!oe||$,children:[$?(0,H.jsx)(s,{}):null,h?.editingId?`Save changes`:`Create project`]})]})]})}),(0,H.jsx)(U,{open:M!==null,onOpenChange:e=>!e&&N(null),children:(0,H.jsxs)(q,{children:[(0,H.jsxs)(J,{children:[(0,H.jsxs)(X,{children:[`Remove “`,M?.name,`”?`]}),(0,H.jsx)(Z,{children:`This only removes the project from the registry — repositories and workspaces on disk are not touched.`})]}),(0,H.jsxs)(Y,{children:[(0,H.jsx)(re,{render:(0,H.jsx)(a,{variant:`outline`,children:`Cancel`})}),(0,H.jsxs)(a,{variant:`destructive`,onClick:ae,disabled:m.isPending,children:[m.isPending?(0,H.jsx)(s,{}):null,`Remove project`]})]})]})})]})}export{Q as ProjectsPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as e,b as t,d as n,g as r,h as i,i as a,l as o,m as s,o as c,p as l,s as u,t as d,u as ee}from"./button-cPldH5S4.js";import{$n as f,Ft as te,Gt as p,Ht as ne,Jt as m,M as re,S as ie,St as h,Ut as ae,Vn as oe,Wt as se,Xn as ce,Zn as g,bt as le,er as ue,rr as _,t as v,tr as y,wt as de,xt as fe}from"./spinner-DXt6mnJk.js";import{t as b}from"./search-ChVovkOL.js";import{t as pe}from"./useAriaLabelledBy-CjNlctb9.js";import{V as x}from"./index-CllPiiFL.js";var me=i(`folder-plus`,[[`path`,{d:`M12 10v6`,key:`1bos4e`}],[`path`,{d:`M9 13h6`,key:`1uhe8q`}],[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),S=t(e(),1),C=S.createContext({disabled:!1});function he(){return S.useContext(C)}var w=S.createContext(void 0);function ge(e=!0){let t=S.useContext(w);if(t===void 0&&!e)throw Error(n(3));return t}function _e(e){if(!e)return null;for(let t of e.elements){let e=t.tagName;if(e===`BUTTON`||e===`INPUT`){let e=t;if(e.type===`submit`)return e}}return null}var T=function(e){return e.checked=`data-checked`,e.unchecked=`data-unchecked`,e.indeterminate=`data-indeterminate`,e.disabled=`data-disabled`,e.readonly=`data-readonly`,e.required=`data-required`,e.valid=`data-valid`,e.invalid=`data-invalid`,e.touched=`data-touched`,e.dirty=`data-dirty`,e.filled=`data-filled`,e.focused=`data-focused`,e}({});function ve(e){return S.useMemo(()=>({checked(t){return e.indeterminate?{}:t?{[T.checked]:``}:{[T.unchecked]:``}},...y}),[e.indeterminate])}var ye=S.createContext(void 0);function E(){let e=S.useContext(ye);if(e===void 0)throw Error(n(14));return e}var D=r(),be=`data-parent`,xe=S.forwardRef(function(e,t){let{checked:n,className:r,defaultChecked:i=!1,"aria-labelledby":s,disabled:d=!1,form:p,id:m,indeterminate:h=!1,inputRef:se,name:v,onCheckedChange:y,parent:b=!1,readOnly:x=!1,render:me,required:C=!1,uncheckedValue:w,value:T,nativeButton:E=!1,style:xe,...O}=e,{clearErrors:k}=f(),{disabled:A,name:j,setDirty:Se,setFilled:M,setFocused:N,setTouched:Ce,state:P,validationMode:we,validityData:Te,validation:Ee}=ue(),De=he(),{labelId:Oe,controlId:ke,registerControlId:F,getDescriptionProps:Ae}=ce(),I=ge(),L=I?.parent,R=L&&I.allValues,z=A||De.disabled||I?.disabled||d,B=j??v,V=T??B,je=g(),Me=g(),H=ke;R?H=b?Me:`${L.id}-${V}`:m&&(H=m);let U={};R&&(b?U=I.parent.getParentProps():V&&(U=I.parent.getChildProps(V)));let{checked:Ne=n,indeterminate:Pe=h,onCheckedChange:Fe,...Ie}=U,W=I?.value,Le=I?.setValue,Re=I?.defaultValue,G=S.useRef(null),K=ee(()=>Symbol(`checkbox-control`)),q=S.useRef(!1),{getButtonProps:ze,buttonRef:Be}=ie({disabled:z,native:E}),J=I?.validation??Ee,[Y,Ve]=ae({controlled:V&&W&&!b?W.includes(V):Ne,default:V&&Re&&!b?Re.includes(V):i,name:`Checkbox`,state:`checked`}),X=R?!!Ne:Y,Z=R&&Pe||h;_(()=>{F!==u&&(q.current=!0,F(K.current,H))},[H,F,K]),S.useEffect(()=>{let e=K.current;return()=>{!q.current||F===u||(q.current=!1,F(e,void 0))}},[F,K]),ne(G,je,Y,void 0,!I&&!z,v);let Q=S.useRef(null),He=o(se,Q,J.inputRef,J.registerInput),Ue=pe(s,Oe,Q,!E,H??void 0);_(()=>{Q.current&&(Q.current.indeterminate=Z,Y&&M(!0))},[Y,Z,M]),re(Y,()=>{I||(k(B),M(Y),Se(Y!==Te.initialValue),J.change(Y))});let We=l({checked:Y,disabled:z,form:p,name:b?void 0:B,id:E?void 0:H??void 0,required:C,ref:He,style:B?fe:le,tabIndex:-1,type:`checkbox`,"aria-hidden":!0,onChange(e){if(e.nativeEvent.defaultPrevented)return;if(x){e.preventDefault();return}let t=e.currentTarget.checked,n=de(te,e.nativeEvent);if(y?.(t,n),!n.isCanceled&&(Fe?.(t,n),!n.isCanceled&&(Ve(t),V&&W&&Le&&!b&&!R))){let e=t?[...W,V]:W.filter(e=>e!==V);Le(e,n)}},onFocus(){G.current?.focus()}},T===void 0?c:{value:(I?Y&&T:T)||``},Ae,e=>J.getValidationProps(z,e));S.useEffect(()=>{if(!L||!V)return;let e=L.disabledStatesRef.current;return e.set(V,z),()=>{e.delete(V)}},[L,z,V]);let $=S.useMemo(()=>({...P,checked:X,disabled:z,readOnly:x,required:C,indeterminate:Z}),[P,X,z,x,C,Z]),Ge=ve($),Ke=a(`span`,e,{state:$,ref:[Be,G,t,I?.registerControlRef],props:[{id:E?H??void 0:je,role:`checkbox`,"aria-checked":Z?`mixed`:X,"aria-readonly":x||void 0,"aria-required":C||void 0,"aria-labelledby":Ue,[be]:b?``:void 0,onFocus(){z||N(!0)},onBlur(){let e=Q.current;e&&(Ce(!0),N(!1),we===`onBlur`&&J.commit(I?W:e.checked))},onKeyDown(e){if(e.key!==`Enter`||(e.preventBaseUIHandler(),e.defaultPrevented))return;let t=Q.current?.form??null,n=e.currentTarget,r=e.nativeEvent,i=e.preventDefault,a=r.preventDefault,o=!1;e.preventDefault=()=>{o=!0,i.call(e)},r.preventDefault=()=>{o=!0,a.call(r)},a.call(r),oe(n).queueMicrotask(()=>{e.preventDefault=i,r.preventDefault=a,o||_e(t)?.click()})},onClick(e){if(x||z)return;e.preventDefault();let t=Q.current;t&&t.dispatchEvent(new(oe(t)).PointerEvent(`click`,{bubbles:!0,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}))}},O,Ie,ze,Ae,e=>J.getValidationProps(z,e)],stateAttributesMapping:Ge});return(0,D.jsxs)(ye.Provider,{value:$,children:[Ke,!Y&&!I&&B&&!b&&w!==void 0&&(0,D.jsx)(`input`,{type:`hidden`,form:p,name:B,value:w,disabled:z}),(0,D.jsx)(`input`,{...We,suppressHydrationWarning:!0})]})}),O=S.forwardRef(function(e,t){let{render:n,className:r,style:i,keepMounted:o=!1,...s}=e,c=E(),l=c.checked||c.indeterminate,{mounted:u,transitionStatus:d,setMounted:ee}=se(l),f=S.useRef(null),te={...c,transitionStatus:d};p({open:l,ref:f,onComplete(){l||ee(!1)}});let ne={...ve(c),...m,...y},re=o||u,ie=a(`span`,e,{ref:[t,f],state:te,stateAttributesMapping:ne,props:s});return re?ie:null});function k({className:e,...t}){return(0,D.jsx)(xe,{className:s(`relative inline-flex size-4.5 shrink-0 items-center justify-center rounded-[.25rem] border border-input bg-background not-dark:bg-clip-padding shadow-xs/5 outline-none ring-ring transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[3px] not-data-disabled:not-data-checked:not-aria-invalid:before:shadow-[0_1px_--theme(--color-black/4%)] focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:ring-offset-background aria-invalid:border-destructive/36 focus-visible:aria-invalid:border-destructive/64 focus-visible:aria-invalid:ring-destructive/48 data-disabled:opacity-64 sm:size-4 dark:not-data-checked:bg-input/32 dark:aria-invalid:ring-destructive/24 dark:not-data-disabled:not-data-checked:not-aria-invalid:before:shadow-[0_-1px_--theme(--color-white/6%)] [[data-disabled],[data-checked],[aria-invalid]]:shadow-none`,e),"data-slot":`checkbox`,...t,children:(0,D.jsx)(O,{className:`-inset-px absolute flex items-center justify-center rounded-[.25rem] text-primary-foreground data-unchecked:hidden data-checked:bg-primary data-indeterminate:text-foreground`,"data-slot":`checkbox-indicator`,render:(e,t)=>(0,D.jsx)(`span`,{...e,children:t.indeterminate?(0,D.jsx)(`svg`,{className:`size-3.5 sm:size-3`,fill:`none`,height:`24`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`3`,viewBox:`0 0 24 24`,width:`24`,xmlns:`http://www.w3.org/2000/svg`,children:(0,D.jsx)(`path`,{d:`M5.252 12h13.496`})}):(0,D.jsx)(`svg`,{className:`size-3.5 sm:size-3`,fill:`none`,height:`24`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`3`,viewBox:`0 0 24 24`,width:`24`,xmlns:`http://www.w3.org/2000/svg`,children:(0,D.jsx)(`path`,{d:`M5.252 12.7 10.2 18.63 18.748 5.37`})})})})})}function A({repos:e,selectedPaths:t,onToggle:n,loading:r,emptyHint:i,className:a}){let[o,c]=(0,S.useState)(``),l=(0,S.useMemo)(()=>{let t=o.trim().toLowerCase();return t?e.filter(e=>e.name.toLowerCase().includes(t)||e.path.toLowerCase().includes(t)):e},[e,o]);return(0,D.jsxs)(`div`,{className:s(`flex flex-col gap-2`,a),children:[(0,D.jsxs)(`div`,{className:`relative`,children:[(0,D.jsx)(b,{className:`absolute top-1/2 left-2.5 size-4 -translate-y-1/2 text-muted-foreground`}),(0,D.jsx)(h,{value:o,onChange:e=>c(e.target.value),placeholder:`Filter repositories…`,className:`pl-8`,"aria-label":`Filter repositories`})]}),(0,D.jsx)(`div`,{className:`max-h-56 overflow-y-auto rounded-lg border border-border`,children:r?(0,D.jsx)(`p`,{className:`p-3 text-sm text-muted-foreground`,children:`Scanning for repositories…`}):l.length===0?(0,D.jsx)(`p`,{className:`p-3 text-sm text-muted-foreground`,children:i??`No repositories found.`}):(0,D.jsx)(`ul`,{className:`divide-y divide-border`,children:l.map(e=>(0,D.jsx)(`li`,{children:(0,D.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-3 px-3 py-2 hover:bg-accent`,children:[(0,D.jsx)(k,{checked:t.includes(e.path),onCheckedChange:()=>n(e),"aria-label":e.name}),(0,D.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,D.jsx)(`span`,{className:`block truncate text-sm font-medium`,children:e.name}),(0,D.jsx)(`span`,{className:`block truncate font-mono text-xs text-muted-foreground`,children:e.path})]}),(0,D.jsx)(`span`,{className:`shrink-0 font-mono text-xs text-muted-foreground`,children:e.defaultBranch})]})},e.path))})})]})}function j({onCreated:e}){let[t,n]=(0,S.useState)(!1),[r,i]=(0,S.useState)(``),[a,o]=(0,S.useState)(null),s=x(),c=async()=>{o(null);try{let{repo:t}=await s.mutateAsync(r.trim());i(``),n(!1),e(t)}catch(e){o(e instanceof Error?e.message:String(e))}};return t?(0,D.jsxs)(`div`,{className:`mt-1.5 flex flex-col gap-1.5`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(h,{value:r,onChange:e=>i(e.target.value),onKeyDown:e=>e.key===`Enter`&&r.trim()&&c(),placeholder:`new-repo-name`,className:`h-7 font-mono text-xs`,"aria-label":`New repository name`,autoFocus:!0}),(0,D.jsxs)(d,{size:`xs`,onClick:c,disabled:!r.trim()||s.isPending,children:[s.isPending?(0,D.jsx)(v,{}):null,`Create`]}),(0,D.jsx)(d,{size:`xs`,variant:`ghost`,onClick:()=>{n(!1),o(null)},children:`Cancel`})]}),a&&(0,D.jsx)(`p`,{className:`text-xs text-destructive-foreground`,children:a})]}):(0,D.jsxs)(`button`,{type:`button`,onClick:()=>n(!0),className:`mt-1.5 inline-flex cursor-pointer items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground`,children:[(0,D.jsx)(me,{className:`size-3.5`}),` Scaffold a brand-new repository`]})}export{A as n,k as r,j as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as e,b as t,d as n,g as r,i,l as a,m as o,n as s,o as c,p as l,t as u}from"./button-cPldH5S4.js";import{$n as d,Ft as f,Ht as p,M as m,Mn as ee,S as te,St as h,Ut as ne,Vn as re,Xn as ie,Zn as ae,bt as oe,er as se,rr as g,t as _,tr as v,wt as ce,xt as le}from"./spinner-DXt6mnJk.js";import{t as ue}from"./useAriaLabelledBy-CjNlctb9.js";import{t as y}from"./Separator-Chx6O62Y.js";import{A as b,M as x,N as S,at as C,ct as de,ht as w,j as T,k as E}from"./index-CllPiiFL.js";import{t as D}from"./card-82INhRRE.js";import{t as O}from"./badge-BnkhqVEF.js";import{t as k}from"./label-JFgMNsTn.js";var A=t(e(),1),j=r(),M=s(`relative rounded-xl border px-3.5 py-3 text-card-foreground text-sm`,{defaultVariants:{variant:`default`},variants:{variant:{default:`bg-transparent dark:bg-input/32 [&_svg]:text-muted-foreground`,error:`border-destructive/32 bg-destructive/4 text-destructive-foreground [&_[data-slot=alert-description]]:text-destructive-foreground/80 [&_svg]:text-destructive`,info:`border-info/32 bg-info/4 [&_svg]:text-info`,success:`border-success/32 bg-success/4 [&_svg]:text-success`,warning:`border-warning/32 bg-warning/4 [&_svg]:text-warning`}}});function N(e){let t=e.props[`data-slot`];if(t)return t;let n=e.type;switch(n.displayName??n.name){case`AlertAction`:return`alert-action`;case`AlertTitle`:return`alert-title`;case`AlertDescription`:return`alert-description`;default:return}}function P({className:e,variant:t,children:n,...r}){let i=[],a=[],s=[];return A.Children.forEach(n,e=>{if(!(0,A.isValidElement)(e)){a.push(e);return}let t=N(e);t===`alert-action`?s.push(e):t===`alert-title`||t===`alert-description`?a.push(e):i.push(e)}),(0,j.jsx)(`div`,{className:o(M({variant:t}),e),"data-slot":`alert`,role:`alert`,...r,children:(0,j.jsxs)(`div`,{className:`flex items-center gap-2`,children:[i.length>0&&(0,j.jsx)(`div`,{className:`flex size-4 shrink-0 items-center justify-center [&>svg]:size-full`,children:i}),a.length>0&&(0,j.jsx)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:a}),s.length>0&&(0,j.jsx)(`div`,{className:`flex shrink-0 items-center self-center`,children:s})]})})}function F({className:e,...t}){return(0,j.jsx)(`div`,{className:o(`font-medium`,e),"data-slot":`alert-title`,...t})}function I({className:e,...t}){return(0,j.jsx)(`div`,{className:o(`flex flex-col gap-2.5 text-muted-foreground`,e),"data-slot":`alert-description`,...t})}function L({className:e,...t}){return(0,j.jsx)(`div`,{className:o(`flex gap-1`,e),"data-slot":`alert-action`,...t})}F.displayName=`AlertTitle`,I.displayName=`AlertDescription`,L.displayName=`AlertAction`;function R({className:e,orientation:t=`horizontal`,...n}){return(0,j.jsx)(y,{className:o(`shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:not-[[class^='h-']]:not-[[class*='_h-']]:self-stretch`,e),"data-slot":`separator`,orientation:t,...n})}var z=A.createContext(void 0);function B(){let e=A.useContext(z);if(e===void 0)throw Error(n(63));return e}var V=function(e){return e.checked=`data-checked`,e.unchecked=`data-unchecked`,e.disabled=`data-disabled`,e.readonly=`data-readonly`,e.required=`data-required`,e.valid=`data-valid`,e.invalid=`data-invalid`,e.touched=`data-touched`,e.dirty=`data-dirty`,e.filled=`data-filled`,e.focused=`data-focused`,e}({}),H={...v,checked(e){return e?{[V.checked]:``}:{[V.unchecked]:``}}},U=A.forwardRef(function(e,t){let{checked:n,className:r,defaultChecked:o,"aria-labelledby":s,form:u,id:h,inputRef:_,name:v,nativeButton:y=!1,onCheckedChange:b,readOnly:x=!1,required:S=!1,disabled:C=!1,render:de,uncheckedValue:w,value:T,style:E,...D}=e,{clearErrors:O}=d(),{state:k,setTouched:M,setDirty:N,validityData:P,setFilled:F,setFocused:I,validationMode:L,disabled:R,name:B,validation:V}=se(),{labelId:U}=ie(),W=R||C,G=B??v,K=A.useRef(null),fe=a(K,_,V.inputRef),q=A.useRef(null),J=ae(),Y=ee({id:h,implicit:!1,controlRef:q}),X=y?void 0:Y,[Z,Q]=ne({controlled:n,default:!!o,name:`Switch`,state:`checked`});p(q,J,Z,void 0,!W,v),g(()=>{K.current&&F(K.current.checked)},[K,F]),m(Z,()=>{O(G),N(Z!==P.initialValue),F(Z),V.change(Z)});let{getButtonProps:pe,buttonRef:me}=te({disabled:W,native:y}),he=ue(s,U,K,!y,X),ge={id:y?Y:J,role:`switch`,"aria-checked":Z,"aria-readonly":x||void 0,"aria-required":S||void 0,"aria-labelledby":he,onFocus(){W||I(!0)},onBlur(){let e=K.current;!e||W||(M(!0),I(!1),L===`onBlur`&&V.commit(e.checked))},onClick(e){if(x||W)return;e.preventDefault();let t=K.current;t&&t.dispatchEvent(new(re(t)).PointerEvent(`click`,{bubbles:!0,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}))}},_e=l({checked:Z,disabled:W,form:u,id:X,name:G,required:S,style:G?le:oe,tabIndex:-1,type:`checkbox`,"aria-hidden":!0,ref:fe,onChange(e){if(e.nativeEvent.defaultPrevented)return;if(x){e.preventDefault();return}let t=e.currentTarget.checked,n=ce(f,e.nativeEvent);b?.(t,n),!n.isCanceled&&Q(t)},onFocus(){q.current?.focus()}},e=>V.getValidationProps(W,e),T===void 0?c:{value:T}),$=A.useMemo(()=>({...k,checked:Z,disabled:W,readOnly:x,required:S}),[k,Z,W,x,S]),ve=i(`span`,e,{state:$,ref:[t,q,me],props:[ge,D,pe,e=>V.getValidationProps(W,e)],stateAttributesMapping:H});return(0,j.jsxs)(z.Provider,{value:$,children:[ve,!Z&&G&&w!==void 0&&(0,j.jsx)(`input`,{type:`hidden`,form:u,name:G,value:w,disabled:W}),(0,j.jsx)(`input`,{..._e,suppressHydrationWarning:!0})]})}),W=A.forwardRef(function(e,t){let{render:n,className:r,style:a,...o}=e;return i(`span`,e,{state:B(),ref:t,stateAttributesMapping:H,props:o})});function G({className:e,...t}){return(0,j.jsx)(U,{className:o(`inline-flex h-[calc(var(--thumb-size)+2px)] w-[calc(var(--thumb-size)*2-2px)] shrink-0 cursor-pointer items-center rounded-full p-px outline-none transition-[background-color,box-shadow] duration-200 [--thumb-size:--spacing(5)] focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background data-checked:bg-primary data-unchecked:bg-input data-disabled:cursor-not-allowed data-disabled:opacity-64 sm:[--thumb-size:--spacing(4)]`,e),"data-slot":`switch`,...t,children:(0,j.jsx)(W,{className:o(`pointer-events-none block aspect-square h-full origin-left in-[[role=switch]:active,[data-slot=label]:active,[data-slot=field-label]:active]:not-data-disabled:scale-x-110 in-[[role=switch]:active,[data-slot=label]:active,[data-slot=field-label]:active]:rounded-[var(--thumb-size)/calc(var(--thumb-size)*1.1)] rounded-(--thumb-size) bg-background shadow-sm/5 will-change-transform [transition:translate_.15s,border-radius_.15s,scale_.1s_.1s,transform-origin_.15s] data-checked:origin-[var(--thumb-size)_50%] data-checked:translate-x-[calc(var(--thumb-size)-4px)]`),"data-slot":`switch-thumb`})})}function K({config:e,setConfig:t,saveStatus:n,editors:r,adapters:i,saveAppConfig:a,isSettingsFormValid:o,toolsStatus:s,toolsLoading:c,updatingToolId:l,fetchToolsStatus:d,handleUpdateTool:f}){if(!e)return null;let p=r.find(t=>t.command===e.defaultEditor),m=i.find(t=>t.name===(e.storageProvider||`local`));return(0,j.jsxs)(`div`,{className:`mx-auto max-w-4xl animate-fade-in`,children:[(0,j.jsxs)(`header`,{className:`mb-6`,children:[(0,j.jsx)(`h1`,{className:`text-xl font-semibold text-foreground`,children:`Global Settings`}),(0,j.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Configure your local directories, search parameters, and editor defaults.`})]}),n===`success`&&(0,j.jsxs)(P,{variant:`success`,className:`mb-6`,children:[(0,j.jsx)(w,{size:18}),` Settings successfully saved and updated!`]}),n===`error`&&(0,j.jsxs)(P,{variant:`error`,className:`mb-6`,children:[(0,j.jsx)(C,{size:18}),` Error: Could not save configuration details to disk.`]}),(0,j.jsx)(D,{className:`mb-6 rounded-xl p-6 shadow-sm`,children:(0,j.jsxs)(`div`,{className:`grid grid-cols-1 gap-6 md:grid-cols-2`,children:[(0,j.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,j.jsx)(k,{className:`text-sm`,children:`Development Directory`}),(0,j.jsx)(h,{type:`text`,value:e.devDir,onChange:n=>t({...e,devDir:n.target.value})}),(0,j.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Directory where your git projects are scanned.`})]}),(0,j.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,j.jsx)(k,{className:`text-sm`,children:`Workspaces Directory`}),(0,j.jsx)(h,{type:`text`,value:e.workspacesDir,onChange:n=>t({...e,workspacesDir:n.target.value})}),(0,j.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Directory where unified worktree environments are spun up.`})]}),(0,j.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,j.jsx)(k,{className:`text-sm`,children:`Repo Search Depth`}),(0,j.jsx)(h,{type:`number`,min:1,max:5,value:e.scanDepth,onChange:n=>t({...e,scanDepth:parseInt(n.target.value,10)})}),(0,j.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Max directory levels deep the system will traverse for git repos.`})]}),(0,j.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,j.jsx)(k,{className:`text-sm`,children:`Default Assistant`}),(0,j.jsxs)(E,{value:e.defaultAssistant||``,onValueChange:n=>typeof n==`string`&&t({...e,defaultAssistant:n||null}),children:[(0,j.jsx)(x,{"aria-label":`Default Assistant`,children:(0,j.jsx)(S,{children:e.defaultAssistant===`claude`?`Claude Code`:e.defaultAssistant===`antigravity`?`Antigravity`:e.defaultAssistant===`codex`?`Codex`:e.defaultAssistant===`copilot`?`GitHub Copilot`:e.defaultAssistant===`cursor`?`Cursor`:`None (Prompt me)`})}),(0,j.jsxs)(T,{alignItemWithTrigger:!1,children:[(0,j.jsx)(b,{value:``,children:`None (Prompt me)`}),(0,j.jsx)(b,{value:`claude`,children:`Claude Code`}),(0,j.jsx)(b,{value:`antigravity`,children:`Antigravity`}),(0,j.jsx)(b,{value:`codex`,children:`Codex`}),(0,j.jsx)(b,{value:`copilot`,children:`GitHub Copilot`}),(0,j.jsx)(b,{value:`cursor`,children:`Cursor`})]})]}),(0,j.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Your preferred workspace context manager.`})]}),(0,j.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,j.jsx)(k,{className:`text-sm`,children:`Preferred Editor`}),(0,j.jsxs)(E,{value:e.defaultEditor||``,onValueChange:n=>typeof n==`string`&&t({...e,defaultEditor:n||null}),children:[(0,j.jsx)(x,{"aria-label":`Preferred Editor`,children:(0,j.jsx)(S,{children:p?`${p.name} ${p.detected?`(Detected)`:`(Not found)`}`:`No preference`})}),(0,j.jsxs)(T,{alignItemWithTrigger:!1,children:[(0,j.jsx)(b,{value:``,children:`No preference`}),r.map(e=>(0,j.jsxs)(b,{value:e.command,children:[e.name,` `,e.detected?`(Detected)`:`(Not found)`]},e.command))]})]}),(0,j.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Shown first in the “Open with…” workspace chooser.`})]}),(0,j.jsxs)(`div`,{className:`flex flex-col gap-4 md:col-span-2`,children:[(0,j.jsx)(R,{className:`mt-1`}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:`Workspace Storage Settings`}),(0,j.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:`Choose where maps, plans, and knowledge files are stored.`})]}),(0,j.jsxs)(`div`,{className:`flex max-w-md flex-col gap-1.5`,children:[(0,j.jsx)(k,{htmlFor:`storageProvider`,className:`text-sm`,children:`Storage Provider`}),(0,j.jsxs)(E,{value:e.storageProvider||`local`,onValueChange:n=>{if(typeof n!=`string`)return;let r=n,a={...e,storageProvider:r},o=i.find(e=>e.name===r);o?.configFields?.length&&(a.adapterConfig||={},a.adapterConfig[r]||(a.adapterConfig[r]={}),o.configFields.forEach(e=>{a.adapterConfig[r][e.key]===void 0&&e.default!==void 0&&(a.adapterConfig[r][e.key]=e.default)})),t(a)},children:[(0,j.jsx)(x,{id:`storageProvider`,"aria-label":`Storage Provider`,children:(0,j.jsx)(S,{children:m?.displayName??`Local Workspace (Folders)`})}),(0,j.jsx)(T,{alignItemWithTrigger:!1,children:i.length>0?i.map(e=>(0,j.jsx)(b,{value:e.name,children:e.displayName},e.name)):(0,j.jsx)(b,{value:`local`,children:`Local Workspace (Folders)`})})]}),(0,j.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:m?.description||`Choose where to store maps, plans, and knowledge files. Centralized vault keeps repositories 100% clean and allows Obsidian integration.`})]}),(()=>{let n=e.storageProvider||`local`,r=i.find(e=>e.name===n);return r?.configFields?.length?(0,j.jsxs)(`div`,{className:`flex max-w-md flex-col gap-4 rounded-xl border border-border bg-muted/40 p-4`,children:[(0,j.jsxs)(`h4`,{className:`text-xs font-semibold uppercase tracking-wider text-muted-foreground`,children:[r.displayName,` Settings`]}),r.configFields.map(r=>{let i=e.adapterConfig?.[n]?.[r.key]??r.default??``,a=i=>{let a={...e.adapterConfig||{},[n]:{...e.adapterConfig?.[n]||{},[r.key]:i}};t({...e,adapterConfig:a})};return r.type===`boolean`?(0,j.jsxs)(k,{className:`flex cursor-pointer items-start gap-3 text-sm`,children:[(0,j.jsx)(G,{checked:!!i,onCheckedChange:e=>a(e)}),(0,j.jsxs)(`span`,{className:`flex flex-col`,children:[(0,j.jsx)(`span`,{className:`text-sm font-medium text-foreground`,children:r.label}),r.description&&(0,j.jsx)(`span`,{className:`mt-0.5 text-xs leading-normal text-muted-foreground`,children:r.description})]})]},r.key):(0,j.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,j.jsx)(k,{className:`text-sm`,children:r.label}),(0,j.jsx)(h,{type:r.type===`number`?`number`:`text`,value:i,onChange:e=>{let t=r.type===`number`?Number(e.target.value):e.target.value;a(t)}}),r.description&&(0,j.jsx)(`span`,{className:`text-xs leading-normal text-muted-foreground`,children:r.description})]},r.key)})]}):null})()]})]})}),(0,j.jsxs)(D,{className:`mt-6 rounded-xl p-6 shadow-sm`,children:[(0,j.jsxs)(`div`,{className:`mb-6 flex items-start justify-between gap-4`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`h3`,{className:`text-lg font-semibold text-foreground`,children:`AI Toolchain Updates`}),(0,j.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Monitor and update the CLI packages and assistants in your workflow.`})]}),(0,j.jsxs)(u,{variant:`outline`,size:`sm`,onClick:()=>d(!0),disabled:c,children:[c?(0,j.jsx)(_,{className:`size-3`}):(0,j.jsx)(de,{size:13}),c?`Checking...`:`Check Now`]})]}),c&&s.length===0?(0,j.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-2 py-8 text-muted-foreground`,children:[(0,j.jsx)(_,{className:`size-6`}),(0,j.jsx)(`span`,{className:`text-xs`,children:`Fetching registry version details...`})]}):s.length===0?(0,j.jsx)(`p`,{className:`py-4 text-xs text-muted-foreground`,children:`No toolchain information available.`}):(0,j.jsx)(`div`,{className:`space-y-4`,children:s.map(e=>(0,j.jsxs)(`div`,{className:`flex flex-col gap-4 rounded-xl border border-border bg-muted/30 p-4 sm:flex-row sm:items-center sm:justify-between`,children:[(0,j.jsxs)(`div`,{className:`min-w-0`,children:[(0,j.jsxs)(`h4`,{className:`flex items-center gap-2 text-sm font-semibold text-foreground`,children:[e.name,(0,j.jsx)(O,{variant:e.installed?`success`:`secondary`,size:`sm`,children:e.installed?`Installed`:`Not Installed`})]}),(0,j.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground`,children:[(0,j.jsxs)(`span`,{children:[`Installed version: `,(0,j.jsx)(`code`,{className:`font-mono text-[10px] text-foreground`,children:e.currentVersion})]}),e.installed&&(0,j.jsxs)(`span`,{children:[`Latest: `,(0,j.jsx)(`code`,{className:`font-mono text-[10px] text-foreground`,children:e.latestVersion})]})]}),(0,j.jsx)(`p`,{className:`mt-1 font-mono text-[10px] text-muted-foreground`,children:e.updateCmd})]}),(0,j.jsx)(`div`,{className:`flex shrink-0 items-center gap-3`,children:e.updateAvailable?(0,j.jsx)(u,{size:`sm`,onClick:()=>f(e.id),disabled:l!==null,children:l===e.id?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(_,{className:`size-3`}),` Updating...`]}):`Update Tool`}):e.installed?(0,j.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,j.jsxs)(O,{variant:`success`,className:`gap-1.5`,children:[(0,j.jsx)(w,{size:12}),` Up to Date`]}),(0,j.jsx)(u,{variant:`outline`,size:`sm`,onClick:()=>f(e.id),disabled:l!==null,children:l===e.id?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(_,{className:`size-3`}),` Reinstalling...`]}):`Reinstall`})]}):(0,j.jsx)(u,{variant:`outline`,size:`sm`,onClick:()=>f(e.id),disabled:l!==null,children:l===e.id?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(_,{className:`size-3`}),` Installing...`]}):`Install CLI`})})]},e.id))})]}),(0,j.jsx)(`div`,{className:`mb-10 flex justify-end pt-4`,children:(0,j.jsxs)(u,{onClick:()=>a(e),disabled:!o,children:[(0,j.jsx)(w,{size:16}),` Save Configuration`]})})]})}export{K as SettingsPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as e,b as t,g as n,h as r,m as i,t as a}from"./button-cPldH5S4.js";import{St as o,t as s}from"./spinner-DXt6mnJk.js";import{S as ee}from"./useCompositeListItem-DWGFLKqA.js";import{t as c}from"./WorkspaceLauncher-Cxv0O_wt.js";import{n as te,r as ne,t as re}from"./ScaffoldRepoInline-DqoourJe.js";import{t as l}from"./git-branch-Dw55pQWa.js";import{A as u,G as ie,H as ae,K as d,M as f,N as p,R as oe,X as m,dt as se,et as ce,ht as h,i as le,it as ue,j as g,k as _,mt as v,n as de,ot as y,q as fe,r as pe,rt as me,s as he,tt as ge,vt as b}from"./index-CllPiiFL.js";import{t as x}from"./textarea-BLU5HXmZ.js";var S=r(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),C=t(e(),1),w={status:`idle`,steps:[]};function _e(){let[e,t]=(0,C.useState)(w),n=(0,C.useRef)(null),r=b(),i=(0,C.useCallback)(()=>{n.current?.close(),n.current=null},[]);return(0,C.useEffect)(()=>i,[i]),{progress:e,start:(0,C.useCallback)(e=>{i(),t({status:`running`,steps:[]});let a=new EventSource(`/api/workspace/create-stream/${encodeURIComponent(e)}`);n.current=a;let o=0;a.addEventListener(`progress`,n=>{o=0;try{let a=JSON.parse(n.data);t({status:a.status===`completed`||a.status===`failed`?a.status:`running`,steps:a.steps??[],error:a.error,workspacePath:a.workspacePath,workspaceId:a.feature?.id??e}),(a.status===`completed`||a.status===`failed`)&&(i(),r.invalidateQueries({queryKey:[`workspaces`]}),r.invalidateQueries({queryKey:[`workspaces-status`]}))}catch{}}),a.onerror=()=>{o+=1,!(a.readyState!==EventSource.CLOSED&&o<5)&&(t(e=>e.status===`running`?{...e,status:`failed`,error:e.error??`Lost connection to the creation stream.`}:e),i())}},[i,r]),reset:(0,C.useCallback)(()=>{i(),t(w)},[i])}}var T=n(),E=`__ad-hoc__`,ve=new URLSearchParams(window.location.search).get(`env`)===`vscode`,ye=[{value:`in-place`,icon:S,title:`In-place`,body:`Work directly in the source repos. No branches or worktrees — fastest start.`},{value:`worktree`,icon:l,title:`Isolated worktrees`,body:`A feature branch and worktree per repo. Your source checkouts stay untouched.`}];function be({repo:e,value:t,onChange:n,enabled:r}){let i=d(e.path,r),a=(0,C.useMemo)(()=>[...new Set([...i.data?.local??[],...i.data?.remote??[]])],[i.data]),s=`branches-${e.path.replace(/[^a-zA-Z0-9]/g,`-`)}`;return(0,T.jsxs)(`label`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(`span`,{className:`w-40 shrink-0 truncate text-xs`,children:e.name}),(0,T.jsx)(o,{list:s,value:t,onChange:e=>n(e.target.value),placeholder:`existing branch (must exist)`,className:`h-7 font-mono text-xs`}),(0,T.jsx)(`datalist`,{id:s,children:a.map(e=>(0,T.jsx)(`option`,{value:e},e))})]})}function xe({step:e}){return(0,T.jsxs)(`li`,{className:`flex items-center gap-3 py-2`,children:[(0,T.jsx)(`span`,{className:i(`grid size-5 shrink-0 place-items-center rounded-full border`,e.status===`completed`&&`border-success bg-success/15 text-success-foreground`,e.status===`running`&&`border-primary text-primary`,e.status===`failed`&&`border-destructive bg-destructive/15 text-destructive-foreground`,e.status===`pending`&&`border-border text-muted-foreground`),children:e.status===`completed`?(0,T.jsx)(h,{className:`size-3`}):e.status===`running`?(0,T.jsx)(s,{className:`size-3`}):e.status===`failed`?(0,T.jsx)(v,{className:`size-3`}):null}),(0,T.jsxs)(`div`,{className:`min-w-0`,children:[(0,T.jsx)(`p`,{className:`text-sm font-medium`,children:e.name}),(0,T.jsx)(`p`,{className:`truncate text-xs text-muted-foreground`,children:e.message})]})]})}function D(){let e=me(),[t]=ue(),n=ie(),r=fe(),l=oe(),d=m(),h=ae(),{progress:v,start:b}=_e(),[S,w]=(0,C.useState)(t.get(`project`)??E),[D,O]=(0,C.useState)(`in-place`),[k,Se]=(0,C.useState)(``),[A,j]=(0,C.useState)(``),[M,Ce]=(0,C.useState)(``),[N,P]=(0,C.useState)([]),[F,we]=(0,C.useState)(!1),[I,L]=(0,C.useState)([]),[R,z]=(0,C.useState)(``),[B,V]=(0,C.useState)(``),[H,U]=(0,C.useState)(!1),[W,G]=(0,C.useState)(null),[K,Te]=(0,C.useState)({}),[Ee,De]=(0,C.useState)(!1),[q,J]=(0,C.useState)(null),Y=(0,C.useRef)(!1);(0,C.useEffect)(()=>{!Y.current&&l.data&&(Y.current=!0,L(l.data.filter(e=>e.detected).map(e=>e.name)))},[l.data]);let X=(0,C.useMemo)(()=>(n.data??[]).find(e=>e.id===S)??null,[n.data,S]),Z=(0,C.useMemo)(()=>X?X.repos.map(e=>({name:he(e.path),path:e.path,defaultBranch:e.defaultBranch})):(r.data??[]).filter(e=>N.includes(e.path)),[X,r.data,N]),Q=D===`in-place`,Oe=(Q?A.trim().length>0:k.trim().length>0)&&Z.length>0&&M.trim().length>0,ke=e=>{z(e),G(null);let t=(d.data??[]).find(t=>t.id===e);V(t?.content??``)},Ae=async()=>{if(!M.trim()){J(`Describe what you are building first — the suggestion is based on it.`);return}J(null),U(!0);try{let e=await ce(`/api/workspace/suggest-workflow`,{method:`POST`,body:JSON.stringify({description:M,repos:Z})});z(e.suggestedWorkflowId),V(e.customInstructions),G(e.difficulty)}catch(e){J(e instanceof Error?e.message:String(e))}finally{U(!1)}},je=async()=>{J(null);let e={mode:D,projectId:X?.id,...Q?{name:A.trim()}:{branchName:k.trim()},description:M.trim(),repos:Z.map(e=>({...e,existingBranch:!Q&&K[e.path]?.trim()?K[e.path].trim():void 0})),assistants:I,teamworkInstructions:B.trim()||void 0};try{let{jobId:t}=await h.mutateAsync(e);b(t)}catch(e){J(e instanceof Error?e.message:String(e))}},$=I.find(e=>le(e)!==null);if(v.status!==`idle`){let t=v.steps.find(e=>e.status===`failed`);return(0,T.jsxs)(`div`,{className:`mx-auto max-w-xl animate-fade-in`,children:[(0,T.jsx)(`h1`,{className:`text-xl font-semibold`,children:v.status===`running`?`Setting up your workspace…`:v.status===`completed`?`Workspace ready`:`Workspace creation failed`}),(0,T.jsx)(`ul`,{className:`mt-6 divide-y divide-border rounded-xl border border-border bg-card px-4`,children:v.steps.map(e=>(0,T.jsx)(xe,{step:e},e.id))}),v.status===`failed`&&(0,T.jsx)(`p`,{className:`mt-4 text-sm text-destructive-foreground`,children:t?.message??v.error??`Something went wrong.`}),v.status===`completed`&&v.workspacePath&&(0,T.jsx)(`p`,{className:`mt-4 truncate font-mono text-xs text-muted-foreground`,children:v.workspacePath}),v.status===`completed`&&$&&(0,T.jsx)(`p`,{className:`mt-2 text-xs text-muted-foreground`,children:`Embedded start allows edits inside this workspace; you can switch to Review only in chat.`}),q&&(0,T.jsx)(`p`,{className:`mt-2 text-sm text-destructive-foreground`,children:q}),(0,T.jsxs)(`div`,{"data-testid":`workspace-ready-actions`,className:`mt-6 flex min-w-0 flex-col gap-2 sm:flex-row sm:flex-wrap`,children:[v.status===`completed`&&v.workspaceId&&(0,T.jsxs)(T.Fragment,{children:[$&&(0,T.jsxs)(a,{className:`w-full min-w-0 whitespace-normal sm:w-auto`,onClick:()=>e(`/workspaces/${encodeURIComponent(v.workspaceId)}`,{state:{chatLaunch:pe($,{kickoff:`Read the workspace instructions and implementation plan, inspect the repository state, then begin the task described for this workspace. Ask before making a decision that materially changes scope.`,executionProfile:`workspace-write`})}}),children:[(0,T.jsx)(y,{}),`Start editing with `,de($)]}),(0,T.jsx)(a,{className:`w-full min-w-0 whitespace-normal sm:w-auto`,variant:$?`outline`:void 0,onClick:()=>e(`/workspaces/${encodeURIComponent(v.workspaceId)}`),children:`Open workspace`}),v.workspacePath&&(0,T.jsx)(c,{workspaceId:v.workspaceId,workspacePath:v.workspacePath,isVsCode:ve,className:`w-full min-w-0 whitespace-normal sm:w-auto`})]}),v.status===`failed`&&(0,T.jsx)(a,{variant:`outline`,onClick:()=>window.location.reload(),children:`Start over`}),v.status===`running`&&(0,T.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`This can take a moment for large repositories.`})]})]})}return(0,T.jsxs)(`div`,{className:`mx-auto max-w-xl animate-fade-in`,children:[(0,T.jsxs)(`header`,{className:`mb-6`,children:[(0,T.jsx)(`h1`,{className:`text-xl font-semibold`,children:`Start work`}),(0,T.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Pick where the work happens and how isolated it should be.`})]}),(0,T.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,T.jsxs)(`section`,{children:[(0,T.jsx)(`span`,{className:`mb-1.5 block text-sm font-medium`,children:`Project`}),(0,T.jsxs)(_,{value:S,onValueChange:e=>typeof e==`string`&&w(e),children:[(0,T.jsx)(f,{className:`w-full`,"aria-label":`Project`,children:(0,T.jsx)(p,{children:X?X.name:`Ad-hoc — pick repositories manually`})}),(0,T.jsxs)(g,{alignItemWithTrigger:!1,children:[(n.data??[]).map(e=>(0,T.jsx)(u,{value:e.id,children:e.name},e.id)),(0,T.jsx)(u,{value:E,children:`Ad-hoc — pick repositories manually`})]})]}),X?(0,T.jsx)(`ul`,{className:`mt-2 flex flex-col gap-0.5`,children:X.repos.map(e=>(0,T.jsx)(`li`,{className:`truncate font-mono text-xs text-muted-foreground`,children:e.path},e.path))}):(0,T.jsxs)(`div`,{className:`mt-2`,children:[(0,T.jsx)(te,{repos:r.data??[],selectedPaths:N,onToggle:e=>P(t=>t.includes(e.path)?t.filter(t=>t!==e.path):[...t,e.path]),loading:r.isLoading}),(0,T.jsx)(re,{onCreated:e=>P(t=>[...t,e.path])})]}),(n.data??[]).length===0&&!n.isLoading&&(0,T.jsxs)(`p`,{className:`mt-2 text-xs text-muted-foreground`,children:[`Tip: `,(0,T.jsx)(ge,{to:`/projects`,className:`text-primary hover:underline`,children:`register a project`}),` to skip repo picking next time.`]})]}),(0,T.jsxs)(`section`,{children:[(0,T.jsx)(`span`,{className:`mb-1.5 block text-sm font-medium`,children:`How do you want to work?`}),(0,T.jsx)(`div`,{role:`radiogroup`,"aria-label":`Work mode`,className:`grid gap-3 sm:grid-cols-2`,onKeyDown:e=>{if([`ArrowRight`,`ArrowDown`,`ArrowLeft`,`ArrowUp`].includes(e.key)){e.preventDefault();let t=D===`in-place`?`worktree`:`in-place`;O(t),document.getElementById(`mode-${t}`)?.focus()}},children:ye.map(e=>(0,T.jsxs)(`button`,{id:`mode-${e.value}`,type:`button`,role:`radio`,"aria-checked":D===e.value,tabIndex:D===e.value?0:-1,onClick:()=>O(e.value),className:i(`cursor-pointer rounded-xl border p-4 text-left outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring`,D===e.value?`border-primary bg-primary/5 ring-1 ring-primary`:`border-border bg-card hover:border-foreground/20`),children:[(0,T.jsx)(e.icon,{className:i(`size-4`,D===e.value?`text-primary`:`text-muted-foreground`)}),(0,T.jsx)(`p`,{className:`mt-2 text-sm font-semibold`,children:e.title}),(0,T.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:e.body})]},e.value))})]}),(0,T.jsx)(`section`,{children:Q?(0,T.jsxs)(`label`,{className:`block`,children:[(0,T.jsx)(`span`,{className:`mb-1 block text-sm font-medium`,children:`Workspace name`}),(0,T.jsx)(o,{value:A,onChange:e=>j(e.target.value),placeholder:`e.g. Fix invoice rounding`})]}):(0,T.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,T.jsxs)(`label`,{className:`block`,children:[(0,T.jsx)(`span`,{className:`mb-1 block text-sm font-medium`,children:`Feature branch`}),(0,T.jsx)(o,{value:k,onChange:e=>Se(e.target.value),placeholder:`e.g. feature/invoice-rounding`,className:`font-mono`})]}),Z.length>0&&(0,T.jsxs)(`details`,{className:`rounded-lg border border-border px-3 py-2`,onToggle:e=>De(e.target.open),children:[(0,T.jsx)(`summary`,{className:`cursor-pointer text-xs font-medium text-muted-foreground`,children:`Use an existing branch for specific repos (optional)`}),(0,T.jsx)(`div`,{className:`mt-2 flex flex-col gap-2`,children:Z.map(e=>(0,T.jsx)(be,{repo:e,enabled:Ee,value:K[e.path]??``,onChange:t=>Te(n=>({...n,[e.path]:t}))},e.path))})]})]})}),(0,T.jsx)(`section`,{children:(0,T.jsxs)(`label`,{className:`block`,children:[(0,T.jsx)(`span`,{className:`mb-1 block text-sm font-medium`,children:`What are you building?`}),(0,T.jsx)(x,{value:M,onChange:e=>Ce(e.target.value),placeholder:`A short description — your AI assistant reads this to plan the work.`,rows:3})]})}),(0,T.jsxs)(`section`,{className:`rounded-xl border border-border`,children:[(0,T.jsxs)(`button`,{type:`button`,onClick:()=>we(e=>!e),className:`flex w-full items-center justify-between px-4 py-3 text-sm font-medium hover:bg-accent`,"aria-expanded":F,children:[`Advanced`,(0,T.jsx)(ee,{className:i(`size-4 text-muted-foreground transition-transform`,F&&`rotate-180`)})]}),F&&(0,T.jsxs)(`div`,{className:`flex flex-col gap-4 border-t border-border p-4`,children:[(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`span`,{className:`mb-1.5 block text-sm font-medium`,children:`AI assistants`}),(0,T.jsx)(`div`,{className:`flex flex-wrap gap-3`,children:(l.data??[]).map(e=>(0,T.jsxs)(`label`,{className:i(`flex cursor-pointer items-center gap-2 rounded-lg border border-border px-3 py-1.5 text-sm`,!e.detected&&`opacity-50`),children:[(0,T.jsx)(ne,{checked:I.includes(e.name),onCheckedChange:()=>L(t=>t.includes(e.name)?t.filter(t=>t!==e.name):[...t,e.name])}),e.displayName]},e.name))})]}),(0,T.jsxs)(`div`,{children:[(0,T.jsxs)(`div`,{className:`mb-1.5 flex items-center justify-between`,children:[(0,T.jsx)(`span`,{className:`text-sm font-medium`,children:`Teamwork strategy`}),(0,T.jsxs)(a,{size:`xs`,variant:`outline`,onClick:Ae,disabled:H,children:[H?(0,T.jsx)(s,{}):(0,T.jsx)(y,{}),`Suggest with AI`]})]}),(0,T.jsxs)(_,{value:R,onValueChange:e=>typeof e==`string`&&ke(e),children:[(0,T.jsx)(f,{className:`w-full`,"aria-label":`Teamwork strategy`,children:(0,T.jsx)(p,{children:(d.data??[]).find(e=>e.id===R)?.name??`None`})}),(0,T.jsxs)(g,{alignItemWithTrigger:!1,children:[(0,T.jsx)(u,{value:``,children:`None`}),(d.data??[]).map(e=>(0,T.jsx)(u,{value:e.id,children:e.name},e.id))]})]}),W&&(0,T.jsxs)(`p`,{className:`mt-1.5 text-xs text-muted-foreground`,children:[`AI classified this task as `,(0,T.jsx)(`span`,{className:`font-medium`,children:W}),` difficulty.`]}),(0,T.jsx)(x,{value:B,onChange:e=>V(e.target.value),placeholder:`Cooperation instructions for the agent team (editable — prefilled by the strategy pick or AI suggestion).`,rows:4,className:`mt-2 font-mono text-xs`})]})]})]}),q&&(0,T.jsx)(`p`,{className:`text-sm text-destructive-foreground`,children:q}),(0,T.jsxs)(`div`,{className:`flex items-center justify-between gap-4 border-t border-border pt-4`,children:[(0,T.jsxs)(`p`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground`,children:[(0,T.jsx)(se,{className:`size-3.5`}),Z.length,` repositor`,Z.length===1?`y`:`ies`,` selected`]}),(0,T.jsxs)(a,{onClick:je,disabled:!Oe||h.isPending,children:[h.isPending?(0,T.jsx)(s,{}):null,Q?`Start working`:`Create workspace`]})]})]})]})}export{D as StartWorkPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as e,b as t,g as n,h as r,m as i,t as a}from"./button-cPldH5S4.js";import{t as o}from"./spinner-DXt6mnJk.js";import{Z as s,ct as c,d as l,et as u,g as d,h as f,m as p,p as m,u as h,z as g}from"./index-CllPiiFL.js";var _=r(`code-xml`,[[`path`,{d:`m18 16 4-4-4-4`,key:`1inbqp`}],[`path`,{d:`m6 8-4 4 4 4`,key:`15zrgr`}],[`path`,{d:`m14.5 4-5 16`,key:`e7oirm`}]]),v=r(`orbit`,[[`path`,{d:`M20.341 6.484A10 10 0 0 1 10.266 21.85`,key:`1enhxb`}],[`path`,{d:`M3.659 17.516A10 10 0 0 1 13.74 2.152`,key:`1crzgf`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}],[`circle`,{cx:`19`,cy:`5`,r:`2`,key:`mhkx31`}],[`circle`,{cx:`5`,cy:`19`,r:`2`,key:`v8kfzx`}]]),y=r(`rocket`,[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]),b=t(e(),1),x={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},S=b.createContext&&b.createContext(x),C=[`attr`,`size`,`title`];function w(e,t){if(e==null)return{};var n,r,i=T(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function T(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function E(){return E=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},E.apply(null,arguments)}function D(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function O(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?D(Object(n),!0).forEach(function(t){k(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):D(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function k(e,t,n){return(t=A(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function A(e){var t=j(e,`string`);return typeof t==`symbol`?t:t+``}function j(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function M(e){return e&&e.map((e,t)=>b.createElement(e.tag,O({key:t},e.attr),M(e.child)))}function N(e){return t=>b.createElement(P,E({attr:O({},e.attr)},t),M(e.child))}function P(e){var t=t=>{var n=e.attr,r=e.size,i=e.title,a=w(e,C),o=r||t.size||`1em`,s;return t.className&&(s=t.className),e.className&&(s=(s?s+` `:``)+e.className),b.createElement(`svg`,E({stroke:`currentColor`,fill:`currentColor`,strokeWidth:`0`},t.attr,n,a,{className:s,style:O(O({color:e.color||t.color},t.style),e.style),height:o,width:o,xmlns:`http://www.w3.org/2000/svg`}),i&&b.createElement(`title`,null,i),e.children)};return S===void 0?t(x):b.createElement(S.Consumer,null,e=>t(e))}function F(e){return N({tag:`svg`,attr:{fill:`currentColor`,viewBox:`0 0 16 16`},child:[{tag:`path`,attr:{d:`M14.949 6.547a3.94 3.94 0 0 0-.348-3.273 4.11 4.11 0 0 0-4.4-1.934A4.1 4.1 0 0 0 8.423.2 4.15 4.15 0 0 0 6.305.086a4.1 4.1 0 0 0-1.891.948 4.04 4.04 0 0 0-1.158 1.753 4.1 4.1 0 0 0-1.563.679A4 4 0 0 0 .554 4.72a3.99 3.99 0 0 0 .502 4.731 3.94 3.94 0 0 0 .346 3.274 4.11 4.11 0 0 0 4.402 1.933c.382.425.852.764 1.377.995.526.231 1.095.35 1.67.346 1.78.002 3.358-1.132 3.901-2.804a4.1 4.1 0 0 0 1.563-.68 4 4 0 0 0 1.14-1.253 3.99 3.99 0 0 0-.506-4.716m-6.097 8.406a3.05 3.05 0 0 1-1.945-.694l.096-.054 3.23-1.838a.53.53 0 0 0 .265-.455v-4.49l1.366.778q.02.011.025.035v3.722c-.003 1.653-1.361 2.992-3.037 2.996m-6.53-2.75a2.95 2.95 0 0 1-.36-2.01l.095.057L5.29 12.09a.53.53 0 0 0 .527 0l3.949-2.246v1.555a.05.05 0 0 1-.022.041L6.473 13.3c-1.454.826-3.311.335-4.15-1.098m-.85-6.94A3.02 3.02 0 0 1 3.07 3.949v3.785a.51.51 0 0 0 .262.451l3.93 2.237-1.366.779a.05.05 0 0 1-.048 0L2.585 9.342a2.98 2.98 0 0 1-1.113-4.094zm11.216 2.571L8.747 5.576l1.362-.776a.05.05 0 0 1 .048 0l3.265 1.86a3 3 0 0 1 1.173 1.207 2.96 2.96 0 0 1-.27 3.2 3.05 3.05 0 0 1-1.36.997V8.279a.52.52 0 0 0-.276-.445m1.36-2.015-.097-.057-3.226-1.855a.53.53 0 0 0-.53 0L6.249 6.153V4.598a.04.04 0 0 1 .019-.04L9.533 2.7a3.07 3.07 0 0 1 3.257.139c.474.325.843.778 1.066 1.303.223.526.289 1.103.191 1.664zM5.503 8.575 4.139 7.8a.05.05 0 0 1-.026-.037V4.049c0-.57.166-1.127.476-1.607s.752-.864 1.275-1.105a3.08 3.08 0 0 1 3.234.41l-.096.054-3.23 1.838a.53.53 0 0 0-.265.455zm.742-1.577 1.758-1 1.762 1v2l-1.755 1-1.762-1z`},child:[]}]})(e)}function I(e){return N({tag:`svg`,attr:{role:`img`,viewBox:`0 0 24 24`},child:[{tag:`path`,attr:{d:`M2.25 1.5a.75.75 0 0 0-.75.75v16.5H0V2.25A2.25 2.25 0 0 1 2.25 0h20.095c1.002 0 1.504 1.212.795 1.92L10.764 14.298h3.486V12.75h1.5v1.922a1.125 1.125 0 0 1-1.125 1.125H9.264l-2.578 2.578h11.689V9h1.5v9.375a1.5 1.5 0 0 1-1.5 1.5H5.185L2.562 22.5H21.75a.75.75 0 0 0 .75-.75V5.25H24v16.5A2.25 2.25 0 0 1 21.75 24H1.655C.653 24 .151 22.788.86 22.08L13.19 9.75H9.75v1.5h-1.5V9.375A1.125 1.125 0 0 1 9.375 8.25h5.314l2.625-2.625H5.625V15h-1.5V5.625a1.5 1.5 0 0 1 1.5-1.5h13.19L21.438 1.5z`},child:[]}]})(e)}function L(e){return N({tag:`svg`,attr:{role:`img`,viewBox:`0 0 24 24`},child:[{tag:`path`,attr:{d:`M23.55 5.067c-1.2038-.002-2.1806.973-2.1806 2.1765v4.8676c0 .972-.8035 1.7594-1.7597 1.7594-.568 0-1.1352-.286-1.4718-.7659l-4.9713-7.1003c-.4125-.5896-1.0837-.941-1.8103-.941-1.1334 0-2.1533.9635-2.1533 2.153v4.8957c0 .972-.7969 1.7594-1.7596 1.7594-.57 0-1.1363-.286-1.4728-.7658L.4076 5.1598C.2822 4.9798 0 5.0688 0 5.2882v4.2452c0 .2147.0656.4228.1884.599l5.4748 7.8183c.3234.462.8006.8052 1.3509.9298 1.3771.313 2.6446-.747 2.6446-2.0977v-4.893c0-.972.7875-1.7593 1.7596-1.7593h.003a1.798 1.798 0 0 1 1.4718.7658l4.9723 7.0994c.4135.5905 1.05.941 1.8093.941 1.1587 0 2.1515-.9645 2.1515-2.153v-4.8948c0-.972.7875-1.7594 1.7596-1.7594h.194a.22.22 0 0 0 .2204-.2202v-4.622a.22.22 0 0 0-.2203-.2203Z`},child:[]}]})(e)}function R(e){return N({tag:`svg`,attr:{role:`img`,viewBox:`0 0 24 24`},child:[{tag:`path`,attr:{d:`M0 0v24h24V0H0zm17.889 2.889c1.444 0 2.667.444 3.667 1.278l-1.111 1.667c-.889-.611-1.722-1-2.556-1s-1.278.389-1.278.889v.056c0 .667.444.889 2.111 1.333 2 .556 3.111 1.278 3.111 3v.056c0 2-1.5 3.111-3.611 3.111-1.5-.056-3-.611-4.167-1.667l1.278-1.556c.889.722 1.833 1.222 2.944 1.222.889 0 1.389-.333 1.389-.944v-.056c0-.556-.333-.833-2-1.278-2-.5-3.222-1.056-3.222-3.056v-.056c0-1.833 1.444-3 3.444-3zm-16.111.222h2.278l1.5 5.778 1.722-5.778h1.667l1.667 5.778 1.5-5.778h2.333l-2.833 9.944H9.723L8.112 7.277l-1.667 5.778H4.612L1.779 3.111zm.5 16.389h9V21h-9v-1.5z`},child:[]}]})(e)}function z(e){return N({tag:`svg`,attr:{role:`img`,viewBox:`0 0 24 24`},child:[{tag:`path`,attr:{d:`M20.953.004a.397.397 0 0 0-.18.017L3.225 5.585c-.175.055-.323.214-.402.398a.42.42 0 0 0-.06.22v5.726a.42.42 0 0 0 .06.22c.079.183.227.341.402.397l7.454 2.364-7.454 2.363c-.255.08-.463.374-.463.655v5.688c0 .282.208.444.463.363l17.55-5.565c.237-.075.426-.336.452-.6.003-.022.013-.04.013-.065V12.06c0-.281-.208-.575-.463-.656L13.4 9.065l7.375-2.339c.255-.08.462-.375.462-.656V.384c0-.211-.117-.355-.283-.38z`},child:[]}]})(e)}function B(e){return N({tag:`svg`,attr:{role:`img`,viewBox:`0 0 24 24`},child:[{tag:`path`,attr:{d:`M7.833 6.666v-.055c0-1-.667-1.5-1.778-1.5H4.389v3.055h1.723c1.111 0 1.721-.666 1.721-1.5zM0 0v24h24V0H0zm2.223 3.167h4c2.389 0 3.833 1.389 3.833 3.445v.055c0 2.278-1.778 3.5-4.001 3.5H4.389v2.945H2.223V3.167zM11.277 21h-9v-1.5h9V21zm4.779-7.777c-2.944.055-5.111-2.223-5.111-5.057C10.944 5.333 13.056 3 16.111 3c1.889 0 3 .611 3.944 1.556l-1.389 1.61c-.778-.722-1.556-1.111-2.556-1.111-1.658 0-2.873 1.375-2.887 3.084.014 1.709 1.174 3.083 2.887 3.083 1.111 0 1.833-.445 2.61-1.167l1.39 1.389c-.999 1.112-2.166 1.779-4.054 1.779z`},child:[]}]})(e)}function V(e){return N({tag:`svg`,attr:{role:`img`,viewBox:`0 0 24 24`},child:[{tag:`path`,attr:{d:`M0 0v24h24V0zm3.723 3.111h5v1.834h-1.39v6.277h1.39v1.834h-5v-1.834h1.444V4.945H3.723zm11.055 0H17v6.5c0 .612-.055 1.111-.222 1.556-.167.444-.39.777-.723 1.11-.277.279-.666.557-1.11.668a3.933 3.933 0 0 1-1.445.278c-.778 0-1.444-.167-1.944-.445a4.81 4.81 0 0 1-1.279-1.056l1.39-1.555c.277.334.555.555.833.722.277.167.611.278.945.278.389 0 .721-.111 1-.389.221-.278.333-.667.333-1.278zM2.222 19.5h9V21h-9z`},child:[]}]})(e)}function H(e){return N({tag:`svg`,attr:{role:`img`,viewBox:`0 0 24 24`},child:[{tag:`path`,attr:{d:`M11.503.131 1.891 5.678a.84.84 0 0 0-.42.726v11.188c0 .3.162.575.42.724l9.609 5.55a1 1 0 0 0 .998 0l9.61-5.55a.84.84 0 0 0 .42-.724V6.404a.84.84 0 0 0-.42-.726L12.497.131a1.01 1.01 0 0 0-.996 0M2.657 6.338h18.55c.263 0 .43.287.297.515L12.23 22.918c-.062.107-.229.064-.229-.06V12.335a.59.59 0 0 0-.295-.51l-9.11-5.257c-.109-.063-.064-.23.061-.23`},child:[]}]})(e)}function U(e){return N({tag:`svg`,attr:{role:`img`,viewBox:`0 0 24 24`},child:[{tag:`path`,attr:{d:`m4.7144 15.9555 4.7174-2.6471.079-.2307-.079-.1275h-.2307l-.7893-.0486-2.6956-.0729-2.3375-.0971-2.2646-.1214-.5707-.1215-.5343-.7042.0546-.3522.4797-.3218.686.0608 1.5179.1032 2.2767.1578 1.6514.0972 2.4468.255h.3886l.0546-.1579-.1336-.0971-.1032-.0972L6.973 9.8356l-2.55-1.6879-1.3356-.9714-.7225-.4918-.3643-.4614-.1578-1.0078.6557-.7225.8803.0607.2246.0607.8925.686 1.9064 1.4754 2.4893 1.8336.3643.3035.1457-.1032.0182-.0728-.164-.2733-1.3539-2.4467-1.445-2.4893-.6435-1.032-.17-.6194c-.0607-.255-.1032-.4674-.1032-.7285L6.287.1335 6.6997 0l.9957.1336.419.3642.6192 1.4147 1.0018 2.2282 1.5543 3.0296.4553.8985.2429.8318.091.255h.1579v-.1457l.1275-1.706.2368-2.0947.2307-2.6957.0789-.7589.3764-.9107.7468-.4918.5828.2793.4797.686-.0668.4433-.2853 1.8517-.5586 2.9021-.3643 1.9429h.2125l.2429-.2429.9835-1.3053 1.6514-2.0643.7286-.8196.85-.9046.5464-.4311h1.0321l.759 1.1293-.34 1.1657-1.0625 1.3478-.8804 1.1414-1.2628 1.7-.7893 1.36.0729.1093.1882-.0183 2.8535-.607 1.5421-.2794 1.8396-.3157.8318.3886.091.3946-.3278.8075-1.967.4857-2.3072.4614-3.4364.8136-.0425.0304.0486.0607 1.5482.1457.6618.0364h1.621l3.0175.2247.7892.522.4736.6376-.079.4857-1.2142.6193-1.6393-.3886-3.825-.9107-1.3113-.3279h-.1822v.1093l1.0929 1.0686 2.0035 1.8092 2.5075 2.3314.1275.5768-.3218.4554-.34-.0486-2.2039-1.6575-.85-.7468-1.9246-1.621h-.1275v.17l.4432.6496 2.3436 3.5214.1214 1.0807-.17.3521-.6071.2125-.6679-.1214-1.3721-1.9246L14.38 17.959l-1.1414-1.9428-.1397.079-.674 7.2552-.3156.3703-.7286.2793-.6071-.4614-.3218-.7468.3218-1.4753.3886-1.9246.3157-1.53.2853-1.9004.17-.6314-.0121-.0425-.1397.0182-1.4328 1.9672-2.1796 2.9446-1.7243 1.8456-.4128.164-.7164-.3704.0667-.6618.4008-.5889 2.386-3.0357 1.4389-1.882.929-1.0868-.0062-.1579h-.0546l-6.3385 4.1164-1.1293.1457-.4857-.4554.0608-.7467.2307-.2429 1.9064-1.3114Z`},child:[]}]})(e)}function W(e){return N({tag:`svg`,attr:{viewBox:`0 0 16 16`,fill:`currentColor`},child:[{tag:`path`,attr:{d:`M15.434 1.72887L12.14 0.144875C12.002 0.078875 11.855 0.046875 11.709 0.046875C11.353 0.046875 11.18 0.211875 11.155 0.228875C11.073 0.270875 11.005 0.337875 11.004 0.338875L4.698 6.08888L1.951 4.00488C1.832 3.91388 1.69 3.86987 1.548 3.86987C1.387 3.86987 1.226 3.92788 1.1 4.04288L0.219 4.84387C0.074 4.97587 0.001 5.15688 0.001 5.33687C0.001 5.51687 0.073 5.69688 0.218 5.82888L2.6 8.00088L0.217 10.1719C0.072 10.3039 0 10.4839 0 10.6639C0 10.8439 0.073 11.0249 0.218 11.1569L1.099 11.9579C1.226 12.0729 1.386 12.1309 1.547 12.1309C1.688 12.1309 1.83 12.0859 1.95 11.9959L4.697 9.91187L11.003 15.6619C11.003 15.6619 11.072 15.7299 11.155 15.7719C11.179 15.7889 11.353 15.9529 11.709 15.9529C11.855 15.9529 12.003 15.9209 12.141 15.8549L15.435 14.2709C15.781 14.1049 16.001 13.7539 16.001 13.3699V2.62888C16.001 2.24487 15.781 1.89488 15.435 1.72787L15.434 1.72887ZM7.217 7.99988L12.002 4.36987V11.6299L7.217 7.99988Z`},child:[]}]})(e)}function G(e){return N({tag:`svg`,attr:{viewBox:`0 0 16 16`,fill:`currentColor`},child:[{tag:`path`,attr:{d:`M8.045 7.37722L5.449 5.40722L10.636 0.676223C10.685 0.631223 10.735 0.617223 10.778 0.617223C10.786 0.617223 10.999 0.627223 10.999 0.837223V5.13222L8.044 7.37622L8.045 7.37722ZM0.217 10.1762C0.072 10.3082 0 10.4882 0 10.6682C0 10.8482 0.073 11.0292 0.218 11.1612L1.099 11.9622C1.226 12.0772 1.386 12.1352 1.547 12.1352C1.688 12.1352 1.83 12.0902 1.95 12.0002L3.887 10.5312L1.858 8.68122L0.218 10.1762H0.217ZM1.95 4.00822C1.83 3.91722 1.689 3.87322 1.547 3.87322C1.386 3.87322 1.225 3.93122 1.099 4.04622L0.218 4.84722C0.073 4.97922 0 5.16022 0 5.34022C0 5.52022 0.072 5.70022 0.217 5.83222L2.202 7.64222L10.634 15.3332C10.684 15.3792 10.735 15.3922 10.779 15.3922C10.888 15.3922 11 15.3142 11 15.1752V10.8762L1.95 4.00822ZM15.434 1.73322L12.14 0.149223C12.002 0.0832227 11.855 0.0532227 11.709 0.0532227H11.704C11.888 0.268223 12.003 0.537223 12.003 0.837223V15.1752C12.004 15.4702 11.894 15.7342 11.716 15.9472H11.734C11.748 15.9472 11.761 15.9472 11.775 15.9472C11.962 15.9472 12.123 15.8682 12.14 15.8602L15.434 14.2762C15.78 14.1102 16 13.7592 16 13.3752V2.63422C16 2.25022 15.78 1.90022 15.434 1.73322Z`},child:[]}]})(e)}var K=n(),q={codex:F,claude:U,vscode:W,"vscode-insiders":G,cursor:H,antigravity:v,intellij:V,webstorm:R,pycharm:B,sublime:z,zed:I,windsurf:L},J={codex:`bg-foreground text-background`,claude:`bg-[#D97757] text-white`,vscode:`bg-[#007ACC] text-white`,"vscode-insiders":`bg-[#24A148] text-white`,cursor:`bg-zinc-950 text-white dark:bg-white dark:text-zinc-950`,antigravity:`bg-violet-600 text-white`,intellij:`bg-fuchsia-600 text-white`,webstorm:`bg-cyan-600 text-white`,pycharm:`bg-lime-600 text-zinc-950`,sublime:`bg-orange-500 text-white`,zed:`bg-red-600 text-white`,windsurf:`bg-teal-600 text-white`};function Y({icon:e}){let t=q[e]??_;return(0,K.jsx)(`span`,{className:i(`grid size-10 shrink-0 place-items-center rounded-xl shadow-sm`,J[e]),"aria-hidden":`true`,children:(0,K.jsx)(t,{className:`size-5`})})}function X({target:e,busy:t,launching:n,preferred:r,onLaunch:a}){return(0,K.jsxs)(`button`,{type:`button`,disabled:!e.available||t,onClick:()=>a(e),"aria-label":e.available?`Open workspace in ${e.name}`:`${e.name} unavailable`,className:i(`flex min-h-20 w-full items-center gap-3 rounded-xl border p-3 text-left outline-none transition-colors`,`focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background`,e.available?`cursor-pointer border-border bg-card hover:border-primary/40 hover:bg-accent/60`:`cursor-not-allowed border-border/70 bg-muted/40 opacity-65`),children:[(0,K.jsx)(Y,{icon:e.icon}),(0,K.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`span`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsx)(`span`,{className:`font-medium text-foreground`,children:e.name}),n?(0,K.jsx)(o,{className:`size-4`}):(0,K.jsx)(`span`,{className:i(`text-[11px]`,e.available?`text-success-foreground`:`text-muted-foreground`),children:e.available?r?`Preferred · Available`:`Available`:`Not detected`})]}),(0,K.jsx)(`span`,{className:`mt-0.5 block text-xs leading-relaxed text-muted-foreground`,children:e.available?e.description:e.unavailableReason})]})]})}function Z({workspaceId:e,workspacePath:t,isVsCode:n=!1,className:r}){let[i,_]=(0,b.useState)(!1),[v,x]=(0,b.useState)(null),[S,C]=(0,b.useState)(null),w=s(),T=g().data?.config,E=w.data?.filter(e=>e.kind===`ai-app`)??[],D=T?.defaultEditor?{code:`vscode`,"code-insiders":`vscode-insiders`,cursor:`cursor`,antigravity:`antigravity`,idea:`intellij`,webstorm:`webstorm`,charm:`pycharm`,subl:`sublime`,zed:`zed`,windsurf:`windsurf`}[T.defaultEditor]:void 0,O=(w.data?.filter(e=>e.kind===`editor`)??[]).toSorted((e,t)=>Number(t.id===D)-Number(e.id===D)),k=async t=>{C(null),x(t.id);try{await u(`/api/workspace/${encodeURIComponent(e)}/launch`,{method:`POST`,body:JSON.stringify({targetId:t.id})}),_(!1)}catch(e){C(e instanceof Error?e.message:String(e)),await w.refetch()}finally{x(null)}};return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(a,{variant:`outline`,className:r,onClick:()=>_(!0),children:[(0,K.jsx)(y,{}),`Open with…`]}),(0,K.jsx)(h,{open:i,onOpenChange:e=>{_(e),e||C(null)},children:(0,K.jsxs)(f,{className:`max-w-2xl`,"aria-busy":v!==null,children:[(0,K.jsxs)(m,{children:[(0,K.jsx)(d,{children:`Open workspace with…`}),(0,K.jsx)(l,{children:`Choose a local coding app or editor. AI apps receive the workspace path and an editable task kickoff; they may use their own online services.`})]}),(0,K.jsxs)(p,{className:`space-y-5`,children:[S&&(0,K.jsx)(`div`,{role:`alert`,className:`rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive-foreground`,children:S}),n&&(0,K.jsxs)(`section`,{"aria-labelledby":`current-editor-heading`,children:[(0,K.jsx)(`h3`,{id:`current-editor-heading`,className:`mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:`Current window`}),(0,K.jsxs)(`button`,{type:`button`,disabled:v!==null,onClick:()=>{window.parent.postMessage({type:`openWorkspaceFolder`,workspacePath:t},`*`),_(!1)},className:`flex min-h-20 w-full cursor-pointer items-center gap-3 rounded-xl border border-primary/30 bg-primary/5 p-3 text-left outline-none transition-colors hover:bg-primary/10 focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-65`,children:[(0,K.jsx)(Y,{icon:`vscode`}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`span`,{className:`block font-medium`,children:`Current VS Code window`}),(0,K.jsx)(`span`,{className:`mt-0.5 block text-xs text-muted-foreground`,children:`Open through the installed NexusFlow extension.`})]})]})]}),w.isLoading?(0,K.jsxs)(`div`,{className:`flex items-center gap-2 py-8 text-sm text-muted-foreground`,"aria-live":`polite`,children:[(0,K.jsx)(o,{}),` Checking apps on this computer…`]}):w.isError?(0,K.jsx)(`div`,{role:`alert`,className:`rounded-lg border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive-foreground`,children:w.error instanceof Error?w.error.message:`Could not check available apps.`}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`section`,{"aria-labelledby":`ai-apps-heading`,children:[(0,K.jsx)(`h3`,{id:`ai-apps-heading`,className:`mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:`AI coding apps`}),(0,K.jsx)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:E.map(e=>(0,K.jsx)(X,{target:e,busy:v!==null,launching:v===e.id,onLaunch:k},e.id))})]}),(0,K.jsxs)(`section`,{"aria-labelledby":`editors-heading`,children:[(0,K.jsx)(`h3`,{id:`editors-heading`,className:`mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:`Code editors`}),(0,K.jsx)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:O.map(e=>(0,K.jsx)(X,{target:e,busy:v!==null,launching:v===e.id,preferred:e.id===D,onLaunch:k},e.id))})]})]}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-border pt-3`,children:[(0,K.jsx)(`p`,{className:`truncate font-mono text-[11px] text-muted-foreground`,title:t,children:t}),(0,K.jsxs)(a,{size:`sm`,variant:`ghost`,onClick:()=>void w.refetch(),disabled:w.isFetching||v!==null,children:[(0,K.jsx)(c,{className:w.isFetching?`animate-spin`:``}),`Recheck`]})]})]})]})})]})}export{Z as t};
|