@praveencs/agent 0.9.29 → 0.10.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 +55 -9
- package/ROADMAP.md +42 -50
- package/agent-skills/README.md +192 -0
- package/agent-skills/plugins/aws/plugin.json +22 -0
- package/agent-skills/plugins/aws/skills/aws-manager.md +17 -0
- package/agent-skills/plugins/aws/tools/aws.js +152 -0
- package/agent-skills/plugins/discord/plugin.json +22 -0
- package/agent-skills/plugins/discord/skills/discord-manager.md +15 -0
- package/agent-skills/plugins/discord/tools/discord.js +150 -0
- package/agent-skills/plugins/docker/plugin.json +21 -0
- package/agent-skills/plugins/docker/skills/docker-manager.md +15 -0
- package/agent-skills/plugins/docker/tools/docker.js +135 -0
- package/agent-skills/plugins/firebase/plugin.json +22 -0
- package/agent-skills/plugins/firebase/skills/firebase-manager.md +14 -0
- package/agent-skills/plugins/firebase/tools/firebase.js +157 -0
- package/agent-skills/plugins/github/plugin.json +23 -0
- package/agent-skills/plugins/github/skills/github-manager.md +15 -0
- package/agent-skills/plugins/github/tools/github.js +133 -0
- package/agent-skills/plugins/huggingface/plugin.json +22 -0
- package/agent-skills/plugins/huggingface/skills/huggingface-manager.md +16 -0
- package/agent-skills/plugins/huggingface/tools/huggingface.js +149 -0
- package/agent-skills/plugins/linear/plugin.json +22 -0
- package/agent-skills/plugins/linear/skills/linear-manager.md +16 -0
- package/agent-skills/plugins/linear/tools/linear.js +199 -0
- package/agent-skills/plugins/mongodb/plugin.json +21 -0
- package/agent-skills/plugins/mongodb/skills/mongodb-manager.md +14 -0
- package/agent-skills/plugins/mongodb/tools/mongodb.js +123 -0
- package/agent-skills/plugins/notion/plugin.json +22 -0
- package/agent-skills/plugins/notion/skills/notion-manager.md +16 -0
- package/agent-skills/plugins/notion/tools/notion.js +158 -0
- package/agent-skills/plugins/openai/plugin.json +23 -0
- package/agent-skills/plugins/openai/skills/openai-manager.md +15 -0
- package/agent-skills/plugins/openai/tools/openai.js +137 -0
- package/agent-skills/plugins/resend/plugin.json +21 -0
- package/agent-skills/plugins/resend/skills/resend-manager.md +15 -0
- package/agent-skills/plugins/resend/tools/resend.js +102 -0
- package/agent-skills/plugins/slack/plugin.json +22 -0
- package/agent-skills/plugins/slack/skills/slack-manager.md +15 -0
- package/agent-skills/plugins/slack/tools/slack.js +168 -0
- package/agent-skills/plugins/stripe/plugin.json +22 -0
- package/agent-skills/plugins/stripe/skills/stripe-manager.md +16 -0
- package/agent-skills/plugins/stripe/tools/stripe.js +174 -0
- package/agent-skills/plugins/supabase/plugin.json +22 -0
- package/agent-skills/plugins/supabase/skills/supabase-manager.md +16 -0
- package/agent-skills/plugins/supabase/tools/supabase.js +153 -0
- package/agent-skills/plugins/telegram/plugin.json +21 -0
- package/agent-skills/plugins/telegram/skills/telegram-manager.md +14 -0
- package/agent-skills/plugins/telegram/tools/telegram.js +131 -0
- package/agent-skills/plugins/vercel/plugin.json +22 -0
- package/agent-skills/plugins/vercel/skills/vercel-manager.md +15 -0
- package/agent-skills/plugins/vercel/tools/vercel.js +145 -0
- package/agent-skills/registry.json +675 -0
- package/agent-skills/skills/api-tester/prompt.md +27 -0
- package/agent-skills/skills/api-tester/skill.json +16 -0
- package/agent-skills/skills/backup/prompt.md +12 -0
- package/agent-skills/skills/backup/skill.json +1 -0
- package/agent-skills/skills/code-review/prompt.md +29 -0
- package/agent-skills/skills/code-review/skill.json +18 -0
- package/agent-skills/skills/create-note/prompt.md +21 -0
- package/agent-skills/skills/create-note/skill.json +15 -0
- package/agent-skills/skills/cron-scheduler/prompt.md +25 -0
- package/agent-skills/skills/cron-scheduler/skill.json +1 -0
- package/agent-skills/skills/db-query/prompt.md +12 -0
- package/agent-skills/skills/db-query/skill.json +1 -0
- package/agent-skills/skills/docker-deploy/prompt.md +21 -0
- package/agent-skills/skills/docker-deploy/skill.json +16 -0
- package/agent-skills/skills/file-organizer/prompt.md +32 -0
- package/agent-skills/skills/file-organizer/skill.json +19 -0
- package/agent-skills/skills/git-commit/prompt.md +21 -0
- package/agent-skills/skills/git-commit/skill.json +17 -0
- package/agent-skills/skills/log-analyzer/prompt.md +16 -0
- package/agent-skills/skills/log-analyzer/skill.json +1 -0
- package/agent-skills/skills/npm-publish/prompt.md +24 -0
- package/agent-skills/skills/npm-publish/skill.json +20 -0
- package/agent-skills/skills/open-vscode/prompt.md +8 -0
- package/agent-skills/skills/open-vscode/skill.json +15 -0
- package/agent-skills/skills/project-scaffold/prompt.md +43 -0
- package/agent-skills/skills/project-scaffold/skill.json +17 -0
- package/agent-skills/skills/send-email/prompt.md +19 -0
- package/agent-skills/skills/send-email/send.js +60 -0
- package/agent-skills/skills/send-email/skill.json +16 -0
- package/agent-skills/skills/system-monitor/prompt.md +27 -0
- package/agent-skills/skills/system-monitor/skill.json +15 -0
- package/agent-skills/skills/web-search/prompt.md +26 -0
- package/agent-skills/skills/web-search/skill.json +16 -0
- package/dist/src/cli/commands/desktop.d.ts +3 -0
- package/dist/src/cli/commands/desktop.d.ts.map +1 -0
- package/dist/src/cli/commands/desktop.js +80 -0
- package/dist/src/cli/commands/desktop.js.map +1 -0
- package/dist/src/cli/commands/multimodal.d.ts +3 -0
- package/dist/src/cli/commands/multimodal.d.ts.map +1 -0
- package/dist/src/cli/commands/multimodal.js +78 -0
- package/dist/src/cli/commands/multimodal.js.map +1 -0
- package/dist/src/cli/commands/plugins.d.ts.map +1 -1
- package/dist/src/cli/commands/plugins.js +63 -12
- package/dist/src/cli/commands/plugins.js.map +1 -1
- package/dist/src/cli/commands/sandbox.d.ts +3 -0
- package/dist/src/cli/commands/sandbox.d.ts.map +1 -0
- package/dist/src/cli/commands/sandbox.js +89 -0
- package/dist/src/cli/commands/sandbox.js.map +1 -0
- package/dist/src/cli/commands/skills.d.ts.map +1 -1
- package/dist/src/cli/commands/skills.js +52 -121
- package/dist/src/cli/commands/skills.js.map +1 -1
- package/dist/src/cli/commands/swarm.d.ts +3 -0
- package/dist/src/cli/commands/swarm.d.ts.map +1 -0
- package/dist/src/cli/commands/swarm.js +120 -0
- package/dist/src/cli/commands/swarm.js.map +1 -0
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +8 -0
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/config/defaults.d.ts.map +1 -1
- package/dist/src/config/defaults.js +42 -0
- package/dist/src/config/defaults.js.map +1 -1
- package/dist/src/config/loader.d.ts +4 -0
- package/dist/src/config/loader.d.ts.map +1 -1
- package/dist/src/config/loader.js +27 -6
- package/dist/src/config/loader.js.map +1 -1
- package/dist/src/config/schema.d.ts +261 -0
- package/dist/src/config/schema.d.ts.map +1 -1
- package/dist/src/config/schema.js +58 -0
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/desktop/engine.d.ts +42 -0
- package/dist/src/desktop/engine.d.ts.map +1 -0
- package/dist/src/desktop/engine.js +77 -0
- package/dist/src/desktop/engine.js.map +1 -0
- package/dist/src/desktop/index.d.ts +6 -0
- package/dist/src/desktop/index.d.ts.map +1 -0
- package/dist/src/desktop/index.js +6 -0
- package/dist/src/desktop/index.js.map +1 -0
- package/dist/src/desktop/input.d.ts +20 -0
- package/dist/src/desktop/input.d.ts.map +1 -0
- package/dist/src/desktop/input.js +160 -0
- package/dist/src/desktop/input.js.map +1 -0
- package/dist/src/desktop/screen.d.ts +17 -0
- package/dist/src/desktop/screen.d.ts.map +1 -0
- package/dist/src/desktop/screen.js +120 -0
- package/dist/src/desktop/screen.js.map +1 -0
- package/dist/src/desktop/types.d.ts +50 -0
- package/dist/src/desktop/types.d.ts.map +1 -0
- package/dist/src/desktop/types.js +10 -0
- package/dist/src/desktop/types.js.map +1 -0
- package/dist/src/hub/lockfile.d.ts +29 -0
- package/dist/src/hub/lockfile.d.ts.map +1 -0
- package/dist/src/hub/lockfile.js +72 -0
- package/dist/src/hub/lockfile.js.map +1 -0
- package/dist/src/hub/publisher.d.ts +13 -0
- package/dist/src/hub/publisher.d.ts.map +1 -0
- package/dist/src/hub/publisher.js +159 -0
- package/dist/src/hub/publisher.js.map +1 -0
- package/dist/src/hub/registry.d.ts +40 -0
- package/dist/src/hub/registry.d.ts.map +1 -0
- package/dist/src/hub/registry.js +123 -0
- package/dist/src/hub/registry.js.map +1 -0
- package/dist/src/multimodal/engine.d.ts +33 -0
- package/dist/src/multimodal/engine.d.ts.map +1 -0
- package/dist/src/multimodal/engine.js +63 -0
- package/dist/src/multimodal/engine.js.map +1 -0
- package/dist/src/multimodal/index.d.ts +7 -0
- package/dist/src/multimodal/index.d.ts.map +1 -0
- package/dist/src/multimodal/index.js +7 -0
- package/dist/src/multimodal/index.js.map +1 -0
- package/dist/src/multimodal/tts.d.ts +11 -0
- package/dist/src/multimodal/tts.d.ts.map +1 -0
- package/dist/src/multimodal/tts.js +48 -0
- package/dist/src/multimodal/tts.js.map +1 -0
- package/dist/src/multimodal/types.d.ts +55 -0
- package/dist/src/multimodal/types.d.ts.map +1 -0
- package/dist/src/multimodal/types.js +20 -0
- package/dist/src/multimodal/types.js.map +1 -0
- package/dist/src/multimodal/vision.d.ts +15 -0
- package/dist/src/multimodal/vision.d.ts.map +1 -0
- package/dist/src/multimodal/vision.js +98 -0
- package/dist/src/multimodal/vision.js.map +1 -0
- package/dist/src/multimodal/voice.d.ts +11 -0
- package/dist/src/multimodal/voice.d.ts.map +1 -0
- package/dist/src/multimodal/voice.js +43 -0
- package/dist/src/multimodal/voice.js.map +1 -0
- package/dist/src/plans/types.d.ts +18 -18
- package/dist/src/plugins/loader.d.ts.map +1 -1
- package/dist/src/plugins/loader.js +10 -0
- package/dist/src/plugins/loader.js.map +1 -1
- package/dist/src/sandbox/docker.d.ts +42 -0
- package/dist/src/sandbox/docker.d.ts.map +1 -0
- package/dist/src/sandbox/docker.js +131 -0
- package/dist/src/sandbox/docker.js.map +1 -0
- package/dist/src/sandbox/engine.d.ts +50 -0
- package/dist/src/sandbox/engine.d.ts.map +1 -0
- package/dist/src/sandbox/engine.js +133 -0
- package/dist/src/sandbox/engine.js.map +1 -0
- package/dist/src/sandbox/index.d.ts +5 -0
- package/dist/src/sandbox/index.d.ts.map +1 -0
- package/dist/src/sandbox/index.js +5 -0
- package/dist/src/sandbox/index.js.map +1 -0
- package/dist/src/sandbox/types.d.ts +41 -0
- package/dist/src/sandbox/types.d.ts.map +1 -0
- package/dist/src/sandbox/types.js +12 -0
- package/dist/src/sandbox/types.js.map +1 -0
- package/dist/src/scripts/types.d.ts +2 -2
- package/dist/src/server/app.d.ts.map +1 -1
- package/dist/src/server/app.js +133 -0
- package/dist/src/server/app.js.map +1 -1
- package/dist/src/skills/loader.d.ts.map +1 -1
- package/dist/src/skills/loader.js +10 -0
- package/dist/src/skills/loader.js.map +1 -1
- package/dist/src/swarm/bus.d.ts +27 -0
- package/dist/src/swarm/bus.d.ts.map +1 -0
- package/dist/src/swarm/bus.js +64 -0
- package/dist/src/swarm/bus.js.map +1 -0
- package/dist/src/swarm/index.d.ts +6 -0
- package/dist/src/swarm/index.d.ts.map +1 -0
- package/dist/src/swarm/index.js +6 -0
- package/dist/src/swarm/index.js.map +1 -0
- package/dist/src/swarm/orchestrator.d.ts +79 -0
- package/dist/src/swarm/orchestrator.d.ts.map +1 -0
- package/dist/src/swarm/orchestrator.js +271 -0
- package/dist/src/swarm/orchestrator.js.map +1 -0
- package/dist/src/swarm/roles.d.ts +18 -0
- package/dist/src/swarm/roles.d.ts.map +1 -0
- package/dist/src/swarm/roles.js +83 -0
- package/dist/src/swarm/roles.js.map +1 -0
- package/dist/src/swarm/types.d.ts +58 -0
- package/dist/src/swarm/types.d.ts.map +1 -0
- package/dist/src/swarm/types.js +10 -0
- package/dist/src/swarm/types.js.map +1 -0
- package/dist/src/tools/core/cmd.d.ts.map +1 -1
- package/dist/src/tools/core/cmd.js +28 -0
- package/dist/src/tools/core/cmd.js.map +1 -1
- package/dist/src/utils/paths.d.ts +4 -4
- package/dist/src/utils/paths.d.ts.map +1 -1
- package/dist/src/utils/paths.js +8 -8
- package/dist/src/utils/paths.js.map +1 -1
- package/docs/DOCUMENTATION.md +137 -0
- package/package.json +4 -2
- package/studio/README.md +73 -0
- package/studio/eslint.config.js +23 -0
- package/studio/index.html +13 -0
- package/studio/package-lock.json +4350 -0
- package/studio/package.json +44 -0
- package/studio/postcss.config.js +6 -0
- package/studio/public/vite.svg +1 -0
- package/studio/src/App.tsx +243 -0
- package/studio/src/assets/react.svg +1 -0
- package/studio/src/components/Capabilities.tsx +80 -0
- package/studio/src/components/CommandsManager.tsx +94 -0
- package/studio/src/components/CostDashboard.tsx +182 -0
- package/studio/src/components/CredentialCapture.tsx +196 -0
- package/studio/src/components/CredentialsManager.tsx +257 -0
- package/studio/src/components/DaemonPanel.tsx +91 -0
- package/studio/src/components/DesktopPanel.tsx +118 -0
- package/studio/src/components/GoalTemplates.tsx +190 -0
- package/studio/src/components/GoalsPanel.tsx +235 -0
- package/studio/src/components/MemoryExplorer.tsx +152 -0
- package/studio/src/components/MultimodalPanel.tsx +150 -0
- package/studio/src/components/NotificationsPanel.tsx +175 -0
- package/studio/src/components/PluginsManager.tsx +60 -0
- package/studio/src/components/SandboxPanel.tsx +118 -0
- package/studio/src/components/ScriptsManager.tsx +269 -0
- package/studio/src/components/SkillsManager.tsx +123 -0
- package/studio/src/components/SwarmPanel.tsx +149 -0
- package/studio/src/components/TaskStreaming.tsx +189 -0
- package/studio/src/components/Terminal.tsx +200 -0
- package/studio/src/index.css +51 -0
- package/studio/src/main.tsx +13 -0
- package/studio/tailwind.config.js +47 -0
- package/studio/tsconfig.app.json +28 -0
- package/studio/tsconfig.json +7 -0
- package/studio/tsconfig.node.json +26 -0
- package/studio/vite.config.ts +7 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export type AgentRole = 'planner' | 'coder' | 'reviewer' | 'researcher' | 'tester' | 'custom';
|
|
2
|
+
export interface SwarmConfig {
|
|
3
|
+
/** Enable swarm mode */
|
|
4
|
+
enabled: boolean;
|
|
5
|
+
/** Max concurrent agents */
|
|
6
|
+
maxAgents: number;
|
|
7
|
+
/** Default model for swarm agents */
|
|
8
|
+
model: string;
|
|
9
|
+
/** Whether agents can spawn sub-agents */
|
|
10
|
+
allowDelegation: boolean;
|
|
11
|
+
/** Max depth of delegation chain */
|
|
12
|
+
maxDelegationDepth: number;
|
|
13
|
+
/** Timeout for each agent task (ms) */
|
|
14
|
+
agentTimeout: number;
|
|
15
|
+
}
|
|
16
|
+
export declare const DEFAULT_SWARM_CONFIG: SwarmConfig;
|
|
17
|
+
export interface SwarmMessage {
|
|
18
|
+
id: string;
|
|
19
|
+
from: string;
|
|
20
|
+
to: string;
|
|
21
|
+
type: SwarmMessageType;
|
|
22
|
+
payload: unknown;
|
|
23
|
+
timestamp: Date;
|
|
24
|
+
}
|
|
25
|
+
export type SwarmMessageType = 'task_assign' | 'task_result' | 'task_error' | 'delegate' | 'status_update' | 'artifact' | 'review_request' | 'review_response' | 'broadcast';
|
|
26
|
+
export interface AgentTask {
|
|
27
|
+
id: string;
|
|
28
|
+
description: string;
|
|
29
|
+
role: AgentRole;
|
|
30
|
+
assignedTo?: string;
|
|
31
|
+
status: 'pending' | 'running' | 'completed' | 'failed';
|
|
32
|
+
result?: string;
|
|
33
|
+
error?: string;
|
|
34
|
+
createdAt: Date;
|
|
35
|
+
completedAt?: Date;
|
|
36
|
+
parentTaskId?: string;
|
|
37
|
+
subtasks?: string[];
|
|
38
|
+
}
|
|
39
|
+
export interface SwarmAgent {
|
|
40
|
+
id: string;
|
|
41
|
+
role: AgentRole;
|
|
42
|
+
name: string;
|
|
43
|
+
status: 'idle' | 'busy' | 'done' | 'error';
|
|
44
|
+
currentTask?: string;
|
|
45
|
+
model: string;
|
|
46
|
+
depth: number;
|
|
47
|
+
completedTasks: number;
|
|
48
|
+
}
|
|
49
|
+
export interface SwarmState {
|
|
50
|
+
id: string;
|
|
51
|
+
status: 'idle' | 'running' | 'completed' | 'failed';
|
|
52
|
+
agents: SwarmAgent[];
|
|
53
|
+
tasks: AgentTask[];
|
|
54
|
+
startedAt?: Date;
|
|
55
|
+
completedAt?: Date;
|
|
56
|
+
goalDescription?: string;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/swarm/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9F,MAAM,WAAW,WAAW;IACxB,wBAAwB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,eAAe,EAAE,OAAO,CAAC;IACzB,oCAAoC;IACpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,oBAAoB,EAAE,WAOlC,CAAC;AAEF,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;CACnB;AAED,MAAM,MAAM,gBAAgB,GACtB,aAAa,GACb,aAAa,GACb,YAAY,GACZ,UAAU,GACV,eAAe,GACf,UAAU,GACV,gBAAgB,GAChB,iBAAiB,GACjB,WAAW,CAAC;AAElB,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACpD,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/swarm/types.ts"],"names":[],"mappings":"AAAA,sBAAsB;AAmBtB,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC7C,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,CAAC;IACZ,KAAK,EAAE,QAAQ;IACf,eAAe,EAAE,IAAI;IACrB,kBAAkB,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM;CACvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd.d.ts","sourceRoot":"","sources":["../../../../src/tools/core/cmd.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cmd.d.ts","sourceRoot":"","sources":["../../../../src/tools/core/cmd.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMlD,eAAO,MAAM,MAAM,EAAE,cAAc,CAC/B;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,EAClG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CA2EvD,CAAC;AAEF,eAAO,MAAM,QAAQ;aA9EN,MAAM;WAAS,MAAM,EAAE;UAAQ,MAAM;cAAY,MAAM;UAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;YACtF,MAAM;YAAU,MAAM;cAAY,MAAM;IA6EtB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { execFile } from 'node:child_process';
|
|
3
3
|
import { promisify } from 'node:util';
|
|
4
|
+
import { getSandboxEngine } from '../../sandbox/engine.js';
|
|
4
5
|
const execFileAsync = promisify(execFile);
|
|
5
6
|
// ─── cmd.run ───
|
|
6
7
|
export const cmdRun = {
|
|
@@ -22,6 +23,33 @@ export const cmdRun = {
|
|
|
22
23
|
permissions: ['exec'],
|
|
23
24
|
async execute(input, ctx) {
|
|
24
25
|
const workDir = input.cwd ?? ctx.cwd;
|
|
26
|
+
// ─── Sandbox Mode ───
|
|
27
|
+
// If a sandbox engine is active, route the command through the Docker container
|
|
28
|
+
const sandbox = getSandboxEngine();
|
|
29
|
+
if (sandbox && sandbox.isActive) {
|
|
30
|
+
try {
|
|
31
|
+
const result = await sandbox.exec(input.command, input.args ?? [], {
|
|
32
|
+
cwd: workDir,
|
|
33
|
+
timeout: input.timeout,
|
|
34
|
+
env: input.env,
|
|
35
|
+
});
|
|
36
|
+
return {
|
|
37
|
+
success: result.exitCode === 0,
|
|
38
|
+
data: result,
|
|
39
|
+
durationMs: 0,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
const error = err;
|
|
44
|
+
return {
|
|
45
|
+
success: false,
|
|
46
|
+
data: { stdout: '', stderr: error.message ?? 'Sandbox execution failed', exitCode: 1 },
|
|
47
|
+
error: error.message ?? 'Sandbox execution failed',
|
|
48
|
+
durationMs: 0,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// ─── Direct Host Execution ───
|
|
25
53
|
try {
|
|
26
54
|
const { stdout, stderr } = await execFileAsync(input.command, input.args ?? [], {
|
|
27
55
|
cwd: workDir,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd.js","sourceRoot":"","sources":["../../../../src/tools/core/cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cmd.js","sourceRoot":"","sources":["../../../../src/tools/core/cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,19 +9,19 @@ export declare function getAgentDir(cwd?: string): string;
|
|
|
9
9
|
/**
|
|
10
10
|
* Get the skills directory
|
|
11
11
|
*/
|
|
12
|
-
export declare function getSkillsDir(): string;
|
|
12
|
+
export declare function getSkillsDir(cwd?: string): string;
|
|
13
13
|
/**
|
|
14
14
|
* Get the plans directory
|
|
15
15
|
*/
|
|
16
|
-
export declare function getPlansDir(): string;
|
|
16
|
+
export declare function getPlansDir(cwd?: string): string;
|
|
17
17
|
/**
|
|
18
18
|
* Get the runs directory
|
|
19
19
|
*/
|
|
20
|
-
export declare function getRunsDir(): string;
|
|
20
|
+
export declare function getRunsDir(cwd?: string): string;
|
|
21
21
|
/**
|
|
22
22
|
* Get the plugins directory
|
|
23
23
|
*/
|
|
24
|
-
export declare function getPluginsDir(): string;
|
|
24
|
+
export declare function getPluginsDir(cwd?: string): string;
|
|
25
25
|
/**
|
|
26
26
|
* Get the logs directory
|
|
27
27
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,YAAY,
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD"}
|
package/dist/src/utils/paths.js
CHANGED
|
@@ -15,26 +15,26 @@ export function getAgentDir(cwd = process.cwd()) {
|
|
|
15
15
|
/**
|
|
16
16
|
* Get the skills directory
|
|
17
17
|
*/
|
|
18
|
-
export function getSkillsDir() {
|
|
19
|
-
return path.join(getAgentDir(), 'skills');
|
|
18
|
+
export function getSkillsDir(cwd) {
|
|
19
|
+
return path.join(getAgentDir(cwd), 'skills');
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
22
|
* Get the plans directory
|
|
23
23
|
*/
|
|
24
|
-
export function getPlansDir() {
|
|
25
|
-
return path.join(getAgentDir(), 'plans');
|
|
24
|
+
export function getPlansDir(cwd) {
|
|
25
|
+
return path.join(getAgentDir(cwd), 'plans');
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Get the runs directory
|
|
29
29
|
*/
|
|
30
|
-
export function getRunsDir() {
|
|
31
|
-
return path.join(getAgentDir(), 'runs');
|
|
30
|
+
export function getRunsDir(cwd) {
|
|
31
|
+
return path.join(getAgentDir(cwd), 'runs');
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* Get the plugins directory
|
|
35
35
|
*/
|
|
36
|
-
export function getPluginsDir() {
|
|
37
|
-
return path.join(getAgentDir(), 'plugins');
|
|
36
|
+
export function getPluginsDir(cwd) {
|
|
37
|
+
return path.join(getAgentDir(cwd), 'plugins');
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
40
|
* Get the logs directory
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAG,QAAkB;IACpD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACnD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAG,QAAkB;IACpD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACnD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,GAAY;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAY;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACtC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACtB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IACzB,OAAO,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IACzB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,OAAO,OAAO,SAAS,IAAI,IAAI,EAAE,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC"}
|
package/docs/DOCUMENTATION.md
CHANGED
|
@@ -464,9 +464,19 @@ my-plugin/
|
|
|
464
464
|
|
|
465
465
|
### Install and Manage
|
|
466
466
|
|
|
467
|
+
Plugins can be installed locally from a path or remotely from the official **Agent Hub** (`praveencs87/agent-skills` repository).
|
|
468
|
+
|
|
467
469
|
```bash
|
|
470
|
+
# Install the official GitHub plugin from the Agent Hub
|
|
471
|
+
agent plugins install github
|
|
472
|
+
|
|
473
|
+
# Install a local plugin bundle
|
|
468
474
|
agent plugins install ./my-plugin
|
|
475
|
+
|
|
476
|
+
# List all installed plugins
|
|
469
477
|
agent plugins list
|
|
478
|
+
|
|
479
|
+
# Remove a plugin
|
|
470
480
|
agent plugins remove my-plugin
|
|
471
481
|
```
|
|
472
482
|
|
|
@@ -531,6 +541,133 @@ agent studio
|
|
|
531
541
|
| **Daemon** | Start/stop daemon, view logs, check health |
|
|
532
542
|
| **Costs** | Monitor LLM token usage and spend per model |
|
|
533
543
|
| **Memory** | Search, add, and browse persistent agent memories |
|
|
544
|
+
| **Sandbox** | Monitor Docker sandbox status, start/stop containers |
|
|
545
|
+
| **Swarm** | View multi-agent sessions, agents, tasks, and delegation |
|
|
546
|
+
| **Desktop** | Screen capture, mouse clicks, keyboard input, hotkeys |
|
|
547
|
+
| **Multimodal** | Voice transcription, image analysis, text-to-speech |
|
|
548
|
+
|
|
549
|
+
---
|
|
550
|
+
|
|
551
|
+
## Sandboxed Docker Execution
|
|
552
|
+
|
|
553
|
+
Run all `cmd.run` commands inside isolated Docker containers for safe execution:
|
|
554
|
+
|
|
555
|
+
```bash
|
|
556
|
+
agent sandbox start # Spin up an ephemeral container
|
|
557
|
+
agent sandbox status # Show container info and uptime
|
|
558
|
+
agent sandbox stop # Destroy the container
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
### Configuration
|
|
562
|
+
|
|
563
|
+
```yaml
|
|
564
|
+
# agent.yaml
|
|
565
|
+
sandbox:
|
|
566
|
+
enabled: true
|
|
567
|
+
image: node:20-slim
|
|
568
|
+
timeout: 60000
|
|
569
|
+
network: bridge # bridge | host | none
|
|
570
|
+
mounts:
|
|
571
|
+
- hostPath: "."
|
|
572
|
+
containerPath: "/project"
|
|
573
|
+
readOnly: false
|
|
574
|
+
```
|
|
575
|
+
|
|
576
|
+
When sandbox is active, all shell commands execute inside the Docker container via `docker exec`.
|
|
577
|
+
|
|
578
|
+
---
|
|
579
|
+
|
|
580
|
+
## Multi-Agent Swarm
|
|
581
|
+
|
|
582
|
+
Coordinate multiple specialized AI agents on complex goals:
|
|
583
|
+
|
|
584
|
+
```bash
|
|
585
|
+
agent swarm start "Build a REST API with auth and tests"
|
|
586
|
+
agent swarm status # View agents, tasks, completion
|
|
587
|
+
agent swarm roles # List available agent roles
|
|
588
|
+
agent swarm stop # Stop the session
|
|
589
|
+
```
|
|
590
|
+
|
|
591
|
+
### Built-in Roles
|
|
592
|
+
|
|
593
|
+
| Role | Purpose | Tools |
|
|
594
|
+
|------|---------|-------|
|
|
595
|
+
| **Planner** | Decomposes goals into tasks, assigns to specialists | `fs.read`, `project.detect` |
|
|
596
|
+
| **Coder** | Writes production-ready code | `fs.read`, `fs.write`, `cmd.run`, `git.diff` |
|
|
597
|
+
| **Reviewer** | Reviews code for bugs, security, and style | `fs.read`, `fs.search`, `git.diff` |
|
|
598
|
+
| **Researcher** | Gathers information, analyzes patterns | `fs.read`, `fs.search`, `cmd.run` |
|
|
599
|
+
| **Tester** | Writes and runs tests | `fs.read`, `fs.write`, `cmd.run` |
|
|
600
|
+
|
|
601
|
+
### Configuration
|
|
602
|
+
|
|
603
|
+
```yaml
|
|
604
|
+
swarm:
|
|
605
|
+
enabled: true
|
|
606
|
+
maxAgents: 5
|
|
607
|
+
model: gpt-4o
|
|
608
|
+
allowDelegation: true
|
|
609
|
+
maxDelegationDepth: 3
|
|
610
|
+
```
|
|
611
|
+
|
|
612
|
+
---
|
|
613
|
+
|
|
614
|
+
## Desktop Automation
|
|
615
|
+
|
|
616
|
+
Control the desktop with screenshots, mouse, and keyboard:
|
|
617
|
+
|
|
618
|
+
```bash
|
|
619
|
+
agent desktop screenshot # Capture full screen
|
|
620
|
+
agent desktop screenshot -r 0,0,800,600 # Capture region
|
|
621
|
+
agent desktop click 500 300 # Click at coordinates
|
|
622
|
+
agent desktop type "Hello world" --enter
|
|
623
|
+
agent desktop hotkey ctrl+s # Keyboard shortcut
|
|
624
|
+
```
|
|
625
|
+
|
|
626
|
+
### Supported Platforms
|
|
627
|
+
|
|
628
|
+
| Platform | Screenshot Tool | Input Tool |
|
|
629
|
+
|----------|----------------|------------|
|
|
630
|
+
| **Linux** | scrot, gnome-screenshot, ImageMagick | xdotool |
|
|
631
|
+
| **macOS** | screencapture | osascript, cliclick |
|
|
632
|
+
| **Windows** | PowerShell | (planned) |
|
|
633
|
+
|
|
634
|
+
### Configuration
|
|
635
|
+
|
|
636
|
+
```yaml
|
|
637
|
+
desktop:
|
|
638
|
+
enabled: true
|
|
639
|
+
screenshotFormat: png
|
|
640
|
+
actionDelay: 100
|
|
641
|
+
tempDir: /tmp/agent-desktop
|
|
642
|
+
```
|
|
643
|
+
|
|
644
|
+
---
|
|
645
|
+
|
|
646
|
+
## Multimodal Interfaces
|
|
647
|
+
|
|
648
|
+
Voice input, image analysis, and text-to-speech powered by OpenAI:
|
|
649
|
+
|
|
650
|
+
```bash
|
|
651
|
+
agent multimodal transcribe recording.wav # Speech → Text (Whisper)
|
|
652
|
+
agent multimodal analyze screenshot.png -p "What UI bugs do you see?" # Vision
|
|
653
|
+
agent multimodal speak "Deployment complete" # Text → Speech
|
|
654
|
+
```
|
|
655
|
+
|
|
656
|
+
### Configuration
|
|
657
|
+
|
|
658
|
+
```yaml
|
|
659
|
+
multimodal:
|
|
660
|
+
enabled: true
|
|
661
|
+
voice:
|
|
662
|
+
model: whisper-1
|
|
663
|
+
vision:
|
|
664
|
+
model: gpt-4o
|
|
665
|
+
detail: auto
|
|
666
|
+
tts:
|
|
667
|
+
model: tts-1
|
|
668
|
+
voice: alloy # alloy, echo, fable, onyx, nova, shimmer
|
|
669
|
+
format: mp3
|
|
670
|
+
```
|
|
534
671
|
|
|
535
672
|
---
|
|
536
673
|
|
package/package.json
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praveencs/agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"dist",
|
|
6
6
|
"bin",
|
|
7
|
+
"studio",
|
|
8
|
+
"agent-skills",
|
|
7
9
|
"README.md",
|
|
8
10
|
"ROADMAP.md",
|
|
9
11
|
"docs",
|
|
@@ -87,4 +89,4 @@
|
|
|
87
89
|
"tsx": "^4.19.2",
|
|
88
90
|
"typescript": "^5.7.3"
|
|
89
91
|
}
|
|
90
|
-
}
|
|
92
|
+
}
|
package/studio/README.md
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# React + TypeScript + Vite
|
|
2
|
+
|
|
3
|
+
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
|
|
4
|
+
|
|
5
|
+
Currently, two official plugins are available:
|
|
6
|
+
|
|
7
|
+
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh
|
|
8
|
+
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
|
|
9
|
+
|
|
10
|
+
## React Compiler
|
|
11
|
+
|
|
12
|
+
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
|
|
13
|
+
|
|
14
|
+
## Expanding the ESLint configuration
|
|
15
|
+
|
|
16
|
+
If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
|
|
17
|
+
|
|
18
|
+
```js
|
|
19
|
+
export default defineConfig([
|
|
20
|
+
globalIgnores(['dist']),
|
|
21
|
+
{
|
|
22
|
+
files: ['**/*.{ts,tsx}'],
|
|
23
|
+
extends: [
|
|
24
|
+
// Other configs...
|
|
25
|
+
|
|
26
|
+
// Remove tseslint.configs.recommended and replace with this
|
|
27
|
+
tseslint.configs.recommendedTypeChecked,
|
|
28
|
+
// Alternatively, use this for stricter rules
|
|
29
|
+
tseslint.configs.strictTypeChecked,
|
|
30
|
+
// Optionally, add this for stylistic rules
|
|
31
|
+
tseslint.configs.stylisticTypeChecked,
|
|
32
|
+
|
|
33
|
+
// Other configs...
|
|
34
|
+
],
|
|
35
|
+
languageOptions: {
|
|
36
|
+
parserOptions: {
|
|
37
|
+
project: ['./tsconfig.node.json', './tsconfig.app.json'],
|
|
38
|
+
tsconfigRootDir: import.meta.dirname,
|
|
39
|
+
},
|
|
40
|
+
// other options...
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
])
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
|
|
47
|
+
|
|
48
|
+
```js
|
|
49
|
+
// eslint.config.js
|
|
50
|
+
import reactX from 'eslint-plugin-react-x'
|
|
51
|
+
import reactDom from 'eslint-plugin-react-dom'
|
|
52
|
+
|
|
53
|
+
export default defineConfig([
|
|
54
|
+
globalIgnores(['dist']),
|
|
55
|
+
{
|
|
56
|
+
files: ['**/*.{ts,tsx}'],
|
|
57
|
+
extends: [
|
|
58
|
+
// Other configs...
|
|
59
|
+
// Enable lint rules for React
|
|
60
|
+
reactX.configs['recommended-typescript'],
|
|
61
|
+
// Enable lint rules for React DOM
|
|
62
|
+
reactDom.configs.recommended,
|
|
63
|
+
],
|
|
64
|
+
languageOptions: {
|
|
65
|
+
parserOptions: {
|
|
66
|
+
project: ['./tsconfig.node.json', './tsconfig.app.json'],
|
|
67
|
+
tsconfigRootDir: import.meta.dirname,
|
|
68
|
+
},
|
|
69
|
+
// other options...
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
])
|
|
73
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import js from '@eslint/js'
|
|
2
|
+
import globals from 'globals'
|
|
3
|
+
import reactHooks from 'eslint-plugin-react-hooks'
|
|
4
|
+
import reactRefresh from 'eslint-plugin-react-refresh'
|
|
5
|
+
import tseslint from 'typescript-eslint'
|
|
6
|
+
import { defineConfig, globalIgnores } from 'eslint/config'
|
|
7
|
+
|
|
8
|
+
export default defineConfig([
|
|
9
|
+
globalIgnores(['dist']),
|
|
10
|
+
{
|
|
11
|
+
files: ['**/*.{ts,tsx}'],
|
|
12
|
+
extends: [
|
|
13
|
+
js.configs.recommended,
|
|
14
|
+
tseslint.configs.recommended,
|
|
15
|
+
reactHooks.configs.flat.recommended,
|
|
16
|
+
reactRefresh.configs.vite,
|
|
17
|
+
],
|
|
18
|
+
languageOptions: {
|
|
19
|
+
ecmaVersion: 2020,
|
|
20
|
+
globals: globals.browser,
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
])
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<title>studio</title>
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<div id="root"></div>
|
|
11
|
+
<script type="module" src="/src/main.tsx"></script>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|